@jayjiang/byoao 2.0.1 → 2.0.3

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.
@@ -1,107 +0,0 @@
1
- ---
2
- name: organize
3
- description: >
4
- Directory organization based on frontmatter metadata. Suggests and applies file moves to
5
- keep the vault structured. Use when the user wants to reorganize notes, fix directory
6
- placement, or clean up the vault structure.
7
- ---
8
-
9
- # /organize — Directory Organization
10
-
11
- 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.
12
-
13
- ## Prerequisites Check
14
-
15
- ```bash
16
- obsidian --version
17
- ```
18
-
19
- If this fails, STOP and display the Obsidian CLI availability message (see /prep).
20
-
21
- ## Parameters
22
-
23
- - **scope** (optional): `all` (full vault), `agents` (agent pages only), `sources` (user notes), or a specific directory. Default: `all`.
24
- - **dry_run** (optional): `true` to only suggest, `false` to apply changes. Default: `true`.
25
-
26
- ## Process
27
-
28
- ### Step 1: Scan Current Structure
29
-
30
- ```bash
31
- obsidian list
32
- ```
33
-
34
- Build a picture of:
35
- - Current directory structure
36
- - Notes in each directory
37
- - Notes that seem misplaced based on their frontmatter
38
-
39
- ### Step 2: Check Agent Pages
40
-
41
- Agent pages should live in their designated directories:
42
-
43
- | `type` frontmatter | Expected directory |
44
- |-------------------|-------------------|
45
- | `entity` | `entities/` |
46
- | `concept` | `concepts/` |
47
- | `comparison` | `comparisons/` |
48
- | `query` | `queries/` |
49
-
50
- For each agent page, check:
51
- - Does its current directory match its `type`?
52
- - If not, suggest a move
53
-
54
- ### Step 3: Check User Notes
55
-
56
- 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:
57
-
58
- - 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
59
- - 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)
60
-
61
- ### Step 4: Check Naming Conventions
62
-
63
- Per SCHEMA.md conventions:
64
- - File names should be lowercase with hyphens, no spaces
65
- - Names should match the page title (abbreviated, hyphenated)
66
- - No duplicate names with different suffixes (e.g., `feature-a.md` and `feature-a-1.md`)
67
-
68
- Flag any naming violations.
69
-
70
- ### Step 5: Suggest Moves
71
-
72
- For each misplaced file:
73
-
74
- ```
75
- Move: entities/wrong-place.md → concepts/wrong-place.md
76
- Reason: type=concept but currently in entities/
77
-
78
- Move: Projects/random-notes.md → Projects/feature-a/
79
- Reason: Content is about Feature A, should be grouped with other Feature A notes
80
- ```
81
-
82
- ### Step 6: Apply Moves (If Confirmed)
83
-
84
- Use Obsidian CLI to rename/move files:
85
-
86
- ```bash
87
- obsidian rename file="old-path.md" new_name="new-path.md"
88
- ```
89
-
90
- Always show the full plan before applying. Never move files silently.
91
-
92
- ### Step 7: Update Wikilinks
93
-
94
- After moving files, check that all wikilinks to the moved files are still valid:
95
-
96
- ```bash
97
- obsidian backlinks "moved-file"
98
- ```
99
-
100
- Obsidian typically handles wikilink updates on rename automatically, but verify for safety.
101
-
102
- ## Key Principles
103
-
104
- - **Suggest first, act second.** Default to dry_run mode. Show the full plan before making any changes.
105
- - **Agent directories are sacred.** Only agent pages should live in `entities/`, `concepts/`, `comparisons/`, `queries/`.
106
- - **User notes are user territory.** Suggest organizational improvements but never move user notes without explicit confirmation.
107
- - **Obsidian is first workbench.** All note operations go through Obsidian CLI.
@@ -1,63 +0,0 @@
1
- ---
2
- name: prep
3
- description: >
4
- Shared prerequisites check — verifies Obsidian CLI is available and displays a correct
5
- error message with installation guidance. Referenced by all skills via "(see /prep)".
6
- ---
7
-
8
- # /prep — Prerequisites Check
9
-
10
- ## Obsidian CLI Availability
11
-
12
- Before using any BYOAO skill, verify the Obsidian CLI is available:
13
-
14
- ```bash
15
- obsidian --version
16
- ```
17
-
18
- If this fails, STOP and display:
19
-
20
- ```
21
- Obsidian CLI is not available. The Obsidian CLI is bundled with the Obsidian
22
- app (v1.12+) and cannot be installed separately.
23
-
24
- 1. Install or update Obsidian from: https://obsidian.md/download
25
- 2. Open Obsidian and enable the CLI:
26
- Settings → General → Advanced → Command-line interface
27
- 3. Make sure Obsidian is running, then try again.
28
- ```
29
-
30
- ## Graph Enrichment
31
-
32
- Scan all user notes and enrich frontmatter, suggest cross-references.
33
-
34
- ### Step 1: Scan Notes
35
- - Read all `.md` files outside agent directories
36
- - Extract entities, key terms, and potential wikilink targets
37
-
38
- ### Step 2: Enrich Frontmatter
39
- For each note missing frontmatter:
40
- - Add `title` (from filename or first heading)
41
- - Add `date` (from file creation time or content)
42
- - Suggest `tags` based on content
43
-
44
- For notes with partial frontmatter:
45
- - Fill in missing required fields
46
- - Never overwrite existing values
47
-
48
- ### Step 3: Suggest Cross-References
49
- - Identify recurring terms mentioned across notes
50
- - Suggest converting mentions to `[[wikilinks]]`
51
- - Propose new entries for `SCHEMA.md` tag taxonomy
52
-
53
- ### Step 4: Report
54
- Present a summary:
55
- - Notes enriched: X
56
- - Wikilinks suggested: Y
57
- - New schema terms proposed: Z
58
- Ask for approval before applying any changes.
59
-
60
- ### Key Behaviors
61
- - Idempotent — running twice won't duplicate changes
62
- - Never overwrites existing frontmatter values
63
- - Asks before applying wikilink suggestions
@@ -1,141 +0,0 @@
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", or wants to understand how an idea changed over time.
7
- ---
8
-
9
- # /trace — Chronological Timeline
10
-
11
- 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.
12
-
13
- ## Prerequisites Check
14
-
15
- ```bash
16
- obsidian --version
17
- ```
18
-
19
- If this fails, STOP and display the Obsidian CLI availability message (see /prep).
20
-
21
- ## Parameters
22
-
23
- - **topic** (required): The idea, decision, or concept to trace.
24
- - **depth** (optional): `summary` (key milestones only) or `detailed` (all mentions with context). Default: `summary`.
25
-
26
- ## Process
27
-
28
- ### Step 1: Locate All Mentions
29
-
30
- Search for the topic across all notes:
31
-
32
- ```bash
33
- obsidian search "<topic>"
34
- obsidian tags "<topic>"
35
- ```
36
-
37
- Also search agent-maintained pages under `entities/`, `concepts/`, `comparisons/`, and `queries/`:
38
-
39
- ```bash
40
- obsidian read file="entities/<topic>.md"
41
- obsidian read file="concepts/<topic>.md"
42
- obsidian read file="comparisons/<topic>.md"
43
- obsidian read file="queries/<topic>.md"
44
- ```
45
-
46
- Read `INDEX.base` to check if there's already a compiled page for this topic.
47
-
48
- ### Step 2: Build Timeline
49
-
50
- For each note that mentions the topic:
51
-
52
- 1. Read the full content using `obsidian read`
53
- 2. Extract the date (from frontmatter or filename for daily notes)
54
- 3. Identify what the note says about the topic:
55
- - **New idea proposed** — first mention of the concept
56
- - **Decision made** — commitment to a specific approach
57
- - **Change/evolution** — modification of previous understanding
58
- - **Contradiction** — statement that conflicts with an earlier note
59
- - **Confirmation** — validation of a previous position
60
- - **Abandoned** — idea dropped or superseded
61
-
62
- ### Step 3: Detect Phases
63
-
64
- Group the timeline into phases:
65
-
66
- - **Inception** — topic first appears, initial framing
67
- - **Exploration** — multiple approaches considered, debate
68
- - **Decision** — specific approach chosen
69
- - **Implementation** — execution details, adjustments
70
- - **Resolution** — outcome, lessons learned (or abandonment)
71
-
72
- A topic may skip phases, cycle back, or have multiple parallel tracks.
73
-
74
- ### Step 4: Identify Turning Points
75
-
76
- Highlight moments where the trajectory changed:
77
-
78
- - "We switched from X to Y" — explicit change
79
- - Data or evidence that contradicted previous assumptions
80
- - New stakeholder or constraint that shifted direction
81
- - External event (tech release, policy change) that affected the topic
82
-
83
- ### Step 5: Find Contradictions
84
-
85
- Compare statements across time:
86
-
87
- - "In Note A (March 1): we decided X"
88
- - "In Note B (April 15): actually Y is better because..."
89
- - Is this a genuine contradiction, an evolution of thinking, or a context-dependent difference?
90
-
91
- Flag genuine contradictions. Note the dates, sources, and nature of the conflict.
92
-
93
- ### Step 6: Present Timeline
94
-
95
- ```markdown
96
- # Timeline: {topic}
97
-
98
- Traced across {N} notes spanning {start date} to {end date}.
99
-
100
- ---
101
-
102
- ## Phase 1: {Phase Name} ({date range})
103
-
104
- **What was happening**: {brief context}
105
-
106
- - **{date}** — [[Note A]]: {what happened / what was decided}
107
- - **{date}** — [[Note B]]: {what changed / what was added}
108
-
109
- **Key insight**: {what this phase reveals}
110
-
111
- ---
112
-
113
- ## Phase 2: {Phase Name} ({date range})
114
- ...
115
-
116
- ---
117
-
118
- ## Turning Points
119
-
120
- 1. **{date}**: {what changed and why it mattered} — [[source note]]
121
-
122
- ## Contradictions Found
123
-
124
- - ⚠ [[Note A]] says X, but [[Note B]] says Y — {resolution if known}
125
-
126
- ## Current State
127
-
128
- {Where things stand now — the most recent position on this topic}
129
-
130
- ## Unanswered Questions
131
-
132
- {What the vault doesn't tell us about this topic's evolution}
133
- ```
134
-
135
- ## Key Principles
136
-
137
- - **Chronology is authority.** The timeline must follow actual note dates, not inferred order.
138
- - **Evidence-based.** Every claim in the timeline must cite a specific note.
139
- - **Show the messiness.** Ideas rarely evolve linearly. Show the false starts, reversals, and parallel tracks.
140
- - **Flag contradictions.** Don't resolve them — present both sides and let the user decide.
141
- - **Obsidian is first workbench.** All note operations go through Obsidian CLI.
@@ -1,126 +0,0 @@
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 runs /wiki or wants to see the current
7
- state of the knowledge base.
8
- ---
9
-
10
- # /wiki — Knowledge Map
11
-
12
- **Metaphor:** The menu board — shows what's been prepared and what's on offer.
13
-
14
- ## Purpose
15
-
16
- Generate and maintain `INDEX.base`, the dynamic knowledge map that lists all agent-maintained pages grouped by v2 `type` (`entity`, `concept`, `comparison`, `query`). Unlike static index files, INDEX.base uses Obsidian Base queries to stay current automatically. Use `SCHEMA.md` for tag taxonomy when summarizing or grouping entries.
17
-
18
- ## Process
19
-
20
- ### Step 1: Prerequisites Check
21
-
22
- ```bash
23
- obsidian --version
24
- ```
25
-
26
- If this fails, STOP and display the Obsidian CLI availability message (see /prep).
27
-
28
- ### Step 2: Read SCHEMA.md
29
-
30
- ```bash
31
- obsidian read file="SCHEMA.md"
32
- ```
33
-
34
- Understand the current tag taxonomy, domain definitions, and page conventions.
35
-
36
- ### Step 3: Generate INDEX.base Content
37
-
38
- Query all agent-maintained pages by v2 frontmatter `type` (`entity`, `concept`, `comparison`, `query`) so each page is listed under the correct section:
39
-
40
- ```bash
41
- obsidian properties type=entity
42
- obsidian properties type=concept
43
- obsidian properties type=comparison
44
- obsidian properties type=query
45
- ```
46
-
47
- For each type, compile entries with:
48
- - Page name (as wikilink)
49
- - Title from frontmatter
50
- - Brief summary (from content's first paragraph or definition section)
51
- - Tags and domain
52
-
53
- Format by section:
54
-
55
- ```markdown
56
- # Knowledge Index
57
-
58
- ## Entities
59
- - [[feature-a]] — Response time monitoring feature (tags: monitoring, backend)
60
- - [[zhang-san]] — Senior engineer on Feature A team (tags: team, engineering)
61
-
62
- ## Concepts
63
- - [[response-time-metrics]] — Why median replaced avg for trigger calculation (tags: metrics, decisions)
64
- - [[search-trigger-rules]] — Search trigger rule design principles (tags: search, configuration)
65
-
66
- ## Comparisons
67
- - [[avg-vs-median-for-trigger]] — Side-by-side analysis of avg vs median as trigger metrics (tags: metrics, decisions)
68
-
69
- ## Queries
70
- - [[why-did-we-choose-median]] — "Why did we choose median over avg?" — detailed answer (tags: metrics, history)
71
- ```
72
-
73
- ### Step 4: Check Obsidian Base Configuration
74
-
75
- INDEX.base relies on Obsidian Base (saved search) configuration. Verify:
76
-
77
- 1. The Base query covers all four agent directories
78
- 2. The query filters by `type` frontmatter field
79
- 3. Results are grouped by type
80
-
81
- If the Base doesn't exist or is misconfigured, guide the user to set it up:
82
- - Open Obsidian → Bases → Create new base
83
- - Name it "Knowledge Index"
84
- - Query: `path:entities/ OR path:concepts/ OR path:comparisons/ OR path:queries/`
85
- - Group by: `type`
86
-
87
- ### Step 5: Present the Index
88
-
89
- Show the current INDEX.base content to the user:
90
-
91
- ```markdown
92
- # Knowledge Index
93
-
94
- Generated on YYYY-MM-DD
95
-
96
- Total pages: N (X entities, Y concepts, Z comparisons, W queries)
97
-
98
- ## By Domain
99
- - backend: N pages
100
- - frontend: M pages
101
- - infrastructure: K pages
102
-
103
- ## Most Connected
104
- - [[page-name]] — N inbound links
105
- - [[page-name]] — M inbound links
106
-
107
- ## Recently Updated
108
- - [[page-name]] — updated YYYY-MM-DD
109
- - [[page-name]] — updated YYYY-MM-DD
110
- ```
111
-
112
- ### Step 6: Suggest Gaps
113
-
114
- Based on the index, identify knowledge gaps:
115
- - Entity mentioned in multiple concepts but no entity page exists
116
- - Concept referenced in entity pages but no concept page exists
117
- - Domains with very few pages (under-represented areas)
118
- - Tags used frequently but no corresponding concept page
119
-
120
- ## Key Principles
121
-
122
- - **INDEX.base is dynamic.** The Obsidian Base query keeps it current — no manual regeneration needed on every cook cycle.
123
- - **Summary quality.** Each entry's one-line summary should be genuinely informative, not just the page title repeated.
124
- - **Navigation first.** INDEX.base exists to help humans find knowledge quickly. Structure it for scanning, not completeness.
125
- - **Obsidian is first workbench.** All note operations go through Obsidian CLI.
126
- - **Agent pages only.** INDEX.base covers only `entities/`, `concepts/`, `comparisons/`, `queries/` — not user notes.