@jayjiang/byoao 1.1.2 → 2.0.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 (136) hide show
  1. package/dist/__tests__/plugin-config.test.js +7 -10
  2. package/dist/__tests__/plugin-config.test.js.map +1 -1
  3. package/dist/assets/obsidian-skills/byoao-conventions.md +30 -54
  4. package/dist/assets/obsidian-skills/vault-thinking.md +6 -5
  5. package/dist/assets/presets/common/AGENTS.md.hbs +29 -46
  6. package/dist/assets/presets/common/SCHEMA.md.hbs +57 -0
  7. package/dist/assets/presets/common/Start Here.md.hbs +29 -40
  8. package/dist/assets/presets/minimal/preset.json +3 -3
  9. package/dist/assets/presets/pm-tpm/preset.json +2 -2
  10. package/dist/assets/skills/ask.md +28 -27
  11. package/dist/assets/skills/challenge.md +79 -121
  12. package/dist/assets/skills/connect.md +75 -163
  13. package/dist/assets/skills/cook.md +167 -0
  14. package/dist/assets/skills/diagnose.md +102 -43
  15. package/dist/assets/skills/drift.md +64 -165
  16. package/dist/assets/skills/health.md +63 -0
  17. package/dist/assets/skills/ideas.md +11 -10
  18. package/dist/assets/skills/organize.md +56 -155
  19. package/dist/assets/skills/prep.md +63 -0
  20. package/dist/assets/skills/trace.md +75 -90
  21. package/dist/assets/skills/wiki.md +77 -178
  22. package/dist/cli/cli-program.js +17 -14
  23. package/dist/cli/cli-program.js.map +1 -1
  24. package/dist/cli/installer.js +10 -4
  25. package/dist/cli/installer.js.map +1 -1
  26. package/dist/hooks/idle-suggestions.js +4 -4
  27. package/dist/hooks/idle-suggestions.js.map +1 -1
  28. package/dist/hooks/system-transform.js +35 -1
  29. package/dist/hooks/system-transform.js.map +1 -1
  30. package/dist/index.js +395 -623
  31. package/dist/index.js.map +1 -1
  32. package/dist/plugin-config.js +6 -32
  33. package/dist/plugin-config.js.map +1 -1
  34. package/dist/tools/init-vault.js +8 -38
  35. package/dist/tools/init-vault.js.map +1 -1
  36. package/dist/tools/vault-doctor.js +1 -1
  37. package/dist/tools/vault-doctor.js.map +1 -1
  38. package/dist/tools/vault-status.js +1 -1
  39. package/dist/tools/vault-status.js.map +1 -1
  40. package/dist/vault/__tests__/create.test.js +47 -115
  41. package/dist/vault/__tests__/create.test.js.map +1 -1
  42. package/dist/vault/__tests__/doctor.test.js +14 -2
  43. package/dist/vault/__tests__/doctor.test.js.map +1 -1
  44. package/dist/vault/__tests__/manifest.test.js +2 -2
  45. package/dist/vault/__tests__/manifest.test.js.map +1 -1
  46. package/dist/vault/__tests__/status.test.js +12 -0
  47. package/dist/vault/__tests__/status.test.js.map +1 -1
  48. package/dist/vault/__tests__/upgrade.test.js +3 -3
  49. package/dist/vault/__tests__/upgrade.test.js.map +1 -1
  50. package/dist/vault/create.js +75 -188
  51. package/dist/vault/create.js.map +1 -1
  52. package/dist/vault/doctor.js +49 -0
  53. package/dist/vault/doctor.js.map +1 -1
  54. package/dist/vault/manifest.js +1 -1
  55. package/dist/vault/preset.js +10 -4
  56. package/dist/vault/preset.js.map +1 -1
  57. package/dist/vault/self-update.js +1 -1
  58. package/dist/vault/status.js +24 -0
  59. package/dist/vault/status.js.map +1 -1
  60. package/dist/vault/upgrade.js +120 -16
  61. package/dist/vault/upgrade.js.map +1 -1
  62. package/package.json +1 -1
  63. package/src/assets/obsidian-skills/byoao-conventions.md +9 -6
  64. package/src/assets/obsidian-skills/vault-thinking.md +6 -5
  65. package/src/assets/presets/common/AGENTS.md.hbs +23 -19
  66. package/src/assets/presets/common/SCHEMA.md.hbs +57 -0
  67. package/src/assets/presets/common/Start Here.md.hbs +29 -40
  68. package/src/assets/presets/minimal/preset.json +3 -3
  69. package/src/assets/presets/pm-tpm/preset.json +2 -2
  70. package/src/skills/ask.md +28 -27
  71. package/src/skills/challenge.md +79 -121
  72. package/src/skills/connect.md +75 -163
  73. package/src/skills/cook.md +167 -0
  74. package/src/skills/diagnose.md +102 -43
  75. package/src/skills/drift.md +64 -165
  76. package/src/skills/health.md +63 -0
  77. package/src/skills/ideas.md +11 -10
  78. package/src/skills/organize.md +56 -155
  79. package/src/skills/prep.md +63 -0
  80. package/src/skills/trace.md +75 -90
  81. package/src/skills/wiki.md +77 -178
  82. package/dist/assets/presets/common/Glossary.md.hbs +0 -16
  83. package/dist/assets/presets/common/obsidian/daily-notes.json +0 -5
  84. package/dist/assets/presets/common/obsidian/templates.json +0 -3
  85. package/dist/assets/presets/common/templates/Daily Note.md +0 -19
  86. package/dist/assets/presets/common/templates/Decision Record.md +0 -32
  87. package/dist/assets/presets/common/templates/Investigation.md +0 -34
  88. package/dist/assets/presets/common/templates/Meeting Notes.md +0 -25
  89. package/dist/assets/skills/emerge.md +0 -168
  90. package/dist/assets/skills/weave.md +0 -287
  91. package/dist/tools/add-glossary-term.js +0 -21
  92. package/dist/tools/add-glossary-term.js.map +0 -1
  93. package/dist/tools/add-person.js +0 -21
  94. package/dist/tools/add-person.js.map +0 -1
  95. package/dist/tools/add-project.js +0 -24
  96. package/dist/tools/add-project.js.map +0 -1
  97. package/dist/tools/graph-health.js +0 -25
  98. package/dist/tools/graph-health.js.map +0 -1
  99. package/dist/tools/note-read.js +0 -19
  100. package/dist/tools/note-read.js.map +0 -1
  101. package/dist/tools/search-vault.js +0 -22
  102. package/dist/tools/search-vault.js.map +0 -1
  103. package/dist/vault/__tests__/glossary.test.js +0 -68
  104. package/dist/vault/__tests__/glossary.test.js.map +0 -1
  105. package/dist/vault/__tests__/graph-health.test.js +0 -102
  106. package/dist/vault/__tests__/graph-health.test.js.map +0 -1
  107. package/dist/vault/__tests__/member.test.js +0 -85
  108. package/dist/vault/__tests__/member.test.js.map +0 -1
  109. package/dist/vault/__tests__/note-read.test.js +0 -71
  110. package/dist/vault/__tests__/note-read.test.js.map +0 -1
  111. package/dist/vault/__tests__/obsidian-cli.test.js +0 -108
  112. package/dist/vault/__tests__/obsidian-cli.test.js.map +0 -1
  113. package/dist/vault/__tests__/search-vault.test.js +0 -93
  114. package/dist/vault/__tests__/search-vault.test.js.map +0 -1
  115. package/dist/vault/glossary.js +0 -27
  116. package/dist/vault/glossary.js.map +0 -1
  117. package/dist/vault/graph-health.js +0 -83
  118. package/dist/vault/graph-health.js.map +0 -1
  119. package/dist/vault/member.js +0 -67
  120. package/dist/vault/member.js.map +0 -1
  121. package/dist/vault/note-read.js +0 -70
  122. package/dist/vault/note-read.js.map +0 -1
  123. package/dist/vault/project.js +0 -68
  124. package/dist/vault/project.js.map +0 -1
  125. package/dist/vault/retrieval-types.js +0 -5
  126. package/dist/vault/retrieval-types.js.map +0 -1
  127. package/dist/vault/search-vault.js +0 -87
  128. package/dist/vault/search-vault.js.map +0 -1
  129. package/src/assets/presets/common/obsidian/daily-notes.json +0 -5
  130. package/src/assets/presets/common/obsidian/templates.json +0 -3
  131. package/src/assets/presets/common/templates/Daily Note.md +0 -19
  132. package/src/assets/presets/common/templates/Decision Record.md +0 -32
  133. package/src/assets/presets/common/templates/Investigation.md +0 -34
  134. package/src/assets/presets/common/templates/Meeting Notes.md +0 -25
  135. package/src/skills/emerge.md +0 -168
  136. package/src/skills/weave.md +0 -287
