Table of Contents generated with DocToc
Capability: substrate:framework-dev
Harness: agnostic
Validate framework skill definitions — YAML frontmatter, internal link integrity, and placeholder conventions.
uv; stdlib-only (no third-party runtime dependencies). The dev group pulls pytest, ruff, mypy.git is used only for the optional trigger-phrase-preservation check and is silently skipped when git or the base ref is unavailable.SKILL.md must have a valid frontmatter block with required keys (name, description, license).<PROJECT>, <upstream>, and <tracker> instead of hardcoded project names.SKILL.md name: must be magpie-<directory-name>. Framework skills install under a magpie- namespace prefix (skills/issue-triage/ → .claude/skills/magpie-issue-triage), so the frontmatter name must match that installed name.description (≥ 5 commas in one sentence)Unlike, Distinct from, Counterpart to, rather than)Hands off to, ready for X to take over)typically, implies, because, since, is required first, needs to, requires)process step N, Step Na, docs/X.md, documented in …)when_to_use against a base ref (default origin/main) and warns when any phrase has been dropped. Silently skipped when git or the base ref is unavailable. Override via SKILL_VALIDATOR_BASE_REF.SOFT advisories are surfaced as warnings on stderr without failing the run. The reviewer has the final say on borderline cases.
From the repo root:
uv run --project tools/skill-and-tool-validator --group dev pytest
Or install and run as CLI:
uv run --project tools/skill-and-tool-validator --group dev skill-and-tool-validate
CLI flags:
--strict — promote SOFT categories to hard failures.--skip-categories principle_compliance,trigger_preservation — skip given violation categories entirely (silent).check-placeholders.sh — both tools share the same forbidden-pattern and allowlist lists. check-placeholders.sh runs as a pre-commit hook; this package runs as pytest in CI.