$npx -y skills add WrathZA/skillforge --skill skill-forge-auditBatch-evaluate all skills in the repo with skill-forge-judge and render a single consolidated grade report sorted by grade (worst first) so effort is directed correctly. Use when reviewing overall skill quality, finding where to invest improvement effort, or after bulk skill chan
| 1 | # Skill Forge Audit |
| 2 | |
| 3 | Batch-run skill-forge-judge across every skill in the repo. One consolidated report — grades, top issues, priority order. Read-only: no fixes applied. |
| 4 | |
| 5 | Requires `skill-forge-judge` to be installed. |
| 6 | |
| 7 | No `references/` — this skill is single-file by design; the whole workflow fits in the body, so the absent directory is intentional, not missing progressive disclosure. |
| 8 | |
| 9 | --- |
| 10 | |
| 11 | ## Workflow |
| 12 | |
| 13 | ### Phase 1 — Discover |
| 14 | |
| 15 | Glob for all SKILL.md files, run from the repo root. Skills live one level deep under `skills/`: |
| 16 | |
| 17 | ``` |
| 18 | pattern: skills/*/SKILL.md |
| 19 | ``` |
| 20 | |
| 21 | Collect the directory name of each match — that's the skill name. |
| 22 | |
| 23 | To detect skipped directories: also Glob `skills/*/` to list every skill directory. Any directory in the `skills/*/` result that is not in the `skills/*/SKILL.md` result has no SKILL.md — list it in the Skipped section of the report with reason "No SKILL.md found". |
| 24 | |
| 25 | If zero SKILL.md files found: output "No skills found in this repo." and stop. |
| 26 | |
| 27 | ### Phase 2 — Evaluate |
| 28 | |
| 29 | For each discovered skill, in order: |
| 30 | |
| 31 | 1. Read the SKILL.md file at its absolute path. |
| 32 | 2. Invoke `/skill-forge-judge` on it. |
| 33 | 3. From the judge output, extract and record: |
| 34 | - Skill name |
| 35 | - Grade (A/B/C/D/F) |
| 36 | - Score (X/Y, Z%) |
| 37 | - Numbered Improvements: up to 5 items (all if fewer than 5 exist) |
| 38 | |
| 39 | Emit a one-line status per skill as each evaluation completes — do not wait until all are done: |
| 40 | ``` |
| 41 | ✓ skill-forge-create B (98/120, 82%) |
| 42 | ✓ skill-forge-hitl C (90/120, 75%) |
| 43 | ``` |
| 44 | |
| 45 | If `/skill-forge-judge` is not installed: output "skill-forge-judge is required — install it before running skill-forge-audit." and stop. |
| 46 | |
| 47 | If N > 10: output "About to run N skill-forge-judge evaluations — this may take several minutes. Proceed? (y/n)" and stop if denied. |
| 48 | |
| 49 | If a skill's judge run errors: record `ERR` and the error message for that skill; continue to the next skill. Do not abort the audit. |
| 50 | |
| 51 | ### Phase 3 — Render Report |
| 52 | |
| 53 | Before rendering, ask: does every layout decision put highest-priority work at the top? If the Needs Work section is empty, lead with a one-sentence "All skills passing" summary instead of an empty header. |
| 54 | |
| 55 | Sort results by grade ascending: F → D → C → B → A. Worst grades appear first — the report is a priority queue, not an alphabetical list. |
| 56 | |
| 57 | Split skills into two groups: |
| 58 | - **Needs Work**: grade below B (< 80%) |
| 59 | - **Passing**: grade B or above (≥ 80%) |
| 60 | |
| 61 | For the `<YYYY-MM-DD>` report header, use the current date already present in the session context — do not shell out for it (`$(date)` and command substitution trigger a permission prompt under this repo's bash rules). |
| 62 | |
| 63 | Output a single markdown report: |
| 64 | |
| 65 | ````markdown |
| 66 | # Skill Forge Audit |
| 67 | _<YYYY-MM-DD> — <N> skills evaluated_ |
| 68 | |
| 69 | ## Grade Summary |
| 70 | |
| 71 | | Skill | Grade | Score | |
| 72 | |-------|-------|-------| |
| 73 | | skill-forge-X | F | 55/120 (46%) | |
| 74 | | skill-forge-Y | C | 78/120 (65%) | |
| 75 | | skill-forge-Z | B | 98/120 (82%) | |
| 76 | |
| 77 | ## Needs Work |
| 78 | |
| 79 | ### skill-forge-X — F (55/120, 46%) |
| 80 | |
| 81 | 1. <improvement 1 from judge> |
| 82 | 2. <improvement 2> |
| 83 | 3. <improvement 3> |
| 84 | |
| 85 | ### skill-forge-Y — C (78/120, 65%) |
| 86 | |
| 87 | 1. <improvement 1> |
| 88 | 2. <improvement 2> |
| 89 | |
| 90 | ## Passing (B+) |
| 91 | |
| 92 | | Skill | Grade | Score | |
| 93 | |-------|-------|-------| |
| 94 | | skill-forge-Z | B | 98/120 (82%) | |
| 95 | |
| 96 | ## Skipped |
| 97 | |
| 98 | | Directory | Reason | |
| 99 | |-----------|--------| |
| 100 | | some-dir | No SKILL.md found | |
| 101 | ```` |
| 102 | |
| 103 | If all skills pass: omit the "Needs Work" section entirely. |
| 104 | If no skills pass: omit the "Passing" section. |
| 105 | If nothing was skipped: omit the "Skipped" section. |
| 106 | |
| 107 | --- |
| 108 | |
| 109 | ## NEVER |
| 110 | |
| 111 | - **NEVER display full judge reports inline for each skill** |
| 112 | **Instead:** Extract only grade, score, and top 1–5 numbered improvements per skill. |
| 113 | **Why:** Unfiltered judge output for 6+ skills floods the context window and buries the aggregate signal the report exists to surface. |
| 114 | |
| 115 | - **NEVER apply any fixes during an audit run** |
| 116 | **Instead:** Output the report only. Direct the user to `/skill-forge-hitl` or `/skill-forge-update` for remediation. |
| 117 | **Why:** Mixing diagnosis with treatment makes it impossible to know what the baseline was — the audit's value is the before-state snapshot. |
| 118 | |
| 119 | - **NEVER sort by skill name or alphabetically** |
| 120 | **Instead:** Sort by grade ascending (F first, A last) within each section. |
| 121 | **Why:** Alphabetical sort buries the worst skills; the report's job is to surface where effort is needed most. |
| 122 | |
| 123 | - **NEVER read SKILL.md files via `~/.claude/skills/` paths** |
| 124 | **Instead:** Use the absolute path to the skills project directory (the repo root where this audit runs). |
| 125 | **Why:** `~/.claude/skills/` is a symlink back to the project; Claude Code' |