@jayjiang/byoao 1.1.1 → 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 (139) 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 +133 -0
  11. package/dist/assets/skills/challenge.md +132 -0
  12. package/dist/assets/skills/connect.md +125 -0
  13. package/dist/assets/skills/cook.md +167 -0
  14. package/dist/assets/skills/diagnose.md +131 -0
  15. package/dist/assets/skills/drift.md +122 -0
  16. package/dist/assets/skills/health.md +63 -0
  17. package/dist/assets/skills/ideas.md +173 -0
  18. package/dist/assets/skills/organize.md +107 -0
  19. package/dist/assets/skills/prep.md +63 -0
  20. package/dist/assets/skills/trace.md +141 -0
  21. package/dist/assets/skills/wiki.md +126 -0
  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 +47 -6
  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 +397 -884
  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 +48 -116
  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 +13 -8
  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/__tests__/vault-detect.test.js +1 -13
  51. package/dist/vault/__tests__/vault-detect.test.js.map +1 -1
  52. package/dist/vault/create.js +76 -229
  53. package/dist/vault/create.js.map +1 -1
  54. package/dist/vault/doctor.js +49 -0
  55. package/dist/vault/doctor.js.map +1 -1
  56. package/dist/vault/manifest.js +1 -1
  57. package/dist/vault/preset.js +10 -4
  58. package/dist/vault/preset.js.map +1 -1
  59. package/dist/vault/self-update.js +1 -1
  60. package/dist/vault/status.js +24 -3
  61. package/dist/vault/status.js.map +1 -1
  62. package/dist/vault/upgrade.js +121 -18
  63. package/dist/vault/upgrade.js.map +1 -1
  64. package/dist/vault/vault-detect.js +2 -4
  65. package/dist/vault/vault-detect.js.map +1 -1
  66. package/package.json +1 -1
  67. package/src/assets/obsidian-skills/byoao-conventions.md +30 -54
  68. package/src/assets/obsidian-skills/vault-thinking.md +6 -5
  69. package/src/assets/presets/common/AGENTS.md.hbs +29 -46
  70. package/src/assets/presets/common/SCHEMA.md.hbs +57 -0
  71. package/src/assets/presets/common/Start Here.md.hbs +29 -40
  72. package/src/assets/presets/minimal/preset.json +3 -3
  73. package/src/assets/presets/pm-tpm/preset.json +2 -2
  74. package/src/skills/ask.md +133 -0
  75. package/src/skills/challenge.md +79 -115
  76. package/src/skills/connect.md +75 -156
  77. package/src/skills/cook.md +167 -0
  78. package/src/skills/diagnose.md +99 -41
  79. package/src/skills/drift.md +64 -159
  80. package/src/skills/health.md +63 -0
  81. package/src/skills/ideas.md +19 -12
  82. package/src/skills/organize.md +56 -156
  83. package/src/skills/prep.md +63 -0
  84. package/src/skills/trace.md +76 -84
  85. package/src/skills/wiki.md +126 -0
  86. package/dist/assets/presets/common/Glossary.md.hbs +0 -16
  87. package/dist/assets/presets/common/obsidian/daily-notes.json +0 -5
  88. package/dist/assets/presets/common/obsidian/templates.json +0 -3
  89. package/dist/assets/presets/common/templates/Daily Note.md +0 -19
  90. package/dist/assets/presets/common/templates/Decision Record.md +0 -32
  91. package/dist/assets/presets/common/templates/Investigation.md +0 -34
  92. package/dist/assets/presets/common/templates/Meeting Notes.md +0 -25
  93. package/dist/tools/add-glossary-term.js +0 -21
  94. package/dist/tools/add-glossary-term.js.map +0 -1
  95. package/dist/tools/add-person.js +0 -21
  96. package/dist/tools/add-person.js.map +0 -1
  97. package/dist/tools/add-project.js +0 -24
  98. package/dist/tools/add-project.js.map +0 -1
  99. package/dist/tools/graph-health.js +0 -25
  100. package/dist/tools/graph-health.js.map +0 -1
  101. package/dist/tools/note-read.js +0 -19
  102. package/dist/tools/note-read.js.map +0 -1
  103. package/dist/tools/search-vault.js +0 -22
  104. package/dist/tools/search-vault.js.map +0 -1
  105. package/dist/vault/__tests__/glossary.test.js +0 -68
  106. package/dist/vault/__tests__/glossary.test.js.map +0 -1
  107. package/dist/vault/__tests__/graph-health.test.js +0 -102
  108. package/dist/vault/__tests__/graph-health.test.js.map +0 -1
  109. package/dist/vault/__tests__/member.test.js +0 -85
  110. package/dist/vault/__tests__/member.test.js.map +0 -1
  111. package/dist/vault/__tests__/note-read.test.js +0 -71
  112. package/dist/vault/__tests__/note-read.test.js.map +0 -1
  113. package/dist/vault/__tests__/obsidian-cli.test.js +0 -108
  114. package/dist/vault/__tests__/obsidian-cli.test.js.map +0 -1
  115. package/dist/vault/__tests__/search-vault.test.js +0 -93
  116. package/dist/vault/__tests__/search-vault.test.js.map +0 -1
  117. package/dist/vault/glossary.js +0 -27
  118. package/dist/vault/glossary.js.map +0 -1
  119. package/dist/vault/graph-health.js +0 -83
  120. package/dist/vault/graph-health.js.map +0 -1
  121. package/dist/vault/member.js +0 -67
  122. package/dist/vault/member.js.map +0 -1
  123. package/dist/vault/note-read.js +0 -70
  124. package/dist/vault/note-read.js.map +0 -1
  125. package/dist/vault/project.js +0 -68
  126. package/dist/vault/project.js.map +0 -1
  127. package/dist/vault/retrieval-types.js +0 -5
  128. package/dist/vault/retrieval-types.js.map +0 -1
  129. package/dist/vault/search-vault.js +0 -87
  130. package/dist/vault/search-vault.js.map +0 -1
  131. package/src/assets/presets/common/Glossary.md.hbs +0 -16
  132. package/src/assets/presets/common/obsidian/daily-notes.json +0 -5
  133. package/src/assets/presets/common/obsidian/templates.json +0 -3
  134. package/src/assets/presets/common/templates/Daily Note.md +0 -19
  135. package/src/assets/presets/common/templates/Decision Record.md +0 -32
  136. package/src/assets/presets/common/templates/Investigation.md +0 -34
  137. package/src/assets/presets/common/templates/Meeting Notes.md +0 -25
  138. package/src/skills/emerge.md +0 -161
  139. package/src/skills/weave.md +0 -282
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: health
3
+ description: >
4
+ Scan agent-maintained directories for health issues: orphan pages, broken wikilinks,
5
+ stale content, frontmatter violations, tag taxonomy drift, oversized pages. Use when
6
+ the user wants to audit the knowledge base quality.
7
+ ---
8
+
9
+ # /health — Knowledge Health Check
10
+
11
+ Scan the four agent-maintained directories (`entities/`, `concepts/`, `comparisons/`, `queries/`)
12
+ for structural issues.
13
+
14
+ ## Prerequisites Check
15
+
16
+ ```bash
17
+ obsidian --version
18
+ ```
19
+
20
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
21
+
22
+ ## Scan Categories
23
+
24
+ ### 1. Orphan Pages
25
+ Pages with no inbound wikilinks from any other note (user notes or agent pages).
26
+ - Severity: **warning** for new pages (< 7 days old), **info** for older
27
+
28
+ ### 2. Broken Wikilinks
29
+ Wikilinks in agent pages that point to non-existent targets.
30
+ - Severity: **warning**
31
+
32
+ ### 3. Stale Content
33
+ Pages where `updated` date is > 90 days behind the most recent source note's date.
34
+ - Severity: **info**
35
+
36
+ ### 4. Frontmatter Violations
37
+ Pages missing required fields (`title`, `date`, `created`, `updated`, `type`, `tags`, `sources`).
38
+ - Severity: **warning** for missing required fields
39
+
40
+ ### 5. Tag Taxonomy Drift
41
+ Tags used in agent pages that are not defined in `SCHEMA.md`.
42
+ - Severity: **info**
43
+
44
+ ### 6. Oversized Pages
45
+ Pages exceeding ~200 lines — candidates for splitting.
46
+ - Severity: **info**
47
+
48
+ ## Report Format
49
+
50
+ Group findings by severity:
51
+
52
+ ```
53
+ Health check complete. Found 3 issues:
54
+
55
+ Warnings (2):
56
+ • [[broken-link-page]] — broken wikilink to [[nonexistent]]
57
+ • [[orphan-page]] — no inbound links (created 30 days ago)
58
+
59
+ Info (1):
60
+ • [[large-concept]] — 340 lines, consider splitting into sub-topics
61
+ ```
62
+
63
+ Offer concrete fixes for each issue. Ask before making changes.
@@ -1,11 +1,16 @@
1
1
  ---