@@ -1,206 +1,107 @@
1
1
  ---
2
2
  name: organize
3
- description: Reorganize vault directory structure using Obsidian CLI's move command, which safely updates all backlinks. Analyzes enriched frontmatter (type, domain) to propose a logical folder layout. Use when the user says "organize my vault", "reorganize files", "clean up folders", "restructure", or after running /weave on a messy vault.
3
+ description: >
4
+ Directory organization based on frontmatter metadata. Suggests and applies file moves to
5
+ keep the vault structured. Use when the user wants to reorganize notes, fix directory
6
+ placement, or clean up the vault structure.
4
7
  ---
5
8
 
6
- # /organize — Vault Directory Reorganization
9
+ # /organize — Directory Organization
7
10
 
8
- You are a vault organizer. Your job is to analyze the current directory structure, propose a logical reorganization based on enriched frontmatter metadata, and execute moves safely using Obsidian CLI which automatically updates all backlinks and wikilinks.
11
+ You are a librarian. Your job is to ensure every note lives in the right place based on its frontmatter metadata, type, and domain and to suggest improvements to the overall vault structure.
9
12
 
10
13
  ## Prerequisites Check
11
14
 
12
- **Before doing anything else:**
13
-
14
- 1. Verify Obsidian CLI is available:
15
-
16
15
  ```bash
17
16
  obsidian --version
18
17
  ```
