enforce-rules-format
Validate that all rules have proper enforcement classification (enforce/check/guidance)
By zernie · 362 installs
npx skills add zernie/vigiles --skill enforce-rules-format
Source repository · Upstream listing
Validate that every rule in the project's instruction files has a proper enforcement classification, and fix any that are missing.
Instructions
Step 1: Detect Format
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.
Step 2: Validate
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:
1. Do enforce() rules reference real linter rules? Run npx vigiles compile to check.
2. Are there guidance rules that COULD be enforce() ? Check linter configs for matching rules.
3. Are there check() assertions that could be delegated to a linter? Suggest enforce() instead.
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.
Step 3: Fix Issues
For each issue found:
1. Check the project's linter configuration for matching rules
2. Suggest enforce("linter/rule") (v2) or Enforced by: \ linter/rule\ (v1)
3. If no linter rule exists, suggest guidance() (v2) or Guidance only (v1)
4. Ask the user before making changes
Step 4: Suggest Migration
If the project uses v1 format, suggest migrating to v2 specs for type safety:
Your rules could benefit from type safe specs. Run the adopt spec skill to convert your CLAUDE.md to a typed .spec.ts file.
Step 5: Verify
Run the appropriate command:
Report the validation result.