Placement Pattern
Where a Thing lives in the tree determines how discoverable it is. Place Things based on how central they are to the graph.
Rules
The more a Thing is linked to, the higher it should live. A person referenced from 12 nodes should be in a top-level
/people/collection, not nested inside/projects/alpha/team/jane/.Things relevant to one context nest inside that context. A meeting note only relevant to one project lives inside that project's directory.
Things relevant across contexts go top-level. If two or more branches of the tree reference it, promote it.
When in doubt, start high. It's easier to nest later than to promote. Moving a Thing deeper is a smaller change than extracting it upward.
How to evaluate placement
Ask: "From how many different parts of the tree would someone link to this Thing?"
- 1 place — nest it there
- 2-3 places — probably deserves its own collection or a top-level spot
- Many places — definitely top-level
Anti-patterns
Deep nesting to show relationships. If
/clients/acme/projects/alpha/people/jane/exists because Jane works on Alpha for Acme, that's three relationships encoded as hierarchy. Use links instead: Jane lives in/people/jane/and has links to Acme and Alpha.Flat dumping. Putting everything at the root defeats progressive disclosure. Group Things that belong together.
Navigability (kind: document / navigable: false)
Some Things belong in the graph but shouldn't clutter navigation — reference docs, transcripts, ambient context that's valuable when retrieved but noisy when browsed. A pair of frontmatter fields marks these:
---
name: Acme QBR — March 14, 2025
description: Quarterly business review transcript
kind: document # default: node
navigable: false # default: true
---
kind: documentsignals this Thing is reference material, not part of the authored navigation structure. Defaults tonode.navigable: falseexcludes the Thing from defaultget_nodechild listings and from collectionindexenumerations. Wire surfaces accept anincludeNonNavigableopt-in to surface them when explicitly requested. Full-text search still reaches them by default; traversal still follows edges to and from them; access control still applies.
Use navigable: false when:
- The Thing is a transcript, raw export, or research artifact cited by other nodes but not meant to be browsed
- A collection would otherwise bury 40 cited documents under 4 authored nodes
- You want the content searchable and linkable, but not listed
Curated graph nodes (clients, decisions, people, features) stay navigable: true — they're what the graph is for.
Companion files inherit these defaults
The canonical use case for kind: document, navigable: false is companion files. DESIGN.md, SKILL.md, AGENT.md, README.md, CLAUDE.md, and AGENTS.md alongside a composite compile with these frontmatter values automatically — you don't declare them. See content-model/nodes for the full mechanics.
To override (for example, to surface a particular SKILL.md in default child listings), set navigable: true in the file's frontmatter.