The Seed Vault
The Prototypes repo isn’t just a monorepo — it’s a seed vault. Every package carries a structured passport.json that composes three standards and adds three novel fields. Everything downstream (the faceted browser, the README tables, llms.txt, the landing page counts) is generated from those passports.
Where everything lives on GitHub
Section titled “Where everything lives on GitHub”| Artifact | Path | What it is |
|---|---|---|
| Passport schema | schemas/passport.schema.json | JSON Schema draft-07 — the single source of truth for passport shape |
| Taxonomy | taxonomy.json | Canonical categories, tag registry, pattern categories |
| llms.txt | llms.txt | Answer.AI-style agent-discoverable index, generated per commit |
| Per-seed passport | packages/<slug>/passport.json | Metadata for a specific seed |
| Scripts | scripts/seed-*.mjs | new, validate, index, doctor, backfill |
| CI | .github/workflows/seed-validate.yml | Paths-gated validation on passport/schema/taxonomy changes |
What a passport contains
Section titled “What a passport contains”{ "conformsTo": ["codemeta:3.0", "ro-crate:1.1", "mcp-prototypes:passport:1"], "id": "seed:deltamind:0.1.0", // namespace:slug:version "swhid": null, // Software Heritage ID, filled by Wave 3 "name": "deltamind", "title": "Store what changed", "description": "...", "version": "0.1.0", "license": "MIT", "codeRepository": "https://github.com/mcp-tool-shop-org/prototypes/tree/main/packages/deltamind",
"lifecycle": { "state": "dormant", "stateSince": "2026-04-08", "maturity": "prototype" }, "taxonomy": { "category": "developer-tools", "tags": ["typescript", "cli"] }, "technical": { "kind": "library", "programmingLanguages": ["TypeScript"] },
"health": { // auto-computed by seed:index "lineCount": 4820, "lastCommitAt": "2026-04-08T...", "commitRecencyDays": 12, "hasTests": true, "hasReadme": true, "hasLicense": true, "buildable": null },
"patterns": [ // novel — structured, registry-constrained { "name": "state-as-memory", "category": "data-model", "summary": "Typed deltas reconciled into queryable state instead of summarized transcripts." } ], "failureModes": [], // novel — negative knowledge as first-class data "agentCapsule": { // novel — 10-second LLM payload "insight": "Store what changed, not what was said.", "excerpt": null }, "priorArt": [],
"ingest": { "method": "ollama-backfill", "model": "hermes3:8b", "confidence": 0.9, "manualReview": true, "ingestedAt": "2026-04-20T..." }}The three borrowed standards
Section titled “The three borrowed standards”- CodeMeta 3.0 core —
name,title,description,version,license,datePublished,codeRepository,author,keywords. Zenodo and Figshare auto-ingest this shape, so graduated seeds stay citable. - RO-Crate 1.1 profile —
conformsTodeclaration makes the vault itself an RO-Crate; any seed’slineage.relatedSeedsis a graph edge. - MCPD-inspired faceted metadata (Multi-Crop Passport Descriptors, the genebank standard) — separated
lifecycle/taxonomy/technical/lineage/healthfacets prevent one flat schema from bloating.
The three novel fields
Section titled “The three novel fields”These aren’t in any public catalog spec we could find (Software Heritage, Backstage, Cortex, Port.io, HuggingFace model cards, ASCL):
patterns[]— structured pattern extraction. Each entry hasname+category(from 24-entry registry intaxonomy.json:patternCategories) +summary. Queryable: “show me every seed that touched supply-chain tricks”.failureModes[]—tried/didntWorkBecause/pivoted?. A prototype’s most valuable payload is often what broke.agentCapsule—{insight, excerpt}. A 10-second LLM-readable core-trick summary plus an optional ≤400-char code snippet. Dramatically improves agent discoverability.
Lifecycle states
Section titled “Lifecycle states”sapling ──► active ──► graduated (leaves the vault; passport stub stays behind) │ ├─► dormant ─► resurrection_candidate ─► active │ │ │ └─► archived └─► archived| State | Meaning |
|---|---|
sapling | Freshly scaffolded, not yet developed. |
active | Someone is actively working on it inside the vault. |
dormant | Parked — no current work, but worth preserving. All 104 backfilled seeds default here. |
resurrection_candidate | Flagged for possible revival. Must be resolved within ~6 months or the validator warns. |
graduated | Extracted into its own repo. lifecycle.graduatedTo must point to the new repo URL (validator enforces). Run shipcheck before the state change. |
archived | Kept for reference, no future work expected. |
Working with the vault
Section titled “Working with the vault”Add a new seed
Section titled “Add a new seed”pnpm seed:new my-idea --category developer-tools --kind cli \ --title "My Idea" --description "What it does, 30-800 chars."Scaffolds packages/my-idea/ with a valid-by-construction passport. Fill discovery.oneLiner, add tags, then validate.
Validate
Section titled “Validate”pnpm seed:validateAJV checks the schema; extra passes check folder-name ↔ passport.name match, tag registry, pattern category registry, duplicate IDs, lifecycle rules, and lineage cross-references. CI runs the same gate on any PR touching packages/**/passport.json, schemas/**, taxonomy.json, or scripts/seed-*.mjs.
Regenerate derived artifacts
Section titled “Regenerate derived artifacts”pnpm seed:indexRecomputes health.* from git + filesystem, rewrites site/src/data/seeds.json, regenerates README category tables between <!-- GENERATED:seeds-by-category --> markers, and rebuilds llms.txt at the repo root.
See the review queue
Section titled “See the review queue”pnpm seed:doctorReports missing passports, low-confidence LLM-backfilled entries (ingest.confidence < 0.7), passports still flagged manualReview: true, TODO one-liners, and broken lineage references.
Graduate a seed
Section titled “Graduate a seed”- Create a new repo under
mcp-tool-shop-org, push the package contents there. - Run shipcheck on the new repo; fix gates A-D.
- In the seed’s passport: set
lifecycle.state = "graduated",lifecycle.graduatedTo = "<new-repo-url>", updatelifecycle.stateSince. pnpm seed:validateconfirms the graduation is well-formed.- The seed folder can stay as a stub or be removed — the passport carries the forwarding address either way.
Wave 2 review workflow
Section titled “Wave 2 review workflow”All 104 LLM-backfilled passports are flagged ingest.manualReview = true. To work through the queue:
pnpm seed:doctor— lists what needs attention- Open a seed’s
passport.jsonand cross-reference its source (packages/<slug>/) - Verify or edit:
title,discovery.oneLiner,description,taxonomy.category,taxonomy.tags,patterns[] - When satisfied: set
ingest.manualReview = false pnpm seed:indexto refresh derived artifacts- Commit
Known residue from the hermes3:8b backfill: ~10% of oneLiners are tautological or leak fragments from the source README. Cheaper to hand-edit during review than re-run.
For agents consuming this catalog
Section titled “For agents consuming this catalog”The llms.txt at repo root follows the Answer.AI spec — one line per seed, grouped by category, with deep links to packages/<slug>/. For structured queries use site/src/data/seeds.json (the full passport collection) or the raw packages/<slug>/passport.json per seed. The agentCapsule.insight field is specifically shaped to be the 10-second version — read those first.