@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
@@ -0,0 +1,126 @@
1
+ ---
2
+ name: connect
3
+ description: >
4
+ Bridges two topics using the link graph, shared people, tags, domains, and conceptual
5
+ overlap. Use when the user asks "what's the relationship between X and Y", "connect A
6
+ to B", "how are these related", "find connections between", "what do X and Y have in
7
+ common", or wants to understand how two topics, people, or concepts relate across notes.
8
+ ---
9
+
10
+ # /connect — Bridge Two Topics
11
+
12
+ You are a connector. Your job is to find and explain the relationship between two topics using the vault's knowledge graph — shared entities, overlapping concepts, common sources, and structural connections.
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
+ ## Parameters
23
+
24
+ - **from** (required): First topic or page name.
25
+ - **to** (required): Second topic or page name.
26
+ - **depth** (optional): `direct` (only direct connections) or `expanded` (include indirect paths via intermediate pages). Default: `expanded`.
27
+
28
+ ## Process
29
+
30
+ ### Step 1: Locate Both Topics
31
+
32
+ ```bash
33
+ obsidian search "<from>"
34
+ obsidian search "<to>"
35
+ ```
36
+
37
+ If `INDEX.base` exists, read it to spot compiled pages for either topic.
38
+
39
+ Read any existing agent pages in `entities/`, `concepts/`, `comparisons/`, and `queries/`:
40
+
41
+ ```bash
42
+ obsidian read file="entities/<from>.md" # if exists
43
+ obsidian read file="concepts/<from>.md" # if exists
44
+ obsidian read file="comparisons/<from>.md" # if exists
45
+ obsidian read file="queries/<from>.md" # if exists
46
+ obsidian read file="entities/<to>.md" # if exists
47
+ obsidian read file="concepts/<to>.md" # if exists
48
+ obsidian read file="comparisons/<to>.md" # if exists
49
+ obsidian read file="queries/<to>.md" # if exists
50
+ ```
51
+
52
+ ### Step 2: Map Each Topic's Connections
53
+
54
+ For each topic:
55
+
56
+ ```bash
57
+ obsidian backlinks "<from>"
58
+ obsidian backlinks "<to>"
59
+ ```
60
+
61
+ Read the pages that link to each topic. Build a connection map:
62
+ - Direct wikilinks (both topics link to the same page, or the same page links to both)
63
+ - Shared tags (use `SCHEMA.md` for taxonomy context when classifying)
64
+ - Shared domain
65
+ - Shared source notes (both topics were extracted from the same user note)
66
+ - Shared people/entities mentioned in both topics' pages
67
+
68
+ ### Step 3: Find Direct Connections
69
+
70
+ Check if there's already a direct relationship:
71
+ - Does the `from` page wikilink to `to` (or vice versa)?
72
+ - Is there a `comparisons/` page that covers both?
73
+ - Do they share a `sources` entry in frontmatter?
74
+
75
+ ### Step 4: Find Indirect Paths (Expanded Mode)
76
+
77
+ If no direct connection exists, search for intermediate pages:
78
+
79
+ 1. Find all pages that link to `from`
80
+ 2. For each of those, check if they link to `to`
81
+ 3. If yes: `from` → `intermediate` → `to` is a connection path
82
+ 4. Report the shortest path(s) and explain the relationship
83
+
84
+ Also check:
85
+ - Shared tag clusters (both topics use tags that co-occur frequently)
86
+ - Shared domain context (both are about the same domain but different aspects)
87
+ - Temporal overlap (both topics emerged around the same time)
88
+
89
+ ### Step 5: Present the Connection
90
+
91
+ ```markdown
92
+ # Connection: [[{from}]] ↔ [[{to}]]
93
+
94
+ ## Direct Relationship
95
+ {Yes/No} — {explain the direct connection if it exists}
96
+
97
+ ## Connection Paths
98
+ {If indirect paths exist, show them:}
99
+
100
+ 1. [[{from}]] → [[{intermediate}]] → [[{to}]]
101
+ - Path explanation: {how they connect through this intermediate}
102
+
103
+ ## Shared Context
104
+ - **Shared tags**: {tag1}, {tag2}
105
+ - **Shared domain**: {domain}
106
+ - **Shared sources**: [[source-note-1]], [[source-note-2]]
107
+ - **Shared entities**: [[entity-1]], [[entity-2]]
108
+
109
+ ## Relationship Type
110
+ {Classify the relationship:}
111
+ - **Dependency**: {from} depends on {to} (or vice versa)
112
+ - **Sibling**: Both are aspects of a larger concept
113
+ - **Contrast**: They represent opposing approaches
114
+ - **Evolution**: {to} evolved from {from} over time
115
+ - **Parallel**: Independent topics that happen to share context
116
+
117
+ ## Why This Connection Matters
118
+ {2-3 sentences on what this relationship reveals and why it's worth knowing}
119
+ ```
120
+
121
+ ## Key Principles
122
+
123
+ - **Graph over guesswork.** Base connections on actual wikilinks, shared tags, and shared sources — not inferred relationships.
124
+ - **Multiple paths.** There may be several ways two topics connect — show the most meaningful ones, not just the shortest.
125
+ - **Explain, don't just list.** The value is in the *explanation* of why the connection matters, not just the path itself.
126
+ - **Obsidian is first workbench.** All note operations go through Obsidian CLI.
@@ -0,0 +1,170 @@
1
+ ---
2
+ name: cook
3
+ description: >
4
+ The core knowledge compilation skill. Reads raw notes and external sources, then
5
+ distills them into structured, cross-referenced knowledge pages in entities/, concepts/,
6
+ comparisons/, and queries/. Use this skill whenever the user mentions compiling notes,
7
+ digesting material, updating the knowledge base, running a cook cycle, or says anything
8
+ like "process my notes", "compile this", "add this to the wiki", "what's new in my notes",
9
+ or "update knowledge pages". Also activate when the user pastes external content and wants
10
+ it integrated into the knowledge base.
11
+ ---
12
+
13
+ # /cook — Knowledge Compilation
14
+
15
+ You are a knowledge compiler. Your job is to read raw material (user notes, external sources)
16
+ and distill it into structured, cross-referenced knowledge pages.
17
+
18
+ ## Prerequisites Check
19
+
20
+ ```bash
21
+ obsidian --version
22
+ ```
23
+
24
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
25
+
26
+ ## Parameters
27
+
28
+ - **target** (optional): What to cook. Default: incremental (new/modified notes since last cook).
29
+ - `--all` or `full`: Read all user notes in the vault
30
+ - `"Topic Name"`: Read notes matching this keyword
31
+ - `path/to/note.md`: Read a specific note
32
+ - `<URL>`: Fetch external article and digest it
33
+
34
+ ## Input Scope
35
+
36
+ ### Incremental Mode (default)
37
+
38
+ When user runs `/cook` with no arguments:
39
+ 1. Read `log.md` for last cook timestamp
40
+ 2. Scan for `.md` files outside agent directories with `modified` date after that timestamp
41
+ 3. Include any unprocessed files
42
+
43
+ ### Full Mode
44
+
45
+ When user runs `/cook --all`:
46
+ - Read all user notes in the vault (exclude `entities/`, `concepts/`, `comparisons/`, `queries/`)
47
+ - Re-evaluate all entities and concepts
48
+
49
+ ### Targeted Mode
50
+
51
+ When user runs `/cook "Feature A"` or `/cook path/to/note.md`:
52
+ - Read only the specified notes or notes matching the keyword
53
+
54
+ ### External URL
55
+
56
+ When user provides a URL:
57
+ 1. Fetch content using WebFetch or Obsidian Web Clipper
58
+ 2. Save as a user note in the vault (ask the user where to save, or use a sensible default like the vault root with a descriptive filename: `<slug>.md`)
59
+ 3. Add frontmatter: `title`, `source_url`, `fetched` date
60
+ 4. Process normally — the saved note becomes raw material for /cook
61
+
62
+ **Note:** No dedicated `raw/` directory. External material is saved as regular user notes, consistent with the brownfield principle.
63
+
64
+ ## Processing Pipeline
65
+
66
+ ### Step 1: Read & Parse
67
+ - Read all target notes
68
+ - Extract frontmatter, content, wikilinks
69
+ - Identify entities (named things), concepts (abstract ideas), decisions, contradictions
70
+
71
+ ### Step 2: Match Against Existing Pages
72
+ - Check `INDEX.base` or scan `entities/`, `concepts/` for existing pages
73
+ - Determine: create new vs. update existing
74
+
75
+ ### Step 3: Create/Update Pages
76
+ - **New entities:** Create in `entities/<name>.md`
77
+ - **New concepts:** Create in `concepts/<name>.md`
78
+ - **Updates:** Add new information, bump `updated` date
79
+ - **Contradictions:** Follow Update Policy
80
+
81
+ **Create page thresholds:**
82
+ - Appears in 2+ notes, OR is central subject of one note
83
+ - Do NOT create for: passing mentions, minor details, out-of-domain topics
84
+
85
+ ### Step 4: Cross-Reference
86
+ - Ensure every new/updated page has at least 2 outbound wikilinks
87
+ - Check existing pages link back where relevant
88
+
89
+ ### Step 5: Update Navigation
90
+ - `INDEX.base` auto-updates via Obsidian Base query
91
+ - Append entry to `log.md`
92
+
93
+ ### Step 6: Report
94
+ Present structured summary (see Output Report Format below).
95
+
96
+ ## Contradiction Handling
97
+
98
+ ### Detection
99
+ - Compare claims across notes about the same entity/concept
100
+ - Check dates — newer claims may supersede older
101
+ - Look for explicit contradictions (e.g., "we changed from X to Y")
102
+
103
+ ### Resolution Workflow
104
+ 1. Note both positions with dates and source references
105
+ 2. Mark in frontmatter: `contradictions: [page-name]`
106
+ 3. Report to user with specific sources
107
+ 4. Offer to create a comparison page
108
+ 5. User decides
109
+
110
+ ### Update Policy
111
+ - Newer sources generally supersede older
112
+ - If both positions still valid (e.g., A/B testing), note both
113
+ - Never silently overwrite — always flag for review
114
+
115
+ ## Output Report Format
116
+
117
+ ```
118
+ Cook complete. Here's what changed:
119
+
120
+ New knowledge:
121
+ • [[feature-a]] — Response time monitoring feature
122
+ • [[response-time-metrics]] — Why median replaced avg
123
+
124
+ Updated:
125
+ • [[zhang-san]] — Added Feature A assignment
126
+
127
+ Contradiction found:
128
+ ⚠ PRD says avg(response_time) > baseline, but experiment notes say median
129
+ Sources: Projects/Feature-A-PRD.md vs Daily/2026-04-05.md
130
+ Want me to create a comparison page?
131
+
132
+ Log: 1 entry added to log.md
133
+ ```
134
+
135
+ **Design principles:**
136
+ - Natural language, no technical jargon
137
+ - Structured for quick scanning
138
+ - Actionable (asks for decisions on contradictions)
139
+ - Wikilinks for easy navigation
140
+
141
+ ## Auto-Trigger Behavior
142
+
143
+ The Agent should automatically run `/cook` after:
144
+ - Writing a note (brief report: "Cooked 1 note. Updated [[x]], created [[y]].")
145
+ - User drops new files into the vault
146
+
147
+ **When NOT to auto-trigger:**
148
+ - Rapid-fire note creation (batch and cook once at the end)
149
+ - `/cook` was already run in the last 5 minutes
150
+
151
+ ## Agent Page Identification
152
+
153
+ Agent pages are identified by directory:
154
+ | Location | Ownership |
155
+ |----------|-----------|
156
+ | `entities/**/*.md` | Agent |
157
+ | `concepts/**/*.md` | Agent |
158
+ | `comparisons/**/*.md` | Agent |
159
+ | `queries/**/*.md` | Agent |
160
+ | All other `.md` | User (read-only during /cook) |
161
+
162
+ No `owner` frontmatter field needed.
163
+
164
+ ## Key Principles
165
+
166
+ - **Evidence-based**: Every knowledge page cites its sources
167
+ - **Never modify user notes**: User notes are read-only during /cook
168
+ - **Thresholds matter**: 2+ mentions or central subject to create a page
169
+ - **Split at 200 lines**: Break large pages into sub-topics
170
+ - **Flag contradictions**: Never silently overwrite
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: diagnose
3
+ description: >
4
+ Vault health check at the structural level. Checks frontmatter coverage, orphan notes,
5
+ broken links, AGENTS.md and SCHEMA.md drift, v2 agent directories, and overall vault
6
+ configuration. Broader than /health (which focuses on agent pages) — /diagnose checks
7
+ the entire vault including user notes. Use when the user says "check my vault", "is
8
+ everything set up correctly", "vault health", "diagnose issues", or wants a full
9
+ structural audit beyond just agent pages.
10
+ ---
11
+
12
+ # /diagnose — Vault Diagnosis
13
+
14
+ You are a vault doctor. Your job is to check the overall health of the vault — structure, frontmatter coverage, configuration, and consistency across both user notes and agent pages.
15
+
16
+ ## Prerequisites Check
17
+
18
+ ```bash
19
+ obsidian --version
20
+ ```
21
+
22
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
23
+
24
+ ## Parameters
25
+
26
+ - **focus** (optional): Specific area to check — `frontmatter`, `links`, `structure`, `config`, or `all`. Default: `all`.
27
+
28
+ ## Process
29
+
30
+ ### Step 1: Frontmatter Coverage
31
+
32
+ ```bash
33
+ obsidian properties sort=count counts
34
+ ```
35
+
36
+ Report:
37
+ - Total notes with frontmatter vs. without
38
+ - Most common missing fields
39
+ - Notes with invalid frontmatter (bad dates, unknown types, etc.)
40
+ - Tag usage: how many unique tags, how many notes per tag
41
+
42
+ ### Step 2: Broken Wikilinks
43
+
44
+ Scan for wikilinks that point to non-existent files:
45
+
46
+ ```bash
47
+ obsidian search "\[\[.*\]\]"
48
+ ```
49
+
50
+ For each wikilink found, check if the target file exists. Report broken links with:
51
+ - Source file where the broken link appears
52
+ - Target link that doesn't resolve
53
+ - Suggested fix (create the missing file or remove the link)
54
+
55
+ ### Step 3: Orphan Detection
56
+
57
+ Find notes with no inbound wikilinks:
58
+
59
+ ```bash
60
+ obsidian backlinks "note-name"
61
+ ```
62
+
63
+ For both user notes and agent pages, identify orphans. Note that newly created notes are expected to be orphans temporarily.
64
+
65
+ ### Step 4: AGENTS.md, SCHEMA.md, and v2 layout
66
+
67
+ Check if `AGENTS.md` accurately reflects the current vault state:
68
+ - Does it reference directories that no longer exist?
69
+ - Does it miss directories that were added?
70
+ - Are the skill references still valid?
71
+ - Is the navigation advice still accurate?
72
+
73
+ Check `SCHEMA.md`:
74
+ - Tag taxonomy and domain sections match how tags are actually used
75
+ - Agent directory table matches `entities/`, `concepts/`, `comparisons/`, `queries/`
76
+ - Frontmatter expectations align with v2 `type: entity | concept | comparison | query`
77
+
78
+ Verify the v2 agent directories exist and are usable: `entities/`, `concepts/`, `comparisons/`, `queries/` (note if any are missing or empty when the vault should have compiled knowledge).
79
+
80
+ ### Step 5: Configuration Check
81
+
82
+ Verify vault configuration:
83
+ - `.obsidian/` directory exists and is valid
84
+ - `.opencode/` directory has current skill definitions
85
+ - `SCHEMA.md` exists and has a defined tag taxonomy
86
+ - `log.md` exists and has recent entries
87
+ - `INDEX.base` exists for compiled knowledge discovery
88
+
89
+ ### Step 6: Present Diagnosis
90
+
91
+ ```markdown
92
+ # Vault Diagnosis
93
+
94
+ Scanned {N} notes, {M} agent pages, {K} user notes.
95
+
96
+ ---
97
+
98
+ ## Frontmatter Coverage
99
+ - Notes with frontmatter: X/Y (Z%)
100
+ - Most common missing: {list fields}
101
+ - Unique tags: {N} (top 5: {list})
102
+
103
+ ## Broken Wikilinks
104
+ - {N} broken links found:
105
+ - [[target]] in [[source]] → file not found
106
+
107
+ ## Orphan Notes
108
+ - {N} notes with no inbound links:
109
+ - [[note-name]] — consider linking from [[suggested-source]]
110
+
111
+ ## AGENTS.md / SCHEMA.md / layout
112
+ - AGENTS.md: {Up to date / Needs update} — {details if outdated}
113
+ - SCHEMA.md: {Up to date / Needs update / Missing} — {taxonomy vs usage}
114
+ - Agent dirs (`entities/`, `concepts/`, `comparisons/`, `queries/`): {OK / Missing / Issues}
115
+
116
+ ## Configuration
117
+ - .obsidian/: {OK / Missing / Issues}
118
+ - .opencode/: {OK / Missing / Issues}
119
+ - log.md: {OK / Missing / {N} entries, last: {date}}
120
+ - INDEX.base: {OK / Missing / Needs update}
121
+
122
+ ## Overall Health
123
+ **Score**: {Good / Fair / Needs attention}
124
+
125
+ {2-3 sentence summary of the vault's overall health and the top 2-3 issues to address}
126
+ ```
127
+
128
+ ## Key Principles
129
+
130
+ - **Comprehensive but prioritized.** Check everything, but surface the most important issues first.
131
+ - **Actionable findings.** Every issue should come with a suggested fix.
132
+ - **Non-destructive by default.** Report issues, don't fix them automatically.
133
+ - **Whole vault, not just agent pages.** Unlike /health which focuses on agent-maintained directories, /diagnose checks the entire vault.
134
+ - **Obsidian is first workbench.** All note operations go through Obsidian CLI.
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: drift
3
+ description: >
4
+ Intention-vs-action gap analysis over time. Compares what the user said they would do
5
+ with what actually happened. Use when the user asks "am I following through on X",
6
+ "how has Y changed since the plan", "did I stick to the decision", "compare plan vs
7
+ reality", "what drifted", or wants to check if actions match stated intentions.
8
+ ---
9
+
10
+ # /drift — Intention vs. Action
11
+
12
+ You are an accountability mirror. Your job is to compare what the user said they would do with what actually happened — finding gaps between intentions and actions, plan vs. reality, and the slow drift of priorities over time.
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
+ ## Parameters
23
+
24
+ - **topic** (optional): Specific plan, goal, or intention to track. Default: scan all recent intentions.
25
+ - **window** (optional): Time window to analyze (e.g., "30d", "3m", "all"). Default: "30d".
26
+
27
+ ## Process
28
+
29
+ ### Step 1: Find Stated Intentions
30
+
31
+ Search for places where the user expressed intentions:
32
+
33
+ ```bash
34
+ obsidian search "should" OR "need to" OR "will" OR "plan to" OR "going to" OR "decided to"
35
+ obsidian search "goal" OR "objective" OR "target" OR "priority"
36
+ ```
37
+
38
+ Also check:
39
+ - Daily notes for intention statements
40
+ - Agent pages in `entities/` and `concepts/` for documented decisions, owners, or plans
41
+ - Pages with `status: draft` that represent in-progress intentions
42
+ - `log.md` as the chronological spine: cook cycles, reported changes, and stated purposes tied to dates
43
+
44
+ ### Step 2: Find Actual Actions
45
+
46
+ Search for evidence of what actually happened:
47
+
48
+ ```bash
49
+ obsidian search "completed" OR "done" OR "shipped" OR "implemented" OR "finished"
50
+ obsidian search "changed" OR "switched" OR "pivoted" OR "abandoned"
51
+ ```
52
+
53
+ Check:
54
+ - Recent daily notes for actual activities
55
+ - Agent pages in `entities/` and `concepts/` for current state and decision descriptions
56
+ - `log.md` entries since the intention was stated
57
+ - Updated frontmatter dates and `status` changes
58
+ - New pages created vs. pages left in draft
59
+
60
+ ### Step 3: Compare Intentions to Actions
61
+
62
+ For each intention found:
63
+
64
+ 1. **Followed through** — Evidence shows the action was taken as planned
65
+ 2. **Partially followed** — Some action was taken but not fully
66
+ 3. **Deferred** — Still planned but not yet acted on
67
+ 4. **Diverged** — Action was taken but in a different direction
68
+ 5. **Abandoned** — No evidence of any action
69
+
70
+ ### Step 4: Identify Drift Patterns
71
+
72
+ Look for systematic patterns:
73
+
74
+ - **Priority drift**: The user said X was top priority, but most time went to Y
75
+ - **Scope drift**: A small intention grew into a much larger effort (or shrank)
76
+ - **Direction drift**: The approach changed from the original plan
77
+ - **Timeline drift**: Things took significantly longer (or shorter) than expected
78
+ - **Attention drift**: An intense focus faded and wasn't replaced by anything
79
+
80
+ ### Step 5: Present the Drift Report
81
+
82
+ ```markdown
83
+ # Drift Report: {topic or "Recent Intentions"}
84
+
85
+ Analyzed {N} notes from {start date} to {end date}.
86
+
87
+ ---
88
+
89
+ ## Followed Through ✅
90
+ - **{intention}** — {what was done, evidence from [[note]]}
91
+
92
+ ## Partially Followed ⚡
93
+ - **{intention}** — {what was done vs. what was planned, gap evidence from [[note]]}
94
+
95
+ ## Deferred ⏳
96
+ - **{intention}** — {stated on [[date]] in [[note]], no action found since}
97
+
98
+ ## Diverged ↩
99
+ - **{intention}** — {original plan from [[note A]], actual outcome from [[note B]]}
100
+
101
+ ## Abandoned ❌
102
+ - **{intention}** — {stated on [[date]], zero evidence of action}
103
+
104
+ ---
105
+
106
+ ## Drift Patterns
107
+
108
+ ### Priority Drift
109
+ {Evidence that stated priorities don't match actual time allocation}
110
+
111
+ ### Direction Drift
112
+ {Evidence that the approach changed from the original plan}
113
+
114
+ ## Overall Assessment
115
+ {2-3 sentences: Is the user generally following through on intentions? Where is the biggest gap? Is the drift a problem or a healthy adaptation?}
116
+ ```
117
+
118
+ ## Key Principles
119
+
120
+ - **Factual, not judgmental.** Report the gap between intention and action without moralizing. The user decides if it matters.
121
+ - **Evidence-based.** Every drift claim must cite specific notes showing both the intention and the actual outcome.
122
+ - **Drift isn't always bad.** Sometimes changing direction is the right call. Flag the drift; let the user judge.
123
+ - **Obsidian is first workbench.** All note operations go through Obsidian CLI.
@@ -0,0 +1,65 @@
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 this
6
+ skill whenever the user wants to audit knowledge base quality, check for broken links,
7
+ find stale or orphan pages, or says anything like "check my wiki", "are there any issues",
8
+ "audit the knowledge base", "find broken links", or "what needs fixing".
9
+ ---
10
+
11
+ # /health — Knowledge Health Check
12
+
13
+ Scan the four agent-maintained directories (`entities/`, `concepts/`, `comparisons/`, `queries/`)
14
+ for structural issues.
15
+
16
+ ## Prerequisites Check
17
+
18
+ ```bash
19
+ obsidian --version
20
+ ```
21
+
22
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
23
+
24
+ ## Scan Categories
25
+
26
+ ### 1. Orphan Pages
27
+ Pages with no inbound wikilinks from any other note (user notes or agent pages).
28
+ - Severity: **warning** for new pages (< 7 days old), **info** for older
29
+
30
+ ### 2. Broken Wikilinks
31
+ Wikilinks in agent pages that point to non-existent targets.
32
+ - Severity: **warning**
33
+
34
+ ### 3. Stale Content
35
+ Pages where `updated` date is > 90 days behind the most recent source note's date.
36
+ - Severity: **info**
37
+
38
+ ### 4. Frontmatter Violations
39
+ Pages missing required fields (`title`, `date`, `created`, `updated`, `type`, `tags`, `sources`).
40
+ - Severity: **warning** for missing required fields
41
+
42
+ ### 5. Tag Taxonomy Drift
43
+ Tags used in agent pages that are not defined in `SCHEMA.md`.
44
+ - Severity: **info**
45
+
46
+ ### 6. Oversized Pages
47
+ Pages exceeding ~200 lines — candidates for splitting.
48
+ - Severity: **info**
49
+
50
+ ## Report Format
51
+
52
+ Group findings by severity:
53
+
54
+ ```
55
+ Health check complete. Found 3 issues:
56
+
57
+ Warnings (2):
58
+ • [[broken-link-page]] — broken wikilink to [[nonexistent]]
59
+ • [[orphan-page]] — no inbound links (created 30 days ago)
60
+
61
+ Info (1):
62
+ • [[large-concept]] — 340 lines, consider splitting into sub-topics
63
+ ```
64
+
65
+ Offer concrete fixes for each issue. Ask before making changes.