@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
@@ -1,11 +1,14 @@
1
1
  ---
2
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.
3
+ description: >
4
+ Pressure-tests beliefs against vault evidence. Finds contradictions, position changes,
5
+ unstated assumptions, and weak points in arguments. Use when the user wants to question
6
+ a decision, test a hypothesis, or find flaws in their reasoning.
4
7
  ---
5
8
 
6
- # /challenge — Pressure-Test Your Thinking
9
+ # /challenge — Pressure Test
7
10
 
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.
11
+ You are a respectful adversary. Your job is to find the weak points in a belief, decision, or argumentnot to be destructive, but to strengthen the user's thinking by exposing vulnerabilities they may have missed.
9
12
 
10
13
  ## Prerequisites Check
11
14
 
@@ -13,162 +16,117 @@ You are a constructive critic. Your job is to take a belief, assumption, or deci
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
- - **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.
23
+ - **claim** (required): The belief, decision, or argument to challenge.
24
+ - **scope** (optional): `all` (full vault) or a specific directory/page. Default: `all`.
27
25
 
28
26
  ## Process
29
27
 
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}**"
28
+ ### Step 1: Understand the Claim
35
29
 
36
- If the belief references a note, read it and extract the core claim:
30
+ Clarify what exactly is being challenged:
31
+ - What is the core assertion?
32
+ - What assumptions does it rest on?
33
+ - What would falsify it?
37
34
 
38
- ```bash
39
- obsidian read "<note>"
40
- ```
35
+ If the claim is ambiguous, ask the user to clarify before proceeding.
41
36
 
42
37
  ### Step 2: Find Supporting Evidence
43
38
 
44
- First, be fair — find notes that support the belief:
45
-
46
39
  ```bash
47
- obsidian search "<key terms from belief>"
40
+ obsidian search "<key terms from claim>"
48
41
  ```
49
42
 
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
43
+ Read relevant notes and agent pages. Identify:
44
+ - Notes that explicitly support the claim
45
+ - Notes that provide indirect support (data, observations)
46
+ - The strength of each piece of evidence
79
47
 
80
- Based on the evidence gathered, rate the belief:
48
+ ### Step 3: Find Contradicting Evidence
81
49
 
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 |
50
+ This is the core of /challenge. Search for:
88
51
 
89
- ### Step 5: Present the Challenge
52
+ 1. **Direct contradictions** Notes that explicitly state the opposite
53
+ ```bash
54
+ obsidian search "not <term>" OR "instead of <term>" OR "changed from <term>"
55
+ ```
90
56
 
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}"
57
+ 2. **Implicit contradictions** — Notes that describe a situation incompatible with the claim
58
+ - Read pages with shared tags but different conclusions
59
+ - On related `entities/` and `concepts/` pages, check optional `contradictions` frontmatter (v2: YAML list of other agent page names documenting conflicting claims — see `/cook` Contradiction Handling)
106
60
 
107
- ## Counter-Evidence ({N} notes)
61
+ 3. **Position changes over time** — Notes that show the user changed their mind
62
+ ```bash
63
+ obsidian search "actually" OR "turns out" OR "reconsidered" OR "reversed"
64
+ ```
108
65
 
109
- ### Direct Contradictions
66
+ 4. **Weasel words** — Notes that express uncertainty about aspects the claim treats as certain
67
+ - "might", "probably", "not sure", "need to verify"
68
+ - These indicate the claim is stronger than the evidence supports
110
69
 
111
- - **[[Note]]** ({date}): "{quote that contradicts the belief}"
112
- **Why this matters**: {explanation}
70
+ ### Step 4: Identify Unstated Assumptions
113
71
 
114
- ### Position Changes Over Time
72
+ For the claim to be true, what else must be true?
115
73
 
116
- - {date range}: You held view X (evidence: [[notes]])
117
- - {date}: Something shifted (trigger: [[note]])
118
- - {date range}: You now hold view Y
74
+ - Technical assumptions (about systems, tools, constraints)
75
+ - People assumptions (about availability, skills, priorities)
76
+ - Temporal assumptions (about deadlines, sequencing, stability)
77
+ - External assumptions (about market, users, dependencies)
119
78
 
120
- ### Unstated Assumptions
79
+ Check if the vault evidence supports each assumption.
121
80
 
