@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.
- package/dist/__tests__/plugin-config.test.js +7 -10
- package/dist/__tests__/plugin-config.test.js.map +1 -1
- package/dist/assets/obsidian-skills/byoao-conventions.md +30 -54
- package/dist/assets/obsidian-skills/vault-thinking.md +6 -5
- package/dist/assets/presets/common/AGENTS.md.hbs +29 -46
- package/dist/assets/presets/common/SCHEMA.md.hbs +57 -0
- package/dist/assets/presets/common/Start Here.md.hbs +29 -40
- package/dist/assets/presets/minimal/preset.json +3 -3
- package/dist/assets/presets/pm-tpm/preset.json +2 -2
- package/{src/skills/ask.md → dist/assets/skills/ask/SKILL.md} +30 -27
- package/dist/assets/skills/ask.md +28 -27
- package/dist/assets/skills/challenge/SKILL.md +134 -0
- package/dist/assets/skills/challenge.md +79 -121
- package/dist/assets/skills/connect/SKILL.md +126 -0
- package/dist/assets/skills/connect.md +75 -163
- package/dist/assets/skills/cook/SKILL.md +170 -0
- package/dist/assets/skills/cook.md +167 -0
- package/dist/assets/skills/diagnose/SKILL.md +134 -0
- package/dist/assets/skills/diagnose.md +102 -43
- package/dist/assets/skills/drift/SKILL.md +123 -0
- package/dist/assets/skills/drift.md +64 -165
- package/dist/assets/skills/health/SKILL.md +65 -0
- package/dist/assets/skills/health.md +63 -0
- package/{src/skills/ideas.md → dist/assets/skills/ideas/SKILL.md} +11 -10
- package/dist/assets/skills/ideas.md +11 -10
- package/dist/assets/skills/organize/SKILL.md +109 -0
- package/dist/assets/skills/organize.md +56 -155
- package/dist/assets/skills/prep/SKILL.md +65 -0
- package/dist/assets/skills/prep.md +63 -0
- package/dist/assets/skills/trace/SKILL.md +143 -0
- package/dist/assets/skills/trace.md +75 -90
- package/dist/assets/skills/wiki/SKILL.md +127 -0
- package/dist/assets/skills/wiki.md +77 -178
- package/dist/cli/cli-program.js +18 -15
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/installer.js +54 -29
- package/dist/cli/installer.js.map +1 -1
- package/dist/hooks/idle-suggestions.js +4 -4
- package/dist/hooks/idle-suggestions.js.map +1 -1
- package/dist/hooks/system-transform.js +35 -1
- package/dist/hooks/system-transform.js.map +1 -1
- package/dist/index.js +455 -636
- package/dist/index.js.map +1 -1
- package/dist/plugin-config.js +6 -32
- package/dist/plugin-config.js.map +1 -1
- package/dist/tools/init-vault.js +8 -38
- package/dist/tools/init-vault.js.map +1 -1
- package/dist/tools/vault-doctor.js +1 -1
- package/dist/tools/vault-doctor.js.map +1 -1
- package/dist/tools/vault-status.js +1 -1
- package/dist/tools/vault-status.js.map +1 -1
- package/dist/vault/__tests__/create.test.js +48 -116
- package/dist/vault/__tests__/create.test.js.map +1 -1
- package/dist/vault/__tests__/doctor.test.js +14 -2
- package/dist/vault/__tests__/doctor.test.js.map +1 -1
- package/dist/vault/__tests__/manifest.test.js +2 -2
- package/dist/vault/__tests__/manifest.test.js.map +1 -1
- package/dist/vault/__tests__/status.test.js +12 -0
- package/dist/vault/__tests__/status.test.js.map +1 -1
- package/dist/vault/__tests__/upgrade.test.js +3 -3
- package/dist/vault/__tests__/upgrade.test.js.map +1 -1
- package/dist/vault/create.js +86 -196
- package/dist/vault/create.js.map +1 -1
- package/dist/vault/doctor.js +49 -0
- package/dist/vault/doctor.js.map +1 -1
- package/dist/vault/manifest.js +2 -2
- package/dist/vault/manifest.js.map +1 -1
- package/dist/vault/preset.js +10 -4
- package/dist/vault/preset.js.map +1 -1
- package/dist/vault/self-update.js +1 -1
- package/dist/vault/status.js +24 -0
- package/dist/vault/status.js.map +1 -1
- package/dist/vault/upgrade.js +165 -23
- package/dist/vault/upgrade.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/obsidian-skills/byoao-conventions.md +9 -6
- package/src/assets/obsidian-skills/vault-thinking.md +6 -5
- package/src/assets/presets/common/AGENTS.md.hbs +23 -19
- package/src/assets/presets/common/SCHEMA.md.hbs +57 -0
- package/src/assets/presets/common/Start Here.md.hbs +29 -40
- package/src/assets/presets/minimal/preset.json +3 -3
- package/src/assets/presets/pm-tpm/preset.json +2 -2
- package/src/skills/ask/SKILL.md +135 -0
- package/src/skills/challenge/SKILL.md +134 -0
- package/src/skills/connect/SKILL.md +126 -0
- package/src/skills/cook/SKILL.md +170 -0
- package/src/skills/diagnose/SKILL.md +134 -0
- package/src/skills/drift/SKILL.md +123 -0
- package/src/skills/health/SKILL.md +65 -0
- package/src/skills/ideas/SKILL.md +173 -0
- package/src/skills/organize/SKILL.md +109 -0
- package/src/skills/prep/SKILL.md +65 -0
- package/src/skills/trace/SKILL.md +143 -0
- package/src/skills/wiki/SKILL.md +127 -0
- package/dist/assets/presets/common/Glossary.md.hbs +0 -16
- package/dist/assets/presets/common/obsidian/daily-notes.json +0 -5
- package/dist/assets/presets/common/obsidian/templates.json +0 -3
- package/dist/assets/presets/common/templates/Daily Note.md +0 -19
- package/dist/assets/presets/common/templates/Decision Record.md +0 -32
- package/dist/assets/presets/common/templates/Investigation.md +0 -34
- package/dist/assets/presets/common/templates/Meeting Notes.md +0 -25
- package/dist/assets/skills/emerge.md +0 -168
- package/dist/assets/skills/weave.md +0 -287
- package/dist/tools/add-glossary-term.js +0 -21
- package/dist/tools/add-glossary-term.js.map +0 -1
- package/dist/tools/add-person.js +0 -21
- package/dist/tools/add-person.js.map +0 -1
- package/dist/tools/add-project.js +0 -24
- package/dist/tools/add-project.js.map +0 -1
- package/dist/tools/graph-health.js +0 -25
- package/dist/tools/graph-health.js.map +0 -1
- package/dist/tools/note-read.js +0 -19
- package/dist/tools/note-read.js.map +0 -1
- package/dist/tools/search-vault.js +0 -22
- package/dist/tools/search-vault.js.map +0 -1
- package/dist/vault/__tests__/glossary.test.js +0 -68
- package/dist/vault/__tests__/glossary.test.js.map +0 -1
- package/dist/vault/__tests__/graph-health.test.js +0 -102
- package/dist/vault/__tests__/graph-health.test.js.map +0 -1
- package/dist/vault/__tests__/member.test.js +0 -85
- package/dist/vault/__tests__/member.test.js.map +0 -1
- package/dist/vault/__tests__/note-read.test.js +0 -71
- package/dist/vault/__tests__/note-read.test.js.map +0 -1
- package/dist/vault/__tests__/obsidian-cli.test.js +0 -108
- package/dist/vault/__tests__/obsidian-cli.test.js.map +0 -1
- package/dist/vault/__tests__/search-vault.test.js +0 -93
- package/dist/vault/__tests__/search-vault.test.js.map +0 -1
- package/dist/vault/glossary.js +0 -27
- package/dist/vault/glossary.js.map +0 -1
- package/dist/vault/graph-health.js +0 -83
- package/dist/vault/graph-health.js.map +0 -1
- package/dist/vault/member.js +0 -67
- package/dist/vault/member.js.map +0 -1
- package/dist/vault/note-read.js +0 -70
- package/dist/vault/note-read.js.map +0 -1
- package/dist/vault/project.js +0 -68
- package/dist/vault/project.js.map +0 -1
- package/dist/vault/retrieval-types.js +0 -5
- package/dist/vault/retrieval-types.js.map +0 -1
- package/dist/vault/search-vault.js +0 -87
- package/dist/vault/search-vault.js.map +0 -1
- package/src/assets/presets/common/obsidian/daily-notes.json +0 -5
- package/src/assets/presets/common/obsidian/templates.json +0 -3
- package/src/assets/presets/common/templates/Daily Note.md +0 -19
- package/src/assets/presets/common/templates/Decision Record.md +0 -32
- package/src/assets/presets/common/templates/Investigation.md +0 -34
- package/src/assets/presets/common/templates/Meeting Notes.md +0 -25
- package/src/skills/challenge.md +0 -174
- package/src/skills/connect.md +0 -213
- package/src/skills/diagnose.md +0 -72
- package/src/skills/drift.md +0 -223
- package/src/skills/emerge.md +0 -168
- package/src/skills/organize.md +0 -206
- package/src/skills/trace.md +0 -156
- package/src/skills/weave.md +0 -287
- package/src/skills/wiki.md +0 -227
package/src/skills/challenge.md
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: challenge
|
|
3
|
-
description: Pressure-test a belief, assumption, or decision using the vault's own history. Finds counter-evidence, contradictions, and blind spots. Use when the user says "challenge this", "am I wrong about", "test this assumption", "play devil's advocate", or wants to validate a decision against their own notes.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /challenge — Pressure-Test Your Thinking
|
|
7
|
-
|
|
8
|
-
You are a constructive critic. Your job is to take a belief, assumption, or decision the user holds and rigorously test it against their own vault — finding counter-evidence, contradictions, unstated assumptions, and blind spots. You are not adversarial; you are helping the user think more clearly.
|
|
9
|
-
|
|
10
|
-
## Prerequisites Check
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
obsidian --version
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
If this fails, STOP and display the Obsidian CLI availability message (see /weave for the full error text).
|
|
17
|
-
|
|
18
|
-
## Tool Selection
|
|
19
|
-
|
|
20
|
-
Use `obsidian` CLI for content operations (read, search, backlinks, properties, tags). Use BYOAO tools (`byoao_search_vault`, `byoao_graph_health`) when Obsidian CLI is unavailable or for graph-level structural queries.
|
|
21
|
-
|
|
22
|
-
## Parameters
|
|
23
|
-
|
|
24
|
-
- **belief** (required): The belief, assumption, or decision to challenge. Can be a direct statement or a reference to a note.
|
|
25
|
-
- **strength** (optional): "gentle" (look for nuances), "rigorous" (find every counter-argument). Default: "rigorous".
|
|
26
|
-
- **output** (optional): Save the challenge analysis as a note.
|
|
27
|
-
|
|
28
|
-
## Process
|
|
29
|
-
|
|
30
|
-
### Step 1: Articulate the Belief
|
|
31
|
-
|
|
32
|
-
Parse the user's input and restate the belief clearly:
|
|
33
|
-
|
|
34
|
-
> "The belief being tested: **{clear statement}**"
|
|
35
|
-
|
|
36
|
-
If the belief references a note, read it and extract the core claim:
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
obsidian read "<note>"
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### Step 2: Find Supporting Evidence
|
|
43
|
-
|
|
44
|
-
First, be fair — find notes that support the belief:
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
obsidian search "<key terms from belief>"
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Read notes that discuss this topic. Document what supports the belief:
|
|
51
|
-
- Which notes align with it?
|
|
52
|
-
- What evidence was the belief originally based on?
|
|
53
|
-
- How confident does the user seem in their notes?
|
|
54
|
-
|
|
55
|
-
### Step 3: Find Counter-Evidence
|
|
56
|
-
|
|
57
|
-
Now actively look for contradictions:
|
|
58
|
-
|
|
59
|
-
**Direct contradictions** — Notes that explicitly state the opposite.
|
|
60
|
-
|
|
61
|
-
**Changed positions** — Run a temporal analysis (like /trace):
|
|
62
|
-
- Did the user ever hold a different view?
|
|
63
|
-
- When did it change? What triggered it?
|
|
64
|
-
- Was the change based on new evidence or assumption?
|
|
65
|
-
|
|
66
|
-
**Unstated assumptions** — What does the belief take for granted?
|
|
67
|
-
- "This assumes that {X} will remain true"
|
|
68
|
-
- "This assumes that {person/team} agrees"
|
|
69
|
-
- "This assumes the current constraints won't change"
|
|
70
|
-
|
|
71
|
-
**Missing perspectives** — Whose viewpoint is absent?
|
|
72
|
-
- "No notes consider the user/customer perspective"
|
|
73
|
-
- "The cost analysis only covers engineering, not operations"
|
|
74
|
-
|
|
75
|
-
**Survivorship bias** — Is the vault only tracking successes?
|
|
76
|
-
- "Three similar initiatives are documented, all framed positively. Are there failed attempts that weren't documented?"
|
|
77
|
-
|
|
78
|
-
### Step 4: Assess Confidence Level
|
|
79
|
-
|
|
80
|
-
Based on the evidence gathered, rate the belief:
|
|
81
|
-
|
|
82
|
-
| Level | Description |
|
|
83
|
-
|-------|-------------|
|
|
84
|
-
| **Strong** | Consistent support across notes, no meaningful counter-evidence, assumptions are reasonable |
|
|
85
|
-
| **Moderate** | Good support but some counter-evidence exists, or key assumptions are untested |
|
|
86
|
-
| **Weak** | Significant counter-evidence, contradictions over time, or critical unstated assumptions |
|
|
87
|
-
| **Contradicted** | The vault's own history provides stronger evidence against the belief |
|
|
88
|
-
|
|
89
|
-
### Step 5: Present the Challenge
|
|
90
|
-
|
|
91
|
-
```markdown
|
|
92
|
-
# Challenge: {Belief Statement}
|
|
93
|
-
|
|
94
|
-
**Confidence level**: {Strong / Moderate / Weak / Contradicted}
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## The Belief
|
|
99
|
-
|
|
100
|
-
{Restated belief in the user's own words, citing the source note if applicable}
|
|
101
|
-
|
|
102
|
-
## Supporting Evidence ({N} notes)
|
|
103
|
-
|
|
104
|
-
- **[[Note]]**: "{quote supporting the belief}"
|
|
105
|
-
- **[[Note]]**: "{quote}"
|
|
106
|
-
|
|
107
|
-
## Counter-Evidence ({N} notes)
|
|
108
|
-
|
|
109
|
-
### Direct Contradictions
|
|
110
|
-
|
|
111
|
-
- **[[Note]]** ({date}): "{quote that contradicts the belief}"
|
|
112
|
-
**Why this matters**: {explanation}
|
|
113
|
-
|
|
114
|
-
### Position Changes Over Time
|
|
115
|
-
|
|
116
|
-
- {date range}: You held view X (evidence: [[notes]])
|
|
117
|
-
- {date}: Something shifted (trigger: [[note]])
|
|
118
|
-
- {date range}: You now hold view Y
|
|
119
|
-
|
|
120
|
-
### Unstated Assumptions
|
|
121
|
-
|
|
122
|
-
1. **{Assumption}**: {Why this might not hold}
|
|
123
|
-
Evidence: {what the vault says or doesn't say}
|
|
124
|
-
|
|
125
|
-
2. **{Assumption}**: {Why this might not hold}
|
|
126
|
-
|
|
127
|
-
### Missing Perspectives
|
|
128
|
-
|
|
129
|
-
- {Whose view is absent and why it matters}
|
|
130
|
-
|
|
131
|
-
## Verdict
|
|
132
|
-
|
|
133
|
-
{2-3 paragraphs — fair assessment of how the belief holds up. Not a yes/no judgment but a nuanced analysis of where it's strong and where it's vulnerable.}
|
|
134
|
-
|
|
135
|
-
## Questions to Sit With
|
|
136
|
-
|
|
137
|
-
1. {A question the user should consider — not rhetorical, genuinely open}
|
|
138
|
-
2. {Another question}
|
|
139
|
-
3. {Another question}
|
|
140
|
-
|
|
141
|
-
## Suggested Actions
|
|
142
|
-
|
|
143
|
-
- {Concrete action if the belief needs revision}
|
|
144
|
-
- {Action to gather missing evidence}
|
|
145
|
-
- {Notes to re-read with fresh eyes}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### Step 6: Save (Optional)
|
|
149
|
-
|
|
150
|
-
At the end of your challenge, ask:
|
|
151
|
-
|
|
152
|
-
> "Would you like me to save this as a note?"
|
|
153
|
-
|
|
154
|
-
If the user confirms, save with frontmatter:
|
|
155
|
-
|
|
156
|
-
```yaml
|
|
157
|
-
---
|
|
158
|
-
title: "Challenge: {Belief}"
|
|
159
|
-
note_type: literature
|
|
160
|
-
type: analysis
|
|
161
|
-
date: <today>
|
|
162
|
-
tags: [challenge, critical-thinking]
|
|
163
|
-
---
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
Use `obsidian create` to save. Ask the user where they'd like it saved.
|
|
167
|
-
|
|
168
|
-
## Key Principles
|
|
169
|
-
|
|
170
|
-
- **Fair, not adversarial**: Always present supporting evidence first. The goal is clear thinking, not winning an argument.
|
|
171
|
-
- **Vault evidence only**: Challenge using the user's own notes, not general knowledge. "Research says X" is not valid here — "Your note from March says X" is.
|
|
172
|
-
- **Name assumptions explicitly**: The most valuable output is often the unstated assumptions, not the direct contradictions.
|
|
173
|
-
- **Questions over conclusions**: End with questions, not verdicts. The user decides what to do with the analysis.
|
|
174
|
-
- **Respect the "strong" result**: If a belief holds up well, say so clearly. Not every challenge needs to find problems.
|
package/src/skills/connect.md
DELETED
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: connect
|
|
3
|
-
description: Bridge two seemingly unrelated topics or domains using the vault's link graph. Discovers hidden paths and shared contexts. Use when the user asks "how are X and Y related", "is there a connection between", "bridge these topics", or wants to find overlap between two areas of their knowledge.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /connect — Bridge Two Domains
|
|
7
|
-
|
|
8
|
-
You are a knowledge connector. Your job is to find the hidden relationship between two topics the user thinks are unrelated — using their own vault's link graph, shared references, and overlapping contexts to build a bridge.
|
|
9
|
-
|
|
10
|
-
## Prerequisites Check
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
obsidian --version
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
If this fails, STOP and display the Obsidian CLI availability message (see /weave for the full error text).
|
|
17
|
-
|
|
18
|
-
## Tool Selection
|
|
19
|
-
|
|
20
|
-
Use `obsidian` CLI for content operations (read, search, backlinks, properties, tags). Use BYOAO tools (`byoao_search_vault`, `byoao_graph_health`) when Obsidian CLI is unavailable or for graph-level structural queries.
|
|
21
|
-
|
|
22
|
-
## Parameters
|
|
23
|
-
|
|
24
|
-
- **from** (required): The first topic, concept, domain, or note.
|
|
25
|
-
- **to** (required): The second topic, concept, domain, or note.
|
|
26
|
-
- **output** (optional): If set, save the connection map as a note at this path.
|
|
27
|
-
|
|
28
|
-
## Process
|
|
29
|
-
|
|
30
|
-
### Step 1: Map Both Endpoints
|
|
31
|
-
|
|
32
|
-
For each of the two topics (`from` and `to`):
|
|
33
|
-
|
|
34
|
-
1. **Find the anchor note** — does a vault note exist for this topic?
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
obsidian search "<topic>"
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
2. **Gather the neighborhood** — all notes that mention or link to this topic:
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
obsidian backlinks "<topic>"
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
3. **Extract properties** — what domains, tags, and references are associated?
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
obsidian read "<topic note>"
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Build a set for each endpoint: `{notes, tags, domains, people, concepts}`.
|
|
53
|
-
|
|
54
|
-
### Step 2: Find Intersection
|
|
55
|
-
|
|
56
|
-
Compare the two neighborhoods to find overlap:
|
|
57
|
-
|
|
58
|
-
**Shared notes**: Notes that mention both topics.
|
|
59
|
-
> "[[Meeting 2026-03-15]] discusses both 'rate limiting' and 'user onboarding'."
|
|
60
|
-
|
|
61
|
-
**Shared people**: People connected to both topics.
|
|
62
|
-
> "[[Alice]] appears in notes about both domains."
|
|
63
|
-
|
|
64
|
-
**Shared tags**: Tags that appear in both neighborhoods.
|
|
65
|
-
> "Both clusters use #scalability."
|
|
66
|
-
|
|
67
|
-
**Shared domains**: Notes from both topics that share a `domain` field value.
|
|
68
|
-
|
|
69
|
-
**Shared references**: Notes in one neighborhood that reference notes in the other.
|
|
70
|
-
|
|
71
|
-
### Step 3: Find Graph Paths
|
|
72
|
-
|
|
73
|
-
If direct overlap is sparse, look for indirect paths:
|
|
74
|
-
|
|
75
|
-
1. For each note in the `from` neighborhood, check its outgoing links
|
|
76
|
-
2. Do any of those linked notes appear in the `to` neighborhood?
|
|
77
|
-
3. If not, go one hop further — check the links of those linked notes
|
|
78
|
-
|
|
79
|
-
This finds paths like:
|
|
80
|
-
> `from` → [[Note A]] → [[Note B]] → `to`
|
|
81
|
-
|
|
82
|
-
Report the shortest path(s) found, up to 3 hops.
|
|
83
|
-
|
|
84
|
-
### Step 4: Analyze the Bridge
|
|
85
|
-
|
|
86
|
-
For each connection found (shared note, person, tag, or path):
|
|
87
|
-
|
|
88
|
-
1. **Read the bridging notes** to understand the context
|
|
89
|
-
2. **Explain why the connection matters** — what does the bridge reveal?
|
|
90
|
-
3. **Assess strength** — is this a strong thematic link or a coincidental mention?
|
|
91
|
-
|
|
92
|
-
Classify connections:
|
|
93
|
-
- **Strong**: Shared context, both topics discussed substantively in the same note
|
|
94
|
-
- **Moderate**: Shared person/tag, indirect but meaningful relationship
|
|
95
|
-
- **Weak**: Coincidental co-occurrence, shared only through generic tags
|
|
96
|
-
|
|
97
|
-
### Step 5: Synthesize
|
|
98
|
-
|
|
99
|
-
Build a narrative that explains how the two topics connect:
|
|
100
|
-
|
|
101
|
-
```markdown
|
|
102
|
-
# Connect: {From} ↔ {To}
|
|
103
|
-
|
|
104
|
-
## The Bridge
|
|
105
|
-
|
|
106
|
-
{1-2 paragraph narrative explaining the connection in plain language}
|
|
107
|
-
|
|
108
|
-
## Connection Map
|
|
109
|
-
|
|
110
|
-
### Direct Links ({N} found)
|
|
111
|
-
|
|
112
|
-
- **[[Shared Note]]** — {how it connects both topics}
|
|
113
|
-
> "{quote showing from-topic}" ... "{quote showing to-topic}"
|
|
114
|
-
|
|
115
|
-
### Through People
|
|
116
|
-
|
|
117
|
-
- **[[Person]]** — involved in both {from} and {to}
|
|
118
|
-
- {from} context: {brief description}
|
|
119
|
-
- {to} context: {brief description}
|
|
120
|
-
|
|
121
|
-
### Through Concepts
|
|
122
|
-
|
|
123
|
-
- **[[Concept]]** — shared foundation
|
|
124
|
-
- Links to {from} via: [[note1]], [[note2]]
|
|
125
|
-
- Links to {to} via: [[note3]], [[note4]]
|
|
126
|
-
|
|
127
|
-
### Graph Path
|
|
128
|
-
|
|
129
|
-
```
|
|
130
|
-
[[from-note]] → [[intermediate]] → [[to-note]]
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
{Explain what this path reveals}
|
|
134
|
-
|
|
135
|
-
## Strength Assessment
|
|
136
|
-
|
|
137
|
-
- **Overall**: {Strong / Moderate / Weak}
|
|
138
|
-
- **Evidence**: {N} shared notes, {N} shared people, {N} graph paths
|
|
139
|
-
- **Confidence**: {High — solid thematic overlap / Medium — circumstantial / Low — tenuous}
|
|
140
|
-
|
|
141
|
-
## Potential Insights
|
|
142
|
-
|
|
143
|
-
1. {What the user might learn from this connection}
|
|
144
|
-
2. {How this could inform decisions in either domain}
|
|
145
|
-
3. {A question this connection raises}
|
|
146
|
-
|
|
147
|
-
## Suggested Actions
|
|
148
|
-
|
|
149
|
-
- Link [[Note A]] to [[Note B]] — they discuss the same problem from different angles
|
|
150
|
-
- Add "{from}" as a reference in [[relevant to-note]]
|
|
151
|
-
- Consider creating a hub note for the bridging concept
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
### Step 6: Handle No Connection
|
|
155
|
-
|
|
156
|
-
If no meaningful connection is found after searching:
|
|
157
|
-
|
|
158
|
-
```markdown
|
|
159
|
-
# Connect: {From} ↔ {To}
|
|
160
|
-
|
|
161
|
-
No meaningful connection found in this vault.
|
|
162
|
-
|
|
163
|
-
## What I Checked
|
|
164
|
-
|
|
165
|
-
- Searched {N} notes in the {from} neighborhood
|
|
166
|
-
- Searched {N} notes in the {to} neighborhood
|
|
167
|
-
- Checked up to 3-hop graph paths
|
|
168
|
-
- Compared tags, domains, people, and references
|
|
169
|
-
|
|
170
|
-
## Possible Reasons
|
|
171
|
-
|
|
172
|
-
- These topics genuinely haven't intersected in your notes yet
|
|
173
|
-
- The connection might exist in knowledge you haven't written down
|
|
174
|
-
- Try narrowing the topics or running /emerge to find broader patterns
|
|
175
|
-
|
|
176
|
-
## Want to Create a Connection?
|
|
177
|
-
|
|
178
|
-
If you believe these topics are related, consider:
|
|
179
|
-
1. Writing a note that explicitly bridges them
|
|
180
|
-
2. Adding shared tags or domain fields
|
|
181
|
-
3. Running /weave after writing the bridge note
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
### Step 7: Save (Optional)
|
|
185
|
-
|
|
186
|
-
At the end of your analysis, ask:
|
|
187
|
-
|
|
188
|
-
> "Would you like me to save this as a note?"
|
|
189
|
-
|
|
190
|
-
If the user confirms, save with frontmatter:
|
|
191
|
-
|
|
192
|
-
```yaml
|
|
193
|
-
---
|
|
194
|
-
title: "Connect: {From} ↔ {To}"
|
|
195
|
-
note_type: literature
|
|
196
|
-
type: analysis
|
|
197
|
-
date: <today>
|
|
198
|
-
references:
|
|
199
|
-
- "[[from-anchor]]"
|
|
200
|
-
- "[[to-anchor]]"
|
|
201
|
-
tags: [connect, bridge]
|
|
202
|
-
---
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Use `obsidian create` to save. Ask the user where they'd like it saved.
|
|
206
|
-
|
|
207
|
-
## Key Principles
|
|
208
|
-
|
|
209
|
-
- **Evidence-based**: Every claimed connection must cite specific notes and quotes.
|
|
210
|
-
- **Honest about weakness**: If the connection is tenuous, say so. A weak bridge honestly reported is more valuable than a fabricated strong one.
|
|
211
|
-
- **User's vault only**: Don't bridge topics using your general knowledge. The connection must exist in the vault's own link graph and content.
|
|
212
|
-
- **Actionable**: Always suggest concrete next steps — notes to link, hub notes to create, follow-up traces to run.
|
|
213
|
-
- **Respect the "no connection" result**: Not finding a connection is a valid and useful outcome.
|
package/src/skills/diagnose.md
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
---
|
|
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.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /diagnose — Knowledge Graph Health Check
|
|
7
|
-
|
|
8
|
-
You are a vault health assistant. Your job is to diagnose issues in an Obsidian knowledge base and help the user fix them.
|
|
9
|
-
|
|
10
|
-
## Execution Flow
|
|
11
|
-
|
|
12
|
-
### Step 1: Locate Vault
|
|
13
|
-
|
|
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).
|
|
15
|
-
|
|
16
|
-
### Step 2: Run Diagnosis
|
|
17
|
-
|
|
18
|
-
Call `byoao_vault_doctor` with the vault path. This runs 5 checks:
|
|
19
|
-
|
|
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
|
|
25
|
-
|
|
26
|
-
Additionally, if `INDEX.base` exists:
|
|
27
|
-
6. **INDEX.base accuracy** — verify note counts match actual vault state
|
|
28
|
-
|
|
29
|
-
### Step 3: Present Results
|
|
30
|
-
|
|
31
|
-
Format the report by severity:
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
! 3 notes without frontmatter
|
|
35
|
-
- Inbox/quick-thought.md
|
|
36
|
-
- Projects/demo-notes.md
|
|
37
|
-
- Knowledge/api-overview.md
|
|
38
|
-
|
|
39
|
-
! AGENTS.md lists [[Kent]] but no People/Kent.md found
|
|
40
|
-
|
|
41
|
-
i 2 orphan notes (no incoming or outgoing wikilinks)
|
|
42
|
-
- Archive/old-draft.md
|
|
43
|
-
- Inbox/random.md
|
|
44
|
-
|
|
45
|
-
ok 0 broken wikilinks
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### Step 4: Suggest Fixes
|
|
49
|
-
|
|
50
|
-
For each issue category, suggest a concrete next action:
|
|
51
|
-
|
|
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" |
|
|
60
|
-
|
|
61
|
-
**Always ask for user confirmation before making changes.** Do not auto-fix.
|
|
62
|
-
|
|
63
|
-
### Step 5: Update INDEX.base Timestamp
|
|
64
|
-
|
|
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`.
|
|
66
|
-
|
|
67
|
-
## Key Principles
|
|
68
|
-
|
|
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
|
package/src/skills/drift.md
DELETED
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
---
|
|
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.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /drift — Detect Intention-Action Gaps
|
|
7
|
-
|
|
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.
|
|
9
|
-
|
|
10
|
-
## Prerequisites Check
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
obsidian --version
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
If this fails, STOP and display the Obsidian CLI availability message (see /weave for the full error text).
|
|
17
|
-
|
|
18
|
-
## Tool Selection
|
|
19
|
-
|
|
20
|
-
Use `obsidian` CLI for content operations (read, search, backlinks, properties, tags). Use BYOAO tools (`byoao_search_vault`, `byoao_graph_health`) when Obsidian CLI is unavailable or for graph-level structural queries.
|
|
21
|
-
|
|
22
|
-
## Parameters
|
|
23
|
-
|
|
24
|
-
- **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.
|
|
27
|
-
|
|
28
|
-
## Process
|
|
29
|
-
|
|
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`
|
|
36
|
-
|
|
37
|
-
### Step 1: Collect Intentions
|
|
38
|
-
|
|
39
|
-
Use a structured, layered approach to find stated intentions:
|
|
40
|
-
|
|
41
|
-
**Layer 1 — Structured notes (most reliable):**
|
|
42
|
-
```bash
|
|
43
|
-
obsidian search "type: decision"
|
|
44
|
-
obsidian search "type: plan"
|
|
45
|
-
```
|
|
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
|
-
|
|
64
|
-
Extract a list of **stated intentions** with dates:
|
|
65
|
-
- "{date}: Planned to {X}" (source: [[Note]])
|
|
66
|
-
|
|
67
|
-
### Step 2: Collect Actions
|
|
68
|
-
|
|
69
|
-
Read daily notes and updates across the period:
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
obsidian search "completed"
|
|
73
|
-
obsidian search "done"
|
|
74
|
-
obsidian search "shipped"
|
|
75
|
-
obsidian search "finished"
|
|
76
|
-
```
|
|
77
|
-
|
|
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?
|
|
82
|
-
|
|
83
|
-
Extract a list of **actual actions** with dates:
|
|
84
|
-
- "{date}: Did {Y}" (source: [[Daily Note]])
|
|
85
|
-
|
|
86
|
-
### Step 3: Alignment Analysis
|
|
87
|
-
|
|
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) |
|
|
97
|
-
|
|
98
|
-
### Step 4: Identify Drift Patterns
|
|
99
|
-
|
|
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."
|
|
114
|
-
|
|
115
|
-
**Emergent priorities** — Unplanned work that became dominant.
|
|
116
|
-
> "'Customer escalations' wasn't in any plan but appears in 60% of daily notes."
|
|
117
|
-
|
|
118
|
-
### Step 5: Present the Analysis
|
|
119
|
-
|
|
120
|
-
```markdown
|
|
121
|
-
# Drift Analysis: {period}
|
|
122
|
-
|
|
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}
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## Aligned (on track)
|
|
140
|
-
|
|
141
|
-
- **{Intention}** ({date})
|
|
142
|
-
Stated in: [[Plan Note]]
|
|
143
|
-
Evidence: [[Action Note 1]], [[Action Note 2]]
|
|
144
|
-
|
|
145
|
-
## Delayed
|
|
146
|
-
|
|
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}
|
|
151
|
-
|
|
152
|
-
## Drifted
|
|
153
|
-
|
|
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?
|
|
171
|
-
|
|
172
|
-
---
|
|
173
|
-
|
|
174
|
-
## Drift Patterns
|
|
175
|
-
|
|
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}
|
|
188
|
-
|
|
189
|
-
## Suggested Actions
|
|
190
|
-
|
|
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
|
|
195
|
-
```
|
|
196
|
-
|
|
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
|
-
## Key Principles
|
|
218
|
-
|
|
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.
|