vt-c-skill-structural-screen¶
Score every deployed skill against the mechanically-checkable subset of Anthropic's skill-authoring checklist (description sharpness, SKILL.md size, one-level references, forward-slash paths, no time-sensitive dates) plus a bucket-level Testing signal. Use this when auditing authoring-quality debt across the skill library, finding oversized or vague skills to trim, or after adding/editing skills. Advisory only — never emits a keep/retest/retire verdict.
Plugin: core-standards
Category: Other
Command: /vt-c-skill-structural-screen
vt-c-skill-structural-screen — Structural-Quality Screen for Skills¶
An advisory static-analysis screen (SPEC-162). It scores the toolkit's deployed skills on the authoring/structural axis — the mechanically-checkable subset of Anthropic's "Checklist for effective Skills" — and is strictly separate from SPEC-156's empirical keep/retest/retire value axis. A skill can be well-authored yet empirically useless, or valuable yet structurally poor; the two signals are reported independently and never substitute for one another.
When to Use¶
- Auditing authoring-quality debt across the ~127-skill library.
- Finding which skills are bloated (oversized SKILL.md), vaguely described, or use nested references.
- After adding or editing skills, to catch structural regressions before review.
Prerequisites¶
- SPEC-156 merged — the screen consumes its inventory
docs/skill-audit-inventory.json(schema_version 1). If that file is absent the screen reports it and exits without partial output. - Python 3 (stdlib only — no third-party dependencies).
Execution¶
Run from the repository root:
Options:
--inventory PATH— override the SPEC-156 inventory location (defaultdocs/skill-audit-inventory.json).--skills-root PATH— override the skills directory (defaultplugins/core-standards/skills).--emit-proposal [--proposal-threshold N] [--proposal-dir DIR]— additionally write advisory intake proposals for skills with ≥ N failing checks (default N=2) intointake/pending/from-research/. Nothing else is edited.
The script prints JSON to stdout: per-skill pass/fail per check with locations, and a
library-wide summary of the most common failing checks ranked by frequency, plus the
testing_debt_count (SPEC-156 not-evaluable skills — the ≥3-eval shortfall proxy).
Checks (mechanical, FR-2)¶
- description — non-empty, third-person, not a vague stem (
helps with X); a short description must carry a when/trigger clause. Long specific descriptions pass without an explicit trigger word. - size — SKILL.md body ≤ 500 lines.
- references — file references from SKILL.md are one level deep (no nested
see A → see B). - dates — no time-sensitive absolute date in a live instruction (dates inside an anchored old-patterns/deprecated/historical heading block are exempt).
- paths — forward-slash paths only (no backslash separators).
Testing signal (FR-3)¶
Sourced from SPEC-156's evaluability bucket, reported at bucket granularity: not-evaluable skills
are surfaced as authoring debt (no eval suite) and linked to SPEC-156's list. The screen does NOT
compute per-skill evaluation counts — the ≥3-eval precision is unavailable from the inventory.
Manual-review only (FR-4, out of scope for the automated screen)¶
Consistent terminology, concrete (not abstract) examples, feedback-loop quality, and progressive-disclosure appropriateness require human judgement and are NOT auto-checked — the report lists them so a reviewer knows what the screen does not cover.
Edge Cases¶
- Inventory absent — prints
inventory unavailable — SPEC-156 must be merged firstand exits 0 with no per-skill output (hard dependency). - Deprecated redirect stubs — descriptions beginning with
[DEPRECATED]are exempt from the description check (they intentionally redirect and lack a when-clause by design). - Skill legitimately > 500 lines but well-organized — still flagged by the mechanical line count; the summary marks it a split candidate. A human decides via intake.
Success Criteria¶
- Every deployed skill (count derived from SPEC-156's inventory, not hard-coded) carries a per-check structural result with offending locations.
- The library-wide summary ranks the most common failing checks.
- No keep/retest/retire verdict is emitted and SPEC-156's decision layer is never fed (advisory).
- Two consecutive runs over the same skill set produce identical output (no model calls).
Anti-patterns¶
- Never auto-edit, split, or delete a skill based on this screen — reason: it is advisory; a human decides via the intake pipeline (FR-6).
- Never treat a structural fail as an empirical verdict — reason: authoring quality and value are orthogonal axes (US-3).