@jayjiang/byoao 2.0.0 → 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.
Files changed (39) hide show
  1. package/{src/skills/ask.md → dist/assets/skills/ask/SKILL.md} +6 -4
  2. package/{src/skills/challenge.md → dist/assets/skills/challenge/SKILL.md} +3 -1
  3. package/{src/skills/connect.md → dist/assets/skills/connect/SKILL.md} +3 -2
  4. package/{src/skills/cook.md → dist/assets/skills/cook/SKILL.md} +7 -4
  5. package/{src/skills/diagnose.md → dist/assets/skills/diagnose/SKILL.md} +5 -2
  6. package/{src/skills/drift.md → dist/assets/skills/drift/SKILL.md} +4 -3
  7. package/{src/skills/health.md → dist/assets/skills/health/SKILL.md} +4 -2
  8. package/{src/skills/organize.md → dist/assets/skills/organize/SKILL.md} +5 -3
  9. package/{src/skills/prep.md → dist/assets/skills/prep/SKILL.md} +4 -2
  10. package/{src/skills/trace.md → dist/assets/skills/trace/SKILL.md} +3 -1
  11. package/{src/skills/wiki.md → dist/assets/skills/wiki/SKILL.md} +5 -4
  12. package/dist/cli/cli-program.js +1 -1
  13. package/dist/cli/cli-program.js.map +1 -1
  14. package/dist/cli/installer.js +44 -25
  15. package/dist/cli/installer.js.map +1 -1
  16. package/dist/index.js +62 -15
  17. package/dist/vault/__tests__/create.test.js +1 -1
  18. package/dist/vault/__tests__/create.test.js.map +1 -1
  19. package/dist/vault/create.js +11 -8
  20. package/dist/vault/create.js.map +1 -1
  21. package/dist/vault/manifest.js +2 -2
  22. package/dist/vault/manifest.js.map +1 -1
  23. package/dist/vault/self-update.js +1 -1
  24. package/dist/vault/upgrade.js +45 -7
  25. package/dist/vault/upgrade.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/skills/ask/SKILL.md +135 -0
  28. package/src/skills/challenge/SKILL.md +134 -0
  29. package/src/skills/connect/SKILL.md +126 -0
  30. package/src/skills/cook/SKILL.md +170 -0
  31. package/src/skills/diagnose/SKILL.md +134 -0
  32. package/src/skills/drift/SKILL.md +123 -0
  33. package/src/skills/health/SKILL.md +65 -0
  34. package/src/skills/ideas/SKILL.md +173 -0
  35. package/src/skills/organize/SKILL.md +109 -0
  36. package/src/skills/prep/SKILL.md +65 -0
  37. package/src/skills/trace/SKILL.md +143 -0
  38. package/src/skills/wiki/SKILL.md +127 -0
  39. /package/{src/skills/ideas.md → dist/assets/skills/ideas/SKILL.md} +0 -0
