@jayjiang/byoao 1.1.2 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/plugin-config.test.js +7 -10
- package/dist/__tests__/plugin-config.test.js.map +1 -1
- package/dist/assets/obsidian-skills/byoao-conventions.md +30 -54
- package/dist/assets/obsidian-skills/vault-thinking.md +6 -5
- package/dist/assets/presets/common/AGENTS.md.hbs +29 -46
- package/dist/assets/presets/common/SCHEMA.md.hbs +57 -0
- package/dist/assets/presets/common/Start Here.md.hbs +29 -40
- package/dist/assets/presets/minimal/preset.json +3 -3
- package/dist/assets/presets/pm-tpm/preset.json +2 -2
- package/{src/skills/ask.md → dist/assets/skills/ask/SKILL.md} +30 -27
- package/dist/assets/skills/ask.md +28 -27
- package/dist/assets/skills/challenge/SKILL.md +134 -0
- package/dist/assets/skills/challenge.md +79 -121
- package/dist/assets/skills/connect/SKILL.md +126 -0
- package/dist/assets/skills/connect.md +75 -163
- package/dist/assets/skills/cook/SKILL.md +170 -0
- package/dist/assets/skills/cook.md +167 -0
- package/dist/assets/skills/diagnose/SKILL.md +134 -0
- package/dist/assets/skills/diagnose.md +102 -43
- package/dist/assets/skills/drift/SKILL.md +123 -0
- package/dist/assets/skills/drift.md +64 -165
- package/dist/assets/skills/health/SKILL.md +65 -0
- package/dist/assets/skills/health.md +63 -0
- package/{src/skills/ideas.md → dist/assets/skills/ideas/SKILL.md} +11 -10
- package/dist/assets/skills/ideas.md +11 -10
- package/dist/assets/skills/organize/SKILL.md +109 -0
- package/dist/assets/skills/organize.md +56 -155
- package/dist/assets/skills/prep/SKILL.md +65 -0
- package/dist/assets/skills/prep.md +63 -0
- package/dist/assets/skills/trace/SKILL.md +143 -0
- package/dist/assets/skills/trace.md +75 -90
- package/dist/assets/skills/wiki/SKILL.md +127 -0
- package/dist/assets/skills/wiki.md +77 -178
- package/dist/cli/cli-program.js +18 -15
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/installer.js +54 -29
- package/dist/cli/installer.js.map +1 -1
- package/dist/hooks/idle-suggestions.js +4 -4
- package/dist/hooks/idle-suggestions.js.map +1 -1
- package/dist/hooks/system-transform.js +35 -1
- package/dist/hooks/system-transform.js.map +1 -1
- package/dist/index.js +455 -636
- package/dist/index.js.map +1 -1
- package/dist/plugin-config.js +6 -32
- package/dist/plugin-config.js.map +1 -1
- package/dist/tools/init-vault.js +8 -38
- package/dist/tools/init-vault.js.map +1 -1
- package/dist/tools/vault-doctor.js +1 -1
- package/dist/tools/vault-doctor.js.map +1 -1
- package/dist/tools/vault-status.js +1 -1
- package/dist/tools/vault-status.js.map +1 -1
- package/dist/vault/__tests__/create.test.js +48 -116
- package/dist/vault/__tests__/create.test.js.map +1 -1
- package/dist/vault/__tests__/doctor.test.js +14 -2
- package/dist/vault/__tests__/doctor.test.js.map +1 -1
- package/dist/vault/__tests__/manifest.test.js +2 -2
- package/dist/vault/__tests__/manifest.test.js.map +1 -1
- package/dist/vault/__tests__/status.test.js +12 -0
- package/dist/vault/__tests__/status.test.js.map +1 -1
- package/dist/vault/__tests__/upgrade.test.js +3 -3
- package/dist/vault/__tests__/upgrade.test.js.map +1 -1
- package/dist/vault/create.js +86 -196
- package/dist/vault/create.js.map +1 -1
- package/dist/vault/doctor.js +49 -0
- package/dist/vault/doctor.js.map +1 -1
- package/dist/vault/manifest.js +2 -2
- package/dist/vault/manifest.js.map +1 -1
- package/dist/vault/preset.js +10 -4
- package/dist/vault/preset.js.map +1 -1
- package/dist/vault/self-update.js +1 -1
- package/dist/vault/status.js +24 -0
- package/dist/vault/status.js.map +1 -1
- package/dist/vault/upgrade.js +165 -23
- package/dist/vault/upgrade.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/obsidian-skills/byoao-conventions.md +9 -6
- package/src/assets/obsidian-skills/vault-thinking.md +6 -5
- package/src/assets/presets/common/AGENTS.md.hbs +23 -19
- package/src/assets/presets/common/SCHEMA.md.hbs +57 -0
- package/src/assets/presets/common/Start Here.md.hbs +29 -40
- package/src/assets/presets/minimal/preset.json +3 -3
- package/src/assets/presets/pm-tpm/preset.json +2 -2
- package/src/skills/ask/SKILL.md +135 -0
- package/src/skills/challenge/SKILL.md +134 -0
- package/src/skills/connect/SKILL.md +126 -0
- package/src/skills/cook/SKILL.md +170 -0
- package/src/skills/diagnose/SKILL.md +134 -0
- package/src/skills/drift/SKILL.md +123 -0
- package/src/skills/health/SKILL.md +65 -0
- package/src/skills/ideas/SKILL.md +173 -0
- package/src/skills/organize/SKILL.md +109 -0
- package/src/skills/prep/SKILL.md +65 -0
- package/src/skills/trace/SKILL.md +143 -0
- package/src/skills/wiki/SKILL.md +127 -0
- package/dist/assets/presets/common/Glossary.md.hbs +0 -16
- package/dist/assets/presets/common/obsidian/daily-notes.json +0 -5
- package/dist/assets/presets/common/obsidian/templates.json +0 -3
- package/dist/assets/presets/common/templates/Daily Note.md +0 -19
- package/dist/assets/presets/common/templates/Decision Record.md +0 -32
- package/dist/assets/presets/common/templates/Investigation.md +0 -34
- package/dist/assets/presets/common/templates/Meeting Notes.md +0 -25
- package/dist/assets/skills/emerge.md +0 -168
- package/dist/assets/skills/weave.md +0 -287
- package/dist/tools/add-glossary-term.js +0 -21
- package/dist/tools/add-glossary-term.js.map +0 -1
- package/dist/tools/add-person.js +0 -21
- package/dist/tools/add-person.js.map +0 -1
- package/dist/tools/add-project.js +0 -24
- package/dist/tools/add-project.js.map +0 -1
- package/dist/tools/graph-health.js +0 -25
- package/dist/tools/graph-health.js.map +0 -1
- package/dist/tools/note-read.js +0 -19
- package/dist/tools/note-read.js.map +0 -1
- package/dist/tools/search-vault.js +0 -22
- package/dist/tools/search-vault.js.map +0 -1
- package/dist/vault/__tests__/glossary.test.js +0 -68
- package/dist/vault/__tests__/glossary.test.js.map +0 -1
- package/dist/vault/__tests__/graph-health.test.js +0 -102
- package/dist/vault/__tests__/graph-health.test.js.map +0 -1
- package/dist/vault/__tests__/member.test.js +0 -85
- package/dist/vault/__tests__/member.test.js.map +0 -1
- package/dist/vault/__tests__/note-read.test.js +0 -71
- package/dist/vault/__tests__/note-read.test.js.map +0 -1
- package/dist/vault/__tests__/obsidian-cli.test.js +0 -108
- package/dist/vault/__tests__/obsidian-cli.test.js.map +0 -1
- package/dist/vault/__tests__/search-vault.test.js +0 -93
- package/dist/vault/__tests__/search-vault.test.js.map +0 -1
- package/dist/vault/glossary.js +0 -27
- package/dist/vault/glossary.js.map +0 -1
- package/dist/vault/graph-health.js +0 -83
- package/dist/vault/graph-health.js.map +0 -1
- package/dist/vault/member.js +0 -67
- package/dist/vault/member.js.map +0 -1
- package/dist/vault/note-read.js +0 -70
- package/dist/vault/note-read.js.map +0 -1
- package/dist/vault/project.js +0 -68
- package/dist/vault/project.js.map +0 -1
- package/dist/vault/retrieval-types.js +0 -5
- package/dist/vault/retrieval-types.js.map +0 -1
- package/dist/vault/search-vault.js +0 -87
- package/dist/vault/search-vault.js.map +0 -1
- package/src/assets/presets/common/obsidian/daily-notes.json +0 -5
- package/src/assets/presets/common/obsidian/templates.json +0 -3
- package/src/assets/presets/common/templates/Daily Note.md +0 -19
- package/src/assets/presets/common/templates/Decision Record.md +0 -32
- package/src/assets/presets/common/templates/Investigation.md +0 -34
- package/src/assets/presets/common/templates/Meeting Notes.md +0 -25
- package/src/skills/challenge.md +0 -174
- package/src/skills/connect.md +0 -213
- package/src/skills/diagnose.md +0 -72
- package/src/skills/drift.md +0 -223
- package/src/skills/emerge.md +0 -168
- package/src/skills/organize.md +0 -206
- package/src/skills/trace.md +0 -156
- package/src/skills/weave.md +0 -287
- package/src/skills/wiki.md +0 -227
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: connect
|
|
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
|
|
6
|
+
to B", "how are these related", "find connections between", "what do X and Y have in
|
|
7
|
+
common", or wants to understand how two topics, people, or concepts relate across notes.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /connect — Bridge Two Topics
|
|
11
|
+
|
|
12
|
+
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.
|
|
13
|
+
|
|
14
|
+
## Prerequisites Check
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
obsidian --version
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
If this fails, STOP and display the Obsidian CLI availability message (see /prep).
|
|
21
|
+
|
|
22
|
+
## Parameters
|
|
23
|
+
|
|
24
|
+
- **from** (required): First topic or page name.
|
|
25
|
+
- **to** (required): Second topic or page name.
|
|
26
|
+
- **depth** (optional): `direct` (only direct connections) or `expanded` (include indirect paths via intermediate pages). Default: `expanded`.
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
### Step 1: Locate Both Topics
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
obsidian search "<from>"
|
|
34
|
+
obsidian search "<to>"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If `INDEX.base` exists, read it to spot compiled pages for either topic.
|
|
38
|
+
|
|
39
|
+
Read any existing agent pages in `entities/`, `concepts/`, `comparisons/`, and `queries/`:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
obsidian read file="entities/<from>.md" # if exists
|
|
43
|
+
obsidian read file="concepts/<from>.md" # if exists
|
|
44
|
+
obsidian read file="comparisons/<from>.md" # if exists
|
|
45
|
+
obsidian read file="queries/<from>.md" # if exists
|
|
46
|
+
obsidian read file="entities/<to>.md" # if exists
|
|
47
|
+
obsidian read file="concepts/<to>.md" # if exists
|
|
48
|
+
obsidian read file="comparisons/<to>.md" # if exists
|
|
49
|
+
obsidian read file="queries/<to>.md" # if exists
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Step 2: Map Each Topic's Connections
|
|
53
|
+
|
|
54
|
+
For each topic:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
obsidian backlinks "<from>"
|
|
58
|
+
obsidian backlinks "<to>"
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Read the pages that link to each topic. Build a connection map:
|
|
62
|
+
- Direct wikilinks (both topics link to the same page, or the same page links to both)
|
|
63
|
+
- Shared tags (use `SCHEMA.md` for taxonomy context when classifying)
|
|
64
|
+
- Shared domain
|
|
65
|
+
- Shared source notes (both topics were extracted from the same user note)
|
|
66
|
+
- Shared people/entities mentioned in both topics' pages
|
|
67
|
+
|
|
68
|
+
### Step 3: Find Direct Connections
|
|
69
|
+
|
|
70
|
+
Check if there's already a direct relationship:
|
|
71
|
+
- Does the `from` page wikilink to `to` (or vice versa)?
|
|
72
|
+
- Is there a `comparisons/` page that covers both?
|
|
73
|
+
- Do they share a `sources` entry in frontmatter?
|
|
74
|
+
|
|
75
|
+
### Step 4: Find Indirect Paths (Expanded Mode)
|
|
76
|
+
|
|
77
|
+
If no direct connection exists, search for intermediate pages:
|
|
78
|
+
|
|
79
|
+
1. Find all pages that link to `from`
|
|
80
|
+
2. For each of those, check if they link to `to`
|
|
81
|
+
3. If yes: `from` → `intermediate` → `to` is a connection path
|
|
82
|
+
4. Report the shortest path(s) and explain the relationship
|
|
83
|
+
|
|
84
|
+
Also check:
|
|
85
|
+
- Shared tag clusters (both topics use tags that co-occur frequently)
|
|
86
|
+
- Shared domain context (both are about the same domain but different aspects)
|
|
87
|
+
- Temporal overlap (both topics emerged around the same time)
|
|
88
|
+
|
|
89
|
+
### Step 5: Present the Connection
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
# Connection: [[{from}]] ↔ [[{to}]]
|
|
93
|
+
|
|
94
|
+
## Direct Relationship
|
|
95
|
+
{Yes/No} — {explain the direct connection if it exists}
|
|
96
|
+
|
|
97
|
+
## Connection Paths
|
|
98
|
+
{If indirect paths exist, show them:}
|
|
99
|
+
|
|
100
|
+
1. [[{from}]] → [[{intermediate}]] → [[{to}]]
|
|
101
|
+
- Path explanation: {how they connect through this intermediate}
|
|
102
|
+
|
|
103
|
+
## Shared Context
|
|
104
|
+
- **Shared tags**: {tag1}, {tag2}
|
|
105
|
+
- **Shared domain**: {domain}
|
|
106
|
+
- **Shared sources**: [[source-note-1]], [[source-note-2]]
|
|
107
|
+
- **Shared entities**: [[entity-1]], [[entity-2]]
|
|
108
|
+
|
|
109
|
+
## Relationship Type
|
|
110
|
+
{Classify the relationship:}
|
|
111
|
+
- **Dependency**: {from} depends on {to} (or vice versa)
|
|
112
|
+
- **Sibling**: Both are aspects of a larger concept
|
|
113
|
+
- **Contrast**: They represent opposing approaches
|
|
114
|
+
- **Evolution**: {to} evolved from {from} over time
|
|
115
|
+
- **Parallel**: Independent topics that happen to share context
|
|
116
|
+
|
|
117
|
+
## Why This Connection Matters
|
|
118
|
+
{2-3 sentences on what this relationship reveals and why it's worth knowing}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Key Principles
|
|
122
|
+
|
|
123
|
+
- **Graph over guesswork.** Base connections on actual wikilinks, shared tags, and shared sources — not inferred relationships.
|
|
124
|
+
- **Multiple paths.** There may be several ways two topics connect — show the most meaningful ones, not just the shortest.
|
|
125
|
+
- **Explain, don't just list.** The value is in the *explanation* of why the connection matters, not just the path itself.
|
|
126
|
+
- **Obsidian is first workbench.** All note operations go through Obsidian CLI.
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cook
|
|
3
|
+
description: >
|
|
4
|
+
The core knowledge compilation skill. Reads raw notes and external sources, then
|
|
5
|
+
distills them into structured, cross-referenced knowledge pages in entities/, concepts/,
|
|
6
|
+
comparisons/, and queries/. Use this skill whenever the user mentions compiling notes,
|
|
7
|
+
digesting material, updating the knowledge base, running a cook cycle, or says anything
|
|
8
|
+
like "process my notes", "compile this", "add this to the wiki", "what's new in my notes",
|
|
9
|
+
or "update knowledge pages". Also activate when the user pastes external content and wants
|
|
10
|
+
it integrated into the knowledge base.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# /cook — Knowledge Compilation
|
|
14
|
+
|
|
15
|
+
You are a knowledge compiler. Your job is to read raw material (user notes, external sources)
|
|
16
|
+
and distill it into structured, cross-referenced knowledge pages.
|
|
17
|
+
|
|
18
|
+
## Prerequisites Check
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
obsidian --version
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
If this fails, STOP and display the Obsidian CLI availability message (see /prep).
|
|
25
|
+
|
|
26
|
+
## Parameters
|
|
27
|
+
|
|
28
|
+
- **target** (optional): What to cook. Default: incremental (new/modified notes since last cook).
|
|
29
|
+
- `--all` or `full`: Read all user notes in the vault
|
|
30
|
+
- `"Topic Name"`: Read notes matching this keyword
|
|
31
|
+
- `path/to/note.md`: Read a specific note
|
|
32
|
+
- `<URL>`: Fetch external article and digest it
|
|
33
|
+
|
|
34
|
+
## Input Scope
|
|
35
|
+
|
|
36
|
+
### Incremental Mode (default)
|
|
37
|
+
|
|
38
|
+
When user runs `/cook` with no arguments:
|
|
39
|
+
1. Read `log.md` for last cook timestamp
|
|
40
|
+
2. Scan for `.md` files outside agent directories with `modified` date after that timestamp
|
|
41
|
+
3. Include any unprocessed files
|
|
42
|
+
|
|
43
|
+
### Full Mode
|
|
44
|
+
|
|
45
|
+
When user runs `/cook --all`:
|
|
46
|
+
- Read all user notes in the vault (exclude `entities/`, `concepts/`, `comparisons/`, `queries/`)
|
|
47
|
+
- Re-evaluate all entities and concepts
|
|
48
|
+
|
|
49
|
+
### Targeted Mode
|
|
50
|
+
|
|
51
|
+
When user runs `/cook "Feature A"` or `/cook path/to/note.md`:
|
|
52
|
+
- Read only the specified notes or notes matching the keyword
|
|
53
|
+
|
|
54
|
+
### External URL
|
|
55
|
+
|
|
56
|
+
When user provides a URL:
|
|
57
|
+
1. Fetch content using WebFetch or Obsidian Web Clipper
|
|
58
|
+
2. Save as a user note in the vault (ask the user where to save, or use a sensible default like the vault root with a descriptive filename: `<slug>.md`)
|
|
59
|
+
3. Add frontmatter: `title`, `source_url`, `fetched` date
|
|
60
|
+
4. Process normally — the saved note becomes raw material for /cook
|
|
61
|
+
|
|
62
|
+
**Note:** No dedicated `raw/` directory. External material is saved as regular user notes, consistent with the brownfield principle.
|
|
63
|
+
|
|
64
|
+
## Processing Pipeline
|
|
65
|
+
|
|
66
|
+
### Step 1: Read & Parse
|
|
67
|
+
- Read all target notes
|
|
68
|
+
- Extract frontmatter, content, wikilinks
|
|
69
|
+
- Identify entities (named things), concepts (abstract ideas), decisions, contradictions
|
|
70
|
+
|
|
71
|
+
### Step 2: Match Against Existing Pages
|
|
72
|
+
- Check `INDEX.base` or scan `entities/`, `concepts/` for existing pages
|
|
73
|
+
- Determine: create new vs. update existing
|
|
74
|
+
|
|
75
|
+
### Step 3: Create/Update Pages
|
|
76
|
+
- **New entities:** Create in `entities/<name>.md`
|
|
77
|
+
- **New concepts:** Create in `concepts/<name>.md`
|
|
78
|
+
- **Updates:** Add new information, bump `updated` date
|
|
79
|
+
- **Contradictions:** Follow Update Policy
|
|
80
|
+
|
|
81
|
+
**Create page thresholds:**
|
|
82
|
+
- Appears in 2+ notes, OR is central subject of one note
|
|
83
|
+
- Do NOT create for: passing mentions, minor details, out-of-domain topics
|
|
84
|
+
|
|
85
|
+
### Step 4: Cross-Reference
|
|
86
|
+
- Ensure every new/updated page has at least 2 outbound wikilinks
|
|
87
|
+
- Check existing pages link back where relevant
|
|
88
|
+
|
|
89
|
+
### Step 5: Update Navigation
|
|
90
|
+
- `INDEX.base` auto-updates via Obsidian Base query
|
|
91
|
+
- Append entry to `log.md`
|
|
92
|
+
|
|
93
|
+
### Step 6: Report
|
|
94
|
+
Present structured summary (see Output Report Format below).
|
|
95
|
+
|
|
96
|
+
## Contradiction Handling
|
|
97
|
+
|
|
98
|
+
### Detection
|
|
99
|
+
- Compare claims across notes about the same entity/concept
|
|
100
|
+
- Check dates — newer claims may supersede older
|
|
101
|
+
- Look for explicit contradictions (e.g., "we changed from X to Y")
|
|
102
|
+
|
|
103
|
+
### Resolution Workflow
|
|
104
|
+
1. Note both positions with dates and source references
|
|
105
|
+
2. Mark in frontmatter: `contradictions: [page-name]`
|
|
106
|
+
3. Report to user with specific sources
|
|
107
|
+
4. Offer to create a comparison page
|
|
108
|
+
5. User decides
|
|
109
|
+
|
|
110
|
+
### Update Policy
|
|
111
|
+
- Newer sources generally supersede older
|
|
112
|
+
- If both positions still valid (e.g., A/B testing), note both
|
|
113
|
+
- Never silently overwrite — always flag for review
|
|
114
|
+
|
|
115
|
+
## Output Report Format
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
Cook complete. Here's what changed:
|
|
119
|
+
|
|
120
|
+
New knowledge:
|
|
121
|
+
• [[feature-a]] — Response time monitoring feature
|
|
122
|
+
• [[response-time-metrics]] — Why median replaced avg
|
|
123
|
+
|
|
124
|
+
Updated:
|
|
125
|
+
• [[zhang-san]] — Added Feature A assignment
|
|
126
|
+
|
|
127
|
+
Contradiction found:
|
|
128
|
+
⚠ PRD says avg(response_time) > baseline, but experiment notes say median
|
|
129
|
+
Sources: Projects/Feature-A-PRD.md vs Daily/2026-04-05.md
|
|
130
|
+
Want me to create a comparison page?
|
|
131
|
+
|
|
132
|
+
Log: 1 entry added to log.md
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Design principles:**
|
|
136
|
+
- Natural language, no technical jargon
|
|
137
|
+
- Structured for quick scanning
|
|
138
|
+
- Actionable (asks for decisions on contradictions)
|
|
139
|
+
- Wikilinks for easy navigation
|
|
140
|
+
|
|
141
|
+
## Auto-Trigger Behavior
|
|
142
|
+
|
|
143
|
+
The Agent should automatically run `/cook` after:
|
|
144
|
+
- Writing a note (brief report: "Cooked 1 note. Updated [[x]], created [[y]].")
|
|
145
|
+
- User drops new files into the vault
|
|
146
|
+
|
|
147
|
+
**When NOT to auto-trigger:**
|
|
148
|
+
- Rapid-fire note creation (batch and cook once at the end)
|
|
149
|
+
- `/cook` was already run in the last 5 minutes
|
|
150
|
+
|
|
151
|
+
## Agent Page Identification
|
|
152
|
+
|
|
153
|
+
Agent pages are identified by directory:
|
|
154
|
+
| Location | Ownership |
|
|
155
|
+
|----------|-----------|
|
|
156
|
+
| `entities/**/*.md` | Agent |
|
|
157
|
+
| `concepts/**/*.md` | Agent |
|
|
158
|
+
| `comparisons/**/*.md` | Agent |
|
|
159
|
+
| `queries/**/*.md` | Agent |
|
|
160
|
+
| All other `.md` | User (read-only during /cook) |
|
|
161
|
+
|
|
162
|
+
No `owner` frontmatter field needed.
|
|
163
|
+
|
|
164
|
+
## Key Principles
|
|
165
|
+
|
|
166
|
+
- **Evidence-based**: Every knowledge page cites its sources
|
|
167
|
+
- **Never modify user notes**: User notes are read-only during /cook
|
|
168
|
+
- **Thresholds matter**: 2+ mentions or central subject to create a page
|
|
169
|
+
- **Split at 200 lines**: Break large pages into sub-topics
|
|
170
|
+
- **Flag contradictions**: Never silently overwrite
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: diagnose
|
|
3
|
+
description: >
|
|
4
|
+
Vault health check at the structural level. Checks frontmatter coverage, orphan notes,
|
|
5
|
+
broken links, AGENTS.md and SCHEMA.md drift, v2 agent directories, and overall vault
|
|
6
|
+
configuration. Broader than /health (which focuses on agent pages) — /diagnose checks
|
|
7
|
+
the entire vault including user notes. Use when the user says "check my vault", "is
|
|
8
|
+
everything set up correctly", "vault health", "diagnose issues", or wants a full
|
|
9
|
+
structural audit beyond just agent pages.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /diagnose — Vault Diagnosis
|
|
13
|
+
|
|
14
|
+
You are a vault doctor. Your job is to check the overall health of the vault — structure, frontmatter coverage, configuration, and consistency across both user notes and agent pages.
|
|
15
|
+
|
|
16
|
+
## Prerequisites Check
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
obsidian --version
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
If this fails, STOP and display the Obsidian CLI availability message (see /prep).
|
|
23
|
+
|
|
24
|
+
## Parameters
|
|
25
|
+
|
|
26
|
+
- **focus** (optional): Specific area to check — `frontmatter`, `links`, `structure`, `config`, or `all`. Default: `all`.
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
### Step 1: Frontmatter Coverage
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
obsidian properties sort=count counts
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Report:
|
|
37
|
+
- Total notes with frontmatter vs. without
|
|
38
|
+
- Most common missing fields
|
|
39
|
+
- Notes with invalid frontmatter (bad dates, unknown types, etc.)
|
|
40
|
+
- Tag usage: how many unique tags, how many notes per tag
|
|
41
|
+
|
|
42
|
+
### Step 2: Broken Wikilinks
|
|
43
|
+
|
|
44
|
+
Scan for wikilinks that point to non-existent files:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
obsidian search "\[\[.*\]\]"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
For each wikilink found, check if the target file exists. Report broken links with:
|
|
51
|
+
- Source file where the broken link appears
|
|
52
|
+
- Target link that doesn't resolve
|
|
53
|
+
- Suggested fix (create the missing file or remove the link)
|
|
54
|
+
|
|
55
|
+
### Step 3: Orphan Detection
|
|
56
|
+
|
|
57
|
+
Find notes with no inbound wikilinks:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
obsidian backlinks "note-name"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
For both user notes and agent pages, identify orphans. Note that newly created notes are expected to be orphans temporarily.
|
|
64
|
+
|
|
65
|
+
### Step 4: AGENTS.md, SCHEMA.md, and v2 layout
|
|
66
|
+
|
|
67
|
+
Check if `AGENTS.md` accurately reflects the current vault state:
|
|
68
|
+
- Does it reference directories that no longer exist?
|
|
69
|
+
- Does it miss directories that were added?
|
|
70
|
+
- Are the skill references still valid?
|
|
71
|
+
- Is the navigation advice still accurate?
|
|
72
|
+
|
|
73
|
+
Check `SCHEMA.md`:
|
|
74
|
+
- Tag taxonomy and domain sections match how tags are actually used
|
|
75
|
+
- Agent directory table matches `entities/`, `concepts/`, `comparisons/`, `queries/`
|
|
76
|
+
- Frontmatter expectations align with v2 `type: entity | concept | comparison | query`
|
|
77
|
+
|
|
78
|
+
Verify the v2 agent directories exist and are usable: `entities/`, `concepts/`, `comparisons/`, `queries/` (note if any are missing or empty when the vault should have compiled knowledge).
|
|
79
|
+
|
|
80
|
+
### Step 5: Configuration Check
|
|
81
|
+
|
|
82
|
+
Verify vault configuration:
|
|
83
|
+
- `.obsidian/` directory exists and is valid
|
|
84
|
+
- `.opencode/` directory has current skill definitions
|
|
85
|
+
- `SCHEMA.md` exists and has a defined tag taxonomy
|
|
86
|
+
- `log.md` exists and has recent entries
|
|
87
|
+
- `INDEX.base` exists for compiled knowledge discovery
|
|
88
|
+
|
|
89
|
+
### Step 6: Present Diagnosis
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
# Vault Diagnosis
|
|
93
|
+
|
|
94
|
+
Scanned {N} notes, {M} agent pages, {K} user notes.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Frontmatter Coverage
|
|
99
|
+
- Notes with frontmatter: X/Y (Z%)
|
|
100
|
+
- Most common missing: {list fields}
|
|
101
|
+
- Unique tags: {N} (top 5: {list})
|
|
102
|
+
|
|
103
|
+
## Broken Wikilinks
|
|
104
|
+
- {N} broken links found:
|
|
105
|
+
- [[target]] in [[source]] → file not found
|
|
106
|
+
|
|
107
|
+
## Orphan Notes
|
|
108
|
+
- {N} notes with no inbound links:
|
|
109
|
+
- [[note-name]] — consider linking from [[suggested-source]]
|
|
110
|
+
|
|
111
|
+
## AGENTS.md / SCHEMA.md / layout
|
|
112
|
+
- AGENTS.md: {Up to date / Needs update} — {details if outdated}
|
|
113
|
+
- SCHEMA.md: {Up to date / Needs update / Missing} — {taxonomy vs usage}
|
|
114
|
+
- Agent dirs (`entities/`, `concepts/`, `comparisons/`, `queries/`): {OK / Missing / Issues}
|
|
115
|
+
|
|
116
|
+
## Configuration
|
|
117
|
+
- .obsidian/: {OK / Missing / Issues}
|
|
118
|
+
- .opencode/: {OK / Missing / Issues}
|
|
119
|
+
- log.md: {OK / Missing / {N} entries, last: {date}}
|
|
120
|
+
- INDEX.base: {OK / Missing / Needs update}
|
|
121
|
+
|
|
122
|
+
## Overall Health
|
|
123
|
+
**Score**: {Good / Fair / Needs attention}
|
|
124
|
+
|
|
125
|
+
{2-3 sentence summary of the vault's overall health and the top 2-3 issues to address}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Key Principles
|
|
129
|
+
|
|
130
|
+
- **Comprehensive but prioritized.** Check everything, but surface the most important issues first.
|
|
131
|
+
- **Actionable findings.** Every issue should come with a suggested fix.
|
|
132
|
+
- **Non-destructive by default.** Report issues, don't fix them automatically.
|
|
133
|
+
- **Whole vault, not just agent pages.** Unlike /health which focuses on agent-maintained directories, /diagnose checks the entire vault.
|
|
134
|
+
- **Obsidian is first workbench.** All note operations go through Obsidian CLI.
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: drift
|
|
3
|
+
description: >
|
|
4
|
+
Intention-vs-action gap analysis over time. Compares what the user said they would do
|
|
5
|
+
with what actually happened. Use when the user asks "am I following through on X",
|
|
6
|
+
"how has Y changed since the plan", "did I stick to the decision", "compare plan vs
|
|
7
|
+
reality", "what drifted", or wants to check if actions match stated intentions.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /drift — Intention vs. Action
|
|
11
|
+
|
|
12
|
+
You are an accountability mirror. Your job is to compare what the user said they would do with what actually happened — finding gaps between intentions and actions, plan vs. reality, and the slow drift of priorities over time.
|
|
13
|
+
|
|
14
|
+
## Prerequisites Check
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
obsidian --version
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
If this fails, STOP and display the Obsidian CLI availability message (see /prep).
|
|
21
|
+
|
|
22
|
+
## Parameters
|
|
23
|
+
|
|
24
|
+
- **topic** (optional): Specific plan, goal, or intention to track. Default: scan all recent intentions.
|
|
25
|
+
- **window** (optional): Time window to analyze (e.g., "30d", "3m", "all"). Default: "30d".
|
|
26
|
+
|
|
27
|
+
## Process
|
|
28
|
+
|
|
29
|
+
### Step 1: Find Stated Intentions
|
|
30
|
+
|
|
31
|
+
Search for places where the user expressed intentions:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
obsidian search "should" OR "need to" OR "will" OR "plan to" OR "going to" OR "decided to"
|
|
35
|
+
obsidian search "goal" OR "objective" OR "target" OR "priority"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Also check:
|
|
39
|
+
- Daily notes for intention statements
|
|
40
|
+
- Agent pages in `entities/` and `concepts/` for documented decisions, owners, or plans
|
|
41
|
+
- Pages with `status: draft` that represent in-progress intentions
|
|
42
|
+
- `log.md` as the chronological spine: cook cycles, reported changes, and stated purposes tied to dates
|
|
43
|
+
|
|
44
|
+
### Step 2: Find Actual Actions
|
|
45
|
+
|
|
46
|
+
Search for evidence of what actually happened:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
obsidian search "completed" OR "done" OR "shipped" OR "implemented" OR "finished"
|
|
50
|
+
obsidian search "changed" OR "switched" OR "pivoted" OR "abandoned"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Check:
|
|
54
|
+
- Recent daily notes for actual activities
|
|
55
|
+
- Agent pages in `entities/` and `concepts/` for current state and decision descriptions
|
|
56
|
+
- `log.md` entries since the intention was stated
|
|
57
|
+
- Updated frontmatter dates and `status` changes
|
|
58
|
+
- New pages created vs. pages left in draft
|
|
59
|
+
|
|
60
|
+
### Step 3: Compare Intentions to Actions
|
|
61
|
+
|
|
62
|
+
For each intention found:
|
|
63
|
+
|
|
64
|
+
1. **Followed through** — Evidence shows the action was taken as planned
|
|
65
|
+
2. **Partially followed** — Some action was taken but not fully
|
|
66
|
+
3. **Deferred** — Still planned but not yet acted on
|
|
67
|
+
4. **Diverged** — Action was taken but in a different direction
|
|
68
|
+
5. **Abandoned** — No evidence of any action
|
|
69
|
+
|
|
70
|
+
### Step 4: Identify Drift Patterns
|
|
71
|
+
|
|
72
|
+
Look for systematic patterns:
|
|
73
|
+
|
|
74
|
+
- **Priority drift**: The user said X was top priority, but most time went to Y
|
|
75
|
+
- **Scope drift**: A small intention grew into a much larger effort (or shrank)
|
|
76
|
+
- **Direction drift**: The approach changed from the original plan
|
|
77
|
+
- **Timeline drift**: Things took significantly longer (or shorter) than expected
|
|
78
|
+
- **Attention drift**: An intense focus faded and wasn't replaced by anything
|
|
79
|
+
|
|
80
|
+
### Step 5: Present the Drift Report
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
# Drift Report: {topic or "Recent Intentions"}
|
|
84
|
+
|
|
85
|
+
Analyzed {N} notes from {start date} to {end date}.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Followed Through ✅
|
|
90
|
+
- **{intention}** — {what was done, evidence from [[note]]}
|
|
91
|
+
|
|
92
|
+
## Partially Followed ⚡
|
|
93
|
+
- **{intention}** — {what was done vs. what was planned, gap evidence from [[note]]}
|
|
94
|
+
|
|
95
|
+
## Deferred ⏳
|
|
96
|
+
- **{intention}** — {stated on [[date]] in [[note]], no action found since}
|
|
97
|
+
|
|
98
|
+
## Diverged ↩
|
|
99
|
+
- **{intention}** — {original plan from [[note A]], actual outcome from [[note B]]}
|
|
100
|
+
|
|
101
|
+
## Abandoned ❌
|
|
102
|
+
- **{intention}** — {stated on [[date]], zero evidence of action}
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Drift Patterns
|
|
107
|
+
|
|
108
|
+
### Priority Drift
|
|
109
|
+
{Evidence that stated priorities don't match actual time allocation}
|
|
110
|
+
|
|
111
|
+
### Direction Drift
|
|
112
|
+
{Evidence that the approach changed from the original plan}
|
|
113
|
+
|
|
114
|
+
## Overall Assessment
|
|
115
|
+
{2-3 sentences: Is the user generally following through on intentions? Where is the biggest gap? Is the drift a problem or a healthy adaptation?}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Key Principles
|
|
119
|
+
|
|
120
|
+
- **Factual, not judgmental.** Report the gap between intention and action without moralizing. The user decides if it matters.
|
|
121
|
+
- **Evidence-based.** Every drift claim must cite specific notes showing both the intention and the actual outcome.
|
|
122
|
+
- **Drift isn't always bad.** Sometimes changing direction is the right call. Flag the drift; let the user judge.
|
|
123
|
+
- **Obsidian is first workbench.** All note operations go through Obsidian CLI.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: health
|
|
3
|
+
description: >
|
|
4
|
+
Scan agent-maintained directories for health issues: orphan pages, broken wikilinks,
|
|
5
|
+
stale content, frontmatter violations, tag taxonomy drift, oversized pages. Use this
|
|
6
|
+
skill whenever the user wants to audit knowledge base quality, check for broken links,
|
|
7
|
+
find stale or orphan pages, or says anything like "check my wiki", "are there any issues",
|
|
8
|
+
"audit the knowledge base", "find broken links", or "what needs fixing".
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /health — Knowledge Health Check
|
|
12
|
+
|
|
13
|
+
Scan the four agent-maintained directories (`entities/`, `concepts/`, `comparisons/`, `queries/`)
|
|
14
|
+
for structural issues.
|
|
15
|
+
|
|
16
|
+
## Prerequisites Check
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
obsidian --version
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
If this fails, STOP and display the Obsidian CLI availability message (see /prep).
|
|
23
|
+
|
|
24
|
+
## Scan Categories
|
|
25
|
+
|
|
26
|
+
### 1. Orphan Pages
|
|
27
|
+
Pages with no inbound wikilinks from any other note (user notes or agent pages).
|
|
28
|
+
- Severity: **warning** for new pages (< 7 days old), **info** for older
|
|
29
|
+
|
|
30
|
+
### 2. Broken Wikilinks
|
|
31
|
+
Wikilinks in agent pages that point to non-existent targets.
|
|
32
|
+
- Severity: **warning**
|
|
33
|
+
|
|
34
|
+
### 3. Stale Content
|
|
35
|
+
Pages where `updated` date is > 90 days behind the most recent source note's date.
|
|
36
|
+
- Severity: **info**
|
|
37
|
+
|
|
38
|
+
### 4. Frontmatter Violations
|
|
39
|
+
Pages missing required fields (`title`, `date`, `created`, `updated`, `type`, `tags`, `sources`).
|
|
40
|
+
- Severity: **warning** for missing required fields
|
|
41
|
+
|
|
42
|
+
### 5. Tag Taxonomy Drift
|
|
43
|
+
Tags used in agent pages that are not defined in `SCHEMA.md`.
|
|
44
|
+
- Severity: **info**
|
|
45
|
+
|
|
46
|
+
### 6. Oversized Pages
|
|
47
|
+
Pages exceeding ~200 lines — candidates for splitting.
|
|
48
|
+
- Severity: **info**
|
|
49
|
+
|
|
50
|
+
## Report Format
|
|
51
|
+
|
|
52
|
+
Group findings by severity:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Health check complete. Found 3 issues:
|
|
56
|
+
|
|
57
|
+
Warnings (2):
|
|
58
|
+
• [[broken-link-page]] — broken wikilink to [[nonexistent]]
|
|
59
|
+
• [[orphan-page]] — no inbound links (created 30 days ago)
|
|
60
|
+
|
|
61
|
+
Info (1):
|
|
62
|
+
• [[large-concept]] — 340 lines, consider splitting into sub-topics
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Offer concrete fixes for each issue. Ask before making changes.
|