@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.
- package/dist/__tests__/plugin-config.test.js +7 -10
- package/dist/__tests__/plugin-config.test.js.map +1 -1
- package/dist/assets/obsidian-skills/byoao-conventions.md +30 -54
- package/dist/assets/obsidian-skills/vault-thinking.md +6 -5
- package/dist/assets/presets/common/AGENTS.md.hbs +29 -46
- package/dist/assets/presets/common/SCHEMA.md.hbs +57 -0
- package/dist/assets/presets/common/Start Here.md.hbs +29 -40
- package/dist/assets/presets/minimal/preset.json +3 -3
- package/dist/assets/presets/pm-tpm/preset.json +2 -2
- package/dist/assets/skills/ask.md +28 -27
- package/dist/assets/skills/challenge.md +79 -121
- package/dist/assets/skills/connect.md +75 -163
- package/dist/assets/skills/cook.md +167 -0
- package/dist/assets/skills/diagnose.md +102 -43
- package/dist/assets/skills/drift.md +64 -165
- package/dist/assets/skills/health.md +63 -0
- package/dist/assets/skills/ideas.md +11 -10
- package/dist/assets/skills/organize.md +56 -155
- package/dist/assets/skills/prep.md +63 -0
- package/dist/assets/skills/trace.md +75 -90
- package/dist/assets/skills/wiki.md +77 -178
- package/dist/cli/cli-program.js +17 -14
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/installer.js +10 -4
- package/dist/cli/installer.js.map +1 -1
- package/dist/hooks/idle-suggestions.js +4 -4
- package/dist/hooks/idle-suggestions.js.map +1 -1
- package/dist/hooks/system-transform.js +35 -1
- package/dist/hooks/system-transform.js.map +1 -1
- package/dist/index.js +395 -623
- package/dist/index.js.map +1 -1
- package/dist/plugin-config.js +6 -32
- package/dist/plugin-config.js.map +1 -1
- package/dist/tools/init-vault.js +8 -38
- package/dist/tools/init-vault.js.map +1 -1
- package/dist/tools/vault-doctor.js +1 -1
- package/dist/tools/vault-doctor.js.map +1 -1
- package/dist/tools/vault-status.js +1 -1
- package/dist/tools/vault-status.js.map +1 -1
- package/dist/vault/__tests__/create.test.js +47 -115
- package/dist/vault/__tests__/create.test.js.map +1 -1
- package/dist/vault/__tests__/doctor.test.js +14 -2
- package/dist/vault/__tests__/doctor.test.js.map +1 -1
- package/dist/vault/__tests__/manifest.test.js +2 -2
- package/dist/vault/__tests__/manifest.test.js.map +1 -1
- package/dist/vault/__tests__/status.test.js +12 -0
- package/dist/vault/__tests__/status.test.js.map +1 -1
- package/dist/vault/__tests__/upgrade.test.js +3 -3
- package/dist/vault/__tests__/upgrade.test.js.map +1 -1
- package/dist/vault/create.js +75 -188
- package/dist/vault/create.js.map +1 -1
- package/dist/vault/doctor.js +49 -0
- package/dist/vault/doctor.js.map +1 -1
- package/dist/vault/manifest.js +1 -1
- package/dist/vault/preset.js +10 -4
- package/dist/vault/preset.js.map +1 -1
- package/dist/vault/self-update.js +1 -1
- package/dist/vault/status.js +24 -0
- package/dist/vault/status.js.map +1 -1
- package/dist/vault/upgrade.js +120 -16
- package/dist/vault/upgrade.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/obsidian-skills/byoao-conventions.md +9 -6
- package/src/assets/obsidian-skills/vault-thinking.md +6 -5
- package/src/assets/presets/common/AGENTS.md.hbs +23 -19
- package/src/assets/presets/common/SCHEMA.md.hbs +57 -0
- package/src/assets/presets/common/Start Here.md.hbs +29 -40
- package/src/assets/presets/minimal/preset.json +3 -3
- package/src/assets/presets/pm-tpm/preset.json +2 -2
- package/src/skills/ask.md +28 -27
- package/src/skills/challenge.md +79 -121
- package/src/skills/connect.md +75 -163
- package/src/skills/cook.md +167 -0
- package/src/skills/diagnose.md +102 -43
- package/src/skills/drift.md +64 -165
- package/src/skills/health.md +63 -0
- package/src/skills/ideas.md +11 -10
- package/src/skills/organize.md +56 -155
- package/src/skills/prep.md +63 -0
- package/src/skills/trace.md +75 -90
- package/src/skills/wiki.md +77 -178
- package/dist/assets/presets/common/Glossary.md.hbs +0 -16
- package/dist/assets/presets/common/obsidian/daily-notes.json +0 -5
- package/dist/assets/presets/common/obsidian/templates.json +0 -3
- package/dist/assets/presets/common/templates/Daily Note.md +0 -19
- package/dist/assets/presets/common/templates/Decision Record.md +0 -32
- package/dist/assets/presets/common/templates/Investigation.md +0 -34
- package/dist/assets/presets/common/templates/Meeting Notes.md +0 -25
- package/dist/assets/skills/emerge.md +0 -168
- package/dist/assets/skills/weave.md +0 -287
- package/dist/tools/add-glossary-term.js +0 -21
- package/dist/tools/add-glossary-term.js.map +0 -1
- package/dist/tools/add-person.js +0 -21
- package/dist/tools/add-person.js.map +0 -1
- package/dist/tools/add-project.js +0 -24
- package/dist/tools/add-project.js.map +0 -1
- package/dist/tools/graph-health.js +0 -25
- package/dist/tools/graph-health.js.map +0 -1
- package/dist/tools/note-read.js +0 -19
- package/dist/tools/note-read.js.map +0 -1
- package/dist/tools/search-vault.js +0 -22
- package/dist/tools/search-vault.js.map +0 -1
- package/dist/vault/__tests__/glossary.test.js +0 -68
- package/dist/vault/__tests__/glossary.test.js.map +0 -1
- package/dist/vault/__tests__/graph-health.test.js +0 -102
- package/dist/vault/__tests__/graph-health.test.js.map +0 -1
- package/dist/vault/__tests__/member.test.js +0 -85
- package/dist/vault/__tests__/member.test.js.map +0 -1
- package/dist/vault/__tests__/note-read.test.js +0 -71
- package/dist/vault/__tests__/note-read.test.js.map +0 -1
- package/dist/vault/__tests__/obsidian-cli.test.js +0 -108
- package/dist/vault/__tests__/obsidian-cli.test.js.map +0 -1
- package/dist/vault/__tests__/search-vault.test.js +0 -93
- package/dist/vault/__tests__/search-vault.test.js.map +0 -1
- package/dist/vault/glossary.js +0 -27
- package/dist/vault/glossary.js.map +0 -1
- package/dist/vault/graph-health.js +0 -83
- package/dist/vault/graph-health.js.map +0 -1
- package/dist/vault/member.js +0 -67
- package/dist/vault/member.js.map +0 -1
- package/dist/vault/note-read.js +0 -70
- package/dist/vault/note-read.js.map +0 -1
- package/dist/vault/project.js +0 -68
- package/dist/vault/project.js.map +0 -1
- package/dist/vault/retrieval-types.js +0 -5
- package/dist/vault/retrieval-types.js.map +0 -1
- package/dist/vault/search-vault.js +0 -87
- package/dist/vault/search-vault.js.map +0 -1
- package/src/assets/presets/common/obsidian/daily-notes.json +0 -5
- package/src/assets/presets/common/obsidian/templates.json +0 -3
- package/src/assets/presets/common/templates/Daily Note.md +0 -19
- package/src/assets/presets/common/templates/Decision Record.md +0 -32
- package/src/assets/presets/common/templates/Investigation.md +0 -34
- package/src/assets/presets/common/templates/Meeting Notes.md +0 -25
- package/src/skills/emerge.md +0 -168
- package/src/skills/weave.md +0 -287
package/src/skills/organize.md
CHANGED
|
@@ -1,206 +1,107 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: organize
|
|
3
|
-
description:
|
|
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 —
|
|
9
|
+
# /organize — Directory Organization
|
|
7
10
|
|
|
8
|
-
You are a
|
|
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` (
|
|
46
|
-
- **
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
41
|
+
Agent pages should live in their designated directories:
|
|
86
42
|
|
|
87
|
-
| `type` |
|
|
88
|
-
|
|
89
|
-
| `
|
|
90
|
-
| `
|
|
91
|
-
| `
|
|
92
|
-
| `
|
|
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
|
-
|
|
50
|
+
For each agent page, check:
|
|
51
|
+
- Does its current directory match its `type`?
|
|
52
|
+
- If not, suggest a move
|
|
101
53
|
|
|
102
|
-
|
|
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
|
-
**
|
|
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
|
-
|
|
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
|
-
|
|
115
|
-
|
|
116
|
-
```
|
|
117
|
-
/organize analysis complete.
|
|
61
|
+
### Step 4: Check Naming Conventions
|
|
118
62
|
|
|
119
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
127
|
-
standup-2026-03-15.md → Meetings/standup-2026-03-15.md
|
|
70
|
+
### Step 5: Suggest Moves
|
|
128
71
|
|
|
129
|
-
|
|
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
|
-
|
|
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
|
|
82
|
+
### Step 6: Apply Moves (If Confirmed)
|
|
151
83
|
|
|
152
|
-
|
|
84
|
+
Use Obsidian CLI to rename/move files:
|
|
153
85
|
|
|
154
86
|
```bash
|
|
155
|
-
obsidian
|
|
87
|
+
obsidian rename file="old-path.md" new_name="new-path.md"
|
|
156
88
|
```
|
|
157
89
|
|
|
158
|
-
|
|
90
|
+
Always show the full plan before applying. Never move files silently.
|
|
159
91
|
|
|
160
|
-
|
|
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
|
-
|
|
94
|
+
After moving files, check that all wikilinks to the moved files are still valid:
|
|
169
95
|
|
|
170
|
-
|
|
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
|
-
|
|
100
|
+
Obsidian typically handles wikilink updates on rename automatically, but verify for safety.
|
|
198
101
|
|
|
199
|
-
##
|
|
102
|
+
## Key Principles
|
|
200
103
|
|
|
201
|
-
- **
|
|
202
|
-
- **
|
|
203
|
-
- **User
|
|
204
|
-
-
|
|
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
|
package/src/skills/trace.md
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: trace
|
|
3
|
-
description:
|
|
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 —
|
|
9
|
+
# /trace — Chronological Timeline
|
|
7
10
|
|
|
8
|
-
You are a
|
|
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 /
|
|
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,
|
|
25
|
-
- **
|
|
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
|
-
###
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
56
|
-
2.
|
|
57
|
-
3.
|
|
58
|
-
|
|
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
|
-
|
|
62
|
+
### Step 3: Detect Phases
|
|
61
63
|
|
|
62
|
-
|
|
64
|
+
Group the timeline into phases:
|
|
63
65
|
|
|
64
|
-
|
|
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
|
-
|
|
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
|
-
|
|
74
|
+
### Step 4: Identify Turning Points
|
|
73
75
|
|
|
74
|
-
|
|
76
|
+
Highlight moments where the trajectory changed:
|
|
75
77
|
|
|
76
|
-
|
|
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
|
-
|
|
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
|
-
|
|
85
|
+
Compare statements across time:
|
|
84
86
|
|
|
85
|
-
|
|
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
|
-
|
|
88
|
-
# Trace: {Topic}
|
|
91
|
+
Flag genuine contradictions. Note the dates, sources, and nature of the conflict.
|
|
89
92
|
|
|
90
|
-
|
|
93
|
+
### Step 6: Present Timeline
|
|
91
94
|
|
|
92
|
-
|
|
95
|
+
```markdown
|
|
96
|
+
# Timeline: {topic}
|
|
93
97
|
|
|
94
|
-
|
|
98
|
+
Traced across {N} notes spanning {start date} to {end date}.
|
|
95
99
|
|
|
96
|
-
|
|
97
|
-
> "{key quote from the note}"
|
|
98
|
-
- **{date}** — [[Note Name]]: {summary}
|
|
100
|
+
---
|
|
99
101
|
|
|
100
|
-
|
|
102
|
+
## Phase 1: {Phase Name} ({date range})
|
|
101
103
|
|
|
102
|
-
|
|
104
|
+
**What was happening**: {brief context}
|
|
103
105
|
|
|
104
|
-
|
|
106
|
+
- **{date}** — [[Note A]]: {what happened / what was decided}
|
|
107
|
+
- **{date}** — [[Note B]]: {what changed / what was added}
|
|
105
108
|
|
|
106
|
-
|
|
109
|
+
**Key insight**: {what this phase reveals}
|
|
107
110
|
|
|
108
|
-
|
|
111
|
+
---
|
|
109
112
|
|
|
110
|
-
|
|
113
|
+
## Phase 2: {Phase Name} ({date range})
|
|
114
|
+
...
|
|
111
115
|
|
|
112
|
-
|
|
116
|
+
---
|
|
113
117
|
|
|
114
|
-
|
|
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
|
-
|
|
120
|
+
1. **{date}**: {what changed and why it mattered} — [[source note]]
|
|
120
121
|
|
|
121
|
-
|
|
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
|
-
|
|
124
|
+
- ⚠ [[Note A]] says X, but [[Note B]] says Y — {resolution if known}
|
|
127
125
|
|
|
128
|
-
|
|
126
|
+
## Current State
|
|
129
127
|
|
|
130
|
-
|
|
128
|
+
{Where things stand now — the most recent position on this topic}
|
|
131
129
|
|
|
132
|
-
|
|
130
|
+
## Unanswered Questions
|
|
133
131
|
|
|
134
|
-
|
|
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
|
-
- **
|
|
153
|
-
- **
|
|
154
|
-
- **
|
|
155
|
-
- **
|
|
156
|
-
- **
|
|
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.
|