@jayjiang/byoao 0.2.0 → 0.2.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/cli/cli-program.js +52 -82
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/installer.js +5 -3
- package/dist/cli/installer.js.map +1 -1
- package/dist/tools/add-member.js +1 -1
- package/dist/tools/add-member.js.map +1 -1
- package/dist/tools/add-project.js +1 -1
- package/dist/tools/add-project.js.map +1 -1
- package/dist/vault/glossary.js +1 -1
- package/dist/vault/glossary.js.map +1 -1
- package/dist/vault/member.js +3 -3
- package/dist/vault/member.js.map +1 -1
- package/dist/vault/project.js +2 -2
- package/dist/vault/project.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/presets/common/Glossary.md.hbs +2 -2
- package/src/assets/presets/common/obsidian/daily-notes.json +1 -1
- package/src/assets/presets/common/obsidian/templates.json +1 -1
- package/src/assets/web-clipper/confluence-page.json +1 -1
- package/src/assets/web-clipper/general-article.json +1 -1
- package/src/assets/web-clipper/jira-issue.json +1 -1
- package/src/assets/web-clipper/meeting-notes.json +1 -1
- package/src/skills/enrich-document.md +2 -2
- package/src/skills/system-explainer.md +1 -1
package/dist/cli/cli-program.js
CHANGED
|
@@ -12,19 +12,25 @@ import os from "node:os";
|
|
|
12
12
|
const program = new Command();
|
|
13
13
|
program
|
|
14
14
|
.name("byoao")
|
|
15
|
-
.description("Build Your Own AI OS — Obsidian
|
|
16
|
-
|
|
15
|
+
.description("Build Your Own AI OS — turn Obsidian into an AI-powered knowledge graph.\n\n" +
|
|
16
|
+
"Quick start:\n" +
|
|
17
|
+
" 1. byoao install Set up BYOAO plugin in OpenCode\n" +
|
|
18
|
+
" 2. byoao init Create your team's knowledge base\n" +
|
|
19
|
+
" 3. byoao status <path> Check vault health\n\n" +
|
|
20
|
+
"For more info visit https://github.com/JayJiangCT/BYOAO")
|
|
21
|
+
.version("0.2.1");
|
|
17
22
|
// ── byoao install ────────────────────────────────────────────────
|
|
18
23
|
program
|
|
19
24
|
.command("install")
|
|
20
|
-
.description("
|
|
21
|
-
|
|
22
|
-
.option("-
|
|
25
|
+
.description("Set up BYOAO plugin in OpenCode — registers the plugin, copies Obsidian Skills " +
|
|
26
|
+
"and BYOAO commands so they are available in your AI agent sessions")
|
|
27
|
+
.option("-g, --global", "Install globally so BYOAO works in every project", false)
|
|
28
|
+
.option("-y, --yes", "Skip interactive prompts, use defaults", false)
|
|
23
29
|
.option("--no-skills", "Skip installing Obsidian Skills")
|
|
24
30
|
.option("--project-dir <path>", "Project directory (default: current directory)")
|
|
25
31
|
.action(async (opts) => {
|
|
26
32
|
printLogo();
|
|
27
|
-
printVersion("0.2.
|
|
33
|
+
printVersion("0.2.1");
|
|
28
34
|
let installGlobal = opts.global;
|
|
29
35
|
let installSkills = opts.skills !== false;
|
|
30
36
|
// Interactive prompts unless --yes flag is set
|
|
@@ -61,15 +67,14 @@ program
|
|
|
61
67
|
projectDir: opts.projectDir,
|
|
62
68
|
}, !opts.yes);
|
|
63
69
|
});
|
|
64
|
-
// ── byoao
|
|
70
|
+
// ── byoao init ───────────────────────────────────────────────────
|
|
65
71
|
program
|
|
66
|
-
.command("vault")
|
|
67
|
-
.description("Vault management commands")
|
|
68
72
|
.command("init")
|
|
69
|
-
.description("Create a new Obsidian
|
|
70
|
-
|
|
71
|
-
.option("--
|
|
72
|
-
.option("--
|
|
73
|
+
.description("Create a new Obsidian knowledge base for your team — sets up folders, templates, " +
|
|
74
|
+
"glossary, and an AI routing index (AGENT.md)")
|
|
75
|
+
.option("--team <name>", "Team name (skips interactive prompt)")
|
|
76
|
+
.option("--path <path>", "Where to create the vault (default: ~/Documents/<team> Workspace)")
|
|
77
|
+
.option("--preset <name>", "Role preset — determines folder structure and templates (default: pm-tpm)")
|
|
73
78
|
.action(async (opts) => {
|
|
74
79
|
// Check Obsidian first
|
|
75
80
|
const obsidianStatus = checkObsidian();
|
|
@@ -82,7 +87,6 @@ program
|
|
|
82
87
|
let vaultPath = opts.path;
|
|
83
88
|
let presetName = opts.preset || "pm-tpm";
|
|
84
89
|
let members = [];
|
|
85
|
-
let projects = [];
|
|
86
90
|
// Interactive TUI when --team is not provided and stdout is TTY
|
|
87
91
|
if (!teamName && process.stdout.isTTY) {
|
|
88
92
|
try {
|
|
@@ -114,7 +118,17 @@ program
|
|
|
114
118
|
validate: (v) => v.trim() ? true : "Team name is required",
|
|
115
119
|
}]);
|
|
116
120
|
teamName = teamAnswer.teamName;
|
|
117
|
-
// 3.
|
|
121
|
+
// 3. Your name (creates your own People note)
|
|
122
|
+
const { yourName } = await inquirer.prompt([{
|
|
123
|
+
type: "input",
|
|
124
|
+
name: "yourName",
|
|
125
|
+
message: "Your name:",
|
|
126
|
+
validate: (v) => v.trim() ? true : "Your name is required",
|
|
127
|
+
}]);
|
|
128
|
+
if (yourName.trim()) {
|
|
129
|
+
members.push({ name: yourName.trim(), role: presetName === "pm-tpm" ? "PM/TPM" : "Team Member" });
|
|
130
|
+
}
|
|
131
|
+
// 4. Vault path
|
|
118
132
|
const defaultPath = path.join(os.homedir(), "Documents", `${teamName} Workspace`);
|
|
119
133
|
const { pathChoice } = await inquirer.prompt([{
|
|
120
134
|
type: "list",
|
|
@@ -134,48 +148,6 @@ program
|
|
|
134
148
|
}]);
|
|
135
149
|
vaultPath = customPath;
|
|
136
150
|
}
|
|
137
|
-
// 4. Members loop
|
|
138
|
-
let addingMembers = true;
|
|
139
|
-
while (addingMembers) {
|
|
140
|
-
const { action } = await inquirer.prompt([{
|
|
141
|
-
type: "list",
|
|
142
|
-
name: "action",
|
|
143
|
-
message: `Team members (${members.length} added)`,
|
|
144
|
-
choices: [
|
|
145
|
-
{ name: "Add a member", value: "add" },
|
|
146
|
-
{ name: "Done", value: "done" },
|
|
147
|
-
],
|
|
148
|
-
}]);
|
|
149
|
-
if (action === "done")
|
|
150
|
-
break;
|
|
151
|
-
const { name, role } = await inquirer.prompt([
|
|
152
|
-
{ type: "input", name: "name", message: "Name:" },
|
|
153
|
-
{ type: "input", name: "role", message: "Role:", default: "" },
|
|
154
|
-
]);
|
|
155
|
-
if (name.trim())
|
|
156
|
-
members.push({ name: name.trim(), role: role.trim() || "Team Member" });
|
|
157
|
-
}
|
|
158
|
-
// 5. Projects loop
|
|
159
|
-
let addingProjects = true;
|
|
160
|
-
while (addingProjects) {
|
|
161
|
-
const { action } = await inquirer.prompt([{
|
|
162
|
-
type: "list",
|
|
163
|
-
name: "action",
|
|
164
|
-
message: `Projects (${projects.length} added)`,
|
|
165
|
-
choices: [
|
|
166
|
-
{ name: "Add a project", value: "add" },
|
|
167
|
-
{ name: "Done", value: "done" },
|
|
168
|
-
],
|
|
169
|
-
}]);
|
|
170
|
-
if (action === "done")
|
|
171
|
-
break;
|
|
172
|
-
const { name, description } = await inquirer.prompt([
|
|
173
|
-
{ type: "input", name: "name", message: "Project name:" },
|
|
174
|
-
{ type: "input", name: "description", message: "Description:", default: "" },
|
|
175
|
-
]);
|
|
176
|
-
if (name.trim())
|
|
177
|
-
projects.push({ name: name.trim(), description: description.trim() || "" });
|
|
178
|
-
}
|
|
179
151
|
}
|
|
180
152
|
catch {
|
|
181
153
|
// inquirer not available — fall through to require --team
|
|
@@ -194,7 +166,7 @@ program
|
|
|
194
166
|
teamName,
|
|
195
167
|
vaultPath,
|
|
196
168
|
members,
|
|
197
|
-
projects,
|
|
169
|
+
projects: [],
|
|
198
170
|
preset: presetName,
|
|
199
171
|
});
|
|
200
172
|
printEvent(`Creating vault for "${teamName}"`);
|
|
@@ -205,34 +177,32 @@ program
|
|
|
205
177
|
printEventDetail(`Files: ${result.filesCreated}`);
|
|
206
178
|
printEventDetail(`Wikilinks: ${result.wikilinksCreated}`);
|
|
207
179
|
printEventDetail(`Directories: ${result.directories.length}`);
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
}
|
|
212
|
-
|
|
180
|
+
console.log();
|
|
181
|
+
printEventDetail("Next steps:");
|
|
182
|
+
printEventDetail(" 1. Open Obsidian → Manage vaults → Open folder as vault");
|
|
183
|
+
printEventDetail(` ${result.vaultPath}`);
|
|
184
|
+
printEventDetail(' 2. Read "Start Here.md" — it explains the vault structure');
|
|
185
|
+
printEventDetail(" 3. Start adding notes — meeting notes, project docs, daily notes");
|
|
186
|
+
printEventDetail(` 4. When ready for AI features: cd "${result.vaultPath}" && opencode`);
|
|
187
|
+
});
|
|
188
|
+
// ── byoao status ─────────────────────────────────────────────────
|
|
189
|
+
program
|
|
190
|
+
.command("status")
|
|
191
|
+
.description("Check the health of an existing vault — note count, directory structure, " +
|
|
192
|
+
"broken [[wikilinks]], and Obsidian connection status")
|
|
193
|
+
.argument("<path>", "Path to the vault folder")
|
|
194
|
+
.action(async (vaultPath) => {
|
|
195
|
+
const resolvedPath = path.resolve(vaultPath);
|
|
196
|
+
const status = await getVaultStatus(resolvedPath);
|
|
197
|
+
console.log(formatVaultStatus(status));
|
|
198
|
+
console.log("\n--- Obsidian ---");
|
|
199
|
+
const obsidianStatus = checkObsidian();
|
|
200
|
+
console.log(formatObsidianStatus(obsidianStatus));
|
|
213
201
|
});
|
|
214
|
-
// ── byoao vault status ──────────────────────────────────────────
|
|
215
|
-
// We need to add status as a sibling command under vault
|
|
216
|
-
// Commander's nested commands require a parent command object
|
|
217
|
-
const vaultCmd = program.commands.find((c) => c.name() === "vault");
|
|
218
|
-
if (vaultCmd) {
|
|
219
|
-
vaultCmd
|
|
220
|
-
.command("status")
|
|
221
|
-
.description("Check vault health")
|
|
222
|
-
.argument("<path>", "Path to the vault")
|
|
223
|
-
.action(async (vaultPath) => {
|
|
224
|
-
const resolvedPath = path.resolve(vaultPath);
|
|
225
|
-
const status = await getVaultStatus(resolvedPath);
|
|
226
|
-
console.log(formatVaultStatus(status));
|
|
227
|
-
console.log("\n--- Obsidian ---");
|
|
228
|
-
const obsidianStatus = checkObsidian();
|
|
229
|
-
console.log(formatObsidianStatus(obsidianStatus));
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
202
|
// ── byoao check-obsidian ────────────────────────────────────────
|
|
233
203
|
program
|
|
234
204
|
.command("check-obsidian")
|
|
235
|
-
.description("
|
|
205
|
+
.description("Verify that Obsidian is installed and running on this machine")
|
|
236
206
|
.action(() => {
|
|
237
207
|
const status = checkObsidian();
|
|
238
208
|
console.log(formatObsidianStatus(status));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-program.js","sourceRoot":"","sources":["../../src/cli/cli-program.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,
|
|
1
|
+
{"version":3,"file":"cli-program.js","sourceRoot":"","sources":["../../src/cli/cli-program.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/installer.js
CHANGED
|
@@ -65,16 +65,18 @@ async function promptInstallDependency(name, installCommands, interactive) {
|
|
|
65
65
|
export async function install(options, interactive = true) {
|
|
66
66
|
// ── 1. Check dependencies ─────────────────────────────────────
|
|
67
67
|
printSectionHeader("Checking dependencies...");
|
|
68
|
-
|
|
68
|
+
let openCodeStatus = checkOpenCode();
|
|
69
69
|
if (!openCodeStatus.installed) {
|
|
70
70
|
printProgress("OpenCode", "warn", "not installed");
|
|
71
71
|
const installed = await promptInstallDependency("OpenCode", openCodeStatus.installCommands, interactive);
|
|
72
72
|
if (installed) {
|
|
73
|
+
// Re-check after installation so plugin registration works
|
|
74
|
+
openCodeStatus = checkOpenCode();
|
|
73
75
|
printProgress("OpenCode", "ok", "installed");
|
|
74
76
|
}
|
|
75
77
|
else {
|
|
76
78
|
printWarning("OpenCode is required for the plugin to work.");
|
|
77
|
-
printInfo("You can still use the standalone CLI (byoao
|
|
79
|
+
printInfo("You can still use the standalone CLI (byoao init, byoao status).");
|
|
78
80
|
printInfo("To install OpenCode later, run one of:");
|
|
79
81
|
for (const cmd of openCodeStatus.installCommands) {
|
|
80
82
|
printInfo(` ${cmd.label}: ${cmd.command}`);
|
|
@@ -205,7 +207,7 @@ export async function install(options, interactive = true) {
|
|
|
205
207
|
desc: "# Install & launch OpenCode",
|
|
206
208
|
});
|
|
207
209
|
}
|
|
208
|
-
gettingStartedItems.push({ cmd: "byoao
|
|
210
|
+
gettingStartedItems.push({ cmd: "byoao init", desc: "# Create a knowledge base" }, { cmd: "byoao status <path>", desc: "# Check vault health" });
|
|
209
211
|
printGettingStarted(gettingStartedItems);
|
|
210
212
|
printInfo("Recommended: Obsidian Web Clipper → https://obsidian.md/clipper");
|
|
211
213
|
printFooter("https://github.com/JayJiangCT/BYOAO");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/cli/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAAS,GACV,MAAM,SAAS,CAAC;AAEjB,MAAM,qBAAqB,GAAG;IAC5B,gBAAgB;IAChB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gCAAgC,CAAC;IACzD,cAAc;IACd,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,iCAAiC,CAAC;CAC3D,CAAC;AAEF,SAAS,kBAAkB;IACzB,KAAK,MAAM,CAAC,IAAI,qBAAqB,EAAE,CAAC;QACtC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,2FAA2F;AAC3F,KAAK,UAAU,uBAAuB,CACpC,IAAY,EACZ,eAAqD,EACrD,WAAoB;IAEpB,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAEvD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAC9C;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,GAAG,IAAI,sDAAsD;gBACtE,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa;YAAE,OAAO,KAAK,CAAC;QAEjC,6DAA6D;QAC7D,IAAI,OAAe,CAAC;QACpB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBACvC;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,iBAAiB;oBAC1B,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACnC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE;wBAChC,KAAK,EAAE,CAAC,CAAC,OAAO;qBACjB,CAAC,CAAC;iBACJ;aACF,CAAC,CAAC;YACH,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,IAAI,CAAC,CAAC;QACvC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAuB,EACvB,WAAW,GAAG,IAAI;IAElB,iEAAiE;IACjE,kBAAkB,CAAC,0BAA0B,CAAC,CAAC;IAE/C,
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/cli/installer.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/add-member.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { tool } from "@opencode-ai/plugin/tool";
|
|
2
2
|
import { addMember } from "../vault/member.js";
|
|
3
3
|
export const byoao_add_member = tool({
|
|
4
|
-
description: "Add a new team member note to an existing vault. Creates a person note in
|
|
4
|
+
description: "Add a new team member note to an existing vault. Creates a person note in People/ and updates the team index and AGENT.md wikilinks.",
|
|
5
5
|
args: {
|
|
6
6
|
vaultPath: tool.schema.string().describe("Path to the Obsidian vault"),
|
|
7
7
|
name: tool.schema.string().describe("Person's full name"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-member.js","sourceRoot":"","sources":["../../src/tools/add-member.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;IACnC,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"add-member.js","sourceRoot":"","sources":["../../src/tools/add-member.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;IACnC,WAAW,EACT,sIAAsI;IACxI,IAAI,EAAE;QACJ,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACtE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACzD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACrE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;KAC5D;IACD,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;SACtB,CAAC,CAAC;QAEH,OAAO,mBAAmB,IAAI,CAAC,IAAI,aAAa,MAAM,CAAC,QAAQ,0BAA0B,MAAM,CAAC,cAAc,EAAE,CAAC;IACnH,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { tool } from "@opencode-ai/plugin/tool";
|
|
2
2
|
import { addProject } from "../vault/project.js";
|
|
3
3
|
export const byoao_add_project = tool({
|
|
4
|
-
description: "Add a new project note to an existing vault. Creates a project note in
|
|
4
|
+
description: "Add a new project note to an existing vault. Creates a project note in Projects/ and updates the team index and AGENT.md wikilinks.",
|
|
5
5
|
args: {
|
|
6
6
|
vaultPath: tool.schema.string().describe("Path to the Obsidian vault"),
|
|
7
7
|
name: tool.schema.string().describe("Project name"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-project.js","sourceRoot":"","sources":["../../src/tools/add-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;IACpC,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"add-project.js","sourceRoot":"","sources":["../../src/tools/add-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;IACpC,WAAW,EACT,qIAAqI;IACvI,IAAI,EAAE;QACJ,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACtE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACnD,WAAW,EAAE,IAAI,CAAC,MAAM;aACrB,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,8BAA8B,CAAC;QAC3C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;KAC5D;IACD,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;SACtB,CAAC,CAAC;QAEH,OAAO,oBAAoB,IAAI,CAAC,IAAI,aAAa,MAAM,CAAC,QAAQ,0BAA0B,MAAM,CAAC,cAAc,EAAE,CAAC;IACpH,CAAC;CACF,CAAC,CAAC"}
|
package/dist/vault/glossary.js
CHANGED
|
@@ -2,7 +2,7 @@ import fs from "fs-extra";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
export async function addGlossaryTerm(input) {
|
|
4
4
|
const { vaultPath, term, definition } = input;
|
|
5
|
-
const glossaryPath = path.join(vaultPath, "
|
|
5
|
+
const glossaryPath = path.join(vaultPath, "Knowledge/Glossary.md");
|
|
6
6
|
if (!(await fs.pathExists(glossaryPath))) {
|
|
7
7
|
throw new Error(`Glossary not found at: ${glossaryPath}`);
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glossary.js","sourceRoot":"","sources":["../../src/vault/glossary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAA2B;IAE3B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAE9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"glossary.js","sourceRoot":"","sources":["../../src/vault/glossary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAA2B;IAE3B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAE9C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;IACnE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEvD,iDAAiD;IACjD,MAAM,MAAM,GAAG,OAAO,IAAI,QAAQ,UAAU,IAAI,CAAC;IAEjD,yEAAyE;IACzE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAC9B,sGAAsG,CACvG,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC;QACpE,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE;YACrC,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE;YACrC,CAAC,CAAC,MAAM,CAAC;QACX,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,SAAS,EACT,GAAG,WAAW,GAAG,WAAW,KAAK,QAAQ,EAAE,CAC5C,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,wDAAwD;QACxD,IAAI,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;YACjD,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,0BAA0B,EAC1B,GAAG,MAAM,8BAA8B,CACxC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,KAAK,MAAM,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAE1C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC3C,CAAC"}
|
package/dist/vault/member.js
CHANGED
|
@@ -4,7 +4,7 @@ export async function addMember(input) {
|
|
|
4
4
|
const { vaultPath, name, role, team } = input;
|
|
5
5
|
let wikilinksAdded = 0;
|
|
6
6
|
// 1. Create person note
|
|
7
|
-
const personPath = path.join(vaultPath, `
|
|
7
|
+
const personPath = path.join(vaultPath, `People/${name}.md`);
|
|
8
8
|
if (await fs.pathExists(personPath)) {
|
|
9
9
|
throw new Error(`Person note already exists: ${personPath}`);
|
|
10
10
|
}
|
|
@@ -24,10 +24,10 @@ tags: [person]
|
|
|
24
24
|
`;
|
|
25
25
|
await fs.writeFile(personPath, content);
|
|
26
26
|
// 2. Update team index if it exists
|
|
27
|
-
const teamFiles = await fs.readdir(path.join(vaultPath, "
|
|
27
|
+
const teamFiles = await fs.readdir(path.join(vaultPath, "People"));
|
|
28
28
|
const teamIndexFile = teamFiles.find((f) => f.endsWith("Team.md"));
|
|
29
29
|
if (teamIndexFile) {
|
|
30
|
-
const teamIndexPath = path.join(vaultPath, "
|
|
30
|
+
const teamIndexPath = path.join(vaultPath, "People", teamIndexFile);
|
|
31
31
|
let teamContent = await fs.readFile(teamIndexPath, "utf-8");
|
|
32
32
|
// Add to members table
|
|
33
33
|
const tableRow = `| [[${name}]] | ${role} |`;
|
package/dist/vault/member.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member.js","sourceRoot":"","sources":["../../src/vault/member.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAqB;IACnD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAC9C,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,wBAAwB;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"member.js","sourceRoot":"","sources":["../../src/vault/member.ts"],"names":[],"mappings":"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"}
|
package/dist/vault/project.js
CHANGED
|
@@ -5,7 +5,7 @@ export async function addProject(input) {
|
|
|
5
5
|
const { vaultPath, name, description, team } = input;
|
|
6
6
|
let wikilinksAdded = 0;
|
|
7
7
|
// 1. Create project note
|
|
8
|
-
const projectPath = path.join(vaultPath, `
|
|
8
|
+
const projectPath = path.join(vaultPath, `Projects/${name}.md`);
|
|
9
9
|
if (await fs.pathExists(projectPath)) {
|
|
10
10
|
throw new Error(`Project note already exists: ${projectPath}`);
|
|
11
11
|
}
|
|
@@ -27,7 +27,7 @@ ${description}
|
|
|
27
27
|
`;
|
|
28
28
|
await fs.writeFile(projectPath, content);
|
|
29
29
|
// 2. Update team index if it exists
|
|
30
|
-
const peoplePath = path.join(vaultPath, "
|
|
30
|
+
const peoplePath = path.join(vaultPath, "People");
|
|
31
31
|
if (await fs.pathExists(peoplePath)) {
|
|
32
32
|
const teamFiles = await fs.readdir(peoplePath);
|
|
33
33
|
const teamIndexFile = teamFiles.find((f) => f.endsWith("Team.md"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/vault/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAQtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAsB;IACrD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACrD,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,yBAAyB;IACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/vault/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAQtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAsB;IACrD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACrD,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,yBAAyB;IACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,IAAI,KAAK,CAAC,CAAC;IAChE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,OAAO,GAAG;UACR,IAAI;;;QAGN,KAAK,EAAE;SACN,IAAI;;;;;;;IAOT,IAAI;;EAEN,WAAW;CACZ,CAAC;IACA,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEzC,oCAAoC;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAEnE,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAC3D,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAE5D,MAAM,WAAW,GAAG,OAAO,IAAI,QAAQ,WAAW,EAAE,CAAC;YACrD,IAAI,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBACpD,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;YAC5E,CAAC;iBAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACtD,iCAAiC;gBACjC,WAAW,GAAG,WAAW,CAAC,OAAO,CAC/B,4CAA4C,EAC5C,SAAS,WAAW,IAAI,CACzB,CAAC;YACJ,CAAC;YACD,cAAc,EAAE,CAAC;YACjB,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,KAAK,MAAM,SAAS,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAEzD,MAAM,WAAW,GAAG,OAAO,IAAI,QAAQ,WAAW,EAAE,CAAC;YACrD,IAAI,YAAY,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;gBACpD,YAAY,GAAG,YAAY,CAAC,OAAO,CACjC,gCAAgC,EAChC,WAAW,CACZ,CAAC;gBACF,cAAc,EAAE,CAAC;YACnB,CAAC;iBAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACvD,YAAY,GAAG,YAAY,CAAC,OAAO,CACjC,kDAAkD,EAClD,SAAS,WAAW,IAAI,CACzB,CAAC;gBACF,cAAc,EAAE,CAAC;YACnB,CAAC;YAED,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AACnD,CAAC"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@ tags: [glossary, domain, reference]
|
|
|
11
11
|
Centralized quick-reference for all domain terms. This glossary uses a **two-tier terminology system**:
|
|
12
12
|
|
|
13
13
|
- **Tier 1 (this file)**: Simple terms defined in one or two sentences — kept here in table rows.
|
|
14
|
-
- **Tier 2 (concept notes)**: Complex terms that need detailed explanation, diagrams, or have multiple relationships — get their own note in `
|
|
14
|
+
- **Tier 2 (concept notes)**: Complex terms that need detailed explanation, diagrams, or have multiple relationships — get their own note in `Knowledge/concepts/` and are linked from here.
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -27,7 +27,7 @@ Centralized quick-reference for all domain terms. This glossary uses a **two-tie
|
|
|
27
27
|
|
|
28
28
|
1. **Start here**: Add a row to the appropriate table above with a one-line definition.
|
|
29
29
|
2. **Graduate if needed**: If a term grows beyond 2 sentences, has 3+ relationships to other terms, or has important gotchas, create a concept note:
|
|
30
|
-
- Create `
|
|
30
|
+
- Create `Knowledge/concepts/Term Name.md`
|
|
31
31
|
- Replace the definition here with: `Brief intro — see [[Term Name]] for full details.`
|
|
32
32
|
3. **Link generously**: Use `[[wikilinks]]` in definitions to connect related terms.
|
|
33
33
|
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
}
|
|
57
57
|
],
|
|
58
58
|
"noteNameFormat": "{{date}} — {{title|safe_name|truncate:80}}",
|
|
59
|
-
"path": "
|
|
59
|
+
"path": "Inbox",
|
|
60
60
|
"triggers": ["atlassian.net/wiki", "confluence"],
|
|
61
61
|
"context": "{{content}}",
|
|
62
62
|
"body": "## Summary\n\n{{\"Summarize the key points of this Confluence page in 3-5 bullet points. Focus on decisions, action items, and important context. Be concise.\"|prompt}}\n\n---\n\n## Original Content\n\n{{content}}"
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
}
|
|
47
47
|
],
|
|
48
48
|
"noteNameFormat": "{{date}} — {{title|safe_name|truncate:80}}",
|
|
49
|
-
"path": "
|
|
49
|
+
"path": "Inbox",
|
|
50
50
|
"triggers": [],
|
|
51
51
|
"context": "{{content|truncate:3000}}",
|
|
52
52
|
"body": "## Summary\n\n{{\"Summarize this article in 3-5 bullet points. Focus on key insights, conclusions, and actionable takeaways. Be concise.\"|prompt}}\n\n## Key Quotes\n\n{% if highlights %}{% for highlight in highlights %}\n> {{highlight}}\n{% endfor %}{% else %}\n*No highlights selected. Use the Web Clipper highlighter to capture key passages.*\n{% endif %}\n\n---\n\n## Original Content\n\n{{content}}\n\n---\n\n*Clipped from [{{domain}}]({{url}}) on {{date}}*"
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
}
|
|
62
62
|
],
|
|
63
63
|
"noteNameFormat": "{{selector:#key-val|default:title|safe_name}} — {{selector:#summary-val|default:title|safe_name|truncate:60}}",
|
|
64
|
-
"path": "
|
|
64
|
+
"path": "Inbox",
|
|
65
65
|
"triggers": ["atlassian.net/browse", "atlassian.net/jira"],
|
|
66
66
|
"context": "{{content}}",
|
|
67
67
|
"body": "## Summary\n\n**Status**: {{selector:#status-val span}} | **Priority**: {{selector:#priority-val img|attr:alt}} | **Assignee**: {{selector:#assignee-val span}}\n\n## Description\n\n{{selector:#description-val|markdown}}\n\n{% if selector:.acceptance-criteria %}## Acceptance Criteria\n\n{{selector:.acceptance-criteria|markdown}}\n{% endif %}\n\n---\n\n*Clipped from [Jira]({{url}}) on {{date}}*"
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
}
|
|
47
47
|
],
|
|
48
48
|
"noteNameFormat": "{{date}} — Meeting — {{title|safe_name|truncate:60}}",
|
|
49
|
-
"path": "
|
|
49
|
+
"path": "Inbox",
|
|
50
50
|
"triggers": ["meet.google.com", "calendar.google.com", "outlook.office.com"],
|
|
51
51
|
"context": "{% if selection %}{{selection}}{% else %}{{content|truncate:3000}}{% endif %}",
|
|
52
52
|
"body": "## Meeting Info\n\n- **Date**: {{date}}\n- **Participants**: *fill in after meeting*\n- **Project**: *link to project*\n\n## Agenda / Context\n\n{% if selection %}{{selection|markdown}}{% else %}{{content|markdown}}{% endif %}\n\n## Notes\n\n- \n\n## Action Items\n\n- [ ] \n\n## Decisions\n\n- \n\n---\n\n*Clipped from [{{domain}}]({{url}}) on {{date}}*"
|
|
@@ -14,7 +14,7 @@ You are a document enrichment assistant. Your job is to improve Obsidian notes b
|
|
|
14
14
|
2. **Scan the vault** for context:
|
|
15
15
|
- Use `byoao_vault_status` to understand what's in the vault
|
|
16
16
|
- Read `AGENT.md` for project/people index
|
|
17
|
-
- Read `
|
|
17
|
+
- Read `Knowledge/Glossary.md` for domain terms
|
|
18
18
|
|
|
19
19
|
3. **Add/fix frontmatter**:
|
|
20
20
|
- Ensure `title`, `type`, `status`, `date`, `tags` are present
|
|
@@ -25,7 +25,7 @@ You are a document enrichment assistant. Your job is to improve Obsidian notes b
|
|
|
25
25
|
- Link mentions of people names to `[[Person Name]]`
|
|
26
26
|
- Link mentions of projects to `[[Project Name]]`
|
|
27
27
|
- Link domain terms to `[[Glossary]]` or concept notes
|
|
28
|
-
- Link related system references to `
|
|
28
|
+
- Link related system references to `Systems/` docs
|
|
29
29
|
|
|
30
30
|
5. **Preserve content**: Never delete or rewrite user content. Only add frontmatter and convert plain text mentions to wikilinks.
|
|
31
31
|
|
|
@@ -43,7 +43,7 @@ Previously generated explanations are cached in `Systems/`. Reuse them when the
|
|
|
43
43
|
|
|
44
44
|
1. **Parse the question** — identify the target system, service, or feature.
|
|
45
45
|
2. **Load baseline overview** — read `.opencode/context/repos/{service}.md`.
|
|
46
|
-
3. **Check Obsidian vault** — search `
|
|
46
|
+
3. **Check Obsidian vault** — search `Systems/` for existing knowledge docs.
|
|
47
47
|
4. **If more detail needed** — read the local repo clone using baseline as guide.
|
|
48
48
|
5. **Staleness detection** — flag discrepancies between baseline and actual code.
|
|
49
49
|
6. **Synthesize a clear explanation** with Mermaid diagrams where helpful.
|