19
18
 
20
- If this fails, STOP and display:
21
-
22
- ```
23
- Obsidian CLI is not available. Please ensure:
24
- 1. Obsidian is running
25
- 2. This vault is open in Obsidian
26
- 3. CLI is enabled: Settings → General → Advanced → Command-line interface
27
- ```
28
-
29
- 2. Check that files have frontmatter (specifically `type`). Run:
30
-
31
- ```bash
32
- obsidian properties sort=count counts
33
- ```
34
-
35
- If `type` property has very low coverage (< 30% of notes), STOP and suggest:
36
-
37
- ```
38
- Most files lack a `type` property — /organize needs frontmatter to
39
- decide where files belong. Run /weave first to enrich your notes,
40
- then come back to /organize.
41
- ```
19
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
42
20
 
43
21
  ## Parameters
44
22
 
45
- - **scope** (optional): `all` (default) or a specific directory path to reorganize
46
- - **dry-run** (optional): If set, show proposed changes without executing
47
- - **aggressive** (optional): Also suggest consolidating existing directory structures (e.g., merge year-based sprint folders into `Sprints/`)
48
-
49
- ## File Exclusion Rules
50
-
51
- Never move or suggest moving:
52
-
53
- | Pattern | Reason |
54
- |---------|--------|
55
- | `AGENTS.md` | BYOAO-managed root file |
56
- | `INDEX.base` | Knowledge graph index — do not move |
57
- | `Start Here.md` | BYOAO onboarding file |
58
- | `.obsidian/`, `.git/`, `.byoao/` | System directories |
59
- | `.opencode/`, `.cursor/`, `.claude/` | Tool config directories |
60
- | `.env`, `credentials.*`, `*.key` | Sensitive files |
23
+ - **scope** (optional): `all` (full vault), `agents` (agent pages only), `sources` (user notes), or a specific directory. Default: `all`.
24
+ - **dry_run** (optional): `true` to only suggest, `false` to apply changes. Default: `true`.
61
25
 
62
26
  ## Process
63
27
 
64
- ### Step 1: Analyze Current Structure
65
-
66
- Build a complete picture of the vault:
28
+ ### Step 1: Scan Current Structure
67
29
 
68
30
  ```bash
69
31
  obsidian list
70
32
  ```
71
33
 
72
- Then read frontmatter for every file to build a map of `path → {type, domain, project, tags}`. Use batch reading:
34
+ Build a picture of:
35
+ - Current directory structure
36
+ - Notes in each directory
37
+ - Notes that seem misplaced based on their frontmatter
73
38
 
74
- ```bash
75
- obsidian read "<note name>"
76
- ```
77
-
78
- Categorize every file into one of:
79
- - **Has type** — can be auto-organized based on the mapping table
80
- - **No type but in coherent directory** — already organized, leave in place
81
- - **No type and in root/flat dir** — suggest running `/weave` first
82
-
83
- ### Step 2: Build Reorganization Map
39
+ ### Step 2: Check Agent Pages
84
40
 
