@jayjiang/byoao 1.1.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/__tests__/plugin-config.test.js +7 -10
  2. package/dist/__tests__/plugin-config.test.js.map +1 -1
  3. package/dist/assets/obsidian-skills/byoao-conventions.md +30 -54
  4. package/dist/assets/obsidian-skills/vault-thinking.md +6 -5
  5. package/dist/assets/presets/common/AGENTS.md.hbs +29 -46
  6. package/dist/assets/presets/common/SCHEMA.md.hbs +57 -0
  7. package/dist/assets/presets/common/Start Here.md.hbs +29 -40
  8. package/dist/assets/presets/minimal/preset.json +3 -3
  9. package/dist/assets/presets/pm-tpm/preset.json +2 -2
  10. package/dist/assets/skills/ask.md +28 -27
  11. package/dist/assets/skills/challenge.md +79 -121
  12. package/dist/assets/skills/connect.md +75 -163
  13. package/dist/assets/skills/cook.md +167 -0
  14. package/dist/assets/skills/diagnose.md +102 -43
  15. package/dist/assets/skills/drift.md +64 -165
  16. package/dist/assets/skills/health.md +63 -0
  17. package/dist/assets/skills/ideas.md +11 -10
  18. package/dist/assets/skills/organize.md +56 -155
  19. package/dist/assets/skills/prep.md +63 -0
  20. package/dist/assets/skills/trace.md +75 -90
  21. package/dist/assets/skills/wiki.md +77 -178
  22. package/dist/cli/cli-program.js +17 -14
  23. package/dist/cli/cli-program.js.map +1 -1
  24. package/dist/cli/installer.js +10 -4
  25. package/dist/cli/installer.js.map +1 -1
  26. package/dist/hooks/idle-suggestions.js +4 -4
  27. package/dist/hooks/idle-suggestions.js.map +1 -1
  28. package/dist/hooks/system-transform.js +35 -1
  29. package/dist/hooks/system-transform.js.map +1 -1
  30. package/dist/index.js +395 -623
  31. package/dist/index.js.map +1 -1
  32. package/dist/plugin-config.js +6 -32
  33. package/dist/plugin-config.js.map +1 -1
  34. package/dist/tools/init-vault.js +8 -38
  35. package/dist/tools/init-vault.js.map +1 -1
  36. package/dist/tools/vault-doctor.js +1 -1
  37. package/dist/tools/vault-doctor.js.map +1 -1
  38. package/dist/tools/vault-status.js +1 -1
  39. package/dist/tools/vault-status.js.map +1 -1
  40. package/dist/vault/__tests__/create.test.js +47 -115
  41. package/dist/vault/__tests__/create.test.js.map +1 -1
  42. package/dist/vault/__tests__/doctor.test.js +14 -2
  43. package/dist/vault/__tests__/doctor.test.js.map +1 -1
  44. package/dist/vault/__tests__/manifest.test.js +2 -2
  45. package/dist/vault/__tests__/manifest.test.js.map +1 -1
  46. package/dist/vault/__tests__/status.test.js +12 -0
  47. package/dist/vault/__tests__/status.test.js.map +1 -1
  48. package/dist/vault/__tests__/upgrade.test.js +3 -3
  49. package/dist/vault/__tests__/upgrade.test.js.map +1 -1
  50. package/dist/vault/create.js +75 -188
  51. package/dist/vault/create.js.map +1 -1
  52. package/dist/vault/doctor.js +49 -0
  53. package/dist/vault/doctor.js.map +1 -1
  54. package/dist/vault/manifest.js +1 -1
  55. package/dist/vault/preset.js +10 -4
  56. package/dist/vault/preset.js.map +1 -1
  57. package/dist/vault/self-update.js +1 -1
  58. package/dist/vault/status.js +24 -0
  59. package/dist/vault/status.js.map +1 -1
  60. package/dist/vault/upgrade.js +120 -16
  61. package/dist/vault/upgrade.js.map +1 -1
  62. package/package.json +1 -1
  63. package/src/assets/obsidian-skills/byoao-conventions.md +9 -6
  64. package/src/assets/obsidian-skills/vault-thinking.md +6 -5
  65. package/src/assets/presets/common/AGENTS.md.hbs +23 -19
  66. package/src/assets/presets/common/SCHEMA.md.hbs +57 -0
  67. package/src/assets/presets/common/Start Here.md.hbs +29 -40
  68. package/src/assets/presets/minimal/preset.json +3 -3
  69. package/src/assets/presets/pm-tpm/preset.json +2 -2
  70. package/src/skills/ask.md +28 -27
  71. package/src/skills/challenge.md +79 -121
  72. package/src/skills/connect.md +75 -163
  73. package/src/skills/cook.md +167 -0
  74. package/src/skills/diagnose.md +102 -43
  75. package/src/skills/drift.md +64 -165
  76. package/src/skills/health.md +63 -0
  77. package/src/skills/ideas.md +11 -10
  78. package/src/skills/organize.md +56 -155
  79. package/src/skills/prep.md +63 -0
  80. package/src/skills/trace.md +75 -90
  81. package/src/skills/wiki.md +77 -178
  82. package/dist/assets/presets/common/Glossary.md.hbs +0 -16
  83. package/dist/assets/presets/common/obsidian/daily-notes.json +0 -5
  84. package/dist/assets/presets/common/obsidian/templates.json +0 -3
  85. package/dist/assets/presets/common/templates/Daily Note.md +0 -19
  86. package/dist/assets/presets/common/templates/Decision Record.md +0 -32
  87. package/dist/assets/presets/common/templates/Investigation.md +0 -34
  88. package/dist/assets/presets/common/templates/Meeting Notes.md +0 -25
  89. package/dist/assets/skills/emerge.md +0 -168
  90. package/dist/assets/skills/weave.md +0 -287
  91. package/dist/tools/add-glossary-term.js +0 -21
  92. package/dist/tools/add-glossary-term.js.map +0 -1
  93. package/dist/tools/add-person.js +0 -21
  94. package/dist/tools/add-person.js.map +0 -1
  95. package/dist/tools/add-project.js +0 -24
  96. package/dist/tools/add-project.js.map +0 -1
  97. package/dist/tools/graph-health.js +0 -25
  98. package/dist/tools/graph-health.js.map +0 -1
  99. package/dist/tools/note-read.js +0 -19
  100. package/dist/tools/note-read.js.map +0 -1
  101. package/dist/tools/search-vault.js +0 -22
  102. package/dist/tools/search-vault.js.map +0 -1
  103. package/dist/vault/__tests__/glossary.test.js +0 -68
  104. package/dist/vault/__tests__/glossary.test.js.map +0 -1
  105. package/dist/vault/__tests__/graph-health.test.js +0 -102
  106. package/dist/vault/__tests__/graph-health.test.js.map +0 -1
  107. package/dist/vault/__tests__/member.test.js +0 -85
  108. package/dist/vault/__tests__/member.test.js.map +0 -1
  109. package/dist/vault/__tests__/note-read.test.js +0 -71
  110. package/dist/vault/__tests__/note-read.test.js.map +0 -1
  111. package/dist/vault/__tests__/obsidian-cli.test.js +0 -108
  112. package/dist/vault/__tests__/obsidian-cli.test.js.map +0 -1
  113. package/dist/vault/__tests__/search-vault.test.js +0 -93
  114. package/dist/vault/__tests__/search-vault.test.js.map +0 -1
  115. package/dist/vault/glossary.js +0 -27
  116. package/dist/vault/glossary.js.map +0 -1
  117. package/dist/vault/graph-health.js +0 -83
  118. package/dist/vault/graph-health.js.map +0 -1
  119. package/dist/vault/member.js +0 -67
  120. package/dist/vault/member.js.map +0 -1
  121. package/dist/vault/note-read.js +0 -70
  122. package/dist/vault/note-read.js.map +0 -1
  123. package/dist/vault/project.js +0 -68
  124. package/dist/vault/project.js.map +0 -1
  125. package/dist/vault/retrieval-types.js +0 -5
  126. package/dist/vault/retrieval-types.js.map +0 -1
  127. package/dist/vault/search-vault.js +0 -87
  128. package/dist/vault/search-vault.js.map +0 -1
  129. package/src/assets/presets/common/obsidian/daily-notes.json +0 -5
  130. package/src/assets/presets/common/obsidian/templates.json +0 -3
  131. package/src/assets/presets/common/templates/Daily Note.md +0 -19
  132. package/src/assets/presets/common/templates/Decision Record.md +0 -32
  133. package/src/assets/presets/common/templates/Investigation.md +0 -34
  134. package/src/assets/presets/common/templates/Meeting Notes.md +0 -25
  135. package/src/skills/emerge.md +0 -168
  136. package/src/skills/weave.md +0 -287
