@rpamis/comet 0.1.7 → 0.2.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 (67) hide show
  1. package/README.md +45 -13
  2. package/assets/manifest.json +2 -0
  3. package/assets/skills/comet/SKILL.md +214 -219
  4. package/assets/skills/comet/scripts/comet-archive.sh +8 -2
  5. package/assets/skills/comet/scripts/comet-guard.sh +32 -22
  6. package/assets/skills/comet/scripts/comet-state.sh +496 -0
  7. package/assets/skills/comet-archive/SKILL.md +6 -19
  8. package/assets/skills/comet-build/SKILL.md +16 -23
  9. package/assets/skills/comet-design/SKILL.md +7 -23
  10. package/assets/skills/comet-hotfix/SKILL.md +136 -167
  11. package/assets/skills/comet-open/SKILL.md +9 -31
  12. package/assets/skills/comet-tweak/SKILL.md +122 -154
  13. package/assets/skills/comet-verify/SKILL.md +11 -33
  14. package/assets/skills-zh/comet/SKILL.md +87 -92
  15. package/assets/skills-zh/comet-archive/SKILL.md +63 -76
  16. package/assets/skills-zh/comet-build/SKILL.md +153 -160
  17. package/assets/skills-zh/comet-design/SKILL.md +91 -107
  18. package/assets/skills-zh/comet-hotfix/SKILL.md +18 -49
  19. package/assets/skills-zh/comet-open/SKILL.md +70 -92
  20. package/assets/skills-zh/comet-tweak/SKILL.md +19 -51
  21. package/assets/skills-zh/comet-verify/SKILL.md +114 -136
  22. package/dist/cli/index.js +28 -1
  23. package/dist/cli/index.js.map +1 -1
  24. package/dist/commands/doctor.d.ts +6 -0
  25. package/dist/commands/doctor.d.ts.map +1 -0
  26. package/dist/commands/doctor.js +168 -0
  27. package/dist/commands/doctor.js.map +1 -0
  28. package/dist/commands/init.d.ts +9 -0
  29. package/dist/commands/init.d.ts.map +1 -0
  30. package/dist/commands/init.js +183 -0
  31. package/dist/commands/init.js.map +1 -0
  32. package/dist/commands/status.d.ts +6 -0
  33. package/dist/commands/status.d.ts.map +1 -0
  34. package/dist/commands/status.js +89 -0
  35. package/dist/commands/status.js.map +1 -0
  36. package/dist/commands/update.d.ts +8 -0
  37. package/dist/commands/update.d.ts.map +1 -0
  38. package/dist/commands/update.js +47 -0
  39. package/dist/commands/update.js.map +1 -0
  40. package/dist/core/detect.d.ts +8 -0
  41. package/dist/core/detect.d.ts.map +1 -0
  42. package/dist/core/detect.js +73 -0
  43. package/dist/core/detect.js.map +1 -0
  44. package/dist/core/openspec.d.ts +5 -0
  45. package/dist/core/openspec.d.ts.map +1 -0
  46. package/dist/core/openspec.js +58 -0
  47. package/dist/core/openspec.js.map +1 -0
  48. package/dist/core/platforms.d.ts.map +1 -1
  49. package/dist/core/platforms.js +6 -1
  50. package/dist/core/platforms.js.map +1 -1
  51. package/dist/core/skills.d.ts +22 -0
  52. package/dist/core/skills.d.ts.map +1 -0
  53. package/dist/core/skills.js +59 -0
  54. package/dist/core/skills.js.map +1 -0
  55. package/dist/core/superpowers.d.ts +5 -0
  56. package/dist/core/superpowers.d.ts.map +1 -0
  57. package/dist/core/superpowers.js +60 -0
  58. package/dist/core/superpowers.js.map +1 -0
  59. package/dist/core/types.d.ts +2 -0
  60. package/dist/core/types.d.ts.map +1 -0
  61. package/dist/core/types.js +2 -0
  62. package/dist/core/types.js.map +1 -0
  63. package/package.json +61 -50
  64. package/dist/core/init.d.ts +0 -14
  65. package/dist/core/init.d.ts.map +0 -1
  66. package/dist/core/init.js +0 -492
  67. package/dist/core/init.js.map +0 -1
