@rpamis/comet 0.3.5 → 0.3.7
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 +180 -56
- package/assets/manifest.json +11 -1
- package/assets/skills/comet/SKILL.md +59 -24
- package/assets/skills/comet/reference/dirty-worktree.md +1 -0
- package/assets/skills/comet/rules/comet-phase-guard.md +90 -0
- package/assets/skills/comet/scripts/comet-archive.sh +75 -57
- package/assets/skills/comet/scripts/comet-env.sh +57 -2
- package/assets/skills/comet/scripts/comet-guard.sh +187 -29
- package/assets/skills/comet/scripts/comet-handoff.sh +137 -8
- package/assets/skills/comet/scripts/comet-hook-guard.sh +260 -0
- package/assets/skills/comet/scripts/comet-state.sh +312 -25
- package/assets/skills/comet/scripts/comet-yaml-validate.sh +26 -1
- package/assets/skills/comet-archive/SKILL.md +45 -12
- package/assets/skills/comet-build/SKILL.md +159 -33
- package/assets/skills/comet-design/SKILL.md +129 -23
- package/assets/skills/comet-hotfix/SKILL.md +57 -15
- package/assets/skills/comet-open/SKILL.md +90 -17
- package/assets/skills/comet-tweak/SKILL.md +40 -15
- package/assets/skills/comet-verify/SKILL.md +64 -25
- package/assets/skills-zh/comet/SKILL.md +63 -25
- package/assets/skills-zh/comet/reference/dirty-worktree.md +2 -1
- package/assets/skills-zh/comet-archive/SKILL.md +46 -13
- package/assets/skills-zh/comet-build/SKILL.md +161 -35
- package/assets/skills-zh/comet-design/SKILL.md +132 -25
- package/assets/skills-zh/comet-hotfix/SKILL.md +53 -15
- package/assets/skills-zh/comet-open/SKILL.md +90 -17
- package/assets/skills-zh/comet-tweak/SKILL.md +36 -15
- package/assets/skills-zh/comet-verify/SKILL.md +64 -27
- package/bin/comet.js +3 -3
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +22 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +5 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +64 -9
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +60 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/core/codegraph.d.ts +9 -0
- package/dist/core/codegraph.d.ts.map +1 -0
- package/dist/core/codegraph.js +96 -0
- package/dist/core/codegraph.js.map +1 -0
- package/dist/core/platforms.d.ts +10 -0
- package/dist/core/platforms.d.ts.map +1 -1
- package/dist/core/platforms.js +163 -15
- package/dist/core/platforms.js.map +1 -1
- package/dist/core/skills.d.ts +34 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +360 -1
- package/dist/core/skills.js.map +1 -1
- package/package.json +3 -1
- package/scripts/postinstall.js +44 -44
package/dist/core/skills.js
CHANGED
|
@@ -105,14 +105,373 @@ async function getManifestSkills() {
|
|
|
105
105
|
const manifest = await readManifest();
|
|
106
106
|
return manifest.skills;
|
|
107
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Copy Comet rule files to a platform's rules directory.
|
|
110
|
+
* Formats:
|
|
111
|
+
* 'md' = plain markdown copy
|
|
112
|
+
* 'mdc' = Cursor MDC with frontmatter
|
|
113
|
+
* 'copilot' = GitHub Copilot .instructions.md with applyTo frontmatter
|
|
114
|
+
* Skips platforms without rulesDir.
|
|
115
|
+
*/
|
|
116
|
+
async function copyCometRulesForPlatform(baseDir, platform, overwrite, scope = 'project') {
|
|
117
|
+
if (!platform.rulesDir || !platform.rulesFormat) {
|
|
118
|
+
return { copied: 0, skipped: 0 };
|
|
119
|
+
}
|
|
120
|
+
const manifest = await readManifest();
|
|
121
|
+
const rulePaths = manifest.rules;
|
|
122
|
+
if (!rulePaths || rulePaths.length === 0) {
|
|
123
|
+
return { copied: 0, skipped: 0 };
|
|
124
|
+
}
|
|
125
|
+
const assetsDir = getAssetsDir();
|
|
126
|
+
// Support platforms whose rules live outside the skills config dir
|
|
127
|
+
// (e.g., Cline: rules go to .clinerules/ at project root, not .cline/rules/)
|
|
128
|
+
const rulesBase = platform.rulesBaseDir !== undefined
|
|
129
|
+
? platform.rulesBaseDir === ''
|
|
130
|
+
? baseDir
|
|
131
|
+
: path.join(baseDir, platform.rulesBaseDir)
|
|
132
|
+
: path.join(baseDir, getPlatformSkillsDir(platform, scope));
|
|
133
|
+
let copied = 0;
|
|
134
|
+
let skippedCount = 0;
|
|
135
|
+
for (const ruleRelPath of rulePaths) {
|
|
136
|
+
const src = path.join(assetsDir, 'skills', ruleRelPath);
|
|
137
|
+
if (!(await fileExists(src))) {
|
|
138
|
+
console.error(` Rule source not found: ${ruleRelPath}`);
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const ruleFileName = path.basename(ruleRelPath);
|
|
142
|
+
const rulesDestDir = path.join(rulesBase, platform.rulesDir);
|
|
143
|
+
const dest = computeRuleDestPath(rulesDestDir, ruleFileName, platform.rulesFormat);
|
|
144
|
+
if (!overwrite && (await fileExists(dest))) {
|
|
145
|
+
skippedCount++;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
try {
|
|
149
|
+
const content = await readFile(src, 'utf-8');
|
|
150
|
+
await ensureDir(path.dirname(dest));
|
|
151
|
+
const formatted = formatRuleContent(content, ruleFileName, platform.rulesFormat);
|
|
152
|
+
await writeFile(dest, formatted, 'utf-8');
|
|
153
|
+
copied++;
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
console.error(` Failed to copy rule ${ruleRelPath}: ${err.message}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return { copied, skipped: skippedCount };
|
|
160
|
+
}
|
|
161
|
+
function computeRuleDestPath(rulesDestDir, ruleFileName, rulesFormat) {
|
|
162
|
+
if (rulesFormat === 'mdc') {
|
|
163
|
+
return path.join(rulesDestDir, ruleFileName.replace(/\.md$/, '.mdc'));
|
|
164
|
+
}
|
|
165
|
+
if (rulesFormat === 'copilot') {
|
|
166
|
+
// GitHub Copilot: comet-phase-guard.md → comet-phase-guard.instructions.md
|
|
167
|
+
return path.join(rulesDestDir, ruleFileName.replace(/\.md$/, '.instructions.md'));
|
|
168
|
+
}
|
|
169
|
+
return path.join(rulesDestDir, ruleFileName);
|
|
170
|
+
}
|
|
171
|
+
function formatRuleContent(content, ruleFileName, rulesFormat) {
|
|
172
|
+
if (rulesFormat === 'mdc') {
|
|
173
|
+
// Cursor MDC: wrap in YAML frontmatter
|
|
174
|
+
return `---
|
|
175
|
+
description: ${ruleFileName.replace(/\.md$/, '').replace(/-/g, ' ')}
|
|
176
|
+
globs:
|
|
177
|
+
alwaysApply: true
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
${content}`;
|
|
181
|
+
}
|
|
182
|
+
if (rulesFormat === 'copilot') {
|
|
183
|
+
// GitHub Copilot: wrap in applyTo frontmatter (apply to all files)
|
|
184
|
+
return `---
|
|
185
|
+
applyTo: "**"
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
${content}`;
|
|
189
|
+
}
|
|
190
|
+
// Plain markdown — no transformation
|
|
191
|
+
return content;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Install Comet hooks for platforms that support them.
|
|
195
|
+
* Supports multiple hook formats:
|
|
196
|
+
* 'claude-code' — settings.local.json with PreToolUse array (Claude Code, Codex, Amazon Q)
|
|
197
|
+
* 'qwen' — settings.json with PreToolUse/hooks array (Qwen Code)
|
|
198
|
+
* 'qoder' — settings.json with PreToolUse/hooks array (Qoder)
|
|
199
|
+
* 'gemini' — settings.json with hooks.BeforeTool array (Gemini CLI)
|
|
200
|
+
* 'windsurf' — hooks.json with pre_write_code array
|
|
201
|
+
* 'copilot' — hooks/*.json with preToolUse
|
|
202
|
+
* 'kiro' — hooks/*.kiro.hook JSON files
|
|
203
|
+
*/
|
|
204
|
+
async function installCometHooksForPlatform(baseDir, platform, scope = 'project') {
|
|
205
|
+
if (!platform.supportsHooks || !platform.hookFormat) {
|
|
206
|
+
return { installed: false, reason: 'platform does not support hooks' };
|
|
207
|
+
}
|
|
208
|
+
const manifest = await readManifest();
|
|
209
|
+
const hooksConfig = manifest.hooks;
|
|
210
|
+
if (!hooksConfig || Object.keys(hooksConfig).length === 0) {
|
|
211
|
+
return { installed: false, reason: 'no hooks defined in manifest' };
|
|
212
|
+
}
|
|
213
|
+
const hookFormat = platform.hookFormat;
|
|
214
|
+
const skillsDir = getPlatformSkillsDir(platform, scope);
|
|
215
|
+
const platformBase = path.join(baseDir, skillsDir);
|
|
216
|
+
try {
|
|
217
|
+
switch (hookFormat) {
|
|
218
|
+
case 'claude-code':
|
|
219
|
+
return installClaudeCodeHooks(platformBase, skillsDir, hooksConfig);
|
|
220
|
+
case 'qwen':
|
|
221
|
+
case 'qoder':
|
|
222
|
+
return installQwenStyleHooks(platformBase, skillsDir, hooksConfig, hookFormat);
|
|
223
|
+
case 'gemini':
|
|
224
|
+
return installGeminiHooks(platformBase, skillsDir, hooksConfig);
|
|
225
|
+
case 'windsurf':
|
|
226
|
+
return installWindsurfHooks(platformBase, skillsDir, hooksConfig);
|
|
227
|
+
case 'copilot':
|
|
228
|
+
return installCopilotHooks(platformBase, skillsDir, hooksConfig);
|
|
229
|
+
case 'kiro':
|
|
230
|
+
return installKiroHooks(platformBase, skillsDir, hooksConfig);
|
|
231
|
+
default:
|
|
232
|
+
return { installed: false, reason: `unsupported hook format: ${hookFormat}` };
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
catch (err) {
|
|
236
|
+
return { installed: false, reason: err.message };
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/** Build the command path for a hook script given its manifest rel path and skillsDir */
|
|
240
|
+
function buildHookCommand(skillsDir, scriptRelPath) {
|
|
241
|
+
return `bash ${skillsDir}/skills/${scriptRelPath}`;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Claude Code, Codex, Amazon Q format:
|
|
245
|
+
* Writes to settings.local.json with { hooks: { PreToolUse: [...] } }
|
|
246
|
+
*/
|
|
247
|
+
async function installClaudeCodeHooks(platformBase, skillsDir, hooksConfig) {
|
|
248
|
+
const settingsPath = path.join(platformBase, 'settings.local.json');
|
|
249
|
+
// Group by matcher so hooks sharing the same matcher are merged
|
|
250
|
+
const matcherGroups = {};
|
|
251
|
+
for (const [scriptRelPath, config] of Object.entries(hooksConfig)) {
|
|
252
|
+
const command = buildHookCommand(skillsDir, scriptRelPath);
|
|
253
|
+
if (!matcherGroups[config.matcher]) {
|
|
254
|
+
matcherGroups[config.matcher] = [];
|
|
255
|
+
}
|
|
256
|
+
matcherGroups[config.matcher].push({ type: 'command', command });
|
|
257
|
+
}
|
|
258
|
+
const newEntries = Object.entries(matcherGroups).map(([matcher, hooks]) => ({ matcher, hooks }));
|
|
259
|
+
let settings = {};
|
|
260
|
+
if (await fileExists(settingsPath)) {
|
|
261
|
+
try {
|
|
262
|
+
settings = JSON.parse(await readFile(settingsPath, 'utf-8'));
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
settings = {};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const existingHooks = settings.hooks ?? {};
|
|
269
|
+
const existingPreToolUse = existingHooks.PreToolUse ?? [];
|
|
270
|
+
// Deduplicate by matcher — replace existing entries with the same matcher
|
|
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
|
+
}
|
|
279
|
+
settings.hooks = { ...existingHooks, PreToolUse: merged };
|
|
280
|
+
await ensureDir(path.dirname(settingsPath));
|
|
281
|
+
await writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
282
|
+
return { installed: true };
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Qwen Code / Qoder format:
|
|
286
|
+
* Writes to settings.json with { hooks: { PreToolUse: [{ matcher, hooks: [{ type, command }] }] } }
|
|
287
|
+
*/
|
|
288
|
+
async function installQwenStyleHooks(platformBase, skillsDir, hooksConfig, _hookFormat) {
|
|
289
|
+
const settingsPath = path.join(platformBase, 'settings.json');
|
|
290
|
+
// Group by matcher
|
|
291
|
+
const matcherGroups = {};
|
|
292
|
+
for (const [scriptRelPath, config] of Object.entries(hooksConfig)) {
|
|
293
|
+
if (!matcherGroups[config.matcher]) {
|
|
294
|
+
matcherGroups[config.matcher] = [];
|
|
295
|
+
}
|
|
296
|
+
matcherGroups[config.matcher].push({
|
|
297
|
+
type: 'command',
|
|
298
|
+
command: buildHookCommand(skillsDir, scriptRelPath),
|
|
299
|
+
description: config.description,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
const preToolUseEntries = Object.entries(matcherGroups).map(([matcher, hooks]) => ({
|
|
303
|
+
matcher,
|
|
304
|
+
hooks,
|
|
305
|
+
}));
|
|
306
|
+
let settings = {};
|
|
307
|
+
if (await fileExists(settingsPath)) {
|
|
308
|
+
try {
|
|
309
|
+
settings = JSON.parse(await readFile(settingsPath, 'utf-8'));
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
settings = {};
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
const existingHooks = settings.hooks ?? {};
|
|
316
|
+
const existingPreToolUse = existingHooks.PreToolUse ?? [];
|
|
317
|
+
// Add entries that don't already exist (match by description in nested hooks)
|
|
318
|
+
const existingDescs = new Set(existingPreToolUse.flatMap((g) => g.hooks?.map((h) => h.description) ?? []));
|
|
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 };
|
|
326
|
+
await ensureDir(path.dirname(settingsPath));
|
|
327
|
+
await writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
328
|
+
return { installed: true };
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Gemini CLI format:
|
|
332
|
+
* Writes to .gemini/settings.json with { hooks: { BeforeTool: [{ matcher, hooks: [{ type, command }] }] } }
|
|
333
|
+
*/
|
|
334
|
+
async function installGeminiHooks(platformBase, skillsDir, hooksConfig) {
|
|
335
|
+
const settingsPath = path.join(platformBase, 'settings.json');
|
|
336
|
+
const entries = [];
|
|
337
|
+
for (const [scriptRelPath, config] of Object.entries(hooksConfig)) {
|
|
338
|
+
entries.push({
|
|
339
|
+
matcher: config.matcher === 'Write|Edit' ? 'write_file|edit_file' : config.matcher,
|
|
340
|
+
hooks: [
|
|
341
|
+
{
|
|
342
|
+
type: 'command',
|
|
343
|
+
command: buildHookCommand(skillsDir, scriptRelPath),
|
|
344
|
+
name: config.description,
|
|
345
|
+
},
|
|
346
|
+
],
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
let settings = {};
|
|
350
|
+
if (await fileExists(settingsPath)) {
|
|
351
|
+
try {
|
|
352
|
+
settings = JSON.parse(await readFile(settingsPath, 'utf-8'));
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
settings = {};
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
const existingHooks = settings.hooks ?? {};
|
|
359
|
+
const existingBeforeTool = existingHooks.BeforeTool ?? [];
|
|
360
|
+
const existingNames = new Set(existingBeforeTool.flatMap((g) => g.hooks?.map((h) => h.name) ?? []));
|
|
361
|
+
for (const entry of entries) {
|
|
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 };
|
|
368
|
+
await ensureDir(path.dirname(settingsPath));
|
|
369
|
+
await writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
370
|
+
return { installed: true };
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Windsurf format:
|
|
374
|
+
* Writes to .windsurf/hooks.json with { hooks: { pre_write_code: [{ command }] } }
|
|
375
|
+
*/
|
|
376
|
+
async function installWindsurfHooks(platformBase, skillsDir, hooksConfig) {
|
|
377
|
+
const hooksPath = path.join(platformBase, 'hooks.json');
|
|
378
|
+
const entries = [];
|
|
379
|
+
for (const [scriptRelPath, config] of Object.entries(hooksConfig)) {
|
|
380
|
+
entries.push({
|
|
381
|
+
command: buildHookCommand(skillsDir, scriptRelPath),
|
|
382
|
+
show_output: true,
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
let hooksFile = {};
|
|
386
|
+
if (await fileExists(hooksPath)) {
|
|
387
|
+
try {
|
|
388
|
+
hooksFile = JSON.parse(await readFile(hooksPath, 'utf-8'));
|
|
389
|
+
}
|
|
390
|
+
catch {
|
|
391
|
+
hooksFile = {};
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
const existingHooks = hooksFile.hooks ?? {};
|
|
395
|
+
const existingPreWrite = existingHooks.pre_write_code ?? [];
|
|
396
|
+
// Add entries that don't already exist (match by command substring)
|
|
397
|
+
const existingCmds = new Set(existingPreWrite.map((e) => e.command ?? ''));
|
|
398
|
+
for (const entry of entries) {
|
|
399
|
+
if (!existingCmds.has(entry.command)) {
|
|
400
|
+
existingPreWrite.push(entry);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
hooksFile.hooks = { ...existingHooks, pre_write_code: existingPreWrite };
|
|
404
|
+
await ensureDir(path.dirname(hooksPath));
|
|
405
|
+
await writeFile(hooksPath, JSON.stringify(hooksFile, null, 2) + '\n', 'utf-8');
|
|
406
|
+
return { installed: true };
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* GitHub Copilot format:
|
|
410
|
+
* Writes to .github/hooks/comet-guard.json with preToolUse hooks config.
|
|
411
|
+
*/
|
|
412
|
+
async function installCopilotHooks(platformBase, skillsDir, hooksConfig) {
|
|
413
|
+
const hooksDir = path.join(platformBase, 'hooks');
|
|
414
|
+
const hookFilePath = path.join(hooksDir, 'comet-guard.json');
|
|
415
|
+
const scriptEntries = [];
|
|
416
|
+
for (const [scriptRelPath] of Object.entries(hooksConfig)) {
|
|
417
|
+
const cmd = buildHookCommand(skillsDir, scriptRelPath);
|
|
418
|
+
// Script requires bash; PowerShell field wraps bash invocation for Windows
|
|
419
|
+
scriptEntries.push({ bash: cmd, powershell: `bash -c '${cmd}'` });
|
|
420
|
+
}
|
|
421
|
+
const hookConfig = {
|
|
422
|
+
version: 1,
|
|
423
|
+
hooks: {
|
|
424
|
+
preToolUse: scriptEntries,
|
|
425
|
+
},
|
|
426
|
+
};
|
|
427
|
+
await ensureDir(hooksDir);
|
|
428
|
+
await writeFile(hookFilePath, JSON.stringify(hookConfig, null, 2) + '\n', 'utf-8');
|
|
429
|
+
return { installed: true };
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Kiro format:
|
|
433
|
+
* Writes to .kiro/hooks/comet-phase-guard.kiro.hook as a JSON file.
|
|
434
|
+
*/
|
|
435
|
+
async function installKiroHooks(platformBase, skillsDir, hooksConfig) {
|
|
436
|
+
const hooksDir = path.join(platformBase, 'hooks');
|
|
437
|
+
for (const [scriptRelPath, config] of Object.entries(hooksConfig)) {
|
|
438
|
+
const hookFileName = path.basename(scriptRelPath).replace(/\.sh$/, '.kiro.hook');
|
|
439
|
+
const hookFilePath = path.join(hooksDir, hookFileName);
|
|
440
|
+
// Map Write|Edit matcher to Kiro's write tool category
|
|
441
|
+
const kiroEvent = config.matcher === 'Write|Edit' ? 'Pre Tool Use' : 'Pre Tool Use';
|
|
442
|
+
const toolName = config.matcher === 'Write|Edit' ? 'write' : '*';
|
|
443
|
+
const hookConfig = {
|
|
444
|
+
enabled: true,
|
|
445
|
+
name: config.description,
|
|
446
|
+
description: config.description,
|
|
447
|
+
version: '1',
|
|
448
|
+
when: {
|
|
449
|
+
type: 'preToolUse',
|
|
450
|
+
toolName,
|
|
451
|
+
},
|
|
452
|
+
then: {
|
|
453
|
+
type: 'runCommand',
|
|
454
|
+
command: buildHookCommand(skillsDir, scriptRelPath),
|
|
455
|
+
},
|
|
456
|
+
};
|
|
457
|
+
await ensureDir(hooksDir);
|
|
458
|
+
await writeFile(hookFilePath, JSON.stringify(hookConfig, null, 2) + '\n', 'utf-8');
|
|
459
|
+
}
|
|
460
|
+
return { installed: true };
|
|
461
|
+
}
|
|
108
462
|
async function createWorkingDirs(projectPath) {
|
|
109
463
|
const dirs = [
|
|
110
464
|
path.join(projectPath, 'docs', 'superpowers', 'specs'),
|
|
111
465
|
path.join(projectPath, 'docs', 'superpowers', 'plans'),
|
|
466
|
+
path.join(projectPath, '.comet'),
|
|
112
467
|
];
|
|
113
468
|
for (const dir of dirs) {
|
|
114
469
|
await ensureDir(dir);
|
|
115
470
|
}
|
|
471
|
+
const configPath = path.join(projectPath, '.comet', 'config.yaml');
|
|
472
|
+
if (!(await fileExists(configPath))) {
|
|
473
|
+
await writeFile(configPath, 'context_compression: off\nauto_transition: true\n', 'utf-8');
|
|
474
|
+
}
|
|
116
475
|
}
|
|
117
|
-
export { copyCometSkillsForPlatform, readManifest, getManifestSkills, createWorkingDirs, getAssetsDir, };
|
|
476
|
+
export { copyCometSkillsForPlatform, copyCometRulesForPlatform, installCometHooksForPlatform, readManifest, getManifestSkills, createWorkingDirs, getAssetsDir, };
|
|
118
477
|
//# sourceMappingURL=skills.js.map
|
package/dist/core/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAiB,MAAM,gBAAgB,CAAC;AAGrE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAc3C,MAAM,uBAAuB,GAAG;;;CAG/B,CAAC;AAEF,SAAS,YAAY;IACnB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,OAAe,EACf,QAAkB,EAClB,SAAkB,EAClB,oBAA4B,QAAQ,EACpC,QAAsB,SAAS;IAE/B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAE3D,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAW,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,6BAA6B,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,YAAY,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAE1D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAE/F,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC3C,YAAY,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1B,MAAM,EAAE,CAAC;QACX,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,YAAY,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,OAAO,EACP,QAAQ,EACR,QAAQ,CAAC,MAAM,EACf,SAAS,EACT,KAAK,EACL,iBAAiB,CAClB,CAAC;QACF,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;QACxB,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnE,OAAO,OAAO,CAAC,SAAS,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC7C,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC,SAAS,EAAE,CAAC;IAE3C,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAAe,EACf,QAAkB,EAClB,UAAoB,EACpB,SAAkB,EAClB,KAAmB,EACnB,iBAAyB;IAEzB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;IAE1F,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU;YAAE,SAAS;QAE5D,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;QAEvD,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,IAAI,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;YACzC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC;4BACpD,SAAS;mBAClB,SAAS;;;;;;;;EAQ1B,SAAS;CACV,CAAC;QACE,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,EAAE,CAAC;IACX,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC3D,OAAO,QAAQ,CAAW,YAAY,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,OAAO,QAAQ,CAAC,MAAM,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IAClD,MAAM,IAAI,GAAG;QACX,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC;KACvD,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,GACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rpamis/comet",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.7",
|
|
4
4
|
"description": "OpenSpec + Superpowers dual-star development workflow",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"comet",
|
|
@@ -37,6 +37,8 @@
|
|
|
37
37
|
"format": "prettier --write src/",
|
|
38
38
|
"format:check": "prettier --check src/",
|
|
39
39
|
"test:shell": "node scripts/run-bats.js test/shell/*.bats",
|
|
40
|
+
"benchmark:context": "node scripts/context-compression-benchmark.mjs",
|
|
41
|
+
"benchmark:execution": "node scripts/context-execution-benchmark.mjs",
|
|
40
42
|
"prepare": "pnpm run build",
|
|
41
43
|
"prepublishOnly": "node scripts/prepublish-check.js && pnpm run build",
|
|
42
44
|
"postinstall": "node scripts/postinstall.js"
|
package/scripts/postinstall.js
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Postinstall script that hints about comet init.
|
|
5
|
-
*
|
|
6
|
-
* The tip is suppressed when:
|
|
7
|
-
* - CI=true environment variable is set
|
|
8
|
-
* - COMET_NO_HINTS=1 environment variable is set
|
|
9
|
-
* - dist/ directory doesn't exist (dev setup scenario)
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { promises as fs } from 'fs';
|
|
13
|
-
import path from 'path';
|
|
14
|
-
import { fileURLToPath } from 'url';
|
|
15
|
-
|
|
16
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
-
const __dirname = path.dirname(__filename);
|
|
18
|
-
|
|
19
|
-
function shouldSkip() {
|
|
20
|
-
if (process.env.CI === 'true' || process.env.CI === '1') return true;
|
|
21
|
-
if (process.env.COMET_NO_HINTS === '1') return true;
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async function distExists() {
|
|
26
|
-
try {
|
|
27
|
-
const stat = await fs.stat(path.join(__dirname, '..', 'dist'));
|
|
28
|
-
return stat.isDirectory();
|
|
29
|
-
} catch {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
async function main() {
|
|
35
|
-
try {
|
|
36
|
-
if (shouldSkip()) return;
|
|
37
|
-
if (!(await distExists())) return;
|
|
38
|
-
console.log(`\nTip: Run 'comet init' to set up Comet workflow in your project`);
|
|
39
|
-
} catch {
|
|
40
|
-
// Never break npm install
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
main().catch(() => process.exit(0));
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Postinstall script that hints about comet init.
|
|
5
|
+
*
|
|
6
|
+
* The tip is suppressed when:
|
|
7
|
+
* - CI=true environment variable is set
|
|
8
|
+
* - COMET_NO_HINTS=1 environment variable is set
|
|
9
|
+
* - dist/ directory doesn't exist (dev setup scenario)
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { promises as fs } from 'fs';
|
|
13
|
+
import path from 'path';
|
|
14
|
+
import { fileURLToPath } from 'url';
|
|
15
|
+
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = path.dirname(__filename);
|
|
18
|
+
|
|
19
|
+
function shouldSkip() {
|
|
20
|
+
if (process.env.CI === 'true' || process.env.CI === '1') return true;
|
|
21
|
+
if (process.env.COMET_NO_HINTS === '1') return true;
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async function distExists() {
|
|
26
|
+
try {
|
|
27
|
+
const stat = await fs.stat(path.join(__dirname, '..', 'dist'));
|
|
28
|
+
return stat.isDirectory();
|
|
29
|
+
} catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async function main() {
|
|
35
|
+
try {
|
|
36
|
+
if (shouldSkip()) return;
|
|
37
|
+
if (!(await distExists())) return;
|
|
38
|
+
console.log(`\nTip: Run 'comet init' to set up Comet workflow in your project`);
|
|
39
|
+
} catch {
|
|
40
|
+
// Never break npm install
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
main().catch(() => process.exit(0));
|