@orderful/droid 0.10.5 → 0.11.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/.claude/CLAUDE.md +13 -6
- package/CHANGELOG.md +19 -0
- package/README.md +23 -24
- package/dist/bin/droid.js +9 -9
- package/dist/bin/droid.js.map +1 -1
- package/dist/commands/install.d.ts +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +24 -23
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/setup.d.ts +3 -3
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +32 -28
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +60 -53
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/tui.d.ts.map +1 -1
- package/dist/commands/tui.js +213 -319
- package/dist/commands/tui.js.map +1 -1
- package/dist/commands/uninstall.d.ts +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +15 -6
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.d.ts +2 -2
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +9 -9
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/agents.d.ts +11 -10
- package/dist/lib/agents.d.ts.map +1 -1
- package/dist/lib/agents.js +52 -54
- package/dist/lib/agents.js.map +1 -1
- package/dist/lib/config.d.ts +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +42 -5
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/platforms.d.ts +41 -0
- package/dist/lib/platforms.d.ts.map +1 -0
- package/dist/lib/platforms.js +52 -0
- package/dist/lib/platforms.js.map +1 -0
- package/dist/lib/skills.d.ts +19 -11
- package/dist/lib/skills.d.ts.map +1 -1
- package/dist/lib/skills.js +125 -99
- package/dist/lib/skills.js.map +1 -1
- package/dist/lib/tools.d.ts +30 -0
- package/dist/lib/tools.d.ts.map +1 -0
- package/dist/lib/tools.js +116 -0
- package/dist/lib/tools.js.map +1 -0
- package/dist/lib/types.d.ts +45 -2
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +24 -5
- package/dist/lib/types.js.map +1 -1
- package/dist/tools/brain/TOOL.yaml +27 -0
- package/dist/tools/coach/TOOL.yaml +21 -0
- package/dist/tools/code-review/TOOL.yaml +18 -0
- package/dist/tools/comments/TOOL.yaml +27 -0
- package/dist/{skills → tools/comments/skills}/comments/SKILL.md +12 -3
- package/dist/{skills → tools/comments/skills}/comments/SKILL.yaml +1 -1
- package/dist/tools/project/TOOL.yaml +26 -0
- package/package.json +2 -2
- package/src/bin/droid.ts +9 -9
- package/src/commands/install.ts +24 -23
- package/src/commands/setup.test.ts +2 -2
- package/src/commands/setup.ts +33 -29
- package/src/commands/skills.ts +63 -64
- package/src/commands/tui.tsx +432 -578
- package/src/commands/uninstall.ts +17 -6
- package/src/commands/update.ts +10 -10
- package/src/lib/agents.ts +58 -58
- package/src/lib/config.test.ts +0 -10
- package/src/lib/config.ts +47 -5
- package/src/lib/platforms.ts +59 -0
- package/src/lib/skills.test.ts +53 -28
- package/src/lib/skills.ts +134 -101
- package/src/lib/tools.ts +140 -0
- package/src/lib/types.test.ts +15 -7
- package/src/lib/types.ts +63 -2
- package/src/tools/brain/TOOL.yaml +27 -0
- package/src/tools/coach/TOOL.yaml +21 -0
- package/src/tools/code-review/TOOL.yaml +18 -0
- package/src/tools/comments/TOOL.yaml +27 -0
- package/src/{skills → tools/comments/skills}/comments/SKILL.md +12 -3
- package/src/{skills → tools/comments/skills}/comments/SKILL.yaml +1 -1
- package/src/tools/project/TOOL.yaml +26 -0
- package/dist/agents/README.md +0 -137
- package/src/agents/README.md +0 -137
- /package/dist/{skills → tools}/README.md +0 -0
- /package/dist/{skills → tools}/brain/commands/README.md +0 -0
- /package/dist/{skills → tools}/brain/commands/brain.md +0 -0
- /package/dist/{skills → tools}/brain/commands/scratchpad.md +0 -0
- /package/dist/{skills → tools/brain/skills}/brain/SKILL.md +0 -0
- /package/dist/{skills → tools/brain/skills}/brain/SKILL.yaml +0 -0
- /package/dist/{skills → tools/brain/skills}/brain/references/metadata.md +0 -0
- /package/dist/{skills → tools/brain/skills}/brain/references/naming.md +0 -0
- /package/dist/{skills → tools/brain/skills}/brain/references/templates.md +0 -0
- /package/dist/{skills → tools/brain/skills}/brain/references/workflows.md +0 -0
- /package/dist/{skills → tools/brain/skills}/brain-obsidian/SKILL.md +0 -0
- /package/dist/{skills → tools/brain/skills}/brain-obsidian/SKILL.yaml +0 -0
- /package/dist/{skills → tools/brain/skills}/brain-obsidian/references/templates.md +0 -0
- /package/dist/{skills → tools/brain/skills}/brain-obsidian/references/workflows.md +0 -0
- /package/dist/{skills → tools}/coach/commands/README.md +0 -0
- /package/dist/{skills → tools}/coach/commands/coach.md +0 -0
- /package/dist/{skills → tools/coach/skills}/coach/SKILL.md +0 -0
- /package/dist/{skills → tools/coach/skills}/coach/SKILL.yaml +0 -0
- /package/dist/{skills → tools}/code-review/agents/edi-standards-reviewer/AGENT.md +0 -0
- /package/dist/{skills → tools}/code-review/agents/edi-standards-reviewer/AGENT.yaml +0 -0
- /package/dist/{skills → tools}/code-review/agents/error-handling-reviewer/AGENT.md +0 -0
- /package/dist/{skills → tools}/code-review/agents/error-handling-reviewer/AGENT.yaml +0 -0
- /package/dist/{skills → tools}/code-review/agents/test-coverage-analyzer/AGENT.md +0 -0
- /package/dist/{skills → tools}/code-review/agents/test-coverage-analyzer/AGENT.yaml +0 -0
- /package/dist/{skills → tools}/code-review/agents/type-reviewer/AGENT.md +0 -0
- /package/dist/{skills → tools}/code-review/agents/type-reviewer/AGENT.yaml +0 -0
- /package/dist/{skills → tools}/code-review/commands/code-review.md +0 -0
- /package/dist/{skills → tools/code-review/skills}/code-review/SKILL.md +0 -0
- /package/dist/{skills → tools/code-review/skills}/code-review/SKILL.yaml +0 -0
- /package/dist/{skills → tools}/comments/commands/README.md +0 -0
- /package/dist/{skills → tools}/comments/commands/comments.md +0 -0
- /package/dist/{skills → tools}/project/commands/README.md +0 -0
- /package/dist/{skills → tools}/project/commands/project.md +0 -0
- /package/dist/{skills → tools/project/skills}/project/SKILL.md +0 -0
- /package/dist/{skills → tools/project/skills}/project/SKILL.yaml +0 -0
- /package/dist/{skills → tools/project/skills}/project/references/changelog.md +0 -0
- /package/dist/{skills → tools/project/skills}/project/references/creating.md +0 -0
- /package/dist/{skills → tools/project/skills}/project/references/loading.md +0 -0
- /package/dist/{skills → tools/project/skills}/project/references/templates.md +0 -0
- /package/dist/{skills → tools/project/skills}/project/references/updating.md +0 -0
- /package/dist/{skills → tools/project/skills}/project/references/versioning.md +0 -0
- /package/src/{skills → tools}/README.md +0 -0
- /package/src/{skills → tools}/brain/commands/README.md +0 -0
- /package/src/{skills → tools}/brain/commands/brain.md +0 -0
- /package/src/{skills → tools}/brain/commands/scratchpad.md +0 -0
- /package/src/{skills → tools/brain/skills}/brain/SKILL.md +0 -0
- /package/src/{skills → tools/brain/skills}/brain/SKILL.yaml +0 -0
- /package/src/{skills → tools/brain/skills}/brain/references/metadata.md +0 -0
- /package/src/{skills → tools/brain/skills}/brain/references/naming.md +0 -0
- /package/src/{skills → tools/brain/skills}/brain/references/templates.md +0 -0
- /package/src/{skills → tools/brain/skills}/brain/references/workflows.md +0 -0
- /package/src/{skills → tools/brain/skills}/brain-obsidian/SKILL.md +0 -0
- /package/src/{skills → tools/brain/skills}/brain-obsidian/SKILL.yaml +0 -0
- /package/src/{skills → tools/brain/skills}/brain-obsidian/references/templates.md +0 -0
- /package/src/{skills → tools/brain/skills}/brain-obsidian/references/workflows.md +0 -0
- /package/src/{skills → tools}/coach/commands/README.md +0 -0
- /package/src/{skills → tools}/coach/commands/coach.md +0 -0
- /package/src/{skills → tools/coach/skills}/coach/SKILL.md +0 -0
- /package/src/{skills → tools/coach/skills}/coach/SKILL.yaml +0 -0
- /package/src/{skills → tools}/code-review/agents/edi-standards-reviewer/AGENT.md +0 -0
- /package/src/{skills → tools}/code-review/agents/edi-standards-reviewer/AGENT.yaml +0 -0
- /package/src/{skills → tools}/code-review/agents/error-handling-reviewer/AGENT.md +0 -0
- /package/src/{skills → tools}/code-review/agents/error-handling-reviewer/AGENT.yaml +0 -0
- /package/src/{skills → tools}/code-review/agents/test-coverage-analyzer/AGENT.md +0 -0
- /package/src/{skills → tools}/code-review/agents/test-coverage-analyzer/AGENT.yaml +0 -0
- /package/src/{skills → tools}/code-review/agents/type-reviewer/AGENT.md +0 -0
- /package/src/{skills → tools}/code-review/agents/type-reviewer/AGENT.yaml +0 -0
- /package/src/{skills → tools}/code-review/commands/code-review.md +0 -0
- /package/src/{skills → tools/code-review/skills}/code-review/SKILL.md +0 -0
- /package/src/{skills → tools/code-review/skills}/code-review/SKILL.yaml +0 -0
- /package/src/{skills → tools}/comments/commands/README.md +0 -0
- /package/src/{skills → tools}/comments/commands/comments.md +0 -0
- /package/src/{skills → tools}/project/commands/README.md +0 -0
- /package/src/{skills → tools}/project/commands/project.md +0 -0
- /package/src/{skills → tools/project/skills}/project/SKILL.md +0 -0
- /package/src/{skills → tools/project/skills}/project/SKILL.yaml +0 -0
- /package/src/{skills → tools/project/skills}/project/references/changelog.md +0 -0
- /package/src/{skills → tools/project/skills}/project/references/creating.md +0 -0
- /package/src/{skills → tools/project/skills}/project/references/loading.md +0 -0
- /package/src/{skills → tools/project/skills}/project/references/templates.md +0 -0
- /package/src/{skills → tools/project/skills}/project/references/updating.md +0 -0
- /package/src/{skills → tools/project/skills}/project/references/versioning.md +0 -0
package/dist/lib/skills.js
CHANGED
|
@@ -1,60 +1,45 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync, mkdirSync, writeFileSync, rmSync } from 'fs';
|
|
2
2
|
import { join, dirname } from 'path';
|
|
3
|
-
import { homedir } from 'os';
|
|
4
3
|
import { fileURLToPath } from 'url';
|
|
5
4
|
import YAML from 'yaml';
|
|
6
5
|
import { loadConfig, saveConfig } from './config.js';
|
|
7
|
-
import {
|
|
6
|
+
import { SkillStatus, getPlatformTools, setPlatformTools } from './types.js';
|
|
8
7
|
import { getInstalledAgentsDir, installAgentFromPath, uninstallAgent, isAgentInstalled } from './agents.js';
|
|
8
|
+
import { getSkillsPath, getCommandsPath, getConfigPath } from './platforms.js';
|
|
9
9
|
// Marker comments for CLAUDE.md skill registration
|
|
10
10
|
const DROID_SKILLS_START = '<!-- droid-skills-start -->';
|
|
11
11
|
const DROID_SKILLS_END = '<!-- droid-skills-end -->';
|
|
12
12
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
13
|
-
const BUNDLED_SKILLS_DIR = join(__dirname, '../
|
|
13
|
+
const BUNDLED_SKILLS_DIR = join(__dirname, '../tools');
|
|
14
14
|
/**
|
|
15
|
-
* Get the path to bundled
|
|
15
|
+
* Get the path to bundled tools directory
|
|
16
16
|
*/
|
|
17
17
|
export function getBundledSkillsDir() {
|
|
18
18
|
return BUNDLED_SKILLS_DIR;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
* Get the installation path for skills based on
|
|
21
|
+
* Get the installation path for skills based on platform
|
|
22
22
|
*/
|
|
23
|
-
export function getSkillsInstallPath(
|
|
24
|
-
|
|
25
|
-
case AITool.ClaudeCode:
|
|
26
|
-
return join(homedir(), '.claude', 'skills');
|
|
27
|
-
case AITool.OpenCode:
|
|
28
|
-
return join(homedir(), '.config', 'opencode', 'skills');
|
|
29
|
-
}
|
|
23
|
+
export function getSkillsInstallPath(platform) {
|
|
24
|
+
return getSkillsPath(platform);
|
|
30
25
|
}
|
|
31
26
|
/**
|
|
32
|
-
* Get the commands installation path based on
|
|
27
|
+
* Get the commands installation path based on platform
|
|
33
28
|
*/
|
|
34
|
-
export function getCommandsInstallPath(
|
|
35
|
-
|
|
36
|
-
case AITool.ClaudeCode:
|
|
37
|
-
return join(homedir(), '.claude', 'commands');
|
|
38
|
-
case AITool.OpenCode:
|
|
39
|
-
return join(homedir(), '.config', 'opencode', 'command');
|
|
40
|
-
}
|
|
29
|
+
export function getCommandsInstallPath(platform) {
|
|
30
|
+
return getCommandsPath(platform);
|
|
41
31
|
}
|
|
42
32
|
/**
|
|
43
|
-
* Get the path to the
|
|
33
|
+
* Get the path to the platform's main config markdown file
|
|
44
34
|
*/
|
|
45
|
-
export function
|
|
46
|
-
|
|
47
|
-
case AITool.ClaudeCode:
|
|
48
|
-
return join(homedir(), '.claude', 'CLAUDE.md');
|
|
49
|
-
case AITool.OpenCode:
|
|
50
|
-
return join(homedir(), '.config', 'opencode', 'AGENTS.md');
|
|
51
|
-
}
|
|
35
|
+
export function getPlatformConfigPath(platform) {
|
|
36
|
+
return getConfigPath(platform);
|
|
52
37
|
}
|
|
53
38
|
/**
|
|
54
|
-
* Update the
|
|
39
|
+
* Update the platform's config file with skill registrations
|
|
55
40
|
*/
|
|
56
|
-
export function
|
|
57
|
-
const configPath =
|
|
41
|
+
export function updatePlatformConfigSkills(platform, installedSkills) {
|
|
42
|
+
const configPath = getPlatformConfigPath(platform);
|
|
58
43
|
let content = '';
|
|
59
44
|
if (existsSync(configPath)) {
|
|
60
45
|
content = readFileSync(configPath, 'utf-8');
|
|
@@ -102,20 +87,53 @@ export function loadSkillManifest(skillDir) {
|
|
|
102
87
|
}
|
|
103
88
|
}
|
|
104
89
|
/**
|
|
105
|
-
*
|
|
90
|
+
* Find the path to a skill within the tools directory structure
|
|
91
|
+
* Returns { toolDir, skillDir } or null if not found
|
|
92
|
+
*/
|
|
93
|
+
export function findSkillPath(skillName) {
|
|
94
|
+
if (!existsSync(BUNDLED_SKILLS_DIR)) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
const toolDirs = readdirSync(BUNDLED_SKILLS_DIR, { withFileTypes: true })
|
|
98
|
+
.filter((dirent) => dirent.isDirectory())
|
|
99
|
+
.map((dirent) => dirent.name);
|
|
100
|
+
for (const toolName of toolDirs) {
|
|
101
|
+
const skillsDir = join(BUNDLED_SKILLS_DIR, toolName, 'skills');
|
|
102
|
+
if (!existsSync(skillsDir))
|
|
103
|
+
continue;
|
|
104
|
+
const skillDir = join(skillsDir, skillName);
|
|
105
|
+
if (existsSync(skillDir) && existsSync(join(skillDir, 'SKILL.yaml'))) {
|
|
106
|
+
return {
|
|
107
|
+
toolDir: join(BUNDLED_SKILLS_DIR, toolName),
|
|
108
|
+
skillDir,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get all bundled skills from all tools
|
|
106
116
|
*/
|
|
107
117
|
export function getBundledSkills() {
|
|
108
118
|
if (!existsSync(BUNDLED_SKILLS_DIR)) {
|
|
109
119
|
return [];
|
|
110
120
|
}
|
|
111
|
-
const
|
|
121
|
+
const toolDirs = readdirSync(BUNDLED_SKILLS_DIR, { withFileTypes: true })
|
|
112
122
|
.filter((dirent) => dirent.isDirectory())
|
|
113
123
|
.map((dirent) => dirent.name);
|
|
114
124
|
const skills = [];
|
|
115
|
-
for (const
|
|
116
|
-
const
|
|
117
|
-
if (
|
|
118
|
-
|
|
125
|
+
for (const toolName of toolDirs) {
|
|
126
|
+
const skillsDir = join(BUNDLED_SKILLS_DIR, toolName, 'skills');
|
|
127
|
+
if (!existsSync(skillsDir))
|
|
128
|
+
continue;
|
|
129
|
+
const skillSubdirs = readdirSync(skillsDir, { withFileTypes: true })
|
|
130
|
+
.filter((dirent) => dirent.isDirectory())
|
|
131
|
+
.map((dirent) => dirent.name);
|
|
132
|
+
for (const skillName of skillSubdirs) {
|
|
133
|
+
const manifest = loadSkillManifest(join(skillsDir, skillName));
|
|
134
|
+
if (manifest) {
|
|
135
|
+
skills.push(manifest);
|
|
136
|
+
}
|
|
119
137
|
}
|
|
120
138
|
}
|
|
121
139
|
return skills;
|
|
@@ -125,22 +143,24 @@ export function getBundledSkills() {
|
|
|
125
143
|
*/
|
|
126
144
|
export function isSkillInstalled(skillName) {
|
|
127
145
|
const config = loadConfig();
|
|
128
|
-
|
|
146
|
+
const tools = getPlatformTools(config);
|
|
147
|
+
return skillName in tools;
|
|
129
148
|
}
|
|
130
149
|
/**
|
|
131
150
|
* Get installed skill info
|
|
132
151
|
*/
|
|
133
152
|
export function getInstalledSkill(skillName) {
|
|
134
153
|
const config = loadConfig();
|
|
135
|
-
|
|
154
|
+
const tools = getPlatformTools(config);
|
|
155
|
+
return tools[skillName] || null;
|
|
136
156
|
}
|
|
137
157
|
/**
|
|
138
158
|
* Check if a skill has an update available
|
|
139
159
|
*/
|
|
140
160
|
export function getSkillUpdateStatus(skillName) {
|
|
141
161
|
const installed = getInstalledSkill(skillName);
|
|
142
|
-
const
|
|
143
|
-
const manifest =
|
|
162
|
+
const skillPath = findSkillPath(skillName);
|
|
163
|
+
const manifest = skillPath ? loadSkillManifest(skillPath.skillDir) : null;
|
|
144
164
|
if (!installed || !manifest) {
|
|
145
165
|
return {
|
|
146
166
|
hasUpdate: false,
|
|
@@ -159,8 +179,9 @@ export function getSkillUpdateStatus(skillName) {
|
|
|
159
179
|
*/
|
|
160
180
|
export function getSkillsWithUpdates() {
|
|
161
181
|
const config = loadConfig();
|
|
182
|
+
const tools = getPlatformTools(config);
|
|
162
183
|
const updates = [];
|
|
163
|
-
for (const skillName of Object.keys(
|
|
184
|
+
for (const skillName of Object.keys(tools)) {
|
|
164
185
|
const status = getSkillUpdateStatus(skillName);
|
|
165
186
|
if (status.hasUpdate && status.installedVersion && status.bundledVersion) {
|
|
166
187
|
updates.push({
|
|
@@ -201,12 +222,13 @@ export function updateSkill(skillName) {
|
|
|
201
222
|
*/
|
|
202
223
|
export function updateAllSkills() {
|
|
203
224
|
const config = loadConfig();
|
|
225
|
+
const tools = getPlatformTools(config);
|
|
204
226
|
const result = {
|
|
205
227
|
updated: [],
|
|
206
228
|
failed: [],
|
|
207
229
|
upToDate: 0,
|
|
208
230
|
};
|
|
209
|
-
for (const skillName of Object.keys(
|
|
231
|
+
for (const skillName of Object.keys(tools)) {
|
|
210
232
|
const status = getSkillUpdateStatus(skillName);
|
|
211
233
|
if (!status.hasUpdate) {
|
|
212
234
|
result.upToDate++;
|
|
@@ -234,11 +256,12 @@ export function updateAllSkills() {
|
|
|
234
256
|
*/
|
|
235
257
|
export function installSkill(skillName) {
|
|
236
258
|
const config = loadConfig();
|
|
237
|
-
const
|
|
238
|
-
if (!
|
|
259
|
+
const skillPath = findSkillPath(skillName);
|
|
260
|
+
if (!skillPath) {
|
|
239
261
|
return { success: false, message: `Skill '${skillName}' not found` };
|
|
240
262
|
}
|
|
241
|
-
const
|
|
263
|
+
const { toolDir, skillDir } = skillPath;
|
|
264
|
+
const manifest = loadSkillManifest(skillDir);
|
|
242
265
|
if (!manifest) {
|
|
243
266
|
return { success: false, message: `Invalid skill manifest for '${skillName}'` };
|
|
244
267
|
}
|
|
@@ -253,15 +276,18 @@ export function installSkill(skillName) {
|
|
|
253
276
|
}
|
|
254
277
|
}
|
|
255
278
|
}
|
|
256
|
-
const skillsPath = getSkillsInstallPath(config.
|
|
279
|
+
const skillsPath = getSkillsInstallPath(config.platform);
|
|
257
280
|
const targetSkillDir = join(skillsPath, skillName);
|
|
258
|
-
const commandsPath = getCommandsInstallPath(config.
|
|
281
|
+
const commandsPath = getCommandsInstallPath(config.platform);
|
|
282
|
+
const tools = getPlatformTools(config);
|
|
283
|
+
// Commands and agents are at the tool level, not skill level
|
|
284
|
+
const commandsSource = join(toolDir, 'commands');
|
|
285
|
+
const agentsSource = join(toolDir, 'agents');
|
|
259
286
|
// Check for collisions BEFORE installing (only if not already installed by droid)
|
|
260
287
|
// Note: If skill folder exists but skill isn't in config, we allow overwriting (stale state
|
|
261
|
-
// from
|
|
262
|
-
if (!
|
|
288
|
+
// from platform switch or manual cleanup). Command/agent collisions still checked.
|
|
289
|
+
if (!tools[skillName]) {
|
|
263
290
|
// Check command file collisions (these could conflict with other skills)
|
|
264
|
-
const commandsSource = join(bundledSkillDir, 'commands');
|
|
265
291
|
if (existsSync(commandsSource)) {
|
|
266
292
|
const commandFiles = readdirSync(commandsSource).filter(f => f.endsWith('.md') && f.toLowerCase() !== 'readme.md');
|
|
267
293
|
for (const file of commandFiles) {
|
|
@@ -276,7 +302,6 @@ export function installSkill(skillName) {
|
|
|
276
302
|
}
|
|
277
303
|
}
|
|
278
304
|
// Check bundled agent collisions
|
|
279
|
-
const agentsSource = join(bundledSkillDir, 'agents');
|
|
280
305
|
if (existsSync(agentsSource)) {
|
|
281
306
|
const agentDirs = readdirSync(agentsSource, { withFileTypes: true })
|
|
282
307
|
.filter(dirent => dirent.isDirectory())
|
|
@@ -296,7 +321,7 @@ export function installSkill(skillName) {
|
|
|
296
321
|
mkdirSync(skillsPath, { recursive: true });
|
|
297
322
|
}
|
|
298
323
|
// Copy SKILL.md (the actual skill file for Claude Code / OpenCode)
|
|
299
|
-
const skillMdSource = join(
|
|
324
|
+
const skillMdSource = join(skillDir, 'SKILL.md');
|
|
300
325
|
if (existsSync(skillMdSource)) {
|
|
301
326
|
if (!existsSync(targetSkillDir)) {
|
|
302
327
|
mkdirSync(targetSkillDir, { recursive: true });
|
|
@@ -306,7 +331,7 @@ export function installSkill(skillName) {
|
|
|
306
331
|
writeFileSync(skillMdTarget, content);
|
|
307
332
|
}
|
|
308
333
|
// Copy references if present (skill documentation files)
|
|
309
|
-
const referencesSource = join(
|
|
334
|
+
const referencesSource = join(skillDir, 'references');
|
|
310
335
|
if (existsSync(referencesSource)) {
|
|
311
336
|
const targetReferencesDir = join(targetSkillDir, 'references');
|
|
312
337
|
if (!existsSync(targetReferencesDir)) {
|
|
@@ -320,8 +345,7 @@ export function installSkill(skillName) {
|
|
|
320
345
|
writeFileSync(targetPath, content);
|
|
321
346
|
}
|
|
322
347
|
}
|
|
323
|
-
// Copy commands if present
|
|
324
|
-
const commandsSource = join(bundledSkillDir, 'commands');
|
|
348
|
+
// Copy commands if present (from tool level)
|
|
325
349
|
if (existsSync(commandsSource)) {
|
|
326
350
|
if (!existsSync(commandsPath)) {
|
|
327
351
|
mkdirSync(commandsPath, { recursive: true });
|
|
@@ -334,15 +358,13 @@ export function installSkill(skillName) {
|
|
|
334
358
|
writeFileSync(targetPath, content);
|
|
335
359
|
}
|
|
336
360
|
}
|
|
337
|
-
// Install bundled agents if present
|
|
361
|
+
// Install bundled agents if present (from tool level)
|
|
338
362
|
const installedAgents = [];
|
|
339
|
-
const agentsSource = join(bundledSkillDir, 'agents');
|
|
340
363
|
if (existsSync(agentsSource)) {
|
|
341
364
|
const agentDirs = readdirSync(agentsSource, { withFileTypes: true })
|
|
342
365
|
.filter(dirent => dirent.isDirectory())
|
|
343
366
|
.map(dirent => dirent.name);
|
|
344
367
|
for (const agentName of agentDirs) {
|
|
345
|
-
// Use the skill's bundled agent path instead of global agents
|
|
346
368
|
const agentDir = join(agentsSource, agentName);
|
|
347
369
|
const result = installAgentFromPath(agentDir, agentName);
|
|
348
370
|
if (result.success) {
|
|
@@ -351,15 +373,19 @@ export function installSkill(skillName) {
|
|
|
351
373
|
}
|
|
352
374
|
}
|
|
353
375
|
// Update config
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
376
|
+
const updatedTools = {
|
|
377
|
+
...tools,
|
|
378
|
+
[skillName]: {
|
|
379
|
+
version: manifest.version,
|
|
380
|
+
installed_at: new Date().toISOString(),
|
|
381
|
+
...(installedAgents.length > 0 && { bundled_agents: installedAgents }),
|
|
382
|
+
},
|
|
358
383
|
};
|
|
384
|
+
setPlatformTools(config, updatedTools);
|
|
359
385
|
saveConfig(config);
|
|
360
|
-
// Update
|
|
361
|
-
const installedSkillNames = Object.keys(
|
|
362
|
-
|
|
386
|
+
// Update platform's config file with skill reference
|
|
387
|
+
const installedSkillNames = Object.keys(updatedTools);
|
|
388
|
+
updatePlatformConfigSkills(config.platform, installedSkillNames);
|
|
363
389
|
return { success: true, message: `Installed ${skillName} v${manifest.version}` };
|
|
364
390
|
}
|
|
365
391
|
/**
|
|
@@ -367,20 +393,21 @@ export function installSkill(skillName) {
|
|
|
367
393
|
*/
|
|
368
394
|
export function uninstallSkill(skillName) {
|
|
369
395
|
const config = loadConfig();
|
|
396
|
+
const tools = getPlatformTools(config);
|
|
370
397
|
if (!isSkillInstalled(skillName)) {
|
|
371
398
|
return { success: false, message: `Skill '${skillName}' is not installed` };
|
|
372
399
|
}
|
|
373
|
-
// Remove skill files from
|
|
374
|
-
const skillsPath = getSkillsInstallPath(config.
|
|
400
|
+
// Remove skill files from platform location
|
|
401
|
+
const skillsPath = getSkillsInstallPath(config.platform);
|
|
375
402
|
const skillDir = join(skillsPath, skillName);
|
|
376
403
|
if (existsSync(skillDir)) {
|
|
377
404
|
rmSync(skillDir, { recursive: true });
|
|
378
405
|
}
|
|
379
|
-
// Remove command files if they exist
|
|
380
|
-
const
|
|
381
|
-
const
|
|
382
|
-
const
|
|
383
|
-
if (existsSync(commandsSource)) {
|
|
406
|
+
// Remove command files if they exist (commands are at tool level)
|
|
407
|
+
const skillPath = findSkillPath(skillName);
|
|
408
|
+
const commandsPath = getCommandsInstallPath(config.platform);
|
|
409
|
+
const commandsSource = skillPath ? join(skillPath.toolDir, 'commands') : null;
|
|
410
|
+
if (commandsSource && existsSync(commandsSource)) {
|
|
384
411
|
const commandFiles = readdirSync(commandsSource).filter(f => f.endsWith('.md') && f.toLowerCase() !== 'readme.md');
|
|
385
412
|
for (const file of commandFiles) {
|
|
386
413
|
const commandPath = join(commandsPath, file);
|
|
@@ -390,18 +417,20 @@ export function uninstallSkill(skillName) {
|
|
|
390
417
|
}
|
|
391
418
|
}
|
|
392
419
|
// Remove bundled agents if they were installed with this skill
|
|
393
|
-
const installedSkillInfo =
|
|
420
|
+
const installedSkillInfo = tools[skillName];
|
|
394
421
|
if (installedSkillInfo?.bundled_agents) {
|
|
395
422
|
for (const agentName of installedSkillInfo.bundled_agents) {
|
|
396
423
|
uninstallAgent(agentName);
|
|
397
424
|
}
|
|
398
425
|
}
|
|
399
|
-
// Remove from config
|
|
400
|
-
|
|
426
|
+
// Remove from config (destructure to omit the skill being removed)
|
|
427
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
428
|
+
const { [skillName]: removed, ...remainingTools } = tools;
|
|
429
|
+
setPlatformTools(config, remainingTools);
|
|
401
430
|
saveConfig(config);
|
|
402
|
-
// Update
|
|
403
|
-
const installedSkillNames = Object.keys(
|
|
404
|
-
|
|
431
|
+
// Update platform's config file to remove skill reference
|
|
432
|
+
const installedSkillNames = Object.keys(remainingTools);
|
|
433
|
+
updatePlatformConfigSkills(config.platform, installedSkillNames);
|
|
405
434
|
return { success: true, message: `Uninstalled ${skillName}` };
|
|
406
435
|
}
|
|
407
436
|
/**
|
|
@@ -430,7 +459,7 @@ export function isCommandInstalled(commandName, skillName) {
|
|
|
430
459
|
}
|
|
431
460
|
// Otherwise check if command was installed standalone
|
|
432
461
|
const config = loadConfig();
|
|
433
|
-
const commandsPath = getCommandsInstallPath(config.
|
|
462
|
+
const commandsPath = getCommandsInstallPath(config.platform);
|
|
434
463
|
// Command filename is derived from the command name after the skill prefix
|
|
435
464
|
// e.g., "comments check" from skill "comments" → "check.md"
|
|
436
465
|
const cmdPart = commandName.startsWith(skillName + ' ')
|
|
@@ -444,28 +473,20 @@ export function isCommandInstalled(commandName, skillName) {
|
|
|
444
473
|
*/
|
|
445
474
|
export function installCommand(commandName, skillName) {
|
|
446
475
|
const config = loadConfig();
|
|
476
|
+
// Find the skill to get its tool directory (commands are at tool level)
|
|
477
|
+
const skillPath = findSkillPath(skillName);
|
|
478
|
+
if (!skillPath) {
|
|
479
|
+
return { success: false, message: `Skill '${skillName}' not found` };
|
|
480
|
+
}
|
|
481
|
+
const commandsDir = join(skillPath.toolDir, 'commands');
|
|
482
|
+
if (!existsSync(commandsDir)) {
|
|
483
|
+
return { success: false, message: `No commands found for skill '${skillName}'` };
|
|
484
|
+
}
|
|
447
485
|
// Find the source command file
|
|
448
486
|
const cmdPart = commandName.startsWith(skillName + ' ')
|
|
449
487
|
? commandName.slice(skillName.length + 1)
|
|
450
488
|
: commandName;
|
|
451
|
-
const
|
|
452
|
-
const sourcePath = join(BUNDLED_SKILLS_DIR, skillName, 'commands', filename);
|
|
453
|
-
if (!existsSync(sourcePath)) {
|
|
454
|
-
// Try without hyphen conversion (original filename)
|
|
455
|
-
const altFilename = cmdPart + '.md';
|
|
456
|
-
const altSourcePath = join(BUNDLED_SKILLS_DIR, skillName, 'commands', altFilename);
|
|
457
|
-
if (!existsSync(altSourcePath)) {
|
|
458
|
-
return { success: false, message: `Command file not found: ${filename}` };
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
// Ensure commands directory exists
|
|
462
|
-
const commandsPath = getCommandsInstallPath(config.ai_tool);
|
|
463
|
-
if (!existsSync(commandsPath)) {
|
|
464
|
-
mkdirSync(commandsPath, { recursive: true });
|
|
465
|
-
}
|
|
466
|
-
// Find the actual source file
|
|
467
|
-
const commandsDir = join(BUNDLED_SKILLS_DIR, skillName, 'commands');
|
|
468
|
-
const files = readdirSync(commandsDir);
|
|
489
|
+
const files = readdirSync(commandsDir).filter(f => f.endsWith('.md') && f.toLowerCase() !== 'readme.md');
|
|
469
490
|
const sourceFile = files.find(f => {
|
|
470
491
|
const base = f.replace('.md', '');
|
|
471
492
|
return base === cmdPart || base === cmdPart.replace(/\s+/g, '-');
|
|
@@ -473,6 +494,11 @@ export function installCommand(commandName, skillName) {
|
|
|
473
494
|
if (!sourceFile) {
|
|
474
495
|
return { success: false, message: `Command file not found for: ${commandName}` };
|
|
475
496
|
}
|
|
497
|
+
// Ensure commands directory exists
|
|
498
|
+
const commandsPath = getCommandsInstallPath(config.platform);
|
|
499
|
+
if (!existsSync(commandsPath)) {
|
|
500
|
+
mkdirSync(commandsPath, { recursive: true });
|
|
501
|
+
}
|
|
476
502
|
const actualSourcePath = join(commandsDir, sourceFile);
|
|
477
503
|
const targetPath = join(commandsPath, sourceFile);
|
|
478
504
|
try {
|
|
@@ -496,7 +522,7 @@ export function uninstallCommand(commandName, skillName) {
|
|
|
496
522
|
message: `Command belongs to installed skill '${skillName}'. Uninstall the skill to remove this command.`,
|
|
497
523
|
};
|
|
498
524
|
}
|
|
499
|
-
const commandsPath = getCommandsInstallPath(config.
|
|
525
|
+
const commandsPath = getCommandsInstallPath(config.platform);
|
|
500
526
|
// Find the installed command file
|
|
501
527
|
const cmdPart = commandName.startsWith(skillName + ' ')
|
|
502
528
|
? commandName.slice(skillName.length + 1)
|
package/dist/lib/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type ToolManifest } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Get the path to bundled tools directory
|
|
4
|
+
*/
|
|
5
|
+
export declare function getBundledToolsDir(): string;
|
|
6
|
+
/**
|
|
7
|
+
* Load a tool manifest from a tool directory
|
|
8
|
+
*/
|
|
9
|
+
export declare function loadToolManifest(toolDir: string): ToolManifest | null;
|
|
10
|
+
/**
|
|
11
|
+
* Get all bundled tools
|
|
12
|
+
*/
|
|
13
|
+
export declare function getBundledTools(): ToolManifest[];
|
|
14
|
+
/**
|
|
15
|
+
* Check if a tool is installed (any of its required skills are installed)
|
|
16
|
+
*/
|
|
17
|
+
export declare function isToolInstalled(toolName: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Get the installed version of a tool (from its primary skill)
|
|
20
|
+
*/
|
|
21
|
+
export declare function getInstalledToolVersion(toolName: string): string | null;
|
|
22
|
+
/**
|
|
23
|
+
* Check if a tool has an update available
|
|
24
|
+
*/
|
|
25
|
+
export declare function getToolUpdateStatus(toolName: string): {
|
|
26
|
+
hasUpdate: boolean;
|
|
27
|
+
installedVersion: string | null;
|
|
28
|
+
bundledVersion: string | null;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/lib/tools.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAuC,MAAM,YAAY,CAAC;AAKpF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAyBrE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,EAAE,CAmBhD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAczD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACrD,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAkBA"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from 'fs';
|
|
2
|
+
import { join, dirname } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import YAML from 'yaml';
|
|
5
|
+
import { loadConfig } from './config.js';
|
|
6
|
+
import { getPlatformTools } from './types.js';
|
|
7
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const BUNDLED_TOOLS_DIR = join(__dirname, '../tools');
|
|
9
|
+
/**
|
|
10
|
+
* Get the path to bundled tools directory
|
|
11
|
+
*/
|
|
12
|
+
export function getBundledToolsDir() {
|
|
13
|
+
return BUNDLED_TOOLS_DIR;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Load a tool manifest from a tool directory
|
|
17
|
+
*/
|
|
18
|
+
export function loadToolManifest(toolDir) {
|
|
19
|
+
const manifestPath = join(toolDir, 'TOOL.yaml');
|
|
20
|
+
if (!existsSync(manifestPath)) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const content = readFileSync(manifestPath, 'utf-8');
|
|
25
|
+
const parsed = YAML.parse(content);
|
|
26
|
+
// Normalize includes structure
|
|
27
|
+
const includes = {
|
|
28
|
+
skills: parsed.includes?.skills || [],
|
|
29
|
+
commands: parsed.includes?.commands || [],
|
|
30
|
+
agents: parsed.includes?.agents || [],
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
...parsed,
|
|
34
|
+
includes,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get all bundled tools
|
|
43
|
+
*/
|
|
44
|
+
export function getBundledTools() {
|
|
45
|
+
if (!existsSync(BUNDLED_TOOLS_DIR)) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
const toolDirs = readdirSync(BUNDLED_TOOLS_DIR, { withFileTypes: true })
|
|
49
|
+
.filter((dirent) => dirent.isDirectory())
|
|
50
|
+
.map((dirent) => dirent.name);
|
|
51
|
+
const tools = [];
|
|
52
|
+
for (const toolName of toolDirs) {
|
|
53
|
+
const manifest = loadToolManifest(join(BUNDLED_TOOLS_DIR, toolName));
|
|
54
|
+
if (manifest) {
|
|
55
|
+
tools.push(manifest);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return tools;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if a tool is installed (any of its required skills are installed)
|
|
62
|
+
*/
|
|
63
|
+
export function isToolInstalled(toolName) {
|
|
64
|
+
const config = loadConfig();
|
|
65
|
+
const installedTools = getPlatformTools(config);
|
|
66
|
+
// A tool is installed if any of its required skills are in the installed tools
|
|
67
|
+
const tool = getBundledTools().find(t => t.name === toolName);
|
|
68
|
+
if (!tool)
|
|
69
|
+
return false;
|
|
70
|
+
const requiredSkills = tool.includes.skills
|
|
71
|
+
.filter(s => s.required)
|
|
72
|
+
.map(s => s.name);
|
|
73
|
+
// Tool is installed if at least one required skill is installed
|
|
74
|
+
return requiredSkills.some(skillName => skillName in installedTools);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get the installed version of a tool (from its primary skill)
|
|
78
|
+
*/
|
|
79
|
+
export function getInstalledToolVersion(toolName) {
|
|
80
|
+
const config = loadConfig();
|
|
81
|
+
const installedTools = getPlatformTools(config);
|
|
82
|
+
const tool = getBundledTools().find(t => t.name === toolName);
|
|
83
|
+
if (!tool)
|
|
84
|
+
return null;
|
|
85
|
+
// Get version from the first installed required skill
|
|
86
|
+
const requiredSkills = tool.includes.skills
|
|
87
|
+
.filter(s => s.required)
|
|
88
|
+
.map(s => s.name);
|
|
89
|
+
for (const skillName of requiredSkills) {
|
|
90
|
+
if (installedTools[skillName]) {
|
|
91
|
+
return installedTools[skillName].version;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Check if a tool has an update available
|
|
98
|
+
*/
|
|
99
|
+
export function getToolUpdateStatus(toolName) {
|
|
100
|
+
const installedVersion = getInstalledToolVersion(toolName);
|
|
101
|
+
const tool = getBundledTools().find(t => t.name === toolName);
|
|
102
|
+
const bundledVersion = tool?.version || null;
|
|
103
|
+
if (!installedVersion || !bundledVersion) {
|
|
104
|
+
return {
|
|
105
|
+
hasUpdate: false,
|
|
106
|
+
installedVersion,
|
|
107
|
+
bundledVersion,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
hasUpdate: bundledVersion !== installedVersion,
|
|
112
|
+
installedVersion,
|
|
113
|
+
bundledVersion,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=tools.js.map
|