@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.
- 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/dist/assets/skills/ask.md +28 -27
- package/dist/assets/skills/challenge.md +79 -121
- package/dist/assets/skills/connect.md +75 -163
- package/dist/assets/skills/cook.md +167 -0
- package/dist/assets/skills/diagnose.md +102 -43
- package/dist/assets/skills/drift.md +64 -165
- package/dist/assets/skills/health.md +63 -0
- package/dist/assets/skills/ideas.md +11 -10
- package/dist/assets/skills/organize.md +56 -155
- package/dist/assets/skills/prep.md +63 -0
- package/dist/assets/skills/trace.md +75 -90
- package/dist/assets/skills/wiki.md +77 -178
- package/dist/cli/cli-program.js +17 -14
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/installer.js +10 -4
- 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 +395 -623
- 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 +47 -115
- 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 +75 -188
- 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 +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 +120 -16
- 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.md +28 -27
- package/src/skills/challenge.md +79 -121
- package/src/skills/connect.md +75 -163
- package/src/skills/cook.md +167 -0
- package/src/skills/diagnose.md +102 -43
- package/src/skills/drift.md +64 -165
- package/src/skills/health.md +63 -0
- package/src/skills/ideas.md +11 -10
- package/src/skills/organize.md +56 -155
- package/src/skills/prep.md +63 -0
- package/src/skills/trace.md +75 -90
- package/src/skills/wiki.md +77 -178
- 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/emerge.md +0 -168
- package/src/skills/weave.md +0 -287
package/src/skills/wiki.md
CHANGED
|
@@ -1,227 +1,126 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wiki
|
|
3
|
-
description:
|
|
3
|
+
description: >
|
|
4
|
+
Generate and maintain INDEX.base — the dynamic knowledge map for v2 agent pages (`type`:
|
|
5
|
+
entity | concept | comparison | query). Uses Obsidian Base queries to list agent-maintained
|
|
6
|
+
pages; SCHEMA.md defines tag taxonomy. Use when the user runs /wiki or wants to see the current
|
|
7
|
+
state of the knowledge base.
|
|
4
8
|
---
|
|
5
9
|
|
|
6
|
-
# /wiki —
|
|
10
|
+
# /wiki — Knowledge Map
|
|
7
11
|
|
|
8
|
-
|
|
12
|
+
**Metaphor:** The menu board — shows what's been prepared and what's on offer.
|
|
9
13
|
|
|
10
|
-
##
|
|
14
|
+
## Purpose
|
|
11
15
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
obsidian --version
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
If this fails, STOP and display:
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
Obsidian CLI is not available. Please ensure:
|
|
22
|
-
1. Obsidian is running
|
|
23
|
-
2. This vault is open in Obsidian
|
|
24
|
-
3. CLI is enabled: Settings → General → Advanced → Command-line interface
|
|
25
|
-
```
|
|
16
|
+
Generate and maintain `INDEX.base`, the dynamic knowledge map that lists all agent-maintained pages grouped by v2 `type` (`entity`, `concept`, `comparison`, `query`). Unlike static index files, INDEX.base uses Obsidian Base queries to stay current automatically. Use `SCHEMA.md` for tag taxonomy when summarizing or grouping entries.
|
|
26
17
|
|
|
27
18
|
## Process
|
|
28
19
|
|
|
29
|
-
### Step 1:
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
obsidian list
|
|
33
|
-
```
|
|
20
|
+
### Step 1: Prerequisites Check
|
|
34
21
|
|
|
35
22
|
```bash
|
|
36
|
-
obsidian
|
|
23
|
+
obsidian --version
|
|
37
24
|
```
|
|
38
25
|
|
|
39
|
-
|
|
26
|
+
If this fails, STOP and display the Obsidian CLI availability message (see /prep).
|
|
40
27
|
|
|
41
|
-
### Step 2: Read
|
|
42
|
-
|
|
43
|
-
If `INDEX.base` already exists, read it to understand the current structure:
|
|
28
|
+
### Step 2: Read SCHEMA.md
|
|
44
29
|
|
|
45
30
|
```bash
|
|
46
|
-
obsidian read "
|
|
31
|
+
obsidian read file="SCHEMA.md"
|
|
47
32
|
```
|
|
48
33
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
Group notes by their `domain` frontmatter field. For notes without `domain`, infer it from content. Count:
|
|
52
|
-
- Total notes
|
|
53
|
-
- Notes by `domain` (topics)
|
|
54
|
-
- Notes by `note_type` (fleeting, literature, permanent)
|
|
55
|
-
- Most frequently referenced concepts
|
|
34
|
+
Understand the current tag taxonomy, domain definitions, and page conventions.
|
|
56
35
|
|
|
57
|
-
### Step
|
|
36
|
+
### Step 3: Generate INDEX.base Content
|
|
58
37
|
|
|
59
|
-
|
|
38
|
+
Query all agent-maintained pages by v2 frontmatter `type` (`entity`, `concept`, `comparison`, `query`) so each page is listed under the correct section:
|
|
60
39
|
|
|
61
40
|
```bash
|
|
62
|
-
obsidian
|
|
41
|
+
obsidian properties type=entity
|
|
42
|
+
obsidian properties type=concept
|
|
43
|
+
obsidian properties type=comparison
|
|
44
|
+
obsidian properties type=query
|
|
63
45
|
```
|
|
64
46
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
- 'note_type == ""'
|
|
71
|
-
formulas: {}
|
|
72
|
-
properties:
|
|
73
|
-
note_type:
|
|
74
|
-
displayName: Type
|
|
75
|
-
domain:
|
|
76
|
-
displayName: Domain
|
|
77
|
-
views:
|
|
78
|
-
- type: table
|
|
79
|
-
name: "All Notes"
|
|
80
|
-
groupBy:
|
|
81
|
-
property: domain
|
|
82
|
-
direction: ASC
|
|
83
|
-
order:
|
|
84
|
-
- file.name
|
|
85
|
-
- note_type
|
|
86
|
-
- domain
|
|
87
|
-
- tags
|
|
88
|
-
- date
|
|
89
|
-
- type: cards
|
|
90
|
-
name: "Gallery"
|
|
91
|
-
groupBy:
|
|
92
|
-
property: note_type
|
|
93
|
-
direction: ASC
|
|
94
|
-
order:
|
|
95
|
-
- file.name
|
|
96
|
-
- note_type
|
|
97
|
-
- domain
|
|
98
|
-
- date
|
|
99
|
-
```
|
|
47
|
+
For each type, compile entries with:
|
|
48
|
+
- Page name (as wikilink)
|
|
49
|
+
- Title from frontmatter
|
|
50
|
+
- Brief summary (from content's first paragraph or definition section)
|
|
51
|
+
- Tags and domain
|
|
100
52
|
|
|
101
|
-
|
|
53
|
+
Format by section:
|
|
102
54
|
|
|
103
|
-
|
|
55
|
+
```markdown
|
|
56
|
+
# Knowledge Index
|
|
104
57
|
|
|
105
|
-
|
|
58
|
+
## Entities
|
|
59
|
+
- [[feature-a]] — Response time monitoring feature (tags: monitoring, backend)
|
|
60
|
+
- [[zhang-san]] — Senior engineer on Feature A team (tags: team, engineering)
|
|
106
61
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
62
|
+
## Concepts
|
|
63
|
+
- [[response-time-metrics]] — Why median replaced avg for trigger calculation (tags: metrics, decisions)
|
|
64
|
+
- [[search-trigger-rules]] — Search trigger rule design principles (tags: search, configuration)
|
|
110
65
|
|
|
111
|
-
|
|
66
|
+
## Comparisons
|
|
67
|
+
- [[avg-vs-median-for-trigger]] — Side-by-side analysis of avg vs median as trigger metrics (tags: metrics, decisions)
|
|
112
68
|
|
|
113
|
-
|
|
114
|
-
|
|
69
|
+
## Queries
|
|
70
|
+
- [[why-did-we-choose-median]] — "Why did we choose median over avg?" — detailed answer (tags: metrics, history)
|
|
115
71
|
```
|
|
116
72
|
|
|
117
|
-
|
|
73
|
+
### Step 4: Check Obsidian Base Configuration
|
|
118
74
|
|
|
119
|
-
|
|
120
|
-
```markdown
|
|
121
|
-
# BYOAO — Build Your Own AI OS
|
|
75
|
+
INDEX.base relies on Obsidian Base (saved search) configuration. Verify:
|
|
122
76
|
|
|
123
|
-
|
|
124
|
-
|
|
77
|
+
1. The Base query covers all four agent directories
|
|
78
|
+
2. The query filters by `type` frontmatter field
|
|
79
|
+
3. Results are grouped by type
|
|
125
80
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
81
|
+
If the Base doesn't exist or is misconfigured, guide the user to set it up:
|
|
82
|
+
- Open Obsidian → Bases → Create new base
|
|
83
|
+
- Name it "Knowledge Index"
|
|
84
|
+
- Query: `path:entities/ OR path:concepts/ OR path:comparisons/ OR path:queries/`
|
|
85
|
+
- Group by: `type`
|
|
129
86
|
|
|
130
|
-
|
|
131
|
-
- `/wiki` — Regenerate the INDEX.base knowledge map
|
|
132
|
-
- `/organize` — Suggest a directory structure based on frontmatter metadata
|
|
133
|
-
```
|
|
87
|
+
### Step 5: Present the Index
|
|
134
88
|
|
|
135
|
-
|
|
136
|
-
```markdown
|
|
137
|
-
## Current Stats
|
|
138
|
-
|
|
139
|
-
- Total notes: {total}
|
|
140
|
-
- Indexed notes (have note_type): {indexed}
|
|
141
|
-
- Topics (domain): {domain1}, {domain2}, ...
|
|
142
|
-
- Pending notes (need weave): {pending}
|
|
143
|
-
```
|
|
89
|
+
Show the current INDEX.base content to the user:
|
|
144
90
|
|
|
145
|
-
**Interacting with the Vault** — This is critical. The agent must always prefer Obsidian CLI:
|
|
146
91
|
```markdown
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
When you need to interact with notes, always use Obsidian CLI first:
|
|
150
|
-
|
|
151
|
-
| Task | Command |
|
|
152
|
-
|------|---------|
|
|
153
|
-
| Search notes | `obsidian search query="keyword"` |
|
|
154
|
-
| Read a note | `obsidian read file="Note Name"` |
|
|
155
|
-
| Create a new note | `obsidian create name="Note Title" content="# Content"` |
|
|
156
|
-
| Create note in folder | `obsidian create path="Folder/Note.md" content="# Content"` |
|
|
157
|
-
| Append to a note | `obsidian append file="Note" content="New content"` |
|
|
158
|
-
| Add frontmatter | `obsidian prepend file="Note" content='---
|
|
159
|
-
title: "Title"
|
|
160
|
-
note_type: fleeting
|
|
161
|
-
domain: Topic
|
|
162
|
-
date: YYYY-MM-DD
|
|
163
|
-
tags: [tag1]
|
|
164
|
-
---
|
|
92
|
+
# Knowledge Index
|
|
165
93
|
|
|
166
|
-
|
|
167
|
-
| Rename/move a note | `obsidian move path="Old.md" to="NewFolder/New.md"` |
|
|
168
|
-
| List backlinks | `obsidian backlinks file="Note"` |
|
|
169
|
-
| Check links | `obsidian links file="Note"` |
|
|
170
|
-
| List all files | `obsidian files ext=md` |
|
|
171
|
-
| Check unresolved links | `obsidian unresolved total` |
|
|
172
|
-
| Open random note | `obsidian random` |
|
|
94
|
+
Generated on YYYY-MM-DD
|
|
173
95
|
|
|
174
|
-
|
|
175
|
-
```
|
|
96
|
+
Total pages: N (X entities, Y concepts, Z comparisons, W queries)
|
|
176
97
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
When asked to write, research, or document something:
|
|
182
|
-
|
|
183
|
-
1. **Search first** — `obsidian search query="topic"` to check if a relevant note already exists
|
|
184
|
-
2. **Read existing notes** — `obsidian read file="Note"` to understand what's already captured
|
|
185
|
-
3. **Create with frontmatter** — always include proper YAML frontmatter when creating:
|
|
186
|
-
```
|
|
187
|
-
obsidian create name="New Note" content='---
|
|
188
|
-
title: "New Note"
|
|
189
|
-
note_type: fleeting
|
|
190
|
-
domain: YourDomain
|
|
191
|
-
date: YYYY-MM-DD
|
|
192
|
-
tags: [relevant-tags]
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
# New Note
|
|
196
|
-
|
|
197
|
-
Content here...
|
|
198
|
-
'
|
|
199
|
-
```
|
|
200
|
-
4. **Link to existing notes** — use `[[wikilink]]` syntax to connect new notes to existing ones
|
|
201
|
-
5. **Use `/weave` after bulk creation** — to enrich and connect the new notes to the graph
|
|
202
|
-
```
|
|
98
|
+
## By Domain
|
|
99
|
+
- backend: N pages
|
|
100
|
+
- frontend: M pages
|
|
101
|
+
- infrastructure: K pages
|
|
203
102
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
*Generated by /wiki skill*
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### Step 6: Report
|
|
103
|
+
## Most Connected
|
|
104
|
+
- [[page-name]] — N inbound links
|
|
105
|
+
- [[page-name]] — M inbound links
|
|
211
106
|
|
|
107
|
+
## Recently Updated
|
|
108
|
+
- [[page-name]] — updated YYYY-MM-DD
|
|
109
|
+
- [[page-name]] — updated YYYY-MM-DD
|
|
212
110
|
```
|
|
213
|
-
Wiki index generated:
|
|
214
|
-
- INDEX.base: created/updated at vault root
|
|
215
|
-
- Notes indexed: N
|
|
216
|
-
- Topics: M (by domain)
|
|
217
|
-
- AGENTS.md: updated with new counts
|
|
218
|
-
```
|
|
219
111
|
|
|
220
|
-
|
|
112
|
+
### Step 6: Suggest Gaps
|
|
113
|
+
|
|
114
|
+
Based on the index, identify knowledge gaps:
|
|
115
|
+
- Entity mentioned in multiple concepts but no entity page exists
|
|
116
|
+
- Concept referenced in entity pages but no concept page exists
|
|
117
|
+
- Domains with very few pages (under-represented areas)
|
|
118
|
+
- Tags used frequently but no corresponding concept page
|
|
221
119
|
|
|
222
|
-
##
|
|
120
|
+
## Key Principles
|
|
223
121
|
|
|
224
|
-
- **INDEX.base is
|
|
225
|
-
- **
|
|
226
|
-
- **
|
|
227
|
-
- **
|
|
122
|
+
- **INDEX.base is dynamic.** The Obsidian Base query keeps it current — no manual regeneration needed on every cook cycle.
|
|
123
|
+
- **Summary quality.** Each entry's one-line summary should be genuinely informative, not just the page title repeated.
|
|
124
|
+
- **Navigation first.** INDEX.base exists to help humans find knowledge quickly. Structure it for scanning, not completeness.
|
|
125
|
+
- **Obsidian is first workbench.** All note operations go through Obsidian CLI.
|
|
126
|
+
- **Agent pages only.** INDEX.base covers only `entities/`, `concepts/`, `comparisons/`, `queries/` — not user notes.
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Glossary
|
|
3
|
-
type: reference
|
|
4
|
-
status: active
|
|
5
|
-
date: {{date}}
|
|
6
|
-
tags: [glossary, reference]
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Glossary
|
|
10
|
-
|
|
11
|
-
Domain terms and key concepts in this knowledge base.
|
|
12
|
-
Maintained by /weave — run it to discover and add new terms.
|
|
13
|
-
|
|
14
|
-
| Term | Definition | Domain |
|
|
15
|
-
|------|-----------|--------|
|
|
16
|
-
{{GLOSSARY_ENTRIES}}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: ""
|
|
3
|
-
type: decision
|
|
4
|
-
status: draft
|
|
5
|
-
date: {{date}}
|
|
6
|
-
decision: ""
|
|
7
|
-
decided-by: []
|
|
8
|
-
alternatives-considered: []
|
|
9
|
-
tags: [decision]
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Context
|
|
13
|
-
|
|
14
|
-
What is the situation that requires a decision?
|
|
15
|
-
|
|
16
|
-
## Decision
|
|
17
|
-
|
|
18
|
-
What was decided.
|
|
19
|
-
|
|
20
|
-
## Alternatives Considered
|
|
21
|
-
|
|
22
|
-
| Option | Pros | Cons |
|
|
23
|
-
|--------|------|------|
|
|
24
|
-
| | | |
|
|
25
|
-
|
|
26
|
-
## Rationale
|
|
27
|
-
|
|
28
|
-
Why this option was chosen over alternatives.
|
|
29
|
-
|
|
30
|
-
## Consequences
|
|
31
|
-
|
|
32
|
-
What changes as a result of this decision.
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: ""
|
|
3
|
-
type: investigation
|
|
4
|
-
status: draft
|
|
5
|
-
date: {{date}}
|
|
6
|
-
jira: ""
|
|
7
|
-
hypothesis: ""
|
|
8
|
-
conclusion: ""
|
|
9
|
-
tags: [investigation, spike]
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Question
|
|
13
|
-
|
|
14
|
-
What are we trying to find out?
|
|
15
|
-
|
|
16
|
-
## Hypothesis
|
|
17
|
-
|
|
18
|
-
What we expect to find and why.
|
|
19
|
-
|
|
20
|
-
## Method
|
|
21
|
-
|
|
22
|
-
How we investigated (queries, tools, data sources).
|
|
23
|
-
|
|
24
|
-
## Findings
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
## Conclusion
|
|
29
|
-
|
|
30
|
-
Summary of what we learned. Does it confirm or refute the hypothesis?
|
|
31
|
-
|
|
32
|
-
## Next Steps
|
|
33
|
-
|
|
34
|
-
-
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: ""
|
|
3
|
-
type: meeting
|
|
4
|
-
status: active
|
|
5
|
-
date: {{date}}
|
|
6
|
-
participants: []
|
|
7
|
-
meeting-type: ""
|
|
8
|
-
tags: [meeting]
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Agenda
|
|
12
|
-
|
|
13
|
-
1.
|
|
14
|
-
|
|
15
|
-
## Notes
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
## Decisions
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
## Action Items
|
|
24
|
-
|
|
25
|
-
- [ ] @person — task — due date
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: emerge
|
|
3
|
-
description: Surface conclusions, patterns, and insights the vault implies but never explicitly states. Analyzes clusters, orphans, and cross-domain connections. Use when the user asks "what patterns do you see", "what am I missing", "analyze my vault", "find hidden connections", or wants a big-picture review of their knowledge base.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /emerge — Surface Hidden Patterns
|
|
7
|
-
|
|
8
|
-
You are a pattern recognition analyst. Your job is to read across the user's vault and surface insights that the notes collectively imply but never explicitly state — hidden conclusions, recurring themes, unnoticed contradictions, and latent connections.
|
|
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
|
-
- **scope** (optional): Limit analysis to a folder, domain, or tag. Default: entire vault.
|
|
25
|
-
- **depth** (optional): "quick" (top-level scan) or "deep" (read every note in scope). Default: "quick".
|
|
26
|
-
- **output** (optional): If set, save findings as a note at this path.
|
|
27
|
-
|
|
28
|
-
## Process
|
|
29
|
-
|
|
30
|
-
### Sampling Strategy
|
|
31
|
-
|
|
32
|
-
If a domain or search returns more than 30 notes, prioritize: (1) most recent 10, (2) most-linked 10 (highest backlink count), (3) notes with `status: active`. Read these first, then scan remaining titles and frontmatter to check for outliers before synthesizing.
|
|
33
|
-
|
|
34
|
-
### Step 1: Map the Vault
|
|
35
|
-
|
|
36
|
-
Build a structural picture:
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
obsidian list
|
|
40
|
-
obsidian properties sort=count counts
|
|
41
|
-
obsidian tags
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Identify:
|
|
45
|
-
- Total notes and their distribution across folders/domains
|
|
46
|
-
- Most-used tags and properties
|
|
47
|
-
- Cluster density (which areas have many interconnected notes vs sparse ones)
|
|
48
|
-
|
|
49
|
-
### Step 2: Find Structural Signals
|
|
50
|
-
|
|
51
|
-
Use graph-level queries to identify interesting patterns:
|
|
52
|
-
|
|
53
|
-
**Orphan notes** — notes with no links in or out:
|
|
54
|
-
Use `byoao_graph_health` or scan notes checking for those with zero wikilinks (no `[[` in content) and zero backlinks.
|
|
55
|
-
Orphans may contain ideas the user hasn't connected yet.
|
|
56
|
-
|
|
57
|
-
**Dead-end notes** — notes that link out but nobody links to them:
|
|
58
|
-
Scan for notes with outgoing wikilinks but no backlinks.
|
|
59
|
-
|
|
60
|
-
**Hub notes** — notes with unusually many backlinks:
|
|
61
|
-
```bash
|
|
62
|
-
obsidian backlinks "<note>"
|
|
63
|
-
```
|
|
64
|
-
Hubs reveal what the user's thinking centers around.
|
|
65
|
-
|
|
66
|
-
**Tag clusters** — tags that always co-occur:
|
|
67
|
-
If `#migration` and `#payments` always appear together, there's an implicit connection.
|
|
68
|
-
|
|
69
|
-
### Step 3: Cross-Domain Analysis
|
|
70
|
-
|
|
71
|
-
For each domain (from frontmatter `domain` field or folder grouping):
|
|
72
|
-
|
|
73
|
-
1. **Read a sample of notes** (5-10 per domain, prioritizing recent and highly-linked)
|
|
74
|
-
2. **Extract key themes** — what topics recur within the domain?
|
|
75
|
-
3. **Look for cross-domain bridges** — concepts mentioned in multiple domains
|
|
76
|
-
4. **Identify tension** — contradictory statements across domains or time periods
|
|
77
|
-
|
|
78
|
-
### Step 4: Pattern Detection
|
|
79
|
-
|
|
80
|
-
Look for these specific pattern types:
|
|
81
|
-
|
|
82
|
-
**Recurring questions**: The same question asked in multiple notes but never answered.
|
|
83
|
-
> "You've asked 'what's our rollback strategy?' in 4 different meeting notes but no note contains an answer."
|
|
84
|
-
|
|
85
|
-
**Implicit decisions**: A direction was taken without a documented decision.
|
|
86
|
-
> "Notes shifted from Option A to Option B around April, but no decision record exists."
|
|
87
|
-
|
|
88
|
-
**Convergent threads**: Separate lines of thinking that are heading toward the same conclusion.
|
|
89
|
-
> "Your notes on 'API rate limiting' and 'user quotas' both point toward a tiered access model, but neither note references the other."
|
|
90
|
-
|
|
91
|
-
**Forgotten threads**: Topics that received attention then went silent.
|
|
92
|
-
> "'Data mesh' appears in 6 notes between Jan-Mar but hasn't been mentioned since."
|
|
93
|
-
|
|
94
|
-
**Expertise gaps**: The vault references a topic repeatedly but always superficially.
|
|
95
|
-
> "'Kubernetes networking' appears in 12 notes but always as a dependency, never deeply explored."
|
|
96
|
-
|
|
97
|
-
**Contradictions**: Conflicting statements across notes.
|
|
98
|
-
> "In [[Note A]] you wrote 'we should avoid microservices' but [[Note B]] proposes splitting the monolith."
|
|
99
|
-
|
|
100
|
-
### Step 5: Synthesize Insights
|
|
101
|
-
|
|
102
|
-
For each pattern found, formulate an insight:
|
|
103
|
-
|
|
104
|
-
```markdown
|
|
105
|
-
## Insight: {title}
|
|
106
|
-
|
|
107
|
-
**Pattern**: {what you observed}
|
|
108
|
-
**Evidence**: {list of notes with brief quotes}
|
|
109
|
-
**Implication**: {what this might mean — phrased as a question, not a conclusion}
|
|
110
|
-
**Suggested action**: {what the user could do — write a note, make a decision, connect notes}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### Step 6: Present Findings
|
|
114
|
-
|
|
115
|
-
```markdown
|
|
116
|
-
# Emerge: Vault Patterns
|
|
117
|
-
|
|
118
|
-
Analyzed {N} notes across {M} domains.
|
|
119
|
-
|
|
120
|
-
## Key Findings
|
|
121
|
-
|
|
122
|
-
### 1. {Insight title}
|
|
123
|
-
{Pattern, evidence, implication, action}
|
|
124
|
-
|
|
125
|
-
### 2. {Insight title}
|
|
126
|
-
...
|
|
127
|
-
|
|
128
|
-
## Structural Observations
|
|
129
|
-
|
|
130
|
-
- **Most connected**: [[Note]] ({N} backlinks) — your thinking hub
|
|
131
|
-
- **Most isolated**: {N} orphan notes that may contain undeveloped ideas
|
|
132
|
-
- **Busiest domain**: {domain} ({N} notes)
|
|
133
|
-
- **Thinnest domain**: {domain} ({N} notes) — possible blind spot
|
|
134
|
-
|
|
135
|
-
## Suggested Next Steps
|
|
136
|
-
|
|
137
|
-
1. {Actionable suggestion — e.g. "Connect [[A]] and [[B]] — they discuss the same problem"}
|
|
138
|
-
2. {Actionable suggestion — e.g. "Write a decision record for the implicit choice between X and Y"}
|
|
139
|
-
3. {Actionable suggestion — e.g. "Run /trace on 'data mesh' to understand why it was abandoned"}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
### Step 7: Save (Optional)
|
|
143
|
-
|
|
144
|
-
At the end of your findings, ask:
|
|
145
|
-
|
|
146
|
-
> "Would you like me to save this as a note?"
|
|
147
|
-
|
|
148
|
-
If the user confirms, save with frontmatter:
|
|
149
|
-
|
|
150
|
-
```yaml
|
|
151
|
-
---
|
|
152
|
-
title: "Emerge: Vault Patterns"
|
|
153
|
-
note_type: literature
|
|
154
|
-
type: analysis
|
|
155
|
-
date: <today>
|
|
156
|
-
tags: [emerge, patterns]
|
|
157
|
-
---
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
Use `obsidian create` to save. Ask the user where they'd like it saved.
|
|
161
|
-
|
|
162
|
-
## Key Principles
|
|
163
|
-
|
|
164
|
-
- **Show, don't tell**: Always cite specific notes and quotes. Never claim a pattern exists without evidence.
|
|
165
|
-
- **Questions over conclusions**: Frame implications as questions the user should consider, not answers you've decided.
|
|
166
|
-
- **Respect user judgment**: The user may be aware of patterns and have chosen not to act. Present findings neutrally.
|
|
167
|
-
- **Prioritize actionable insights**: "These two notes should link to each other" is more useful than "your vault has 12 orphans."
|
|
168
|
-
- **Deep mode means thorough**: In "deep" mode, read every note in scope. In "quick" mode, use structural signals and sampling.
|