Skip to content
| Marketplace
Sign in
Visual Studio Code>Snippets>HybridForms DevToolsNew to Visual Studio Code? Get it now.
HybridForms DevTools

HybridForms DevTools

icomedias

|
52 installs
| (0) | Free
A VSCode extension for HybridForms template development
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

HybridForms DevTools

Welcome to HybridForms DevTools, your comprehensive toolkit for creating, managing, and deploying HybridForms templates with ease and efficiency.

Table of Contents

  • HybridForms DevTools
    • Table of Contents
    • Formatter
      • Installation
        • Default Formatter
    • Snippets
      • Usage
        • hf-combobox
        • hf-js
      • Pro Tip
        • HTML Snippets
          • Block Snippets
          • FormControl Snippets
          • Attribute Snippets
        • Stages Snippets
        • TypeScript Snippets
        • JavaScript Snippets
        • Extended Snippets
    • Commit Messages
      • Providers
      • Storing the AI key
      • Generating from a Jira ticket
      • The /jira-wf line
      • Settings
    • Contribute
    • License

Formatter

It is an opinionated code formatter for HybridForms template files. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.

Installation

Install through VS Code extensions. Search for HybridForms HybridForms DevTools.

Visual Studio Code Market Place: HybridForms HybridForms DevTools

Can also be installed in VS Code: Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.

ext install icomedias.hfdevtools-extension

Default Formatter

To ensure that this extension is used over other extensions you may have installed, be sure to set it as the default formatter in your VS Code settings. This setting can be set for all languages or by a specific language.

{
  "[html]": {
    "editor.defaultFormatter": "icomedias.hfdevtools-extension"
  }
}

Snippets

HTML and JavaScript/TypeScript snippets for HybridForms template developemnt.

All code snippets are based on and follow the official TemplateReferenceGuide and JavaScriptGuidance

Usage

All snippets starts with "hf-". Type part of a snippet, press enter, and the snippet unfolds.

hf-combobox

hf-combobox

hf-js

hf-js

Pro Tip

You don't need to type any dashes: "hfcustomcontrol" -> "hf-customcontrol" snippet

HTML Snippets

Block Snippets
Snippet Description
hf-block Creates an empty block container
hf-condition Creates a block, area, tab, condition definition
hf-pagetemplate Creates a Page template
hf-tabtemplate Creates a Tab template
hf-tabcaption Creates Tab caption attributes
hf-blockcaption Creates Block caption attributes
hf-fullwidth-block Creates a FullWidth block definition
hf-headertitletemplate Creates a HeaderTitleTemplate element
hf-titletemplate Creates a TitleTemplate element
hf-listtemplate Creates a ListTemplate element
hf-observefield Creates a ObserveField element
hf-dateformater Creates a DateFormater element
hf-textcontent Creates a text content element
hf-initializer Creates initializer form variable
FormControl Snippets
Snippet Description
hf-buttoncontrol Creates a ButtonControl
hf-checkbox Creates a Checkbox
hf-combobox Creates a Combobox input field
hf-datacontrol Creates a DataControl field
hf-datepicker Creates a Datepicker input field
hf-drawingcontrol Creates a Drawingcontrol input field
hf-dropdownlist Creates a DropDownList input field
hf-htmlcontainer Creates a HtmlContainer input element
hf-inkcontrol Creates a Inkcontrol input field
hf-label Creates a Label
hf-mailbutton Creates a Mail Button
hf-mapbutton Creates a Map Button
hf-numericfield Creates a NumericField input field
hf-phonebutton Creates a Phone Button
hf-picturepicker Creates a Picture Picker
hf-radiobox Creates a RadioBox input field
hf-reversegeolocatorbutton Creates a Reverse Geolocator Button
hf-selectbox Creates a Selectbox
hf-signature Creates a Signature input field
hf-textfield Creates a Text input field
hf-textfield-tel Creates a Tel number input field
hf-textarea Creates a textarea
hf-timepicker Creates a Time Picker input field
hf-treeview Creates a TreeView
hf-webview Creates a Webview
Attribute Snippets
Snippet Description
hf-title-attr Creates a data-hf-title attribute
hf-condition-attr Creates a data-hf-condition attribute

Stages Snippets

Snippet Description
hf-condition-workflow Creates a condition workflow
hf-copypdf-workflow Creates a copy pdf workflow
hf-email-workflow Creates an email workflow
hf-setowner-workflow Creates a set owner workflow
hf-setstatus-workflow Creates a set status workflow
hf-setgroup-workflow Creates a set group workflow
hf-setfield-workflow Creates a set field workflow
hf-stagechange-workflow Creates a stage change workflow

TypeScript Snippets

Snippet Description
hf-ts Custom TypeScript starting point
hf-customcontrol JavaScript derived Custom Control
hf-onchange JavaScript onChange event handler
hf-set Get and set values
hf-ctrl Get a control
hf-field Get a field
hf-repeating Get post fix of a repeating unit
hf-user Get current display name of user and write it to control by given id
hf-signer Add field values to Signature by given comma serperated ids
hf-counter Add Counter request template

JavaScript Snippets

Snippet Description
hf-js Custom Javascript starting point
hf-customcontrol JavaScript derived Custom Control
hf-onchange JavaScript onChange event handler
hf-set Get and set values
hf-ctrl Get a control
hf-field Get a field
hf-repeating Get post fix of a repeating unit

Extended Snippets

These snippets must be executed in all specified file types in order to obtain all the necessary code parts and the desired functionality!

Snippet File Types Description
hf-repeatinginput HTML, SCSS, TS Add RepeatingInput to project
hf-initializr HTML, TS Add Initializr block to file

Commit Messages

