@archznn/crewloop-skills 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/README.md +4 -16
  2. package/package.json +1 -2
  3. package/packages/cli/dist/agents.js +1 -1
  4. package/packages/cli/dist/agents.js.map +1 -1
  5. package/packages/cli/dist/cli.d.ts.map +1 -1
  6. package/packages/cli/dist/cli.js +2 -30
  7. package/packages/cli/dist/cli.js.map +1 -1
  8. package/packages/cli/dist/hooks.d.ts +6 -4
  9. package/packages/cli/dist/hooks.d.ts.map +1 -1
  10. package/packages/cli/dist/hooks.js +250 -98
  11. package/packages/cli/dist/hooks.js.map +1 -1
  12. package/packages/cli/dist/tests/hooks.test.js +245 -33
  13. package/packages/cli/dist/tests/hooks.test.js.map +1 -1
  14. package/references/conventions.md +1 -10
  15. package/references/workflow.md +1 -1
  16. package/servers/dashboard/README.md +55 -1
  17. package/servers/dashboard/dist/adapters/agy.d.ts +19 -0
  18. package/servers/dashboard/dist/adapters/agy.d.ts.map +1 -0
  19. package/servers/dashboard/dist/adapters/agy.js +108 -0
  20. package/servers/dashboard/dist/adapters/agy.js.map +1 -0
  21. package/servers/dashboard/dist/adapters/codex.d.ts.map +1 -1
  22. package/servers/dashboard/dist/adapters/codex.js +2 -0
  23. package/servers/dashboard/dist/adapters/codex.js.map +1 -1
  24. package/servers/dashboard/dist/adapters/kimi.d.ts +1 -1
  25. package/servers/dashboard/dist/adapters/kimi.d.ts.map +1 -1
  26. package/servers/dashboard/dist/adapters/kimi.js +9 -0
  27. package/servers/dashboard/dist/adapters/kimi.js.map +1 -1
  28. package/servers/dashboard/dist/adapters/shim.d.ts +1 -1
  29. package/servers/dashboard/dist/adapters/shim.d.ts.map +1 -1
  30. package/servers/dashboard/dist/adapters/shim.js +32 -11
  31. package/servers/dashboard/dist/adapters/shim.js.map +1 -1
  32. package/servers/dashboard/dist/adapters/shim.test.js +46 -4
  33. package/servers/dashboard/dist/adapters/shim.test.js.map +1 -1
  34. package/servers/dashboard/dist/lib/constants.d.ts +5 -0
  35. package/servers/dashboard/dist/lib/constants.d.ts.map +1 -0
  36. package/servers/dashboard/dist/lib/constants.js +46 -0
  37. package/servers/dashboard/dist/lib/constants.js.map +1 -0
  38. package/servers/dashboard/dist/lib/format.d.ts +6 -0
  39. package/servers/dashboard/dist/lib/format.d.ts.map +1 -0
  40. package/servers/dashboard/dist/lib/format.js +52 -0
  41. package/servers/dashboard/dist/lib/format.js.map +1 -0
  42. package/servers/dashboard/dist/lib/graph.d.ts +22 -0
  43. package/servers/dashboard/dist/lib/graph.d.ts.map +1 -0
  44. package/servers/dashboard/dist/lib/graph.js +45 -0
  45. package/servers/dashboard/dist/lib/graph.js.map +1 -0
  46. package/servers/dashboard/dist/lib/invocations.d.ts +32 -0
  47. package/servers/dashboard/dist/lib/invocations.d.ts.map +1 -0
  48. package/servers/dashboard/dist/lib/invocations.js +135 -0
  49. package/servers/dashboard/dist/lib/invocations.js.map +1 -0
  50. package/servers/dashboard/dist/lib/invocations.test.d.ts +2 -0
  51. package/servers/dashboard/dist/lib/invocations.test.d.ts.map +1 -0
  52. package/servers/dashboard/dist/lib/invocations.test.js +68 -0
  53. package/servers/dashboard/dist/lib/invocations.test.js.map +1 -0
  54. package/servers/dashboard/dist/lib/paths.d.ts +2 -0
  55. package/servers/dashboard/dist/lib/paths.d.ts.map +1 -0
  56. package/servers/dashboard/dist/lib/paths.js +40 -0
  57. package/servers/dashboard/dist/lib/paths.js.map +1 -0
  58. package/servers/dashboard/dist/presenter.d.ts.map +1 -1
  59. package/servers/dashboard/dist/presenter.js +2 -0
  60. package/servers/dashboard/dist/presenter.js.map +1 -1
  61. package/servers/dashboard/dist/public/assets/index-DjmMKbPN.css +1 -0
  62. package/servers/dashboard/dist/public/assets/index-DzOqMleZ.js +5323 -0
  63. package/servers/dashboard/dist/public/assets/index-DzOqMleZ.js.map +1 -0
  64. package/servers/dashboard/dist/public/index.html +16 -0
  65. package/servers/dashboard/dist/server.d.ts.map +1 -1
  66. package/servers/dashboard/dist/server.js +5 -1
  67. package/servers/dashboard/dist/server.js.map +1 -1
  68. package/servers/dashboard/dist/skills/infer.d.ts.map +1 -1
  69. package/servers/dashboard/dist/skills/infer.js +0 -6
  70. package/servers/dashboard/dist/skills/infer.js.map +1 -1
  71. package/servers/dashboard/dist/skills/infer.test.js +10 -3
  72. package/servers/dashboard/dist/skills/infer.test.js.map +1 -1
  73. package/servers/dashboard/dist/skills/mapping.d.ts +0 -3
  74. package/servers/dashboard/dist/skills/mapping.d.ts.map +1 -1
  75. package/servers/dashboard/dist/skills/mapping.js +0 -18
  76. package/servers/dashboard/dist/skills/mapping.js.map +1 -1
  77. package/servers/dashboard/dist/skills/registry.d.ts.map +1 -1
  78. package/servers/dashboard/dist/skills/registry.js +0 -1
  79. package/servers/dashboard/dist/skills/registry.js.map +1 -1
  80. package/servers/dashboard/dist/tests/adapters.test.d.ts +2 -0
  81. package/servers/dashboard/dist/tests/adapters.test.d.ts.map +1 -0
  82. package/servers/dashboard/dist/tests/adapters.test.js +180 -0
  83. package/servers/dashboard/dist/tests/adapters.test.js.map +1 -0
  84. package/servers/dashboard/dist/tests/lib-helpers.test.d.ts +2 -0
  85. package/servers/dashboard/dist/tests/lib-helpers.test.d.ts.map +1 -0
  86. package/servers/dashboard/dist/tests/lib-helpers.test.js +123 -0
  87. package/servers/dashboard/dist/tests/lib-helpers.test.js.map +1 -0
  88. package/servers/dashboard/dist/tests/shim.test.js +88 -2
  89. package/servers/dashboard/dist/tests/shim.test.js.map +1 -1
  90. package/servers/dashboard/dist/types.d.ts +5 -2
  91. package/servers/dashboard/dist/types.d.ts.map +1 -1
  92. package/servers/dashboard/package.json +22 -5
  93. package/servers/dashboard/src/adapters/agy.ts +136 -0
  94. package/servers/dashboard/src/adapters/codex.ts +2 -0
  95. package/servers/dashboard/src/adapters/kimi.ts +11 -1
  96. package/servers/dashboard/src/adapters/shim.test.ts +57 -4
  97. package/servers/dashboard/src/adapters/shim.ts +31 -11
  98. package/servers/dashboard/src/lib/constants.ts +44 -0
  99. package/servers/dashboard/src/lib/format.ts +44 -0
  100. package/servers/dashboard/src/lib/graph.ts +69 -0
  101. package/servers/dashboard/src/lib/invocations.test.ts +70 -0
  102. package/servers/dashboard/src/lib/invocations.ts +172 -0
  103. package/servers/dashboard/src/lib/paths.ts +35 -0
  104. package/servers/dashboard/src/presenter.ts +2 -0
  105. package/servers/dashboard/src/server.ts +5 -1
  106. package/servers/dashboard/src/skills/infer.test.ts +11 -3
  107. package/servers/dashboard/src/skills/infer.ts +1 -8
  108. package/servers/dashboard/src/skills/mapping.ts +0 -20
  109. package/servers/dashboard/src/skills/registry.ts +0 -1
  110. package/servers/dashboard/src/tests/adapters.test.ts +198 -0
  111. package/servers/dashboard/src/tests/lib-helpers.test.ts +133 -0
  112. package/servers/dashboard/src/tests/shim.test.ts +110 -2
  113. package/servers/dashboard/src/types.ts +5 -3
  114. package/servers/dashboard/ui/index.html +15 -0
  115. package/servers/dashboard/ui/postcss.config.js +6 -0
  116. package/servers/dashboard/ui/src/App.tsx +360 -0
  117. package/servers/dashboard/ui/src/components/ActiveSkillPanel.tsx +69 -0
  118. package/servers/dashboard/ui/src/components/ActivityGraph.tsx +74 -0
  119. package/servers/dashboard/ui/src/components/CommandPalette.tsx +200 -0
  120. package/servers/dashboard/ui/src/components/FileActivity.tsx +20 -0
  121. package/servers/dashboard/ui/src/components/FileDiff.tsx +68 -0
  122. package/servers/dashboard/ui/src/components/FileList.tsx +64 -0
  123. package/servers/dashboard/ui/src/components/FilterBar.tsx +208 -0
  124. package/servers/dashboard/ui/src/components/Network3D.tsx +178 -0
  125. package/servers/dashboard/ui/src/components/SessionSelector.tsx +95 -0
  126. package/servers/dashboard/ui/src/components/Sidebar.tsx +110 -0
  127. package/servers/dashboard/ui/src/components/TelemetryPanel.tsx +57 -0
  128. package/servers/dashboard/ui/src/components/Timeline.tsx +57 -0
  129. package/servers/dashboard/ui/src/components/TimelineRow.tsx +112 -0
  130. package/servers/dashboard/ui/src/components/TopBar.tsx +116 -0
  131. package/servers/dashboard/ui/src/components/ViewHeader.tsx +19 -0
  132. package/servers/dashboard/ui/src/components/ui/Icon.tsx +105 -0
  133. package/servers/dashboard/ui/src/components/ui/StatusBadge.tsx +19 -0
  134. package/servers/dashboard/ui/src/components/views/FilesView.tsx +23 -0
  135. package/servers/dashboard/ui/src/components/views/NetworkView.tsx +20 -0
  136. package/servers/dashboard/ui/src/components/views/Overview.tsx +135 -0
  137. package/servers/dashboard/ui/src/components/views/SessionsView.tsx +84 -0
  138. package/servers/dashboard/ui/src/components/views/SettingsView.tsx +138 -0
  139. package/servers/dashboard/ui/src/components/views/SkillsView.tsx +92 -0
  140. package/servers/dashboard/ui/src/components/views/TimelineView.tsx +46 -0
  141. package/servers/dashboard/ui/src/contexts/FilterContext.tsx +41 -0
  142. package/servers/dashboard/ui/src/contexts/PinnedSessionsContext.tsx +80 -0
  143. package/servers/dashboard/ui/src/contexts/SettingsContext.tsx +60 -0
  144. package/servers/dashboard/ui/src/hooks/useCommandPalette.ts +36 -0
  145. package/servers/dashboard/ui/src/hooks/useKeyboardShortcut.ts +38 -0
  146. package/servers/dashboard/ui/src/hooks/useNow.ts +12 -0
  147. package/servers/dashboard/ui/src/hooks/useReducedMotion.ts +15 -0
  148. package/servers/dashboard/ui/src/hooks/useSessions.ts +64 -0
  149. package/servers/dashboard/ui/src/hooks/useTheme.ts +30 -0
  150. package/servers/dashboard/ui/src/hooks/useViewport.ts +19 -0
  151. package/servers/dashboard/ui/src/hooks/useWebSocket.ts +118 -0
  152. package/servers/dashboard/ui/src/lib/export.test.ts +33 -0
  153. package/servers/dashboard/ui/src/lib/export.ts +39 -0
  154. package/servers/dashboard/ui/src/lib/filter.test.ts +95 -0
  155. package/servers/dashboard/ui/src/lib/filter.ts +178 -0
  156. package/servers/dashboard/ui/src/lib/format.test.ts +25 -0
  157. package/servers/dashboard/ui/src/lib/search.test.ts +52 -0
  158. package/servers/dashboard/ui/src/lib/search.ts +60 -0
  159. package/servers/dashboard/ui/src/lib/settings.test.ts +50 -0
  160. package/servers/dashboard/ui/src/lib/settings.ts +56 -0
  161. package/servers/dashboard/ui/src/lib/types.ts +124 -0
  162. package/servers/dashboard/ui/src/main.tsx +19 -0
  163. package/servers/dashboard/ui/src/styles/index.css +155 -0
  164. package/servers/dashboard/ui/tailwind.config.js +45 -0
  165. package/servers/dashboard/ui/tsconfig.json +33 -0
  166. package/servers/dashboard/ui/tsconfig.node.json +10 -0
  167. package/servers/dashboard/ui/vite.config.ts +37 -0
  168. package/servers/dashboard/ui/vitest.config.ts +8 -0
  169. package/skills/accessibility-auditor/SKILL.md +0 -20
  170. package/skills/architect/SKILL.md +0 -45
  171. package/skills/designer/SKILL.md +0 -30
  172. package/skills/docs-writer/SKILL.md +0 -13
  173. package/skills/engineer/SKILL.md +0 -30
  174. package/skills/maintainer/SKILL.md +0 -20
  175. package/skills/orchestrator/SKILL.md +0 -13
  176. package/skills/product-manager/SKILL.md +0 -20
  177. package/skills/researcher/SKILL.md +0 -20
  178. package/skills/reviewer/SKILL.md +0 -30
  179. package/skills/security-guard/SKILL.md +0 -20
  180. package/skills/shipper/SKILL.md +0 -33
  181. package/skills/tester/SKILL.md +0 -20
  182. package/packages/cli/dist/mcp.d.ts +0 -28
  183. package/packages/cli/dist/mcp.d.ts.map +0 -1
  184. package/packages/cli/dist/mcp.js +0 -148
  185. package/packages/cli/dist/mcp.js.map +0 -1
  186. package/packages/cli/dist/tests/mcp.test.d.ts +0 -2
  187. package/packages/cli/dist/tests/mcp.test.d.ts.map +0 -1
  188. package/packages/cli/dist/tests/mcp.test.js +0 -232
  189. package/packages/cli/dist/tests/mcp.test.js.map +0 -1
  190. package/references/obsidian-mcp-usage.md +0 -190
  191. package/servers/dashboard/public/app.js +0 -516
  192. package/servers/dashboard/public/index.html +0 -96
  193. package/servers/dashboard/public/styles.css +0 -819
  194. package/servers/obsidian-mcp/README.md +0 -82
  195. package/servers/obsidian-mcp/pyproject.toml +0 -32
  196. package/servers/obsidian-mcp/src/obsidian_mcp/__init__.py +0 -0
  197. package/servers/obsidian-mcp/src/obsidian_mcp/config.py +0 -47
  198. package/servers/obsidian-mcp/src/obsidian_mcp/indexer/__init__.py +0 -0
  199. package/servers/obsidian-mcp/src/obsidian_mcp/indexer/embeddings.py +0 -105
  200. package/servers/obsidian-mcp/src/obsidian_mcp/indexer/indexer.py +0 -79
  201. package/servers/obsidian-mcp/src/obsidian_mcp/indexer/store.py +0 -141
  202. package/servers/obsidian-mcp/src/obsidian_mcp/indexer/sync.py +0 -37
  203. package/servers/obsidian-mcp/src/obsidian_mcp/learning/__init__.py +0 -0
  204. package/servers/obsidian-mcp/src/obsidian_mcp/learning/detector.py +0 -66
  205. package/servers/obsidian-mcp/src/obsidian_mcp/learning/note_generator.py +0 -40
  206. package/servers/obsidian-mcp/src/obsidian_mcp/main.py +0 -4
  207. package/servers/obsidian-mcp/src/obsidian_mcp/models.py +0 -42
  208. package/servers/obsidian-mcp/src/obsidian_mcp/privacy/__init__.py +0 -0
  209. package/servers/obsidian-mcp/src/obsidian_mcp/privacy/filter.py +0 -68
  210. package/servers/obsidian-mcp/src/obsidian_mcp/rag/__init__.py +0 -0
  211. package/servers/obsidian-mcp/src/obsidian_mcp/rag/engine.py +0 -50
  212. package/servers/obsidian-mcp/src/obsidian_mcp/rag/graph_search.py +0 -55
  213. package/servers/obsidian-mcp/src/obsidian_mcp/rag/text_search.py +0 -37
  214. package/servers/obsidian-mcp/src/obsidian_mcp/rag/vector_search.py +0 -118
  215. package/servers/obsidian-mcp/src/obsidian_mcp/server.py +0 -61
  216. package/servers/obsidian-mcp/src/obsidian_mcp/tools/__init__.py +0 -0
  217. package/servers/obsidian-mcp/src/obsidian_mcp/tools/create.py +0 -43
  218. package/servers/obsidian-mcp/src/obsidian_mcp/tools/delete.py +0 -16
  219. package/servers/obsidian-mcp/src/obsidian_mcp/tools/learn.py +0 -42
  220. package/servers/obsidian-mcp/src/obsidian_mcp/tools/list.py +0 -16
  221. package/servers/obsidian-mcp/src/obsidian_mcp/tools/read.py +0 -15
  222. package/servers/obsidian-mcp/src/obsidian_mcp/tools/registry.py +0 -130
  223. package/servers/obsidian-mcp/src/obsidian_mcp/tools/related.py +0 -20
  224. package/servers/obsidian-mcp/src/obsidian_mcp/tools/search.py +0 -26
  225. package/servers/obsidian-mcp/src/obsidian_mcp/tools/sync.py +0 -22
  226. package/servers/obsidian-mcp/src/obsidian_mcp/tools/update.py +0 -34
  227. package/servers/obsidian-mcp/src/obsidian_mcp/vault/__init__.py +0 -0
  228. package/servers/obsidian-mcp/src/obsidian_mcp/vault/parser.py +0 -82
  229. package/servers/obsidian-mcp/src/obsidian_mcp/vault/repository.py +0 -68
  230. package/servers/obsidian-mcp/src/obsidian_mcp/vault/writer.py +0 -61
  231. package/servers/obsidian-mcp/tests/conftest.py +0 -39
  232. package/servers/obsidian-mcp/tests/test_async_tools.py +0 -87
  233. package/servers/obsidian-mcp/tests/test_edge_cases.py +0 -59
  234. package/servers/obsidian-mcp/tests/test_indexer.py +0 -27
  235. package/servers/obsidian-mcp/tests/test_integration.py +0 -90
  236. package/servers/obsidian-mcp/tests/test_learning.py +0 -34
  237. package/servers/obsidian-mcp/tests/test_privacy.py +0 -31
  238. package/servers/obsidian-mcp/tests/test_privacy_config.py +0 -44
  239. package/servers/obsidian-mcp/tests/test_rag.py +0 -64
  240. package/servers/obsidian-mcp/tests/test_read_raw.py +0 -37
  241. package/servers/obsidian-mcp/tests/test_tfidf_fallback.py +0 -54
  242. package/servers/obsidian-mcp/tests/test_tools.py +0 -108
  243. package/servers/obsidian-mcp/tests/test_vault.py +0 -103
  244. package/servers/obsidian-mcp/tests/test_writer.py +0 -139
  245. package/skills/obsidian-second-brain/SKILL.md +0 -298
