[{"data":1,"prerenderedAt":214},["ShallowReactive",2],{"$fkJ8ZUL4-IlvJDJb9dvxL8ymROKO4ne6KdtqxrhWFXBU":3},{"newThing":4,"project":5,"cycle":8,"sections":20,"threads":208,"otherDocs":209,"images":211,"archiveItems":212,"links":213},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,"recordless":16,"thumbnail":4,"imageCount":17,"artifactCount":18,"lastActivity":15,"hasPickup":16,"hasInitialPrompt":19},"c12",12,"c12.projects-as-modular-units","projects-as-modular-units","Projects as Modular Units","archived","2026-09-11",false,0,1,true,[21,35,45,84,135,153],{"key":22,"title":23,"empty":16,"ast":24},"why","Why",{"type":25,"children":26},"root",[27],{"type":28,"tag":29,"props":30,"children":31},"element","p",{},[32],{"type":33,"value":34},"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":36,"title":37,"empty":16,"ast":38},"objective","Objective",{"type":25,"children":39},[40],{"type":28,"tag":29,"props":41,"children":42},{},[43],{"type":33,"value":44},"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":46,"title":47,"empty":16,"ast":48},"scope","Scope",{"type":25,"children":49},[50],{"type":28,"tag":51,"props":52,"children":53},"ul",{},[54,69,74,79],{"type":28,"tag":55,"props":56,"children":57},"li",{},[58,60,67],{"type":33,"value":59},"Add ",{"type":28,"tag":61,"props":62,"children":64},"code",{"className":63},[],[65],{"type":33,"value":66},"## Sister Projects",{"type":33,"value":68}," section to 4 core CLAUDE.md files (design, market-analyst, bob-wire, q-nuxt-layer)",{"type":28,"tag":55,"props":70,"children":71},{},[72],{"type":33,"value":73},"Each section lists only the neighbors that project would actually call",{"type":28,"tag":55,"props":75,"children":76},{},[77],{"type":33,"value":78},"Consistent format: When to use, Key data (file paths), Agents\u002FSkills available",{"type":28,"tag":55,"props":80,"children":81},{},[82],{"type":33,"value":83},"Documentation as API — no new infrastructure, MCP servers, or parent config files",{"key":85,"title":86,"empty":16,"ast":87},"key-changes","Key Changes",{"type":25,"children":88},[89],{"type":28,"tag":51,"props":90,"children":91},{},[92,103,114,125],{"type":28,"tag":55,"props":93,"children":94},{},[95,101],{"type":28,"tag":61,"props":96,"children":98},{"className":97},[],[99],{"type":33,"value":100},"design\u002FCLAUDE.md",{"type":33,"value":102}," — added Sister Projects: market-analyst, bob-wire, q-nuxt-layer",{"type":28,"tag":55,"props":104,"children":105},{},[106,112],{"type":28,"tag":61,"props":107,"children":109},{"className":108},[],[110],{"type":33,"value":111},"market-analyst\u002FCLAUDE.md",{"type":33,"value":113}," — added Sister Projects: design, bob-wire",{"type":28,"tag":55,"props":115,"children":116},{},[117,123],{"type":28,"tag":61,"props":118,"children":120},{"className":119},[],[121],{"type":33,"value":122},"bob-wire\u002FCLAUDE.md",{"type":33,"value":124}," — added Sister Projects: market-analyst, design, q-nuxt-layer",{"type":28,"tag":55,"props":126,"children":127},{},[128,134],{"type":28,"tag":61,"props":129,"children":131},{"className":130},[],[132],{"type":33,"value":133},"q-nuxt-layer\u002FCLAUDE.md",{"type":33,"value":113},{"key":136,"title":137,"empty":16,"ast":138},"outcome","Outcome",{"type":25,"children":139},[140],{"type":28,"tag":29,"props":141,"children":142},{},[143,145,151],{"type":33,"value":144},"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":28,"tag":61,"props":146,"children":148},{"className":147},[],[149],{"type":33,"value":150},"all-calls.json",{"type":33,"value":152}," directly, guided by the Sister Projects documentation.",{"key":154,"title":155,"empty":16,"ast":156},"extra","Design Decisions",{"type":25,"children":157},[158],{"type":28,"tag":51,"props":159,"children":160},{},[161,188,198],{"type":28,"tag":55,"props":162,"children":163},{},[164,170,172,178,180,186],{"type":28,"tag":165,"props":166,"children":167},"strong",{},[168],{"type":33,"value":169},"Documentation as API, not MCP.",{"type":33,"value":171}," MCP servers are justified for external agent access (like the existing ",{"type":28,"tag":61,"props":173,"children":175},{"className":174},[],[176],{"type":33,"value":177},"qpoint-brand",{"type":33,"value":179}," server). For internal Claude Code cross-project work, file reads via ",{"type":28,"tag":61,"props":181,"children":183},{"className":182},[],[184],{"type":33,"value":185},"additionalDirectories",{"type":33,"value":187}," are simpler and sufficient.",{"type":28,"tag":55,"props":189,"children":190},{},[191,196],{"type":28,"tag":165,"props":192,"children":193},{},[194],{"type":33,"value":195},"No parent CLAUDE.md.",{"type":33,"value":197}," Each project stays self-contained. Projects only reference the neighbors they actually need, not the entire ecosystem.",{"type":28,"tag":55,"props":199,"children":200},{},[201,206],{"type":28,"tag":165,"props":202,"children":203},{},[204],{"type":33,"value":205},"Peer-to-peer, not hub-and-spoke.",{"type":33,"value":207}," Every project declares its own capabilities and knows about its own neighbors. No central orchestrator.",[],[210],"initial-prompt.md",[],[],[],1789151089474]