@dedesfr/prompter 0.8.23 → 0.9.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 (100) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/dist/cli/index.js +1 -1
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/init.d.ts +1 -7
  5. package/dist/commands/init.d.ts.map +1 -1
  6. package/dist/commands/init.js +32 -294
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/update.d.ts.map +1 -1
  9. package/dist/commands/update.js +17 -40
  10. package/dist/commands/update.js.map +1 -1
  11. package/dist/core/configurators/slash/antigravity.d.ts +2 -5
  12. package/dist/core/configurators/slash/antigravity.d.ts.map +1 -1
  13. package/dist/core/configurators/slash/antigravity.js +2 -57
  14. package/dist/core/configurators/slash/antigravity.js.map +1 -1
  15. package/dist/core/configurators/slash/base.d.ts +6 -18
  16. package/dist/core/configurators/slash/base.d.ts.map +1 -1
  17. package/dist/core/configurators/slash/base.js +8 -77
  18. package/dist/core/configurators/slash/base.js.map +1 -1
  19. package/dist/core/configurators/slash/claude.d.ts +2 -5
  20. package/dist/core/configurators/slash/claude.d.ts.map +1 -1
  21. package/dist/core/configurators/slash/claude.js +2 -57
  22. package/dist/core/configurators/slash/claude.js.map +1 -1
  23. package/dist/core/configurators/slash/codex.d.ts +2 -5
  24. package/dist/core/configurators/slash/codex.d.ts.map +1 -1
  25. package/dist/core/configurators/slash/codex.js +2 -57
  26. package/dist/core/configurators/slash/codex.js.map +1 -1
  27. package/dist/core/configurators/slash/droid.d.ts +2 -5
  28. package/dist/core/configurators/slash/droid.d.ts.map +1 -1
  29. package/dist/core/configurators/slash/droid.js +2 -32
  30. package/dist/core/configurators/slash/droid.js.map +1 -1
  31. package/dist/core/configurators/slash/forge.d.ts +2 -5
  32. package/dist/core/configurators/slash/forge.d.ts.map +1 -1
  33. package/dist/core/configurators/slash/forge.js +2 -32
  34. package/dist/core/configurators/slash/forge.js.map +1 -1
  35. package/dist/core/configurators/slash/github-copilot.d.ts +2 -7
  36. package/dist/core/configurators/slash/github-copilot.d.ts.map +1 -1
  37. package/dist/core/configurators/slash/github-copilot.js +2 -96
  38. package/dist/core/configurators/slash/github-copilot.js.map +1 -1
  39. package/dist/core/configurators/slash/index.d.ts +1 -1
  40. package/dist/core/configurators/slash/index.d.ts.map +1 -1
  41. package/dist/core/configurators/slash/index.js +1 -1
  42. package/dist/core/configurators/slash/index.js.map +1 -1
  43. package/dist/core/configurators/slash/kilocode.d.ts +2 -5
  44. package/dist/core/configurators/slash/kilocode.d.ts.map +1 -1
  45. package/dist/core/configurators/slash/kilocode.js +2 -57
  46. package/dist/core/configurators/slash/kilocode.js.map +1 -1
  47. package/dist/core/configurators/slash/opencode.d.ts +2 -5
  48. package/dist/core/configurators/slash/opencode.d.ts.map +1 -1
  49. package/dist/core/configurators/slash/opencode.js +2 -57
  50. package/dist/core/configurators/slash/opencode.js.map +1 -1
  51. package/dist/core/configurators/slash/registry.d.ts +4 -4
  52. package/dist/core/configurators/slash/registry.d.ts.map +1 -1
  53. package/dist/core/configurators/slash/registry.js.map +1 -1
  54. package/dist/core/templates/index.d.ts +0 -1
  55. package/dist/core/templates/index.d.ts.map +1 -1
  56. package/dist/core/templates/index.js +0 -1
  57. package/dist/core/templates/index.js.map +1 -1
  58. package/package.json +1 -1
  59. package/skills/ai-humanizer/SKILL.md +50 -0
  60. package/skills/api-contract-generator/SKILL.md +243 -0
  61. package/skills/apply/SKILL.md +23 -0
  62. package/skills/archive/SKILL.md +27 -0
  63. package/skills/design-system/SKILL.md +216 -0
  64. package/skills/document-explainer/SKILL.md +155 -0
  65. package/skills/enhance/SKILL.md +47 -0
  66. package/skills/epic-generator/SKILL.md +204 -0
  67. package/skills/epic-single/SKILL.md +63 -0
  68. package/skills/erd-generator/SKILL.md +138 -0
  69. package/skills/fsd-generator/SKILL.md +163 -0
  70. package/skills/prd-agent-generator/SKILL.md +132 -0
  71. package/skills/prd-generator/SKILL.md +211 -0
  72. package/skills/product-brief/SKILL.md +141 -0
  73. package/skills/proposal/SKILL.md +28 -0
  74. package/skills/qa-test-scenario/SKILL.md +149 -0
  75. package/skills/skill-creator/SKILL.md +173 -0
  76. package/skills/story-generator/SKILL.md +285 -0
  77. package/skills/story-single/SKILL.md +86 -0
  78. package/skills/tdd-generator/SKILL.md +300 -0
  79. package/skills/tdd-lite-generator/SKILL.md +230 -0
  80. package/skills/wireframe-generator/SKILL.md +227 -0
  81. package/src/cli/index.ts +1 -1
  82. package/src/commands/init.ts +32 -334
  83. package/src/commands/update.ts +20 -47
  84. package/src/core/configurators/slash/antigravity.ts +2 -62
  85. package/src/core/configurators/slash/base.ts +11 -105
  86. package/src/core/configurators/slash/claude.ts +2 -62
  87. package/src/core/configurators/slash/codex.ts +2 -62
  88. package/src/core/configurators/slash/droid.ts +2 -36
  89. package/src/core/configurators/slash/forge.ts +2 -36
  90. package/src/core/configurators/slash/github-copilot.ts +2 -106
  91. package/src/core/configurators/slash/index.ts +1 -1
  92. package/src/core/configurators/slash/kilocode.ts +2 -62
  93. package/src/core/configurators/slash/opencode.ts +2 -62
  94. package/src/core/configurators/slash/registry.ts +5 -5
  95. package/src/core/templates/index.ts +0 -1
  96. package/dist/core/templates/slash-command-templates.d.ts +0 -7
  97. package/dist/core/templates/slash-command-templates.d.ts.map +0 -1
  98. package/dist/core/templates/slash-command-templates.js +0 -1041
  99. package/dist/core/templates/slash-command-templates.js.map +0 -1
  100. package/src/core/templates/slash-command-templates.ts +0 -1068