Two buttons in the Source Control view title bar generate a commit message and fill the commit box. They are hidden until you set hybridforms.commitMessage.enabled to true.

The sparkle icon runs HybridForms: Generate Commit Message. It describes your staged changes. If nothing is staged, it describes all uncommitted changes instead, including the content of untracked files, which no diff covers. Binary files and files past the size limit are named without their content. If the commit box already has text in it, that text is kept and sent to the model as a hint about what you want the message to say. The result is a Conventional Commits message.

The issues icon runs HybridForms: Generate Commit Message from Jira Ticket. See Generating from a Jira ticket below.

Both commands also show up in the command palette under the "HybridForms" category, together with HybridForms: Set AI API Key, HybridForms: Clear AI API Key, HybridForms: Set Jira API Token, and HybridForms: Clear Jira API Token.

Both buttons show a cancellable progress notification while the request runs. Cancelling stops the request. If generation fails, you get a short error message; details go to the "HybridForms DevTools" output channel.

Providers

Set hybridforms.commitMessage.provider to choose the backend:

  • openrouter (default): uses OpenRouter. Needs the key stored by HybridForms: Set AI API Key. Ignores baseUrl. Leave model empty to use openai/gpt-5.6-luna.
  • custom: any OpenAI-compatible endpoint. Needs a stored key, plus baseUrl and model. All three are required.
  • claude: the local Claude Code CLI. Needs claude on your PATH and a Claude Code login. Needs no API key. Leave model empty to use the Claude Code default.

With openrouter or custom, the staged diff (and, in Jira mode, the ticket title and description) is sent to that endpoint. The claude provider keeps everything on your local Claude Code login and sends nothing to OpenRouter or a custom endpoint.

OpenAI-compatible requests are sent with the max_completion_tokens parameter, OpenRouter included. OpenRouter and vLLM accept it. Some self-hosted OpenAI-compatible servers, Ollama among them, may ignore it and apply their own default output limit instead.

Storing the AI key

Run HybridForms: Set AI API Key to store the key for openrouter or custom in VS Code's secret store. Run HybridForms: Clear AI API Key to remove it. The key never appears in settings.json and is not part of settings sync.

Generating from a Jira ticket

The Jira button asks for a ticket key. It prefills the field from the current branch name when the branch contains one. A bare number, such as 10222, gets the hybridforms.commitMessage.jira.defaultProject prefix applied, turning it into HFF-10222.

The extension reads the ticket's title and description from Jira, then writes a commit message headed HFF-10222 <ticket title>, optionally followed by a body.

Jira access needs two things: your Jira account email in the hybridforms.commitMessage.jira.user setting, and an API token stored by HybridForms: Set Jira API Token. Only the token is a secret; the email is a normal setting. If either is missing when you run the command, it offers to set it for you instead of failing.

The /jira-wf line

When generating from a Jira ticket with hybridforms.commitMessage.jiraWf.enabled turned on, the model also decides whether the commit warrants any of the flags --ai, --changelog, or -t yes|no, and appends a trailing line such as /jira-wf -t yes --changelog --ai. It never sets -q, -f, or -c.

The jira-wf commit-msg hook strips that line from the commit message and queues it; the pre-push hook applies it. The line is off by default. Set hybridforms.commitMessage.jiraWf.enabled to true to append it.

The co-author trailer

Set hybridforms.commitMessage.coAuthor.enabled to true to append a Co-Authored-By trailer to every generated message, marking the commit as AI assisted. The text comes from hybridforms.commitMessage.coAuthor.trailer and defaults to the Claude trailer, so change it when you use another provider. Set hybridforms.commitMessage.coAuthor.mode to auto to let the model decide instead: it judges the change and the trailer is only added when the model is confident the change was AI generated, for example because your hint in the commit box says so. In ticket based messages the trailer is placed in front of the /jira-wf line, which keeps that line last for the hook and leaves the trailer as the final block once the hook has stripped it.

Settings

Setting Default Description
hybridforms.commitMessage.enabled false Show the AI commit message buttons in the Source Control view title bar.
hybridforms.commitMessage.provider openrouter Which AI backend generates commit messages. Enum: openrouter, custom, claude.
hybridforms.commitMessage.model (empty) Model id. Empty means openai/gpt-5.6-luna on OpenRouter and the Claude Code default for the claude provider. Required for the custom provider.
hybridforms.commitMessage.baseUrl (empty) OpenAI-compatible base URL, for example https://llm.internal/v1. Read only by the custom provider.
hybridforms.commitMessage.maxDiffLength 100000 How many characters of the change set are sent to the model. The diff is truncated to fit first, then the content of untracked files is read into whatever is left.
hybridforms.commitMessage.jiraWf.enabled false Append a /jira-wf flag line to ticket based commit messages so the jira-wf git hooks pick it up.
hybridforms.commitMessage.coAuthor.enabled false Append an AI co-author trailer to generated commit messages.
hybridforms.commitMessage.coAuthor.mode always always appends the trailer to every generated message. auto appends it only when the model is confident the change was AI generated.
hybridforms.commitMessage.coAuthor.trailer Co-Authored-By: Claude <noreply@anthropic.com> The trailer line appended when coAuthor.enabled is on. Use the git trailer form Co-Authored-By: Name <email> and adjust it to match your provider.
hybridforms.commitMessage.jira.baseUrl https://www.atlassian.com Jira Cloud base URL.
hybridforms.commitMessage.jira.user (empty) Your Jira account email. The matching API token is stored as a secret, never here.
hybridforms.commitMessage.jira.defaultProject HFF Project key used when you type only a ticket number.

Contribute

PRs accepted.

If editing the Readme, please conform to the standard-readme specification.

License

MIT License © 2023 icomedias GmbH.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft