$npx -y skills add jmstar85/oh-my-githubcopilot --skill skill-stocktakeAudit the skill inventory for quality, coverage, and staleness. Detect overlapping, incomplete, or outdated skills and produce a health report. Activate when: skill audit, stocktake, skill inventory, check skills, which skills exist, audit skills, skill quality, skill coverage.
| 1 | # Skill Stocktake |
| 2 | |
| 3 | Audit the `.github/skills/` and `vscode-omg/resources/templates/skills/` directories to produce a quality and coverage report. |
| 4 | |
| 5 | ## When to Use |
| 6 | - Before adding new skills (to avoid duplication) |
| 7 | - After a large change batch (to verify templates are in sync) |
| 8 | - Periodically to prune stale or incomplete skills |
| 9 | |
| 10 | ## Audit Protocol |
| 11 | |
| 12 | ### Step 1: Inventory |
| 13 | ```bash |
| 14 | # List all skill directories |
| 15 | ls -1d .github/skills/*/ |
| 16 | |
| 17 | # Count total |
| 18 | ls -1d .github/skills/*/ | wc -l |
| 19 | |
| 20 | # Check each has a SKILL.md |
| 21 | for dir in .github/skills/*/; do |
| 22 | [ -f "${dir}SKILL.md" ] || echo "MISSING SKILL.md: $dir" |
| 23 | done |
| 24 | ``` |
| 25 | |
| 26 | ### Step 2: Frontmatter Validation (v1.0.5+) |
| 27 | |
| 28 | Each SKILL.md MUST have valid frontmatter: |
| 29 | ```yaml |
| 30 | --- |
| 31 | name: skill-name # required, kebab-case, matches directory name |
| 32 | description: > # required, multi-line description with trigger keywords |
| 33 | ... |
| 34 | argument-hint: "..." # optional, describes argument |
| 35 | --- |
| 36 | ``` |
| 37 | |
| 38 | **v1.0.5 breaking changes to check:** |
| 39 | - ❌ `hint:` field → ✅ `argument-hint:` |
| 40 | - ❌ `allowed-tools:` field → ✅ remove (not supported) |
| 41 | - Skill name `autopilot` → must be `omg-autopilot` (naming collision) |
| 42 | |
| 43 | Validate with: |
| 44 | ```bash |
| 45 | # Find skills using old 'hint:' field |
| 46 | grep -rn "^hint:" .github/skills/ |
| 47 | |
| 48 | # Find skills using unsupported 'allowed-tools:' |
| 49 | grep -rn "^allowed-tools:" .github/skills/ |
| 50 | |
| 51 | # Check for old 'autopilot' directory |
| 52 | ls .github/skills/ | grep "^autopilot$" |
| 53 | ``` |
| 54 | |
| 55 | ### Step 3: Template Sync Check |
| 56 | ```bash |
| 57 | # Skills in .github but not in templates |
| 58 | diff <(ls .github/skills/) <(ls vscode-omg/resources/templates/skills/) |
| 59 | |
| 60 | # Skills in templates but not in .github (orphan templates) |
| 61 | diff <(ls vscode-omg/resources/templates/skills/) <(ls .github/skills/) |
| 62 | ``` |
| 63 | |
| 64 | ### Step 4: Quality Checks |
| 65 | |
| 66 | For each skill, check: |
| 67 | - [ ] `name:` matches directory name exactly |
| 68 | - [ ] `description:` includes trigger keywords ("Activate when: X, Y, Z") |
| 69 | - [ ] Has a clear "When to Use" or "Steps" section |
| 70 | - [ ] Has an "Output Format" or "See Also" section |
| 71 | - [ ] No broken cross-references to renamed skills (`/autopilot` → `/omg-autopilot`) |
| 72 | - [ ] File is not empty stub (< 20 lines = likely incomplete) |
| 73 | |
| 74 | ### Step 5: Coverage Analysis |
| 75 | |
| 76 | Check against the skill catalog in `copilot-instructions.md`: |
| 77 | ```bash |
| 78 | # Extract skill names from instructions |
| 79 | grep -o '/[a-z-]*' .github/copilot-instructions.md | sort | uniq |
| 80 | |
| 81 | # Compare to actual skill directories |
| 82 | ls -1d .github/skills/*/ | xargs -I{} basename {} |
| 83 | ``` |
| 84 | |
| 85 | Identify gaps: skills mentioned in instructions but missing from disk, or vice versa. |
| 86 | |
| 87 | --- |
| 88 | |
| 89 | ## Output Format |
| 90 | |
| 91 | ``` |
| 92 | ## Skill Stocktake Report |
| 93 | |
| 94 | **Date:** [timestamp] |
| 95 | **Total Skills:** X |
| 96 | |
| 97 | ### Inventory |
| 98 | | Skill | Has SKILL.md | Lines | Frontmatter OK | In Instructions | |
| 99 | |-------|-------------|-------|----------------|-----------------| |
| 100 | | omg-autopilot | ✅ | 120 | ✅ | ✅ | |
| 101 | | [skill] | ❌ missing | — | — | ✅ | |
| 102 | |
| 103 | ### Issues Found |
| 104 | | Type | Skill | Issue | Severity | |
| 105 | |------|-------|-------|----------| |
| 106 | | Frontmatter | old-skill | Uses `hint:` not `argument-hint:` | MEDIUM | |
| 107 | | Sync | new-skill | In .github but missing from templates | LOW | |
| 108 | | Coverage | planning | Mentioned in instructions but no directory | HIGH | |
| 109 | | Stale | autopilot | Old name — should be omg-autopilot | HIGH | |
| 110 | |
| 111 | ### Summary |
| 112 | - Skills passing all checks: X/Y |
| 113 | - Issues requiring action: Z |
| 114 | - HIGH: A |
| 115 | - MEDIUM: B |
| 116 | - LOW: C |
| 117 | |
| 118 | ### Recommended Actions |
| 119 | 1. [Action with file path] |
| 120 | 2. [Action with file path] |
| 121 | ``` |
| 122 | |
| 123 | ## See Also |
| 124 | |
| 125 | - `@omg-coordinator` — orchestrates multi-skill workflows |
| 126 | - `/verify` — verifies specific task completion |
| 127 | - `/status` — shows current active workflow state |
| 128 | - `/remember` — stores quality insights to memory |