@@ -1,298 +0,0 @@
1
- ---
2
- name: obsidian-second-brain
3
- description: Memory and RAG skill for the loop-engineering-agents bundle. Use when a local Obsidian vault at ~/.lea is connected via obsidian-mcp. Trigger on knowledge retrieval, prior decisions, durable knowledge, session outcomes, user profiles, summaries, dashboards, or any task needing persisted context.
4
- ---
5
-
6
- # Obsidian Second Brain — Layered Memory & RAG
7
-
8
- ## ROLE
9
-
10
- You are the memory layer for the Loop Engineering Agents bundle. Your job is to make sure the agent uses the local Obsidian MCP server (`obsidian-mcp`) to retrieve prior knowledge and persist new learnings following the three-layer memory architecture.
11
-
12
- You do NOT write implementation code. You do NOT modify the MCP server. You orchestrate calls to the MCP tools so the agent behaves like it has a long-term memory.
13
-
14
- > **Reference:** for the full MCP tool reference, setup instructions, and advanced workflows, see [`references/obsidian-mcp-usage.md`](references/obsidian-mcp-usage.md).
15
-
16
- > **Invocation:** This skill must be invoked via the `Skill` tool. Other skills must never read or write vault files directly with `Read`, `Edit`, `Write`, or `Bash`.
17
-
18
- ---
19
-
20
- ## MODE
21
-
22
- **ASSIST only.** Guide the agent to search, read, learn, and summarize via MCP tools.
23
-
24
- **NEVER skip onboarding.** Read `AGENT.md` once per session on first vault use, and read `MEMORY.md` at the start of every major task.
25
-
26
- **NEVER skip a search** when the user's question could be answered by notes in `~/.lea` or the indexed skill bundle.
27
-
28
- **NEVER persist sensitive data** such as secrets, API keys, passwords, `.env` contents, or PII in the vault.
29
-
30
- **When done, present navigation options** — After using this skill, return to the standard letter-based navigation menu.
31
-
32
- ---
33
-
34
- ## FALLBACK / NO VAULT
35
-
36
- If the Obsidian MCP server is unavailable, or if `~/.lea` does not exist, treat the vault as optional infrastructure and **continue the task without it**.
37
-
38
- 1. **Detect unavailability** — If the MCP tools (`read_note`, `search_notes`, `create_note`, `update_note`, etc.) are not registered or return an error, stop attempting vault operations.
39
- 2. **Skip persistence** — Do not try to read `AGENT.md`, `MEMORY.md`, or any other vault note. Do not create or update notes.
40
- 3. **Continue in-session** — Use the current conversation context to answer or proceed with the task.
41
- 4. **Inform the user briefly** — If vault persistence was expected but skipped, say so in one line (e.g., "Obsidian vault not available; continuing without persisted memory").
42
-
43
- Never block a workflow because the vault is missing. The vault is a performance enhancement, not a hard dependency.
44
-
45
- ---
46
-
47
- ## VAULT ARCHITECTURE
48
-
49
- The vault at `~/.lea` uses a three-layer memory model. Every read and write must target the correct layer.
50
-
51
- ```
52
- ~/.lea/
53
- ├── AGENT.md # Entry point: read first
54
- ├── MEMORY.md # Curated memory: read at task start
55
- ├── logs/ # Working logs: raw session logs
56
- ├── Memory/ # Durable user profile and preferences
57
- ├── Knowledge/ # Long-lived technical guides and decisions
58
- ├── Journal/ # Important session logs and dashboards
59
- ├── Notes/ # Temporary notes and drafts
60
- └── _Inbox/ # Agent proposals before promotion
61
- ```
62
-
63
- > **Note:** `logs/` (lowercase) holds raw, short-lived session logs. `Memory/` (capital M) holds curated, durable user profile facts and preferences. `logs/` is created automatically when the first log note is written, so it may not exist in a freshly initialized vault.
64
-
65
- ### Layer Selection Decision Tree
66
-
67
- ```
68
- User asks...
69
-
70
- ├─ First vault use this session
71
- │ → read_note("AGENT.md")
72
- │ → read_note("MEMORY.md")
73
-
74
- ├─ Start of major task
75
- │ → read_note("MEMORY.md")
76
-
77
- ├─ "what did we decide about X?" / "remind me of Y"
78
- │ → sync_from_bundle (once)
79
- │ → read_note("MEMORY.md")
80
- │ → search_notes(X, hybrid) targeting Knowledge/ and Journal/
81
- │ → read_note(best_match) if score > 0.3
82
- │ → answer + cite note path
83
-
84
- ├─ "how is X related to Y?" / "what connects X and Y?"
85
- │ → read_note("MEMORY.md")
86
- │ → search_notes(X) + search_notes(Y)
87
- │ → get_related_notes(best_match)
88
- │ → summarize graph
89
-
90
- ├─ "persist/save this: ..." or a clear new concept/decision
91
- │ → privacy_check
92
- │ → decide layer:
93
- │ user profile/fact → Memory/
94
- │ durable knowledge → Knowledge/
95
- │ important session → Journal/
96
- │ temporary → Notes/
97
- │ uncertain → _Inbox/
98
- │ → create_note(path, content) or learn_from_text(summary)
99
- │ → confirm path
100
-
101
- ├─ Current conversation log / raw context
102
- │ → append to logs/YYYY-MM-DD-HHMM.md
103
-
104
- ├─ "dashboard/status/summary of project"
105
- │ → read_note("MEMORY.md")
106
- │ → list_notes + search_notes
107
- │ → create/update Journal/project-status.md or Journal/dashboard-name.md
108
- │ → read back path
109
-
110
- └─ general knowledge, no vault dependency
111
- → answer directly
112
- ```
113
-
114
- ### Layer Semantics
115
-
116
- | Layer | Path | Volatility | Read Frequency | Contents |
117
- |-------|------|------------|----------------|----------|
118
- | Agent entry | `AGENT.md` | Low | Once per session | Navigation rules for the vault. |
119
- | Curated memory | `MEMORY.md` | Medium | Every major task | Distilled user/project context, ~500 words. |
120
- | Working logs | `logs/` | High | Last 1-2 days | Raw session logs (`YYYY-MM-DD-HHMM.md`). |
121
- | User profile | `Memory/` | Low | On demand | User facts, preferences, goals. |
122
- | Knowledge | `Knowledge/` | Low | On demand | Technical guides, decisions, reusable docs. |
123
- | Journal | `Journal/` | Medium | On demand | Session outcomes, briefs, dashboards. |
124
- | Notes | `Notes/` | High | On demand | Temporary scratchpads and drafts. |
125
- | Inbox | `_Inbox/` | High | During heartbeat | Proposed canonical notes. |
126
-
127
- ### Heartbeat / Distillation Flow
128
-
129
- Every 2-4 sessions, or at the end of a significant task:
130
-
131
- 1. Read recent files in `logs/`.
132
- 2. Identify durable facts and short-term context.
133
- 3. Update `MEMORY.md` (keep under ~500 words).
134
- 4. Promote `_Inbox/` notes to `Memory/`, `Knowledge/`, `Journal/`, or `Notes/`.
135
- 5. Archive or delete obsolete raw logs.
136
-
137
- ---
138
-
139
- ## MCP Tools Reference
140
-
141
- | Tool | When to use |
142
- |------|-------------|
143
- | `sync_from_bundle` | Re-indexes the skill bundle and local vault; call once per session before the first search. |
144
- | `read_note` | Read `AGENT.md`, `MEMORY.md`, or a specific note. |
145
- | `search_notes` | Before answering substantive questions. Prefer `mode: "hybrid"`. |
146
- | `learn_from_text` | After a new concept or decision emerges. Review target layer. |
147
- | `create_note` | Create a new note in the correct layer. |
148
- | `update_note` | Append or replace content. Use `append` for working logs (`logs/`) and `MEMORY.md`. |
149
- | `get_related_notes` | Explore links and graph relationships. |
150
- | `list_notes` | Discover existing note collections or build dashboards. |
151
-
152
- ### Definitions
153
-
154
- - `sync_from_bundle`: re-indexes the skill bundle and the local vault. Call once per session before the first substantive search. Takes no arguments.
155
- - Search score: a normalized relevance score returned by `search_notes`. Matches above `0.3` are usually worth reading; lower scores are typically noise.
156
- - Major task: any task involving specs, architecture, implementation, durable knowledge, or multi-step reasoning.
157
- - Heartbeat: a distillation routine run every 2-4 sessions (or at the end of a significant task) to promote raw logs into `MEMORY.md` and structured layers.
158
-
159
- ---
160
-
161
- ## RESPONSE RULES
162
-
163
- - **Onboard first, answer second.** Read `AGENT.md` and `MEMORY.md` before substantive vault work.
164
- - **Search before answering.** Do not rely only on the current conversation context.
165
- - **Target the right layer.** Writing a note to the wrong folder wastes future tokens.
166
- - **Learn continuously.** End significant tasks by persisting new concepts or decisions to the appropriate layer.
167
- - **Use English note paths and content.** Folder names and note text must be in English.
168
- - **Respect privacy.** Run every piece of content through the mental filter: would this be safe to write in a note? If not, skip it.
169
- - **Reference sources.** When answering from a note, mention the note path so the user can verify in Obsidian.
170
- - **Keep the vault clean.** Avoid creating duplicate notes; search first to see if a concept already exists.
171
- - **Prefer hybrid search** for broad recall, then narrow to exact matches with `read_note`.
172
-
173
- ---
174
-
175
- ## Examples
176
-
177
- ### Example 1 — retrieve a decision
178
- User: "What did we decide about the vault path?"
179
- Agent:
180
- 1. `read_note("AGENT.md")`
181
- 2. `read_note("MEMORY.md")`
182
- 3. `search_notes("vault path", mode="hybrid")` targeting `Knowledge/`
183
- 4. `read_note("Knowledge/vault-local-path.md")` if it exists.
184
- 5. Answer: "We kept the vault local at `~/.lea` with SQLite for the index. (Source: `Knowledge/vault-local-path.md`)"
185
-
186
- ### Example 2 — persist a concept
187
- User: "Graph RAG combines vector search with navigation through Obsidian links."
188
- Agent:
189
- 1. Check privacy (safe).
190
- 2. Decide layer: durable knowledge → `Knowledge/`.
191
- 3. `create_note("Knowledge/graph-rag.md", content)` or `learn_from_text("Graph RAG combines vector search with navigation through Obsidian links.")`.
192
- 4. Answer: "Concept saved to `Knowledge/graph-rag.md`."
193
-
194
- ### Example 3 — explore relationships
195
- User: "How does second brain relate to MCP integration?"
196
- Agent:
197
- 1. `read_note("MEMORY.md")`
198
- 2. `search_notes("second brain", mode="hybrid")`
199
- 3. `search_notes("mcp integration", mode="hybrid")`
200
- 4. `get_related_notes("Knowledge/second-brain.md")`
201
- 5. Summarize backlinks and forward links.
202
-
203
- ### Example 4 — project status dashboard
204
- User: "Create a project summary."
205
- Agent:
206
- 1. `read_note("MEMORY.md")`
207
- 2. `list_notes()`
208
- 3. `search_notes("*", mode="text")` limited to 20 results.
209
- 4. `create_note` at `Journal/project-status.md` with sections:
210
- - Active priorities
211
- - Recent decisions
212
- - Recent concepts
213
- - Open questions
214
- 5. Answer: "Dashboard created at `Journal/project-status.md`."
215
-
216
- ### Example 5 — heartbeat distillation
217
- Agent (during heartbeat):
218
- 1. `list_notes("logs/")`
219
- 2. Read last 1-2 `logs/YYYY-MM-DD-HHMM.md` files.
220
- 3. Update `MEMORY.md` with distilled active context.
221
- 4. Process `_Inbox/` notes and promote durable ones.
222
- 5. Answer: "Heartbeat complete. Updated `MEMORY.md` and promoted 2 notes from `_Inbox/`."
223
-
224
- ### Example 6 — persist a user preference
225
- User: "I prefer Portuguese for conversation but English for vault notes."
226
- Agent:
227
- 1. Privacy check (safe).
228
- 2. Decide layer: user profile → `Memory/`.
229
- 3. `create_note("Memory/user-language-preferences.md", content)`.
230
- 4. Answer: "Preference saved to `Memory/user-language-preferences.md`."
231
-
232
- ### Example 7 — temporary research scratchpad
233
- User: "Collect articles about vector databases for now."
234
- Agent:
235
- 1. Privacy check (safe).
236
- 2. Decide layer: temporary → `Notes/`.
237
- 3. `create_note("Notes/vector-database-research.md", content)`.
238
- 4. Answer: "Scratchpad created at `Notes/vector-database-research.md`."
239
-
240
- ### Example 8 — propose a canonical note
241
- Agent:
242
- 1. Privacy check (safe).
243
- 2. Decide layer: uncertain → `_Inbox/`.
244
- 3. `create_note("_Inbox/proposed-decision-2026-06-24.md", content)`.
245
- 4. Answer: "Proposal saved to `_Inbox/proposed-decision-2026-06-24.md` for review during the next heartbeat."
246
-
247
- ---
248
-
249
- ## Dashboard Schema
250
-
251
- Dashboards are Markdown notes in `Journal/` with server-managed frontmatter. Pass `title` and `tags` as `create_note` parameters, not inside `content`:
252
-
253
- ```markdown
254
- mcp__obsidian-mcp__create_note(
255
- path="Journal/project-status.md",
256
- title="project status",
257
- tags=["dashboard", "auto-generated"],
258
- content="# Project Status\n\n## Active priorities\n...",
259
- overwrite=true
260
- )
261
- ```
262
-
263
- Common dashboards:
264
- - `Journal/project-status.md` — active priorities, recent decisions, concepts, open questions.
265
- - `Journal/decisions-pending.md` — decisions with `status: pending`.
266
- - `Journal/recent-concepts.md` — concepts from the last 30 days.
267
-
268
- **Important:** Do not include YAML frontmatter delimiters (`---`) inside `content`. The MCP server manages `title`, `tags`, `created`, and `updated` automatically.
269
-
270
- ---
271
-
272
- ## Privacy Check
273
-
274
- Before calling `learn_from_text`, `create_note`, or `update_note`, verify the content contains no secrets, API keys, passwords, tokens, `.env` data, emails, phone numbers, or credit cards. If sensitive data is present, refuse and explain.
275
-
276
- ---
277
-
278
- ## ANTI-PATTERNS
279
-
280
- - ❌ Reading notes without first reading `AGENT.md` and `MEMORY.md`.
281
- - ❌ Answering from memory alone when the vault may contain the answer.
282
- - ❌ Calling `sync_from_bundle` multiple times in one session.
283
- - ❌ Creating notes with sensitive data such as secrets, keys, or PII.
284
- - ❌ Forgetting to search before creating a potentially duplicate note.
285
- - ❌ Writing implementation code or changing the MCP server configuration.
286
- - ❌ Searching forever instead of stopping after 3 empty results.
287
- - ❌ Mixing layers (e.g., putting a durable guide in `Notes/` or a raw log in `Knowledge/`).
288
-
289
- ---
290
-
291
- **What would you like to do?**
292
-
293
- - **[O] Return to Orchestrator** — Main task routing
294
- - **[A] Return to Architect** — Design or spec questions
295
- - **[D] Return to Designer** — Visual/UI design direction
296
- - **[E] Return to Engineer** — Implementation work
297
- - **[R] Return to Reviewer** — Quality review
298
- - **[S] Return to Shipper** — Commit, branch, push, PR