85
- For each file with a `type` property, determine if it should move based on this mapping:
41
+ Agent pages should live in their designated directories:
86
42
 
87
- | `type` | Target Directory | Notes |
88
- |--------|-----------------|-------|
89
- | `daily` | `Daily/` | |
90
- | `meeting` | Project folder if `project` field exists, else `Meetings/` | Group by project when possible |
91
- | `feature` | `Projects/<project>/` | Use `project` frontmatter field |
92
- | `project` | `Projects/` | Top-level project notes |
93
- | `sprint-handoff` | `Sprints/` | |
94
- | `reference` | `Knowledge/` or user's preferred reference location | General reference material |
95
- | `person` | `People/` | |
96
- | `investigation` | Project folder if `project` field exists, else `Knowledge/` | |
97
- | `idea` | `Knowledge/` | |
98
- | `decision` | Project folder if `project` field exists, else `Knowledge/` | |
43
+ | `type` frontmatter | Expected directory |
44
+ |-------------------|-------------------|
45
+ | `entity` | `entities/` |
46
+ | `concept` | `concepts/` |
47
+ | `comparison` | `comparisons/` |
48
+ | `query` | `queries/` |
99
49
 
100
- **Smart rules when NOT to move:**
50
+ For each agent page, check:
51
+ - Does its current directory match its `type`?
52
+ - If not, suggest a move
101
53
 
102
- 1. **Already in the right place** — if a `type: meeting` file is already in `Meetings/` or inside a project folder, skip it
103
- 2. **Part of a coherent group** — if a file sits in `2025 Sprint/Sprint22/JIRA ticket/` alongside related files, the entire group is already organized even if the parent folder name doesn't match BYOAO conventions. Do NOT break up coherent groups
104
- 3. **Deep nesting** — if a file is 3+ levels deep in a project-specific directory, it's likely intentionally placed. Leave it unless the user explicitly asks to flatten
105
- 4. **Name collisions** — if moving a file would create a name collision in the target directory, flag it and skip
54
+ ### Step 3: Check User Notes
106
55
 
107
- **When `aggressive` mode is enabled**, also suggest structural consolidation:
108
- - Multiple year/sprint directories (e.g., `2025 Sprint/`, `2026 Sprint/`) → merge under `Sprints/2025/`, `Sprints/2026/`
109
- - Scattered documentation directories → consolidate under `Knowledge/`
110
- - This is a larger operation — always present as a separate approval step
56
+ User notes should **remain** in their existing directories (`Projects/`, `Daily/`, personal folders, etc.). Do not suggest moving them into agent directories. Suggest organization only if:
111
57
 
112
- ### Step 3: Present Plan
58
+ - A user note has been placed in an agent directory (`entities/`, `concepts/`, `comparisons/`, `queries/`) — this is likely a mistake; propose moving it back to an appropriate user area
59
+ - Multiple user notes about the same topic are scattered across **user** directories when they could be grouped there (never into agent dirs unless they are true agent pages with correct `type` frontmatter)
113
60
 
114
- Group proposed moves by category and show a clear summary:
115
-
116
- ```
117
- /organize analysis complete.
61
+ ### Step 4: Check Naming Conventions
118
62
 
119
- ## Files to move (23 of 504)
63
+ Per SCHEMA.md conventions:
64
+ - File names should be lowercase with hyphens, no spaces
65
+ - Names should match the page title (abbreviated, hyphenated)
66
+ - No duplicate names with different suffixes (e.g., `feature-a.md` and `feature-a-1.md`)
120
67
 
121
- ### Root files → proper directories
122
- HANDOVER-2026-03-04.md → Knowledge/Handovers/HANDOVER-2026-03-04.md
123
- HANDOVER-2026-03-02.md → Knowledge/Handovers/HANDOVER-2026-03-02.md
124
- BigQuery_Syntax_Guide.md → Knowledge/BigQuery_Syntax_Guide.md
68
+ Flag any naming violations.
125
69
 
126
- ### Meeting notes Meetings/
127
- standup-2026-03-15.md → Meetings/standup-2026-03-15.md
70
+ ### Step 5: Suggest Moves
128
71
 
129
- ### Reference docs → Knowledge/
130
- API_Overview.md → Knowledge/API_Overview.md
72
+ For each misplaced file:
131
73
 
132
- ## New directories to create
133
- Knowledge/Handovers/
134
- Meetings/
135
-
136
- ## Files staying in place: 481
137
- (Already in coherent directory structures)
138
-
139
- ## Files without `type` (cannot auto-organize): 12
140
- Run /weave on these first, then re-run /organize.
141
-
142
- Options:
143
- 1. Approve all moves
144
- 2. Review one-by-one
145
- 3. Skip — make no changes
146
74
  ```