@@ -0,0 +1,173 @@
1
+ ---
2
+ name: ideas
3
+ description: >
4
+ Deep vault scan to generate actionable ideas by combining insights across domains, finding gaps,
5
+ and proposing concrete next steps. Uses INDEX.base and agent directories (`entities/`, `concepts/`,
6
+ `comparisons/`, `queries/`) for compiled knowledge. Use when the user asks "give me ideas", "what should I work
7
+ on", "what opportunities do you see", "brainstorm from my notes", or wants creative suggestions
8
+ grounded in their vault content.
9
+ ---
10
+
11
+ # /ideas — Generate Actionable Ideas
12
+
13
+ You are a strategic thinking partner. Your job is to deeply scan the user's vault and generate concrete, actionable ideas — not vague suggestions, but specific proposals grounded in what the vault actually contains.
14
+
15
+ ## Prerequisites Check
16
+
17
+ ```bash
18
+ obsidian --version
19
+ ```
20
+
21
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
22
+
23
+ ## Parameters
24
+
25
+ - **focus** (optional): Narrow ideas to a specific domain, project, or theme. Default: scan all domains.
26
+ - **count** (optional): Number of ideas to generate. Default: 5.
27
+ - **output** (optional): Save ideas as a note at this path.
28
+
29
+ ## Process
30
+
31
+ ### Sampling Strategy
32
+
33
+ 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.
34
+
35
+ ### Step 1: Map the Vault
36
+
37
+ ```bash
38
+ obsidian list
39
+ obsidian properties sort=count counts
40
+ obsidian tags
41
+ ```
42
+
43
+ Build a picture of: domains, note distribution, most active areas, tag clusters.
44
+
45
+ ### Step 2: Deep Read
46
+
47
+ Read notes across domains, prioritizing:
48
+ - Recent notes (last 30 days) — what the user is actively thinking about
49
+ - Highly connected notes (many backlinks) — central concepts
50
+ - Notes with `status: active` — current work
51
+ - `INDEX.base` if it exists — for knowledge structure overview
52
+ - Agent pages in `entities/`, `concepts/`, `comparisons/`, `queries/` — for compiled knowledge
53
+
54
+ For each domain, read 5-10 representative notes to understand the landscape.
55
+
56
+ ### Step 3: Cross-Pollinate
57
+
58
+ The best ideas come from combining insights across domains. For each pair of active domains:
59
+
60
+ 1. Identify shared concepts, people, or challenges
61
+ 2. Look for solutions in one domain that could apply to another
62
+ 3. Find gaps: "Domain A discusses X extensively but never mentions Y, which Domain B treats as critical"
63
+
64
+ ### Step 4: Identify Idea Types
65
+
66
+ Generate ideas across these categories:
67
+
68
+ **Synthesis ideas** — Combine two existing threads into something new.
69
+ > "Your notes on 'event sourcing' and 'audit compliance' both need immutable logs. A unified audit-event architecture could serve both."
70
+
71
+ **Gap ideas** — Something the vault implies is needed but doesn't exist.
72
+ > "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."
73
+
74
+ **Connection ideas** — Two people/projects should be talking to each other.
75
+ > "[[Alice]] is working on rate limiting and [[Bob]] on API gateway redesign. Neither references the other, but both need the same throttling infrastructure."
76
+
77
+ **Amplification ideas** — Take something small and scale it.
78
+ > "Your daily note from March 15 mentions 'what if we exposed the internal API to partners?' — 4 other notes contain evidence this could work."
79
+
80
+ **Challenge ideas** — Question an assumption the vault takes for granted.
81
+ > "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?"
82
+
83
+ **People ideas** — People the user should meet, reconnect with, or introduce to each other.
84
+ > "[[Alice]] keeps coming up in your infrastructure notes but you haven't had a 1:1 since February. Worth reconnecting."
85
+
86
+ **Content ideas** — Things worth writing or publishing, based on depth of vault coverage.
87
+ > "You have 8 notes about 'event-driven architecture' spanning 4 months — enough material for an article or internal tech talk."
88
+
89
+ ### Step 5: Validate Each Idea
90
+
91
+ For each idea, verify:
92
+ - Is the evidence actually in the vault? (cite specific notes with quotes)
93
+ - Is this actionable? (what concrete step would the user take?)
94
+ - Is this non-obvious? (would the user have thought of this on their own?)
95
+
96
+ Discard ideas that fail any of these checks.
97
+
98
+ ### Step 6: Present Ideas
99
+
100
+ ```markdown
101
+ # Ideas: {focus or "Across All Domains"}
102
+
103
+ Generated from {N} notes across {M} domains.
104
+
105
+ ---
106
+
107
+ ### Idea 1: {Title}
108
+
109
+ **Type**: {synthesis / gap / connection / amplification / challenge}
110
+
111
+ **The insight**: {2-3 sentences explaining the idea}
112
+
113
+ **Evidence**:
114
+ - [[Note A]]: "{relevant quote}"
115
+ - [[Note B]]: "{relevant quote}"
116
+ - [[Note C]]: "{relevant quote}"
117
+
118
+ **Concrete next step**: {exactly what to do — write a note, schedule a meeting, create a project, run /trace on a topic}
119
+
120
+ **Impact**: {why this matters — what it could unlock or prevent}
121
+
122
+ ---
123
+
124
+ ### Idea 2: {Title}
125
+ ...
126
+
127
+ ---
128
+
129
+ ## How These Ideas Connect
130
+
131
+ {Brief paragraph on themes across the ideas — are they pointing in the same direction?}
132
+
133
+ ## Top 3 Do Now
134
+
135
+ Rank the three highest-impact, most immediately actionable ideas:
136
+
137
+ 1. **{Idea title}** — {one-sentence reason this is high-priority}
138
+ 2. **{Idea title}** — {reason}
139
+ 3. **{Idea title}** — {reason}
140
+
141
+ ## Suggested Follow-ups
142
+
143
+ - Run `/trace topic="X"` to explore Idea 1 further
144
+ - Run `/connect from="A" to="B"` to validate Idea 3
145
+ - Run `/cook` to compile or refresh `entities/`, `concepts/`, `comparisons/`, or `queries/` pages when an idea exposes a knowledge gap
146
+ - Add or extend a page under `queries/` for Idea 5 if it is question-shaped knowledge worth keeping
147
+ ```
148
+
149
+ ### Step 7: Save (Optional)
150
+
151
+ At the end of your ideas, ask:
152
+
153
+ > "Would you like me to save this as a note?"
154
+
155
+ If the user confirms, save with frontmatter:
156
+
157
+ ```yaml
158
+ ---
159
+ title: "Ideas: {focus}"
160
+ date: <today>
161
+ tags: [ideas, proactive]
162
+ ---
163
+ ```
164
+
165
+ Use `obsidian create` to save. Ask the user where they'd like it saved.
166
+
167
+ ## Key Principles
168
+
169
+ - **Actionable over interesting**: Every idea must have a concrete next step. "Interesting observation" is not an idea.
170
+ - **Evidence-based**: Every idea must cite 2+ vault notes. No general knowledge ideas.
171
+ - **Non-obvious**: If the user would have thought of it without AI, it's not worth presenting.
172
+ - **Respect priorities**: Don't suggest ideas that contradict the user's stated direction unless explicitly framed as a challenge.
173
+ - **Quality over quantity**: 3 strong ideas beat 10 weak ones. Filter aggressively.
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: organize
3
+ description: >
4
+ Directory organization based on frontmatter metadata. Suggests and applies file moves
5
+ to keep the vault structured. Use when the user wants to reorganize notes, fix directory
6
+ placement, clean up the vault structure, or says anything like "organize my notes",
7
+ "clean up the vault", "move files to the right folders", "tidy up", or "restructure
8
+ my notes".
9
+ ---
10
+
11
+ # /organize — Directory Organization
12
+
13
+ You are a librarian. Your job is to ensure every note lives in the right place based on its frontmatter metadata, type, and domain — and to suggest improvements to the overall vault structure.
14
+
15
+ ## Prerequisites Check
16
+
17
+ ```bash
18
+ obsidian --version
19
+ ```
20
+
21
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
22
+
23
+ ## Parameters
24
+
25
+ - **scope** (optional): `all` (full vault), `agents` (agent pages only), `sources` (user notes), or a specific directory. Default: `all`.
26
+ - **dry_run** (optional): `true` to only suggest, `false` to apply changes. Default: `true`.
27
+
28
+ ## Process
29
+
30
+ ### Step 1: Scan Current Structure
31
+
32
+ ```bash
33
+ obsidian list
34
+ ```
35
+
36
+ Build a picture of:
37
+ - Current directory structure
38
+ - Notes in each directory
39
+ - Notes that seem misplaced based on their frontmatter
40
+
41
+ ### Step 2: Check Agent Pages
42
+
43
+ Agent pages should live in their designated directories:
44
+
45
+ | `type` frontmatter | Expected directory |
46
+ |-------------------|-------------------|
47
+ | `entity` | `entities/` |
48
+ | `concept` | `concepts/` |
49
+ | `comparison` | `comparisons/` |
50
+ | `query` | `queries/` |
51
+
52
+ For each agent page, check:
53
+ - Does its current directory match its `type`?
54
+ - If not, suggest a move
55
+
56
+ ### Step 3: Check User Notes
57
+
58
+ User notes should **remain** in their existing directories (`Projects/`, `Daily/`, personal folders, etc.). Do not suggest moving them into agent directories. Suggest organization only if:
59
+
60
+ - A user note has been placed in an agent directory (`entities/`, `concepts/`, `comparisons/`, `queries/`) — this is likely a mistake; propose moving it back to an appropriate user area
61
+ - Multiple user notes about the same topic are scattered across **user** directories when they could be grouped there (never into agent dirs unless they are true agent pages with correct `type` frontmatter)
62
+
63
+ ### Step 4: Check Naming Conventions
64
+
65
+ Per SCHEMA.md conventions:
66
+ - File names should be lowercase with hyphens, no spaces
67
+ - Names should match the page title (abbreviated, hyphenated)
68
+ - No duplicate names with different suffixes (e.g., `feature-a.md` and `feature-a-1.md`)
69
+
70
+ Flag any naming violations.
71
+
72
+ ### Step 5: Suggest Moves
73
+
74
+ For each misplaced file:
75
+
76
+ ```
77
+ Move: entities/wrong-place.md → concepts/wrong-place.md
78
+ Reason: type=concept but currently in entities/
79
+
80
+ Move: Projects/random-notes.md → Projects/feature-a/
81
+ Reason: Content is about Feature A, should be grouped with other Feature A notes
82
+ ```
83
+
84
+ ### Step 6: Apply Moves (If Confirmed)
85
+
86
+ Use Obsidian CLI to rename/move files:
87
+
88
+ ```bash
89
+ obsidian rename file="old-path.md" new_name="new-path.md"
90
+ ```
91
+
92
+ Always show the full plan before applying. Never move files silently.
93
+
94
+ ### Step 7: Update Wikilinks
95
+
96
+ After moving files, check that all wikilinks to the moved files are still valid:
97
+
98
+ ```bash
99
+ obsidian backlinks "moved-file"
100
+ ```
101
+
102
+ Obsidian typically handles wikilink updates on rename automatically, but verify for safety.
103
+
104
+ ## Key Principles
105
+
106
+ - **Suggest first, act second.** Default to dry_run mode. Show the full plan before making any changes.
107
+ - **Agent directories are sacred.** Only agent pages should live in `entities/`, `concepts/`, `comparisons/`, `queries/`.
108
+ - **User notes are user territory.** Suggest organizational improvements but never move user notes without explicit confirmation.
109
+ - **Obsidian is first workbench.** All note operations go through Obsidian CLI.
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: prep
3
+ description: >
4
+ Shared prerequisites check and graph enrichment. Verifies Obsidian CLI is available and
5
+ scans frontmatter for cross-reference suggestions. Referenced by all skills via "(see /prep)".
6
+ Use when the user says "check prerequisites", "prep my vault", "enrich the graph", or
7
+ before running other skills that depend on Obsidian CLI.
8
+ ---
9
+
10
+ # /prep — Prerequisites Check
11
+
12
+ ## Obsidian CLI Availability
13
+
14
+ Before using any BYOAO skill, verify the Obsidian CLI is available:
15
+
16
+ ```bash
17
+ obsidian --version
18
+ ```
19
+
20
+ If this fails, STOP and display:
21
+
22
+ ```
23
+ Obsidian CLI is not available. The Obsidian CLI is bundled with the Obsidian
24
+ app (v1.12+) and cannot be installed separately.
25
+
26
+ 1. Install or update Obsidian from: https://obsidian.md/download
27
+ 2. Open Obsidian and enable the CLI:
28
+ Settings → General → Advanced → Command-line interface
29
+ 3. Make sure Obsidian is running, then try again.
30
+ ```
31
+
32
+ ## Graph Enrichment
33
+
34
+ Scan all user notes and enrich frontmatter, suggest cross-references.
35
+
36
+ ### Step 1: Scan Notes
37
+ - Read all `.md` files outside agent directories
38
+ - Extract entities, key terms, and potential wikilink targets
39
+
40
+ ### Step 2: Enrich Frontmatter
41
+ For each note missing frontmatter:
42
+ - Add `title` (from filename or first heading)
43
+ - Add `date` (from file creation time or content)
44
+ - Suggest `tags` based on content
45
+
46
+ For notes with partial frontmatter:
47
+ - Fill in missing required fields
48
+ - Never overwrite existing values
49
+
50
+ ### Step 3: Suggest Cross-References
51
+ - Identify recurring terms mentioned across notes
52
+ - Suggest converting mentions to `[[wikilinks]]`
53
+ - Propose new entries for `SCHEMA.md` tag taxonomy
54
+
55
+ ### Step 4: Report
56
+ Present a summary:
57
+ - Notes enriched: X
58
+ - Wikilinks suggested: Y
59
+ - New schema terms proposed: Z
60
+ Ask for approval before applying any changes.
61
+
62
+ ### Key Behaviors
63
+ - Idempotent — running twice won't duplicate changes
64
+ - Never overwrites existing frontmatter values
65
+ - Asks before applying wikilink suggestions
@@ -0,0 +1,143 @@
1
+ ---
2
+ name: trace
3
+ description: >
4
+ Chronological timeline of an idea across notes. Detects phases, turning points, and
5
+ contradictions in how a topic evolved. Use when the user asks "how did X evolve",
6
+ "trace the history of Y", "timeline of Z", "when did we start thinking about",
7
+ "show how this idea changed", or wants to understand the chronological evolution of
8
+ any topic, decision, or concept in their notes.
9
+ ---
10
+
11
+ # /trace — Chronological Timeline
12
+
13
+ You are a historical detective. Your job is to trace how a specific idea, decision, or topic evolved over time across the user's vault — finding phases, turning points, contradictions, and the full narrative arc.
14
+
15
+ ## Prerequisites Check
16
+
17
+ ```bash
18
+ obsidian --version
19
+ ```
20
+
21
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
22
+
23
+ ## Parameters
24
+
25
+ - **topic** (required): The idea, decision, or concept to trace.
26
+ - **depth** (optional): `summary` (key milestones only) or `detailed` (all mentions with context). Default: `summary`.
27
+
28
+ ## Process
29
+
30
+ ### Step 1: Locate All Mentions
31
+
32
+ Search for the topic across all notes:
33
+
34
+ ```bash
35
+ obsidian search "<topic>"
36
+ obsidian tags "<topic>"
37
+ ```
38
+
39
+ Also search agent-maintained pages under `entities/`, `concepts/`, `comparisons/`, and `queries/`:
40
+
41
+ ```bash
42
+ obsidian read file="entities/<topic>.md"
43
+ obsidian read file="concepts/<topic>.md"
44
+ obsidian read file="comparisons/<topic>.md"
45
+ obsidian read file="queries/<topic>.md"
46
+ ```
47
+
48
+ Read `INDEX.base` to check if there's already a compiled page for this topic.
49
+
50
+ ### Step 2: Build Timeline
51
+
52
+ For each note that mentions the topic:
53
+
54
+ 1. Read the full content using `obsidian read`
55
+ 2. Extract the date (from frontmatter or filename for daily notes)
56
+ 3. Identify what the note says about the topic:
57
+ - **New idea proposed** — first mention of the concept
58
+ - **Decision made** — commitment to a specific approach
59
+ - **Change/evolution** — modification of previous understanding
60
+ - **Contradiction** — statement that conflicts with an earlier note
61
+ - **Confirmation** — validation of a previous position
62
+ - **Abandoned** — idea dropped or superseded
63
+
64
+ ### Step 3: Detect Phases
65
+
66
+ Group the timeline into phases:
67
+
68
+ - **Inception** — topic first appears, initial framing
69
+ - **Exploration** — multiple approaches considered, debate
70
+ - **Decision** — specific approach chosen
71
+ - **Implementation** — execution details, adjustments
72
+ - **Resolution** — outcome, lessons learned (or abandonment)
73
+
74
+ A topic may skip phases, cycle back, or have multiple parallel tracks.
75
+
76
+ ### Step 4: Identify Turning Points
77
+
78
+ Highlight moments where the trajectory changed:
79
+
80
+ - "We switched from X to Y" — explicit change
81
+ - Data or evidence that contradicted previous assumptions
82
+ - New stakeholder or constraint that shifted direction
83
+ - External event (tech release, policy change) that affected the topic
84
+
85
+ ### Step 5: Find Contradictions
86
+
87
+ Compare statements across time:
88
+
89
+ - "In Note A (March 1): we decided X"
90
+ - "In Note B (April 15): actually Y is better because..."
91
+ - Is this a genuine contradiction, an evolution of thinking, or a context-dependent difference?
92
+
93
+ Flag genuine contradictions. Note the dates, sources, and nature of the conflict.
94
+
95
+ ### Step 6: Present Timeline
96
+
97
+ ```markdown
98
+ # Timeline: {topic}
99
+
100
+ Traced across {N} notes spanning {start date} to {end date}.
101
+
102
+ ---
103
+
104
+ ## Phase 1: {Phase Name} ({date range})
105
+
106
+ **What was happening**: {brief context}
107
+
108
+ - **{date}** — [[Note A]]: {what happened / what was decided}
109
+ - **{date}** — [[Note B]]: {what changed / what was added}
110
+
111
+ **Key insight**: {what this phase reveals}
112
+
113
+ ---
114
+
115
+ ## Phase 2: {Phase Name} ({date range})
116
+ ...
117
+
118
+ ---
119
+
120
+ ## Turning Points
121
+
122
+ 1. **{date}**: {what changed and why it mattered} — [[source note]]
123
+
124
+ ## Contradictions Found
125
+
126
+ - ⚠ [[Note A]] says X, but [[Note B]] says Y — {resolution if known}
127
+
128
+ ## Current State
129
+
130
+ {Where things stand now — the most recent position on this topic}
131
+
132
+ ## Unanswered Questions
133
+
134
+ {What the vault doesn't tell us about this topic's evolution}
135
+ ```
136
+
137
+ ## Key Principles
138
+
139
+ - **Chronology is authority.** The timeline must follow actual note dates, not inferred order.
140
+ - **Evidence-based.** Every claim in the timeline must cite a specific note.
141
+ - **Show the messiness.** Ideas rarely evolve linearly. Show the false starts, reversals, and parallel tracks.
142
+ - **Flag contradictions.** Don't resolve them — present both sides and let the user decide.
143
+ - **Obsidian is first workbench.** All note operations go through Obsidian CLI.
@@ -0,0 +1,127 @@
1
+ ---
2
+ name: wiki
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 says "update the index",
7
+ "refresh the knowledge map", "show me the wiki", "what's in the knowledge base",
8
+ "rebuild INDEX.base", or wants to see the current state of compiled knowledge.
9
+ ---
10
+
11
+ # /wiki — Knowledge Map
12
+
13
+ **Metaphor:** The menu board — shows what's been prepared and what's on offer.
14
+
15
+ ## Purpose
16
+
17
+ 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.
18
+
19
+ ## Process
20
+
21
+ ### Step 1: Prerequisites Check
22
+
23
+ ```bash
24
+ obsidian --version
25
+ ```
26
+
27
+ If this fails, STOP and display the Obsidian CLI availability message (see /prep).
28
+
29
+ ### Step 2: Read SCHEMA.md
30
+
31
+ ```bash
32
+ obsidian read file="SCHEMA.md"
33
+ ```
34
+
35
+ Understand the current tag taxonomy, domain definitions, and page conventions.
36
+
37
+ ### Step 3: Generate INDEX.base Content
38
+
39
+ Query all agent-maintained pages by v2 frontmatter `type` (`entity`, `concept`, `comparison`, `query`) so each page is listed under the correct section:
40
+
41
+ ```bash
42
+ obsidian properties type=entity
43
+ obsidian properties type=concept
44
+ obsidian properties type=comparison
45
+ obsidian properties type=query
46
+ ```
47
+
48
+ For each type, compile entries with:
49
+ - Page name (as wikilink)
50
+ - Title from frontmatter
51
+ - Brief summary (from content's first paragraph or definition section)
52
+ - Tags and domain
53
+
54
+ Format by section:
55
+
56
+ ```markdown
57
+ # Knowledge Index
58
+
59
+ ## Entities
60
+ - [[feature-a]] — Response time monitoring feature (tags: monitoring, backend)
61
+ - [[zhang-san]] — Senior engineer on Feature A team (tags: team, engineering)
62
+
63
+ ## Concepts
64
+ - [[response-time-metrics]] — Why median replaced avg for trigger calculation (tags: metrics, decisions)
65
+ - [[search-trigger-rules]] — Search trigger rule design principles (tags: search, configuration)
66
+
67
+ ## Comparisons
68
+ - [[avg-vs-median-for-trigger]] — Side-by-side analysis of avg vs median as trigger metrics (tags: metrics, decisions)
69
+
70
+ ## Queries
71
+ - [[why-did-we-choose-median]] — "Why did we choose median over avg?" — detailed answer (tags: metrics, history)
72
+ ```
73
+
74
+ ### Step 4: Check Obsidian Base Configuration
75
+
76
+ INDEX.base relies on Obsidian Base (saved search) configuration. Verify:
77
+
78
+ 1. The Base query covers all four agent directories
79
+ 2. The query filters by `type` frontmatter field
80
+ 3. Results are grouped by type
81
+
82
+ If the Base doesn't exist or is misconfigured, guide the user to set it up:
83
+ - Open Obsidian → Bases → Create new base
84
+ - Name it "Knowledge Index"
85
+ - Query: `path:entities/ OR path:concepts/ OR path:comparisons/ OR path:queries/`
86
+ - Group by: `type`
87
+
88
+ ### Step 5: Present the Index
89
+
90
+ Show the current INDEX.base content to the user:
91
+
92
+ ```markdown
93
+ # Knowledge Index
94
+
95
+ Generated on YYYY-MM-DD
96
+
97
+ Total pages: N (X entities, Y concepts, Z comparisons, W queries)
98
+
99
+ ## By Domain
100
+ - backend: N pages
101
+ - frontend: M pages
102
+ - infrastructure: K pages
103
+
104
+ ## Most Connected
105
+ - [[page-name]] — N inbound links
106
+ - [[page-name]] — M inbound links
107
+
108
+ ## Recently Updated
109
+ - [[page-name]] — updated YYYY-MM-DD
110
+ - [[page-name]] — updated YYYY-MM-DD
111
+ ```
112
+
113
+ ### Step 6: Suggest Gaps
114
+
115
+ Based on the index, identify knowledge gaps:
116
+ - Entity mentioned in multiple concepts but no entity page exists
117
+ - Concept referenced in entity pages but no concept page exists
118
+ - Domains with very few pages (under-represented areas)
119
+ - Tags used frequently but no corresponding concept page
120
+
121
+ ## Key Principles
122
+
123
+ - **INDEX.base is dynamic.** The Obsidian Base query keeps it current — no manual regeneration needed on every cook cycle.
124
+ - **Summary quality.** Each entry's one-line summary should be genuinely informative, not just the page title repeated.
125
+ - **Navigation first.** INDEX.base exists to help humans find knowledge quickly. Structure it for scanning, not completeness.
126
+ - **Obsidian is first workbench.** All note operations go through Obsidian CLI.
127
+ - **Agent pages only.** INDEX.base covers only `entities/`, `concepts/`, `comparisons/`, `queries/` — not user notes.