@orderful/droid 0.10.4 → 0.11.0

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.
Files changed (167) hide show
  1. package/.claude/CLAUDE.md +13 -6
  2. package/CHANGELOG.md +21 -0
  3. package/README.md +23 -24
  4. package/dist/bin/droid.js +9 -9
  5. package/dist/bin/droid.js.map +1 -1
  6. package/dist/commands/install.d.ts +1 -1
  7. package/dist/commands/install.d.ts.map +1 -1
  8. package/dist/commands/install.js +24 -23
  9. package/dist/commands/install.js.map +1 -1
  10. package/dist/commands/setup.d.ts +3 -3
  11. package/dist/commands/setup.d.ts.map +1 -1
  12. package/dist/commands/setup.js +32 -28
  13. package/dist/commands/setup.js.map +1 -1
  14. package/dist/commands/skills.d.ts.map +1 -1
  15. package/dist/commands/skills.js +60 -53
  16. package/dist/commands/skills.js.map +1 -1
  17. package/dist/commands/tui.d.ts.map +1 -1
  18. package/dist/commands/tui.js +213 -319
  19. package/dist/commands/tui.js.map +1 -1
  20. package/dist/commands/uninstall.d.ts +1 -1
  21. package/dist/commands/uninstall.d.ts.map +1 -1
  22. package/dist/commands/uninstall.js +15 -6
  23. package/dist/commands/uninstall.js.map +1 -1
  24. package/dist/commands/update.d.ts +2 -2
  25. package/dist/commands/update.d.ts.map +1 -1
  26. package/dist/commands/update.js +9 -9
  27. package/dist/commands/update.js.map +1 -1
  28. package/dist/lib/agents.d.ts +11 -10
  29. package/dist/lib/agents.d.ts.map +1 -1
  30. package/dist/lib/agents.js +52 -54
  31. package/dist/lib/agents.js.map +1 -1
  32. package/dist/lib/config.d.ts +1 -0
  33. package/dist/lib/config.d.ts.map +1 -1
  34. package/dist/lib/config.js +42 -5
  35. package/dist/lib/config.js.map +1 -1
  36. package/dist/lib/platforms.d.ts +41 -0
  37. package/dist/lib/platforms.d.ts.map +1 -0
  38. package/dist/lib/platforms.js +52 -0
  39. package/dist/lib/platforms.js.map +1 -0
  40. package/dist/lib/skills.d.ts +19 -11
  41. package/dist/lib/skills.d.ts.map +1 -1
  42. package/dist/lib/skills.js +127 -106
  43. package/dist/lib/skills.js.map +1 -1
  44. package/dist/lib/tools.d.ts +30 -0
  45. package/dist/lib/tools.d.ts.map +1 -0
  46. package/dist/lib/tools.js +116 -0
  47. package/dist/lib/tools.js.map +1 -0
  48. package/dist/lib/types.d.ts +45 -2
  49. package/dist/lib/types.d.ts.map +1 -1
  50. package/dist/lib/types.js +24 -5
  51. package/dist/lib/types.js.map +1 -1
  52. package/dist/tools/brain/TOOL.yaml +27 -0
  53. package/dist/tools/coach/TOOL.yaml +21 -0
  54. package/dist/tools/code-review/TOOL.yaml +18 -0
  55. package/dist/{skills → tools}/code-review/commands/code-review.md +23 -1
  56. package/dist/tools/comments/TOOL.yaml +27 -0
  57. package/dist/tools/project/TOOL.yaml +26 -0
  58. package/package.json +2 -2
  59. package/src/bin/droid.ts +9 -9
  60. package/src/commands/install.ts +24 -23
  61. package/src/commands/setup.test.ts +2 -2
  62. package/src/commands/setup.ts +33 -29
  63. package/src/commands/skills.ts +63 -64
  64. package/src/commands/tui.tsx +432 -578
  65. package/src/commands/uninstall.ts +17 -6
  66. package/src/commands/update.ts +10 -10
  67. package/src/lib/agents.ts +58 -58
  68. package/src/lib/config.test.ts +0 -10
  69. package/src/lib/config.ts +47 -5
  70. package/src/lib/platforms.ts +59 -0
  71. package/src/lib/skills.test.ts +53 -28
  72. package/src/lib/skills.ts +136 -109
  73. package/src/lib/tools.ts +140 -0
  74. package/src/lib/types.test.ts +15 -7
  75. package/src/lib/types.ts +63 -2
  76. package/src/tools/brain/TOOL.yaml +27 -0
  77. package/src/tools/coach/TOOL.yaml +21 -0
  78. package/src/tools/code-review/TOOL.yaml +18 -0
  79. package/src/{skills → tools}/code-review/commands/code-review.md +23 -1
  80. package/src/tools/comments/TOOL.yaml +27 -0
  81. package/src/tools/project/TOOL.yaml +26 -0
  82. package/dist/agents/README.md +0 -137
  83. package/src/agents/README.md +0 -137
  84. /package/dist/{skills → tools}/README.md +0 -0
  85. /package/dist/{skills → tools}/brain/commands/README.md +0 -0
  86. /package/dist/{skills → tools}/brain/commands/brain.md +0 -0
  87. /package/dist/{skills → tools}/brain/commands/scratchpad.md +0 -0
  88. /package/dist/{skills → tools/brain/skills}/brain/SKILL.md +0 -0
  89. /package/dist/{skills → tools/brain/skills}/brain/SKILL.yaml +0 -0
  90. /package/dist/{skills → tools/brain/skills}/brain/references/metadata.md +0 -0
  91. /package/dist/{skills → tools/brain/skills}/brain/references/naming.md +0 -0
  92. /package/dist/{skills → tools/brain/skills}/brain/references/templates.md +0 -0
  93. /package/dist/{skills → tools/brain/skills}/brain/references/workflows.md +0 -0
  94. /package/dist/{skills → tools/brain/skills}/brain-obsidian/SKILL.md +0 -0
  95. /package/dist/{skills → tools/brain/skills}/brain-obsidian/SKILL.yaml +0 -0
  96. /package/dist/{skills → tools/brain/skills}/brain-obsidian/references/templates.md +0 -0
  97. /package/dist/{skills → tools/brain/skills}/brain-obsidian/references/workflows.md +0 -0
  98. /package/dist/{skills → tools}/coach/commands/README.md +0 -0
  99. /package/dist/{skills → tools}/coach/commands/coach.md +0 -0
  100. /package/dist/{skills → tools/coach/skills}/coach/SKILL.md +0 -0
  101. /package/dist/{skills → tools/coach/skills}/coach/SKILL.yaml +0 -0
  102. /package/dist/{skills → tools}/code-review/agents/edi-standards-reviewer/AGENT.md +0 -0
  103. /package/dist/{skills → tools}/code-review/agents/edi-standards-reviewer/AGENT.yaml +0 -0
  104. /package/dist/{skills → tools}/code-review/agents/error-handling-reviewer/AGENT.md +0 -0
  105. /package/dist/{skills → tools}/code-review/agents/error-handling-reviewer/AGENT.yaml +0 -0
  106. /package/dist/{skills → tools}/code-review/agents/test-coverage-analyzer/AGENT.md +0 -0
  107. /package/dist/{skills → tools}/code-review/agents/test-coverage-analyzer/AGENT.yaml +0 -0
  108. /package/dist/{skills → tools}/code-review/agents/type-reviewer/AGENT.md +0 -0
  109. /package/dist/{skills → tools}/code-review/agents/type-reviewer/AGENT.yaml +0 -0
  110. /package/dist/{skills → tools/code-review/skills}/code-review/SKILL.md +0 -0
  111. /package/dist/{skills → tools/code-review/skills}/code-review/SKILL.yaml +0 -0
  112. /package/dist/{skills → tools}/comments/commands/README.md +0 -0
  113. /package/dist/{skills → tools}/comments/commands/comments.md +0 -0
  114. /package/dist/{skills → tools/comments/skills}/comments/SKILL.md +0 -0
  115. /package/dist/{skills → tools/comments/skills}/comments/SKILL.yaml +0 -0
  116. /package/dist/{skills → tools}/project/commands/README.md +0 -0
  117. /package/dist/{skills → tools}/project/commands/project.md +0 -0
  118. /package/dist/{skills → tools/project/skills}/project/SKILL.md +0 -0
  119. /package/dist/{skills → tools/project/skills}/project/SKILL.yaml +0 -0
  120. /package/dist/{skills → tools/project/skills}/project/references/changelog.md +0 -0
  121. /package/dist/{skills → tools/project/skills}/project/references/creating.md +0 -0
  122. /package/dist/{skills → tools/project/skills}/project/references/loading.md +0 -0
  123. /package/dist/{skills → tools/project/skills}/project/references/templates.md +0 -0
  124. /package/dist/{skills → tools/project/skills}/project/references/updating.md +0 -0
  125. /package/dist/{skills → tools/project/skills}/project/references/versioning.md +0 -0
  126. /package/src/{skills → tools}/README.md +0 -0
  127. /package/src/{skills → tools}/brain/commands/README.md +0 -0
  128. /package/src/{skills → tools}/brain/commands/brain.md +0 -0
  129. /package/src/{skills → tools}/brain/commands/scratchpad.md +0 -0
  130. /package/src/{skills → tools/brain/skills}/brain/SKILL.md +0 -0
  131. /package/src/{skills → tools/brain/skills}/brain/SKILL.yaml +0 -0
  132. /package/src/{skills → tools/brain/skills}/brain/references/metadata.md +0 -0
  133. /package/src/{skills → tools/brain/skills}/brain/references/naming.md +0 -0
  134. /package/src/{skills → tools/brain/skills}/brain/references/templates.md +0 -0
  135. /package/src/{skills → tools/brain/skills}/brain/references/workflows.md +0 -0
  136. /package/src/{skills → tools/brain/skills}/brain-obsidian/SKILL.md +0 -0
  137. /package/src/{skills → tools/brain/skills}/brain-obsidian/SKILL.yaml +0 -0
  138. /package/src/{skills → tools/brain/skills}/brain-obsidian/references/templates.md +0 -0
  139. /package/src/{skills → tools/brain/skills}/brain-obsidian/references/workflows.md +0 -0
  140. /package/src/{skills → tools}/coach/commands/README.md +0 -0
  141. /package/src/{skills → tools}/coach/commands/coach.md +0 -0
  142. /package/src/{skills → tools/coach/skills}/coach/SKILL.md +0 -0
  143. /package/src/{skills → tools/coach/skills}/coach/SKILL.yaml +0 -0
  144. /package/src/{skills → tools}/code-review/agents/edi-standards-reviewer/AGENT.md +0 -0
  145. /package/src/{skills → tools}/code-review/agents/edi-standards-reviewer/AGENT.yaml +0 -0
  146. /package/src/{skills → tools}/code-review/agents/error-handling-reviewer/AGENT.md +0 -0
  147. /package/src/{skills → tools}/code-review/agents/error-handling-reviewer/AGENT.yaml +0 -0
  148. /package/src/{skills → tools}/code-review/agents/test-coverage-analyzer/AGENT.md +0 -0
  149. /package/src/{skills → tools}/code-review/agents/test-coverage-analyzer/AGENT.yaml +0 -0
  150. /package/src/{skills → tools}/code-review/agents/type-reviewer/AGENT.md +0 -0
  151. /package/src/{skills → tools}/code-review/agents/type-reviewer/AGENT.yaml +0 -0
  152. /package/src/{skills → tools/code-review/skills}/code-review/SKILL.md +0 -0
  153. /package/src/{skills → tools/code-review/skills}/code-review/SKILL.yaml +0 -0
  154. /package/src/{skills → tools}/comments/commands/README.md +0 -0
  155. /package/src/{skills → tools}/comments/commands/comments.md +0 -0
  156. /package/src/{skills → tools/comments/skills}/comments/SKILL.md +0 -0
  157. /package/src/{skills → tools/comments/skills}/comments/SKILL.yaml +0 -0
  158. /package/src/{skills → tools}/project/commands/README.md +0 -0
  159. /package/src/{skills → tools}/project/commands/project.md +0 -0
  160. /package/src/{skills → tools/project/skills}/project/SKILL.md +0 -0
  161. /package/src/{skills → tools/project/skills}/project/SKILL.yaml +0 -0
  162. /package/src/{skills → tools/project/skills}/project/references/changelog.md +0 -0
  163. /package/src/{skills → tools/project/skills}/project/references/creating.md +0 -0
  164. /package/src/{skills → tools/project/skills}/project/references/loading.md +0 -0
  165. /package/src/{skills → tools/project/skills}/project/references/templates.md +0 -0
  166. /package/src/{skills → tools/project/skills}/project/references/updating.md +0 -0
  167. /package/src/{skills → tools/project/skills}/project/references/versioning.md +0 -0