75
+ Move: entities/wrong-place.md → concepts/wrong-place.md
76
+ Reason: type=concept but currently in entities/
147
77
 
148
- Wait for user response before proceeding.
78
+ Move: Projects/random-notes.md Projects/feature-a/
79
+ Reason: Content is about Feature A, should be grouped with other Feature A notes
80
+ ```
149
81
 
150
- ### Step 4: Execute Moves
82
+ ### Step 6: Apply Moves (If Confirmed)
151
83
 
152
- For each approved move, use `obsidian move`:
84
+ Use Obsidian CLI to rename/move files:
153
85
 
154
86
  ```bash
155
- obsidian move file="HANDOVER-2026-03-04" to="Knowledge/Handovers/"
87
+ obsidian rename file="old-path.md" new_name="new-path.md"
156
88
  ```
157
89
 
158
- **Execution rules:**
90
+ Always show the full plan before applying. Never move files silently.
159
91
 
160
- - Create target directories first if they don't exist:
161
- ```bash
162
- mkdir -p "<vault path>/<target directory>"
163
- ```
164
- - Execute moves one at a time and verify each succeeds
165
- - If a move fails (name collision, file locked, etc.), log the error and continue with remaining moves
166
- - Report progress every 10 moves: "Moved 10/23 files..."
92
+ ### Step 7: Update Wikilinks
167
93
 
168
- **Why `obsidian move` instead of `mv`:**
94
+ After moving files, check that all wikilinks to the moved files are still valid:
169
95
 
170
- `obsidian move` tells Obsidian to perform the move internally. Obsidian automatically updates **all wikilinks and backlinks** across the entire vault that reference the moved file. Using file system `mv` would leave broken links.
171
-
172
- ### Step 5: Verify
173
-
174
- After all moves complete:
175
-
176
- 1. Get the updated file list:
177
- ```bash
178
- obsidian list
179
- ```
180
-
181
- 2. Check for broken links:
182
- ```bash
183
- byoao_graph_health
184
- ```
185
-
186
- 3. Report results:
187
-
188
- ```
189
- /organize complete:
190
- - Moved: 23 files
191
- - Skipped: 0 (errors)
192
- - New directories created: 2
193
- - Broken links after moves: 0
194
- - Files still without `type`: 12 (run /weave to fix)
96
+ ```bash
97
+ obsidian backlinks "moved-file"
195
98
  ```
196
99
 
197
- If any broken links are found, report them and suggest fixes.
100
+ Obsidian typically handles wikilink updates on rename automatically, but verify for safety.
198
101
 
199
- ## Important Guidelines
102
+ ## Key Principles
200
103
 
