Skip to content

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.

ArtifactPathWhat it is
Passport schemaschemas/passport.schema.jsonJSON Schema draft-07 — the single source of truth for passport shape
Taxonomytaxonomy.jsonCanonical categories, tag registry, pattern categories
llms.txtllms.txtAnswer.AI-style agent-discoverable index, generated per commit
Per-seed passportpackages/<slug>/passport.jsonMetadata for a specific seed
Scriptsscripts/seed-*.mjsnew, validate, index, doctor, backfill
CI.github/workflows/seed-validate.ymlPaths-gated validation on passport/schema/taxonomy changes
{
"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..."
}
}
  • 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 — conformsTo declaration makes the vault itself an RO-Crate; any seed’s lineage.relatedSeeds is a graph edge.
  • MCPD-inspired faceted metadata (Multi-Crop Passport Descriptors, the genebank standard) — separated lifecycle / taxonomy / technical / lineage / health facets prevent one flat schema from bloating.

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 has name + category (from 24-entry registry in taxonomy.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.
sapling ──► active ──► graduated (leaves the vault; passport stub stays behind)
├─► dormant ─► resurrection_candidate ─► active
│ │
│ └─► archived
└─► archived
StateMeaning
saplingFreshly scaffolded, not yet developed.
activeSomeone is actively working on it inside the vault.
dormantParked — no current work, but worth preserving. All 104 backfilled seeds default here.
resurrection_candidateFlagged for possible revival. Must be resolved within ~6 months or the validator warns.
graduatedExtracted into its own repo. lifecycle.graduatedTo must point to the new repo URL (validator enforces). Run shipcheck before the state change.
archivedKept for reference, no future work expected.
Terminal window
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.

Terminal window
pnpm seed:validate

AJV 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.

Terminal window
pnpm seed:index

Recomputes 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.

Terminal window
pnpm seed:doctor

Reports missing passports, low-confidence LLM-backfilled entries (ingest.confidence < 0.7), passports still flagged manualReview: true, TODO one-liners, and broken lineage references.

  1. Create a new repo under mcp-tool-shop-org, push the package contents there.
  2. Run shipcheck on the new repo; fix gates A-D.
  3. In the seed’s passport: set lifecycle.state = "graduated", lifecycle.graduatedTo = "<new-repo-url>", update lifecycle.stateSince.
  4. pnpm seed:validate confirms the graduation is well-formed.
  5. The seed folder can stay as a stub or be removed — the passport carries the forwarding address either way.

All 104 LLM-backfilled passports are flagged ingest.manualReview = true. To work through the queue:

  1. pnpm seed:doctor — lists what needs attention
  2. Open a seed’s passport.json and cross-reference its source (packages/<slug>/)
  3. Verify or edit: title, discovery.oneLiner, description, taxonomy.category, taxonomy.tags, patterns[]
  4. When satisfied: set ingest.manualReview = false
  5. pnpm seed:index to refresh derived artifacts
  6. 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.

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.