2
2
  name: ideas
3
- description: Deep vault scan to generate actionable ideas by combining insights across domains, finding gaps, and proposing concrete next steps. Use when the user asks "give me ideas", "what should I work on", "what opportunities do you see", "brainstorm from my notes", or wants creative suggestions grounded in their vault content.
3
+ description: >
4
+ Deep vault scan to generate actionable ideas by combining insights across domains, finding gaps,
5
+ and proposing concrete next steps. Uses INDEX.base and agent directories (`entities/`, `concepts/`,
6
+ `comparisons/`, `queries/`) for compiled knowledge. Use when the user asks "give me ideas", "what should I work
7
+ on", "what opportunities do you see", "brainstorm from my notes", or wants creative suggestions
8
+ grounded in their vault content.
4
9
  ---
5
10
 
6
11
  # /ideas — Generate Actionable Ideas
7
12
 
8
- You are a strategic thinking partner. Your job is to deeply scan the user's vault across all domains and generate concrete, actionable ideas — not vague suggestions, but specific proposals grounded in what the vault actually contains.
13
+ You are a strategic thinking partner. Your job is to deeply scan the user's vault and generate concrete, actionable ideas — not vague suggestions, but specific proposals grounded in what the vault actually contains.
9
14
 
10
15
  ## Prerequisites Check
