@rpamis/comet 0.3.7 → 0.3.8
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/LICENSE +21 -21
- package/README.md +559 -539
- package/assets/manifest.json +41 -34
- package/assets/skills/comet/SKILL.md +282 -329
- package/assets/skills/comet/reference/auto-transition.md +27 -0
- package/assets/skills/comet/reference/comet-yaml-fields.md +68 -0
- package/assets/skills/comet/reference/context-recovery.md +35 -0
- package/assets/skills/comet/reference/debug-gate.md +17 -0
- package/assets/skills/comet/reference/decision-point.md +20 -0
- package/assets/skills/comet/reference/file-structure.md +28 -0
- package/assets/skills/comet/reference/subagent-dispatch.md +113 -0
- package/assets/skills/comet/rules/comet-phase-guard.en.md +99 -0
- package/assets/skills/comet/rules/comet-phase-guard.md +99 -90
- package/assets/skills/comet/scripts/comet-state.sh +62 -0
- package/assets/skills/comet-archive/SKILL.md +100 -106
- package/assets/skills/comet-build/SKILL.md +304 -316
- package/assets/skills/comet-design/SKILL.md +263 -272
- package/assets/skills/comet-hotfix/SKILL.md +204 -211
- package/assets/skills/comet-open/SKILL.md +203 -186
- package/assets/skills/comet-tweak/SKILL.md +180 -179
- package/assets/skills/comet-verify/SKILL.md +234 -240
- package/assets/skills-zh/comet/SKILL.md +269 -332
- package/assets/skills-zh/comet/reference/auto-transition.md +27 -0
- package/assets/skills-zh/comet/reference/comet-yaml-fields.md +68 -0
- package/assets/skills-zh/comet/reference/context-recovery.md +35 -0
- package/assets/skills-zh/comet/reference/debug-gate.md +17 -0
- package/assets/skills-zh/comet/reference/decision-point.md +20 -0
- package/assets/skills-zh/comet/reference/file-structure.md +28 -0
- package/assets/skills-zh/comet/reference/subagent-dispatch.md +113 -0
- package/assets/skills-zh/comet-archive/SKILL.md +100 -106
- package/assets/skills-zh/comet-build/SKILL.md +304 -316
- package/assets/skills-zh/comet-design/SKILL.md +264 -273
- package/assets/skills-zh/comet-hotfix/SKILL.md +200 -207
- package/assets/skills-zh/comet-open/SKILL.md +203 -186
- package/assets/skills-zh/comet-tweak/SKILL.md +176 -175
- package/assets/skills-zh/comet-verify/SKILL.md +232 -238
- package/bin/comet.js +3 -3
- package/dist/cli/index.js +19 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/uninstall.d.ts +9 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +113 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.d.ts +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +65 -36
- package/dist/commands/update.js.map +1 -1
- package/dist/core/codegraph.d.ts +2 -7
- package/dist/core/codegraph.d.ts.map +1 -1
- package/dist/core/codegraph.js +4 -37
- package/dist/core/codegraph.js.map +1 -1
- package/dist/core/detect.d.ts +8 -1
- package/dist/core/detect.d.ts.map +1 -1
- package/dist/core/detect.js +41 -2
- package/dist/core/detect.js.map +1 -1
- package/dist/core/openspec.d.ts +1 -1
- package/dist/core/openspec.d.ts.map +1 -1
- package/dist/core/openspec.js +40 -17
- package/dist/core/openspec.js.map +1 -1
- package/dist/core/platforms.d.ts.map +1 -1
- package/dist/core/platforms.js +14 -1
- package/dist/core/platforms.js.map +1 -1
- package/dist/core/skills.d.ts +3 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +142 -65
- package/dist/core/skills.js.map +1 -1
- package/dist/core/superpowers.d.ts.map +1 -1
- package/dist/core/superpowers.js +1 -0
- package/dist/core/superpowers.js.map +1 -1
- package/dist/core/uninstall.d.ts +28 -0
- package/dist/core/uninstall.d.ts.map +1 -0
- package/dist/core/uninstall.js +421 -0
- package/dist/core/uninstall.js.map +1 -0
- package/dist/core/version.d.ts +31 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +111 -0
- package/dist/core/version.js.map +1 -0
- package/dist/utils/file-system.d.ts +23 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +100 -5
- package/dist/utils/file-system.js.map +1 -1
- package/package.json +69 -64
- package/scripts/postinstall.js +44 -44
package/dist/core/detect.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import os from 'os';
|
|
3
|
-
import { fileExists, readDir } from '../utils/file-system.js';
|
|
3
|
+
import { fileExists, readDir, readJson } from '../utils/file-system.js';
|
|
4
4
|
import { PLATFORMS, getPlatformSkillsDirs } from './platforms.js';
|
|
5
5
|
const SUPERPOWERS_SKILLS = [
|
|
6
6
|
'brainstorming',
|
|
@@ -35,6 +35,40 @@ async function hasPluginSuperpowers() {
|
|
|
35
35
|
}
|
|
36
36
|
return false;
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if superpowers are installed via OpenCode plugin system.
|
|
40
|
+
* Checks multiple locations:
|
|
41
|
+
* 1. ~/.config/opencode/superpowers/skills/ — plugin source directory
|
|
42
|
+
* 2. ~/.config/opencode/opencode.json — plugin config with superpowers entry
|
|
43
|
+
*/
|
|
44
|
+
async function hasOpenCodePluginSuperpowers() {
|
|
45
|
+
const opencodeDir = process.env.OPENCODE_CONFIG_DIR || path.join(os.homedir(), '.config', 'opencode');
|
|
46
|
+
// Check plugin source directory: ~/.config/opencode/superpowers/skills/
|
|
47
|
+
const pluginSkillsDir = path.join(opencodeDir, 'superpowers', 'skills');
|
|
48
|
+
if (await fileExists(pluginSkillsDir)) {
|
|
49
|
+
const skills = await readDir(pluginSkillsDir);
|
|
50
|
+
if (SUPERPOWERS_SKILLS.some((name) => skills.includes(name))) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Check opencode.json config for superpowers plugin entry
|
|
55
|
+
const configPath = path.join(opencodeDir, 'opencode.json');
|
|
56
|
+
if (await fileExists(configPath)) {
|
|
57
|
+
try {
|
|
58
|
+
const config = (await readJson(configPath));
|
|
59
|
+
const plugins = config.plugin;
|
|
60
|
+
if (Array.isArray(plugins)) {
|
|
61
|
+
if (plugins.some((entry) => typeof entry === 'string' && entry.includes('superpowers'))) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Invalid JSON or unreadable — skip
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
38
72
|
async function hasOpenCodeCometCommands(baseDir, skillsDir, entries) {
|
|
39
73
|
const cometEntries = entries.filter((entry) => entry.startsWith('comet'));
|
|
40
74
|
if (cometEntries.length === 0)
|
|
@@ -133,7 +167,12 @@ async function hasSkills(baseDir, platform, component, _selectedPlatforms = [],
|
|
|
133
167
|
if (await hasPluginSuperpowers())
|
|
134
168
|
return true;
|
|
135
169
|
}
|
|
170
|
+
// Check OpenCode plugin system for plugin-installed superpowers
|
|
171
|
+
if (component === 'superpowers' && platform.id === 'opencode') {
|
|
172
|
+
if (await hasOpenCodePluginSuperpowers())
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
136
175
|
return false;
|
|
137
176
|
}
|
|
138
|
-
export { detectPlatforms, hasSkills, hasPluginSuperpowers, getBaseDir };
|
|
177
|
+
export { detectPlatforms, hasSkills, hasPluginSuperpowers, hasOpenCodePluginSuperpowers, getBaseDir, };
|
|
139
178
|
//# sourceMappingURL=detect.js.map
|
package/dist/core/detect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/core/detect.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/core/detect.ts"],"names":[],"mappings":"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"}
|
package/dist/core/openspec.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { InstallScope } from './types.js';
|
|
2
2
|
declare function getNpmExecutable(platform?: NodeJS.Platform): string;
|
|
3
|
-
declare function buildOpenSpecInitInvocation(projectPath: string, toolIds: string[], scope: InstallScope, homeDir?: string): {
|
|
3
|
+
declare function buildOpenSpecInitInvocation(projectPath: string, toolIds: string[], scope: InstallScope, homeDir?: string, includeProfileFlag?: boolean): {
|
|
4
4
|
command: string;
|
|
5
5
|
args: string[];
|
|
6
6
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openspec.d.ts","sourceRoot":"","sources":["../../src/core/openspec.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAiB/C,iBAAS,gBAAgB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,MAAM,CAE9E;AAED,iBAAS,2BAA2B,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,YAAY,EACnB,OAAO,SAAe,
|
|
1
|
+
{"version":3,"file":"openspec.d.ts","sourceRoot":"","sources":["../../src/core/openspec.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAiB/C,iBAAS,gBAAgB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,MAAM,CAE9E;AAED,iBAAS,2BAA2B,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,YAAY,EACnB,OAAO,SAAe,EACtB,kBAAkB,UAAO,GACxB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAOrC;AA0GD,iBAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQpD;AA+BD,iBAAS,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CA+C3D;AAED,iBAAe,eAAe,CAC5B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC,CAqE7C;AAED,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,2BAA2B,EAC3B,gBAAgB,EAChB,4BAA4B,GAC7B,CAAC"}
|
package/dist/core/openspec.js
CHANGED
|
@@ -21,12 +21,13 @@ const ALL_OPENSPEC_WORKFLOWS = [
|
|
|
21
21
|
function getNpmExecutable(platform = process.platform) {
|
|
22
22
|
return platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
23
23
|
}
|
|
24
|
-
function buildOpenSpecInitInvocation(projectPath, toolIds, scope, homeDir = os.homedir()) {
|
|
24
|
+
function buildOpenSpecInitInvocation(projectPath, toolIds, scope, homeDir = os.homedir(), includeProfileFlag = true) {
|
|
25
25
|
const targetPath = scope === 'global' ? homeDir : projectPath;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
args
|
|
29
|
-
}
|
|
26
|
+
const args = ['init', targetPath, '--tools', toolIds.join(',')];
|
|
27
|
+
if (includeProfileFlag) {
|
|
28
|
+
args.push('--profile', 'custom');
|
|
29
|
+
}
|
|
30
|
+
return { command: 'openspec', args };
|
|
30
31
|
}
|
|
31
32
|
const ALL_WORKFLOWS_CONFIG = JSON.stringify({
|
|
32
33
|
featureFlags: {},
|
|
@@ -128,10 +129,9 @@ function isCommandAvailable(command) {
|
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
async function ensureOpenSpecCli(scope, projectPath) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
console.log(` Installing OpenSpec CLI...`);
|
|
132
|
+
const alreadyInstalled = isCommandAvailable('openspec');
|
|
133
|
+
const label = alreadyInstalled ? 'Upgrading' : 'Installing';
|
|
134
|
+
console.warn(` ${label} OpenSpec CLI...`);
|
|
135
135
|
try {
|
|
136
136
|
const npmArgs = scope === 'global'
|
|
137
137
|
? ['install', '-g', '@fission-ai/openspec@latest']
|
|
@@ -145,6 +145,10 @@ async function ensureOpenSpecCli(scope, projectPath) {
|
|
|
145
145
|
return isCommandAvailable('openspec');
|
|
146
146
|
}
|
|
147
147
|
catch (error) {
|
|
148
|
+
if (alreadyInstalled) {
|
|
149
|
+
console.warn(` OpenSpec upgrade failed, using existing version: ${error.message}`);
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
148
152
|
console.error(` Failed to install OpenSpec CLI: ${error.message}`);
|
|
149
153
|
printCommandErrorDetails(error);
|
|
150
154
|
return false;
|
|
@@ -211,16 +215,35 @@ async function installOpenSpec(projectPath, toolIds, scope) {
|
|
|
211
215
|
let configBackup = null;
|
|
212
216
|
try {
|
|
213
217
|
const openspecEnv = createOpenSpecAllWorkflowsEnv();
|
|
214
|
-
const invocation = buildOpenSpecInitInvocation(projectPath, toolIds, scope);
|
|
215
218
|
configHome = openspecEnv.configHome;
|
|
216
219
|
configBackup = writeAllWorkflowsToDefaultConfig();
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
220
|
+
const invocation = buildOpenSpecInitInvocation(projectPath, toolIds, scope);
|
|
221
|
+
try {
|
|
222
|
+
execFileSync(invocation.command, invocation.args, {
|
|
223
|
+
cwd: projectPath,
|
|
224
|
+
env: openspecEnv.env,
|
|
225
|
+
stdio: ['inherit', 'inherit', 'pipe'],
|
|
226
|
+
timeout: 120_000,
|
|
227
|
+
shell: process.platform === 'win32',
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
catch (firstError) {
|
|
231
|
+
const stderrText = firstError.stderr?.toString() ?? '';
|
|
232
|
+
if (stderrText.includes('unknown option') && stderrText.includes('--profile')) {
|
|
233
|
+
console.warn(' OpenSpec does not support --profile flag, retrying without it...');
|
|
234
|
+
const fallbackInvocation = buildOpenSpecInitInvocation(projectPath, toolIds, scope, os.homedir(), false);
|
|
235
|
+
execFileSync(fallbackInvocation.command, fallbackInvocation.args, {
|
|
236
|
+
cwd: projectPath,
|
|
237
|
+
env: openspecEnv.env,
|
|
238
|
+
stdio: 'inherit',
|
|
239
|
+
timeout: 120_000,
|
|
240
|
+
shell: process.platform === 'win32',
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
throw firstError;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
224
247
|
if (scope === 'global' && toolIds.includes('opencode')) {
|
|
225
248
|
migrateOpenCodeOpenSpecPaths(os.homedir());
|
|
226
249
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openspec.js","sourceRoot":"","sources":["../../src/core/openspec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AACvE,MAAM,sBAAsB,GAAG;IAC7B,SAAS;IACT,SAAS;IACT,KAAK;IACL,UAAU;IACV,OAAO;IACP,IAAI;IACJ,MAAM;IACN,SAAS;IACT,cAAc;IACd,QAAQ;IACR,SAAS;CACD,CAAC;AAEX,SAAS,gBAAgB,CAAC,WAA4B,OAAO,CAAC,QAAQ;IACpE,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC;AAED,SAAS,2BAA2B,CAClC,WAAmB,EACnB,OAAiB,EACjB,KAAmB,EACnB,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"openspec.js","sourceRoot":"","sources":["../../src/core/openspec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platforms.d.ts","sourceRoot":"","sources":["../../src/core/platforms.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,sHAAsH;IACtH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8OAA8O;IAC9O,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oIAAoI;IACpI,WAAW,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;IACvC,uDAAuD;IACvD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qGAAqG;IACrG,UAAU,CAAC,EAAE,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC5F;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAKpF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAEvF;AAED,eAAO,MAAM,SAAS,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"platforms.d.ts","sourceRoot":"","sources":["../../src/core/platforms.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,sHAAsH;IACtH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8OAA8O;IAC9O,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oIAAoI;IACpI,WAAW,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;IACvC,uDAAuD;IACvD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qGAAqG;IACrG,UAAU,CAAC,EAAE,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC5F;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAKpF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAEvF;AAED,eAAO,MAAM,SAAS,EAAE,QAAQ,EA2N/B,CAAC"}
|
package/dist/core/platforms.js
CHANGED
|
@@ -174,6 +174,13 @@ export const PLATFORMS = [
|
|
|
174
174
|
supportsHooks: true,
|
|
175
175
|
hookFormat: 'kiro',
|
|
176
176
|
},
|
|
177
|
+
{
|
|
178
|
+
id: 'kimicode',
|
|
179
|
+
name: 'Kimi Code',
|
|
180
|
+
skillsDir: '.kimi-code',
|
|
181
|
+
globalSkillsDir: '.kimi-code',
|
|
182
|
+
openspecToolId: 'kimi',
|
|
183
|
+
},
|
|
177
184
|
{
|
|
178
185
|
id: 'lingma',
|
|
179
186
|
name: 'Lingma',
|
|
@@ -189,7 +196,13 @@ export const PLATFORMS = [
|
|
|
189
196
|
{ id: 'crush', name: 'Crush', skillsDir: '.crush', openspecToolId: 'crush' },
|
|
190
197
|
{ id: 'factory', name: 'Factory Droid', skillsDir: '.factory', openspecToolId: 'factory' },
|
|
191
198
|
{ id: 'iflow', name: 'iFlow', skillsDir: '.iflow', openspecToolId: 'iflow' },
|
|
192
|
-
{
|
|
199
|
+
{
|
|
200
|
+
id: 'pi',
|
|
201
|
+
name: 'Pi',
|
|
202
|
+
skillsDir: '.pi',
|
|
203
|
+
globalSkillsDir: '.pi/agent',
|
|
204
|
+
openspecToolId: 'pi',
|
|
205
|
+
},
|
|
193
206
|
{
|
|
194
207
|
id: 'qoder',
|
|
195
208
|
name: 'Qoder',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platforms.js","sourceRoot":"","sources":["../../src/core/platforms.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"platforms.js","sourceRoot":"","sources":["../../src/core/platforms.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuBH,MAAM,UAAU,oBAAoB,CAAC,QAAkB,EAAE,KAAmB;IAC1E,IAAI,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;QACnD,OAAO,QAAQ,CAAC,eAAe,CAAC;IAClC,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAkB,EAAE,KAAmB;IAC3E,OAAO,CAAC,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,SAAS;QAC1B,cAAc,EAAE,QAAQ;QACxB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,aAAa;KAC1B;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,SAAS;QAC1B,cAAc,EAAE,QAAQ;QACxB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,KAAK;KACnB;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,QAAQ;QACzB,cAAc,EAAE,OAAO;QACvB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,aAAa;KAC1B;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,WAAW;QACtB,eAAe,EAAE,kBAAkB;QACnC,cAAc,EAAE,UAAU;QAC1B,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,WAAW;QACtB,eAAe,EAAE,WAAW;QAC5B,cAAc,EAAE,UAAU;QAC1B,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,UAAU;KACvB;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,QAAQ;QACzB,cAAc,EAAE,OAAO;QACvB,qEAAqE;QACrE,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,MAAM;QACjB,eAAe,EAAE,MAAM;QACvB,cAAc,EAAE,SAAS;QACzB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,WAAW;QACtB,eAAe,EAAE,WAAW;QAC5B,cAAc,EAAE,UAAU;QAC1B,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,SAAS;QAC1B,cAAc,EAAE;YACd,iCAAiC;YACjC,sBAAsB;YACtB,iBAAiB;YACjB,gBAAgB;SACjB;QACD,cAAc,EAAE,gBAAgB;QAChC,6DAA6D;QAC7D,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,SAAS;KACtB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,SAAS;QAC1B,cAAc,EAAE,QAAQ;QACxB,mEAAmE;QACnE,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,QAAQ;KACrB;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,oBAAoB;QAC1B,SAAS,EAAE,UAAU;QACrB,eAAe,EAAE,UAAU;QAC3B,cAAc,EAAE,UAAU;QAC1B,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,aAAa;KAC1B;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,OAAO;QACxB,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,MAAM;KACnB;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,WAAW;QACtB,eAAe,EAAE,WAAW;QAC5B,cAAc,EAAE,UAAU;QAC1B,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,sBAAsB;QAC5B,SAAS,EAAE,UAAU;QACrB,eAAe,EAAE,UAAU;QAC3B,cAAc,EAAE,QAAQ;QACxB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,OAAO;QACxB,cAAc,EAAE,MAAM;QACtB,6CAA6C;QAC7C,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,MAAM;KACnB;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,YAAY;QACvB,eAAe,EAAE,YAAY;QAC7B,cAAc,EAAE,MAAM;KACvB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,SAAS;QAC1B,cAAc,EAAE,QAAQ;QACxB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;KAClB;IACD,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE;IAC5E,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE;IACjG,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE;IACtF,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE;IAC5E,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE;IAC1F,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE;IAC5E;QACE,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,KAAK;QAChB,eAAe,EAAE,WAAW;QAC5B,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,QAAQ;QACzB,cAAc,EAAE,OAAO;QACvB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,OAAO;KACpB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,qBAAqB;QACtC,cAAc,EAAE,aAAa;KAC9B;IACD,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE;IAC1E,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE;IACxF;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,OAAO;QACxB,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,IAAI;KAClB;CACF,CAAC"}
|
package/dist/core/skills.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ declare function copyCometRulesForPlatform(baseDir: string, platform: Platform,
|
|
|
35
35
|
copied: number;
|
|
36
36
|
skipped: number;
|
|
37
37
|
}>;
|
|
38
|
+
declare function computeRuleDestPath(rulesDestDir: string, ruleFileName: string, rulesFormat: string): string;
|
|
38
39
|
/**
|
|
39
40
|
* Install Comet hooks for platforms that support them.
|
|
40
41
|
* Supports multiple hook formats:
|
|
@@ -50,7 +51,8 @@ declare function installCometHooksForPlatform(baseDir: string, platform: Platfor
|
|
|
50
51
|
installed: boolean;
|
|
51
52
|
reason?: string;
|
|
52
53
|
}>;
|
|
54
|
+
declare function isManagedHookCommand(command: unknown, scriptRelPaths: string[]): boolean;
|
|
53
55
|
declare function createWorkingDirs(projectPath: string): Promise<void>;
|
|
54
|
-
export { copyCometSkillsForPlatform, copyCometRulesForPlatform, installCometHooksForPlatform, readManifest, getManifestSkills, createWorkingDirs, getAssetsDir, };
|
|
56
|
+
export { copyCometSkillsForPlatform, copyCometRulesForPlatform, installCometHooksForPlatform, readManifest, getManifestSkills, createWorkingDirs, getAssetsDir, computeRuleDestPath, isManagedHookCommand, };
|
|
55
57
|
export type { Manifest, LanguageConfig };
|
|
56
58
|
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAKA,OAAO,EAAwB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,KAAK,cAAc,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAKA,OAAO,EAAwB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,KAAK,cAAc,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B,CAAC;AASF,iBAAS,YAAY,IAAI,MAAM,CAE9B;AAED,iBAAe,0BAA0B,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,OAAO,EAClB,iBAAiB,GAAE,MAAiB,EACpC,KAAK,GAAE,YAAwB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA6D9C;AA6ID,iBAAe,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,CAI/C;AAED,iBAAe,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAGpD;AAED;;;;;;;GAOG;AACH,iBAAe,yBAAyB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,OAAO,EAClB,KAAK,GAAE,YAAwB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAmD9C;AAED,iBAAS,mBAAmB,CAC1B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,MAAM,CASR;AAyBD;;;;;;;;;;GAUG;AACH,iBAAe,4BAA4B,CACzC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,KAAK,GAAE,YAAwB,GAC9B,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoClD;AAOD,iBAAS,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAYjF;AA8SD,iBAAe,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAenE;AAED,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,GACrB,CAAC;AACF,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/core/skills.js
CHANGED
|
@@ -5,10 +5,11 @@ import { fileExists, readJson, copyFile, ensureDir } from '../utils/file-system.
|
|
|
5
5
|
import { getPlatformSkillsDir } from './platforms.js';
|
|
6
6
|
const __filename = fileURLToPath(import.meta.url);
|
|
7
7
|
const __dirname = path.dirname(__filename);
|
|
8
|
-
const OPENCODE_COMMAND_HEADER = `---
|
|
9
|
-
description: Run the {skillName} Comet workflow
|
|
10
|
-
---
|
|
8
|
+
const OPENCODE_COMMAND_HEADER = `---
|
|
9
|
+
description: Run the {skillName} Comet workflow
|
|
10
|
+
---
|
|
11
11
|
`;
|
|
12
|
+
const PI_COMMAND_EXTENSION_FILE = 'comet-commands.ts';
|
|
12
13
|
function getAssetsDir() {
|
|
13
14
|
return path.resolve(__dirname, '..', '..', 'assets');
|
|
14
15
|
}
|
|
@@ -46,8 +47,72 @@ async function copyCometSkillsForPlatform(baseDir, platform, overwrite, language
|
|
|
46
47
|
copied += result.copied;
|
|
47
48
|
skippedCount += result.skipped;
|
|
48
49
|
}
|
|
50
|
+
if (platform.id === 'pi') {
|
|
51
|
+
const result = await createPiCommandExtension(baseDir, platform, manifest.skills, overwrite, scope);
|
|
52
|
+
copied += result.copied;
|
|
53
|
+
skippedCount += result.skipped;
|
|
54
|
+
}
|
|
49
55
|
return { copied, skipped: skippedCount };
|
|
50
56
|
}
|
|
57
|
+
function getTopLevelSkillNames(skillPaths) {
|
|
58
|
+
return skillPaths.flatMap((skillPath) => {
|
|
59
|
+
const parts = skillPath.split('/');
|
|
60
|
+
return parts.length === 2 && parts[1] === 'SKILL.md' ? [parts[0]] : [];
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function renderPiCommandExtension(skillNames) {
|
|
64
|
+
return `import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
65
|
+
|
|
66
|
+
const commands = ${JSON.stringify(skillNames, null, 2)} as const;
|
|
67
|
+
|
|
68
|
+
export default function registerCometCommands(pi: ExtensionAPI) {
|
|
69
|
+
for (const name of commands) {
|
|
70
|
+
pi.registerCommand(name, {
|
|
71
|
+
description: \`Comet: /\${name}\`,
|
|
72
|
+
handler: async (args) => {
|
|
73
|
+
pi.sendUserMessage(args ? \`/skill:\${name} \${args}\` : \`/skill:\${name}\`);
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
`;
|
|
79
|
+
}
|
|
80
|
+
async function createPiCommandExtension(baseDir, platform, skillPaths, overwrite, scope) {
|
|
81
|
+
const platformBase = path.join(baseDir, getPlatformSkillsDir(platform, scope));
|
|
82
|
+
const settingsPath = path.join(platformBase, 'settings.json');
|
|
83
|
+
const extensionPath = path.join(platformBase, 'extensions', PI_COMMAND_EXTENSION_FILE);
|
|
84
|
+
let settings = {};
|
|
85
|
+
if (await fileExists(settingsPath)) {
|
|
86
|
+
try {
|
|
87
|
+
const parsed = JSON.parse(await readFile(settingsPath, 'utf-8'));
|
|
88
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
89
|
+
throw new Error('expected a JSON object');
|
|
90
|
+
}
|
|
91
|
+
settings = parsed;
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
throw new Error(`Invalid Pi settings at ${settingsPath}: ${err.message}`, {
|
|
95
|
+
cause: err,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
let copied = 0;
|
|
100
|
+
let skipped = 0;
|
|
101
|
+
if (settings.enableSkillCommands !== true) {
|
|
102
|
+
settings.enableSkillCommands = true;
|
|
103
|
+
await ensureDir(path.dirname(settingsPath));
|
|
104
|
+
await writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
105
|
+
copied++;
|
|
106
|
+
}
|
|
107
|
+
if (!overwrite && (await fileExists(extensionPath))) {
|
|
108
|
+
skipped++;
|
|
109
|
+
return { copied, skipped };
|
|
110
|
+
}
|
|
111
|
+
await ensureDir(path.dirname(extensionPath));
|
|
112
|
+
await writeFile(extensionPath, renderPiCommandExtension(getTopLevelSkillNames(skillPaths)), 'utf-8');
|
|
113
|
+
copied++;
|
|
114
|
+
return { copied, skipped };
|
|
115
|
+
}
|
|
51
116
|
function stripFrontmatter(content) {
|
|
52
117
|
if (!content.startsWith('---\n') && !content.startsWith('---\r\n')) {
|
|
53
118
|
return content.trimStart();
|
|
@@ -79,17 +144,17 @@ async function createOpenCodeCommands(baseDir, platform, skillPaths, overwrite,
|
|
|
79
144
|
skillSourcePath = path.join(assetsDir, 'skills', skillPath);
|
|
80
145
|
}
|
|
81
146
|
const skillBody = stripFrontmatter(await readFile(skillSourcePath, 'utf-8'));
|
|
82
|
-
const content = `${OPENCODE_COMMAND_HEADER.replace('{skillName}', skillName)}
|
|
83
|
-
Equivalent Comet skill: \`${skillName}\`
|
|
84
|
-
Command name: \`/${skillName}\`
|
|
85
|
-
|
|
86
|
-
Use the invocation arguments below as the user input for this workflow:
|
|
87
|
-
|
|
88
|
-
\`\`\`text
|
|
89
|
-
$ARGUMENTS
|
|
90
|
-
\`\`\`
|
|
91
|
-
|
|
92
|
-
${skillBody}
|
|
147
|
+
const content = `${OPENCODE_COMMAND_HEADER.replace('{skillName}', skillName)}
|
|
148
|
+
Equivalent Comet skill: \`${skillName}\`
|
|
149
|
+
Command name: \`/${skillName}\`
|
|
150
|
+
|
|
151
|
+
Use the invocation arguments below as the user input for this workflow:
|
|
152
|
+
|
|
153
|
+
\`\`\`text
|
|
154
|
+
$ARGUMENTS
|
|
155
|
+
\`\`\`
|
|
156
|
+
|
|
157
|
+
${skillBody}
|
|
93
158
|
`;
|
|
94
159
|
await writeFile(dest, content, 'utf-8');
|
|
95
160
|
copied++;
|
|
@@ -171,20 +236,20 @@ function computeRuleDestPath(rulesDestDir, ruleFileName, rulesFormat) {
|
|
|
171
236
|
function formatRuleContent(content, ruleFileName, rulesFormat) {
|
|
172
237
|
if (rulesFormat === 'mdc') {
|
|
173
238
|
// Cursor MDC: wrap in YAML frontmatter
|
|
174
|
-
return `---
|
|
175
|
-
description: ${ruleFileName.replace(/\.md$/, '').replace(/-/g, ' ')}
|
|
176
|
-
globs:
|
|
177
|
-
alwaysApply: true
|
|
178
|
-
---
|
|
179
|
-
|
|
239
|
+
return `---
|
|
240
|
+
description: ${ruleFileName.replace(/\.md$/, '').replace(/-/g, ' ')}
|
|
241
|
+
globs:
|
|
242
|
+
alwaysApply: true
|
|
243
|
+
---
|
|
244
|
+
|
|
180
245
|
${content}`;
|
|
181
246
|
}
|
|
182
247
|
if (rulesFormat === 'copilot') {
|
|
183
248
|
// GitHub Copilot: wrap in applyTo frontmatter (apply to all files)
|
|
184
|
-
return `---
|
|
185
|
-
applyTo: "**"
|
|
186
|
-
---
|
|
187
|
-
|
|
249
|
+
return `---
|
|
250
|
+
applyTo: "**"
|
|
251
|
+
---
|
|
252
|
+
|
|
188
253
|
${content}`;
|
|
189
254
|
}
|
|
190
255
|
// Plain markdown — no transformation
|
|
@@ -240,6 +305,45 @@ async function installCometHooksForPlatform(baseDir, platform, scope = 'project'
|
|
|
240
305
|
function buildHookCommand(skillsDir, scriptRelPath) {
|
|
241
306
|
return `bash ${skillsDir}/skills/${scriptRelPath}`;
|
|
242
307
|
}
|
|
308
|
+
function isManagedHookCommand(command, scriptRelPaths) {
|
|
309
|
+
if (typeof command !== 'string')
|
|
310
|
+
return false;
|
|
311
|
+
const commandPath = command
|
|
312
|
+
.trim()
|
|
313
|
+
.match(/^bash\s+["']?([^"'\s]+)["']?(?:\s|$)/)?.[1]
|
|
314
|
+
?.replace(/\\/g, '/');
|
|
315
|
+
if (!commandPath)
|
|
316
|
+
return false;
|
|
317
|
+
return scriptRelPaths.some((scriptRelPath) => commandPath.endsWith(`/skills/${scriptRelPath.replace(/\\/g, '/')}`));
|
|
318
|
+
}
|
|
319
|
+
function mergeHookGroups(existingGroups, newGroups, scriptRelPaths) {
|
|
320
|
+
const mergedGroups = existingGroups.flatMap((group) => {
|
|
321
|
+
if (!Array.isArray(group.hooks))
|
|
322
|
+
return [group];
|
|
323
|
+
const hooks = group.hooks.filter((hook) => !isManagedHookCommand(hook.command, scriptRelPaths));
|
|
324
|
+
if (hooks.length === 0 && group.hooks.length > 0)
|
|
325
|
+
return [];
|
|
326
|
+
return [{ ...group, hooks }];
|
|
327
|
+
});
|
|
328
|
+
for (const newGroup of newGroups) {
|
|
329
|
+
const existingGroup = mergedGroups.find((group) => group.matcher === newGroup.matcher && Array.isArray(group.hooks));
|
|
330
|
+
if (existingGroup) {
|
|
331
|
+
existingGroup.hooks = [...existingGroup.hooks, ...newGroup.hooks];
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
mergedGroups.push(newGroup);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return mergedGroups;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Coerce a parsed hooks group into an array. Hand-edited settings files may
|
|
341
|
+
* store a group as an object or scalar; treat anything non-array as empty so
|
|
342
|
+
* downstream merge/filter logic cannot throw on malformed input.
|
|
343
|
+
*/
|
|
344
|
+
function asHookGroup(value) {
|
|
345
|
+
return Array.isArray(value) ? value : [];
|
|
346
|
+
}
|
|
243
347
|
/**
|
|
244
348
|
* Claude Code, Codex, Amazon Q format:
|
|
245
349
|
* Writes to settings.local.json with { hooks: { PreToolUse: [...] } }
|
|
@@ -266,16 +370,8 @@ async function installClaudeCodeHooks(platformBase, skillsDir, hooksConfig) {
|
|
|
266
370
|
}
|
|
267
371
|
}
|
|
268
372
|
const existingHooks = settings.hooks ?? {};
|
|
269
|
-
const existingPreToolUse = existingHooks.PreToolUse
|
|
270
|
-
|
|
271
|
-
const matchersSeen = new Set();
|
|
272
|
-
const merged = [];
|
|
273
|
-
for (const entry of [...newEntries, ...existingPreToolUse]) {
|
|
274
|
-
if (!matchersSeen.has(entry.matcher)) {
|
|
275
|
-
matchersSeen.add(entry.matcher);
|
|
276
|
-
merged.push(entry);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
373
|
+
const existingPreToolUse = asHookGroup(existingHooks.PreToolUse);
|
|
374
|
+
const merged = mergeHookGroups(existingPreToolUse, newEntries, Object.keys(hooksConfig));
|
|
279
375
|
settings.hooks = { ...existingHooks, PreToolUse: merged };
|
|
280
376
|
await ensureDir(path.dirname(settingsPath));
|
|
281
377
|
await writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
@@ -313,16 +409,9 @@ async function installQwenStyleHooks(platformBase, skillsDir, hooksConfig, _hook
|
|
|
313
409
|
}
|
|
314
410
|
}
|
|
315
411
|
const existingHooks = settings.hooks ?? {};
|
|
316
|
-
const existingPreToolUse = existingHooks.PreToolUse
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
for (const entry of preToolUseEntries) {
|
|
320
|
-
const hasNew = entry.hooks.some((h) => !existingDescs.has(h.description));
|
|
321
|
-
if (hasNew) {
|
|
322
|
-
existingPreToolUse.push(entry);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
settings.hooks = { ...existingHooks, PreToolUse: existingPreToolUse };
|
|
412
|
+
const existingPreToolUse = asHookGroup(existingHooks.PreToolUse);
|
|
413
|
+
const merged = mergeHookGroups(existingPreToolUse, preToolUseEntries, Object.keys(hooksConfig));
|
|
414
|
+
settings.hooks = { ...existingHooks, PreToolUse: merged };
|
|
326
415
|
await ensureDir(path.dirname(settingsPath));
|
|
327
416
|
await writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
328
417
|
return { installed: true };
|
|
@@ -356,15 +445,9 @@ async function installGeminiHooks(platformBase, skillsDir, hooksConfig) {
|
|
|
356
445
|
}
|
|
357
446
|
}
|
|
358
447
|
const existingHooks = settings.hooks ?? {};
|
|
359
|
-
const existingBeforeTool = existingHooks.BeforeTool
|
|
360
|
-
const
|
|
361
|
-
|
|
362
|
-
const hasNew = entry.hooks.some((h) => !existingNames.has(h.name));
|
|
363
|
-
if (hasNew) {
|
|
364
|
-
existingBeforeTool.push(entry);
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
settings.hooks = { ...existingHooks, BeforeTool: existingBeforeTool };
|
|
448
|
+
const existingBeforeTool = asHookGroup(existingHooks.BeforeTool);
|
|
449
|
+
const merged = mergeHookGroups(existingBeforeTool, entries, Object.keys(hooksConfig));
|
|
450
|
+
settings.hooks = { ...existingHooks, BeforeTool: merged };
|
|
368
451
|
await ensureDir(path.dirname(settingsPath));
|
|
369
452
|
await writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
370
453
|
return { installed: true };
|
|
@@ -376,7 +459,7 @@ async function installGeminiHooks(platformBase, skillsDir, hooksConfig) {
|
|
|
376
459
|
async function installWindsurfHooks(platformBase, skillsDir, hooksConfig) {
|
|
377
460
|
const hooksPath = path.join(platformBase, 'hooks.json');
|
|
378
461
|
const entries = [];
|
|
379
|
-
for (const [scriptRelPath
|
|
462
|
+
for (const [scriptRelPath] of Object.entries(hooksConfig)) {
|
|
380
463
|
entries.push({
|
|
381
464
|
command: buildHookCommand(skillsDir, scriptRelPath),
|
|
382
465
|
show_output: true,
|
|
@@ -392,15 +475,10 @@ async function installWindsurfHooks(platformBase, skillsDir, hooksConfig) {
|
|
|
392
475
|
}
|
|
393
476
|
}
|
|
394
477
|
const existingHooks = hooksFile.hooks ?? {};
|
|
395
|
-
const existingPreWrite = existingHooks.pre_write_code
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
if (!existingCmds.has(entry.command)) {
|
|
400
|
-
existingPreWrite.push(entry);
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
hooksFile.hooks = { ...existingHooks, pre_write_code: existingPreWrite };
|
|
478
|
+
const existingPreWrite = asHookGroup(existingHooks.pre_write_code);
|
|
479
|
+
const merged = existingPreWrite.filter((entry) => !isManagedHookCommand(entry.command, Object.keys(hooksConfig)));
|
|
480
|
+
merged.push(...entries);
|
|
481
|
+
hooksFile.hooks = { ...existingHooks, pre_write_code: merged };
|
|
404
482
|
await ensureDir(path.dirname(hooksPath));
|
|
405
483
|
await writeFile(hooksPath, JSON.stringify(hooksFile, null, 2) + '\n', 'utf-8');
|
|
406
484
|
return { installed: true };
|
|
@@ -438,7 +516,6 @@ async function installKiroHooks(platformBase, skillsDir, hooksConfig) {
|
|
|
438
516
|
const hookFileName = path.basename(scriptRelPath).replace(/\.sh$/, '.kiro.hook');
|
|
439
517
|
const hookFilePath = path.join(hooksDir, hookFileName);
|
|
440
518
|
// Map Write|Edit matcher to Kiro's write tool category
|
|
441
|
-
const kiroEvent = config.matcher === 'Write|Edit' ? 'Pre Tool Use' : 'Pre Tool Use';
|
|
442
519
|
const toolName = config.matcher === 'Write|Edit' ? 'write' : '*';
|
|
443
520
|
const hookConfig = {
|
|
444
521
|
enabled: true,
|
|
@@ -473,5 +550,5 @@ async function createWorkingDirs(projectPath) {
|
|
|
473
550
|
await writeFile(configPath, 'context_compression: off\nauto_transition: true\n', 'utf-8');
|
|
474
551
|
}
|
|
475
552
|
}
|
|
476
|
-
export { copyCometSkillsForPlatform, copyCometRulesForPlatform, installCometHooksForPlatform, readManifest, getManifestSkills, createWorkingDirs, getAssetsDir, };
|
|
553
|
+
export { copyCometSkillsForPlatform, copyCometRulesForPlatform, installCometHooksForPlatform, readManifest, getManifestSkills, createWorkingDirs, getAssetsDir, computeRuleDestPath, isManagedHookCommand, };
|
|
477
554
|
//# sourceMappingURL=skills.js.map
|