@orderful/droid 0.35.0 → 0.35.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/.claude-plugin/marketplace.json +5 -5
- package/CHANGELOG.md +31 -0
- package/dist/bin/droid.js +22 -20
- package/dist/index.js +22 -20
- package/dist/lib/skills.d.ts.map +1 -1
- package/dist/tools/brain/.claude-plugin/plugin.json +1 -1
- package/dist/tools/brain/TOOL.yaml +1 -1
- package/dist/tools/brain/skills/brain-obsidian/SKILL.md +5 -4
- package/dist/tools/code-review/.claude-plugin/plugin.json +1 -1
- package/dist/tools/code-review/TOOL.yaml +1 -1
- package/dist/tools/code-review/skills/code-review/SKILL.md +7 -0
- package/dist/tools/codex/.claude-plugin/plugin.json +1 -1
- package/dist/tools/codex/TOOL.yaml +1 -1
- package/dist/tools/plan/.claude-plugin/plugin.json +1 -1
- package/dist/tools/plan/TOOL.yaml +1 -1
- package/dist/tools/plan/skills/plan/SKILL.md +7 -4
- package/dist/tools/plan/skills/plan/references/templates.md +1 -1
- package/dist/tools/plan/skills/plan/references/workflows.md +4 -4
- package/dist/tools/wrapup/.claude-plugin/plugin.json +1 -1
- package/dist/tools/wrapup/TOOL.yaml +1 -1
- package/dist/tools/wrapup/skills/wrapup/SKILL.md +10 -0
- package/package.json +1 -1
- package/src/lib/skills.ts +37 -20
- package/src/tools/brain/.claude-plugin/plugin.json +1 -1
- package/src/tools/brain/TOOL.yaml +1 -1
- package/src/tools/brain/skills/brain-obsidian/SKILL.md +5 -4
- package/src/tools/code-review/.claude-plugin/plugin.json +1 -1
- package/src/tools/code-review/TOOL.yaml +1 -1
- package/src/tools/code-review/skills/code-review/SKILL.md +7 -0
- package/src/tools/codex/.claude-plugin/plugin.json +1 -1
- package/src/tools/codex/TOOL.yaml +1 -1
- package/src/tools/plan/.claude-plugin/plugin.json +1 -1
- package/src/tools/plan/TOOL.yaml +1 -1
- package/src/tools/plan/skills/plan/SKILL.md +7 -4
- package/src/tools/plan/skills/plan/references/templates.md +1 -1
- package/src/tools/plan/skills/plan/references/workflows.md +4 -4
- package/src/tools/wrapup/.claude-plugin/plugin.json +1 -1
- package/src/tools/wrapup/TOOL.yaml +1 -1
- package/src/tools/wrapup/skills/wrapup/SKILL.md +10 -0
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
{
|
|
23
23
|
"name": "droid-brain",
|
|
24
24
|
"description": "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions.",
|
|
25
|
-
"version": "0.3.
|
|
25
|
+
"version": "0.3.6",
|
|
26
26
|
"source": {
|
|
27
27
|
"source": "github",
|
|
28
28
|
"repo": "orderful/droid",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
{
|
|
49
49
|
"name": "droid-code-review",
|
|
50
50
|
"description": "Comprehensive code review using specialized agents. Reviews PRs, staged changes, branches, or specific files with confidence scoring.",
|
|
51
|
-
"version": "0.2.
|
|
51
|
+
"version": "0.2.3",
|
|
52
52
|
"source": {
|
|
53
53
|
"source": "github",
|
|
54
54
|
"repo": "orderful/droid",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
{
|
|
62
62
|
"name": "droid-codex",
|
|
63
63
|
"description": "Shared organizational knowledge - PRDs, tech designs, domains, proposals, patterns, and explored topics. Use when loading project context, searching codex, capturing decisions, or creating new entries.",
|
|
64
|
-
"version": "0.2.
|
|
64
|
+
"version": "0.2.1",
|
|
65
65
|
"source": {
|
|
66
66
|
"source": "github",
|
|
67
67
|
"repo": "orderful/droid",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
{
|
|
88
88
|
"name": "droid-plan",
|
|
89
89
|
"description": "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'.",
|
|
90
|
-
"version": "0.1.
|
|
90
|
+
"version": "0.1.1",
|
|
91
91
|
"source": {
|
|
92
92
|
"source": "github",
|
|
93
93
|
"repo": "orderful/droid",
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
{
|
|
127
127
|
"name": "droid-wrapup",
|
|
128
128
|
"description": "Session wrap-up that captures decisions, learnings, and open items to persistent docs.",
|
|
129
|
-
"version": "0.1.
|
|
129
|
+
"version": "0.1.3",
|
|
130
130
|
"source": {
|
|
131
131
|
"source": "github",
|
|
132
132
|
"repo": "orderful/droid",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# @orderful/droid
|
|
2
2
|
|
|
3
|
+
## 0.35.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#213](https://github.com/Orderful/droid/pull/213) [`95a67d7`](https://github.com/Orderful/droid/commit/95a67d7f3bc57652113cf89bfb24de84d5d94490) Thanks [@frytyler](https://github.com/frytyler)! - Add explicit Configuration sections to all skills to prevent ambiguous config references. This ensures Claude sees the exact config commands (`droid config --get`) in the main SKILL.md file rather than having to look in references.
|
|
8
|
+
|
|
9
|
+
**Updated skills:**
|
|
10
|
+
- **wrapup** (v0.1.3): Added Configuration section explaining it uses configs from project, brain, and codex tools
|
|
11
|
+
- **code-review** (v0.2.3): Added Configuration section explaining optional brain integration
|
|
12
|
+
- **brain** (v0.3.6): Updated brain-obsidian to use explicit `droid config --get` commands instead of referencing override files directly
|
|
13
|
+
|
|
14
|
+
This follows the progressive disclosure principle: SKILL.md should have explicit config commands to prevent misinterpretation, with detailed procedures in references.
|
|
15
|
+
|
|
16
|
+
- [#213](https://github.com/Orderful/droid/pull/213) [`95a67d7`](https://github.com/Orderful/droid/commit/95a67d7f3bc57652113cf89bfb24de84d5d94490) Thanks [@frytyler](https://github.com/frytyler)! - Fix plan skill to use explicit config commands instead of deprecated syntax. The plan skill now clearly specifies `droid config --get tools.brain` and `droid config --get user_mention` instead of the ambiguous "Read config" instruction that was causing Claude to use the deprecated `droid config <tool>` command.
|
|
17
|
+
|
|
18
|
+
Also corrected `inbox_dir` to `inbox_folder` throughout plan skill docs to match the actual config schema.
|
|
19
|
+
|
|
20
|
+
## 0.35.1
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- [#211](https://github.com/Orderful/droid/pull/211) [`6df8a25`](https://github.com/Orderful/droid/commit/6df8a2511a1680bec65618d0f5e6e684811cd922) Thanks [@frytyler](https://github.com/frytyler)! - Bump codex tool version to force reinstall with fixed subdirectory copying
|
|
25
|
+
|
|
26
|
+
Users who installed codex 0.2.0 before the fix would be missing references/review/ subdirectory. Bumping to 0.2.1 ensures they get the complete installation with all reference files.
|
|
27
|
+
|
|
28
|
+
- [#211](https://github.com/Orderful/droid/pull/211) [`6df8a25`](https://github.com/Orderful/droid/commit/6df8a2511a1680bec65618d0f5e6e684811cd922) Thanks [@frytyler](https://github.com/frytyler)! - Fix skill installation not copying reference and script subdirectories
|
|
29
|
+
|
|
30
|
+
The installSkill() function was only copying top-level files from references/ and scripts/ directories, causing subdirectories to be skipped. This blocked the /codex review feature which relies on references/review/workflow.md.
|
|
31
|
+
|
|
32
|
+
Added a generic copyDirectoryRecursive() helper that preserves directory structure while maintaining the existing file type filters (.md for references, .ts/.js/.py for scripts). Applied to both references/ and scripts/ copying.
|
|
33
|
+
|
|
3
34
|
## 0.35.0
|
|
4
35
|
|
|
5
36
|
### Minor Changes
|
package/dist/bin/droid.js
CHANGED
|
@@ -1305,6 +1305,22 @@ function updateAllSkills() {
|
|
|
1305
1305
|
}
|
|
1306
1306
|
return result;
|
|
1307
1307
|
}
|
|
1308
|
+
function copyDirectoryRecursive(source, target, fileFilter) {
|
|
1309
|
+
if (!existsSync6(target)) {
|
|
1310
|
+
mkdirSync4(target, { recursive: true });
|
|
1311
|
+
}
|
|
1312
|
+
const entries = readdirSync5(source, { withFileTypes: true });
|
|
1313
|
+
for (const entry of entries) {
|
|
1314
|
+
const sourcePath = join7(source, entry.name);
|
|
1315
|
+
const targetPath = join7(target, entry.name);
|
|
1316
|
+
if (entry.isDirectory()) {
|
|
1317
|
+
copyDirectoryRecursive(sourcePath, targetPath, fileFilter);
|
|
1318
|
+
} else if (entry.isFile() && fileFilter(entry.name)) {
|
|
1319
|
+
const content = readFileSync6(sourcePath, "utf-8");
|
|
1320
|
+
writeFileSync4(targetPath, content);
|
|
1321
|
+
}
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1308
1324
|
function installSkill(skillName) {
|
|
1309
1325
|
const config = loadConfig();
|
|
1310
1326
|
const skillPath = findSkillPath(skillName);
|
|
@@ -1418,34 +1434,20 @@ function installSkill(skillName) {
|
|
|
1418
1434
|
const referencesSource = join7(skillDir, "references");
|
|
1419
1435
|
if (existsSync6(referencesSource)) {
|
|
1420
1436
|
const targetReferencesDir = join7(targetSkillDir, "references");
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
const referenceFiles = readdirSync5(referencesSource).filter(
|
|
1437
|
+
copyDirectoryRecursive(
|
|
1438
|
+
referencesSource,
|
|
1439
|
+
targetReferencesDir,
|
|
1425
1440
|
(f) => f.endsWith(".md")
|
|
1426
1441
|
);
|
|
1427
|
-
for (const file of referenceFiles) {
|
|
1428
|
-
const sourcePath = join7(referencesSource, file);
|
|
1429
|
-
const targetPath = join7(targetReferencesDir, file);
|
|
1430
|
-
const content = readFileSync6(sourcePath, "utf-8");
|
|
1431
|
-
writeFileSync4(targetPath, content);
|
|
1432
|
-
}
|
|
1433
1442
|
}
|
|
1434
1443
|
const scriptsSource = join7(skillDir, "scripts");
|
|
1435
1444
|
if (existsSync6(scriptsSource)) {
|
|
1436
1445
|
const targetScriptsDir = join7(targetSkillDir, "scripts");
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
const scriptFiles = readdirSync5(scriptsSource).filter(
|
|
1446
|
+
copyDirectoryRecursive(
|
|
1447
|
+
scriptsSource,
|
|
1448
|
+
targetScriptsDir,
|
|
1441
1449
|
(f) => f.endsWith(".ts") || f.endsWith(".js") || f.endsWith(".py")
|
|
1442
1450
|
);
|
|
1443
|
-
for (const file of scriptFiles) {
|
|
1444
|
-
const sourcePath = join7(scriptsSource, file);
|
|
1445
|
-
const targetPath = join7(targetScriptsDir, file);
|
|
1446
|
-
const content = readFileSync6(sourcePath, "utf-8");
|
|
1447
|
-
writeFileSync4(targetPath, content);
|
|
1448
|
-
}
|
|
1449
1451
|
}
|
|
1450
1452
|
const activePlatforms = getActivePlatforms(config);
|
|
1451
1453
|
const targetPlatforms = activePlatforms.length > 0 ? activePlatforms : [config.platform];
|
package/dist/index.js
CHANGED
|
@@ -1262,6 +1262,22 @@ function updateAllSkills() {
|
|
|
1262
1262
|
}
|
|
1263
1263
|
return result;
|
|
1264
1264
|
}
|
|
1265
|
+
function copyDirectoryRecursive(source, target, fileFilter) {
|
|
1266
|
+
if (!existsSync6(target)) {
|
|
1267
|
+
mkdirSync4(target, { recursive: true });
|
|
1268
|
+
}
|
|
1269
|
+
const entries = readdirSync5(source, { withFileTypes: true });
|
|
1270
|
+
for (const entry of entries) {
|
|
1271
|
+
const sourcePath = join7(source, entry.name);
|
|
1272
|
+
const targetPath = join7(target, entry.name);
|
|
1273
|
+
if (entry.isDirectory()) {
|
|
1274
|
+
copyDirectoryRecursive(sourcePath, targetPath, fileFilter);
|
|
1275
|
+
} else if (entry.isFile() && fileFilter(entry.name)) {
|
|
1276
|
+
const content = readFileSync6(sourcePath, "utf-8");
|
|
1277
|
+
writeFileSync4(targetPath, content);
|
|
1278
|
+
}
|
|
1279
|
+
}
|
|
1280
|
+
}
|
|
1265
1281
|
function installSkill(skillName) {
|
|
1266
1282
|
const config = loadConfig();
|
|
1267
1283
|
const skillPath = findSkillPath(skillName);
|
|
@@ -1375,34 +1391,20 @@ function installSkill(skillName) {
|
|
|
1375
1391
|
const referencesSource = join7(skillDir, "references");
|
|
1376
1392
|
if (existsSync6(referencesSource)) {
|
|
1377
1393
|
const targetReferencesDir = join7(targetSkillDir, "references");
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
const referenceFiles = readdirSync5(referencesSource).filter(
|
|
1394
|
+
copyDirectoryRecursive(
|
|
1395
|
+
referencesSource,
|
|
1396
|
+
targetReferencesDir,
|
|
1382
1397
|
(f) => f.endsWith(".md")
|
|
1383
1398
|
);
|
|
1384
|
-
for (const file of referenceFiles) {
|
|
1385
|
-
const sourcePath = join7(referencesSource, file);
|
|
1386
|
-
const targetPath = join7(targetReferencesDir, file);
|
|
1387
|
-
const content = readFileSync6(sourcePath, "utf-8");
|
|
1388
|
-
writeFileSync4(targetPath, content);
|
|
1389
|
-
}
|
|
1390
1399
|
}
|
|
1391
1400
|
const scriptsSource = join7(skillDir, "scripts");
|
|
1392
1401
|
if (existsSync6(scriptsSource)) {
|
|
1393
1402
|
const targetScriptsDir = join7(targetSkillDir, "scripts");
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
const scriptFiles = readdirSync5(scriptsSource).filter(
|
|
1403
|
+
copyDirectoryRecursive(
|
|
1404
|
+
scriptsSource,
|
|
1405
|
+
targetScriptsDir,
|
|
1398
1406
|
(f) => f.endsWith(".ts") || f.endsWith(".js") || f.endsWith(".py")
|
|
1399
1407
|
);
|
|
1400
|
-
for (const file of scriptFiles) {
|
|
1401
|
-
const sourcePath = join7(scriptsSource, file);
|
|
1402
|
-
const targetPath = join7(targetScriptsDir, file);
|
|
1403
|
-
const content = readFileSync6(sourcePath, "utf-8");
|
|
1404
|
-
writeFileSync4(targetPath, content);
|
|
1405
|
-
}
|
|
1406
1408
|
}
|
|
1407
1409
|
const activePlatforms = getActivePlatforms(config);
|
|
1408
1410
|
const targetPlatforms = activePlatforms.length > 0 ? activePlatforms : [config.platform];
|
package/dist/lib/skills.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EAGpB,MAAM,SAAS,CAAC;AAuBjB;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,MAAM,EAAE,GACxB,IAAI,CAyCN;AAwBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA2BxE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAwB9C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,EAAE,CA4BlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAI3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAI1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAkBA;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,KAAK,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAqBD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CA+BA;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI;IACjC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAiCA;
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "droid-brain",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Orderful",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: brain
|
|
2
2
|
description: "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions."
|
|
3
|
-
version: 0.3.
|
|
3
|
+
version: 0.3.6
|
|
4
4
|
status: beta
|
|
5
5
|
|
|
6
6
|
includes:
|
|
@@ -15,13 +15,14 @@ Extends the brain skill with Obsidian-specific features. **This skill overrides
|
|
|
15
15
|
|
|
16
16
|
## Configuration
|
|
17
17
|
|
|
18
|
-
**Required:**
|
|
18
|
+
**Required:** Run `droid config --get tools.brain` and ensure `brain_dir` is set to your Obsidian vault path.
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
If not configured, set it with:
|
|
21
|
+
```bash
|
|
22
|
+
droid config --set tools.brain.brain_dir=~/path/to/your/vault
|
|
22
23
|
```
|
|
23
24
|
|
|
24
|
-
**Optional:** Configure folders
|
|
25
|
+
**Optional:** Configure Obsidian-specific folders with `droid config --get tools.brain-obsidian`:
|
|
25
26
|
|
|
26
27
|
| Setting | Default | Description |
|
|
27
28
|
| ------------------ | ------------- | ------------------------------- |
|
|
@@ -9,6 +9,13 @@ allowed-tools: [Read, Grep, Glob, Bash, Task]
|
|
|
9
9
|
|
|
10
10
|
Run comprehensive code reviews using specialized agents, each focused on a specific concern.
|
|
11
11
|
|
|
12
|
+
## Configuration
|
|
13
|
+
|
|
14
|
+
Code-review has no configuration of its own. Optional integration with other tools:
|
|
15
|
+
|
|
16
|
+
- **Brain skill** (optional): If installed, offers to save review results to a `/brain review` doc
|
|
17
|
+
- Check with: `droid config --get tools.brain` to see if `brain_dir` is configured
|
|
18
|
+
|
|
12
19
|
## How It Works
|
|
13
20
|
|
|
14
21
|
The `/code-review` command orchestrates multiple specialized agents in parallel:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "droid-codex",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Shared organizational knowledge - PRDs, tech designs, domains, proposals, patterns, and explored topics. Use when loading project context, searching codex, capturing decisions, or creating new entries.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Orderful",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: codex
|
|
2
2
|
description: "Shared organizational knowledge - PRDs, tech designs, domains, proposals, patterns, and explored topics. Use when loading project context, searching codex, capturing decisions, or creating new entries."
|
|
3
|
-
version: 0.2.
|
|
3
|
+
version: 0.2.1
|
|
4
4
|
status: beta
|
|
5
5
|
|
|
6
6
|
includes:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "droid-plan",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Orderful",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: plan
|
|
2
2
|
description: "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'."
|
|
3
|
-
version: 0.1.
|
|
3
|
+
version: 0.1.1
|
|
4
4
|
status: alpha
|
|
5
5
|
|
|
6
6
|
includes:
|
|
@@ -24,8 +24,8 @@ Task-scoped planning for PRs, tickets, and small features. Lighter than `/tech-d
|
|
|
24
24
|
## Configuration
|
|
25
25
|
|
|
26
26
|
Uses config from dependencies:
|
|
27
|
-
- `droid config --get tools.brain` → `brain_dir`, `
|
|
28
|
-
- `droid config --get
|
|
27
|
+
- `droid config --get tools.brain` → `brain_dir`, `inbox_folder`
|
|
28
|
+
- `droid config --get user_mention` → `user_mention` (global config)
|
|
29
29
|
|
|
30
30
|
## Commands
|
|
31
31
|
|
|
@@ -39,10 +39,13 @@ Uses config from dependencies:
|
|
|
39
39
|
|
|
40
40
|
## `/plan new {topic}`
|
|
41
41
|
|
|
42
|
-
1. Read config
|
|
42
|
+
1. **Read config first:**
|
|
43
|
+
- Run `droid config --get tools.brain` for `brain_dir` and `inbox_folder`
|
|
44
|
+
- Run `droid config --get user_mention` for user's mention tag
|
|
45
|
+
- If `brain_dir` not configured, ask user where to store plans
|
|
43
46
|
2. Determine location:
|
|
44
47
|
- If `/project` active → offer: `{projects_dir}/{project}/plans/`
|
|
45
|
-
- Otherwise → `{brain_dir}/{
|
|
48
|
+
- Otherwise → `{brain_dir}/{inbox_folder}/plans/`
|
|
46
49
|
3. Offer context loading (`/project`, `/codex` search)
|
|
47
50
|
4. Ask clarifying questions (goal, scope, constraints)
|
|
48
51
|
5. Generate plan from template (see `references/templates.md`)
|
|
@@ -173,4 +173,4 @@ Plans are named `plan-{topic}.md` with kebab-case topic:
|
|
|
173
173
|
|
|
174
174
|
## Location
|
|
175
175
|
|
|
176
|
-
Plans live in `{brain_dir}/{
|
|
176
|
+
Plans live in `{brain_dir}/{inbox_folder}/plans/` or `{projects_dir}/{project}/plans/` if project-nested.
|
|
@@ -7,8 +7,8 @@ Detailed command flows for the plan skill.
|
|
|
7
7
|
### Step 1: Read Configuration
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
droid config --get tools.brain # → brain_dir,
|
|
11
|
-
droid config --get
|
|
10
|
+
droid config --get tools.brain # → brain_dir, inbox_folder
|
|
11
|
+
droid config --get user_mention # → user_mention (global config)
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
If brain not configured, ask user for `brain_dir` location.
|
|
@@ -21,12 +21,12 @@ Check if `/project` is active (check `{projects_dir}/{project}/PROJECT.md` exist
|
|
|
21
21
|
```
|
|
22
22
|
Offer choice via AskUserQuestion:
|
|
23
23
|
- "Project folder" → {projects_dir}/{project}/plans/plan-{topic}.md
|
|
24
|
-
- "Inbox" → {brain_dir}/{
|
|
24
|
+
- "Inbox" → {brain_dir}/{inbox_folder}/plans/plan-{topic}.md
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**If no project:**
|
|
28
28
|
```
|
|
29
|
-
Use: {brain_dir}/{
|
|
29
|
+
Use: {brain_dir}/{inbox_folder}/plans/plan-{topic}.md
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
### Step 3: Check for Existing Plan
|
|
@@ -8,6 +8,16 @@ allowed-tools: [Read, Edit, Write, Glob, Grep, Bash, Task]
|
|
|
8
8
|
|
|
9
9
|
Session wrap-up that captures decisions, learnings, and open items before closing.
|
|
10
10
|
|
|
11
|
+
## Configuration
|
|
12
|
+
|
|
13
|
+
Wrapup has no configuration of its own. It reads config from other installed tools:
|
|
14
|
+
|
|
15
|
+
- **Project skill** (optional): `droid config --get tools.project` → `projects_dir` to update project files
|
|
16
|
+
- **Brain skill** (optional): `droid config --get tools.brain` → `brain_dir` to update brain docs
|
|
17
|
+
- **Codex skill** (optional): `droid config --get tools.codex` → `codex_repo` to suggest codex entries
|
|
18
|
+
|
|
19
|
+
If these tools aren't configured, wrapup skips those artifacts and focuses on git state and conversation summary.
|
|
20
|
+
|
|
11
21
|
## Context Lifeboat Pattern
|
|
12
22
|
|
|
13
23
|
This skill runs at the END of sessions when context pressure is highest.
|
package/package.json
CHANGED
package/src/lib/skills.ts
CHANGED
|
@@ -393,6 +393,39 @@ export function updateAllSkills(): {
|
|
|
393
393
|
return result;
|
|
394
394
|
}
|
|
395
395
|
|
|
396
|
+
/**
|
|
397
|
+
* Recursively copy a directory and all its contents
|
|
398
|
+
* @param source Source directory path
|
|
399
|
+
* @param target Target directory path
|
|
400
|
+
* @param fileFilter Function that returns true if the file should be copied
|
|
401
|
+
*/
|
|
402
|
+
function copyDirectoryRecursive(
|
|
403
|
+
source: string,
|
|
404
|
+
target: string,
|
|
405
|
+
fileFilter: (filename: string) => boolean,
|
|
406
|
+
): void {
|
|
407
|
+
if (!existsSync(target)) {
|
|
408
|
+
mkdirSync(target, { recursive: true });
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
const entries = readdirSync(source, { withFileTypes: true });
|
|
412
|
+
|
|
413
|
+
for (const entry of entries) {
|
|
414
|
+
const sourcePath = join(source, entry.name);
|
|
415
|
+
const targetPath = join(target, entry.name);
|
|
416
|
+
|
|
417
|
+
if (entry.isDirectory()) {
|
|
418
|
+
// Recursively copy subdirectory
|
|
419
|
+
copyDirectoryRecursive(sourcePath, targetPath, fileFilter);
|
|
420
|
+
} else if (entry.isFile() && fileFilter(entry.name)) {
|
|
421
|
+
// Copy file if it passes the filter
|
|
422
|
+
const content = readFileSync(sourcePath, 'utf-8');
|
|
423
|
+
writeFileSync(targetPath, content);
|
|
424
|
+
}
|
|
425
|
+
// Ignore files that don't pass the filter
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
|
|
396
429
|
/**
|
|
397
430
|
* Install a skill
|
|
398
431
|
*/
|
|
@@ -553,36 +586,20 @@ export function installSkill(skillName: string): {
|
|
|
553
586
|
const referencesSource = join(skillDir, 'references');
|
|
554
587
|
if (existsSync(referencesSource)) {
|
|
555
588
|
const targetReferencesDir = join(targetSkillDir, 'references');
|
|
556
|
-
|
|
557
|
-
mkdirSync(targetReferencesDir, { recursive: true });
|
|
558
|
-
}
|
|
559
|
-
const referenceFiles = readdirSync(referencesSource).filter((f) =>
|
|
589
|
+
copyDirectoryRecursive(referencesSource, targetReferencesDir, (f) =>
|
|
560
590
|
f.endsWith('.md'),
|
|
561
591
|
);
|
|
562
|
-
for (const file of referenceFiles) {
|
|
563
|
-
const sourcePath = join(referencesSource, file);
|
|
564
|
-
const targetPath = join(targetReferencesDir, file);
|
|
565
|
-
const content = readFileSync(sourcePath, 'utf-8');
|
|
566
|
-
writeFileSync(targetPath, content);
|
|
567
|
-
}
|
|
568
592
|
}
|
|
569
593
|
|
|
570
594
|
// Copy scripts if present (deterministic CLI scripts for the skill)
|
|
571
595
|
const scriptsSource = join(skillDir, 'scripts');
|
|
572
596
|
if (existsSync(scriptsSource)) {
|
|
573
597
|
const targetScriptsDir = join(targetSkillDir, 'scripts');
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
const scriptFiles = readdirSync(scriptsSource).filter(
|
|
598
|
+
copyDirectoryRecursive(
|
|
599
|
+
scriptsSource,
|
|
600
|
+
targetScriptsDir,
|
|
578
601
|
(f) => f.endsWith('.ts') || f.endsWith('.js') || f.endsWith('.py'),
|
|
579
602
|
);
|
|
580
|
-
for (const file of scriptFiles) {
|
|
581
|
-
const sourcePath = join(scriptsSource, file);
|
|
582
|
-
const targetPath = join(targetScriptsDir, file);
|
|
583
|
-
const content = readFileSync(sourcePath, 'utf-8');
|
|
584
|
-
writeFileSync(targetPath, content);
|
|
585
|
-
}
|
|
586
603
|
}
|
|
587
604
|
|
|
588
605
|
// Get active platforms for multi-platform install
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "droid-brain",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Orderful",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: brain
|
|
2
2
|
description: "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions."
|
|
3
|
-
version: 0.3.
|
|
3
|
+
version: 0.3.6
|
|
4
4
|
status: beta
|
|
5
5
|
|
|
6
6
|
includes:
|
|
@@ -15,13 +15,14 @@ Extends the brain skill with Obsidian-specific features. **This skill overrides
|
|
|
15
15
|
|
|
16
16
|
## Configuration
|
|
17
17
|
|
|
18
|
-
**Required:**
|
|
18
|
+
**Required:** Run `droid config --get tools.brain` and ensure `brain_dir` is set to your Obsidian vault path.
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
If not configured, set it with:
|
|
21
|
+
```bash
|
|
22
|
+
droid config --set tools.brain.brain_dir=~/path/to/your/vault
|
|
22
23
|
```
|
|
23
24
|
|
|
24
|
-
**Optional:** Configure folders
|
|
25
|
+
**Optional:** Configure Obsidian-specific folders with `droid config --get tools.brain-obsidian`:
|
|
25
26
|
|
|
26
27
|
| Setting | Default | Description |
|
|
27
28
|
| ------------------ | ------------- | ------------------------------- |
|
|
@@ -9,6 +9,13 @@ allowed-tools: [Read, Grep, Glob, Bash, Task]
|
|
|
9
9
|
|
|
10
10
|
Run comprehensive code reviews using specialized agents, each focused on a specific concern.
|
|
11
11
|
|
|
12
|
+
## Configuration
|
|
13
|
+
|
|
14
|
+
Code-review has no configuration of its own. Optional integration with other tools:
|
|
15
|
+
|
|
16
|
+
- **Brain skill** (optional): If installed, offers to save review results to a `/brain review` doc
|
|
17
|
+
- Check with: `droid config --get tools.brain` to see if `brain_dir` is configured
|
|
18
|
+
|
|
12
19
|
## How It Works
|
|
13
20
|
|
|
14
21
|
The `/code-review` command orchestrates multiple specialized agents in parallel:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "droid-codex",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Shared organizational knowledge - PRDs, tech designs, domains, proposals, patterns, and explored topics. Use when loading project context, searching codex, capturing decisions, or creating new entries.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Orderful",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: codex
|
|
2
2
|
description: "Shared organizational knowledge - PRDs, tech designs, domains, proposals, patterns, and explored topics. Use when loading project context, searching codex, capturing decisions, or creating new entries."
|
|
3
|
-
version: 0.2.
|
|
3
|
+
version: 0.2.1
|
|
4
4
|
status: beta
|
|
5
5
|
|
|
6
6
|
includes:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "droid-plan",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Orderful",
|
package/src/tools/plan/TOOL.yaml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: plan
|
|
2
2
|
description: "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'."
|
|
3
|
-
version: 0.1.
|
|
3
|
+
version: 0.1.1
|
|
4
4
|
status: alpha
|
|
5
5
|
|
|
6
6
|
includes:
|
|
@@ -24,8 +24,8 @@ Task-scoped planning for PRs, tickets, and small features. Lighter than `/tech-d
|
|
|
24
24
|
## Configuration
|
|
25
25
|
|
|
26
26
|
Uses config from dependencies:
|
|
27
|
-
- `droid config --get tools.brain` → `brain_dir`, `
|
|
28
|
-
- `droid config --get
|
|
27
|
+
- `droid config --get tools.brain` → `brain_dir`, `inbox_folder`
|
|
28
|
+
- `droid config --get user_mention` → `user_mention` (global config)
|
|
29
29
|
|
|
30
30
|
## Commands
|
|
31
31
|
|
|
@@ -39,10 +39,13 @@ Uses config from dependencies:
|
|
|
39
39
|
|
|
40
40
|
## `/plan new {topic}`
|
|
41
41
|
|
|
42
|
-
1. Read config
|
|
42
|
+
1. **Read config first:**
|
|
43
|
+
- Run `droid config --get tools.brain` for `brain_dir` and `inbox_folder`
|
|
44
|
+
- Run `droid config --get user_mention` for user's mention tag
|
|
45
|
+
- If `brain_dir` not configured, ask user where to store plans
|
|
43
46
|
2. Determine location:
|
|
44
47
|
- If `/project` active → offer: `{projects_dir}/{project}/plans/`
|
|
45
|
-
- Otherwise → `{brain_dir}/{
|
|
48
|
+
- Otherwise → `{brain_dir}/{inbox_folder}/plans/`
|
|
46
49
|
3. Offer context loading (`/project`, `/codex` search)
|
|
47
50
|
4. Ask clarifying questions (goal, scope, constraints)
|
|
48
51
|
5. Generate plan from template (see `references/templates.md`)
|
|
@@ -173,4 +173,4 @@ Plans are named `plan-{topic}.md` with kebab-case topic:
|
|
|
173
173
|
|
|
174
174
|
## Location
|
|
175
175
|
|
|
176
|
-
Plans live in `{brain_dir}/{
|
|
176
|
+
Plans live in `{brain_dir}/{inbox_folder}/plans/` or `{projects_dir}/{project}/plans/` if project-nested.
|
|
@@ -7,8 +7,8 @@ Detailed command flows for the plan skill.
|
|
|
7
7
|
### Step 1: Read Configuration
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
droid config --get tools.brain # → brain_dir,
|
|
11
|
-
droid config --get
|
|
10
|
+
droid config --get tools.brain # → brain_dir, inbox_folder
|
|
11
|
+
droid config --get user_mention # → user_mention (global config)
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
If brain not configured, ask user for `brain_dir` location.
|
|
@@ -21,12 +21,12 @@ Check if `/project` is active (check `{projects_dir}/{project}/PROJECT.md` exist
|
|
|
21
21
|
```
|
|
22
22
|
Offer choice via AskUserQuestion:
|
|
23
23
|
- "Project folder" → {projects_dir}/{project}/plans/plan-{topic}.md
|
|
24
|
-
- "Inbox" → {brain_dir}/{
|
|
24
|
+
- "Inbox" → {brain_dir}/{inbox_folder}/plans/plan-{topic}.md
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**If no project:**
|
|
28
28
|
```
|
|
29
|
-
Use: {brain_dir}/{
|
|
29
|
+
Use: {brain_dir}/{inbox_folder}/plans/plan-{topic}.md
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
### Step 3: Check for Existing Plan
|
|
@@ -8,6 +8,16 @@ allowed-tools: [Read, Edit, Write, Glob, Grep, Bash, Task]
|
|
|
8
8
|
|
|
9
9
|
Session wrap-up that captures decisions, learnings, and open items before closing.
|
|
10
10
|
|
|
11
|
+
## Configuration
|
|
12
|
+
|
|
13
|
+
Wrapup has no configuration of its own. It reads config from other installed tools:
|
|
14
|
+
|
|
15
|
+
- **Project skill** (optional): `droid config --get tools.project` → `projects_dir` to update project files
|
|
16
|
+
- **Brain skill** (optional): `droid config --get tools.brain` → `brain_dir` to update brain docs
|
|
17
|
+
- **Codex skill** (optional): `droid config --get tools.codex` → `codex_repo` to suggest codex entries
|
|
18
|
+
|
|
19
|
+
If these tools aren't configured, wrapup skips those artifacts and focuses on git state and conversation summary.
|
|
20
|
+
|
|
11
21
|
## Context Lifeboat Pattern
|
|
12
22
|
|
|
13
23
|
This skill runs at the END of sessions when context pressure is highest.
|