{
  "uid": "cogitave.learn.navigate-the-patterns-catalog.the-patterns-catalog",
  "kind": "moduleUnit",
  "href": "/modules/navigate-the-patterns-catalog/the-patterns-catalog/",
  "title": "The patterns catalog",
  "summary": "",
  "type": null,
  "products": [],
  "roles": [],
  "levels": [],
  "subjects": [],
  "headings": [
    "The five-section entry shape",
    "The machine-readable index"
  ],
  "source": "The catalog lives in two forms that describe the same set of patterns: a human\ndocument and a machine-readable index. Both are read from\n[patterns/README.md](../../../../standards/docs/patterns/README.md).\n\n## The five-section entry shape\n\nEvery pattern doc - `service-scaffold.md`, `api-endpoint.md`, `caching.md`, and\nthe rest listed in the README's catalog table - has the **same five sections, in\nthis order**:\n\n| Section | What it tells you |\n| --- | --- |\n| **Problem** | When you reach for this pattern. |\n| **The Cogitave way** | The one canonical solution, concretely. |\n| **Governing standard(s)** | The authority - the rules live there, not here. |\n| **Reusable artifact** | The template, primitive, or snippet to start from. |\n| **Anti-pattern** | What agents most often wrongly generate instead. |\n\nRead [service-scaffold.md](../../../../standards/docs/patterns/service-scaffold.md)\nend to end and you can feel the shape: the Problem names the temptation to\n`git init` an empty repo; the Cogitave way says scaffold from `templates/base`\nplus a language template instead; the governing standards are\n`product-architecture`, `product-core-baseline`, `technology-radar`, and\n`ci-cd-pipelines`; the reusable artifact names `templates/base` composed with\n`templates/service`, `templates/go-service`, or `templates/rust`; the\nanti-pattern is hand-rolling a repo from a blank directory and re-picking a\ntoolchain ad hoc.\n\n## The machine-readable index\n\n[`catalog.yaml`](../../../../standards/docs/patterns/catalog.yaml) is the\nauthoritative, MCP-consumable projection of the same catalog. Each entry carries\n`uid`, `problem`, `governing_standard` (a list of `uid` + `path`),\n`reusable_artifact` (`kind` + `path`), and `anti_pattern` - the same five ideas,\nstructured for a query instead of a read. An entry may also carry an optional\n`canonical_pattern` field pointing back at a five-section doc: `new-repo`,\n`new-service-rust`, `new-service-go`, and `new-library` are four different\ntask-level intents that all set `canonical_pattern` to `service-scaffold.md`,\nbecause they are variations on one canonical write-up, not four separate\npolicies. When an entry has no `canonical_pattern`, its `catalog.yaml` fields\n*are* the pattern - there is no separate prose doc to open.\n\n> [!NOTE]\n> Both forms are the **same** projection of Cogitave Core, queried the same way\n> a human or an agent would: `docs_search` or `query_graph` over the\n> [query layer](../../../../core/docs/query.md) and the\n> [MCP interface](../../../../core/docs/mcp-interface.md). There is no second,\n> private index - see [ADR-0022](../../../../standards/docs/decisions/0022-patterns-catalog-and-project-inheritance.md)\n> part D.\n\nWhichever form you open, read the same way: get the Problem and the Cogitave way\nfor orientation, then treat the Governing standard and the Reusable artifact as\nthe two links that matter - everything else is a pointer to one of those two.\n",
  "partOf": "cogitave.learn.navigate-the-patterns-catalog",
  "durationInMinutes": 8,
  "quiz": null
}