plugins/meta/skills/validate-frontmatter/SKILL.md
Validate and fix frontmatter consistency across all workflows
npx skillsauth add coalesce-labs/catalyst validate-frontmatterInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are tasked with validating frontmatter consistency across all agents and skills in the workspace, and fixing any issues found.
This command ensures all workflows follow the workspace frontmatter standard, making them easier to maintain, discover, and integrate.
When invoked:
I'll validate frontmatter across all workflows.
Checking:
- agents/ directory
- skills/ directory
What would you like to do?
1. Validate all workflows (report issues only)
2. Validate and auto-fix issues
3. Validate specific workflow
4. Generate frontmatter standard document
Get user selection:
IMPORTANT: Spawn parallel validation tasks for efficiency.
Use TodoWrite to track parallel validation tasks.
For "Validate All" mode:
Task 1 - Validate Agents:
Use codebase-analyzer agent:
"Validate frontmatter in all files matching agents/*.md. For each file, check:
1. Required fields present (name, description, tools, model, version)
2. Name field matches filename (kebab-case)
3. Tools list contains valid Claude Code tools
4. Category is one of: research, analysis, search, execution, validation, general
5. Version follows semver (e.g., 1.0.0)
6. Description is clear and informative
Return: List of all validation issues found with file:line references"
Tools: Glob, Grep, Read
Path: $(git rev-parse --show-toplevel)/plugins/*/agents/
Return: Validation report for all agents
Task 2 - Validate Skills:
Use codebase-analyzer agent:
"Validate frontmatter in all files matching skills/*/SKILL.md. For each file, check:
1. Required fields present (name, description)
2. User-invoked skills have disable-model-invocation: false
3. CI/background skills have user-invocable: false
4. Uses allowed-tools (not tools) for tool restrictions
5. Does NOT include model or category in frontmatter
6. Description is clear and concise
Return: List of all validation issues found with file:line references"
Tools: Glob, Grep, Read
Path: $(git rev-parse --show-toplevel)/plugins/*/skills/
Return: Validation report for all skills
Task 3 - Extract Tool References:
Use codebase-pattern-finder agent:
"Extract all unique tool names referenced in frontmatter across plugins/*/agents/*.md and plugins/*/skills/*/SKILL.md. Return a sorted list of all tools used."
Tools: Glob, Grep
Path: $(git rev-parse --show-toplevel)/plugins/
Return: Complete list of tools referenced
WAIT for all 3 tasks to complete.
Combine results from parallel tasks:
Mark all tasks complete in TodoWrite.
Analyze:
Show comprehensive report:
# Frontmatter Validation Report
**Validated**: {date} **Scope**: {agents-count} agents, {skills-count} skills **Status**:
{PASS/FAIL}
## Summary
- ✅ **Passed**: {pass-count} workflows
- ⚠️ **Warnings**: {warning-count} workflows
- ❌ **Failed**: {fail-count} workflows
## Critical Issues
### {workflow-name}.md
- ❌ Missing required field: `version`
- ❌ Invalid category: "misc" (should be one of: general, research, analysis...)
### {workflow-name}.md
- ❌ Name field "{name}" doesn't match filename "{filename}"
- ❌ Invalid tool reference: "SearchFiles" (not a valid Claude Code tool)
## Warnings
### {workflow-name}.md
- ⚠️ Description is very short (< 20 chars)
- ⚠️ No category specified (defaulting to "general")
### {workflow-name}.md
- ⚠️ Using old version format: "v1.0" (should be "1.0.0")
## Tool Inventory
**Total unique tools**: {tool-count} **Valid tools**: {valid-count} **Invalid references**:
{invalid-count}
### Used Tools:
- Read ({usage-count} workflows)
- Write ({usage-count} workflows)
- Edit ({usage-count} workflows)
- Grep ({usage-count} workflows)
- Glob ({usage-count} workflows) [... more tools ...]
### Invalid References:
- SearchFiles (used in {workflow-name}.md) → Should be: Grep or Glob
- FindFile (used in {workflow-name}.md) → Should be: Glob
## Category Distribution
### Agents:
- research: {count}
- analysis: {count}
- search: {count}
- execution: {count}
- validation: {count}
- general: {count}
### Commands:
- workflow: {count}
- planning: {count}
- implementation: {count}
- validation: {count}
- linear: {count}
- git: {count}
- workflow-discovery: {count}
- general: {count}
## Recommendations
1. **Fix critical issues first**: {count} workflows need immediate attention
2. **Standardize versions**: {count} workflows use non-semver format
3. **Update tool references**: {count} invalid tool names found
4. **Add descriptions**: {count} workflows have minimal descriptions
---
Next steps:
- Run with `--fix` to auto-correct issues
- Review and approve fixes before applying
- Re-validate after fixes
If user chose auto-fix:
Create fix plan:
Present fix plan:
# Auto-Fix Plan
I can automatically fix {fixable-count} issues:
## {workflow-name}.md
- Add missing `version: 1.0.0`
- Fix category: "misc" → "general"
- Standardize tool name: "SearchFiles" → "Grep"
## {workflow-name}.md
- Fix version format: "v1.0" → "1.0.0"
- Add missing `model: inherit`
**Cannot auto-fix** ({manual-count} issues):
- {workflow-name}.md: Description too short (needs human review)
- {workflow-name}.md: Unclear category (analysis vs research?)
Proceed with auto-fix? (Y/n)
Apply fixes (after confirmation):
Report results:
✅ Auto-fix complete!
**Fixed**: {fixed-count} issues across {file-count} files
### Changes Made:
#### agents/codebase-locator.md
- Added `version: 1.0.0`
- Standardized category: "search"
#### skills/create_plan/SKILL.md
- Fixed version: "v1.0" → "1.0.0"
- Updated tool reference: "SearchFiles" → "Grep"
[... more changes ...]
**Still needs manual review**:
- {workflow-name}.md: {issue description}
Re-run validation to verify: `/catalyst-meta:validate-frontmatter`
If user chose to generate standard:
Create docs/frontmatter-standard.md:
# Frontmatter Standard
This document defines the frontmatter standard for all agents and commands in this workspace.
## Agent Frontmatter
### Required Fields
```yaml
---
name: { agent-name } # Agent identifier (kebab-case, must match filename)
description: | # Multi-line description
{What this agent does}
Use this agent when:
- {Use case 1}
- {Use case 2}
tools: { tool-list } # Array of Claude Code tools
model: inherit # Always "inherit"
category: { category } # One of: research, analysis, search, execution, validation, general
version: 1.0.0 # Semantic version
---
```
source: { repo-url } # If imported/adapted
adapted: { date } # Date of adaptation
original-author: { name } # Original creator
---
name: codebase-analyzer
description: |
Analyzes codebases to understand implementation details and patterns.
Use this agent when:
- You need to understand how a feature is implemented
- You want to trace data flow through the system
- You need to find patterns and conventions
tools: Read, Grep, Glob
model: inherit
category: analysis
version: 1.0.0
---
---
description: { one-line-summary } # Brief description (no name field!)
category: { category } # Command category
tools: { tool-list } # Array of Claude Code tools
model: inherit # Always "inherit"
version: 1.0.0 # Semantic version
---
argument-hint: { hint } # Hint for command arguments
source: { repo-url } # If imported/adapted
adapted: { date } # Date of adaptation
original-author: { name } # Original creator
---
description: Create detailed implementation plans through interactive process
category: planning
argument-hint: [ticket-file | ticket-reference]
tools: Read, Write, Edit, Grep, Glob, Task, TodoWrite
model: inherit
version: 1.0.0
---
Claude Code provides these tools:
Read - Read file contentsWrite - Write filesEdit - Edit existing filesGrep - Search file contents (regex)Glob - Find files by patternBash - Run shell commandsTask - Spawn sub-agentsTodoWrite - Manage todo listsWebFetch - Fetch web contentWebSearch - Search the webmcp__serena__activate_project - Activate the repo so language servers target itmcp__serena__list_memories / mcp__serena__read_memory - Read persisted project orientationmcp__serena__get_symbols_overview - Map a file's top-level symbolsmcp__serena__find_symbol - Jump to a symbol's definition (semantic, not grep)mcp__serena__find_referencing_symbols - Find callers/references of a symbolmcp__serena__search_for_pattern / mcp__serena__find_file / mcp__serena__list_dir - Search/listlinear_get_ticket - Get Linear ticket detailslinear_create_ticket - Create Linear ticketslinear_update_ticket - Update Linear tickets(Check official Claude Code docs for complete list)
X.Y.Z (not vX.Y)name field matching filenamename field (use filename)argument-hint if command takes arguments---
name: create-plan # Commands don't have name field
description: Create plans
---
---
description: Create detailed implementation plans
category: planning
---
tools: SearchFiles, FindFile # These aren't real tools
tools: Grep, Glob # Correct tool names
version: v1.0 # Should be semver
version: 1.0.0 # Proper semver
When adding new categories or patterns:
/catalyst-meta:validate-frontmatter - Validate workflows against this standard/catalyst-meta:create-workflow - Create new workflows with correct frontmatter/catalyst-meta:import-workflow - Import external workflows and adapt frontmatter
Save and report:
✅ Frontmatter standard documented!
Saved to: docs/frontmatter-standard.md
This document now serves as the canonical reference for all frontmatter in this workspace.
Next steps:
/catalyst-meta:validate-frontmatter to check compliance
## Advanced Usage
### Validate Specific Workflow
/catalyst-meta:validate-frontmatter agents/codebase-analyzer.md
Validates just one file.
### Auto-Fix Everything
/catalyst-meta:validate-frontmatter --fix
Automatically fixes all issues without prompting.
### Generate Report Only
/catalyst-meta:validate-frontmatter --report-only > frontmatter-report.md
Saves report to file for review.
### Validate by Category
/catalyst-meta:validate-frontmatter --category research
Only validates workflows in "research" category.
## Validation Categories
### Critical Issues (Must Fix)
- Missing required fields
- Invalid field values
- Name/filename mismatch (agents)
- Invalid tool references
- Malformed YAML
### Warnings (Should Fix)
- Short descriptions (< 20 chars)
- Missing optional but recommended fields
- Unusual category choices
- Non-standard patterns
### Info (Nice to Have)
- Could add more detail
- Could specify argument-hint
- Could add source attribution
- Could improve formatting
## Auto-Fix Capabilities
### What Can Be Auto-Fixed
✅ Missing version field → Add `version: 1.0.0`
✅ Wrong version format → Convert to semver
✅ Missing model field → Add `model: inherit`
✅ Common tool typos → Fix to correct names
✅ Category typos → Fix to valid category
✅ YAML formatting → Standardize indentation
### What Requires Manual Review
❌ Ambiguous categories → Needs human judgment
❌ Short descriptions → Needs content creation
❌ Complex tool issues → May need workflow redesign
❌ Missing description → Needs understanding of purpose
## Important Notes
- **Non-destructive**: Auto-fix preserves content, only fixes frontmatter
- **Safe**: Always shows plan before applying fixes
- **Trackable**: Reports all changes made
- **Reversible**: Changes are standard edits, can be reverted via git
- **Standard-based**: Uses workspace-specific conventions
## Integration with Other Commands
- **Discover**: `/catalyst-meta:discover-workflows` → uses this for validation
- **Import**: `/catalyst-meta:import-workflow` → validates imported workflows
- **Create**: `/catalyst-meta:create-workflow` → ensures new workflows are valid
- **Validate**: `/catalyst-meta:validate-frontmatter` (this command) → checks everything
## Error Handling
### Malformed YAML
- Report syntax errors
- Show line number
- Suggest fixes
- Cannot auto-fix (manual correction needed)
### Unknown Fields
- Report unexpected fields
- Ask: Keep / Remove?
- Could be custom extensions
### Missing Files
- Skip files that don't exist
- Report which files were skipped
- Continue validation
### Permission Errors
- Report read/write issues
- Skip files that can't be accessed
- Provide error details
This command ensures workspace consistency and quality!
development
Migrate a single-harness repo to the dual-harness layout so both Claude Code and Codex load the same instructions and skills — AGENTS.md as the portable canonical doc, a thin CLAUDE.md `@AGENTS.md` bridge, and a `.agents/skills` dir with a `.claude/skills` symlink onto it. Use when asked to migrate to dual-harness, make this repo work in both Claude and Codex, or for agent metadata cleanup.
tools
Goal-driven senior-engineer pipeline-unstick sweep (CTL-1176 rung 3). Given the stuck/failed/needs-human set (or ONE ticket handed by the recovery router), its GOAL is to get the pipeline MOVING again — not to fix one ticket's review findings (that is phase-remediate). It runs AFTER the eyes (diagnostician evidence) and the hands (deterministic unstuck-sweep seams) have already tried, and it CONSUMES their output from a recovery-pass.json brief rather than re-diagnosing or redoing their narrow work. It acts like a senior engineer with full tool access — it resolves merge conflicts, rebases, force-pushes, merges green PRs, and re-dispatches stalled phases AUTONOMOUSLY — and escalates to the operator ONLY for a genuine value judgment / something that degrades other functionality / a real cost-benefit trade-off / a serious architecture change / an ADR conflict. On escalation it AUTHORS the operator inbox row + the push notification (executive-voiced). Dispatched as a `claude --bg` job by phase-agent-dispatch via slash command, AND invocable bare by the operator as a sweep — hence `user-invocable: true`. Ships behind CATALYST_RECOVERY_PASS (off by default — no live behavior change until shadow/enforce).
tools
Diagnose and fix Catalyst setup issues. Validates tools, database, config, OTel, direnv, and thoughts. Automatically fixes what it can — creates directories, initializes the database, sets WAL mode, runs migrations. Use for new installs, upgrades, or when something isn't working.
tools
--- name: phase-triage description: Phase agent that triages a Linear ticket — expands acronyms, classifies (feature/bug/docs/refactor/chore), identifies genuine blockers (a semantic second-pass over the backlog — NOT a prose scrape; CTL-838), estimates scope, writes triage.json, and posts a triage analysis comment to Linear. Triage completion is signaled by that comment plus the local triage.json — there is no `triaged` label. Emits phase.triage.complete.<TICKET> on success and phase.triage.fai