@archznn/crewloop-skills 0.5.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.
- package/README.md +4 -16
- package/package.json +3 -3
- package/packages/cli/dist/agents.js +1 -1
- package/packages/cli/dist/agents.js.map +1 -1
- package/packages/cli/dist/cli.d.ts.map +1 -1
- package/packages/cli/dist/cli.js +31 -37
- package/packages/cli/dist/cli.js.map +1 -1
- package/packages/cli/dist/hooks.d.ts +6 -4
- package/packages/cli/dist/hooks.d.ts.map +1 -1
- package/packages/cli/dist/hooks.js +258 -98
- package/packages/cli/dist/hooks.js.map +1 -1
- package/packages/cli/dist/tests/cli.test.js +21 -0
- package/packages/cli/dist/tests/cli.test.js.map +1 -1
- package/packages/cli/dist/tests/hooks.test.js +253 -27
- package/packages/cli/dist/tests/hooks.test.js.map +1 -1
- package/references/conventions.md +1 -10
- package/references/workflow.md +1 -1
- package/servers/dashboard/README.md +55 -1
- package/servers/dashboard/bin/crewloop-shim.js +4 -0
- package/servers/dashboard/dist/adapters/agy.d.ts +19 -0
- package/servers/dashboard/dist/adapters/agy.d.ts.map +1 -0
- package/servers/dashboard/dist/adapters/agy.js +108 -0
- package/servers/dashboard/dist/adapters/agy.js.map +1 -0
- package/servers/dashboard/dist/adapters/codex.d.ts.map +1 -1
- package/servers/dashboard/dist/adapters/codex.js +2 -0
- package/servers/dashboard/dist/adapters/codex.js.map +1 -1
- package/servers/dashboard/dist/adapters/kimi.d.ts +1 -1
- package/servers/dashboard/dist/adapters/kimi.d.ts.map +1 -1
- package/servers/dashboard/dist/adapters/kimi.js +9 -0
- package/servers/dashboard/dist/adapters/kimi.js.map +1 -1
- package/servers/dashboard/dist/adapters/shim.d.ts +1 -1
- package/servers/dashboard/dist/adapters/shim.d.ts.map +1 -1
- package/servers/dashboard/dist/adapters/shim.js +32 -11
- package/servers/dashboard/dist/adapters/shim.js.map +1 -1
- package/servers/dashboard/dist/adapters/shim.test.js +46 -4
- package/servers/dashboard/dist/adapters/shim.test.js.map +1 -1
- package/servers/dashboard/dist/lib/constants.d.ts +5 -0
- package/servers/dashboard/dist/lib/constants.d.ts.map +1 -0
- package/servers/dashboard/dist/lib/constants.js +46 -0
- package/servers/dashboard/dist/lib/constants.js.map +1 -0
- package/servers/dashboard/dist/lib/format.d.ts +6 -0
- package/servers/dashboard/dist/lib/format.d.ts.map +1 -0
- package/servers/dashboard/dist/lib/format.js +52 -0
- package/servers/dashboard/dist/lib/format.js.map +1 -0
- package/servers/dashboard/dist/lib/graph.d.ts +22 -0
- package/servers/dashboard/dist/lib/graph.d.ts.map +1 -0
- package/servers/dashboard/dist/lib/graph.js +45 -0
- package/servers/dashboard/dist/lib/graph.js.map +1 -0
- package/servers/dashboard/dist/lib/invocations.d.ts +32 -0
- package/servers/dashboard/dist/lib/invocations.d.ts.map +1 -0
- package/servers/dashboard/dist/lib/invocations.js +135 -0
- package/servers/dashboard/dist/lib/invocations.js.map +1 -0
- package/servers/dashboard/dist/lib/invocations.test.d.ts +2 -0
- package/servers/dashboard/dist/lib/invocations.test.d.ts.map +1 -0
- package/servers/dashboard/dist/lib/invocations.test.js +68 -0
- package/servers/dashboard/dist/lib/invocations.test.js.map +1 -0
- package/servers/dashboard/dist/lib/paths.d.ts +2 -0
- package/servers/dashboard/dist/lib/paths.d.ts.map +1 -0
- package/servers/dashboard/dist/lib/paths.js +40 -0
- package/servers/dashboard/dist/lib/paths.js.map +1 -0
- package/servers/dashboard/dist/presenter.d.ts.map +1 -1
- package/servers/dashboard/dist/presenter.js +2 -0
- package/servers/dashboard/dist/presenter.js.map +1 -1
- package/servers/dashboard/dist/public/assets/index-DjmMKbPN.css +1 -0
- package/servers/dashboard/dist/public/assets/index-DzOqMleZ.js +5323 -0
- package/servers/dashboard/dist/public/assets/index-DzOqMleZ.js.map +1 -0
- package/servers/dashboard/dist/public/index.html +16 -0
- package/servers/dashboard/dist/server.d.ts.map +1 -1
- package/servers/dashboard/dist/server.js +5 -1
- package/servers/dashboard/dist/server.js.map +1 -1
- package/servers/dashboard/dist/skills/infer.d.ts.map +1 -1
- package/servers/dashboard/dist/skills/infer.js +0 -6
- package/servers/dashboard/dist/skills/infer.js.map +1 -1
- package/servers/dashboard/dist/skills/infer.test.js +10 -3
- package/servers/dashboard/dist/skills/infer.test.js.map +1 -1
- package/servers/dashboard/dist/skills/mapping.d.ts +0 -3
- package/servers/dashboard/dist/skills/mapping.d.ts.map +1 -1
- package/servers/dashboard/dist/skills/mapping.js +0 -18
- package/servers/dashboard/dist/skills/mapping.js.map +1 -1
- package/servers/dashboard/dist/skills/registry.d.ts.map +1 -1
- package/servers/dashboard/dist/skills/registry.js +0 -1
- package/servers/dashboard/dist/skills/registry.js.map +1 -1
- package/servers/dashboard/dist/tests/adapters.test.d.ts +2 -0
- package/servers/dashboard/dist/tests/adapters.test.d.ts.map +1 -0
- package/servers/dashboard/dist/tests/adapters.test.js +180 -0
- package/servers/dashboard/dist/tests/adapters.test.js.map +1 -0
- package/servers/dashboard/dist/tests/lib-helpers.test.d.ts +2 -0
- package/servers/dashboard/dist/tests/lib-helpers.test.d.ts.map +1 -0
- package/servers/dashboard/dist/tests/lib-helpers.test.js +123 -0
- package/servers/dashboard/dist/tests/lib-helpers.test.js.map +1 -0
- package/servers/dashboard/dist/tests/shim.test.d.ts +2 -0
- package/servers/dashboard/dist/tests/shim.test.d.ts.map +1 -0
- package/servers/dashboard/dist/tests/shim.test.js +133 -0
- package/servers/dashboard/dist/tests/shim.test.js.map +1 -0
- package/servers/dashboard/dist/types.d.ts +5 -2
- package/servers/dashboard/dist/types.d.ts.map +1 -1
- package/servers/dashboard/package.json +24 -6
- package/servers/dashboard/src/adapters/agy.ts +136 -0
- package/servers/dashboard/src/adapters/codex.ts +2 -0
- package/servers/dashboard/src/adapters/kimi.ts +11 -1
- package/servers/dashboard/src/adapters/shim.test.ts +57 -4
- package/servers/dashboard/src/adapters/shim.ts +31 -11
- package/servers/dashboard/src/lib/constants.ts +44 -0
- package/servers/dashboard/src/lib/format.ts +44 -0
- package/servers/dashboard/src/lib/graph.ts +69 -0
- package/servers/dashboard/src/lib/invocations.test.ts +70 -0
- package/servers/dashboard/src/lib/invocations.ts +172 -0
- package/servers/dashboard/src/lib/paths.ts +35 -0
- package/servers/dashboard/src/presenter.ts +2 -0
- package/servers/dashboard/src/server.ts +5 -1
- package/servers/dashboard/src/skills/infer.test.ts +11 -3
- package/servers/dashboard/src/skills/infer.ts +1 -8
- package/servers/dashboard/src/skills/mapping.ts +0 -20
- package/servers/dashboard/src/skills/registry.ts +0 -1
- package/servers/dashboard/src/tests/adapters.test.ts +198 -0
- package/servers/dashboard/src/tests/lib-helpers.test.ts +133 -0
- package/servers/dashboard/src/tests/shim.test.ts +153 -0
- package/servers/dashboard/src/types.ts +5 -3
- package/servers/dashboard/ui/index.html +15 -0
- package/servers/dashboard/ui/postcss.config.js +6 -0
- package/servers/dashboard/ui/src/App.tsx +360 -0
- package/servers/dashboard/ui/src/components/ActiveSkillPanel.tsx +69 -0
- package/servers/dashboard/ui/src/components/ActivityGraph.tsx +74 -0
- package/servers/dashboard/ui/src/components/CommandPalette.tsx +200 -0
- package/servers/dashboard/ui/src/components/FileActivity.tsx +20 -0
- package/servers/dashboard/ui/src/components/FileDiff.tsx +68 -0
- package/servers/dashboard/ui/src/components/FileList.tsx +64 -0
- package/servers/dashboard/ui/src/components/FilterBar.tsx +208 -0
- package/servers/dashboard/ui/src/components/Network3D.tsx +178 -0
- package/servers/dashboard/ui/src/components/SessionSelector.tsx +95 -0
- package/servers/dashboard/ui/src/components/Sidebar.tsx +110 -0
- package/servers/dashboard/ui/src/components/TelemetryPanel.tsx +57 -0
- package/servers/dashboard/ui/src/components/Timeline.tsx +57 -0
- package/servers/dashboard/ui/src/components/TimelineRow.tsx +112 -0
- package/servers/dashboard/ui/src/components/TopBar.tsx +116 -0
- package/servers/dashboard/ui/src/components/ViewHeader.tsx +19 -0
- package/servers/dashboard/ui/src/components/ui/Icon.tsx +105 -0
- package/servers/dashboard/ui/src/components/ui/StatusBadge.tsx +19 -0
- package/servers/dashboard/ui/src/components/views/FilesView.tsx +23 -0
- package/servers/dashboard/ui/src/components/views/NetworkView.tsx +20 -0
- package/servers/dashboard/ui/src/components/views/Overview.tsx +135 -0
- package/servers/dashboard/ui/src/components/views/SessionsView.tsx +84 -0
- package/servers/dashboard/ui/src/components/views/SettingsView.tsx +138 -0
- package/servers/dashboard/ui/src/components/views/SkillsView.tsx +92 -0
- package/servers/dashboard/ui/src/components/views/TimelineView.tsx +46 -0
- package/servers/dashboard/ui/src/contexts/FilterContext.tsx +41 -0
- package/servers/dashboard/ui/src/contexts/PinnedSessionsContext.tsx +80 -0
- package/servers/dashboard/ui/src/contexts/SettingsContext.tsx +60 -0
- package/servers/dashboard/ui/src/hooks/useCommandPalette.ts +36 -0
- package/servers/dashboard/ui/src/hooks/useKeyboardShortcut.ts +38 -0
- package/servers/dashboard/ui/src/hooks/useNow.ts +12 -0
- package/servers/dashboard/ui/src/hooks/useReducedMotion.ts +15 -0
- package/servers/dashboard/ui/src/hooks/useSessions.ts +64 -0
- package/servers/dashboard/ui/src/hooks/useTheme.ts +30 -0
- package/servers/dashboard/ui/src/hooks/useViewport.ts +19 -0
- package/servers/dashboard/ui/src/hooks/useWebSocket.ts +118 -0
- package/servers/dashboard/ui/src/lib/export.test.ts +33 -0
- package/servers/dashboard/ui/src/lib/export.ts +39 -0
- package/servers/dashboard/ui/src/lib/filter.test.ts +95 -0
- package/servers/dashboard/ui/src/lib/filter.ts +178 -0
- package/servers/dashboard/ui/src/lib/format.test.ts +25 -0
- package/servers/dashboard/ui/src/lib/search.test.ts +52 -0
- package/servers/dashboard/ui/src/lib/search.ts +60 -0
- package/servers/dashboard/ui/src/lib/settings.test.ts +50 -0
- package/servers/dashboard/ui/src/lib/settings.ts +56 -0
- package/servers/dashboard/ui/src/lib/types.ts +124 -0
- package/servers/dashboard/ui/src/main.tsx +19 -0
- package/servers/dashboard/ui/src/styles/index.css +155 -0
- package/servers/dashboard/ui/tailwind.config.js +45 -0
- package/servers/dashboard/ui/tsconfig.json +33 -0
- package/servers/dashboard/ui/tsconfig.node.json +10 -0
- package/servers/dashboard/ui/vite.config.ts +37 -0
- package/servers/dashboard/ui/vitest.config.ts +8 -0
- package/skills/accessibility-auditor/SKILL.md +0 -20
- package/skills/architect/SKILL.md +0 -45
- package/skills/designer/SKILL.md +0 -30
- package/skills/docs-writer/SKILL.md +0 -13
- package/skills/engineer/SKILL.md +0 -30
- package/skills/maintainer/SKILL.md +0 -20
- package/skills/orchestrator/SKILL.md +0 -13
- package/skills/product-manager/SKILL.md +0 -20
- package/skills/researcher/SKILL.md +0 -20
- package/skills/reviewer/SKILL.md +0 -30
- package/skills/security-guard/SKILL.md +0 -20
- package/skills/shipper/SKILL.md +0 -33
- package/skills/tester/SKILL.md +0 -20
- package/packages/cli/dist/mcp.d.ts +0 -28
- package/packages/cli/dist/mcp.d.ts.map +0 -1
- package/packages/cli/dist/mcp.js +0 -148
- package/packages/cli/dist/mcp.js.map +0 -1
- package/packages/cli/dist/tests/mcp.test.d.ts +0 -2
- package/packages/cli/dist/tests/mcp.test.d.ts.map +0 -1
- package/packages/cli/dist/tests/mcp.test.js +0 -232
- package/packages/cli/dist/tests/mcp.test.js.map +0 -1
- package/references/obsidian-mcp-usage.md +0 -190
- package/servers/dashboard/public/app.js +0 -516
- package/servers/dashboard/public/index.html +0 -96
- package/servers/dashboard/public/styles.css +0 -819
- package/servers/obsidian-mcp/README.md +0 -82
- package/servers/obsidian-mcp/pyproject.toml +0 -32
- package/servers/obsidian-mcp/src/obsidian_mcp/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/config.py +0 -47
- package/servers/obsidian-mcp/src/obsidian_mcp/indexer/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/indexer/embeddings.py +0 -105
- package/servers/obsidian-mcp/src/obsidian_mcp/indexer/indexer.py +0 -79
- package/servers/obsidian-mcp/src/obsidian_mcp/indexer/store.py +0 -141
- package/servers/obsidian-mcp/src/obsidian_mcp/indexer/sync.py +0 -37
- package/servers/obsidian-mcp/src/obsidian_mcp/learning/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/learning/detector.py +0 -66
- package/servers/obsidian-mcp/src/obsidian_mcp/learning/note_generator.py +0 -40
- package/servers/obsidian-mcp/src/obsidian_mcp/main.py +0 -4
- package/servers/obsidian-mcp/src/obsidian_mcp/models.py +0 -42
- package/servers/obsidian-mcp/src/obsidian_mcp/privacy/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/privacy/filter.py +0 -68
- package/servers/obsidian-mcp/src/obsidian_mcp/rag/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/rag/engine.py +0 -50
- package/servers/obsidian-mcp/src/obsidian_mcp/rag/graph_search.py +0 -55
- package/servers/obsidian-mcp/src/obsidian_mcp/rag/text_search.py +0 -37
- package/servers/obsidian-mcp/src/obsidian_mcp/rag/vector_search.py +0 -118
- package/servers/obsidian-mcp/src/obsidian_mcp/server.py +0 -61
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/create.py +0 -43
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/delete.py +0 -16
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/learn.py +0 -42
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/list.py +0 -16
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/read.py +0 -15
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/registry.py +0 -130
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/related.py +0 -20
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/search.py +0 -26
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/sync.py +0 -22
- package/servers/obsidian-mcp/src/obsidian_mcp/tools/update.py +0 -34
- package/servers/obsidian-mcp/src/obsidian_mcp/vault/__init__.py +0 -0
- package/servers/obsidian-mcp/src/obsidian_mcp/vault/parser.py +0 -82
- package/servers/obsidian-mcp/src/obsidian_mcp/vault/repository.py +0 -68
- package/servers/obsidian-mcp/src/obsidian_mcp/vault/writer.py +0 -61
- package/servers/obsidian-mcp/tests/conftest.py +0 -39
- package/servers/obsidian-mcp/tests/test_async_tools.py +0 -87
- package/servers/obsidian-mcp/tests/test_edge_cases.py +0 -59
- package/servers/obsidian-mcp/tests/test_indexer.py +0 -27
- package/servers/obsidian-mcp/tests/test_integration.py +0 -90
- package/servers/obsidian-mcp/tests/test_learning.py +0 -34
- package/servers/obsidian-mcp/tests/test_privacy.py +0 -31
- package/servers/obsidian-mcp/tests/test_privacy_config.py +0 -44
- package/servers/obsidian-mcp/tests/test_rag.py +0 -64
- package/servers/obsidian-mcp/tests/test_read_raw.py +0 -37
- package/servers/obsidian-mcp/tests/test_tfidf_fallback.py +0 -54
- package/servers/obsidian-mcp/tests/test_tools.py +0 -108
- package/servers/obsidian-mcp/tests/test_vault.py +0 -103
- package/servers/obsidian-mcp/tests/test_writer.py +0 -139
- 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
|