11
16
 
@@ -13,11 +18,7 @@ You are a strategic thinking partner. Your job is to deeply scan the user's vaul
13
18
  obsidian --version
14
19
  ```
15
20
 
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
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
21
22
 
22
23
  ## Parameters
23
24
 
@@ -47,7 +48,8 @@ Read notes across domains, prioritizing:
47
48
  - Recent notes (last 30 days) — what the user is actively thinking about
48
49
  - Highly connected notes (many backlinks) — central concepts
49
50
  - Notes with `status: active` — current work
50
- - Glossarythe user's core vocabulary
51
+ - `INDEX.base` if it exists for knowledge structure overview
52
+ - Agent pages in `entities/`, `concepts/`, `comparisons/`, `queries/` — for compiled knowledge
51
53
 
52
54
  For each domain, read 5-10 representative notes to understand the landscape.
53
55
 
@@ -140,23 +142,28 @@ Rank the three highest-impact, most immediately actionable ideas:
140
142
 
141
143
  - Run `/trace topic="X"` to explore Idea 1 further
142
144
  - Run `/connect from="A" to="B"` to validate Idea 3
143
- - Create a decision record for Idea 5
145
+ - Run `/cook` to compile or refresh `entities/`, `concepts/`, `comparisons/`, or `queries/` pages when an idea exposes a knowledge gap
146
+ - Add or extend a page under `queries/` for Idea 5 if it is question-shaped knowledge worth keeping
144
147
  ```