@@ -0,0 +1,167 @@
1
+ ---
2
+ name: cook
3
+ description: >
4
+ The core knowledge compilation skill. Reads raw material (user notes, external sources)
5
+ and distills it into structured, cross-referenced knowledge pages in entities/, concepts/,
6
+ comparisons/, and queries/. Use when the user wants to compile notes into knowledge,
7
+ digest external material, or periodically maintain the knowledge base.
8
+ ---
9
+
10
+ # /cook — Knowledge Compilation
11
+
12
+ You are a knowledge compiler. Your job is to read raw material (user notes, external sources)
13
+ and distill it into structured, cross-referenced knowledge pages.
14
+
15
+ ## Prerequisites Check
16
+
17
+ ```bash
18
+ obsidian --version
19
+ ```
20
+
21
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
22
+
23
+ ## Parameters
24
+
25
+ - **target** (optional): What to cook. Default: incremental (new/modified notes since last cook).
26
+ - `--all` or `full`: Read all user notes in the vault
27
+ - `"Topic Name"`: Read notes matching this keyword
28
+ - `path/to/note.md`: Read a specific note
29
+ - `<URL>`: Fetch external article and digest it
30
+
31
+ ## Input Scope
32
+
33
+ ### Incremental Mode (default)
34
+
35
+ When user runs `/cook` with no arguments:
36
+ 1. Read `log.md` for last cook timestamp
37
+ 2. Scan for `.md` files outside agent directories with `modified` date after that timestamp
38
+ 3. Include any unprocessed files
39
+
40
+ ### Full Mode
41
+
42
+ When user runs `/cook --all`:
43
+ - Read all user notes in the vault (exclude `entities/`, `concepts/`, `comparisons/`, `queries/`)
44
+ - Re-evaluate all entities and concepts
45
+
46
+ ### Targeted Mode
47
+
48
+ When user runs `/cook "Feature A"` or `/cook path/to/note.md`:
49
+ - Read only the specified notes or notes matching the keyword
50
+
51
+ ### External URL
52
+
53
+ When user provides a URL:
54
+ 1. Fetch content using WebFetch or Obsidian Web Clipper
55
+ 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`)
56
+ 3. Add frontmatter: `title`, `source_url`, `fetched` date
57
+ 4. Process normally — the saved note becomes raw material for /cook
58
+
59
+ **Note:** No dedicated `raw/` directory. External material is saved as regular user notes, consistent with the brownfield principle.
60
+
61
+ ## Processing Pipeline
62
+
63
+ ### Step 1: Read & Parse
64
+ - Read all target notes
65
+ - Extract frontmatter, content, wikilinks
66
+ - Identify entities (named things), concepts (abstract ideas), decisions, contradictions
67
+
68
+ ### Step 2: Match Against Existing Pages
69
+ - Check `INDEX.base` or scan `entities/`, `concepts/` for existing pages
70
+ - Determine: create new vs. update existing
71
+
72
+ ### Step 3: Create/Update Pages
73
+ - **New entities:** Create in `entities/<name>.md`
74
+ - **New concepts:** Create in `concepts/<name>.md`
75
+ - **Updates:** Add new information, bump `updated` date
76
+ - **Contradictions:** Follow Update Policy
77
+
78
+ **Create page thresholds:**
79
+ - Appears in 2+ notes, OR is central subject of one note
80
+ - Do NOT create for: passing mentions, minor details, out-of-domain topics
81
+
82
+ ### Step 4: Cross-Reference
83
+ - Ensure every new/updated page has at least 2 outbound wikilinks
84
+ - Check existing pages link back where relevant
85
+
86
+ ### Step 5: Update Navigation
87
+ - `INDEX.base` auto-updates via Obsidian Base query
88
+ - Append entry to `log.md`
89
+
90
+ ### Step 6: Report
91
+ Present structured summary (see Output Report Format below).
92
+
93
+ ## Contradiction Handling
94
+
95
+ ### Detection
96
+ - Compare claims across notes about the same entity/concept
97
+ - Check dates — newer claims may supersede older
98
+ - Look for explicit contradictions (e.g., "we changed from X to Y")
99
+
100
+ ### Resolution Workflow
101
+ 1. Note both positions with dates and source references
102
+ 2. Mark in frontmatter: `contradictions: [page-name]`
103
+ 3. Report to user with specific sources
104
+ 4. Offer to create a comparison page
105
+ 5. User decides
106
+
107
+ ### Update Policy
108
+ - Newer sources generally supersede older
109
+ - If both positions still valid (e.g., A/B testing), note both
110
+ - Never silently overwrite — always flag for review
111
+
112
+ ## Output Report Format
113
+
114
+ ```
115
+ Cook complete. Here's what changed:
116
+
117
+ New knowledge:
118
+ • [[feature-a]] — Response time monitoring feature
119
+ • [[response-time-metrics]] — Why median replaced avg
120
+
121
+ Updated:
122
+ • [[zhang-san]] — Added Feature A assignment
123
+
124
+ Contradiction found:
125
+ ⚠ PRD says avg(response_time) > baseline, but experiment notes say median
126
+ Sources: Projects/Feature-A-PRD.md vs Daily/2026-04-05.md
127
+ Want me to create a comparison page?
128
+
129
+ Log: 1 entry added to log.md
130
+ ```
131
+
132
+ **Design principles:**
133
+ - Natural language, no technical jargon
134
+ - Structured for quick scanning
135
+ - Actionable (asks for decisions on contradictions)
136
+ - Wikilinks for easy navigation
137
+
138
+ ## Auto-Trigger Behavior
139
+
140
+ The Agent should automatically run `/cook` after:
141
+ - Writing a note (brief report: "Cooked 1 note. Updated [[x]], created [[y]].")
142
+ - User drops new files into the vault
143
+
144
+ **When NOT to auto-trigger:**
145
+ - Rapid-fire note creation (batch and cook once at the end)
146
+ - `/cook` was already run in the last 5 minutes
147
+
148
+ ## Agent Page Identification
149
+
150
+ Agent pages are identified by directory:
151
+ | Location | Ownership |
152
+ |----------|-----------|
153
+ | `entities/**/*.md` | Agent |
154
+ | `concepts/**/*.md` | Agent |
155
+ | `comparisons/**/*.md` | Agent |
156
+ | `queries/**/*.md` | Agent |
157
+ | All other `.md` | User (read-only during /cook) |
158
+
159
+ No `owner` frontmatter field needed.
160
+
161
+ ## Key Principles
162
+
163
+ - **Evidence-based**: Every knowledge page cites its sources
164
+ - **Never modify user notes**: User notes are read-only during /cook
165
+ - **Thresholds matter**: 2+ mentions or central subject to create a page
166
+ - **Split at 200 lines**: Break large pages into sub-topics
167
+ - **Flag contradictions**: Never silently overwrite
@@ -1,72 +1,131 @@
1
1
  ---
2
2
  name: diagnose
3
- description: Diagnose knowledge graph health — find missing frontmatter, orphan notes, broken wikilinks, and AGENTS.md drift. Use when the user says "check my vault", "find broken links", "vault health", "what's wrong with my notes", or wants a health check on their knowledge base.
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 configuration.
6
+ Broader than /health which focuses on agent pages — /diagnose checks the entire vault including user notes.
4
7
  ---
5
8
 
6
- # /diagnose — Knowledge Graph Health Check
9
+ # /diagnose — Vault Diagnosis
7
10
 
8
- You are a vault health assistant. Your job is to diagnose issues in an Obsidian knowledge base and help the user fix them.
11
+ 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.
9
12
 
10
- ## Execution Flow
13
+ ## Prerequisites Check
11
14
 
12
- ### Step 1: Locate Vault
15
+ ```bash
16
+ obsidian --version
17
+ ```
18
+
19
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
13
20
 
14
- Ask the user for their vault path, or detect it from the current working directory (look for AGENTS.md in the cwd or parent directories).
21
+ ## Parameters
15
22
 
16
- ### Step 2: Run Diagnosis
23
+ - **focus** (optional): Specific area to check — `frontmatter`, `links`, `structure`, `config`, or `all`. Default: `all`.
17
24
 
18
- Call `byoao_vault_doctor` with the vault path. This runs 5 checks:
25
+ ## Process
19
26
 
20
- 1. **Missing frontmatter** notes without any YAML frontmatter
21
- 2. **Missing note_type** — notes without `note_type` field (not yet woven)
22
- 3. **Missing type/tags** — notes with frontmatter but no `type` or `tags` field
23
- 4. **Orphan notes** — notes with no incoming or outgoing wikilinks
24
- 5. **Broken wikilinks** — links that point to non-existent notes
27
+ ### Step 1: Frontmatter Coverage
25
28
 
26
- Additionally, if `INDEX.base` exists:
27
- 6. **INDEX.base accuracy** — verify note counts match actual vault state
29
+ ```bash
30
+ obsidian properties sort=count counts
31
+ ```
28
32
 
29
- ### Step 3: Present Results
33
+ Report:
34
+ - Total notes with frontmatter vs. without
35
+ - Most common missing fields
36
+ - Notes with invalid frontmatter (bad dates, unknown types, etc.)
37
+ - Tag usage: how many unique tags, how many notes per tag
30
38
 
31
- Format the report by severity:
39
+ ### Step 2: Broken Wikilinks
32
40
 
41
+ Scan for wikilinks that point to non-existent files:
42
+
43
+ ```bash
44
+ obsidian search "\[\[.*\]\]"
33
45
  ```
34
- ! 3 notes without frontmatter
35
- - Inbox/quick-thought.md
36
- - Projects/demo-notes.md
37
- - Knowledge/api-overview.md
38
46
 
39
- ! AGENTS.md lists [[Kent]] but no People/Kent.md found
47
+ For each wikilink found, check if the target file exists. Report broken links with:
48
+ - Source file where the broken link appears
49
+ - Target link that doesn't resolve
50
+ - Suggested fix (create the missing file or remove the link)
51
+
52
+ ### Step 3: Orphan Detection
40
53
 
41
- i 2 orphan notes (no incoming or outgoing wikilinks)
42
- - Archive/old-draft.md
43
- - Inbox/random.md
54
+ Find notes with no inbound wikilinks:
44
55
 
45
- ok 0 broken wikilinks
56
+ ```bash
57
+ obsidian backlinks "note-name"
46
58
  ```
47
59
 
48
- ### Step 4: Suggest Fixes
60
+ For both user notes and agent pages, identify orphans. Note that newly created notes are expected to be orphans temporarily.
61
+
62
+ ### Step 4: AGENTS.md, SCHEMA.md, and v2 layout
63
+
64
+ Check if `AGENTS.md` accurately reflects the current vault state:
65
+ - Does it reference directories that no longer exist?
66
+ - Does it miss directories that were added?
67
+ - Are the skill references still valid?
68
+ - Is the navigation advice still accurate?
69
+
70
+ Check `SCHEMA.md`:
71
+ - Tag taxonomy and domain sections match how tags are actually used
72
+ - Agent directory table matches `entities/`, `concepts/`, `comparisons/`, `queries/`
73
+ - Frontmatter expectations align with v2 `type: entity | concept | comparison | query`
74
+
75
+ 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).
76
+
77
+ ### Step 5: Configuration Check
49
78
 
50
- For each issue category, suggest a concrete next action:
79
+ Verify vault configuration:
80
+ - `.obsidian/` directory exists and is valid
81
+ - `.opencode/` directory has current skill definitions
82
+ - `SCHEMA.md` exists and has a defined tag taxonomy
83
+ - `log.md` exists and has recent entries
84
+ - `INDEX.base` exists for compiled knowledge discovery
51
85
 
52
- | Issue | Suggested Fix |
53
- |-------|--------------|
54
- | Missing frontmatter | "Run `/weave` on these files to add structure" |
55
- | Missing note_type | "Run `/weave` to classify and connect these notes" |
56
- | Missing type/tags | "Run `/weave` to fill in metadata" |
57
- | Orphan notes | "Consider adding `[[wikilinks]]` to connect them, or archive if unused" |
58
- | Broken wikilinks | "Create the target note, or fix the link name" |
59
- | INDEX.base stale | "Run `/wiki` to regenerate the knowledge index" |
86
+ ### Step 6: Present Diagnosis
60
87
 
61
- **Always ask for user confirmation before making changes.** Do not auto-fix.
88
+ ```markdown
89
+ # Vault Diagnosis
62
90
 
