@jayjiang/byoao 1.1.0 → 1.1.2
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/assets/obsidian-skills/byoao-conventions.md +103 -0
- package/dist/assets/obsidian-skills/defuddle.md +41 -0
- package/dist/assets/obsidian-skills/json-canvas.md +244 -0
- package/dist/assets/obsidian-skills/obsidian-bases.md +497 -0
- package/dist/assets/obsidian-skills/obsidian-cli.md +106 -0
- package/dist/assets/obsidian-skills/obsidian-markdown.md +196 -0
- package/dist/assets/obsidian-skills/vault-thinking.md +40 -0
- package/{src/assets/presets/common/AGENT.md.hbs → dist/assets/presets/common/AGENTS.md.hbs} +11 -15
- package/dist/assets/presets/common/Start Here.md.hbs +137 -0
- package/dist/assets/presets/common/obsidian/core-plugins.json +33 -0
- package/dist/assets/presets/common/obsidian/daily-notes.json +5 -0
- package/dist/assets/presets/common/obsidian/templates.json +3 -0
- package/dist/assets/presets/common/templates/Daily Note.md +19 -0
- package/dist/assets/presets/common/templates/Decision Record.md +32 -0
- package/dist/assets/presets/common/templates/Investigation.md +34 -0
- package/dist/assets/presets/common/templates/Meeting Notes.md +25 -0
- package/dist/assets/presets/minimal/preset.json +28 -0
- package/dist/assets/presets/pm-tpm/agent-section.hbs +15 -0
- package/dist/assets/presets/pm-tpm/preset.json +43 -0
- package/dist/assets/presets/pm-tpm/templates/Feature Doc.md +45 -0
- package/dist/assets/presets/pm-tpm/templates/Sprint Handoff.md +38 -0
- package/dist/assets/skills/ask.md +132 -0
- package/dist/assets/skills/challenge.md +174 -0
- package/dist/assets/skills/connect.md +213 -0
- package/dist/assets/skills/diagnose.md +72 -0
- package/dist/assets/skills/drift.md +223 -0
- package/dist/assets/skills/emerge.md +168 -0
- package/dist/assets/skills/ideas.md +172 -0
- package/dist/assets/skills/organize.md +206 -0
- package/dist/assets/skills/trace.md +156 -0
- package/dist/assets/skills/weave.md +287 -0
- package/dist/assets/skills/wiki.md +227 -0
- package/dist/cli/cli-program.js +1 -1
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/installer.js +37 -2
- package/dist/cli/installer.js.map +1 -1
- package/dist/hooks/__tests__/system-transform.test.js +47 -29
- package/dist/hooks/__tests__/system-transform.test.js.map +1 -1
- package/dist/hooks/system-transform.js +2 -113
- package/dist/hooks/system-transform.js.map +1 -1
- package/dist/index.js +162 -482
- package/dist/index.js.map +1 -1
- package/dist/lib/cjs-modules.js +4 -1
- package/dist/lib/cjs-modules.js.map +1 -1
- package/dist/tools/add-person.js +1 -1
- package/dist/tools/add-person.js.map +1 -1
- package/dist/tools/add-project.js +1 -1
- package/dist/tools/add-project.js.map +1 -1
- package/dist/tools/init-vault.js +1 -1
- 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/vault/__tests__/create.test.js +23 -23
- package/dist/vault/__tests__/create.test.js.map +1 -1
- package/dist/vault/__tests__/obsidian-cli.test.js +108 -0
- package/dist/vault/__tests__/obsidian-cli.test.js.map +1 -0
- package/dist/vault/__tests__/status.test.js +1 -8
- package/dist/vault/__tests__/status.test.js.map +1 -1
- package/dist/vault/__tests__/vault-detect.test.js +1 -13
- package/dist/vault/__tests__/vault-detect.test.js.map +1 -1
- package/dist/vault/create.js +23 -64
- package/dist/vault/create.js.map +1 -1
- package/dist/vault/doctor.js +15 -6
- package/dist/vault/doctor.js.map +1 -1
- package/dist/vault/manifest.js +1 -1
- package/dist/vault/member.js +2 -2
- package/dist/vault/member.js.map +1 -1
- package/dist/vault/obsidian-cli.js +28 -5
- package/dist/vault/obsidian-cli.js.map +1 -1
- package/dist/vault/project.js +2 -2
- package/dist/vault/project.js.map +1 -1
- package/dist/vault/self-update.js +1 -1
- package/dist/vault/status.js +3 -5
- package/dist/vault/status.js.map +1 -1
- package/dist/vault/upgrade.js +7 -2
- package/dist/vault/upgrade.js.map +1 -1
- package/dist/vault/vault-detect.js +4 -5
- package/dist/vault/vault-detect.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/obsidian-skills/byoao-conventions.md +28 -55
- package/src/assets/obsidian-skills/vault-thinking.md +1 -1
- package/src/assets/presets/common/AGENTS.md.hbs +25 -0
- package/src/assets/presets/common/Start Here.md.hbs +2 -2
- package/src/skills/ask.md +132 -0
- package/src/skills/challenge.md +8 -2
- package/src/skills/connect.md +8 -1
- package/src/skills/diagnose.md +12 -13
- package/src/skills/drift.md +8 -2
- package/src/skills/emerge.md +8 -1
- package/src/skills/ideas.md +9 -3
- package/src/skills/organize.md +3 -4
- package/src/skills/trace.md +10 -3
- package/src/skills/weave.md +84 -79
- package/src/skills/wiki.md +227 -0
- /package/{src → dist}/assets/presets/common/Glossary.md.hbs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: byoao-conventions
|
|
3
|
-
description: Use when creating or modifying notes in a BYOAO-structured vault. Enforces frontmatter
|
|
3
|
+
description: Use when creating or modifying notes in a BYOAO-structured vault. Enforces frontmatter requirements, wikilinks, and naming conventions.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# BYOAO Document Conventions
|
|
@@ -11,34 +11,19 @@ You MUST follow these conventions when creating or modifying any note in this va
|
|
|
11
11
|
|
|
12
12
|
Before creating any note:
|
|
13
13
|
|
|
14
|
-
1. Read `
|
|
15
|
-
2.
|
|
16
|
-
3.
|
|
17
|
-
4. Verify the target directory — place the file according to its `type`
|
|
14
|
+
1. Read `AGENTS.md` — check the knowledge base structure and note types
|
|
15
|
+
2. Identify the note type: `fleeting` (raw input), `literature` (processed reference), or `permanent` (atomic concept)
|
|
16
|
+
3. Use `obsidian create` to create notes — never use file write tools directly
|
|
18
17
|
|
|
19
18
|
## Creating Notes
|
|
20
19
|
|
|
21
|
-
You MUST use `obsidian create` to create notes in the vault
|
|
22
|
-
file write tools directly. Obsidian CLI ensures the file is tracked by
|
|
23
|
-
Obsidian and templates are applied correctly.
|
|
24
|
-
|
|
25
|
-
When a matching template exists:
|
|
20
|
+
You MUST use `obsidian create` to create notes in the vault:
|
|
26
21
|
|
|
27
22
|
```
|
|
28
|
-
obsidian create name="
|
|
29
|
-
obsidian create name="Sprint N Handoff" template="Sprint Handoff" path="Sprints/"
|
|
30
|
-
obsidian create name="Meeting Title" template="Meeting Notes"
|
|
31
|
-
obsidian create name="Investigation Title" template="Investigation"
|
|
32
|
-
obsidian create name="Decision Title" template="Decision Record"
|
|
33
|
-
obsidian create name="YYYY-MM-DD" template="Daily Note" path="Daily/"
|
|
23
|
+
obsidian create name="Note Title" content="<frontmatter + content>" silent
|
|
34
24
|
```
|
|
35
25
|
|
|
36
|
-
|
|
37
|
-
today's actual date — never a placeholder, never omitted:
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
obsidian create name="Note Title" content="---\ntitle: \"Note Title\"\ntype: reference\nstatus: draft\ndate: 2026-04-02\ntags: []\n---\n\n# Note Title\n" silent
|
|
41
|
-
```
|
|
26
|
+
For multiline content use `\n` for newline and `\t` for tab.
|
|
42
27
|
|
|
43
28
|
## Required Frontmatter
|
|
44
29
|
|
|
@@ -47,36 +32,19 @@ Every note MUST have these fields:
|
|
|
47
32
|
| Field | Values |
|
|
48
33
|
|-------|--------|
|
|
49
34
|
| `title` | Descriptive title |
|
|
50
|
-
| `
|
|
51
|
-
| `
|
|
52
|
-
| `date` | YYYY-MM-DD |
|
|
35
|
+
| `note_type` | `fleeting`, `literature`, or `permanent` |
|
|
36
|
+
| `type` | `meeting`, `idea`, `reference`, `daily`, `project`, `person`, etc. |
|
|
37
|
+
| `date` | YYYY-MM-DD — today's date or extracted from content |
|
|
53
38
|
| `tags` | Array of relevant tags |
|
|
54
39
|
|
|
55
|
-
Additional fields
|
|
40
|
+
Additional fields (optional):
|
|
56
41
|
|
|
57
|
-
|
|
|
58
|
-
|
|
59
|
-
| `
|
|
60
|
-
| `
|
|
61
|
-
| `
|
|
62
|
-
| `
|
|
63
|
-
| `decision` | `decision`, `decided-by` |
|
|
64
|
-
| `person` | `team`, `role` |
|
|
65
|
-
|
|
66
|
-
## Directory Placement
|
|
67
|
-
|
|
68
|
-
ALWAYS place files in the directory matching their type. Refer to the Document Conventions section in `AGENT.md` for the authoritative type-to-directory mapping for this vault.
|
|
69
|
-
|
|
70
|
-
| type | Directory |
|
|
71
|
-
|------|-----------|
|
|
72
|
-
| `feature` | `Projects/` |
|
|
73
|
-
| `sprint-handoff` | `Sprints/` |
|
|
74
|
-
| `daily` | `Daily/` |
|
|
75
|
-
| `reference` | `Knowledge/` |
|
|
76
|
-
| `person` | `People/` |
|
|
77
|
-
| `meeting` | Within relevant project or sprint folder |
|
|
78
|
-
| `investigation` | Within relevant project folder |
|
|
79
|
-
| `decision` | Within relevant project folder |
|
|
42
|
+
| Field | Purpose |
|
|
43
|
+
|-------|---------|
|
|
44
|
+
| `domain` | Knowledge area (e.g. ai-agents, product-strategy) |
|
|
45
|
+
| `references` | Related notes as wikilinks: `[[Note Name]]` |
|
|
46
|
+
| `status` | `draft`, `active`, `completed`, `archived` |
|
|
47
|
+
| `source` | URL to cloud origin (Confluence, Google Docs, etc.) |
|
|
80
48
|
|
|
81
49
|
## Wikilink Rules
|
|
82
50
|
|
|
@@ -84,20 +52,25 @@ ALWAYS use wikilinks for:
|
|
|
84
52
|
|
|
85
53
|
- People → `[[Person Name]]`
|
|
86
54
|
- Projects → `[[Project Name]]`
|
|
87
|
-
- Domain
|
|
88
|
-
-
|
|
55
|
+
- Domain concepts → `[[Concept Name]]`
|
|
56
|
+
- Related notes → `[[Note Name]]`
|
|
57
|
+
|
|
58
|
+
Rules:
|
|
59
|
+
- Use `[[wikilinks]]` for internal vault connections
|
|
60
|
+
- Use `[text](url)` for external URLs only
|
|
61
|
+
- Use `[[Note Name#Heading]]` for specific section links
|
|
62
|
+
- Use `[[Note Name\|Display Text]]` for custom display text
|
|
89
63
|
|
|
90
64
|
## File Naming
|
|
91
65
|
|
|
92
66
|
- Use Title Case or kebab-case for file names
|
|
93
|
-
- JIRA tickets: use the project key prefix (e.g., `PROJ-1234-Description.md`)
|
|
94
67
|
- No special characters, no leading/trailing spaces
|
|
68
|
+
- Daily notes: `YYYY-MM-DD` format
|
|
95
69
|
|
|
96
70
|
## Post-Creation Verification
|
|
97
71
|
|
|
98
72
|
After creating or modifying a note, verify:
|
|
99
73
|
|
|
100
74
|
1. All required frontmatter fields are present and correct
|
|
101
|
-
2.
|
|
102
|
-
3.
|
|
103
|
-
4. Domain terms reference `[[Glossary]]`
|
|
75
|
+
2. People and project mentions use `[[wikilinks]]`
|
|
76
|
+
3. Domain concepts are linked consistently
|
|
@@ -11,7 +11,7 @@ This vault has BYOAO thinking commands available. Suggest them when they match t
|
|
|
11
11
|
|
|
12
12
|
| Command | What it does | Suggest when |
|
|
13
13
|
|---------|-------------|--------------|
|
|
14
|
-
| `/weave` | Enrich notes with frontmatter, wikilinks,
|
|
14
|
+
| `/weave` | Enrich notes with frontmatter, wikilinks, suggest permanent concept notes | User imports new files, asks to organize, or vault has many unlinked notes |
|
|
15
15
|
| `/trace topic` | Chronological timeline of how an idea evolved | User asks how something developed, wants history, or says "when did I start..." |
|
|
16
16
|
| `/emerge` | Surface hidden patterns, clusters, contradictions across the vault | User asks "what am I missing", wants a big-picture review, or seems stuck |
|
|
17
17
|
| `/connect A B` | Bridge two topics via the vault's link graph | User wonders if two areas are related, or wants cross-domain insight |
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# AI Agent Guide
|
|
2
|
+
|
|
3
|
+
## 关于本知识库
|
|
4
|
+
这是一个基于 Zettelkasten 理念构建的个人知识库。知识通过原子化的笔记和双向链接形成网络。你可以保留自己的目录组织习惯,笔记之间的关联由 Agent 通过 `/weave` 自动维护。
|
|
5
|
+
|
|
6
|
+
## 从哪里开始
|
|
7
|
+
知识图谱:运行 `/wiki` 生成 `INDEX.base` 后,从这里探索知识库的结构。
|
|
8
|
+
|
|
9
|
+
## 笔记类型
|
|
10
|
+
每条笔记通过 frontmatter 的 `note_type` 分为三类:
|
|
11
|
+
- **fleeting** — 原始摄入,待处理
|
|
12
|
+
- **literature** — 对某来源的整理笔记
|
|
13
|
+
- **permanent** — 原子概念笔记
|
|
14
|
+
|
|
15
|
+
## 操作规则
|
|
16
|
+
**使用 Obsidian CLI 进行所有笔记操作**(`obsidian read`、`obsidian search`、`obsidian create` 等)。
|
|
17
|
+
不要用 bash(`cat`、`grep`、`find`、`sed` 等)直接处理笔记文件——Obsidian CLI 能正确维护 wikilink、frontmatter 和文件关系。
|
|
18
|
+
|
|
19
|
+
## 可用能力
|
|
20
|
+
- **/weave** — 编织新笔记:提取概念、建立 wikilink、生成 frontmatter
|
|
21
|
+
- **/wiki** — 生成 INDEX.base 知识图谱索引
|
|
22
|
+
- **/organize** — 按需重组目录结构
|
|
23
|
+
- **/ask** — 对知识库进行开放式问答
|
|
24
|
+
- **Thinking Tools** — /trace、/emerge、/connect、/ideas、/challenge、/drift
|
|
25
|
+
- **/diagnose** — 检查知识库健康状态,查看哪些笔记需要编织
|
|
@@ -127,11 +127,11 @@ tell the agent: "reconnect to {service name}".
|
|
|
127
127
|
## Key Files
|
|
128
128
|
|
|
129
129
|
- **[[Glossary]]** — Domain terms and key concepts
|
|
130
|
-
- **
|
|
130
|
+
- **AGENTS.md** — How AI agents navigate this vault
|
|
131
131
|
|
|
132
132
|
---
|
|
133
133
|
|
|
134
134
|
## For AI Agents
|
|
135
135
|
|
|
136
|
-
See `
|
|
136
|
+
See `AGENTS.md` at the vault root for navigation instructions
|
|
137
137
|
and knowledge graph conventions.
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ask
|
|
3
|
+
description: Open-ended Q&A against the knowledge base. Agent reads INDEX.base to locate relevant notes, synthesizes answers with citations. Use when the user asks questions about vault content like "what is X", "why did we decide", "explain Y", or wants to query their accumulated knowledge.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /ask — Knowledge Q&A
|
|
7
|
+
|
|
8
|
+
You are a knowledge assistant. Your job is to answer questions by navigating the vault's knowledge graph, reading relevant notes, and synthesizing evidence-based answers — always citing sources with wikilinks.
|
|
9
|
+
|
|
10
|
+
## Prerequisites Check
|
|
11
|
+
|
|
12
|
+
**Before doing anything else**, verify Obsidian CLI is available:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
obsidian --version
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
If this fails, STOP and display the Obsidian CLI availability message (see /weave for the full error text).
|
|
19
|
+
|
|
20
|
+
## Parameters
|
|
21
|
+
|
|
22
|
+
- **question** (required): The question to answer.
|
|
23
|
+
- **output** (optional): Save the answer as a note at this path.
|
|
24
|
+
|
|
25
|
+
## Process
|
|
26
|
+
|
|
27
|
+
### Step 1: Understand the Question
|
|
28
|
+
|
|
29
|
+
Identify the key concepts, entities, and intent in the user's question.
|
|
30
|
+
|
|
31
|
+
### Step 2: Locate Relevant Notes
|
|
32
|
+
|
|
33
|
+
If `INDEX.base` exists, read it first to understand the vault structure:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
obsidian read "INDEX"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Then search for relevant notes:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
obsidian search "<key concept>"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Search for each key concept mentioned in the question. Combine results across concepts.
|
|
46
|
+
|
|
47
|
+
### Step 3: Read Relevant Notes
|
|
48
|
+
|
|
49
|
+
For each promising result, read the full content:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
obsidian read "<note name>"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Prioritize:
|
|
56
|
+
- Notes with `note_type: permanent` (atomic concepts)
|
|
57
|
+
- Highly linked notes (many backlinks)
|
|
58
|
+
- Recent notes (last 30 days)
|
|
59
|
+
|
|
60
|
+
### Step 4: Synthesize Answer
|
|
61
|
+
|
|
62
|
+
Combine evidence from all relevant notes into a clear, structured answer:
|
|
63
|
+
|
|
64
|
+
- **Direct answer first** — address the question directly
|
|
65
|
+
- **Supporting evidence** — cite specific notes with wikilinks and brief quotes
|
|
66
|
+
- **Context** — explain how the evidence connects
|
|
67
|
+
- **Uncertainties** — flag gaps where the vault doesn't have enough information
|
|
68
|
+
|
|
69
|
+
Every claim must be backed by at least one vault note. Do not use general knowledge to answer — ground everything in the vault.
|
|
70
|
+
|
|
71
|
+
### Step 5: Present Answer
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
## Answer
|
|
75
|
+
|
|
76
|
+
<Direct answer to the question>
|
|
77
|
+
|
|
78
|
+
## Evidence
|
|
79
|
+
|
|
80
|
+
- **[[Note A]]**: "<relevant quote>"
|
|
81
|
+
- **[[Note B]]**: "<relevant quote>"
|
|
82
|
+
- **[[Note C]]**: "<relevant quote>"
|
|
83
|
+
|
|
84
|
+
## Context
|
|
85
|
+
|
|
86
|
+
<Brief paragraph connecting the evidence and explaining the bigger picture>
|
|
87
|
+
|
|
88
|
+
## Gaps
|
|
89
|
+
|
|
90
|
+
<What the vault doesn't cover that would help answer more completely>
|
|
91
|
+
|
|
92
|
+
## Related Questions
|
|
93
|
+
|
|
94
|
+
- Consider exploring: "..."
|
|
95
|
+
- Run `/trace topic="X"` to see how this evolved
|
|
96
|
+
- Run `/connect from="A" to="B"` to understand the relationship
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Step 6: Save (Optional)
|
|
100
|
+
|
|
101
|
+
At the end of your answer, ask:
|
|
102
|
+
|
|
103
|
+
> "Would you like me to save this as a note?"
|
|
104
|
+
|
|
105
|
+
If the user confirms, save the answer with frontmatter:
|
|
106
|
+
|
|
107
|
+
```yaml
|
|
108
|
+
---
|
|
109
|
+
title: "Answer: <topic>"
|
|
110
|
+
note_type: literature
|
|
111
|
+
type: reference
|
|
112
|
+
domain: <inferred>
|
|
113
|
+
date: <today>
|
|
114
|
+
tags: [qa, <topic>]
|
|
115
|
+
---
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Use `obsidian create` to save:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
obsidian create name="Answer: <topic>" content="<frontmatter + content>" silent
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Ask the user where they'd like it saved (root or a specific directory).
|
|
125
|
+
|
|
126
|
+
## Key Principles
|
|
127
|
+
|
|
128
|
+
- **Evidence-based**: Every answer must cite vault notes. No general knowledge answers.
|
|
129
|
+
- **Direct first**: Answer the question before providing supporting detail.
|
|
130
|
+
- **Acknowledge gaps**: If the vault doesn't have enough information, say so.
|
|
131
|
+
- **Respect scope**: Only answer based on vault content, not external knowledge.
|
|
132
|
+
- **Save on request**: Always offer to save the answer as a note for future reference.
|
package/src/skills/challenge.md
CHANGED
|
@@ -147,18 +147,24 @@ Based on the evidence gathered, rate the belief:
|
|
|
147
147
|
|
|
148
148
|
### Step 6: Save (Optional)
|
|
149
149
|
|
|
150
|
-
|
|
150
|
+
At the end of your challenge, ask:
|
|
151
|
+
|
|
152
|
+
> "Would you like me to save this as a note?"
|
|
153
|
+
|
|
154
|
+
If the user confirms, save with frontmatter:
|
|
151
155
|
|
|
152
156
|
```yaml
|
|
153
157
|
---
|
|
154
158
|
title: "Challenge: {Belief}"
|
|
159
|
+
note_type: literature
|
|
155
160
|
type: analysis
|
|
156
161
|
date: <today>
|
|
157
162
|
tags: [challenge, critical-thinking]
|
|
158
|
-
status: active
|
|
159
163
|
---
|
|
160
164
|
```
|
|
161
165
|
|
|
166
|
+
Use `obsidian create` to save. Ask the user where they'd like it saved.
|
|
167
|
+
|
|
162
168
|
## Key Principles
|
|
163
169
|
|
|
164
170
|
- **Fair, not adversarial**: Always present supporting evidence first. The goal is clear thinking, not winning an argument.
|
package/src/skills/connect.md
CHANGED
|
@@ -183,11 +183,16 @@ If you believe these topics are related, consider:
|
|
|
183
183
|
|
|
184
184
|
### Step 7: Save (Optional)
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
At the end of your analysis, ask:
|
|
187
|
+
|
|
188
|
+
> "Would you like me to save this as a note?"
|
|
189
|
+
|
|
190
|
+
If the user confirms, save with frontmatter:
|
|
187
191
|
|
|
188
192
|
```yaml
|
|
189
193
|
---
|
|
190
194
|
title: "Connect: {From} ↔ {To}"
|
|
195
|
+
note_type: literature
|
|
191
196
|
type: analysis
|
|
192
197
|
date: <today>
|
|
193
198
|
references:
|
|
@@ -197,6 +202,8 @@ tags: [connect, bridge]
|
|
|
197
202
|
---
|
|
198
203
|
```
|
|
199
204
|
|
|
205
|
+
Use `obsidian create` to save. Ask the user where they'd like it saved.
|
|
206
|
+
|
|
200
207
|
## Key Principles
|
|
201
208
|
|
|
202
209
|
- **Evidence-based**: Every claimed connection must cite specific notes and quotes.
|
package/src/skills/diagnose.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: diagnose
|
|
3
|
-
description: Diagnose knowledge graph health — find missing frontmatter, orphan notes, broken wikilinks, and
|
|
3
|
+
description: Diagnose knowledge graph health — find missing frontmatter, orphan notes, broken wikilinks, and AGENTS.md drift. Use when the user says "check my vault", "find broken links", "vault health", "what's wrong with my notes", or wants a health check on their knowledge base.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# /diagnose — Knowledge Graph Health Check
|
|
@@ -11,18 +11,21 @@ You are a vault health assistant. Your job is to diagnose issues in an Obsidian
|
|
|
11
11
|
|
|
12
12
|
### Step 1: Locate Vault
|
|
13
13
|
|
|
14
|
-
Ask the user for their vault path, or detect it from the current working directory (look for
|
|
14
|
+
Ask the user for their vault path, or detect it from the current working directory (look for AGENTS.md in the cwd or parent directories).
|
|
15
15
|
|
|
16
16
|
### Step 2: Run Diagnosis
|
|
17
17
|
|
|
18
18
|
Call `byoao_vault_doctor` with the vault path. This runs 5 checks:
|
|
19
19
|
|
|
20
20
|
1. **Missing frontmatter** — notes without any YAML frontmatter
|
|
21
|
-
2. **Missing
|
|
22
|
-
3. **
|
|
21
|
+
2. **Missing note_type** — notes without `note_type` field (not yet woven)
|
|
22
|
+
3. **Missing type/tags** — notes with frontmatter but no `type` or `tags` field
|
|
23
23
|
4. **Orphan notes** — notes with no incoming or outgoing wikilinks
|
|
24
24
|
5. **Broken wikilinks** — links that point to non-existent notes
|
|
25
25
|
|
|
26
|
+
Additionally, if `INDEX.base` exists:
|
|
27
|
+
6. **INDEX.base accuracy** — verify note counts match actual vault state
|
|
28
|
+
|
|
26
29
|
### Step 3: Present Results
|
|
27
30
|
|
|
28
31
|
Format the report by severity:
|
|
@@ -33,7 +36,7 @@ Format the report by severity:
|
|
|
33
36
|
- Projects/demo-notes.md
|
|
34
37
|
- Knowledge/api-overview.md
|
|
35
38
|
|
|
36
|
-
!
|
|
39
|
+
! AGENTS.md lists [[Kent]] but no People/Kent.md found
|
|
37
40
|
|
|
38
41
|
i 2 orphan notes (no incoming or outgoing wikilinks)
|
|
39
42
|
- Archive/old-draft.md
|
|
@@ -49,21 +52,17 @@ For each issue category, suggest a concrete next action:
|
|
|
49
52
|
| Issue | Suggested Fix |
|
|
50
53
|
|-------|--------------|
|
|
51
54
|
| Missing frontmatter | "Run `/weave` on these files to add structure" |
|
|
55
|
+
| Missing note_type | "Run `/weave` to classify and connect these notes" |
|
|
52
56
|
| Missing type/tags | "Run `/weave` to fill in metadata" |
|
|
53
|
-
| AGENT.md drift | "Create the missing note? I can run `byoao_add_person` or `byoao_add_project`" |
|
|
54
57
|
| Orphan notes | "Consider adding `[[wikilinks]]` to connect them, or archive if unused" |
|
|
55
58
|
| Broken wikilinks | "Create the target note, or fix the link name" |
|
|
59
|
+
| INDEX.base stale | "Run `/wiki` to regenerate the knowledge index" |
|
|
56
60
|
|
|
57
61
|
**Always ask for user confirmation before making changes.** Do not auto-fix.
|
|
58
62
|
|
|
59
|
-
### Step 5: Update
|
|
60
|
-
|
|
61
|
-
After fixes are applied, **ask the user** before updating AGENT.md. If confirmed, append or update a `Last Scanned` line at the bottom of AGENT.md:
|
|
63
|
+
### Step 5: Update INDEX.base Timestamp
|
|
62
64
|
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
_Last scanned by /diagnose: 2026-03-27_
|
|
66
|
-
```
|
|
65
|
+
If `INDEX.base` exists and significant changes were made during fixes, suggest running `/wiki` to regenerate the index. If the user confirms, run `/wiki`.
|
|
67
66
|
|
|
68
67
|
## Key Principles
|
|
69
68
|
|
package/src/skills/drift.md
CHANGED
|
@@ -196,18 +196,24 @@ These questions are for your consideration — not judgments:
|
|
|
196
196
|
|
|
197
197
|
### Step 6: Save (Optional)
|
|
198
198
|
|
|
199
|
-
|
|
199
|
+
At the end of your analysis, ask:
|
|
200
|
+
|
|
201
|
+
> "Would you like me to save this as a note?"
|
|
202
|
+
|
|
203
|
+
If the user confirms, save with frontmatter:
|
|
200
204
|
|
|
201
205
|
```yaml
|
|
202
206
|
---
|
|
203
207
|
title: "Drift Analysis: {period}"
|
|
208
|
+
note_type: literature
|
|
204
209
|
type: analysis
|
|
205
210
|
date: <today>
|
|
206
211
|
tags: [drift, reflection]
|
|
207
|
-
status: active
|
|
208
212
|
---
|
|
209
213
|
```
|
|
210
214
|
|
|
215
|
+
Use `obsidian create` to save. Ask the user where they'd like it saved.
|
|
216
|
+
|
|
211
217
|
## Key Principles
|
|
212
218
|
|
|
213
219
|
- **Descriptive, not judgmental**: "You said X and did Y" is fine. "You failed to do X" is not. Drift is information, not failure.
|
package/src/skills/emerge.md
CHANGED
|
@@ -141,17 +141,24 @@ Analyzed {N} notes across {M} domains.
|
|
|
141
141
|
|
|
142
142
|
### Step 7: Save (Optional)
|
|
143
143
|
|
|
144
|
-
|
|
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:
|
|
145
149
|
|
|
146
150
|
```yaml
|
|
147
151
|
---
|
|
148
152
|
title: "Emerge: Vault Patterns"
|
|
153
|
+
note_type: literature
|
|
149
154
|
type: analysis
|
|
150
155
|
date: <today>
|
|
151
156
|
tags: [emerge, patterns]
|
|
152
157
|
---
|
|
153
158
|
```
|
|
154
159
|
|
|
160
|
+
Use `obsidian create` to save. Ask the user where they'd like it saved.
|
|
161
|
+
|
|
155
162
|
## Key Principles
|
|
156
163
|
|
|
157
164
|
- **Show, don't tell**: Always cite specific notes and quotes. Never claim a pattern exists without evidence.
|
package/src/skills/ideas.md
CHANGED
|
@@ -47,7 +47,7 @@ Read notes across domains, prioritizing:
|
|
|
47
47
|
- Recent notes (last 30 days) — what the user is actively thinking about
|
|
48
48
|
- Highly connected notes (many backlinks) — central concepts
|
|
49
49
|
- Notes with `status: active` — current work
|
|
50
|
-
-
|
|
50
|
+
- `INDEX.base` if it exists — for knowledge structure overview
|
|
51
51
|
|
|
52
52
|
For each domain, read 5-10 representative notes to understand the landscape.
|
|
53
53
|
|
|
@@ -145,18 +145,24 @@ Rank the three highest-impact, most immediately actionable ideas:
|
|
|
145
145
|
|
|
146
146
|
### Step 7: Save (Optional)
|
|
147
147
|
|
|
148
|
-
|
|
148
|
+
At the end of your ideas, ask:
|
|
149
|
+
|
|
150
|
+
> "Would you like me to save this as a note?"
|
|
151
|
+
|
|
152
|
+
If the user confirms, save with frontmatter:
|
|
149
153
|
|
|
150
154
|
```yaml
|
|
151
155
|
---
|
|
152
156
|
title: "Ideas: {focus}"
|
|
157
|
+
note_type: literature
|
|
153
158
|
type: analysis
|
|
154
159
|
date: <today>
|
|
155
160
|
tags: [ideas, proactive]
|
|
156
|
-
status: active
|
|
157
161
|
---
|
|
158
162
|
```
|
|
159
163
|
|
|
164
|
+
Use `obsidian create` to save. Ask the user where they'd like it saved.
|
|
165
|
+
|
|
160
166
|
## Key Principles
|
|
161
167
|
|
|
162
168
|
- **Actionable over interesting**: Every idea must have a concrete next step. "Interesting observation" is not an idea.
|
package/src/skills/organize.md
CHANGED
|
@@ -52,10 +52,9 @@ Never move or suggest moving:
|
|
|
52
52
|
|
|
53
53
|
| Pattern | Reason |
|
|
54
54
|
|---------|--------|
|
|
55
|
-
| `
|
|
55
|
+
| `AGENTS.md` | BYOAO-managed root file |
|
|
56
|
+
| `INDEX.base` | Knowledge graph index — do not move |
|
|
56
57
|
| `Start Here.md` | BYOAO onboarding file |
|
|
57
|
-
| `Knowledge/Glossary.md` | BYOAO Glossary |
|
|
58
|
-
| `Knowledge/templates/*` | Template files |
|
|
59
58
|
| `.obsidian/`, `.git/`, `.byoao/` | System directories |
|
|
60
59
|
| `.opencode/`, `.cursor/`, `.claude/` | Tool config directories |
|
|
61
60
|
| `.env`, `credentials.*`, `*.key` | Sensitive files |
|
|
@@ -92,7 +91,7 @@ For each file with a `type` property, determine if it should move based on this
|
|
|
92
91
|
| `feature` | `Projects/<project>/` | Use `project` frontmatter field |
|
|
93
92
|
| `project` | `Projects/` | Top-level project notes |
|
|
94
93
|
| `sprint-handoff` | `Sprints/` | |
|
|
95
|
-
| `reference` | `Knowledge/` | General reference material |
|
|
94
|
+
| `reference` | `Knowledge/` or user's preferred reference location | General reference material |
|
|
96
95
|
| `person` | `People/` | |
|
|
97
96
|
| `investigation` | Project folder if `project` field exists, else `Knowledge/` | |
|
|
98
97
|
| `idea` | `Knowledge/` | |
|
package/src/skills/trace.md
CHANGED
|
@@ -40,7 +40,7 @@ obsidian search "<topic>"
|
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
Also check:
|
|
43
|
-
-
|
|
43
|
+
- `INDEX.base` if it exists, for domain and note_type classification
|
|
44
44
|
- Backlinks to `[[<topic>]]` if a note exists for it
|
|
45
45
|
- Tag variations: `#<topic>`, `#<topic-kebab-case>`
|
|
46
46
|
|
|
@@ -125,12 +125,17 @@ Consider tracing these connected topics:
|
|
|
125
125
|
|
|
126
126
|
### Step 6: Save (Optional)
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
At the end of your trace, ask:
|
|
129
|
+
|
|
130
|
+
> "Would you like me to save this as a note?"
|
|
131
|
+
|
|
132
|
+
If the user confirms, save the trace with frontmatter:
|
|
129
133
|
|
|
130
134
|
```yaml
|
|
131
135
|
---
|
|
132
136
|
title: "Trace: {Topic}"
|
|
133
|
-
|
|
137
|
+
note_type: literature
|
|
138
|
+
type: reference
|
|
134
139
|
domain: <inferred from topic>
|
|
135
140
|
date: <today>
|
|
136
141
|
references:
|
|
@@ -140,6 +145,8 @@ tags: [trace, <topic-tag>]
|
|
|
140
145
|
---
|
|
141
146
|
```
|
|
142
147
|
|
|
148
|
+
Use `obsidian create` to save. Ask the user where they'd like it saved.
|
|
149
|
+
|
|
143
150
|
## Key Principles
|
|
144
151
|
|
|
145
152
|
- **Chronological accuracy**: Always verify dates. Don't guess — if a note has no date, say "undated."
|