Claude Frontmatter
Completion and validation for the YAML frontmatter of Claude Code
definition files, in VS Code.
Claude's SKILL.md, command, rule, subagent, and output style files are
configured through a YAML frontmatter block whose fields are documented but not schema-checked
anywhere. A misspelt field name does nothing at all — no error, no warning, the
skill just quietly behaves as though you never wrote the line. This extension
makes the block behave like every other config file you edit.
Features
Completion inside the frontmatter block: field names with their
documentation, a pick-list for every enum field, required fields sorted first,
and fields already present filtered out. It stays silent outside the block, on
the --- delimiters, and in markdown that is not a Claude definition file.
Diagnostics on the same files. Unrecognized fields are warnings — Claude
Code ignores a field it does not know, so the file still works, but uploading it
to claude.ai or packaging it fails on the same key. Type and enum violations are
errors, anchored to the offending key or value rather than the whole block.
The schema for each file kind is picked from its path, so a subagent file never
offers allowed-tools and a rule file offers only paths.
A command file gets its own schema rather than borrowing the skill one. It takes
the same fields, but name and paths are inert there — a command is named
after its file — so writing either is reported as a warning instead of passing
silently. An output style gets the same treatment for force-for-plugin, which
only does anything for a style shipped inside a plugin.
| Path |
Schema |
**/SKILL.md |
skill |
.claude/commands/**/*.md |
command — the skill fields, minus the two that do nothing here |
.claude/rules/**/*.md |
rule |
.claude/agents/**/*.md |
subagent |
.claude/output-styles/**/*.md |
output style |
Install
Search for Claude Frontmatter in the Extensions view, or from a terminal:
code --install-extension thedv91.claude-frontmatter
Cursor, Windsurf, VSCodium and Gitpod install the same extension from
Open VSX:
cursor --install-extension thedv91.claude-frontmatter
Nothing to configure.
VS Code disables suggestions inside markdown by default, so add this if
completions only appear on Ctrl+Space:
"[markdown]": {
"editor.quickSuggestions": { "other": true }
}
Known quirks
Four places where the extension's behaviour follows something other than the
first line of the documentation:
argument-hint: [issue-number] — the docs' own example — is an unquoted YAML
flow sequence and parses as a list, not a string. Anthropic's own bundled
resolve-conflicts skill ships it this way. Both forms are accepted.
- The docs describe
tools: for subagents only, yet several first-party plugin
skills use tools: in a SKILL.md. It is not part of the skill schema here,
so it is reported as an unrecognized field.
- The subagent page's field table omits
manual from permissionMode, but the
permissions page states Claude Code accepts it as an alias for default
(v2.1.200+). The schema follows the permissions page.
- A plugin ships output styles in an
output-styles/ directory at its root, not
under .claude/. That path is left alone — as plugin commands/ and
agents/ directories are — so force-for-plugin is warned about wherever the
output style schema does apply.
Links
License
MIT