package/dist/core/init.js DELETED
@@ -1,492 +0,0 @@
1
- /**
2
- * Init Command
3
- *
4
- * Interactive setup for Comet workflow: platform selection, scope (global/project),
5
- * OpenSpec + Superpowers install, and Comet skill deployment.
6
- */
7
- import path from 'path';
8
- import os from 'os';
9
- import { fileURLToPath } from 'url';
10
- import { execSync } from 'child_process';
11
- import { checkbox, select } from '@inquirer/prompts';
12
- import { copyFile, fileExists, readJson, ensureDir, readDir } from '../utils/file-system.js';
13
- import { PLATFORMS } from './platforms.js';
14
- const __filename = fileURLToPath(import.meta.url);
15
- const __dirname = path.dirname(__filename);
16
- /**
17
- * Resolve the path to the assets directory (shipped with the npm package).
18
- */
19
- function getAssetsDir() {
20
- return path.resolve(__dirname, '..', '..', 'assets');
21
- }
22
- /**
23
- * Get the base directory for a given scope.
24
- * Global: home directory. Project: project directory.
25
- */
26
- function getBaseDir(scope, projectPath) {
27
- return scope === 'global' ? os.homedir() : projectPath;
28
- }
29
- /**
30
- * Detect which platforms have config directories in the project.
31
- */
32
- async function detectPlatforms(projectPath) {
33
- const detected = new Set();
34
- for (const platform of PLATFORMS) {
35
- if (platform.detectionPaths && platform.detectionPaths.length > 0) {
36
- for (const p of platform.detectionPaths) {
37
- if (await fileExists(path.join(projectPath, p))) {
38
- detected.add(platform.id);
39
- break;
40
- }
41
- }
42
- }
43
- else {
44
- const dirPath = path.join(projectPath, platform.skillsDir);
45
- if (await fileExists(dirPath)) {
46
- detected.add(platform.id);
47
- }
48
- }
49
- }
50
- return detected;
51
- }
52
- /**
53
- * Superpowers skill directory names (used for detection).
54
- */
55
- const SUPERPOWERS_SKILLS = [
56
- 'brainstorming',
57
- 'using-superpowers',
58
- 'writing-plans',
59
- 'test-driven-development',
60
- 'subagent-driven-development',
61
- ];
62
- /**
63
- * Check if skills exist for a component pattern in a platform's skills dir.
64
- * Falls back to checking the global directories of user-selected platforms.
65
- */
66
- async function hasSkills(baseDir, platform, component, selectedPlatforms = []) {
67
- const skillsDir = path.join(baseDir, platform.skillsDir, 'skills');
68
- const entries = await readDir(skillsDir);
69
- switch (component) {
70
- case 'openspec':
71
- if (entries.some((e) => e.startsWith('openspec-')))
72
- return true;
73
- break;
74
- case 'superpowers':
75
- if (SUPERPOWERS_SKILLS.some((name) => entries.includes(name)))
76
- return true;
77
- break;
78
- case 'comet':
79
- if (entries.some((e) => e.startsWith('comet')))
80
- return true;
81
- break;
82
- }
83
- // Check global directories of user-selected platforms
84
- if (baseDir !== os.homedir()) {
85
- for (const sp of selectedPlatforms) {
86
- const globalSkillsDir = path.join(os.homedir(), sp.skillsDir, 'skills');
87
- const globalEntries = await readDir(globalSkillsDir);
88
- switch (component) {
89
- case 'openspec':
90
- if (globalEntries.some((e) => e.startsWith('openspec-')))
91
- return true;
92
- break;
93
- case 'superpowers':
94
- if (SUPERPOWERS_SKILLS.some((name) => globalEntries.includes(name)))
95
- return true;
96
- break;
97
- case 'comet':
98
- if (globalEntries.some((e) => e.startsWith('comet')))
99
- return true;
100
- break;
101
- }
102
- }
103
- }
104
- return false;
105
- }
106
- /**
107
- * Check if a CLI command is available on PATH.
108
- */
109
- function isCommandAvailable(command) {
110
- try {
111
- const checkCmd = process.platform === 'win32' ? `where ${command}` : `which ${command}`;
112
- execSync(checkCmd, { stdio: 'pipe' });
113
- return true;
114
- }
115
- catch {
116
- return false;
117
- }
118
- }
119
- /**
120
- * Ensure OpenSpec CLI is installed, install it if missing.
121
- */
122
- async function ensureOpenSpecCli(scope, projectPath) {
123
- if (isCommandAvailable('openspec')) {
124
- return true;
125
- }
126
- console.log(` Installing OpenSpec CLI...`);
127
- try {
128
- const npmCmd = scope === 'global'
129
- ? 'npm install -g @fission-ai/openspec@latest'
130
- : 'npm install @fission-ai/openspec@latest';
131
- execSync(npmCmd, { cwd: projectPath, stdio: 'pipe', timeout: 120_000 });
132
- return isCommandAvailable('openspec');
133
- }
134
- catch (error) {
135
- console.error(` Failed to install OpenSpec CLI: ${error.message}`);
136
- return false;
137
- }
138
- }
139
- /**
140
- * Install OpenSpec skills for multiple platforms in one call.
141
- */
142
- async function installOpenSpec(projectPath, toolIds, scope) {
143
- const cliReady = await ensureOpenSpecCli(scope, projectPath);
144
- if (!cliReady) {
145
- console.error(` OpenSpec CLI not available. Install manually: npm install -g @fission-ai/openspec@latest`);
146
- return 'failed';
147
- }
148
- try {
149
- const flags = [
150
- '--tools', toolIds.join(','),
151
- scope === 'global' ? '--global' : '',
152
- ].filter(Boolean).join(' ');
153
- execSync(`openspec init ${flags}`, {
154
- cwd: projectPath,
155
- stdio: 'pipe',
156
- timeout: 120_000,
157
- });
158
- return 'installed';
159
- }
160
- catch (error) {
161
- console.error(` OpenSpec init failed: ${error.message}`);
162
- return 'failed';
163
- }
164
- }
165
- /**
166
- * Map platform IDs to skills CLI agent names.
167
- * The skills CLI uses specific agent identifiers (e.g. "claude-code" not "claude").
168
- */
169
- const SKILLS_AGENT_MAP = {
170
- 'claude': 'claude-code',
171
- 'cursor': 'cursor',
172
- 'codex': 'codex',
173
- 'opencode': 'opencode',
174
- 'windsurf': 'windsurf',
175
- 'cline': 'cline',
176
- 'roocode': 'roo-code',
177
- 'continue': 'continue',
178
- 'github-copilot': 'github-copilot',
179
- 'gemini': 'gemini',
180
- 'amazon-q': 'amazon-q',
181
- 'qwen': 'qwen',
182
- 'kilocode': 'kilo-code',
183
- 'auggie': 'augment',
184
- 'kiro': 'kiro',
185
- 'lingma': 'lingma',
186
- 'junie': 'junie',
187
- 'codebuddy': 'codebuddy',
188
- 'costrict': 'costrict',
189
- 'crush': 'crush',
190
- 'factory': 'factory',
191
- 'iflow': 'iflow',
192
- 'pi': 'pi',
193
- 'qoder': 'qoder',
194
- 'antigravity': 'antigravity',
195
- 'bob': 'bob',
196
- 'forgecode': 'forge',
197
- 'trae': 'trae',
198
- };
199
- /**
200
- * Install Superpowers skills for specific platforms only.
201
- * Uses --agent flag to target only the selected platforms, preventing
202
- * the skills CLI from auto-detecting and installing to all platforms
203
- * (which would create unwanted .agents/ directories).
204
- */
205
- async function installSuperpowersForPlatforms(projectPath, scope, platformIds) {
206
- const agentNames = platformIds
207
- .map((id) => SKILLS_AGENT_MAP[id])
208
- .filter(Boolean);
209
- if (agentNames.length === 0) {
210
- console.error(` No valid agent names resolved for platforms: ${platformIds.join(', ')}`);
211
- return 'failed';
212
- }
213
- try {
214
- const flags = [
215
- '-y',
216
- scope === 'global' ? '-g' : '',
217
- `--agent ${agentNames.join(',')}`,
218
- ].filter(Boolean).join(' ');
219
- execSync(`npx skills add obra/superpowers ${flags}`, {
220
- cwd: projectPath,
221
- stdio: 'pipe',
222
- timeout: 120_000,
223
- });
224
- return 'installed';
225
- }
226
- catch (error) {
227
- console.error(` Superpowers install failed: ${error.message}`);
228
- return 'failed';
229
- }
230
- }
231
- /**
232
- * Copy Comet skill files from assets to a platform's skills directory.
233
- */
234
- async function copyCometSkillsForPlatform(baseDir, platform, overwrite, languageSkillsDir = 'skills') {
235
- const assetsDir = getAssetsDir();
236
- const manifestPath = path.join(assetsDir, 'manifest.json');
237
- if (!(await fileExists(manifestPath))) {
238
- throw new Error(`Manifest not found at ${manifestPath}`);
239
- }
240
- const manifest = await readJson(manifestPath);
241
- let copied = 0;
242
- let skippedCount = 0;
243
- for (const skillRelPath of manifest.skills) {
244
- // Script files are language-agnostic, always from default skills/
245
- const isScript = skillRelPath.includes('scripts/');
246
- const sourceDir = isScript ? 'skills' : languageSkillsDir;
247
- const src = path.join(assetsDir, sourceDir, skillRelPath);
248
- const dest = path.join(baseDir, platform.skillsDir, 'skills', skillRelPath);
249
- if (!overwrite && (await fileExists(dest))) {
250
- skippedCount++;
251
- continue;
252
- }
253
- await copyFile(src, dest);
254
- copied++;
255
- }
256
- return { copied, skipped: skippedCount };
257
- }
258
- /**
259
- * Create Superpowers working directories (project-level only).
260
- */
261
- async function createWorkingDirs(projectPath) {
262
- const dirs = [
263
- path.join(projectPath, 'docs', 'superpowers', 'specs'),
264
- path.join(projectPath, 'docs', 'superpowers', 'plans'),
265
- ];
266
- for (const dir of dirs) {
267
- await ensureDir(dir);
268
- }
269
- }
270
- /**
271
- * Prompt user to choose overwrite strategy for an existing installation.
272
- */
273
- async function promptOverwriteChoice(componentName, platformName) {
274
- const answer = await select({
275
- message: `${componentName} already installed on ${platformName}. What to do?`,
276
- choices: [
277
- { name: 'Overwrite', value: 'overwrite' },
278
- { name: 'Skip', value: 'skip' },
279
- ],
280
- });
281
- return answer;
282
- }
283
- /**
284
- * Interactive installation scope selection.
285
- */
286
- async function selectScope(options) {
287
- if (options.yes) {
288
- return 'project';
289
- }
290
- const scope = await select({
291
- message: 'Install scope:',
292
- choices: [
293
- { name: 'Project (current directory)', value: 'project' },
294
- { name: 'Global (home directory)', value: 'global' },
295
- ],
296
- });
297
- return scope;
298
- }
299
- /**
300
- * Available languages for Comet skills.
301
- */
302
- const LANGUAGES = [
303
- { id: 'en', name: 'English', skillsDir: 'skills' },
304
- { id: 'zh', name: '中文', skillsDir: 'skills-zh' },
305
- ];
306
- /**
307
- * Interactive language selection for Comet skills.
308
- */
309
- async function selectLanguage(options) {
310
- if (options.yes) {
311
- return LANGUAGES[0];
312
- }
313
- const langId = await select({
314
- message: 'Language for Comet skills:',
315
- choices: LANGUAGES.map((lang) => ({
316
- name: lang.name,
317
- value: lang.id,
318
- })),
319
- });
320
- return LANGUAGES.find((l) => l.id === langId) ?? LANGUAGES[0];
321
- }
322
- /**
323
- * Interactive platform selection.
324
- */
325
- async function selectPlatforms(detected, options) {
326
- const choices = PLATFORMS.map((p) => ({
327
- name: `${p.name}${detected.has(p.id) ? ' (detected)' : ''}`,
328
- value: p.id,
329
- checked: detected.has(p.id),
330
- }));
331
- if (options.yes) {
332
- const selected = [...detected];
333
- return selected.length > 0 ? selected : PLATFORMS.map((p) => p.id);
334
- }
335
- const selected = await checkbox({
336
- message: 'Select platforms to set up:',
337
- choices,
338
- required: true,
339
- });
340
- return selected;
341
- }
342
- /**
343
- * Display installation summary.
344
- */
345
- function displaySummary(results, scope) {
346
- const scopeLabel = scope === 'global' ? os.homedir() : 'project';
347
- console.log(`\n Comet setup complete! (scope: ${scopeLabel})\n`);
348
- const installed = results.filter((r) => r.openspec === 'installed' || r.superpowers === 'installed' || r.comet === 'installed');
349
- const skipped = results.filter((r) => r.openspec === 'skipped' && r.superpowers === 'skipped' && r.comet === 'skipped');
350
- const failed = results.filter((r) => r.openspec === 'failed' || r.superpowers === 'failed');
351
- if (installed.length > 0) {
352
- console.log(` Installed:`);
353
- for (const r of installed) {
354
- console.log(` ${r.platform.name} -> ${r.platform.skillsDir}/skills/`);
355
- }
356
- }
357
- if (skipped.length > 0) {
358
- console.log(` Skipped: ${skipped.map((r) => r.platform.name).join(', ')}`);
359
- }
360
- if (failed.length > 0) {
361
- console.log(` Failed: ${failed.map((r) => r.platform.name).join(', ')}`);
362
- }
363
- if (scope === 'project') {
364
- console.log(`\n Working directories: docs/superpowers/specs/, docs/superpowers/plans/`);
365
- }
366
- console.log(`\n Get started:`);
367
- console.log(` /comet "your idea" — Start a new change with full workflow`);
368
- console.log(` /comet-hotfix — Quick bug fix (skip brainstorming)`);
369
- console.log(` /comet-tweak — Small change (skip brainstorming and plan)\n`);
370
- }
371
- /**
372
- * Resolve action for a component based on options and existing state.
373
- */
374
- function resolveAction(hasExisting, options) {
375
- if (!hasExisting)
376
- return 'install';
377
- if (options.overwrite)
378
- return 'overwrite';
379
- if (options.skipExisting)
380
- return 'skip';
381
- if (options.yes)
382
- return 'skip';
383
- return 'install'; // will be prompted interactively
384
- }
385
- /**
386
- * Main init command.
387
- */
388
- const COMET_BANNER = [
389
- ` ██████╗ ██████╗ ███╗ ███╗███████╗████████╗`,
390
- ` ██╔════╝██╔═══██╗████╗ ████║██╔════╝╚══██╔══╝`,
391
- ` ██║ ██║ ██║██╔████╔██║█████╗ ██║ `,
392
- ` ██║ ██║ ██║██║╚██╔╝██║██╔══╝ ██║ `,
393
- ` ╚██████╗╚██████╔╝██║ ╚═╝ ██║███████╗ ██║ `,
394
- ` ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ `,
395
- ` OpenSpec + Superpowers Workflow `,
396
- ].join('\n');
397
- export async function initCommand(targetPath, options = {}) {
398
- const projectPath = path.resolve(targetPath);
399
- console.log(`\n${COMET_BANNER}\n`);
400
- console.log(` Setting up Comet in ${projectPath}\n`);
401
- // Step 1: Detect available platforms
402
- const detected = await detectPlatforms(projectPath);
403
- // Step 2: Select scope (global vs project)
404
- const scope = await selectScope(options);
405
- // Step 2.5: Select language for Comet skills
406
- const language = await selectLanguage(options);
407
- console.log(` Language: ${language.name}`);
408
- // Step 3: Platform selection
409
- const selectedPlatformIds = await selectPlatforms(detected, options);
410
- if (selectedPlatformIds.length === 0) {
411
- console.log('\n No platforms selected. Exiting.\n');
412
- return;
413
- }
414
- const selectedPlatforms = PLATFORMS.filter((p) => selectedPlatformIds.includes(p.id));
415
- const baseDir = getBaseDir(scope, projectPath);
416
- const plans = [];
417
- for (const platform of selectedPlatforms) {
418
- const hasOS = await hasSkills(baseDir, platform, 'openspec', selectedPlatforms);
419
- const hasSP = await hasSkills(baseDir, platform, 'superpowers', selectedPlatforms);
420
- const hasCM = await hasSkills(baseDir, platform, 'comet', selectedPlatforms);
421
- let osAction = resolveAction(hasOS, options);
422
- let spAction = resolveAction(hasSP, options);
423
- let cmAction = resolveAction(hasCM, options);
424
- // Interactive prompts for existing components
425
- if (!options.yes) {
426
- if (osAction === 'install' && hasOS) {
427
- osAction = await promptOverwriteChoice('OpenSpec', platform.name);
428
- }
429
- if (spAction === 'install' && hasSP) {
430
- spAction = await promptOverwriteChoice('Superpowers', platform.name);
431
- }
432
- if (cmAction === 'install' && hasCM) {
433
- cmAction = await promptOverwriteChoice('Comet', platform.name);
434
- }
435
- }
436
- plans.push({ platform, osAction, spAction, cmAction });
437
- }
438
- // Step 5: Install OpenSpec (one call for all platforms that need it)
439
- const osToolIds = plans
440
- .filter((p) => p.osAction !== 'skip')
441
- .map((p) => p.platform.openspecToolId);
442
- let osGlobalStatus = 'skipped';
443
- if (osToolIds.length > 0) {
444
- console.log(`\n Installing OpenSpec for: ${osToolIds.join(', ')}`);
445
- osGlobalStatus = await installOpenSpec(projectPath, osToolIds, scope);
446
- console.log(` OpenSpec: ${osGlobalStatus}`);
447
- }
448
- else {
449
- console.log(`\n OpenSpec: all skipped`);
450
- }
451
- // Step 6: Install Superpowers (scoped to selected platforms only)
452
- const spPlatformIds = plans
453
- .filter((p) => p.spAction !== 'skip')
454
- .map((p) => p.platform.id);
455
- let spGlobalStatus = 'skipped';
456
- if (spPlatformIds.length > 0) {
457
- console.log(`\n Installing Superpowers for: ${spPlatformIds.join(', ')}`);
458
- spGlobalStatus = await installSuperpowersForPlatforms(projectPath, scope, spPlatformIds);
459
- console.log(` Superpowers: ${spGlobalStatus}`);
460
- }
461
- else {
462
- console.log(`\n Superpowers: all skipped`);
463
- }
464
- // Step 7: Copy Comet skills (per-platform)
465
- const results = [];
466
- for (const plan of plans) {
467
- const { platform, cmAction } = plan;
468
- const skillsPath = `${scope === 'global' ? '~/' : ''}${platform.skillsDir}/skills/`;
469
- let cmStatus = 'skipped';
470
- if (cmAction !== 'skip') {
471
- const { copied } = await copyCometSkillsForPlatform(baseDir, platform, cmAction === 'overwrite', language.skillsDir);
472
- cmStatus = copied > 0 ? 'installed' : 'skipped';
473
- console.log(` Comet -> ${platform.name}: ${cmStatus} (${copied} files) -> ${skillsPath}`);
474
- }
475
- else {
476
- console.log(` Comet -> ${platform.name}: skipped (already exists)`);
477
- }
478
- results.push({
479
- platform,
480
- openspec: osToolIds.includes(platform.openspecToolId) ? osGlobalStatus : 'skipped',
481
- superpowers: plan.spAction !== 'skip' ? spGlobalStatus : 'skipped',
482
- comet: cmStatus,
483
- });
484
- }
485
- // Step 8: Create working directories (project-level only)
486
- if (scope === 'project') {
487
- await createWorkingDirs(projectPath);
488
- }
489
- // Step 9: Summary
490
- displaySummary(results, scope);
491
- }
492
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/core/init.ts"],"names":[],"mappings":"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"}