mattrguerra/meridian-skillsmainPrivate on GitHub, published here in full

SKILL.md

Language Markdown15.1 KB327 lines

skills/cowork-project-architect/SKILL.md

  1. ---
  2. name: cowork-project-architect
  3. description: >-
  4. Build a complete Claude project scaffold for Cowork, structured as an Obsidian vault, through
  5. interactive intake and architecture sign-off. Use whenever the user asks to "build a Claude
  6. project for X," "architect a Cowork project," "set up a project for X," "scaffold a new project,"
  7. "create a project for [task/domain]," "make me an Obsidian vault for [project]," or any variant
  8. where the goal is a complete, ready-to-drop-in project folder. Drives intake on purpose, mode,
  9. tasks, data, outputs, and constraints, then generates a tailored vault with CLAUDE.md custom
  10. instructions, MEMORY.md, HEARTBEAT.md, CHANGELOG.md, DECISIONS.md, model guide, sub-agent
  11. definitions, knowledge base, project MOC, and setup. Vault uses numbered folders, YAML
  12. frontmatter, wikilinks, and root-level Claude reference files that log pointers to any
  13. subdirectory-scoped CLAUDE files. Also runs a scope-shift path when an existing project has
  14. changed, updating affected files instead of regenerating.
  15. ---
  16. # Cowork Project Architect
  17. Purpose: turn a project idea into a working Cowork project folder, structured as an Obsidian vault. This skill is the orchestrator. Intake is conversational, output is a complete vault ready to point a Cowork project at and open in Obsidian.
  18. ## Operating principles
  19. 1. **Intake before output.** Never generate the project until the architecture is signed off.
  20. 2. **Tailor everything.** No generic boilerplate. Every deliverable reflects this specific project's purpose, cadence, and constraints. If a file doesn't apply, say so and skip it.
  21. 3. **Match existing patterns.** The user has established conventions in their MEMORY, personal preferences, organization instructions, and skill library. Honor them.
  22. 4. **Be opinionated.** Where the user is ambiguous, propose a default and explain the reasoning. Don't ask twenty questions.
  23. 5. **Mark explicit gaps.** If something genuinely cannot be filled, use `[TBD: description of what's needed]` markers. Don't fabricate.
  24. 6. **No emojis, no asterisk emotes** in any output. Generated projects are work artifacts; keep them clean.
  25. ## Obsidian vault conventions
  26. Every generated project is structured as an Obsidian vault. These conventions apply to all output files:
  27. ### Folder naming
  28. Numbered prefixes for ordered folders, underscore prefix for utility folders that should sort to the bottom:
  29. ```
  30. 00-Index.md (project MOC at root, sorts first)
  31. CLAUDE.md (always at root, no prefix)
  32. MEMORY.md (always at root, no prefix)
  33. [other root reference files]
  34. 01-Knowledge/ (primary domain content)
  35. 02-Working/ (in-progress files)
  36. 03-Outputs/ (finished deliverables)
  37. 04-Archive/ (optional, project-dependent)
  38. _attachments/ (images, PDFs, binaries)
  39. _templates/ (Obsidian note templates)
  40. .obsidian/ (Obsidian config, created on first open)
  41. ```
  42. Adjust folder names to match the project's actual content. A research project might have `01-Sources/`, `02-Notes/`, `03-Drafts/`. A code project might have `01-Specs/`, `02-Code/`, `03-Reviews/`. The numbered-prefix pattern stays consistent.
  43. ### File naming
  44. - **Root Claude reference files**: ALL CAPS with .md extension. CLAUDE.md, MEMORY.md, HEARTBEAT.md, CHANGELOG.md, DECISIONS.md, MODEL_GUIDE.md, SUBAGENTS.md, SETUP.md, SKILLS_REFERENCE.md, README.md.
  45. - **Subdirectory Claude reference files**: `CLAUDE-[scope].md` pattern. E.g., `01-Knowledge/CLAUDE-knowledge.md`. The CLAUDE prefix preserves grep/search visibility and the scope suffix names the directory it governs.
  46. - **Other notes**: kebab-case for general notes (`client-onboarding.md`), Title-Case for canonical references (`Project-Charter.md`), or whatever the user's existing vaults use.
  47. ### YAML frontmatter
  48. Every generated `.md` file starts with frontmatter. Standard fields:
  49. ```yaml
  50. ---
  51. type: [claude-instructions | project-memory | working-state | changelog | decisions | model-guide | subagents | setup | skills-reference | readme | moc | knowledge-index | etc.]
  52. scope: [project-root | 01-Knowledge | 02-Working | etc.]
  53. tags:
  54. - claude
  55. - [other relevant tags]
  56. created: [YYYY-MM-DD]
  57. updated: [YYYY-MM-DD]
  58. aliases:
  59. - [optional alternate names for Obsidian search]
  60. ---
  61. ```
  62. Frontmatter enables Dataview queries, tag-based filtering, and Obsidian search. Keep it consistent across templates.
  63. ### Wikilinks
  64. Internal references between files use wikilinks (`[[FILENAME]]`), not Markdown links. Wikilinks make Obsidian's graph view useful and survive file renames. Examples:
  65. - `[[MEMORY]]` not `[MEMORY](MEMORY.md)`
  66. - `[[01-Knowledge/CLAUDE-knowledge|knowledge-scoped instructions]]` for piped display text
  67. - `[[CHANGELOG#2025-05-07]]` for section-anchored links
  68. External links and tool-rendered links (where Obsidian isn't the renderer) stay as standard Markdown.
  69. ### Maps of Content
  70. Two MOCs by design:
  71. 1. **CLAUDE.md**: agent/Claude-facing MOC. Custom instructions body PLUS an index of all Claude reference files in the vault, including subdirectory `CLAUDE-[scope].md` files.
  72. 2. **00-Index.md**: human/domain-facing MOC. Project navigation, key concepts, links into 01-Knowledge.
  73. These do different jobs and should not be merged.
  74. ### Subdirectory CLAUDE files
  75. Subdirectories MAY have their own `CLAUDE-[scope].md` file when:
  76. - The subdirectory has operational rules distinct from the root
  77. - Granular instructions would clutter root CLAUDE.md
  78. - A specific data type or workflow lives in that folder and warrants its own context
  79. When a subdirectory CLAUDE file exists, root CLAUDE.md MUST log it under the "Subdirectory reference files" section with:
  80. - Wikilink to the file
  81. - One-line description of its scope
  82. - When to read it
  83. If no subdirectory CLAUDE files exist, the section in root CLAUDE.md says so explicitly: "No subdirectory-scoped Claude reference files in this vault." This prevents future-you from wondering whether you missed any.
  84. ## Phase 1: Intake
  85. Open with one line, no preamble:
  86. > "Let me build this out. I'll batch the questions so this doesn't feel like a survey."
  87. Then ask in this order, batching 2-4 questions per message based on what's already been said. Skip questions the user has already answered in their initial request.
  88. ### Batch 1: Frame
  89. - What's the project's job, in one sentence?
  90. - Who uses it? (Just you, you + collaborators, client-facing)
  91. - Is it interactive (you chat with Claude), agentic (Claude works autonomously on long tasks), or hybrid?
  92. ### Batch 2: Surface area
  93. - What kinds of tasks will Claude handle? (Research, writing, coding, data, design, comms, analysis)
  94. - What data lives in the project? (Files, CSVs, scraped content, notes, prior outputs)
  95. - What does Claude produce? (Drafts, code, structured data, decisions, briefs)
  96. ### Batch 3: Constraints
  97. - Cadence: daily, weekly, project-bounded, on-demand?
  98. - Sensitivity: privacy, copyright, confidentiality, identifiable persons?
  99. - Existing skills, templates, or prior projects this should plug into?
  100. ### Batch 4: Vault structure (only if non-default)
  101. - Any folder organization that should match an existing vault you have?
  102. - Are there subdirectories that need their own scoped CLAUDE files (e.g., a clients/ folder with per-client rules)?
  103. - Tag taxonomy you want me to seed, or build it as we go?
  104. ### Batch 5: Only if relevant
  105. - Tool / MCP integrations (Gmail, Drive, Calendar, Todoist, custom MCP)?
  106. - Quality bar: rough draft and iterate, or production-ready first pass?
  107. - Anything to deliberately exclude from scope?
  108. Do not run all five batches if the first two settle it. Read the room.
  109. ## Phase 2: Synthesis
  110. After intake, write a one-screen architecture proposal in this exact shape:
  111. ```
  112. Project: [name]
  113. Purpose: [one sentence]
  114. Mode: [interactive / agentic / hybrid]
  115. Cadence: [daily / weekly / on-demand / project-bounded]
  116. Vault structure:
  117. [project-name]/
  118. ├── 00-Index.md
  119. ├── CLAUDE.md
  120. ├── MEMORY.md
  121. ├── [other root reference files]
  122. ├── 01-[Folder]/ ([purpose])
  123. ├── 02-[Folder]/ ([purpose])
  124. └── _templates/, _attachments/
  125. Subdirectory CLAUDE files: [list, or "None. Root CLAUDE.md covers everything."]
  126. Primary tasks:
  127. - [task]
  128. Knowledge base seeds:
  129. - [file/folder, with one-line description]
  130. Sub-agents (if any):
  131. - [name]: [one-line role]
  132. Models:
  133. - Default: [Opus / Sonnet / Haiku]
  134. - Heavy reasoning: [model]
  135. - High-volume: [model]
  136. Skills to surface:
  137. - [skill name]: [why it applies]
  138. Tag taxonomy:
  139. - [seed tags for the vault]
  140. Files to generate: [list]
  141. Files to skip: [with one-line reason]
  142. Open questions / TBDs:
  143. - [item]
  144. ```
  145. End with: "Sign off and I'll generate the vault, or push back on anything."
  146. Wait for explicit sign-off before generating. If the user pushes back, revise and ask again.
  147. ## Phase 3: Generation
  148. Generate the vault using the templates in `templates/`. Each template has placeholder markers in `[BRACKETS]`, frontmatter to populate, and HTML comment guidance (`<!-- ... -->`) that should be removed in the final output.
  149. ### Standard vault structure
  150. ```
  151. [project-name]/
  152. ├── 00-Index.md (project MOC, domain navigation)
  153. ├── CLAUDE.md (custom instructions + Claude-file MOC)
  154. ├── MEMORY.md
  155. ├── HEARTBEAT.md
  156. ├── CHANGELOG.md
  157. ├── DECISIONS.md
  158. ├── MODEL_GUIDE.md
  159. ├── SUBAGENTS.md (omit if no sub-agents)
  160. ├── SETUP.md
  161. ├── SKILLS_REFERENCE.md
  162. ├── README.md
  163. ├── 01-Knowledge/
  164. │ ├── KNOWLEDGE_INDEX.md
  165. │ ├── CLAUDE-knowledge.md (only if subdirectory rules differ from root)
  166. │ └── [domain knowledge files or placeholders]
  167. ├── 02-Working/
  168. │ └── .gitkeep
  169. ├── 03-Outputs/
  170. │ └── .gitkeep
  171. ├── _attachments/
  172. │ └── .gitkeep
  173. └── _templates/
  174. └── note-template.md (sample note template using project frontmatter)
  175. ```
  176. Adjust folder names per project. Numbered prefix pattern stays. Naming: kebab-case lowercase, no spaces. If the user gave a project name, normalize it.
  177. ### Per-file generation rules
  178. **00-Index.md**: Project Map of Content. Domain navigation for humans. Lists key concepts, points into 01-Knowledge, surfaces frequently-used files. Distinct from CLAUDE.md. Template: `templates/00-Index.md.tmpl`.
  179. **CLAUDE.md**: The most important file. Custom instructions body + index of all Claude reference files (root and subdirectory). This is what gets pasted into Cowork's project settings. Spend tokens here. Template: `templates/CLAUDE.md.tmpl`.
  180. **MEMORY.md**: Persistent, low-velocity project context. Read at session start. Not a session log. Template: `templates/MEMORY.md.tmpl`.
  181. **HEARTBEAT.md**: Ephemeral working state. Save state for in-flight work. For interactive-only projects, keep minimal but still create. Template: `templates/HEARTBEAT.md.tmpl`.
  182. **CHANGELOG.md**: RAG-friendly change log. Self-contained chunks. Template: `templates/CHANGELOG.md.tmpl`.
  183. **DECISIONS.md**: ADRs. Pairs with CHANGELOG (what changed) by recording why. Template: `templates/DECISIONS.md.tmpl`.
  184. **MODEL_GUIDE.md**: Task-to-model mapping. Tailor to actual project tasks. Template: `templates/MODEL_GUIDE.md.tmpl`.
  185. **SUBAGENTS.md**: Only generate if the project actually uses sub-agents. Omit entirely otherwise. Template: `templates/SUBAGENTS.md.tmpl`.
  186. **SETUP.md**: Five to eight numbered steps. Includes Cowork setup AND opening the vault in Obsidian. Template: `templates/SETUP.md.tmpl`.
  187. **SKILLS_REFERENCE.md**: Skills relevant to this project, with trigger phrases. Flag gaps. Template: `templates/SKILLS_REFERENCE.md.tmpl`.
  188. **README.md**: Cold-open project overview. Template: `templates/README.md.tmpl`.
  189. **01-Knowledge/KNOWLEDGE_INDEX.md**: Routing layer for the knowledge folder. Template: `templates/knowledge/KNOWLEDGE_INDEX.md.tmpl`.
  190. **Subdirectory CLAUDE-[scope].md files**: Only generate when the project actually warrants scoped instructions. Template: `templates/CLAUDE-scope.md.tmpl`. Every one generated MUST be logged in root CLAUDE.md under "Subdirectory reference files."
  191. **_templates/note-template.md**: A starter note template using the project's frontmatter convention. Helps the user create new notes with consistent metadata.
  192. ### Generation order
  193. 1. README.md (anchors the rest)
  194. 2. CLAUDE.md (most decisions get made here, including the subdirectory file index; generate a placeholder index and fill it in at step 13)
  195. 3. MEMORY.md
  196. 4. MODEL_GUIDE.md
  197. 5. SUBAGENTS.md (if applicable)
  198. 6. SKILLS_REFERENCE.md
  199. 7. KNOWLEDGE_INDEX.md
  200. 8. Any subdirectory `CLAUDE-[scope].md` files
  201. 9. HEARTBEAT.md
  202. 10. CHANGELOG.md (with one initial entry: "Project initialized")
  203. 11. DECISIONS.md (with one initial entry: the architecture choices made during synthesis)
  204. 12. 00-Index.md (last because it links to everything else)
  205. 13. SETUP.md
  206. 14. **Final pass**: revisit CLAUDE.md and populate the "Subdirectory reference files" section with wikilinks to every `CLAUDE-[scope].md` actually generated.
  207. ### Wikilink and frontmatter discipline during generation
  208. - All file-to-file references inside the vault use wikilinks (`[[FILENAME]]`).
  209. - Every generated `.md` file has a populated YAML frontmatter block at the top.
  210. - `created` and `updated` dates are today's date.
  211. - Tags should be specific to the project, not just generic ("claude", "memory"). Also tag with the project domain ("research", "outreach", "design", etc.) to make cross-project graph view useful.
  212. ## Phase 4: Delivery
  213. Bundle the vault into a single zip and present it. Tight summary:
  214. - Project name and one-line purpose
  215. - Three files to look at first (usually CLAUDE.md, MEMORY.md, MODEL_GUIDE.md)
  216. - Any `[TBD]` markers that need user input
  217. - Suggested first-run task to validate setup
  218. - One line on how to open in Obsidian: "Open Obsidian → Open folder as vault → point at `[project-name]/`"
  219. End the response there. Don't pad.
  220. ## Scope-shift path
  221. If the user says an existing project's scope has shifted, do not regenerate from scratch:
  222. 1. Ask the user to share the current CLAUDE.md, MEMORY.md, and CHANGELOG.md (or read them).
  223. 2. Re-interview only on the dimensions that changed.
  224. 3. Update only the affected files.
  225. 4. Append a CHANGELOG entry documenting the shift.
  226. 5. Append a DECISIONS entry if the change reflects a real architectural choice.
  227. 6. Update MEMORY.md only if the change is durable.
  228. 7. If a subdirectory CLAUDE file is added or removed, update root CLAUDE.md's subdirectory index.
  229. 8. Deliver the updated files plus a diff summary.
  230. ## Anti-patterns
  231. - Don't ask all questions at once.
  232. - Don't generate before sign-off.
  233. - Don't fabricate domain detail. Use `[TBD]` markers.
  234. - Don't include templates the project doesn't need.
  235. - Don't paraphrase the user's existing MEMORY or custom instructions into the new project. Copy verbatim or link.
  236. - Don't pad MODEL_GUIDE.md with all four models if the project only uses two.
  237. - Don't include emojis or asterisk emotes anywhere in output.
  238. - Don't generate sub-agents for the sake of having sub-agents.
  239. - Don't generate subdirectory CLAUDE files speculatively. Only when the project demonstrably needs them.
  240. - Don't merge CLAUDE.md and 00-Index.md. They serve different audiences.
  241. - Don't use Markdown links for in-vault file references. Use wikilinks.
  242. - Don't skip frontmatter to save lines. It's load-bearing for Obsidian search and Dataview.