@jayjiang/byoao 1.1.2 → 2.0.1

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 (156) 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/{src/skills/ask.md → dist/assets/skills/ask/SKILL.md} +30 -27
  11. package/dist/assets/skills/ask.md +28 -27
  12. package/dist/assets/skills/challenge/SKILL.md +134 -0
  13. package/dist/assets/skills/challenge.md +79 -121
  14. package/dist/assets/skills/connect/SKILL.md +126 -0
  15. package/dist/assets/skills/connect.md +75 -163
  16. package/dist/assets/skills/cook/SKILL.md +170 -0
  17. package/dist/assets/skills/cook.md +167 -0
  18. package/dist/assets/skills/diagnose/SKILL.md +134 -0
  19. package/dist/assets/skills/diagnose.md +102 -43
  20. package/dist/assets/skills/drift/SKILL.md +123 -0
  21. package/dist/assets/skills/drift.md +64 -165
  22. package/dist/assets/skills/health/SKILL.md +65 -0
  23. package/dist/assets/skills/health.md +63 -0
  24. package/{src/skills/ideas.md → dist/assets/skills/ideas/SKILL.md} +11 -10
  25. package/dist/assets/skills/ideas.md +11 -10
  26. package/dist/assets/skills/organize/SKILL.md +109 -0
  27. package/dist/assets/skills/organize.md +56 -155
  28. package/dist/assets/skills/prep/SKILL.md +65 -0
  29. package/dist/assets/skills/prep.md +63 -0
  30. package/dist/assets/skills/trace/SKILL.md +143 -0
  31. package/dist/assets/skills/trace.md +75 -90
  32. package/dist/assets/skills/wiki/SKILL.md +127 -0
  33. package/dist/assets/skills/wiki.md +77 -178
  34. package/dist/cli/cli-program.js +18 -15
  35. package/dist/cli/cli-program.js.map +1 -1
  36. package/dist/cli/installer.js +54 -29
  37. package/dist/cli/installer.js.map +1 -1
  38. package/dist/hooks/idle-suggestions.js +4 -4
  39. package/dist/hooks/idle-suggestions.js.map +1 -1
  40. package/dist/hooks/system-transform.js +35 -1
  41. package/dist/hooks/system-transform.js.map +1 -1
  42. package/dist/index.js +455 -636
  43. package/dist/index.js.map +1 -1
  44. package/dist/plugin-config.js +6 -32
  45. package/dist/plugin-config.js.map +1 -1
  46. package/dist/tools/init-vault.js +8 -38
  47. package/dist/tools/init-vault.js.map +1 -1
  48. package/dist/tools/vault-doctor.js +1 -1
  49. package/dist/tools/vault-doctor.js.map +1 -1
  50. package/dist/tools/vault-status.js +1 -1
  51. package/dist/tools/vault-status.js.map +1 -1
  52. package/dist/vault/__tests__/create.test.js +48 -116
  53. package/dist/vault/__tests__/create.test.js.map +1 -1
  54. package/dist/vault/__tests__/doctor.test.js +14 -2
  55. package/dist/vault/__tests__/doctor.test.js.map +1 -1
  56. package/dist/vault/__tests__/manifest.test.js +2 -2
  57. package/dist/vault/__tests__/manifest.test.js.map +1 -1
  58. package/dist/vault/__tests__/status.test.js +12 -0
  59. package/dist/vault/__tests__/status.test.js.map +1 -1
  60. package/dist/vault/__tests__/upgrade.test.js +3 -3
  61. package/dist/vault/__tests__/upgrade.test.js.map +1 -1
  62. package/dist/vault/create.js +86 -196
  63. package/dist/vault/create.js.map +1 -1
  64. package/dist/vault/doctor.js +49 -0
  65. package/dist/vault/doctor.js.map +1 -1
  66. package/dist/vault/manifest.js +2 -2
  67. package/dist/vault/manifest.js.map +1 -1
  68. package/dist/vault/preset.js +10 -4
  69. package/dist/vault/preset.js.map +1 -1
  70. package/dist/vault/self-update.js +1 -1
  71. package/dist/vault/status.js +24 -0
  72. package/dist/vault/status.js.map +1 -1
  73. package/dist/vault/upgrade.js +165 -23
  74. package/dist/vault/upgrade.js.map +1 -1
  75. package/package.json +1 -1
  76. package/src/assets/obsidian-skills/byoao-conventions.md +9 -6
  77. package/src/assets/obsidian-skills/vault-thinking.md +6 -5
  78. package/src/assets/presets/common/AGENTS.md.hbs +23 -19
  79. package/src/assets/presets/common/SCHEMA.md.hbs +57 -0
  80. package/src/assets/presets/common/Start Here.md.hbs +29 -40
  81. package/src/assets/presets/minimal/preset.json +3 -3
  82. package/src/assets/presets/pm-tpm/preset.json +2 -2
  83. package/src/skills/ask/SKILL.md +135 -0
  84. package/src/skills/challenge/SKILL.md +134 -0
  85. package/src/skills/connect/SKILL.md +126 -0
  86. package/src/skills/cook/SKILL.md +170 -0
  87. package/src/skills/diagnose/SKILL.md +134 -0
  88. package/src/skills/drift/SKILL.md +123 -0
  89. package/src/skills/health/SKILL.md +65 -0
  90. package/src/skills/ideas/SKILL.md +173 -0
  91. package/src/skills/organize/SKILL.md +109 -0
  92. package/src/skills/prep/SKILL.md +65 -0
  93. package/src/skills/trace/SKILL.md +143 -0
  94. package/src/skills/wiki/SKILL.md +127 -0
  95. package/dist/assets/presets/common/Glossary.md.hbs +0 -16
  96. package/dist/assets/presets/common/obsidian/daily-notes.json +0 -5
  97. package/dist/assets/presets/common/obsidian/templates.json +0 -3
  98. package/dist/assets/presets/common/templates/Daily Note.md +0 -19
  99. package/dist/assets/presets/common/templates/Decision Record.md +0 -32
  100. package/dist/assets/presets/common/templates/Investigation.md +0 -34
  101. package/dist/assets/presets/common/templates/Meeting Notes.md +0 -25
  102. package/dist/assets/skills/emerge.md +0 -168
  103. package/dist/assets/skills/weave.md +0 -287
  104. package/dist/tools/add-glossary-term.js +0 -21
  105. package/dist/tools/add-glossary-term.js.map +0 -1
  106. package/dist/tools/add-person.js +0 -21
  107. package/dist/tools/add-person.js.map +0 -1
  108. package/dist/tools/add-project.js +0 -24
  109. package/dist/tools/add-project.js.map +0 -1
  110. package/dist/tools/graph-health.js +0 -25
  111. package/dist/tools/graph-health.js.map +0 -1
  112. package/dist/tools/note-read.js +0 -19
  113. package/dist/tools/note-read.js.map +0 -1
  114. package/dist/tools/search-vault.js +0 -22
  115. package/dist/tools/search-vault.js.map +0 -1
  116. package/dist/vault/__tests__/glossary.test.js +0 -68
  117. package/dist/vault/__tests__/glossary.test.js.map +0 -1
  118. package/dist/vault/__tests__/graph-health.test.js +0 -102
  119. package/dist/vault/__tests__/graph-health.test.js.map +0 -1
  120. package/dist/vault/__tests__/member.test.js +0 -85
  121. package/dist/vault/__tests__/member.test.js.map +0 -1
  122. package/dist/vault/__tests__/note-read.test.js +0 -71
  123. package/dist/vault/__tests__/note-read.test.js.map +0 -1
  124. package/dist/vault/__tests__/obsidian-cli.test.js +0 -108
  125. package/dist/vault/__tests__/obsidian-cli.test.js.map +0 -1
  126. package/dist/vault/__tests__/search-vault.test.js +0 -93
  127. package/dist/vault/__tests__/search-vault.test.js.map +0 -1
  128. package/dist/vault/glossary.js +0 -27
  129. package/dist/vault/glossary.js.map +0 -1
  130. package/dist/vault/graph-health.js +0 -83
  131. package/dist/vault/graph-health.js.map +0 -1
  132. package/dist/vault/member.js +0 -67
  133. package/dist/vault/member.js.map +0 -1
  134. package/dist/vault/note-read.js +0 -70
  135. package/dist/vault/note-read.js.map +0 -1
  136. package/dist/vault/project.js +0 -68
  137. package/dist/vault/project.js.map +0 -1
  138. package/dist/vault/retrieval-types.js +0 -5
  139. package/dist/vault/retrieval-types.js.map +0 -1
  140. package/dist/vault/search-vault.js +0 -87
  141. package/dist/vault/search-vault.js.map +0 -1
  142. package/src/assets/presets/common/obsidian/daily-notes.json +0 -5
  143. package/src/assets/presets/common/obsidian/templates.json +0 -3
  144. package/src/assets/presets/common/templates/Daily Note.md +0 -19
  145. package/src/assets/presets/common/templates/Decision Record.md +0 -32
  146. package/src/assets/presets/common/templates/Investigation.md +0 -34
  147. package/src/assets/presets/common/templates/Meeting Notes.md +0 -25
  148. package/src/skills/challenge.md +0 -174
  149. package/src/skills/connect.md +0 -213
  150. package/src/skills/diagnose.md +0 -72
  151. package/src/skills/drift.md +0 -223
  152. package/src/skills/emerge.md +0 -168
  153. package/src/skills/organize.md +0 -206
  154. package/src/skills/trace.md +0 -156
  155. package/src/skills/weave.md +0 -287
  156. package/src/skills/wiki.md +0 -227