122
- 1. **{Assumption}**: {Why this might not hold}
123
- Evidence: {what the vault says or doesn't say}
81
+ ### Step 5: Assess Evidence Strength
124
82
 
125
- 2. **{Assumption}**: {Why this might not hold}
83
+ Rate the overall case:
126
84
 
127
- ### Missing Perspectives
85
+ | Strength | Meaning |
86
+ |----------|---------|
87
+ | Strong | Multiple independent sources agree, no contradictions |
88
+ | Moderate | Some support, minor gaps or contradictions |
89
+ | Weak | Limited evidence, significant contradictions or gaps |
90
+ | Unknown | Vault doesn't have enough information |
128
91
 
129
- - {Whose view is absent and why it matters}
92
+ ### Step 6: Present the Challenge
130
93
 
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
94
+ ```markdown
95
+ # Challenge: "{claim}"
136
96
 
137
- 1. {A question the user should consider — not rhetorical, genuinely open}
138
- 2. {Another question}
139
- 3. {Another question}
97
+ ## The Claim
98
+ {Restate the claim clearly}
140
99
 
141
- ## Suggested Actions
100
+ ## What Rests On This
101
+ {What assumptions does the claim depend on?}
102
+ - {Assumption 1} — {supported / unsupported / contradicted}
103
+ - {Assumption 2} — {supported / unsupported / contradicted}
142
104
 
143
- - {Concrete action if the belief needs revision}
144
- - {Action to gather missing evidence}
145
- - {Notes to re-read with fresh eyes}
146
- ```
105
+ ## Supporting Evidence
106
+ - [[Note A]]: "{quote}"
107
+ - [[Note B]]: "{quote}"
147
108
 
148
- ### Step 6: Save (Optional)
109
+ ## Challenging Evidence
110
+ - ⚠ [[Note C]]: "{quote that contradicts or weakens the claim}"
111
+ - ⚠ [[Note D]]: "{quote showing uncertainty or alternative view}"
149
112
 
150
- At the end of your challenge, ask:
113
+ ## Position Changes Over Time
114
+ - {date}: [[Note E]] said X
115
+ - {date}: [[Note F]] said Y (contradicts X)
151
116
 
152
- > "Would you like me to save this as a note?"
117
+ ## Weak Points
118
+ 1. **{Weak point}**: {why it's weak, which note shows it}
119
+ 2. **{Weak point}**: {why it's weak, which note shows it}
153
120
 
154
- If the user confirms, save with frontmatter:
121
+ ## Overall Assessment
122
+ **Evidence strength**: {Strong / Moderate / Weak / Unknown}
155
123
 
156
- ```yaml
157
- ---
158
- title: "Challenge: {Belief}"
159
- note_type: literature
160
- type: analysis
161
- date: <today>
162
- tags: [challenge, critical-thinking]
163
- ---
124
+ {2-3 sentence summary: what the vault evidence suggests about this claim, what's uncertain, and what would strengthen or weaken the case further}
164
125
  ```
165
126
 
166
- Use `obsidian create` to save. Ask the user where they'd like it saved.
167
-
168
127
  ## Key Principles
169
128
 
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.
129
+ - **Respectful opposition.** The goal is to strengthen thinking, not to tear it down. Frame challenges as "here's what to consider" not "you're wrong."
130
+ - **Evidence only.** Every challenge must cite specific vault notes. Don't invent external counterarguments.
131
+ - **Surface uncertainty.** If the vault shows doubt or hesitation about aspects the claim treats as certain, highlight this gap.
132
+ - **Obsidian is first workbench.** All note operations go through Obsidian CLI.
@@ -1,11 +1,14 @@
1
1
  ---
2
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.
3
+ description: >
4
+ Bridges two topics using the link graph, shared people, tags, domains, and conceptual
5
+ overlap. Use when the user asks "what's the relationship between X and Y", "connect A to B",
6
+ or wants to understand how two topics relate.
4
7
  ---
5
8
 
6
- # /connect — Bridge Two Domains
9
+ # /connect — Bridge Two Topics
7
10
 
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.
11
+ You are a connector. Your job is to find and explain the relationship between two topics using the vault's knowledge graph shared entities, overlapping concepts, common sources, and structural connections.
9
12
 
10
13
  ## Prerequisites Check
11
14
 
@@ -13,201 +16,110 @@ You are a knowledge connector. Your job is to find the hidden relationship betwe
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
- - **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.
23
+ - **from** (required): First topic or page name.
24
+ - **to** (required): Second topic or page name.
25
+ - **depth** (optional): `direct` (only direct connections) or `expanded` (include indirect paths via intermediate pages). Default: `expanded`.
27
26
 
28
27
  ## Process
29
28
 
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?
29
+ ### Step 1: Locate Both Topics
35
30
 
36
31
  ```bash
37
- obsidian search "<topic>"
32
+ obsidian search "<from>"
33
+ obsidian search "<to>"
38
34
  ```
39
35
 
40
- 2. **Gather the neighborhood** all notes that mention or link to this topic:
41
-
42
- ```bash
43
- obsidian backlinks "<topic>"
44
- ```
36
+ If `INDEX.base` exists, read it to spot compiled pages for either topic.
45
37
 
46
- 3. **Extract properties** what domains, tags, and references are associated?
38
+ Read any existing agent pages in `entities/`, `concepts/`, `comparisons/`, and `queries/`:
47
39
 
48
40
  ```bash
49
- obsidian read "<topic note>"
41
+ obsidian read file="entities/<from>.md" # if exists
42
+ obsidian read file="concepts/<from>.md" # if exists
43
+ obsidian read file="comparisons/<from>.md" # if exists
44
+ obsidian read file="queries/<from>.md" # if exists
45
+ obsidian read file="entities/<to>.md" # if exists
46
+ obsidian read file="concepts/<to>.md" # if exists
47
+ obsidian read file="comparisons/<to>.md" # if exists
48
+ obsidian read file="queries/<to>.md" # if exists
50
49
  ```
51
50
 
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:
51
+ ### Step 2: Map Each Topic's Connections
100
52
 
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
53
+ For each topic:
116
54
 
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]]
55
+ ```bash
56
+ obsidian backlinks "<from>"
57
+ obsidian backlinks "<to>"
131
58
  ```
132
59
 
133
- {Explain what this path reveals}
60
+ Read the pages that link to each topic. Build a connection map:
61
+ - Direct wikilinks (both topics link to the same page, or the same page links to both)
62
+ - Shared tags (use `SCHEMA.md` for taxonomy context when classifying)
63
+ - Shared domain
64
+ - Shared source notes (both topics were extracted from the same user note)
65
+ - Shared people/entities mentioned in both topics' pages
134
66
 
135
- ## Strength Assessment
67
+ ### Step 3: Find Direct Connections
136
68
 
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}
69
+ Check if there's already a direct relationship:
70
+ - Does the `from` page wikilink to `to` (or vice versa)?
71
+ - Is there a `comparisons/` page that covers both?
72
+ - Do they share a `sources` entry in frontmatter?
140
73
 