package/CHANGELOG.md CHANGED
@@ -1,5 +1,54 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## [0.9.0] - 2026-05-11
4
+
5
+ ### ⚠️ Breaking Changes
6
+ - **Slash Command Files Deprecated**: All slash command file generation has been removed
7
+ - `prompter init` no longer writes `.claude/commands/prompter/*.md`, `.agent/workflows/*.md`, or equivalent files for any tool
8
+ - Existing slash command files are **not** automatically removed — delete them manually from your project
9
+ - All Prompter capabilities are now delivered exclusively as skills
10
+
11
+ ### ✨ Added
12
+ - **22 Built-in Skills**: Every former slash command is now a first-class skill in `skills/`
13
+ - `enhance`, `prd-generator`, `prd-agent-generator`, `product-brief`
14
+ - `epic-single`, `epic-generator`, `story-single`, `story-generator`
15
+ - `fsd-generator`, `tdd-generator`, `tdd-lite-generator`, `erd-generator`, `api-contract-generator`
16
+ - `design-system`, `wireframe-generator`
17
+ - `proposal`, `apply`, `archive`
18
+ - `qa-test-scenario`, `skill-creator`, `ai-humanizer`, `document-explainer`
19
+ - Each skill is a proper `SKILL.md` directory with name, description, and full prompt body
20
+ - Discoverable and deployable through the same pipeline as user-created skills
21
+ - **9 Skill Categories in Init**: `prompter init` skill selection now groups all skills into named categories
22
+ - 📋 Planning & Strategy: project-orchestrator, feature-planner, prd-generator, prd-agent-generator, product-brief
23
+ - 🎯 Agile & Backlog: epic-single, epic-generator, story-single, story-generator
24
+ - 📐 Specification & Architecture: fsd-generator, tdd-generator, tdd-lite-generator, erd-generator, api-contract-generator
25
+ - 🎨 Design & UI/UX: ui-ux-pro, design-system-generator, design-system, wireframe-generator, design-md, frontend-design
26
+ - ⚙️ Development & Code Review: code-review, laravel-code-review, mcp-builder, skill-creator
27
+ - ✅ Testing & QA: qa-test-scenario
28
+ - ⚡ Prompter Workflow: prompter-workflow, prompter-specs, proposal, apply, archive
29
+ - 📝 Documentation: doc-builder, document-translator, document-explainer, ai-context-generator, meeting-notes, sph-generator
30
+ - ✨ Content & Productivity: enhance, enhance-prompt, ai-humanizer, gamma-builder, cerebro
31
+ - **Skill Descriptions in Selection UI**: Each skill now shows a short description next to its name during `prompter init`
32
+ - Descriptions truncated to 72 characters with `…` to prevent terminal line wrapping
33
+
34
+ ### 🔄 Changed
35
+ - **`prompter init` Flow**: Prompt template selection step removed — init now goes directly from tool selection to skill selection
36
+ - The `prompter/core/` prompt file management system is retained in `prompter update` for existing projects
37
+ - **Tool Detection**: `detectConfiguredTools()` now detects previously configured tools by checking if the tool's skill root directory exists (e.g. `.claude/skills/`) instead of scanning for slash command files
38
+ - **`ToolConfigurator` Base Class**: Renamed from `SlashCommandConfigurator`; now skills-only
39
+ - Each of the 8 tool configurators (claude, antigravity, codex, github-copilot, opencode, kilocode, forge, droid) reduced to ~9 lines
40
+ - Only requires implementing `getSkillTargetDir(skillName)` alongside `toolId` and `isAvailable`
41
+ - **`prompter update`**: Now resolves built-in skills from the package directory (same as `prompter init`) and updates existing deployed skill files
42
+
43
+ ### 🗑️ Removed
44
+ - **`src/core/templates/slash-command-templates.ts`**: Deleted — all 22 template bodies now live in `skills/*/SKILL.md` on disk
45
+ - **`SlashCommandId` type and `TemplateManager` class**: Removed from `src/core/templates/index.ts`
46
+ - **Prompt Template Selection Step**: Removed interactive "Select prompt templates to install" step from `prompter init`
47
+ - **`FILE_PATHS` and `DESCRIPTIONS` records**: Removed from all 8 tool configurators
48
+ - **Slash-command methods from base class**: `getTargets()`, `generateAll()`, `updateExisting()`, `getRelativePath()`, `getFrontmatter()`, `getBody()`, `updateBody()`, `SlashCommandTarget` interface, `ALL_COMMANDS` constant — all deleted
49
+ - **`removeWorkflowFilesForPrompts()`**: Removed from `init.ts`
50
+ - **`removeEmptyDirs()`**: Removed from `init.ts`
51
+
3
52
  ## [0.8.23] - 2026-05-08
