agentleFS
glrodaszglrodasz/dotfiles/skills/skills-audit/SKILL.md

skills-audit

Skill20 starsChanged 15 days agoMITView on GitHub

Review every skill in ~/dotfiles/skills and the private ~/.skills.local against the skill-authoring best practices and the house style, report findings per skill, then standardize frontmatter, structure and wording — audit, fix, and verify, not just a report. Use when the user wants to review, audit, lint, standardize, or clean up their skills, asks whether a SKILL.md follows best practices, or after adding or editing a skill.

  • Deletes or force-pushes

4 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

12 rules. 0 are common, 4 are distinctive, and 8 are very specific to this project.

  • 0

    Common

    Most of the 4 edited versions we read keep these.

  • 4

    Distinctive

    This author's own choices. Worth a look.

  • 8

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Never change what a skill *does*.

    line 29
  2. Distinctive:

    Never weaken a description's trigger phrases.

    line 32
  3. Distinctive:

    Never edit a skill without showing the proposed change first and getting a yes.

    line 34
  4. Very specific:

    One skill: when the user names one skill (or just added one), scope Phases 1–5 to it with --skill <name>, but still run the …

    line 41
  5. Very specific:

    Add --skill <name> (repeatable) to scope to one skill, --json for machine output.

    line 59
  6. Very specific:

    Read each SKILL.md in full, from both folders (plus any references/ and scripts/ it bundles), and answer, per skill, citing line numbers:

    line 68
  7. Very specific:

    Only after a yes. Record the repo's starting state, because files may already be modified before the audit (Phase 5 compares against it): …

    line 115
  8. Very specific:

    Prefer the smallest diff that satisfies the rule: reflow a description into > form, rename Step N — to Phase N —, add a missing ## Phase N …

    line 124
  9. Very specific:

    When a skill's body is near the line budget, move the largest self-contained block into references/<descriptive-name>.md, add a Contents …

    line 127
  10. Very specific:

    Update references/house-style.md if the user chose a new collection-wide standard (naming form, description opener) so the next audit …

    line 130
  11. Distinctive:

    After Phase 5, report what was applied, what was skipped and why, and what remains in "Needs your call":

    line 150
  12. Very specific:

    Commits: do not commit; the user decides when the dotfiles repo gets a commit.

    line 179

“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Skills Audit

Bring every <skill>/SKILL.md in the collection up to the same standard: valid per the spec, aligned with the distilled best practices, and written in the house style. Findings are reported first; files are only edited after an explicit yes.

Two references drive the review — read both fully before judging anything:

  • <skill-directory>/../skill-best-practices-sync/references/best-practices.md — the upstream digest (MUST/SHOULD, source-tagged). Owned by the skill-best-practices-sync skill.
  • references/house-style.md — the local conventions (layout, frontmatter shape, section order, tone).

Hard rules (never violate)

  1. Never change what a skill does. Standardize frontmatter, structure, wording and layout; leave behavior, tool choices and guardrails as they are. A behavioral suggestion goes in the report under "Needs your call", not into the file.
  2. Never weaken a description's trigger phrases. They drive discovery; rewording them is a judgment call for the user.
  3. Never edit a skill without showing the proposed change first and getting a yes.

Inputs

  • Collection: ~/dotfiles/skills (tracked in git) plus ~/.skills.local when it exists (private skills that are never committed, like ~/.zshrc.local). The linter picks up both, and the lint output tags local skills with (local).
  • One skill: when the user names one skill (or just added one), scope Phases 1–5 to it with --skill <name>, but still run the collection-level checks so it matches its neighbors.

Phase 0 — Confirm the rubric is current

Run: python3 <skill-directory>/../skill-best-practices-sync/scripts/sync_sources.py check

  • All UNCHANGED → continue.
  • Any CHANGED / NEW → tell the user the digest may be stale and offer to run the skill-best-practices-sync skill first. Continue with the current digest if they decline.
  • FETCH-ERR (offline) → note it in the report and continue.

Phase 1 — Mechanical lint

Run: python3 <skill-directory>/scripts/lint_skills.py

Add --skill <name> (repeatable) to scope to one skill, --json for machine output. Severities: error = spec violation, warn = checkable SHOULD from the digest, style = house-style deviation, info = cross-skill observation (naming mix, description style mix). Keep the output; it is the skeleton of the report.

The linter does not judge prose. Phase 2 does.

Phase 2 — Read and judge

