Move the dots-dev skill from machine-local ~/.claude/skills/ into the repo at .claude/skills/dots-dev/ so it travels with a clone. Update the CLAUDE.md per-machine setup note to reflect that the skill no longer needs manual placement; unity-mcp-skill and native memory/ stay local. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.4 KiB
Memory & Documentation Protocol
How /dots-dev reads and writes knowledge. Four layers, each with a distinct job. The in-repo vault is the single source of human-facing, cross-machine truth; everything else serves or accelerates it.
The four layers
| Layer | Holds | Interface | Crosses machines? |
|---|---|---|---|
In-repo Obsidian vault <repo>/Docs/Vault/ |
Design docs, decision records, session logs, roadmap — the canonical human-facing record | obsidian-cli skill (read/create/search); Obsidian REST MCP optional | Yes (committed to git) |
| basic-memory MCP | Semantic + wikilink-graph recall over the same vault files (so the agent finds knowledge without grepping) | basic-memory MCP tools |
Yes (indexes the committed vault) |
| serena MCP | C# symbol-level code navigation (find_symbol, references, edit-by-symbol) of a growing codebase |
serena MCP tools |
N/A (derived from code) |
| Native Claude memory | Machine-local facts, feedback, working-style; the per-project memory/ dir + MEMORY.md + CLAUDE.md |
Write tool / memory files | No — local to each machine |
Cross-machine rule: anything that must be true on both your Mac and Windows machines goes in the vault (or CLAUDE.md, which is also committed). Native memory/ is convenience only — never the sole home of a decision or design fact.
Which tool when
- "Where is X defined / who calls it?" → serena
find_symbol/ references. Fall back toGlob/Grepif serena's C# LSP stalls on the Unity solution. - "What did we decide about Y / how does system Z work conceptually?" →
basic-memoryrecall, then obsidian-cli to read the doc. - "Find the literal string/asset GUID" →
Grep/Glob. - "What's the current DOTS/Netcode API for…?" → context7 (NOT memory). See
context7-libraries.md. - "What conventions/preferences apply here?" →
CLAUDE.md+ native memory.
Session bookends (non-negotiable for non-trivial work)
Start — scan (read-only):
CLAUDE.md(repo root).- Vault map of content + latest session log (
07_Sessions/<year>/). - Open decision records (
_Decisions/status: proposed) + roadmap/backlog. basic-memoryrecall on the goal's nouns; nativeMEMORY.md+memory/.
End — update (Phase 8):
- Session log written to the vault (obsidian-cli).
- Firm decisions → decision records, back-referenced from the log.
- Touched design docs edited in place (wikilink, don't duplicate into the log).
- Durable knowledge →
basic-memorynote in the vault; machine-local facts → nativeMEMORY.md.
If the operator says "skip the protocol", still write a one-line stub session log so the gap is visible, and record the preference as a native feedback memory.
Fallbacks
- No obsidian-cli configured → direct
Read/Writeon<repo>/Docs/Vault/**(it's plain markdown; Obsidian/basic-memory pick up changes on next index). - basic-memory down → obsidian-cli search +
Grepover the vault. - serena C# unavailable →
Glob/Grep, orclaude-context(local LanceDB) if it was added as the documented fallback.
Setup pointer
The vault scaffold, the basic-memory/serena .mcp.json entries (using ${CLAUDE_PROJECT_DIR}), and CLAUDE.md are created by the one-time project setup task, not by this skill. If this skill runs and the vault or memory MCPs are missing, it notes the gap and points to that setup task.