145
148
 
146
149
  ### Step 7: Save (Optional)
147
150
 
148
- If the user requested output, save with frontmatter:
151
+ At the end of your ideas, ask:
152
+
153
+ > "Would you like me to save this as a note?"
154
+
155
+ If the user confirms, save with frontmatter:
149
156
 
150
157
  ```yaml
151
158
  ---
152
159
  title: "Ideas: {focus}"
153
- type: analysis
154
160
  date: <today>
155
161
  tags: [ideas, proactive]
156
- status: active
157
162
  ---
158
163
  ```
159
164
 
165
+ Use `obsidian create` to save. Ask the user where they'd like it saved.
166
+
160
167
  ## Key Principles
161
168
 
162
169
  - **Actionable over interesting**: Every idea must have a concrete next step. "Interesting observation" is not an idea.
@@ -1,207 +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
- | `Start Here.md` | BYOAO onboarding file |
57
- | `Knowledge/Glossary.md` | BYOAO Glossary |
58
- | `Knowledge/templates/*` | Template files |
59
- | `.obsidian/`, `.git/`, `.byoao/` | System directories |
60
- | `.opencode/`, `.cursor/`, `.claude/` | Tool config directories |
61
- | `.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`.
62
25
 
63
26
  ## Process
64
27
 
65
- ### Step 1: Analyze Current Structure
66
-
67
- Build a complete picture of the vault:
28
+ ### Step 1: Scan Current Structure
68
29
 
69
30
  ```bash
70
31
  obsidian list
71
32
  ```
72
33
 
73
- 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
74
38
 
75
- ```bash
76
- obsidian read "<note name>"
77
- ```
78
-
79
- Categorize every file into one of:
80
- - **Has type** — can be auto-organized based on the mapping table
81
- - **No type but in coherent directory** — already organized, leave in place
82
- - **No type and in root/flat dir** — suggest running `/weave` first
83
-
84
- ### Step 2: Build Reorganization Map
39
+ ### Step 2: Check Agent Pages
85
40
 
86
- 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:
87
42
 
88
- | `type` | Target Directory | Notes |
89
- |--------|-----------------|-------|
90
- | `daily` | `Daily/` | |
91
- | `meeting` | Project folder if `project` field exists, else `Meetings/` | Group by project when possible |
92
- | `feature` | `Projects/<project>/` | Use `project` frontmatter field |
93
- | `project` | `Projects/` | Top-level project notes |
94
- | `sprint-handoff` | `Sprints/` | |
95
- | `reference` | `Knowledge/` | General reference material |
96
- | `person` | `People/` | |
97
- | `investigation` | Project folder if `project` field exists, else `Knowledge/` | |
98
- | `idea` | `Knowledge/` | |
99
- | `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/` |
100
49
 
101
- **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
102
53
 
103
- 1. **Already in the right place** — if a `type: meeting` file is already in `Meetings/` or inside a project folder, skip it
104
- 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
105
- 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
106
- 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
107
55
 
108
- **When `aggressive` mode is enabled**, also suggest structural consolidation:
109
- - Multiple year/sprint directories (e.g., `2025 Sprint/`, `2026 Sprint/`) → merge under `Sprints/2025/`, `Sprints/2026/`
110
- - Scattered documentation directories → consolidate under `Knowledge/`
111
- - 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:
112
57
 
113
- ### 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)
114
60
 
115
- Group proposed moves by category and show a clear summary:
116
-
117
- ```
118
- /organize analysis complete.
61
+ ### Step 4: Check Naming Conventions
119
62
 
120
- ## 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`)
121
67
 