Read each SKILL.md in full, from both folders (plus any references/ and scripts/ it bundles), and answer, per skill, citing line numbers:

  • Conciseness: which sentences explain something the model already knows? Which paragraphs would the skill work without?
  • What + when: does the description say both, front-loaded, in third person, with the phrases a user would actually type?
  • Defaults, not menus: any place offering several tools or approaches as equals?
  • Specificity vs fragility: are fragile steps prescriptive (exact command, "do not add flags") and open-ended steps left free? Any step over- or under-specified?
  • Procedures over declarations: does it teach the approach, or hard-code one answer?
  • Verification loop: is there a check-fix-recheck step before the report?
  • Terminology: one term per concept throughout?
  • Progressive disclosure: anything long enough to move to references/ with a clear "read this when…"? Any bundled file that SKILL.md never tells the model when to open?
  • House style: title, opening paragraph, Phase N — sections, Report template, Notes & edge cases last, ~90-column wrap — per references/house-style.md.

Then look across the collection: are names one pattern? Do descriptions share one shape? Do the same section names mean the same thing everywhere?

Phase 3 — Report

Print in the chat response. Do not write files yet.

## Skills audit — <N> skills

| skill | errors | warns | style | verdict |
|-------|--------|-------|-------|---------|
| …     |        |       |       | clean / needs fixes |

### <skill-name>
- **Fix** `<rule>` <what and where> → <proposed change, one line>
- **Needs your call** <behavioral or trigger-phrase suggestion, with the reason>

### Across the collection
- <naming / description-shape / section-name consistency findings + the proposed standard>

### Rubric status
<UNCHANGED for all sources | stale: … | offline>

End with: "Apply the Fix items? (all / pick skills / none)".

Phase 4 — Apply

Only after a yes. Record the repo's starting state, because files may already be modified before the audit (Phase 5 compares against it): git -C ~/dotfiles status --short skills/ > "$TMPDIR/skills-before.txt". Local skills have no git history, so if any approved skill is local, also run: rm -rf "$TMPDIR/skills.local.bak" && cp -R ~/.skills.local "$TMPDIR/skills.local.bak". Then, for each approved skill:

  1. Edit SKILL.md in place. Keep every trigger phrase; keep every hard rule; keep the content order unless the fix is the order.
  2. Prefer the smallest diff that satisfies the rule: reflow a description into > form, rename Step N — to Phase N —, add a missing ## Phase N — Verify, wrap long prose lines.
  3. When a skill's body is near the line budget, move the largest self-contained block into references/<descriptive-name>.md, add a Contents list if it exceeds 100 lines, and link it from SKILL.md with a "read this when…" sentence.
  4. Update references/house-style.md if the user chose a new collection-wide standard (naming form, description opener) so the next audit enforces it.

Phase 5 — Verify

  1. python3 <skill-directory>/scripts/lint_skills.py → zero errors; every previously reported finding that was approved is gone; no new findings introduced.
  2. Re-read each edited description once more as a discovery signal: would the skill still trigger on every phrase it triggered on before?
  3. git -C ~/dotfiles status --short skills/ | grep -v -x -F -f "$TMPDIR/skills-before.txt" — only files of the approved repo skills appear (a file already modified before the audit and edited again won't show here; check those with git diff). For local skills: diff -ru "$TMPDIR/skills.local.bak" ~/.skills.local — only the approved local skills changed.

Fix any failure and rerun these checks. Undo a fix that can't pass and list it under "Skipped".

Report

After Phase 5, report what was applied, what was skipped and why, and what remains in "Needs your call":

## Skills audit — applied

### Applied
- <skill>: <fix, one line each>

### Skipped
- <skill>: <fix — why>

### Needs your call
- <skill>: <open item>

Notes & edge cases

  • This skill and skill-best-practices-sync are in scope too. Audit them like the rest; do not exempt them.
  • Local skills (~/.skills.local): untracked and never committed. The same rules and fixes apply as for repo skills. A local skill that reuses a repo skill's name is an XS003 error: report it and suggest renaming the local skill.
  • disable-model-invocation: true is deliberate on skills the user wants to trigger manually — never remove it as a "cleanup".
  • Descriptions shorter than the house shape (e.g. context7-mcp): reshaping into "verb + what — Use when …" is a Fix; adding new trigger phrases is Needs-your-call.
  • Style findings are not failures. A skill may deviate deliberately; say so in the report and move on when the user confirms.
  • Commits: do not commit; the user decides when the dotfiles repo gets a commit.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.