Agent Blueprint
Get started
Browse the pages

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/check-drift.sh Count claims in the manifests, the README, AGENTS.md and the README hero’s source in site/motion/readme-hero/ match the tree: 53 skills, 10 hooks, 30 helper prompts, and Codex’s description counts the command handlers in hooks/codex.json. The site source in site/src/ and the other motion sources in site/motion/ 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/check-site.py site/dist 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/test/**/*.test.mjs' 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/dist the built-page tests skip
python3 scripts/check-skill-collisions.py Frontmatter YAML, references/ pointers and § headings resolve, no near-duplicate descriptions
python3 scripts/check-portability.py 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/check-manifests.py 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/sync-shared.py --check Shared snippets and prompt copies match their sources
python3 -m unittest discover -s tests/gates The gate and skill-contract tests
claude plugin validate --strict .claude-plugin/plugin.json The plugin manifest, with Claude Code’s own validator

The ship runner has its own tests under tests/runner/, which drive run.sh against a fake tool. The smoke test in tests/smoke/ 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.