@@ -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 { AITool, SkillStatus } from './types.js';
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, '../skills');
13
+ const BUNDLED_SKILLS_DIR = join(__dirname, '../tools');
14
14
  /**
15
- * Get the path to bundled skills directory
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 AI tool
21
+ * Get the installation path for skills based on platform
22
22
  */
23
- export function getSkillsInstallPath(aiTool) {
24
- switch (aiTool) {
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 AI tool
27
+ * Get the commands installation path based on platform
33
28
  */
34
- export function getCommandsInstallPath(aiTool) {
35
- switch (aiTool) {
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 AI tool's main config markdown file
33
+ * Get the path to the platform's main config markdown file
44
34
  */
45
- export function getAIConfigPath(aiTool) {
46
- switch (aiTool) {
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 AI tool's config file with skill registrations
39
+ * Update the platform's config file with skill registrations
55
40
  */
56
- export function updateAIConfigSkills(aiTool, installedSkills) {
57
- const configPath = getAIConfigPath(aiTool);
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
- * Get all bundled skills
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 skillDirs = readdirSync(BUNDLED_SKILLS_DIR, { withFileTypes: true })
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 skillDir of skillDirs) {
116
- const manifest = loadSkillManifest(join(BUNDLED_SKILLS_DIR, skillDir));
117
- if (manifest) {
118
- skills.push(manifest);
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
- return skillName in config.skills;
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
- return config.skills[skillName] || null;
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 bundledSkillDir = join(BUNDLED_SKILLS_DIR, skillName);
143
- const manifest = existsSync(bundledSkillDir) ? loadSkillManifest(bundledSkillDir) : null;
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(config.skills)) {
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(config.skills)) {
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 bundledSkillDir = join(BUNDLED_SKILLS_DIR, skillName);
238
- if (!existsSync(bundledSkillDir)) {
259
+ const skillPath = findSkillPath(skillName);
260
+ if (!skillPath) {
239
261
  return { success: false, message: `Skill '${skillName}' not found` };
240
262
  }
241
- const manifest = loadSkillManifest(bundledSkillDir);
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,20 +276,18 @@ export function installSkill(skillName) {
253
276
  }
254
277
  }
255
278
  }
256
- const skillsPath = getSkillsInstallPath(config.ai_tool);
279
+ const skillsPath = getSkillsInstallPath(config.platform);
257
280
  const targetSkillDir = join(skillsPath, skillName);
258
- const commandsPath = getCommandsInstallPath(config.ai_tool);
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
- if (!config.skills[skillName]) {
261
- // Check skill folder collision
262
- if (existsSync(targetSkillDir)) {
263
- return {
264
- success: false,
265
- message: `Cannot install: skill folder '${skillName}' already exists at ${targetSkillDir}`,
266
- };
267
- }
268
- // Check command file collisions
269
- const commandsSource = join(bundledSkillDir, 'commands');
287
+ // Note: If skill folder exists but skill isn't in config, we allow overwriting (stale state
288
+ // from platform switch or manual cleanup). Command/agent collisions still checked.
289
+ if (!tools[skillName]) {
290
+ // Check command file collisions (these could conflict with other skills)
270
291
  if (existsSync(commandsSource)) {
271
292
  const commandFiles = readdirSync(commandsSource).filter(f => f.endsWith('.md') && f.toLowerCase() !== 'readme.md');
272
293
  for (const file of commandFiles) {
@@ -281,7 +302,6 @@ export function installSkill(skillName) {
281
302
  }
282
303
  }
283
304
  // Check bundled agent collisions
284
- const agentsSource = join(bundledSkillDir, 'agents');
285
305
  if (existsSync(agentsSource)) {
286
306
  const agentDirs = readdirSync(agentsSource, { withFileTypes: true })
287
307
  .filter(dirent => dirent.isDirectory())
@@ -301,7 +321,7 @@ export function installSkill(skillName) {
301
321
  mkdirSync(skillsPath, { recursive: true });
302
322
  }
303
323
  // Copy SKILL.md (the actual skill file for Claude Code / OpenCode)
304
- const skillMdSource = join(bundledSkillDir, 'SKILL.md');
324
+ const skillMdSource = join(skillDir, 'SKILL.md');
305
325
  if (existsSync(skillMdSource)) {
306
326
  if (!existsSync(targetSkillDir)) {
307
327
  mkdirSync(targetSkillDir, { recursive: true });
@@ -311,7 +331,7 @@ export function installSkill(skillName) {
311
331
  writeFileSync(skillMdTarget, content);
312
332
  }
313
333
  // Copy references if present (skill documentation files)
314
- const referencesSource = join(bundledSkillDir, 'references');
334
+ const referencesSource = join(skillDir, 'references');
315
335
  if (existsSync(referencesSource)) {
316
336
  const targetReferencesDir = join(targetSkillDir, 'references');
317
337
  if (!existsSync(targetReferencesDir)) {
@@ -325,8 +345,7 @@ export function installSkill(skillName) {
325
345
  writeFileSync(targetPath, content);
326
346
  }
327
347
  }
328
- // Copy commands if present
329
- const commandsSource = join(bundledSkillDir, 'commands');
348
+ // Copy commands if present (from tool level)
330
349
  if (existsSync(commandsSource)) {
331
350
  if (!existsSync(commandsPath)) {
332
351
  mkdirSync(commandsPath, { recursive: true });
@@ -339,15 +358,13 @@ export function installSkill(skillName) {
339
358
  writeFileSync(targetPath, content);
340
359
  }
341
360
  }
342
- // Install bundled agents if present
361
+ // Install bundled agents if present (from tool level)
343
362
  const installedAgents = [];
344
- const agentsSource = join(bundledSkillDir, 'agents');
345
363
  if (existsSync(agentsSource)) {
346
364
  const agentDirs = readdirSync(agentsSource, { withFileTypes: true })
347
365
  .filter(dirent => dirent.isDirectory())
348
366
  .map(dirent => dirent.name);
349
367
  for (const agentName of agentDirs) {
350
- // Use the skill's bundled agent path instead of global agents
351
368
  const agentDir = join(agentsSource, agentName);
352
369
  const result = installAgentFromPath(agentDir, agentName);
353
370
  if (result.success) {
@@ -356,15 +373,19 @@ export function installSkill(skillName) {
356
373
  }
357
374
  }
358
375
  // Update config
359
- config.skills[skillName] = {
360
- version: manifest.version,
361
- installed_at: new Date().toISOString(),
362
- ...(installedAgents.length > 0 && { bundled_agents: installedAgents }),
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
+ },
363
383
  };
384
+ setPlatformTools(config, updatedTools);
364
385
  saveConfig(config);
365
- // Update AI tool's config file with skill reference
366
- const installedSkillNames = Object.keys(config.skills);
367
- updateAIConfigSkills(config.ai_tool, installedSkillNames);
386
+ // Update platform's config file with skill reference
387
+ const installedSkillNames = Object.keys(updatedTools);
388
+ updatePlatformConfigSkills(config.platform, installedSkillNames);
368
389
  return { success: true, message: `Installed ${skillName} v${manifest.version}` };
369
390
  }
370
391
  /**
@@ -372,20 +393,21 @@ export function installSkill(skillName) {
372
393
  */
373
394
  export function uninstallSkill(skillName) {
374
395
  const config = loadConfig();
396
+ const tools = getPlatformTools(config);
375
397
  if (!isSkillInstalled(skillName)) {
376
398
  return { success: false, message: `Skill '${skillName}' is not installed` };
377
399
  }
378
- // Remove skill files from AI tool location
379
- const skillsPath = getSkillsInstallPath(config.ai_tool);
400
+ // Remove skill files from platform location
401
+ const skillsPath = getSkillsInstallPath(config.platform);
380
402
  const skillDir = join(skillsPath, skillName);
381
403
  if (existsSync(skillDir)) {
382
404
  rmSync(skillDir, { recursive: true });
383
405
  }
384
- // Remove command files if they exist
385
- const bundledSkillDir = join(BUNDLED_SKILLS_DIR, skillName);
386
- const commandsSource = join(bundledSkillDir, 'commands');
387
- const commandsPath = getCommandsInstallPath(config.ai_tool);
388
- 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)) {
389
411
  const commandFiles = readdirSync(commandsSource).filter(f => f.endsWith('.md') && f.toLowerCase() !== 'readme.md');
390
412
  for (const file of commandFiles) {
391
413
  const commandPath = join(commandsPath, file);
@@ -395,18 +417,20 @@ export function uninstallSkill(skillName) {
395
417
  }
396
418
  }
397
419
  // Remove bundled agents if they were installed with this skill
398
- const installedSkillInfo = config.skills[skillName];
420
+ const installedSkillInfo = tools[skillName];
399
421
  if (installedSkillInfo?.bundled_agents) {
400
422
  for (const agentName of installedSkillInfo.bundled_agents) {
401
423
  uninstallAgent(agentName);
402
424
  }
403
425
  }
404
- // Remove from config
405
- delete config.skills[skillName];
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);
406
430
  saveConfig(config);
407
- // Update AI tool's config file to remove skill reference
408
- const installedSkillNames = Object.keys(config.skills);
409
- updateAIConfigSkills(config.ai_tool, installedSkillNames);
431
+ // Update platform's config file to remove skill reference
432
+ const installedSkillNames = Object.keys(remainingTools);
433
+ updatePlatformConfigSkills(config.platform, installedSkillNames);
410
434
  return { success: true, message: `Uninstalled ${skillName}` };
411
435
  }
412
436
  /**
@@ -435,7 +459,7 @@ export function isCommandInstalled(commandName, skillName) {
435
459
  }
436
460
  // Otherwise check if command was installed standalone
437
461
  const config = loadConfig();
438
- const commandsPath = getCommandsInstallPath(config.ai_tool);
462
+ const commandsPath = getCommandsInstallPath(config.platform);
439
463
  // Command filename is derived from the command name after the skill prefix
440
464
  // e.g., "comments check" from skill "comments" → "check.md"
441
465
  const cmdPart = commandName.startsWith(skillName + ' ')
@@ -449,28 +473,20 @@ export function isCommandInstalled(commandName, skillName) {
449
473
  */
450
474
  export function installCommand(commandName, skillName) {
451
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
+ }
452
485
  // Find the source command file
453
486
  const cmdPart = commandName.startsWith(skillName + ' ')
454
487
  ? commandName.slice(skillName.length + 1)
455
488
  : commandName;
456
- const filename = cmdPart.replace(/\s+/g, '-') + '.md';
457
- const sourcePath = join(BUNDLED_SKILLS_DIR, skillName, 'commands', filename);
458
- if (!existsSync(sourcePath)) {
459
- // Try without hyphen conversion (original filename)
460
- const altFilename = cmdPart + '.md';
461
- const altSourcePath = join(BUNDLED_SKILLS_DIR, skillName, 'commands', altFilename);
462
- if (!existsSync(altSourcePath)) {
463
- return { success: false, message: `Command file not found: ${filename}` };
464
- }
465
- }
466
- // Ensure commands directory exists
467
- const commandsPath = getCommandsInstallPath(config.ai_tool);
468
- if (!existsSync(commandsPath)) {
469
- mkdirSync(commandsPath, { recursive: true });
470
- }
471
- // Find the actual source file
472
- const commandsDir = join(BUNDLED_SKILLS_DIR, skillName, 'commands');
473
- const files = readdirSync(commandsDir);
489
+ const files = readdirSync(commandsDir).filter(f => f.endsWith('.md') && f.toLowerCase() !== 'readme.md');
474
490
  const sourceFile = files.find(f => {
475
491
  const base = f.replace('.md', '');
476
492
  return base === cmdPart || base === cmdPart.replace(/\s+/g, '-');
@@ -478,6 +494,11 @@ export function installCommand(commandName, skillName) {
478
494
  if (!sourceFile) {
479
495
  return { success: false, message: `Command file not found for: ${commandName}` };
480
496
  }
497
+ // Ensure commands directory exists
498
+ const commandsPath = getCommandsInstallPath(config.platform);
499
+ if (!existsSync(commandsPath)) {
500
+ mkdirSync(commandsPath, { recursive: true });
501
+ }
481
502
  const actualSourcePath = join(commandsDir, sourceFile);
482
503
  const targetPath = join(commandsPath, sourceFile);
483
504
  try {
@@ -501,7 +522,7 @@ export function uninstallCommand(commandName, skillName) {
501
522
  message: `Command belongs to installed skill '${skillName}'. Uninstall the skill to remove this command.`,
502
523
  };
503
524
  }
504
- const commandsPath = getCommandsInstallPath(config.ai_tool);
525
+ const commandsPath = getCommandsInstallPath(config.platform);
505
526
  // Find the installed command file
506
527
  const cmdPart = commandName.startsWith(skillName + ' ')
507
528
  ? commandName.slice(skillName.length + 1)
@@ -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"}