Claude Code Frontmatter
VSCode extension — validation, autocomplete, and hover docs for Claude Code
primitive file frontmatter.
Features
- Real-time validation — red squiggles on unknown or invalid frontmatter
fields
- Autocomplete —
Ctrl+Space lists valid fields and enum values inside
frontmatter blocks
- Hover documentation — field descriptions, types, and required/optional
status
Works on any .md file matching a Claude Code primitive path. No configuration
needed.
Install
VS Code Marketplace:
ext install TheodrosYimer.claude-code-frontmatter
From VSIX (GitHub Releases):
code --install-extension claude-code-frontmatter-*.vsix
Supported primitives
| Primitive |
File pattern |
| Skill |
.claude/skills/**/SKILL.md |
| Agent |
.claude/agents/*.md |
| Command |
.claude/commands/*.md |
| Rule |
.claude/rules/*.md |
| Output style |
.claude/output-styles/*.md |
What the extension catches
| Mistake |
How caught |
name field in a rule file |
additionalProperties: false |
context: split in a skill file |
invalid enum value |
effortLevel: high (old field name) |
field renamed to effort |
permissionMode: admin |
enum validation |
Hook handler missing command field |
conditional required |
Prevent prettier from breaking skill discovery
If prettier reformats a single-line description into a multiline YAML string,
Claude Code silently stops discovering the skill
(#9817).
Add this to your global ~/.prettierrc:
{
"overrides": [
{
"files": [
"**/SKILL.md",
"**/.claude/agents/*.md",
"**/.claude/commands/*.md",
"**/.claude/rules/*.md",
"**/.claude/output-styles/*.md"
],
"options": {
"proseWrap": "preserve"
}
}
]
}
Disable VS Code's built-in Skill language validation
VS Code 1.112+ includes built-in Agent Skills support that assigns a "Skill"
language to SKILL.md files with its own frontmatter validation. Its schema is
incomplete — it flags valid Claude Code fields like allowed-tools, hooks,
model, and effort as unsupported.
To override the "Skill" language and let this extension handle validation, add
to your VS Code user settings (Cmd+Shift+P → "Open User Settings (JSON)"):
{
"files.associations": {
"**/SKILL.md": "markdown"
}
}
Development
pnpm install # install dependencies
pnpm build # bundle with tsdown → dist/extension.cjs
pnpm test # run vitest
pnpm test:e2e # run VSCode integration tests
pnpm watch # dev mode
pnpm package # build + create .vsix
pnpm release # release-it (requires VSCE_PAT)
CI runs on push to main via GitHub Actions. Conventional commits drive
changelog generation.
License
MIT