201
- - **Conservative by default**: Only suggest moves where the benefit is clear. A file that's "good enough" where it is should stay
202
- - **Never break coherent groups**: If files are organized together in a project directory, don't scatter them even if their `type` would suggest different target directories
203
- - **User approval is mandatory**: Never move files without explicit confirmation
204
- - **`obsidian move` only**: Never use file system `mv`, `cp`, or rename commands for vault files — only `obsidian move` and `obsidian rename` preserve link integrity
205
- - **Idempotent**: Running /organize twice should not propose moves for files that were already correctly placed in the first run
206
- - **Reversible**: If the user wants to undo, they can run `/organize` again with manual adjustments, or restore from git history
104
+ - **Suggest first, act second.** Default to dry_run mode. Show the full plan before making any changes.
105
+ - **Agent directories are sacred.** Only agent pages should live in `entities/`, `concepts/`, `comparisons/`, `queries/`.
106
+ - **User notes are user territory.** Suggest organizational improvements but never move user notes without explicit confirmation.
107
+ - **Obsidian is first workbench.** All note operations go through Obsidian CLI.
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: prep
3
+ description: >
4
+ Shared prerequisites check — verifies Obsidian CLI is available and displays a correct
5
+ error message with installation guidance. Referenced by all skills via "(see /prep)".
6
+ ---
7
+
8
+ # /prep — Prerequisites Check
9
+
10
+ ## Obsidian CLI Availability
11
+
12
+ Before using any BYOAO skill, verify the Obsidian CLI is available:
13
+
14
+ ```bash
15
+ obsidian --version
16
+ ```
17
+
18
+ If this fails, STOP and display:
19
+
20
+ ```
21
+ Obsidian CLI is not available. The Obsidian CLI is bundled with the Obsidian
22
+ app (v1.12+) and cannot be installed separately.
23
+
24
+ 1. Install or update Obsidian from: https://obsidian.md/download
25
+ 2. Open Obsidian and enable the CLI:
26
+ Settings → General → Advanced → Command-line interface
27
+ 3. Make sure Obsidian is running, then try again.
28
+ ```
29
+
30
+ ## Graph Enrichment
31
+
32
+ Scan all user notes and enrich frontmatter, suggest cross-references.
33
+
34
+ ### Step 1: Scan Notes
35
+ - Read all `.md` files outside agent directories
36
+ - Extract entities, key terms, and potential wikilink targets
37
+
38
+ ### Step 2: Enrich Frontmatter
39
+ For each note missing frontmatter:
40
+ - Add `title` (from filename or first heading)
41
+ - Add `date` (from file creation time or content)
42
+ - Suggest `tags` based on content
43
+
44
+ For notes with partial frontmatter:
45
+ - Fill in missing required fields
46
+ - Never overwrite existing values
47
+
48
+ ### Step 3: Suggest Cross-References
49
+ - Identify recurring terms mentioned across notes
50
+ - Suggest converting mentions to `[[wikilinks]]`
51
+ - Propose new entries for `SCHEMA.md` tag taxonomy
52
+
53
+ ### Step 4: Report
54
+ Present a summary:
55
+ - Notes enriched: X
56
+ - Wikilinks suggested: Y
57
+ - New schema terms proposed: Z
58
+ Ask for approval before applying any changes.
59
+
60
+ ### Key Behaviors
61
+ - Idempotent — running twice won't duplicate changes
62
+ - Never overwrites existing frontmatter values
63
+ - Asks before applying wikilink suggestions
@@ -1,11 +1,14 @@
1
1
  ---
2
2
  name: trace
3
- description: Track how an idea, concept, or topic evolved across the vault over time. Builds a chronological timeline from scattered mentions. Use when the user asks "how did X evolve", "what's the history of", "when did we start thinking about", "trace this idea", or wants to understand the arc of a concept.
3
+ description: >
4
+ Chronological timeline of an idea across notes. Detects phases, turning points, and
5
+ contradictions in how a topic evolved. Use when the user asks "how did X evolve",
6
+ "trace the history of Y", "timeline of Z", or wants to understand how an idea changed over time.
4
7
  ---
5
8
 
6
- # /trace — Track Idea Evolution
9
+ # /trace — Chronological Timeline
7
10
 
8
- You are a knowledge archaeologist. Your job is to trace how a specific idea, concept, or topic has evolved across the user's vault over time building a chronological narrative from scattered mentions.
11
+ You are a historical detective. Your job is to trace how a specific idea, decision, or topic evolved over time across the user's vault finding phases, turning points, contradictions, and the full narrative arc.
9
12
 
10
13
  ## Prerequisites Check
11
14
 
@@ -13,144 +16,126 @@ You are a knowledge archaeologist. Your job is to trace how a specific idea, con
13
16
  obsidian --version
14
17
  ```
15
18
 
16
- If this fails, STOP and display the Obsidian CLI availability message (see /weave for the full error text).
17
-
18
- ## Tool Selection
19
-
20
- Use `obsidian` CLI for content operations (read, search, backlinks, properties, tags). Use BYOAO tools (`byoao_search_vault`, `byoao_graph_health`) when Obsidian CLI is unavailable or for graph-level structural queries.
19
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
21
20
 
22
21
  ## Parameters
23
22
 
24
- - **topic** (required): The idea, concept, person, project, or term to trace.
25
- - **since** (optional): Start date for the trace (e.g. "2025-01-01"). Default: trace all history.
26
- - **output** (optional): If set, save the trace as a new note at this path.
23
+ - **topic** (required): The idea, decision, or concept to trace.
24
+ - **depth** (optional): `summary` (key milestones only) or `detailed` (all mentions with context). Default: `summary`.
27
25
 
28
26
  ## Process
29
27
 
30
- ### Sampling Strategy
31
-
32
- If a search returns more than 30 notes, prioritize: (1) most recent 10, (2) most-linked 10 (highest backlink count), (3) notes with `status: active`. Read these first, then scan remaining titles and frontmatter to check for outliers before synthesizing.
33
-
34
- ### Step 1: Find All Mentions
28
+ ### Step 1: Locate All Mentions
35
29
 
36
- Search for the topic across the vault using multiple strategies:
30
+ Search for the topic across all notes:
37
31
 
38
32
  ```bash
