From vigiles
Validates enforcement classifications (enforce/check/guidance) on rules in v1/v2 Claude Code projects, detects format, fixes missing annotations, suggests linter integrations or spec migrations, and verifies with vigiles.
npx claudepluginhub zernie/vigilesThis skill uses the workspace's default tool permissions.
Validate that every rule in the project's instruction files has a proper enforcement classification, and fix any that are missing.
Audits .claude/rules/*.md files for quality, compliance, glob validity, naming, and structure using subagents. Use when creating, validating rules, or troubleshooting loading issues.
Guides writing .claude/rules/ files Claude follows using golden format, positive framing, and enforceability tests. Use when creating, improving, or reviewing project rules.
Lints coding agent instruction files (CLAUDE.md, .cursorrules, AGENTS.md) for vagueness, conflicts, redundancies, ordering issues, misplaced rules, weak emphasis, and token budget. Provides ratings, gap detection, and consolidations.
Share bugs, ideas, or general feedback.
Validate that every rule in the project's instruction files has a proper enforcement classification, and fix any that are missing.
Check which format the project uses:
v2 (spec-based): Look for CLAUDE.md.spec.ts or any *.spec.ts files. If found, this is a v2 project — rules must use enforce(), check(), or guidance().
v1 (hand-written): Look for CLAUDE.md, AGENTS.md, .cursorrules. If found without a spec file, this is a v1 project — rules need **Enforced by:** or **Guidance only** annotations.
For v2 specs:
The TypeScript type system already prevents unannotated rules — you can't create a rule without calling enforce(), check(), or guidance(). So focus on:
enforce() rules reference real linter rules? Run npx vigiles compile to check.enforce()? Check linter configs for matching rules.check() assertions that could be delegated to a linter? Suggest enforce() instead.npx vigiles compile
npx vigiles discover
For v1 hand-written files:
Scan for ### headings. Each must have one of:
**Enforced by:** \linter/rule-name``**Guidance only** — reason<!-- vigiles-disable -->Report missing annotations with a summary table.
For each issue found:
enforce("linter/rule") (v2) or **Enforced by:** \linter/rule`` (v1)guidance() (v2) or **Guidance only** (v1)If the project uses v1 format, suggest migrating to v2 specs for type safety:
Your rules could benefit from type-safe specs. Run the
migrate-to-specskill to convert your CLAUDE.md to a typed .spec.ts file.
Run the appropriate command:
# v2
npx vigiles compile && npx vigiles check
# validate
npx vigiles check
Report the validation result.