@@ -1,168 +0,0 @@
1
- ---
2
- name: emerge
3
- description: Surface conclusions, patterns, and insights the vault implies but never explicitly states. Analyzes clusters, orphans, and cross-domain connections. Use when the user asks "what patterns do you see", "what am I missing", "analyze my vault", "find hidden connections", or wants a big-picture review of their knowledge base.
4
- ---
5
-
6
- # /emerge — Surface Hidden Patterns
7
-
8
- You are a pattern recognition analyst. Your job is to read across the user's vault and surface insights that the notes collectively imply but never explicitly state — hidden conclusions, recurring themes, unnoticed contradictions, and latent connections.
9
-
10
- ## Prerequisites Check
11
-
12
- ```bash
13
- obsidian --version
14
- ```
15
-
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.
21
-
22
- ## Parameters
23
-
24
- - **scope** (optional): Limit analysis to a folder, domain, or tag. Default: entire vault.
25
- - **depth** (optional): "quick" (top-level scan) or "deep" (read every note in scope). Default: "quick".
26
- - **output** (optional): If set, save findings as a note at this path.
27
-
28
- ## Process
29
-
30
- ### Sampling Strategy
31
-
32
- If a domain or 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: Map the Vault
35
-
36
- Build a structural picture:
37
-
38
- ```bash
39
- obsidian list
40
- obsidian properties sort=count counts
41
- obsidian tags
42
- ```
43
-
44
- Identify:
45
- - Total notes and their distribution across folders/domains
46
- - Most-used tags and properties
47
- - Cluster density (which areas have many interconnected notes vs sparse ones)
48
-
49
- ### Step 2: Find Structural Signals
50
-
51
- Use graph-level queries to identify interesting patterns:
52
-
53
- **Orphan notes** — notes with no links in or out:
54
- Use `byoao_graph_health` or scan notes checking for those with zero wikilinks (no `[[` in content) and zero backlinks.
55
- Orphans may contain ideas the user hasn't connected yet.
56
-
57
- **Dead-end notes** — notes that link out but nobody links to them:
58
- Scan for notes with outgoing wikilinks but no backlinks.
59
-
60
- **Hub notes** — notes with unusually many backlinks:
61
- ```bash
62
- obsidian backlinks "<note>"
63
- ```
64
- Hubs reveal what the user's thinking centers around.
65
-
66
- **Tag clusters** — tags that always co-occur:
67
- If `#migration` and `#payments` always appear together, there's an implicit connection.
68
-
69
- ### Step 3: Cross-Domain Analysis
70
-
71
- For each domain (from frontmatter `domain` field or folder grouping):
72
-
73
- 1. **Read a sample of notes** (5-10 per domain, prioritizing recent and highly-linked)
74
- 2. **Extract key themes** — what topics recur within the domain?
75
- 3. **Look for cross-domain bridges** — concepts mentioned in multiple domains
76
- 4. **Identify tension** — contradictory statements across domains or time periods
77
-
78
- ### Step 4: Pattern Detection
79
-
80
- Look for these specific pattern types:
81
-
82
- **Recurring questions**: The same question asked in multiple notes but never answered.
83
- > "You've asked 'what's our rollback strategy?' in 4 different meeting notes but no note contains an answer."
84
-
85
- **Implicit decisions**: A direction was taken without a documented decision.
86
- > "Notes shifted from Option A to Option B around April, but no decision record exists."
87
-
88
- **Convergent threads**: Separate lines of thinking that are heading toward the same conclusion.
89
- > "Your notes on 'API rate limiting' and 'user quotas' both point toward a tiered access model, but neither note references the other."
90
-
91
- **Forgotten threads**: Topics that received attention then went silent.
92
- > "'Data mesh' appears in 6 notes between Jan-Mar but hasn't been mentioned since."
93
-
94
- **Expertise gaps**: The vault references a topic repeatedly but always superficially.
95
- > "'Kubernetes networking' appears in 12 notes but always as a dependency, never deeply explored."
96
-
97
- **Contradictions**: Conflicting statements across notes.
98
- > "In [[Note A]] you wrote 'we should avoid microservices' but [[Note B]] proposes splitting the monolith."
99
-
100
- ### Step 5: Synthesize Insights
101
-
102
- For each pattern found, formulate an insight:
103
-
104
- ```markdown
105
- ## Insight: {title}
106
-
107
- **Pattern**: {what you observed}
108
- **Evidence**: {list of notes with brief quotes}
109
- **Implication**: {what this might mean — phrased as a question, not a conclusion}
110
- **Suggested action**: {what the user could do — write a note, make a decision, connect notes}
111
- ```
112
-
113
- ### Step 6: Present Findings
114
-
115
- ```markdown
116
- # Emerge: Vault Patterns
117
-
118
- Analyzed {N} notes across {M} domains.
119
-
120
- ## Key Findings
121
-
122
- ### 1. {Insight title}
123
- {Pattern, evidence, implication, action}
124
-
125
- ### 2. {Insight title}
126
- ...
127
-
128
- ## Structural Observations
129
-
130
- - **Most connected**: [[Note]] ({N} backlinks) — your thinking hub
131
- - **Most isolated**: {N} orphan notes that may contain undeveloped ideas
132
- - **Busiest domain**: {domain} ({N} notes)
133
- - **Thinnest domain**: {domain} ({N} notes) — possible blind spot
134
-
135
- ## Suggested Next Steps
136
-
137
- 1. {Actionable suggestion — e.g. "Connect [[A]] and [[B]] — they discuss the same problem"}
138
- 2. {Actionable suggestion — e.g. "Write a decision record for the implicit choice between X and Y"}
139
- 3. {Actionable suggestion — e.g. "Run /trace on 'data mesh' to understand why it was abandoned"}
140
- ```
141
-
142
- ### Step 7: Save (Optional)
143
-
144
- At the end of your findings, ask:
145
-
146
- > "Would you like me to save this as a note?"
147
-
148
- If the user confirms, save with frontmatter:
149
-
150
- ```yaml
151
- ---
152
- title: "Emerge: Vault Patterns"
153
- note_type: literature
154
- type: analysis
155
- date: <today>
156
- tags: [emerge, patterns]
157
- ---
158
- ```
159
-
160
- Use `obsidian create` to save. Ask the user where they'd like it saved.
161
-
162
- ## Key Principles
163
-
164
- - **Show, don't tell**: Always cite specific notes and quotes. Never claim a pattern exists without evidence.
165
- - **Questions over conclusions**: Frame implications as questions the user should consider, not answers you've decided.
166
- - **Respect user judgment**: The user may be aware of patterns and have chosen not to act. Present findings neutrally.
167
- - **Prioritize actionable insights**: "These two notes should link to each other" is more useful than "your vault has 12 orphans."
168
- - **Deep mode means thorough**: In "deep" mode, read every note in scope. In "quick" mode, use structural signals and sampling.
@@ -1,206 +0,0 @@
1
- ---
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.
4
- ---
5
-
6
- # /organize — Vault Directory Reorganization
7
-
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.
9
-
10
- ## Prerequisites Check
11
-
12
- **Before doing anything else:**
13
-
14
- 1. Verify Obsidian CLI is available:
15
-
16
- ```bash
17
- obsidian --version
18
- ```
19
-
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
- ```
42
-
43
- ## Parameters
44
-
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 |
61
-
62
- ## Process
63
-
64
- ### Step 1: Analyze Current Structure
65
-
66
- Build a complete picture of the vault:
67
-
68
- ```bash
69
- obsidian list
70
- ```
71
-
72
- Then read frontmatter for every file to build a map of `path → {type, domain, project, tags}`. Use batch reading:
73
-
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
84
-
85
- For each file with a `type` property, determine if it should move based on this mapping:
86
-
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/` | |
99
-
100
- **Smart rules — when NOT to move:**
101
-
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
106
-
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
111
-
112
- ### Step 3: Present Plan
113
-
114
- Group proposed moves by category and show a clear summary:
115
-
116
- ```
117
- /organize analysis complete.
118
-
119
- ## Files to move (23 of 504)
120
-
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
125
-
126
- ### Meeting notes → Meetings/
127
- standup-2026-03-15.md → Meetings/standup-2026-03-15.md
128
-
129
- ### Reference docs → Knowledge/
130
- API_Overview.md → Knowledge/API_Overview.md
131
-
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
- ```
147
-
148
- Wait for user response before proceeding.
149
-
150
- ### Step 4: Execute Moves
151
-
152
- For each approved move, use `obsidian move`:
153
-
154
- ```bash
155
- obsidian move file="HANDOVER-2026-03-04" to="Knowledge/Handovers/"
156
- ```
157
-
158
- **Execution rules:**
159
-
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..."
167
-
168
- **Why `obsidian move` instead of `mv`:**
169
-
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)
195
- ```
196
-
197
- If any broken links are found, report them and suggest fixes.
198
-
199
- ## Important Guidelines
200
-
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
@@ -1,156 +0,0 @@
1
- ---
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.
4
- ---
5
-
6
- # /trace — Track Idea Evolution
7
-
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.
9
-
10
- ## Prerequisites Check
11
-
12
- ```bash
13
- obsidian --version
14
- ```
15
-
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.
21
-
22
- ## Parameters
23
-
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.
27
-
28
- ## Process
29
-
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
35
-
36
- Search for the topic across the vault using multiple strategies:
37
-
38
- ```bash
39
- obsidian search "<topic>"
40
- ```
41
-
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>`
46
-
47
- ```bash
48
- obsidian backlinks "<topic>"
49
- ```
50
-
51
- ### Step 2: Build Timeline
52
-
53
- For each note that mentions the topic:
54
-
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?
59
-
60
- Sort all mentions chronologically.
61
-
62
- ### Step 3: Identify Phases
63
-
64
- Look for natural phases in how the topic evolved:
65
-
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
71
-
72
- Not every topic will have all phases. Some may cycle through phases multiple times.
73
-
74
- ### Step 4: Detect Turning Points
75
-
76
- Flag moments where the user's understanding or stance shifted:
77
-
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"
82
-
83
- ### Step 5: Present the Trace
84
-
85
- Format the output as a structured timeline:
86
-
87
- ```markdown
88
- # Trace: {Topic}
89
-
90
- Traced across {N} notes, spanning {date range}.
91
-
92
- ## Timeline
93
-
94
- ### Phase 1: Discovery ({date range})
95
-
96
- - **{date}** — [[Note Name]]: {1-2 sentence summary}
97
- > "{key quote from the note}"
98
- - **{date}** — [[Note Name]]: {summary}
99
-
100
- ### Phase 2: Investigation ({date range})
101
-
102
- - **{date}** — [[Note Name]]: {summary}
103
-
104
- ### Turning Point: {description}
105
-
106
- - **{date}** — [[Note Name]]: {what changed and why}
107
-
108
- ### Phase 3: Decision ({date range})
109
-
110
- - **{date}** — [[Note Name]]: {summary}
111
-
112
- ## Insights
113
-
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
-
119
- ## Related Traces
120
-
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
- ```
125
-
126
- ### Step 6: Save (Optional)
127
-
128
- At the end of your trace, ask:
129
-
130
- > "Would you like me to save this as a note?"
131
-
132
- If the user confirms, save the trace with frontmatter:
133
-
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
- ---
146
- ```
147
-
148
- Use `obsidian create` to save. Ask the user where they'd like it saved.
149
-
150
- ## Key Principles
151
-
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.