Skip to main content
AI/MLcoalesce-labs

validate-frontmatter

Validate and fix frontmatter consistency across all workflows

Stars
12
Source
coalesce-labs/catalyst
Updated
2026-05-31
Slug
coalesce-labs--catalyst--validate-frontmatter
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/coalesce-labs/catalyst/HEAD/plugins/meta/skills/validate-frontmatter/SKILL.md -o .claude/skills/validate-frontmatter.md

Drops the SKILL.md into .claude/skills/validate-frontmatter.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Validate Frontmatter

Checks every skill and agent in the repo against the current frontmatter standard and reports (or fixes) drift.

The standard

Field tables are the single source in docs/frontmatter-standard.md — don't restate them here. The skills-only shape rule (no commands/ directories — skills only) is in .claude/rules/plugin-editing.md.

The rule everyone gets backwards

disable-model-invocation: true marks a user-invoked skill — a human runs it explicitly via /plugin:skill, and the model is disabled from auto-triggering it off its description. user-invocable: false (a different key) marks a CI/background skill nobody explicitly invokes. Getting this backwards tells authors to set every user-invoked skill to the value that lets the model auto-trigger it — the opposite of what "user-invoked" means. Full table: references/checklist.md.

Process

  1. Glob plugins/*/skills/*/SKILL.md and plugins/*/agents/*.md.
  2. For each skill: required fields present; disable-model-invocation/user-invocable polarity matches how it's actually invoked; allowed-tools used (never bare tools); no model or category field (skills-only prohibition — agents may carry either).
  3. For each agent: name, description, tools present; name matches the filename (kebab-case).
  4. Report issues grouped by file. For mechanically safe fixes (tools:allowed-tools: rename, vX.Y → semver, a missing version: 1.0.0), propose the edit and apply with Edit after confirmation. Never auto-fix disable-model-invocation/user-invocable or description — both need a human call on intent. Full catalogue: references/checklist.md.

Pairs with audit-references

After a plugin-wide cleanup (skill removals, shape rewrites), run this alongside /catalyst-meta:audit-references — that catches broken path references, this catches frontmatter a cleanup left inconsistent (a rewrite that forgot to drop a stray category field, or flipped disable-model-invocation the wrong way).