122
- ### Root files → proper directories
123
- HANDOVER-2026-03-04.md → Knowledge/Handovers/HANDOVER-2026-03-04.md
124
- HANDOVER-2026-03-02.md → Knowledge/Handovers/HANDOVER-2026-03-02.md
125
- BigQuery_Syntax_Guide.md → Knowledge/BigQuery_Syntax_Guide.md
68
+ Flag any naming violations.
126
69
 
127
- ### Meeting notes Meetings/
128
- standup-2026-03-15.md → Meetings/standup-2026-03-15.md
70
+ ### Step 5: Suggest Moves
129
71
 
130
- ### Reference docs → Knowledge/
131
- API_Overview.md → Knowledge/API_Overview.md
72
+ For each misplaced file:
132
73
 
133
- ## New directories to create
134
- Knowledge/Handovers/
135
- Meetings/
136
-
137
- ## Files staying in place: 481
138
- (Already in coherent directory structures)
139
-
140
- ## Files without `type` (cannot auto-organize): 12
141
- Run /weave on these first, then re-run /organize.
142
-
143
- Options:
144
- 1. Approve all moves
145
- 2. Review one-by-one
146
- 3. Skip — make no changes
147
74
  ```
75
+ Move: entities/wrong-place.md → concepts/wrong-place.md
76
+ Reason: type=concept but currently in entities/
148
77
 
149
- 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
+ ```
150
81
 
151
- ### Step 4: Execute Moves
82
+ ### Step 6: Apply Moves (If Confirmed)
152
83
 
153
- For each approved move, use `obsidian move`:
84
+ Use Obsidian CLI to rename/move files:
154
85
 
155
86
  ```bash
156
- obsidian move file="HANDOVER-2026-03-04" to="Knowledge/Handovers/"
87
+ obsidian rename file="old-path.md" new_name="new-path.md"
157
88
  ```
158
89
 
159
- **Execution rules:**
90
+ Always show the full plan before applying. Never move files silently.
160
91
 
161
- - Create target directories first if they don't exist:
162
- ```bash
163
- mkdir -p "<vault path>/<target directory>"
164
- ```
165
- - Execute moves one at a time and verify each succeeds
166
- - If a move fails (name collision, file locked, etc.), log the error and continue with remaining moves
167
- - Report progress every 10 moves: "Moved 10/23 files..."
92
+ ### Step 7: Update Wikilinks
168
93
 
169
- **Why `obsidian move` instead of `mv`:**
94
+ After moving files, check that all wikilinks to the moved files are still valid:
170
95
 
171
- `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.
172
-
173
- ### Step 5: Verify
174
-
175
- After all moves complete:
176
-
177
- 1. Get the updated file list:
178
- ```bash
179
- obsidian list
180
- ```
181
-
182
- 2. Check for broken links:
183
- ```bash
184
- byoao_graph_health
185
- ```
186
-
187
- 3. Report results:
188
-
189
- ```
190
- /organize complete:
191
- - Moved: 23 files
192
- - Skipped: 0 (errors)
193
- - New directories created: 2
194
- - Broken links after moves: 0
195
- - Files still without `type`: 12 (run /weave to fix)
96
+ ```bash
97
+ obsidian backlinks "moved-file"
196
98
  ```
197
99
 
198
- If any broken links are found, report them and suggest fixes.
100
+ Obsidian typically handles wikilink updates on rename automatically, but verify for safety.
199
101
 
200
- ## Important Guidelines
102
+ ## Key Principles
201
103
 
202
- - **Conservative by default**: Only suggest moves where the benefit is clear. A file that's "good enough" where it is should stay
203
- - **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
204
- - **User approval is mandatory**: Never move files without explicit confirmation
205
- - **`obsidian move` only**: Never use file system `mv`, `cp`, or rename commands for vault files — only `obsidian move` and `obsidian rename` preserve link integrity
206
- - **Idempotent**: Running /organize twice should not propose moves for files that were already correctly placed in the first run
207
- - **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