141
- ## Potential Insights
74
+ ### Step 4: Find Indirect Paths (Expanded Mode)
142
75
 
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}
76
+ If no direct connection exists, search for intermediate pages:
146
77
 
147
- ## Suggested Actions
78
+ 1. Find all pages that link to `from`
79
+ 2. For each of those, check if they link to `to`
80
+ 3. If yes: `from` → `intermediate` → `to` is a connection path
81
+ 4. Report the shortest path(s) and explain the relationship
148
82
 
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
83
+ Also check:
84
+ - Shared tag clusters (both topics use tags that co-occur frequently)
85
+ - Shared domain context (both are about the same domain but different aspects)
86
+ - Temporal overlap (both topics emerged around the same time)
155
87
 
156
- If no meaningful connection is found after searching:
88
+ ### Step 5: Present the Connection
157
89
 
158
90
  ```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
91
+ # Connection: [[{from}]][[{to}]]
171
92
 
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
93
+ ## Direct Relationship
94
+ {Yes/No} {explain the direct connection if it exists}
175
95
 
176
- ## Want to Create a Connection?
96
+ ## Connection Paths
97
+ {If indirect paths exist, show them:}
177
98
 
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:
99
+ 1. [[{from}]] [[{intermediate}]] [[{to}]]
100
+ - Path explanation: {how they connect through this intermediate}
187
101
 
188
- > "Would you like me to save this as a note?"
102
+ ## Shared Context
103
+ - **Shared tags**: {tag1}, {tag2}
104
+ - **Shared domain**: {domain}
105
+ - **Shared sources**: [[source-note-1]], [[source-note-2]]
106
+ - **Shared entities**: [[entity-1]], [[entity-2]]
189
107
 
190
- If the user confirms, save with frontmatter:
108
+ ## Relationship Type
109
+ {Classify the relationship:}
110
+ - **Dependency**: {from} depends on {to} (or vice versa)
111
+ - **Sibling**: Both are aspects of a larger concept
112
+ - **Contrast**: They represent opposing approaches
113
+ - **Evolution**: {to} evolved from {from} over time
114
+ - **Parallel**: Independent topics that happen to share context
191
115
 
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
- ---
116
+ ## Why This Connection Matters
117
+ {2-3 sentences on what this relationship reveals and why it's worth knowing}
203
118
  ```
204
119
 
205
- Use `obsidian create` to save. Ask the user where they'd like it saved.
206
-
207
120
  ## Key Principles
208
121
 
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.
122
+ - **Graph over guesswork.** Base connections on actual wikilinks, shared tags, and shared sources — not inferred relationships.
123
+ - **Multiple paths.** There may be several ways two topics connect show the most meaningful ones, not just the shortest.
124
+ - **Explain, don't just list.** The value is in the *explanation* of why the connection matters, not just the path itself.
125
+ - **Obsidian is first workbench.** All note operations go through Obsidian CLI.