4
53
 
5
54
  ### 🔄 Changed
package/dist/cli/index.js CHANGED
@@ -16,7 +16,7 @@ const program = new Command();
16
16
  program
17
17
  .name('prompter')
18
18
  .description('Enhance prompts directly in your AI coding workflow')
19
- .version('0.8.23');
19
+ .version('0.9.0');
20
20
  program
21
21
  .command('init')
22
22
  .description('Initialize Prompter in your project')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,15 @@
1
1
  interface InitOptions {
2
2
  tools?: string[];
3
- prompts?: string[];
4
3
  skills?: string[];
5
4
  noInteractive?: boolean;
6
5
  }
7
6
  export declare class InitCommand {
8
- private getCategorizedPromptChoices;
7
+ private truncateDescription;
9
8
  private getCategorizedSkillChoices;
10
9
  execute(options?: InitOptions): Promise<void>;
11
10
  private fileExists;
12
11
  private detectConfiguredTools;
13
12
  private removeToolFiles;
14
- private removeEmptyDirs;
15
- private detectInstalledPrompts;
16
- private installPrompts;
17
- private removePrompts;
18
- private removeWorkflowFilesForPrompts;
19
13
  private ensureRootClaudeFile;
20
14
  private setupSkills;
21
15
  private detectInstalledSkills;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAYA,UAAU,WAAW;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,2BAA2B;IAoDnC,OAAO,CAAC,0BAA0B;IA6D5B,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YA2WzC,UAAU;YASV,qBAAqB;YAwBrB,eAAe;YAkBf,eAAe;YAkBf,sBAAsB;YActB,cAAc;YAiCd,aAAa;YAuBb,6BAA6B;YA4B7B,oBAAoB;YA8CpB,WAAW;YAsGX,qBAAqB;YAoBrB,aAAa;YAgBb,oBAAoB;CAmDrC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,0BAA0B;IA6E5B,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAsOzC,UAAU;YASV,qBAAqB;YAiBrB,eAAe;YAOf,oBAAoB;YA8CpB,WAAW;YAsGX,qBAAqB;YAoBrB,aAAa;YAgBb,oBAAoB;CAmDrC"}
@@ -3,80 +3,51 @@ import path from 'path';
3
3
  import { fileURLToPath } from 'url';
4
4
  import chalk from 'chalk';
5
5
  import { checkbox, Separator } from '@inquirer/prompts';
6
- import { PROMPTER_DIR, SUPPORTED_TOOLS, AVAILABLE_PROMPTS, PrompterConfig } from '../core/config.js';
6
+ import { PROMPTER_DIR, SUPPORTED_TOOLS, PrompterConfig } from '../core/config.js';
7
7
  import { projectTemplate, agentsTemplate, claudeTemplate } from '../core/templates/index.js';
8
- import { PROMPT_TEMPLATES } from '../core/prompt-templates.js';
9
8
  import { registry } from '../core/configurators/slash/index.js';
10
9
  import { discoverSkills } from '../core/skill-discovery.js';
11
10
  export class InitCommand {
12
- getCategorizedPromptChoices(currentPrompts) {
11
+ truncateDescription(desc, max = 72) {
12
+ return desc.length > max ? desc.slice(0, max - 1) + '…' : desc;
13
+ }
14
+ getCategorizedSkillChoices(availableSkills, currentSkillNames) {
13
15
  const categories = [
14
16
  {
15
- name: '📋 Product Planning & Strategy',
16
- prompts: ['product-brief', 'prd-generator', 'prd-agent-generator']
17
- },
18
- {
19
- name: '📐 Specification & Documentation',
20
- prompts: ['fsd-generator', 'tdd-generator', 'tdd-lite-generator', 'erd-generator', 'api-contract-generator']
17
+ name: '📋 Planning & Strategy',
18
+ skills: ['project-orchestrator', 'feature-planner', 'prd-generator', 'prd-agent-generator', 'product-brief']
21
19
  },
22
20
  {
23
- name: '🎯 Agile & Project Management',
24
- prompts: ['epic-single', 'epic-generator', 'story-single', 'story-generator']
21
+ name: '🎯 Agile & Backlog',
22
+ skills: ['epic-single', 'epic-generator', 'story-single', 'story-generator']
25
23
  },
26
24
  {
27
- name: ' Testing & Quality Assurance',
28
- prompts: ['qa-test-scenario']
25
+ name: '📐 Specification & Architecture',
26
+ skills: ['fsd-generator', 'tdd-generator', 'tdd-lite-generator', 'erd-generator', 'api-contract-generator']
29
27
  },
30
28
  {
31
29
  name: '🎨 Design & UI/UX',
32
- prompts: ['design-system', 'wireframe-generator']
33
- },
34
- {
35
- name: '⚙️ Development Workflow',
36
- prompts: ['proposal', 'apply', 'archive']
30
+ skills: ['ui-ux-pro', 'design-system-generator', 'design-system', 'wireframe-generator', 'design-md', 'frontend-design']
37
31
  },
38
32
  {
39
- name: '📝 Content & Documentation',
40
- prompts: ['ai-humanizer', 'document-explainer', 'skill-creator']
41
- }
42
- ];
43
- const choices = [];
44
- for (const category of categories) {
45
- choices.push(new Separator(chalk.bold.cyan(category.name)));
46
- for (const promptValue of category.prompts) {
47
- const prompt = AVAILABLE_PROMPTS.find(p => p.value === promptValue);
48
- if (prompt) {
49
- choices.push({
50
- name: ` ${prompt.name} ${chalk.gray('- ' + prompt.description)}`,
51
- value: prompt.value,
52
- checked: currentPrompts.includes(prompt.value)
53
- });
54
- }
55
- }
56
- }
57
- return choices;
58
- }
59
- getCategorizedSkillChoices(availableSkills, currentSkillNames) {
60
- const categories = [
61
- {
62
- name: '📋 Planning & Strategy',
63
- skills: ['project-orchestrator', 'feature-planner', 'prompter-workflow', 'prompter-specs']
33
+ name: '⚙️ Development & Code Review',
34
+ skills: ['code-review', 'laravel-code-review', 'mcp-builder', 'skill-creator']
64
35
  },
65
36
  {
66
- name: '🎨 Design & UI/UX',
67
- skills: ['ui-ux-pro', 'design-system-generator', 'design-md', 'frontend-design']
37
+ name: ' Testing & QA',
38
+ skills: ['qa-test-scenario']
68
39
  },
69
40
  {
70
- name: '⚙️ Development & Code Review',
71
- skills: ['code-review', 'laravel-code-review', 'mcp-builder']
41
+ name: ' Prompter Workflow',
42
+ skills: ['prompter-workflow', 'prompter-specs', 'proposal', 'apply', 'archive']
72
43
  },
73
44
  {
74
45
  name: '📝 Documentation',
75
- skills: ['doc-builder', 'document-translator', 'ai-context-generator', 'meeting-notes', 'sph-generator']
46
+ skills: ['doc-builder', 'document-translator', 'document-explainer', 'ai-context-generator', 'meeting-notes', 'sph-generator']
76
47
  },
77
48
  {
78
49
  name: '✨ Content & Productivity',
79
- skills: ['gamma-builder', 'enhance-prompt']
50
+ skills: ['enhance', 'enhance-prompt', 'ai-humanizer', 'gamma-builder', 'cerebro']
80
51
  }
81
52
  ];
82
53
  const categorized = new Set();
@@ -91,7 +62,7 @@ export class InitCommand {
91
62
  for (const skill of skillsInCategory) {
92
63
  categorized.add(skill.name);
93
64
  choices.push({
94
- name: ` ${skill.name}`,
65
+ name: ` ${skill.name} ${chalk.gray('- ' + this.truncateDescription(skill.description))}`,
95
66
  value: skill.name,
96
67
  checked: currentSkillNames.includes(skill.name)
97
68
  });
@@ -103,7 +74,7 @@ export class InitCommand {
103
74
  choices.push(new Separator(chalk.bold.cyan('🔧 Other')));
104
75
  for (const skill of uncategorized) {
105
76
  choices.push({
106
- name: ` ${skill.name}`,
77
+ name: ` ${skill.name} ${chalk.gray('- ' + this.truncateDescription(skill.description))}`,
107
78
  value: skill.name,
108
79
  checked: currentSkillNames.includes(skill.name)
109
80
  });
@@ -175,29 +146,6 @@ export class InitCommand {
175
146
  // In non-interactive re-init without tools specified, keep current tools
176
147
  selectedTools = currentTools;
177
148
  }
178
- // Select prompts
179
- let selectedPrompts = [];
180
- if (options.prompts && options.prompts.length > 0) {
181
- // Handle comma-separated values in a single string or array of strings
182
- selectedPrompts = options.prompts.flatMap(prompt => prompt.split(',').map(p => p.trim()));
183
- }
184
- else if (!options.noInteractive) {
185
- try {
186
- // Detect currently installed prompts (use path.join to get prompter path)
187
- const prompterPathForDetection = path.join(projectPath, PROMPTER_DIR);
188
- const currentPrompts = await this.detectInstalledPrompts(prompterPathForDetection);
189
- selectedPrompts = await checkbox({
190
- message: 'Select prompt templates to install:',
191
- choices: this.getCategorizedPromptChoices(currentPrompts),
192
- pageSize: 20
193
- });
194
- }
195
- catch (error) {
196
- // User cancelled
197
- console.log(chalk.yellow(isReInitialization ? '\nRe-configuration cancelled.' : '\nInitialization cancelled.'));
198
- return;
199
- }
200
- }
201
149
  // Select skills — resolve from the package directory, not the user's project
202
150
  // dist/commands/init.js → go up two levels to reach the package root
203
151
  const packageDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..');
@@ -291,12 +239,6 @@ export class InitCommand {
291
239
  const toolsToAdd = selectedTools.filter(t => !currentTools.includes(t));
292
240
  const toolsToRemove = currentTools.filter(t => !selectedTools.includes(t));
293
241
  const toolsToKeep = selectedTools.filter(t => currentTools.includes(t));
294
- // Handle prompt changes
295
- const prompterPathForDetection = path.join(projectPath, PROMPTER_DIR);
296
- const currentPrompts = await this.detectInstalledPrompts(prompterPathForDetection);
297
- const promptsToAdd = selectedPrompts.filter(p => !currentPrompts.includes(p));
298
- const promptsToRemove = currentPrompts.filter(p => !selectedPrompts.includes(p));
299
- const promptsToKeep = selectedPrompts.filter(p => currentPrompts.includes(p));
300
242
  // Remove old tool files
301
243
  if (toolsToRemove.length > 0) {
302
244
  console.log(chalk.blue('\n🗑️ Removing workflow files...\n'));
@@ -315,67 +257,6 @@ export class InitCommand {
315
257
  }
316
258
  }
317
259
  }
318
- // Remove unchecked prompts
319
- if (promptsToRemove.length > 0) {
320
- console.log(chalk.blue('\n🗑️ Removing prompt templates...\n'));
321
- // Remove from prompter/ folder
322
- const removedPrompts = await this.removePrompts(prompterPath, promptsToRemove);
323
- for (const promptName of removedPrompts) {
324
- console.log(chalk.yellow('✓') + ` Removed ${chalk.cyan(promptName)}`);
325
- }
326
- // Remove workflow files from all configured tools
327
- await this.removeWorkflowFilesForPrompts(projectPath, currentTools, promptsToRemove);
328
- }
329
- // Generate workflow files for new tools
330
- if (toolsToAdd.length > 0) {
331
- console.log(chalk.blue('\n📝 Creating workflow files...\n'));
332
- // Convert selected prompt values to SlashCommandIds
333
- const slashCommandIds = selectedPrompts;
334
- for (const toolId of toolsToAdd) {
335
- const configurator = registry.get(toolId);
336
- if (configurator) {
337
- try {
338
- // Pass selected prompts to only generate those workflow files
339
- // Pass empty array if no prompts selected to generate nothing
340
- const files = await configurator.generateAll(projectPath, slashCommandIds);
341
- for (const file of files) {
342
- console.log(chalk.green('✓') + ` Created ${chalk.cyan(file)}`);
343
- }
344
- }
345
- catch (error) {
346
- console.log(chalk.red('✗') + ` Failed to create files for ${toolId}: ${error}`);
347
- }
348
- }
349
- }
350
- }
351
- // Add missing workflow files for existing tools
352
- if (isReInitialization && toolsToKeep.length > 0) {
353
- const missingFiles = [];
354
- // Convert selected prompt values to SlashCommandIds
355
- const slashCommandIds = selectedPrompts;
356
- for (const toolId of toolsToKeep) {
357
- const configurator = registry.get(toolId);
358
- if (configurator) {
359
- try {
360
- // Pass selected prompts to only generate those workflow files
361
- // Pass empty array if no prompts selected to generate nothing
362
- const files = await configurator.generateAll(projectPath, slashCommandIds);
363
- for (const file of files) {
364
- missingFiles.push(file);
365
- }
366
- }
367
- catch (error) {
368
- // Ignore errors for kept tools
369
- }
370
- }
371
- }
372
- if (missingFiles.length > 0) {
373
- console.log(chalk.blue('\n📝 Adding missing workflow files...\n'));
374
- for (const file of missingFiles) {
375
- console.log(chalk.green('✓') + ` Created ${chalk.cyan(file)}`);
376
- }
377
- }
378
- }
379
260
  // Show kept tools
380
261
  if (isReInitialization && toolsToKeep.length > 0 && (toolsToAdd.length > 0 || toolsToRemove.length > 0)) {
381
262
  console.log(chalk.blue('\n✨ Keeping existing tools:\n'));
@@ -386,28 +267,12 @@ export class InitCommand {
386
267
  }
387
268
  }
388
269
  }
389
- // Install new prompts
390
- if (promptsToAdd.length > 0) {
391
- console.log(chalk.blue('\n📋 Installing prompt templates...\n'));
392
- const installedPrompts = await this.installPrompts(projectPath, prompterPath, promptsToAdd);
393
- for (const promptName of installedPrompts) {
394
- console.log(chalk.green('✓') + ` Installed ${chalk.cyan(promptName)}`);
395
- }
396
- }
397
- // Update existing prompts in prompter/core/
398
- if (isReInitialization && promptsToKeep.length > 0) {
399
- console.log(chalk.blue('\n🔄 Updating existing prompt templates...\n'));
400
- const updatedPrompts = await this.installPrompts(projectPath, prompterPath, promptsToKeep);
401
- for (const promptName of updatedPrompts) {
402
- console.log(chalk.green('✓') + ` Updated ${chalk.cyan(promptName)}`);
403
- }
404
- }
405
270
  // --- Skills setup ---
406
271
  const skillChanges = await this.setupSkills(projectPath, prompterPath, selectedTools, selectedSkills);
407
272
  // Success message
408
273
  if (isReInitialization) {
409
274
  console.log(chalk.green('\n✅ Prompter tools updated successfully!\n'));
410
- if (toolsToAdd.length > 0 || toolsToRemove.length > 0 || promptsToAdd.length > 0 || promptsToRemove.length > 0 || skillChanges.added.length > 0 || skillChanges.removed.length > 0) {
275
+ if (toolsToAdd.length > 0 || toolsToRemove.length > 0 || skillChanges.added.length > 0 || skillChanges.removed.length > 0) {
411
276
  console.log(chalk.blue('Summary:'));
412
277
  if (toolsToAdd.length > 0) {
413
278
  console.log(chalk.green(' Tools Added: ') + toolsToAdd.map(t => {
@@ -421,18 +286,6 @@ export class InitCommand {
421
286
  return tool ? tool.name : t;
422
287
  }).join(', '));
423
288
  }
424
- if (promptsToAdd.length > 0) {
425
- console.log(chalk.green(' Prompts Added: ') + promptsToAdd.map(p => {
426
- const prompt = AVAILABLE_PROMPTS.find(ap => ap.value === p);
427
- return prompt ? prompt.name : p;
428
- }).join(', '));
429
- }
430
- if (promptsToRemove.length > 0) {
431
- console.log(chalk.yellow(' Prompts Removed: ') + promptsToRemove.map(p => {
432
- const prompt = AVAILABLE_PROMPTS.find(ap => ap.value === p);
433
- return prompt ? prompt.name : p;
434
- }).join(', '));
435
- }
436
289
  if (skillChanges.added.length > 0) {
437
290
  console.log(chalk.green(' Skills Added: ') + skillChanges.added.join(', '));
438
291
  }
@@ -447,9 +300,6 @@ export class InitCommand {
447
300
  }
448
301
  else {
449
302
  console.log(chalk.green('\n✅ Prompter initialized successfully!\n'));
450
- if (promptsToAdd.length > 0) {
451
- console.log(chalk.gray(`Installed ${promptsToAdd.length} prompt template(s).\n`));
452
- }
453
303
  if (skillChanges.added.length > 0) {
454
304
  console.log(chalk.gray(`Installed ${skillChanges.added.length} skill(s).\n`));
455
305
  }
@@ -469,133 +319,21 @@ export class InitCommand {
469
319
  const configuredTools = [];
470
320
  const allConfigurators = registry.getAll();
471
321
  for (const configurator of allConfigurators) {
472
- const targets = configurator.getTargets();
473
- let hasFiles = false;
474
- for (const target of targets) {
475
- const filePath = path.join(projectPath, target.path);
476
- if (await this.fileExists(filePath)) {
477
- hasFiles = true;
478
- break;
479
- }
322
+ const skillsRoot = path.join(projectPath, configurator.getSkillsRootDir());
323
+ try {
324
+ const stat = await fs.stat(skillsRoot);
325
+ if (stat.isDirectory())
326
+ configuredTools.push(configurator.toolId);
480
327
  }
481
- if (hasFiles) {
482
- configuredTools.push(configurator.toolId);
328
+ catch {
329
+ // directory doesn't exist — tool not configured
483
330
  }
484
331
  }
485
332
  return configuredTools;
486
333
  }
487
334
  async removeToolFiles(projectPath, configurator) {
488
- const removedFiles = [];
489
- const targets = configurator.getTargets();
490
- for (const target of targets) {
491
- const filePath = path.join(projectPath, target.path);
492
- if (await this.fileExists(filePath)) {
493
- await fs.unlink(filePath);
494
- removedFiles.push(target.path);
495
- // Remove empty parent directories
496
- await this.removeEmptyDirs(path.dirname(filePath), projectPath);
497
- }
498
- }
499
- return removedFiles;
500
- }
501
- async removeEmptyDirs(dirPath, projectPath) {
502
- // Don't remove the project directory itself
503
- if (dirPath === projectPath || dirPath === path.dirname(projectPath)) {
504
- return;
505
- }
506
- try {
507
- const files = await fs.readdir(dirPath);
508
- if (files.length === 0) {
509
- await fs.rmdir(dirPath);
510
- // Recursively check parent
511
- await this.removeEmptyDirs(path.dirname(dirPath), projectPath);
512
- }
513
- }
514
- catch {
515
- // Directory doesn't exist or can't be removed, ignore
516
- }
517
- }
518
- async detectInstalledPrompts(prompterPath) {
519
- const installedPrompts = [];
520
- const corePath = path.join(prompterPath, 'core');
521
- for (const prompt of AVAILABLE_PROMPTS) {
522
- const promptFilePath = path.join(corePath, prompt.sourceFile);
523
- if (await this.fileExists(promptFilePath)) {
524
- installedPrompts.push(prompt.value);
525
- }
526
- }
527
- return installedPrompts;
528
- }
529
- async installPrompts(projectPath, prompterPath, selectedPrompts) {
530
- const installedPrompts = [];
531
- const corePath = path.join(prompterPath, 'core');
532
- // Ensure core directory exists
533
- await fs.mkdir(corePath, { recursive: true });
534
- for (const promptId of selectedPrompts) {
535
- const prompt = AVAILABLE_PROMPTS.find(p => p.value === promptId);
536
- if (!prompt)
537
- continue;
538
- const destPath = path.join(corePath, prompt.sourceFile);
539
- try {
540
- // Get template content from embedded templates
541
- const content = PROMPT_TEMPLATES[promptId];
542
- if (!content) {
543
- console.log(chalk.yellow(` Warning: Template not found for ${prompt.name}`));
544
- continue;
545
- }
546
- // Write the prompt file from embedded template (overwrites if exists)
547
- await fs.writeFile(destPath, content, 'utf-8');
548
- installedPrompts.push(prompt.name);
549
- }
550
- catch (error) {
551
- console.log(chalk.red(` Error installing ${prompt.name}: ${error}`));
552
- }
553
- }
554
- return installedPrompts;
555
- }
556
- async removePrompts(prompterPath, promptsToRemove) {
557
- const removedPrompts = [];
558
- const corePath = path.join(prompterPath, 'core');
559
- for (const promptId of promptsToRemove) {
560
- const prompt = AVAILABLE_PROMPTS.find(p => p.value === promptId);
561
- if (!prompt)
562
- continue;
563
- const filePath = path.join(corePath, prompt.sourceFile);
564
- try {
565
- if (await this.fileExists(filePath)) {
566
- await fs.unlink(filePath);
567
- removedPrompts.push(prompt.name);
568
- }
569
- }
570
- catch (error) {
571
- console.log(chalk.red(` Error removing ${prompt.name}: ${error}`));
572
- }
573
- }
574
- return removedPrompts;
575
- }
576
- async removeWorkflowFilesForPrompts(projectPath, toolIds, promptIds) {
577
- const slashCommandIds = promptIds;
578
- for (const toolId of toolIds) {
579
- const configurator = registry.get(toolId);
580
- if (!configurator)
581
- continue;
582
- // Get targets for the prompts to remove
583
- const targets = configurator.getTargets(slashCommandIds);
584
- for (const target of targets) {
585
- const filePath = path.join(projectPath, target.path);
586
- try {
587
- if (await this.fileExists(filePath)) {
588
- await fs.unlink(filePath);
589
- console.log(chalk.yellow('✓') + ` Removed ${chalk.cyan(target.path)}`);
590
- // Remove empty parent directories
591
- await this.removeEmptyDirs(path.dirname(filePath), projectPath);
592
- }
593
- }
594
- catch (error) {
595
- // Silently ignore errors for workflow file removal
596
- }
597
- }
598
- }
335
+ await configurator.removeAllDeployedSkills(projectPath);
336
+ return [configurator.getSkillsRootDir() + '/'];
599
337
  }
600
338
  async ensureRootClaudeFile(projectPath) {
601
339
  const rootClaudePath = path.join(projectPath, 'CLAUDE.md');