plugins/build/skills/check-help-skill/SKILL.md
Use when the user wants to "audit a help skill", "review my plugin index", or "verify my help-skill is up to date". Audits a plugins/<plugin>/skills/help/SKILL.md against the help-skill rubric — coverage, freshness, frontmatter fidelity, plus five judgment dimensions and a trigger-collision check.
npx skillsauth add bcbeidel/wos check-help-skillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audit a help-skill — the SKILL.md at
plugins/<plugin>/skills/help/SKILL.md — against the rubric in
help-skill-best-practices.md.
This skill follows the check-skill
pattern. Tier-1 is
deterministic via scripts/check_help_skill.py (17 rule_ids; emits a
JSON array of envelopes via _common.py). Tier-2 has 5 judgment
dimensions read inline by the primary agent. Tier-3 is the
trigger-collision cross-entity rule.
Also fires when the user phrases the request as:
Read $ARGUMENTS. If it ends in SKILL.md, treat as the path. If it
names a plugin (e.g., work), resolve to
plugins/<plugin>/skills/help/SKILL.md. If the file does not exist,
stop — there is nothing to audit (recommend /build:build-help-skill <plugin>). If the path resolves to a SKILL.md whose name is not
help, stop and route to /build:check-skill.
Invoke the script:
python3 plugins/build/skills/check-help-skill/scripts/check_help_skill.py <plugin-or-path>
Parse stdout as JSON. The script emits an array of 17 envelopes — one
per rule_id, regardless of which fired. Each envelope:
{rule_id, overall_status, findings[]}, with each finding carrying
{status, location, reasoning, recommended_changes}.
recommended_changes is canonical — copy through verbatim to the report.
Rule set (17 Tier-1 rules):
| Severity | rule_id |
|---|---|
| fail | slug-mismatch |
| warn | frontmatter-shape |
| warn | frontmatter-invented-key |
| warn | body-line-count |
| fail | secret |
| fail | tls-disable |
| fail | pipe-to-shell |
| warn | synopsis-present |
| fail | managed-region-present |
| fail | skill-index-coverage |
| warn | skill-index-no-self |
| warn | description-fidelity |
| warn | workflow-section-present |
| warn | workflow-freshness |
| warn | pointer-resolution |
| fail | pointer-broken-fail |
| warn | description-trigger-shape |
Exit codes: 0 if no envelope is fail; 1 if any envelope is
fail; 64 on argument error.
Tier-2 exclusion list. Any slug-mismatch, secret,
tls-disable, pipe-to-shell, managed-region-present,
skill-index-coverage (rows for skills that don't exist on disk), or
pointer-broken-fail finding excludes the file from Tier-2 — fix the
structural issue before evaluating quality. Other FAILs surface and
allow Tier-2 to proceed.
For each file that passed the Tier-2 exclusion gate, evaluate against
the 5 judgment rules at references/check-*.md:
| File | Dimension | Severity |
|---|---|---|
| check-workflow-curation.md | D1 — ## Common workflows carries composed chains | warn |
| check-triage-scaffolding.md | D2 — task → skill mapping is actionable | warn |
| check-dual-audience.md | D3 — readable for both human and agent audiences | warn |
| check-scope-discipline.md | D4 — stays inside (synopsis, index, workflows, pointers) | warn |
| check-trigger-quality.md | D5 — fires on meta-questions, not the plugin's own workflows | warn |
Evaluator policy: see check-skill-pattern.md §Evaluator policy. Read all 5 rule files first, then evaluate the help-skill in one LLM call.
Evaluate against
check-trigger-collision.md.
For every sibling skill in the plugin, compare its description
against the help-skill's description. The rule documents two
heuristics: token overlap (shared trigger-phrase tokens above
threshold; info at 3+, warn at 5+) and identical trigger phrasing
(warn).
This is the load-bearing dimension — a help-skill in isolation can pass Tier-1 and Tier-2 cleanly while being fundamentally broken when the router has to pick between it and a colliding sibling. Skipping Tier-3 leaves the highest-value defect undetected.
Merge Tier-1 (script JSON) + Tier-2 (judgment) + Tier-3 (judgment) findings into a unified table:
| Tier | rule_id | Location | Status | Reasoning |
|------|---------|----------|--------|-----------|
Sort: fail before warn before inapplicable; Tier-1 before Tier-2
before Tier-3 within severity. Summary line at top and bottom: N fail, N warn across N rules. If any envelope is fail and excludes
Tier-2, name the trigger.
For each finding's Recommendation: line, copy recommended_changes
through verbatim. Multi-paragraph recipes condense to the first
paragraph in the report; the full recipe is presented in the repair
loop.
Ask exactly once:
"Apply fixes? Enter
y(all),n(skip), or comma-separated finding numbers."
For each selected finding, route per the recipe in
recommended_changes:
/build:build-help-skill <plugin>
(rebuild from scratch when the file is too damaged); table
regeneration is typically delegated to the plugin's
build-help-skill render script.After each applied fix, re-run the Tier-1 script (or re-judge the
Tier-2/3 dimension) on the affected scope so subsequent findings
reflect the new state. Terminate when the user enters n or
exhausts findings.
/build:check-skill via the Skill tool when Step 1 routes
off-target.pass envelope.help-skill-best-practices.md. Copy it through; do not paraphrase.help-skill-best-practices.md section it enforces.git diff / git checkout.Chainable to: /build:check-skill <path> (catches generic
SKILL.md structural issues outside the help-skill rubric);
/build:check-skill-pair help-skill (audits pair-level integrity);
/build:build-help-skill <plugin> (when the target file does not
exist or is too damaged for repair).
tools
Use when the user wants to "scaffold a help skill", "add a /<plugin>:help command", or "build a plugin index skill", or wants to give a plugin an orientation surface that lists its skills and common workflows. Produces a SKILL.md at plugins/<plugin>/skills/help/SKILL.md.
tools
Audits pair-level integrity of a primitive-pair (the artifact `/build:build-skill-pair` produces) by walking the four required artifact slots — principles doc, `build-<primitive>/SKILL.md`, `check-<primitive>/SKILL.md`, and the `primitive-routing.md` registration — and reports cross-artifact issues a per-SKILL.md checker cannot see: missing principles doc, divergent principles paths between halves, absent routing registration, missing build→check handoff. Per-half structural compliance with the unified pattern (`check-skill-pattern.md`) is delegated to `plugins/build/_shared/scripts/check_skill_pattern.py`. Use when the user wants to "audit a skill pair", "review a primitive pair", or "validate the skill pair for X". Not for auditing a single SKILL.md — route to `/build:check-skill`. Not for re-distilling a stale principles doc — route to `/build:build-skill-pair`.
testing
Audit a root-level resolver — verify AGENTS.md pointer, managed-region integrity, filing-table coverage against disk, context-table actionability, and trigger-eval pass rate. Use when the user wants to "audit a resolver", "validate routing table", or "find dark capabilities".
tools
Audits a project's top-level README.md against 28 deterministic checks across seven scripts (secret scanning, H1 uniqueness & position, heading-hierarchy skips, section presence & order, TOC threshold, line count & length, code-block language tags, shell-prompt prefixes, smart quotes in code, relative-link resolution, fragment-anchor resolution, image alt text, badge/image byte size, destructive-command flagging, pipe-to-shell patterns, TLS-disable instructions, non-reserved hostnames/IPs, emoji in headings, LICENSE file presence & link, CONTRIBUTING link, TODO/FIXME/XXX markers, README gitignore status) plus seven judgment dimensions and a Tier-3 cross-README collision check. Use when the user wants to "audit a README", "lint a README", or "run linters on README.md". Not for sub-package READMEs (different rubric) or docs-site pages (different toolchain).