[{"data":1,"prerenderedAt":217},["ShallowReactive",2],{"$fx3kWjNGrbDQ1ASNk3eTWAKntoLAzQ06tUP448VhcPfA":3},{"newThing":4,"project":5,"cycle":8,"sections":21,"threads":209,"otherDocs":210,"documents":212,"images":214,"archiveItems":215,"links":216},null,{"id":6,"label":7,"liveBase":4},"design","Design",{"id":9,"num":10,"dir":11,"name":12,"title":13,"focus":4,"status":14,"statusNote":4,"created":15,"completed":4,"mode":4,"report":4,"recordless":16,"thumbnail":4,"imageCount":17,"artifactCount":18,"lastActivity":19,"hasPickup":16,"hasInitialPrompt":20},"c12",12,"c12.projects-as-modular-units","projects-as-modular-units","Projects as Modular Units","archived","2026-03-13",false,0,1,"2026-03-17",true,[22,36,46,85,136,154],{"key":23,"title":24,"empty":16,"ast":25},"why","Why",{"type":26,"children":27},"root",[28],{"type":29,"tag":30,"props":31,"children":32},"element","p",{},[33],{"type":34,"value":35},"text","The Qpoint ecosystem has 8+ specialized projects, each with deep domain knowledge encoded in CLAUDE.md files, agents, and skills. But there's no formal way for one project to discover and use another's specialty. Cross-project collaboration requires manual knowledge of what exists where. This makes it harder to compose workflows like \"build a wireframe that uses real customer pain points.\"",{"key":37,"title":38,"empty":16,"ast":39},"objective","Objective",{"type":26,"children":40},[41],{"type":29,"tag":30,"props":42,"children":43},{},[44],{"type":34,"value":45},"Formalize cross-project collaboration by documenting each project's API surface — what it offers, when to use it, and where to find the data — so Claude can naturally delegate between domains.",{"key":47,"title":48,"empty":16,"ast":49},"scope","Scope",{"type":26,"children":50},[51],{"type":29,"tag":52,"props":53,"children":54},"ul",{},[55,70,75,80],{"type":29,"tag":56,"props":57,"children":58},"li",{},[59,61,68],{"type":34,"value":60},"Add ",{"type":29,"tag":62,"props":63,"children":65},"code",{"className":64},[],[66],{"type":34,"value":67},"## Sister Projects",{"type":34,"value":69}," section to 4 core CLAUDE.md files (design, market-analyst, bob-wire, q-nuxt-layer)",{"type":29,"tag":56,"props":71,"children":72},{},[73],{"type":34,"value":74},"Each section lists only the neighbors that project would actually call",{"type":29,"tag":56,"props":76,"children":77},{},[78],{"type":34,"value":79},"Consistent format: When to use, Key data (file paths), Agents\u002FSkills available",{"type":29,"tag":56,"props":81,"children":82},{},[83],{"type":34,"value":84},"Documentation as API — no new infrastructure, MCP servers, or parent config files",{"key":86,"title":87,"empty":16,"ast":88},"key-changes","Key Changes",{"type":26,"children":89},[90],{"type":29,"tag":52,"props":91,"children":92},{},[93,104,115,126],{"type":29,"tag":56,"props":94,"children":95},{},[96,102],{"type":29,"tag":62,"props":97,"children":99},{"className":98},[],[100],{"type":34,"value":101},"design\u002FCLAUDE.md",{"type":34,"value":103}," — added Sister Projects: market-analyst, bob-wire, q-nuxt-layer",{"type":29,"tag":56,"props":105,"children":106},{},[107,113],{"type":29,"tag":62,"props":108,"children":110},{"className":109},[],[111],{"type":34,"value":112},"market-analyst\u002FCLAUDE.md",{"type":34,"value":114}," — added Sister Projects: design, bob-wire",{"type":29,"tag":56,"props":116,"children":117},{},[118,124],{"type":29,"tag":62,"props":119,"children":121},{"className":120},[],[122],{"type":34,"value":123},"bob-wire\u002FCLAUDE.md",{"type":34,"value":125}," — added Sister Projects: market-analyst, design, q-nuxt-layer",{"type":29,"tag":56,"props":127,"children":128},{},[129,135],{"type":29,"tag":62,"props":130,"children":132},{"className":131},[],[133],{"type":34,"value":134},"q-nuxt-layer\u002FCLAUDE.md",{"type":34,"value":114},{"key":137,"title":138,"empty":16,"ast":139},"outcome","Outcome",{"type":26,"children":140},[141],{"type":29,"tag":30,"props":142,"children":143},{},[144,146,152],{"type":34,"value":145},"Claude Code sessions in any of the 4 core projects can now discover and use sister project data without manual guidance. The example use case — \"build a wireframe with ICP quotes\" from bob-wire — works by reading market-analyst's ",{"type":29,"tag":62,"props":147,"children":149},{"className":148},[],[150],{"type":34,"value":151},"all-calls.json",{"type":34,"value":153}," directly, guided by the Sister Projects documentation.",{"key":155,"title":156,"empty":16,"ast":157},"extra","Design Decisions",{"type":26,"children":158},[159],{"type":29,"tag":52,"props":160,"children":161},{},[162,189,199],{"type":29,"tag":56,"props":163,"children":164},{},[165,171,173,179,181,187],{"type":29,"tag":166,"props":167,"children":168},"strong",{},[169],{"type":34,"value":170},"Documentation as API, not MCP.",{"type":34,"value":172}," MCP servers are justified for external agent access (like the existing ",{"type":29,"tag":62,"props":174,"children":176},{"className":175},[],[177],{"type":34,"value":178},"qpoint-brand",{"type":34,"value":180}," server). For internal Claude Code cross-project work, file reads via ",{"type":29,"tag":62,"props":182,"children":184},{"className":183},[],[185],{"type":34,"value":186},"additionalDirectories",{"type":34,"value":188}," are simpler and sufficient.",{"type":29,"tag":56,"props":190,"children":191},{},[192,197],{"type":29,"tag":166,"props":193,"children":194},{},[195],{"type":34,"value":196},"No parent CLAUDE.md.",{"type":34,"value":198}," Each project stays self-contained. Projects only reference the neighbors they actually need, not the entire ecosystem.",{"type":29,"tag":56,"props":200,"children":201},{},[202,207],{"type":29,"tag":166,"props":203,"children":204},{},[205],{"type":34,"value":206},"Peer-to-peer, not hub-and-spoke.",{"type":34,"value":208}," Every project declares its own capabilities and knows about its own neighbors. No central orchestrator.",[],[211],"initial-prompt.md",[213],{"file":211,"title":4},[],[],[],1794599449280]