plugins/build/skills/check-skill-chain/SKILL.md
Design a skill-chain from a goal, or check an existing skill-chain manifest for structural and contract issues. Use when the user wants to "design a skill-chain", "audit a chain", or "repair a chain".
npx skillsauth add bcbeidel/wos check-skill-chainInstall 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.
Design a *.chain.md manifest from a workflow goal (Goal mode), or audit
an existing manifest for structural and contract correctness (Manifest
mode). Manifest mode follows the check-skill
pattern's
design+audit hybrid carve-out — Goal mode is design-only and outside
pattern scope; Manifest mode is the audit half and conforms to the
Tier-1 / Tier-2 / Evaluator-policy structure.
This skill ships no scripts of its own. The Tier-1 structural lint
delegates to plugins/wiki/scripts/lint.py (same script /wiki:lint
invokes) — that's the canonical authority for chain-manifest
structure. Cross-plugin tool delegation is allowed at Tier-1 per the
pattern's hybrid carve-out; we do not wrap lint.py in a thin local
script just to satisfy "scripts/check_*.py owned by this skill".
Inputs are validated by argparse; the wrapped script does not call
subprocess with shell=True or take untrusted command strings.
Also fires when the user phrases the request as:
*.chain.md file → Manifest mode (audit)skills/ (and any
installed plugin skills/ directories). Present as a numbered list with descriptions.plans/YYYY-MM-DD-<name>.chain.md:
name, description, type: chain, goal, negative-scope## Steps pipe table — | Step | Skill | Input Contract | Output Contract | Gate |/work:start-work or run each skill manually to execute." Do not invoke any step.Run python3 plugins/wiki/scripts/lint.py --root <project-root> --no-urls and extract findings whose path matches the target
manifest. The wiki lint covers five structural dimensions of every
chain manifest: skills exist on disk, contracts are declared per step,
gates appear on consequential steps, a termination condition is
present, and there are no cycles. Do not re-implement these checks
locally — lint.py is the canonical authority.
If parse_chain() raises on a malformed manifest, report it as a
fail finding and continue. Do not crash.
lint.py emits findings in the wiki linter's table format, not the
JSON envelope shape the broader pattern uses. That's acceptable here
because the lint is a cross-plugin shared tool with its own consumers
(e.g., /wiki:lint) — translating its output into envelope shape is
out of scope for this skill.
For each step in the manifest, evaluate against
references/check-cross-reference.md:
read the step's referenced SKILL.md body; assess whether the declared
output_contract is plausible given what the skill actually produces.
Mismatches are always warn — never fail — because the user (not
the audit) decides whether the manifest's contract or the SKILL.md's
output is the source of truth.
check-cross-reference.md first, then evaluate every step in the manifest against the unified rubric. A single locked-rubric pass produces stable scoring.warn, not pass.A chain manifest is a single artifact; multi-manifest collision is
out of scope. Tier-3 returns inapplicable silently for this skill.
Merge Tier-1 (lint.py) and Tier-2 (cross-reference) findings into a unified table:
| File | Issue | Severity |
|------|-------|----------|
Summary line: N fail, N warn. Sort: fail before warn; Tier-1 (structural) before Tier-2 (cross-reference) within the same severity.
Ask: "Apply fixes? Enter y (all), n (skip), or comma-separated numbers."
For each selected finding:
/build:build-skill inline to create it, then re-run lint.py to confirm.recommended_changes field. The fix may be in the manifest (most common — its contract was speculative) or in the SKILL.md (the actual output evolved). Propose targeted edit, show diff, apply on confirmation.After each applied fix, re-run the relevant Tier (1 or 2) on the affected scope. Return to the findings table.
Exit when all findings are resolved or the user declines remaining fixes: "Skill-chain manifest is well-formed — 0 issues found."
wiki/lint.py runs first, always; surface structural failures before judgment. A manifest that doesn't parse cleanly cannot be cross-referenced productively.fail — Tier-2 findings are warn; the user decides whether the contract or the SKILL.md needs updating.fail finding and continue; partial or incomplete manifests produce findings, not errors.lint.py's structural checks locally — the wiki lint is the canonical authority for chain-manifest structure. Wrap it, don't duplicate it.recommended_changes — the recipe in check-cross-reference.md is the canonical guidance. When generating per-finding recommended_changes, ground it in the rule's "How to apply" — name the discrepancy, name both sides, suggest a fix. Don't paraphrase the rule body itself.Chainable to: start-work (to run the skill-chain steps), build-skill (gap case in repair loop)
warn only; the user decides what to fixscripts/lint.py structural checks cover 5 dimensions (skills exist, contracts declared, gates
on consequential steps, termination condition, no cycles) — do not re-implement themtools
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.
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".