DocsConcepts
Consistency gates
The repository checks its own claims. CI runs these gates on every pull request, and you can run each one locally before you push.
The repository checks itself against its own files, not against numbers someone typed. CI runs every gate on every pull request, and AGENTS.md lists them for maintainers.
| Command | Checks |
|---|---|
bash scripts/ |
Count claims in the manifests, the README, AGENTS.md and the README hero’s source in site/ match the tree: 53 skills, 10 hooks, 30 helper prompts, and Codex’s description counts the command handlers in hooks/. The site source in site/ and the other motion sources in site/ state no literal skill, helper or hook count, and every skill sits in exactly one README phase table. It also fails when README.md or the site source brings back adoption or ecosystem wording |
npx astro check (in site/) |
Type errors in the site’s .astro and TypeScript files, under Astro’s strict settings. Run it after npm ci in site/ |
python3 scripts/ |
The built site against the tree: one page per skill, each helper prompt once on the Skills page, the counts and version the pages state, no SKILL.md in the build, no adoption or ecosystem wording, internal links that resolve, and a title, description and canonical link on every page. Build the site first with npm ci and npm run build in site/, which needs Node 22.12 or later |
node --test 'site/ |
The site’s data modules against the tree, such as the README, SKILL.md, release and tutorial parsers, each section’s page order and llms.txt. On the built pages: a title and description of their own, the sitemap, the Changelog page, no Kit page (it is served by npm run dev only), islands that hydrate only on first interaction, and no script or stylesheet from another origin. Run it from the repository root with the glob quoted, after the site build: without site/ the built-page tests skip |
python3 scripts/ |
Frontmatter YAML, references/ pointers and § headings resolve, no near-duplicate descriptions |
python3 scripts/ |
The rules for all eight tools: agentskills frontmatter with only the allowed metadata keys, the ab- prefix, the 8,000-byte cap, no tool variables or cross-skill paths, no slash names, the manual-only pairing, no text Hermes would quarantine, and every skill’s Codex display name and one-line description, with no display name used twice |
python3 scripts/ |
Every host manifest and every skill’s metadata.version agree with the release; interface assets resolve to files inside the repository, and Codex categories use supported values |
python3 scripts/ |
Shared snippets and prompt copies match their sources |
python3 -m unittest discover -s tests/ |
The gate and skill-contract tests |
claude plugin validate --strict .claude-plugin/ |
The plugin manifest, with Claude Code’s own validator |
The ship runner has its own tests under tests/, which drive run.sh against a fake tool. The smoke test in tests/ runs outside CI because it needs the real tools and their accounts: before a release, it runs a sample project through the main pipelines in every installed tool’s headless mode and writes a pass/fail table per tool. A tool that fails only because of a vendor bug ships marked degraded in its support note, with a link to the upstream issue; a failure in the blueprint’s own code blocks the release.