39
33
  obsidian search "<topic>"
34
+ obsidian tags "<topic>"
40
35
  ```
41
36
 
42
- Also check:
43
- - `INDEX.base` if it exists, for domain and note_type classification
44
- - Backlinks to `[[<topic>]]` if a note exists for it
45
- - Tag variations: `#<topic>`, `#<topic-kebab-case>`
37
+ Also search agent-maintained pages under `entities/`, `concepts/`, `comparisons/`, and `queries/`:
46
38
 
47
39
  ```bash
48
- obsidian backlinks "<topic>"
40
+ obsidian read file="entities/<topic>.md"
41
+ obsidian read file="concepts/<topic>.md"
42
+ obsidian read file="comparisons/<topic>.md"
43
+ obsidian read file="queries/<topic>.md"
49
44
  ```
50
45
 
46
+ Read `INDEX.base` to check if there's already a compiled page for this topic.
47
+
51
48
  ### Step 2: Build Timeline
52
49
 
53
50
  For each note that mentions the topic:
54
51
 
55
- 1. **Read the note** to understand the context of the mention
56
- 2. **Extract the date** from frontmatter (`date` field) or filename (daily notes like `2026-03-15`)
57
- 3. **Summarize** what the note says about the topic in 1-2 sentences
58
- 4. **Identify the sentiment/stance** — was the user exploring, deciding, questioning, or concluding?
52
+ 1. Read the full content using `obsidian read`
53
+ 2. Extract the date (from frontmatter or filename for daily notes)
54
+ 3. Identify what the note says about the topic:
55
+ - **New idea proposed** — first mention of the concept
56
+ - **Decision made** — commitment to a specific approach
57
+ - **Change/evolution** — modification of previous understanding
58
+ - **Contradiction** — statement that conflicts with an earlier note
59
+ - **Confirmation** — validation of a previous position
60
+ - **Abandoned** — idea dropped or superseded
59
61
 
60
- Sort all mentions chronologically.
62
+ ### Step 3: Detect Phases
61
63
 
62
- ### Step 3: Identify Phases
64
+ Group the timeline into phases:
63
65
 
64
- Look for natural phases in how the topic evolved:
66
+ - **Inception** topic first appears, initial framing
67
+ - **Exploration** — multiple approaches considered, debate
68
+ - **Decision** — specific approach chosen
69
+ - **Implementation** — execution details, adjustments
70
+ - **Resolution** — outcome, lessons learned (or abandonment)
65
71
 
66
- - **Discovery** first mentions, exploratory, lots of questions
67
- - **Investigation** — deeper dives, multiple notes, gathering evidence
68
- - **Decision** — a conclusion was reached, direction was set
69
- - **Implementation** — action taken, results documented
70
- - **Reflection** — looking back, lessons learned, re-evaluation
72
+ A topic may skip phases, cycle back, or have multiple parallel tracks.
71
73
 
72
- Not every topic will have all phases. Some may cycle through phases multiple times.
74
+ ### Step 4: Identify Turning Points
73
75
 
74
- ### Step 4: Detect Turning Points
76
+ Highlight moments where the trajectory changed:
75
77
 
76
- Flag moments where the user's understanding or stance shifted:
78
+ - "We switched from X to Y" explicit change
79
+ - Data or evidence that contradicted previous assumptions
80
+ - New stakeholder or constraint that shifted direction
81
+ - External event (tech release, policy change) that affected the topic
77
82
 
78
- - Contradictions: "In March you wrote X, but by June you concluded Y"
79
- - New information: "After reading [[Source]], your approach changed"
80
- - Decisions: "The meeting on 2026-04-10 resolved the debate"
81
- - Abandoned threads: "You explored X but never followed up after May"
83
+ ### Step 5: Find Contradictions
82
84
 
83
- ### Step 5: Present the Trace
85
+ Compare statements across time:
84
86
 