63
- ### Step 5: Update INDEX.base Timestamp
91
+ Scanned {N} notes, {M} agent pages, {K} user notes.
64
92
 
65
- If `INDEX.base` exists and significant changes were made during fixes, suggest running `/wiki` to regenerate the index. If the user confirms, run `/wiki`.
93
+ ---
94
+
95
+ ## Frontmatter Coverage
96
+ - Notes with frontmatter: X/Y (Z%)
97
+ - Most common missing: {list fields}
98
+ - Unique tags: {N} (top 5: {list})
99
+
100
+ ## Broken Wikilinks
101
+ - {N} broken links found:
102
+ - [[target]] in [[source]] → file not found
103
+
104
+ ## Orphan Notes
105
+ - {N} notes with no inbound links:
106
+ - [[note-name]] — consider linking from [[suggested-source]]
107
+
108
+ ## AGENTS.md / SCHEMA.md / layout
109
+ - AGENTS.md: {Up to date / Needs update} — {details if outdated}
110
+ - SCHEMA.md: {Up to date / Needs update / Missing} — {taxonomy vs usage}
111
+ - Agent dirs (`entities/`, `concepts/`, `comparisons/`, `queries/`): {OK / Missing / Issues}
112
+
113
+ ## Configuration
114
+ - .obsidian/: {OK / Missing / Issues}
115
+ - .opencode/: {OK / Missing / Issues}
116
+ - log.md: {OK / Missing / {N} entries, last: {date}}
117
+ - INDEX.base: {OK / Missing / Needs update}
118
+
119
+ ## Overall Health
120
+ **Score**: {Good / Fair / Needs attention}
121
+
122
+ {2-3 sentence summary of the vault's overall health and the top 2-3 issues to address}
123
+ ```
66
124
 
67
125
  ## Key Principles
68
126
 
69
- - **Diagnose + suggest, never auto-fix**
70
- - **Group by severity** warnings first, info second
71
- - **Actionable suggestions** tell the user exactly what to do
72
- - **Respect user agency** always ask before modifying files
127
+ - **Comprehensive but prioritized.** Check everything, but surface the most important issues first.
128
+ - **Actionable findings.** Every issue should come with a suggested fix.
129
+ - **Non-destructive by default.** Report issues, don't fix them automatically.
130
+ - **Whole vault, not just agent pages.** Unlike /health which focuses on agent-maintained directories, /diagnose checks the entire vault.
131
+ - **Obsidian is first workbench.** All note operations go through Obsidian CLI.
@@ -1,11 +1,14 @@
1
1
  ---
2
2
  name: drift
3
- description: Compare stated intentions vs actual behavior over 30-60 days using daily notes and project documents. Use when the user asks "am I doing what I said I would", "what happened to my goals", "where did my time go", "check my follow-through", or wants to reflect on alignment between plans and actions.
3
+ description: >
4
+ Intention-vs-action gap analysis over time. Compares what the user said they would do with
5
+ what actually happened. Use when the user asks "am I following through on X", "how has Y
6
+ changed since the plan", or wants to check if actions match intentions.
4
7
  ---
5
8
 
6
- # /drift — Detect Intention-Action Gaps
9
+ # /drift — Intention vs. Action
7
10
 
8
- You are a behavioral analyst. Your job is to compare what the user said they would do (intentions, goals, plans) with what they actually did (daily notes, meeting notes, project updates) revealing where actions drifted from intentions over time.
11
+ 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.
9
12
 
10
13
  ## Prerequisites Check
11
14
 
@@ -13,211 +16,107 @@ You are a behavioral analyst. Your job is to compare what the user said they wou
13
16
  obsidian --version
14
17
  ```
15
18
 
16
- If this fails, STOP and display the Obsidian CLI availability message (see /weave for the full error text).
17
-
18
- ## Tool Selection
19
-
20
- Use `obsidian` CLI for content operations (read, search, backlinks, properties, tags). Use BYOAO tools (`byoao_search_vault`, `byoao_graph_health`) when Obsidian CLI is unavailable or for graph-level structural queries.
19
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
21
20
 
22
21
  ## Parameters
23
22
 
24
- - **period** (optional): Time window to analyze. Default: "30d" (last 30 days). Accepts: "7d", "30d", "60d", "90d".
25
- - **focus** (optional): Limit to a project, domain, or goal. Default: all.
26
- - **output** (optional): Save the drift analysis as a note.
23
+ - **topic** (optional): Specific plan, goal, or intention to track. Default: scan all recent intentions.
24
+ - **window** (optional): Time window to analyze (e.g., "30d", "3m", "all"). Default: "30d".
27
25
 
28
26
  ## Process
29
27
 
30
- ### Date Range Resolution
31
-
32
- Calculate the cutoff date from the `period` parameter (e.g., "30d" = today minus 30 days). Use this to filter all notes:
33
- - **Daily notes**: filter by filename pattern (`Daily/YYYY-MM-DD.md`)
34
- - **Other notes**: filter by frontmatter `date` field
35
- - Notes without a date: include only if they are in an active project folder or have `status: active`
28
+ ### Step 1: Find Stated Intentions
36
29
 
37
- ### Step 1: Collect Intentions
30
+ Search for places where the user expressed intentions:
38
31
 
39
- Use a structured, layered approach to find stated intentions:
40
-
41
- **Layer 1 — Structured notes (most reliable):**
42
32
  ```bash
43
- obsidian search "type: decision"
44
- obsidian search "type: plan"
33
+ obsidian search "should" OR "need to" OR "will" OR "plan to" OR "going to" OR "decided to"
34
+ obsidian search "goal" OR "objective" OR "target" OR "priority"
45
35
  ```
46
- Read sprint handoffs, project docs, and decision records within the period.
47
-
48
- **Layer 2 — Daily notes (chronological):**
49
- Read daily notes for the period by filename pattern (e.g., `Daily/2026-03-*.md`). Extract stated priorities, action items, and commitments.
50
-
51
- **Layer 3 — Keyword fallback (for vaults without structured frontmatter):**
52
- Only if Layers 1-2 produce fewer than 5 intentions:
53
- ```bash
54
- obsidian search "goal"
55
- obsidian search "next steps"
56
- obsidian search "TODO"
57
- obsidian search "priority"
58
- ```
59
-
60
- Also read:
61
- - Meeting notes with action items assigned
62
- - Notes with tags like `#plan`, `#goal`, `#commitment`
63
36
 
64
- Extract a list of **stated intentions** with dates:
65
- - "{date}: Planned to {X}" (source: [[Note]])
37
+ Also check:
38
+ - Daily notes for intention statements
39
+ - Agent pages in `entities/` and `concepts/` for documented decisions, owners, or plans
40
+ - Pages with `status: draft` that represent in-progress intentions
41
+ - `log.md` as the chronological spine: cook cycles, reported changes, and stated purposes tied to dates
66
42
 
67
- ### Step 2: Collect Actions
43
+ ### Step 2: Find Actual Actions
68
44
 
69
- Read daily notes and updates across the period:
45
+ Search for evidence of what actually happened:
70
46
 
71
47
  ```bash
72
- obsidian search "completed"
73
- obsidian search "done"
74
- obsidian search "shipped"
75
- obsidian search "finished"
48
+ obsidian search "completed" OR "done" OR "shipped" OR "implemented" OR "finished"
49
+ obsidian search "changed" OR "switched" OR "pivoted" OR "abandoned"
76
50
  ```
77
51
 
78
- Read daily notes chronologically to track what actually happened:
79
- - What did the user write about doing?
80
- - What meetings happened?
81
- - What topics consumed attention?
52
+ Check:
53
+ - Recent daily notes for actual activities
54
+ - Agent pages in `entities/` and `concepts/` for current state and decision descriptions
55
+ - `log.md` entries since the intention was stated
56
+ - Updated frontmatter dates and `status` changes
57
+ - New pages created vs. pages left in draft
82
58
 
83
- Extract a list of **actual actions** with dates:
84
- - "{date}: Did {Y}" (source: [[Daily Note]])
59
+ ### Step 3: Compare Intentions to Actions
85
60
 
86
- ### Step 3: Alignment Analysis
61
+ For each intention found:
87
62
 
88
- For each stated intention, check:
89
-
90
- | Status | Meaning |
91
- |--------|---------|
92
- | **Aligned** | Intention was followed through with documented evidence |
93
- | **Delayed** | Work started but timeline slipped |
94
- | **Drifted** | Work went in a different direction than planned |
95
- | **Abandoned** | Intention was stated but never acted on |
96
- | **Emergent** | Action happened that was never planned (reactive work) |
63
+ 1. **Followed through** Evidence shows the action was taken as planned
64
+ 2. **Partially followed** — Some action was taken but not fully
65
+ 3. **Deferred** Still planned but not yet acted on
66
+ 4. **Diverged** — Action was taken but in a different direction
67
+ 5. **Abandoned** No evidence of any action
97
68
 
98
69
  ### Step 4: Identify Drift Patterns
99
70
 
100
- Look for systemic patterns, not just individual misses:
101
-
102
- **Priority displacement** — Planned work was consistently displaced by reactive work.
103
- > "In 4 of 5 weeks, the Friday daily note mentions not getting to the planned work because of urgent requests."
104
-
105
- **Scope creep** — The scope of a project expanded without acknowledgment.
106
- > "The original plan in [[Project Plan]] had 5 deliverables. Current notes reference 9, but no re-planning happened."
107
-
108
- **Energy leaks** — Time going to undocumented work.
109
- > "Daily notes from weeks 3-5 rarely mention the stated priority. The gap suggests time is going somewhere not reflected in the vault."
110
- **Caveat:** This pattern is only meaningful if the user writes daily notes consistently. If daily notes are sparse or irregular, the absence of mentions is a documentation gap, not evidence of time spent elsewhere. Note this distinction in the report.
111
-
112
- **Goal abandonment** — Goals that silently disappeared.
113
- > "The Q1 goal of 'improve test coverage' was mentioned 3 times in January and never again."
71
+ Look for systematic patterns:
114
72
 
115
- **Emergent priorities** Unplanned work that became dominant.
116
- > "'Customer escalations' wasn't in any plan but appears in 60% of daily notes."
73
+ - **Priority drift**: The user said X was top priority, but most time went to Y
74
+ - **Scope drift**: A small intention grew into a much larger effort (or shrank)
75
+ - **Direction drift**: The approach changed from the original plan
76
+ - **Timeline drift**: Things took significantly longer (or shorter) than expected
77
+ - **Attention drift**: An intense focus faded and wasn't replaced by anything
117
78
 
118
- ### Step 5: Present the Analysis
79
+ ### Step 5: Present the Drift Report
119
80
 
120
81
  ```markdown
121
- # Drift Analysis: {period}
82
+ # Drift Report: {topic or "Recent Intentions"}
122
83
 
123
- Comparing intentions vs actions over {period}, focused on {focus or "all areas"}.
124
-
125
- ## Summary
126
-
127
- | Category | Count |
128
- |----------|-------|
129
- | Aligned | {N} intentions followed through |
130
- | Delayed | {N} intentions behind schedule |
131
- | Drifted | {N} intentions changed direction |
132
- | Abandoned | {N} intentions never acted on |
133
- | Emergent | {N} unplanned actions taken |
134
-
135
- **Overall drift score**: {Low / Moderate / High}
84
+ Analyzed {N} notes from {start date} to {end date}.
136
85
 
137
86
  ---
138
87
 
139
- ## Aligned (on track)
140
-
141
- - **{Intention}** ({date})
142
- Stated in: [[Plan Note]]
143
- Evidence: [[Action Note 1]], [[Action Note 2]]
88
+ ## Followed Through
89
+ - **{intention}** — {what was done, evidence from [[note]]}
144
90
 
145
- ## Delayed
91
+ ## Partially Followed ⚡
92
+ - **{intention}** — {what was done vs. what was planned, gap evidence from [[note]]}
146
93
 
147
- - **{Intention}** ({original date} → still in progress)
148
- Stated in: [[Plan Note]]
149
- Last mention: [[Recent Note]] ({date})
150
- **Likely cause**: {what the notes suggest}
94
+ ## Deferred
95
+ - **{intention}** — {stated on [[date]] in [[note]], no action found since}
151
96
 
152
- ## Drifted
97
+ ## Diverged ↩
98
+ - **{intention}** — {original plan from [[note A]], actual outcome from [[note B]]}
153
99
 
154
- - **{Intention}** → became **{what it turned into}**
155
- Original: [[Plan Note]] "{original plan}"
156
- Current: [[Recent Note]] — "{what's actually happening}"
157
- **The shift**: {when and why direction changed}
158
-
159
- ## Abandoned
160
-
161
- - **{Intention}** ({date stated}, last mentioned {date})
162
- Stated in: [[Note]]
163
- **No evidence of**: follow-up, cancellation decision, or handoff
164
- **Question**: Was this a conscious decision or did it just fade?
165
-
166
- ## Emergent (unplanned)
167
-
168
- - **{Action pattern}** — appeared in {N} daily notes, not in any plan
169
- **Impact**: {how much time/attention this consumed}
170
- **Question**: Should this be formally planned/resourced?
100
+ ## Abandoned
101
+ - **{intention}** — {stated on [[date]], zero evidence of action}
171
102
 
172
103
  ---
173
104
 
174
105
  ## Drift Patterns
175
106
 
176
- ### {Pattern name}
177
- {Description with evidence from notes}
178
-
179
- ---
180
-
181
- ## Reflections
182
-
183
- These questions are for your consideration — not judgments:
184
-
185
- 1. {Question about the most significant drift}
186
- 2. {Question about whether emergent work should be planned}
187
- 3. {Question about abandoned intentions}
107
+ ### Priority Drift
108
+ {Evidence that stated priorities don't match actual time allocation}
188
109
 
189
- ## Suggested Actions
110
+ ### Direction Drift
111
+ {Evidence that the approach changed from the original plan}
190
112
 
191
- - Write a decision record for {abandoned intention} — cancel formally or recommit
192
- - Add {emergent pattern} to the next planning cycle
193
- - Run `/trace topic="{drifted topic}"` to understand the shift
194
- - Re-read [[original plan]] with fresh eyes
113
+ ## Overall Assessment
114
+ {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?}
195
115
  ```
196
116
 
197
- ### Step 6: Save (Optional)
198
-
199
- At the end of your analysis, ask:
200
-
201
- > "Would you like me to save this as a note?"
202
-
203
- If the user confirms, save with frontmatter:
204
-
205
- ```yaml
206
- ---
207
- title: "Drift Analysis: {period}"
208
- note_type: literature
209
- type: analysis
210
- date: <today>
211
- tags: [drift, reflection]
212
- ---
213
- ```
214
-
215
- Use `obsidian create` to save. Ask the user where they'd like it saved.
216
-
217
117
  ## Key Principles
218
118
 
219
- - **Descriptive, not judgmental**: "You said X and did Y" is fine. "You failed to do X" is not. Drift is information, not failure.
220
- - **Vault evidence only**: Only compare what's documented. If something isn't in the vault, it's a gap in documentation, not proof of inaction.
221
- - **Surface patterns, not incidents**: One missed item is noise. Three missed items in the same category is a pattern worth examining.
222
- - **Respect the user's agency**: Drift may be intentional adaptation, not failure. Present findings neutrally and let the user interpret.
223
- - **Emergent work is valid**: Unplanned work that was important should be recognized, not treated as distraction.
119
+ - **Factual, not judgmental.** Report the gap between intention and action without moralizing. The user decides if it matters.
120
+ - **Evidence-based.** Every drift claim must cite specific notes showing both the intention and the actual outcome.
121
+ - **Drift isn't always bad.** Sometimes changing direction is the right call. Flag the drift; let the user judge.
122
+ - **Obsidian is first workbench.** All note operations go through Obsidian CLI.