@jayjiang/byoao 0.7.1 → 0.8.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.
@@ -4,12 +4,15 @@
4
4
  */
5
5
  export function getIdleSuggestion() {
6
6
  const suggestions = [
7
- "Tip: run /diagnose to check knowledge graph health",
8
7
  "Tip: run /weave to connect your notes with frontmatter and wikilinks",
9
- "Tip: run /explain to document a codebase system in your vault",
10
8
  "Tip: run /trace to see how an idea evolved over time",
11
9
  "Tip: run /emerge to discover patterns across your notes",
12
10
  "Tip: run /connect to bridge two topics using your vault's link graph",
11
+ "Tip: run /ideas to generate actionable insights from your vault",
12
+ "Tip: run /challenge to pressure-test a belief against your own notes",
13
+ "Tip: run /drift to compare intentions vs actions over the past month",
14
+ "Tip: run /diagnose to check knowledge graph health",
15
+ "Tip: run /explain to document a codebase system in your vault",
13
16
  ];
14
17
  const idx = new Date().getMinutes() % suggestions.length;
15
18
  return suggestions[idx];
@@ -1 +1 @@
1
- {"version":3,"file":"idle-suggestions.js","sourceRoot":"","sources":["../../src/hooks/idle-suggestions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG;QAClB,oDAAoD;QACpD,sEAAsE;QACtE,+DAA+D;QAC/D,sDAAsD;QACtD,yDAAyD;QACzD,sEAAsE;KACvE,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,UAAU,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;IACzD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"idle-suggestions.js","sourceRoot":"","sources":["../../src/hooks/idle-suggestions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG;QAClB,sEAAsE;QACtE,sDAAsD;QACtD,yDAAyD;QACzD,sEAAsE;QACtE,iEAAiE;QACjE,sEAAsE;QACtE,sEAAsE;QACtE,oDAAoD;QACpD,+DAA+D;KAChE,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,UAAU,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;IACzD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jayjiang/byoao",
3
- "version": "0.7.1",
3
+ "version": "0.8.0",
4
4
  "description": "Build Your Own AI OS — Obsidian + AI Agent",
5
5
  "type": "module",
6
6
  "engines": {
@@ -58,6 +58,9 @@ that /weave discovered.
58
58
  | `/trace` | Track how an idea evolved over time |
59
59
  | `/emerge` | Discover patterns you haven't noticed |
60
60
  | `/connect` | Bridge two seemingly unrelated topics |
61
+ | `/ideas` | Generate actionable ideas from your vault |
62
+ | `/challenge` | Pressure-test a belief against your own notes |
63
+ | `/drift` | Compare intentions vs actions over time |
61
64
  | `/diagnose` | Check knowledge graph health |
62
65
 
63
66
  ---
@@ -0,0 +1,164 @@
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.
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
+ ## Parameters
19
+
20
+ - **belief** (required): The belief, assumption, or decision to challenge. Can be a direct statement or a reference to a note.
21
+ - **strength** (optional): "gentle" (look for nuances), "rigorous" (find every counter-argument). Default: "rigorous".
22
+ - **output** (optional): Save the challenge analysis as a note.
23
+
24
+ ## Process
25
+
26
+ ### Step 1: Articulate the Belief
27
+
28
+ Parse the user's input and restate the belief clearly:
29
+
30
+ > "The belief being tested: **{clear statement}**"
31
+
32
+ If the belief references a note, read it and extract the core claim:
33
+
34
+ ```bash
35
+ obsidian read "<note>"
36
+ ```
37
+
38
+ ### Step 2: Find Supporting Evidence
39
+
40
+ First, be fair — find notes that support the belief:
41
+
42
+ ```bash
43
+ obsidian search "<key terms from belief>"
44
+ ```
45
+
46
+ Read notes that discuss this topic. Document what supports the belief:
47
+ - Which notes align with it?
48
+ - What evidence was the belief originally based on?
49
+ - How confident does the user seem in their notes?
50
+
51
+ ### Step 3: Find Counter-Evidence
52
+
53
+ Now actively look for contradictions:
54
+
55
+ **Direct contradictions** — Notes that explicitly state the opposite.
56
+
57
+ **Changed positions** — Run a temporal analysis (like /trace):
58
+ - Did the user ever hold a different view?
59
+ - When did it change? What triggered it?
60
+ - Was the change based on new evidence or assumption?
61
+
62
+ **Unstated assumptions** — What does the belief take for granted?
63
+ - "This assumes that {X} will remain true"
64
+ - "This assumes that {person/team} agrees"
65
+ - "This assumes the current constraints won't change"
66
+
67
+ **Missing perspectives** — Whose viewpoint is absent?
68
+ - "No notes consider the user/customer perspective"
69
+ - "The cost analysis only covers engineering, not operations"
70
+
71
+ **Survivorship bias** — Is the vault only tracking successes?
72
+ - "Three similar initiatives are documented, all framed positively. Are there failed attempts that weren't documented?"
73
+
74
+ ### Step 4: Assess Confidence Level
75
+
76
+ Based on the evidence gathered, rate the belief:
77
+
78
+ | Level | Description |
79
+ |-------|-------------|
80
+ | **Strong** | Consistent support across notes, no meaningful counter-evidence, assumptions are reasonable |
81
+ | **Moderate** | Good support but some counter-evidence exists, or key assumptions are untested |
82
+ | **Weak** | Significant counter-evidence, contradictions over time, or critical unstated assumptions |
83
+ | **Contradicted** | The vault's own history provides stronger evidence against the belief |
84
+
85
+ ### Step 5: Present the Challenge
86
+
87
+ ```markdown
88
+ # Challenge: {Belief Statement}
89
+
90
+ **Confidence level**: {Strong / Moderate / Weak / Contradicted}
91
+
92
+ ---
93
+
94
+ ## The Belief
95
+
96
+ {Restated belief in the user's own words, citing the source note if applicable}
97
+
98
+ ## Supporting Evidence ({N} notes)
99
+
100
+ - **[[Note]]**: "{quote supporting the belief}"
101
+ - **[[Note]]**: "{quote}"
102
+
103
+ ## Counter-Evidence ({N} notes)
104
+
105
+ ### Direct Contradictions
106
+
107
+ - **[[Note]]** ({date}): "{quote that contradicts the belief}"
108
+ **Why this matters**: {explanation}
109
+
110
+ ### Position Changes Over Time
111
+
112
+ - {date range}: You held view X (evidence: [[notes]])
113
+ - {date}: Something shifted (trigger: [[note]])
114
+ - {date range}: You now hold view Y
115
+
116
+ ### Unstated Assumptions
117
+
118
+ 1. **{Assumption}**: {Why this might not hold}
119
+ Evidence: {what the vault says or doesn't say}
120
+
121
+ 2. **{Assumption}**: {Why this might not hold}
122
+
123
+ ### Missing Perspectives
124
+
125
+ - {Whose view is absent and why it matters}
126
+
127
+ ## Verdict
128
+
129
+ {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.}
130
+
131
+ ## Questions to Sit With
132
+
133
+ 1. {A question the user should consider — not rhetorical, genuinely open}
134
+ 2. {Another question}
135
+ 3. {Another question}
136
+
137
+ ## Suggested Actions
138
+
139
+ - {Concrete action if the belief needs revision}
140
+ - {Action to gather missing evidence}
141
+ - {Notes to re-read with fresh eyes}
142
+ ```
143
+
144
+ ### Step 6: Save (Optional)
145
+
146
+ If the user requested output, save with frontmatter:
147
+
148
+ ```yaml
149
+ ---
150
+ title: "Challenge: {Belief}"
151
+ type: analysis
152
+ date: <today>
153
+ tags: [challenge, critical-thinking]
154
+ status: active
155
+ ---
156
+ ```
157
+
158
+ ## Key Principles
159
+
160
+ - **Fair, not adversarial**: Always present supporting evidence first. The goal is clear thinking, not winning an argument.
161
+ - **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.
162
+ - **Name assumptions explicitly**: The most valuable output is often the unstated assumptions, not the direct contradictions.
163
+ - **Questions over conclusions**: End with questions, not verdicts. The user decides what to do with the analysis.
164
+ - **Respect the "strong" result**: If a belief holds up well, say so clearly. Not every challenge needs to find problems.
@@ -0,0 +1,197 @@
1
+ ---
2
+ name: drift
3
+ description: Compare stated intentions vs actual behavior over 30-60 days using daily notes and project documents. Reveals where actions diverge from plans.
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
+ ## Parameters
19
+
20
+ - **period** (optional): Time window to analyze. Default: "30d" (last 30 days). Accepts: "7d", "30d", "60d", "90d".
21
+ - **focus** (optional): Limit to a project, domain, or goal. Default: all.
22
+ - **output** (optional): Save the drift analysis as a note.
23
+
24
+ ## Process
25
+
26
+ ### Step 1: Collect Intentions
27
+
28
+ Search for stated intentions, goals, and plans:
29
+
30
+ ```bash
31
+ obsidian search "goal"
32
+ obsidian search "plan"
33
+ obsidian search "will do"
34
+ obsidian search "next steps"
35
+ obsidian search "TODO"
36
+ obsidian search "priority"
37
+ ```
38
+
39
+ Also read:
40
+ - Decision records — what was decided
41
+ - Sprint/project plans — what was committed
42
+ - Daily notes from the start of the period — stated priorities
43
+ - Meeting notes — action items assigned
44
+
45
+ Extract a list of **stated intentions** with dates:
46
+ - "{date}: Planned to {X}" (source: [[Note]])
47
+
48
+ ### Step 2: Collect Actions
49
+
50
+ Read daily notes and updates across the period:
51
+
52
+ ```bash
53
+ obsidian search "completed"
54
+ obsidian search "done"
55
+ obsidian search "shipped"
56
+ obsidian search "finished"
57
+ ```
58
+
59
+ Read daily notes chronologically to track what actually happened:
60
+ - What did the user write about doing?
61
+ - What meetings happened?
62
+ - What topics consumed attention?
63
+
64
+ Extract a list of **actual actions** with dates:
65
+ - "{date}: Did {Y}" (source: [[Daily Note]])
66
+
67
+ ### Step 3: Alignment Analysis
68
+
69
+ For each stated intention, check:
70
+
71
+ | Status | Meaning |
72
+ |--------|---------|
73
+ | **Aligned** | Intention was followed through with documented evidence |
74
+ | **Delayed** | Work started but timeline slipped |
75
+ | **Drifted** | Work went in a different direction than planned |
76
+ | **Abandoned** | Intention was stated but never acted on |
77
+ | **Emergent** | Action happened that was never planned (reactive work) |
78
+
79
+ ### Step 4: Identify Drift Patterns
80
+
81
+ Look for systemic patterns, not just individual misses:
82
+
83
+ **Priority displacement** — Planned work was consistently displaced by reactive work.
84
+ > "In 4 of 5 weeks, the Friday daily note mentions not getting to the planned work because of urgent requests."
85
+
86
+ **Scope creep** — The scope of a project expanded without acknowledgment.
87
+ > "The original plan in [[Project Plan]] had 5 deliverables. Current notes reference 9, but no re-planning happened."
88
+
89
+ **Energy leaks** — Time going to undocumented work.
90
+ > "Daily notes from weeks 3-5 rarely mention the stated priority. The gap suggests time is going somewhere not reflected in the vault."
91
+
92
+ **Goal abandonment** — Goals that silently disappeared.
93
+ > "The Q1 goal of 'improve test coverage' was mentioned 3 times in January and never again."
94
+
95
+ **Emergent priorities** — Unplanned work that became dominant.
96
+ > "'Customer escalations' wasn't in any plan but appears in 60% of daily notes."
97
+
98
+ ### Step 5: Present the Analysis
99
+
100
+ ```markdown
101
+ # Drift Analysis: {period}
102
+
103
+ Comparing intentions vs actions over {period}, focused on {focus or "all areas"}.
104
+
105
+ ## Summary
106
+
107
+ | Category | Count |
108
+ |----------|-------|
109
+ | Aligned | {N} intentions followed through |
110
+ | Delayed | {N} intentions behind schedule |
111
+ | Drifted | {N} intentions changed direction |
112
+ | Abandoned | {N} intentions never acted on |
113
+ | Emergent | {N} unplanned actions taken |
114
+
115
+ **Overall drift score**: {Low / Moderate / High}
116
+
117
+ ---
118
+
119
+ ## Aligned (on track)
120
+
121
+ - **{Intention}** ({date})
122
+ Stated in: [[Plan Note]]
123
+ Evidence: [[Action Note 1]], [[Action Note 2]]
124
+
125
+ ## Delayed
126
+
127
+ - **{Intention}** ({original date} → still in progress)
128
+ Stated in: [[Plan Note]]
129
+ Last mention: [[Recent Note]] ({date})
130
+ **Likely cause**: {what the notes suggest}
131
+
132
+ ## Drifted
133
+
134
+ - **{Intention}** → became **{what it turned into}**
135
+ Original: [[Plan Note]] — "{original plan}"
136
+ Current: [[Recent Note]] — "{what's actually happening}"
137
+ **The shift**: {when and why direction changed}
138
+
139
+ ## Abandoned
140
+
141
+ - **{Intention}** ({date stated}, last mentioned {date})
142
+ Stated in: [[Note]]
143
+ **No evidence of**: follow-up, cancellation decision, or handoff
144
+ **Question**: Was this a conscious decision or did it just fade?
145
+
146
+ ## Emergent (unplanned)
147
+
148
+ - **{Action pattern}** — appeared in {N} daily notes, not in any plan
149
+ **Impact**: {how much time/attention this consumed}
150
+ **Question**: Should this be formally planned/resourced?
151
+
152
+ ---
153
+
154
+ ## Drift Patterns
155
+
156
+ ### {Pattern name}
157
+ {Description with evidence from notes}
158
+
159
+ ---
160
+
161
+ ## Reflections
162
+
163
+ These questions are for your consideration — not judgments:
164
+
165
+ 1. {Question about the most significant drift}
166
+ 2. {Question about whether emergent work should be planned}
167
+ 3. {Question about abandoned intentions}
168
+
169
+ ## Suggested Actions
170
+
171
+ - Write a decision record for {abandoned intention} — cancel formally or recommit
172
+ - Add {emergent pattern} to the next planning cycle
173
+ - Run `/trace topic="{drifted topic}"` to understand the shift
174
+ - Re-read [[original plan]] with fresh eyes
175
+ ```
176
+
177
+ ### Step 6: Save (Optional)
178
+
179
+ If the user requested output, save with frontmatter:
180
+
181
+ ```yaml
182
+ ---
183
+ title: "Drift Analysis: {period}"
184
+ type: analysis
185
+ date: <today>
186
+ tags: [drift, reflection]
187
+ status: active
188
+ ---
189
+ ```
190
+
191
+ ## Key Principles
192
+
193
+ - **Descriptive, not judgmental**: "You said X and did Y" is fine. "You failed to do X" is not. Drift is information, not failure.
194
+ - **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.
195
+ - **Surface patterns, not incidents**: One missed item is noise. Three missed items in the same category is a pattern worth examining.
196
+ - **Respect the user's agency**: Drift may be intentional adaptation, not failure. Present findings neutrally and let the user interpret.
197
+ - **Emergent work is valid**: Unplanned work that was important should be recognized, not treated as distraction.
@@ -0,0 +1,144 @@
1
+ ---
2
+ name: ideas
3
+ description: Deep vault scan to generate actionable ideas by combining insights across domains, finding gaps, and proposing concrete next steps.
4
+ ---
5
+
6
+ # /ideas — Generate Actionable Ideas
7
+
8
+ You are a strategic thinking partner. Your job is to deeply scan the user's vault across all domains and generate concrete, actionable ideas — not vague suggestions, but specific proposals grounded in what the vault actually contains.
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
+ ## Parameters
19
+
20
+ - **focus** (optional): Narrow ideas to a specific domain, project, or theme. Default: scan all domains.
21
+ - **count** (optional): Number of ideas to generate. Default: 5.
22
+ - **output** (optional): Save ideas as a note at this path.
23
+
24
+ ## Process
25
+
26
+ ### Step 1: Map the Vault
27
+
28
+ ```bash
29
+ obsidian list
30
+ obsidian properties sort=count counts
31
+ obsidian tags
32
+ ```
33
+
34
+ Build a picture of: domains, note distribution, most active areas, tag clusters.
35
+
36
+ ### Step 2: Deep Read
37
+
38
+ Read notes across domains, prioritizing:
39
+ - Recent notes (last 30 days) — what the user is actively thinking about
40
+ - Highly connected notes (many backlinks) — central concepts
41
+ - Notes with `status: active` — current work
42
+ - Glossary — the user's core vocabulary
43
+
44
+ For each domain, read 5-10 representative notes to understand the landscape.
45
+
46
+ ### Step 3: Cross-Pollinate
47
+
48
+ The best ideas come from combining insights across domains. For each pair of active domains:
49
+
50
+ 1. Identify shared concepts, people, or challenges
51
+ 2. Look for solutions in one domain that could apply to another
52
+ 3. Find gaps: "Domain A discusses X extensively but never mentions Y, which Domain B treats as critical"
53
+
54
+ ### Step 4: Identify Idea Types
55
+
56
+ Generate ideas across these categories:
57
+
58
+ **Synthesis ideas** — Combine two existing threads into something new.
59
+ > "Your notes on 'event sourcing' and 'audit compliance' both need immutable logs. A unified audit-event architecture could serve both."
60
+
61
+ **Gap ideas** — Something the vault implies is needed but doesn't exist.
62
+ > "You have 15 notes about 'payment migration' but no rollback strategy document. Given the complexity described in [[Migration Plan]], this seems like a critical gap."
63
+
64
+ **Connection ideas** — Two people/projects should be talking to each other.
65
+ > "[[Alice]] is working on rate limiting and [[Bob]] on API gateway redesign. Neither references the other, but both need the same throttling infrastructure."
66
+
67
+ **Amplification ideas** — Take something small and scale it.
68
+ > "Your daily note from March 15 mentions 'what if we exposed the internal API to partners?' — 4 other notes contain evidence this could work."
69
+
70
+ **Challenge ideas** — Question an assumption the vault takes for granted.
71
+ > "Every note about the data pipeline assumes batch processing, but your meeting notes from February suggest the team wants real-time. Is batch still the right choice?"
72
+
73
+ ### Step 5: Validate Each Idea
74
+
75
+ For each idea, verify:
76
+ - Is the evidence actually in the vault? (cite specific notes with quotes)
77
+ - Is this actionable? (what concrete step would the user take?)
78
+ - Is this non-obvious? (would the user have thought of this on their own?)
79
+
80
+ Discard ideas that fail any of these checks.
81
+
82
+ ### Step 6: Present Ideas
83
+
84
+ ```markdown
85
+ # Ideas: {focus or "Across All Domains"}
86
+
87
+ Generated from {N} notes across {M} domains.
88
+
89
+ ---
90
+
91
+ ### Idea 1: {Title}
92
+
93
+ **Type**: {synthesis / gap / connection / amplification / challenge}
94
+
95
+ **The insight**: {2-3 sentences explaining the idea}
96
+
97
+ **Evidence**:
98
+ - [[Note A]]: "{relevant quote}"
99
+ - [[Note B]]: "{relevant quote}"
100
+ - [[Note C]]: "{relevant quote}"
101
+
102
+ **Concrete next step**: {exactly what to do — write a note, schedule a meeting, create a project, run /trace on a topic}
103
+
104
+ **Impact**: {why this matters — what it could unlock or prevent}
105
+
106
+ ---
107
+
108
+ ### Idea 2: {Title}
109
+ ...
110
+
111
+ ---
112
+
113
+ ## How These Ideas Connect
114
+
115
+ {Brief paragraph on themes across the ideas — are they pointing in the same direction?}
116
+
117
+ ## Suggested Follow-ups
118
+
119
+ - Run `/trace topic="X"` to explore Idea 1 further
120
+ - Run `/connect from="A" to="B"` to validate Idea 3
121
+ - Create a decision record for Idea 5
122
+ ```
123
+
124
+ ### Step 7: Save (Optional)
125
+
126
+ If the user requested output, save with frontmatter:
127
+
128
+ ```yaml
129
+ ---
130
+ title: "Ideas: {focus}"
131
+ type: analysis
132
+ date: <today>
133
+ tags: [ideas, proactive]
134
+ status: active
135
+ ---
136
+ ```
137
+
138
+ ## Key Principles
139
+
140
+ - **Actionable over interesting**: Every idea must have a concrete next step. "Interesting observation" is not an idea.
141
+ - **Evidence-based**: Every idea must cite 2+ vault notes. No general knowledge ideas.
142
+ - **Non-obvious**: If the user would have thought of it without AI, it's not worth presenting.
143
+ - **Respect priorities**: Don't suggest ideas that contradict the user's stated direction unless explicitly framed as a challenge.
144
+ - **Quality over quantity**: 3 strong ideas beat 10 weak ones. Filter aggressively.