85
- Format the output as a structured timeline:
87
+ - "In Note A (March 1): we decided X"
88
+ - "In Note B (April 15): actually Y is better because..."
89
+ - Is this a genuine contradiction, an evolution of thinking, or a context-dependent difference?
86
90
 
87
- ```markdown
88
- # Trace: {Topic}
91
+ Flag genuine contradictions. Note the dates, sources, and nature of the conflict.
89
92
 
90
- Traced across {N} notes, spanning {date range}.
93
+ ### Step 6: Present Timeline
91
94
 
92
- ## Timeline
95
+ ```markdown
96
+ # Timeline: {topic}
93
97
 
94
- ### Phase 1: Discovery ({date range})
98
+ Traced across {N} notes spanning {start date} to {end date}.
95
99
 
96
- - **{date}** — [[Note Name]]: {1-2 sentence summary}
97
- > "{key quote from the note}"
98
- - **{date}** — [[Note Name]]: {summary}
100
+ ---
99
101
 
100
- ### Phase 2: Investigation ({date range})
102
+ ## Phase 1: {Phase Name} ({date range})
101
103
 
102
- - **{date}** [[Note Name]]: {summary}
104
+ **What was happening**: {brief context}
103
105
 
104
- ### Turning Point: {description}
106
+ - **{date}** — [[Note A]]: {what happened / what was decided}
107
+ - **{date}** — [[Note B]]: {what changed / what was added}
105
108
 
106
- - **{date}** [[Note Name]]: {what changed and why}
109
+ **Key insight**: {what this phase reveals}
107
110
 
108
- ### Phase 3: Decision ({date range})
111
+ ---
109
112
 
110
- - **{date}** [[Note Name]]: {summary}
113
+ ## Phase 2: {Phase Name} ({date range})
114
+ ...
111
115
 
112
- ## Insights
116
+ ---
113
117
 
114
- - **Evolution**: {how the idea changed from start to now}
115
- - **Key influences**: {notes/people/events that shaped the direction}
116
- - **Open threads**: {aspects mentioned but never resolved}
117
- - **Current state**: {where the topic stands now}
118
+ ## Turning Points
118
119
 
119
- ## Related Traces
120
+ 1. **{date}**: {what changed and why it mattered} — [[source note]]
120
121
 
121
- Consider tracing these connected topics:
122
- - [[Related Topic 1]] — mentioned in {N} of the same notes
123
- - [[Related Topic 2]] — appears to be a dependency
124
- ```
122
+ ## Contradictions Found
125
123
 
126
- ### Step 6: Save (Optional)
124
+ - [[Note A]] says X, but [[Note B]] says Y — {resolution if known}
127
125
 
128
- At the end of your trace, ask:
126
+ ## Current State
129
127
 
130
- > "Would you like me to save this as a note?"
128
+ {Where things stand now the most recent position on this topic}
131
129
 
132
- If the user confirms, save the trace with frontmatter:
130
+ ## Unanswered Questions
133
131
 
134
- ```yaml
135
- ---
136
- title: "Trace: {Topic}"
137
- note_type: literature
138
- type: reference
139
- domain: <inferred from topic>
140
- date: <today>
141
- references:
142
- - "[[note1]]"
143
- - "[[note2]]"
144
- tags: [trace, <topic-tag>]
145
- ---
132
+ {What the vault doesn't tell us about this topic's evolution}
146
133
  ```
147
134
 
148
- Use `obsidian create` to save. Ask the user where they'd like it saved.
149
-
150
135
  ## Key Principles
151
136
 
152
- - **Chronological accuracy**: Always verify dates. Don't guess if a note has no date, say "undated."
153
- - **Quote the source**: Include brief direct quotes so the user can verify your interpretation.
154
- - **Don't infer intent**: Report what the notes say, not what you think the user meant. Flag contradictions but don't resolve them.
155
- - **Respect scope**: Only trace what's in the vault. Don't fill gaps with general knowledge.
156
- - **Highlight gaps**: If there's a 3-month silence on a topic, note it. Gaps are informative.
137
+ - **Chronology is authority.** The timeline must follow actual note dates, not inferred order.
138
+ - **Evidence-based.** Every claim in the timeline must cite a specific note.
139
+ - **Show the messiness.** Ideas rarely evolve linearly. Show the false starts, reversals, and parallel tracks.
140
+ - **Flag contradictions.** Don't resolve them present both sides and let the user decide.
141
+ - **Obsidian is first workbench.** All note operations go through Obsidian CLI.