@dedesfr/prompter 0.5.1 → 0.6.1

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 +64 -0
  2. package/dist/cli/index.js +50 -2
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/api-contract-generator.d.ts +11 -0
  5. package/dist/commands/api-contract-generator.d.ts.map +1 -0
  6. package/dist/commands/api-contract-generator.js +97 -0
  7. package/dist/commands/api-contract-generator.js.map +1 -0
  8. package/dist/commands/erd-generator.d.ts +11 -0
  9. package/dist/commands/erd-generator.d.ts.map +1 -0
  10. package/dist/commands/erd-generator.js +97 -0
  11. package/dist/commands/erd-generator.js.map +1 -0
  12. package/dist/commands/fsd-generator.d.ts +11 -0
  13. package/dist/commands/fsd-generator.d.ts.map +1 -0
  14. package/dist/commands/fsd-generator.js +97 -0
  15. package/dist/commands/fsd-generator.js.map +1 -0
  16. package/dist/commands/init.d.ts +1 -0
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +55 -21
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/tdd-generator.d.ts +11 -0
  21. package/dist/commands/tdd-generator.d.ts.map +1 -0
  22. package/dist/commands/tdd-generator.js +97 -0
  23. package/dist/commands/tdd-generator.js.map +1 -0
  24. package/dist/commands/tdd-lite-generator.d.ts +11 -0
  25. package/dist/commands/tdd-lite-generator.d.ts.map +1 -0
  26. package/dist/commands/tdd-lite-generator.js +97 -0
  27. package/dist/commands/tdd-lite-generator.js.map +1 -0
  28. package/dist/commands/wireframe-generator.d.ts +11 -0
  29. package/dist/commands/wireframe-generator.d.ts.map +1 -0
  30. package/dist/commands/wireframe-generator.js +97 -0
  31. package/dist/commands/wireframe-generator.js.map +1 -0
  32. package/dist/core/config.d.ts.map +1 -1
  33. package/dist/core/config.js +36 -0
  34. package/dist/core/config.js.map +1 -1
  35. package/dist/core/configurators/slash/antigravity.d.ts.map +1 -1
  36. package/dist/core/configurators/slash/antigravity.js +14 -2
  37. package/dist/core/configurators/slash/antigravity.js.map +1 -1
  38. package/dist/core/configurators/slash/base.d.ts +2 -2
  39. package/dist/core/configurators/slash/base.d.ts.map +1 -1
  40. package/dist/core/configurators/slash/base.js +11 -5
  41. package/dist/core/configurators/slash/base.js.map +1 -1
  42. package/dist/core/configurators/slash/claude.d.ts.map +1 -1
  43. package/dist/core/configurators/slash/claude.js +14 -2
  44. package/dist/core/configurators/slash/claude.js.map +1 -1
  45. package/dist/core/configurators/slash/codex.d.ts.map +1 -1
  46. package/dist/core/configurators/slash/codex.js +14 -2
  47. package/dist/core/configurators/slash/codex.js.map +1 -1
  48. package/dist/core/configurators/slash/github-copilot.d.ts +1 -1
  49. package/dist/core/configurators/slash/github-copilot.d.ts.map +1 -1
  50. package/dist/core/configurators/slash/github-copilot.js +16 -4
  51. package/dist/core/configurators/slash/github-copilot.js.map +1 -1
  52. package/dist/core/configurators/slash/kilocode.d.ts.map +1 -1
  53. package/dist/core/configurators/slash/kilocode.js +14 -2
  54. package/dist/core/configurators/slash/kilocode.js.map +1 -1
  55. package/dist/core/configurators/slash/opencode.d.ts.map +1 -1
  56. package/dist/core/configurators/slash/opencode.js +14 -2
  57. package/dist/core/configurators/slash/opencode.js.map +1 -1
  58. package/dist/core/prompt-templates.d.ts +16 -0
  59. package/dist/core/prompt-templates.d.ts.map +1 -0
  60. package/dist/core/prompt-templates.js +2575 -0
  61. package/dist/core/prompt-templates.js.map +1 -0
  62. package/dist/core/templates/slash-command-templates.d.ts +1 -1
  63. package/dist/core/templates/slash-command-templates.d.ts.map +1 -1
  64. package/dist/core/templates/slash-command-templates.js +8 -1
  65. package/dist/core/templates/slash-command-templates.js.map +1 -1
  66. package/docs/tasks.md +3 -0
  67. package/package.json +1 -1
  68. package/prompt/api-contract-generator.md +234 -0
  69. package/prompt/erd-generator.md +130 -0
  70. package/prompt/fsd-generator.md +157 -0
  71. package/prompt/tdd-generator.md +294 -0
  72. package/prompt/tdd-lite-generator.md +224 -0
  73. package/prompt/wireframe-generator.md +219 -0
  74. package/src/cli/index.ts +56 -2
  75. package/src/commands/api-contract-generator.ts +118 -0
  76. package/src/commands/erd-generator.ts +118 -0
  77. package/src/commands/fsd-generator.ts +118 -0
  78. package/src/commands/init.ts +66 -22
  79. package/src/commands/tdd-generator.ts +118 -0
  80. package/src/commands/tdd-lite-generator.ts +118 -0
  81. package/src/commands/wireframe-generator.ts +118 -0
  82. package/src/core/config.ts +36 -0
  83. package/src/core/configurators/slash/antigravity.ts +14 -2
  84. package/src/core/configurators/slash/base.ts +12 -5
  85. package/src/core/configurators/slash/claude.ts +14 -2
  86. package/src/core/configurators/slash/codex.ts +14 -2
  87. package/src/core/configurators/slash/github-copilot.ts +16 -4
  88. package/src/core/configurators/slash/kilocode.ts +14 -2
  89. package/src/core/configurators/slash/opencode.ts +14 -2
  90. package/src/core/prompt-templates.ts +2589 -0
  91. package/src/core/templates/slash-command-templates.ts +17 -2
  92. package/.github/prompts/ai-humanizer.prompt.md +0 -50
  93. package/.github/prompts/epic-single.prompt.md +0 -64
  94. package/.github/prompts/prd-generator.prompt.md +0 -212
  95. package/.github/prompts/product-brief.prompt.md +0 -142
  96. package/.github/prompts/prompter-enhance.prompt.md +0 -48
  97. package/.github/prompts/qa-test-scenario.prompt.md +0 -150
  98. package/.github/prompts/skill-creator.prompt.md +0 -174
  99. package/.github/prompts/story-single.prompt.md +0 -87
  100. package/docs/prompt-template.md +0 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,69 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## [0.6.1] - 2026-01-23
4
+
5
+ ### ✨ Added
6
+ - **New Generator Commands**: Added 6 new workflow generator commands for complete software development lifecycle
7
+ - `api-contract-generator`: Generate OpenAPI specification from FSD and ERD
8
+ - `erd-generator`: Generate Entity Relationship Diagram from FSD
9
+ - `fsd-generator`: Generate Functional Specification Document from PRD
10
+ - `tdd-generator`: Generate comprehensive Technical Design Document
11
+ - `tdd-lite-generator`: Generate lean Technical Design Document (TDD-Lite)
12
+ - `wireframe-generator`: Generate UI/UX wireframes from technical specs
13
+ - **Embedded Templates**: All 6 new generators include full embedded prompt templates
14
+ - Complete workflow support for all AI tools
15
+ - Comprehensive prompts for technical documentation generation
16
+ - End-to-end software development workflow coverage
17
+ - **Init Command Enhancement**: Updated `prompter init` to include all new prompts
18
+ - New prompts available in interactive selection
19
+ - Added to `--prompts` flag options
20
+ - Alphabetically organized prompt list
21
+
22
+ ### šŸ”„ Changed
23
+ - **Tool Configurators**: Updated all AI tool configurators with new command paths
24
+ - GitHub Copilot: `.github/prompts/[command].prompt.md`
25
+ - Antigravity: `.agent/workflows/[command].md`
26
+ - Claude Code: `.claude/commands/prompter/[command].md`
27
+ - Codex: `.codex/prompts/[command].md`
28
+ - OpenCode: `.opencode/prompts/[command].md`
29
+ - Kilo Code: `.kilocode/workflows/[command].md`
30
+
31
+ ### šŸ”§ Technical
32
+ - Extended `SlashCommandId` type with 6 new command identifiers
33
+ - Added command bodies to `slashCommandBodies` registry
34
+ - Updated `ALL_COMMANDS` array in base configurator
35
+ - Enhanced `AVAILABLE_PROMPTS` with new generator descriptions
36
+
37
+ ## [0.6.0] - 2026-01-22
38
+
39
+ ### ✨ Added
40
+ - **Core Folder Organization**: Prompt templates now organized in `prompter/core/` subfolder
41
+ - Cleaner separation between project configuration and prompt templates
42
+ - `prompter/project.md` remains at root level
43
+ - All prompt templates stored in `prompter/core/` directory
44
+
45
+ ### šŸ› Fixed
46
+ - **Embedded Prompt Templates**: All prompt templates now embedded in package
47
+ - No longer depends on external prompt files
48
+ - Works correctly in any project directory
49
+ - Templates always available after global installation
50
+ - **Selective Workflow Generation**: Only selected prompts are generated
51
+ - Previously generated all workflows regardless of selection
52
+ - Now respects user selection in both interactive and CLI modes
53
+ - Applies to all supported AI tools (GitHub Copilot, Antigravity, Claude Code, Codex, OpenCode, Kilo Code)
54
+ - **Workflow File Removal**: Prompt removal now works across all directories
55
+ - Removes workflow files from AI tool directories (.github/prompts/, .agent/workflows/, etc.)
56
+ - Previously only removed from prompter directory
57
+ - Proper cleanup of empty directories
58
+ - **Empty Selection Handling**: Unchecking all prompts now generates nothing
59
+ - Previously generated all prompts when none selected
60
+ - Now correctly interprets empty selection as no prompts wanted
61
+
62
+ ### šŸ”„ Changed
63
+ - **Prompt Directory Structure**: Reorganized prompter folder layout
64
+ - Old: `prompter/*.md`
65
+ - New: `prompter/core/*.md` for templates, `prompter/project.md` at root
66
+
3
67
  ## [0.5.1] - 2026-01-22
4
68
 
5
69
  ### ✨ Added
package/dist/cli/index.js CHANGED
@@ -4,16 +4,22 @@ import { UpdateCommand } from '../commands/update.js';
4
4
  import { ListCommand } from '../commands/list.js';
5
5
  import { GuideCommand } from '../commands/guide.js';
6
6
  import { UpgradeCommand } from '../commands/upgrade.js';
7
+ import { ApiContractGeneratorCommand } from '../commands/api-contract-generator.js';
8
+ import { ErdGeneratorCommand } from '../commands/erd-generator.js';
9
+ import { FsdGeneratorCommand } from '../commands/fsd-generator.js';
10
+ import { TddGeneratorCommand } from '../commands/tdd-generator.js';
11
+ import { TddLiteGeneratorCommand } from '../commands/tdd-lite-generator.js';
12
+ import { WireframeGeneratorCommand } from '../commands/wireframe-generator.js';
7
13
  const program = new Command();
8
14
  program
9
15
  .name('prompter')
10
16
  .description('Enhance prompts directly in your AI coding workflow')
11
- .version('0.5.1');
17
+ .version('0.6.1');
12
18
  program
13
19
  .command('init')
14
20
  .description('Initialize Prompter in your project')
15
21
  .option('--tools <tools...>', 'Specify AI tools to configure (antigravity, claude, codex, github-copilot, opencode, kilocode)')
16
- .option('--prompts <prompts...>', 'Specify prompts to install (ai-humanizer, epic-single, prd-agent-generator, prd-generator, product-brief, qa-test-scenario, skill-creator, story-single)')
22
+ .option('--prompts <prompts...>', 'Specify prompts to install (ai-humanizer, api-contract-generator, epic-single, erd-generator, fsd-generator, prd-agent-generator, prd-generator, product-brief, qa-test-scenario, skill-creator, story-single, tdd-generator, tdd-lite-generator, wireframe-generator)')
17
23
  .option('--no-interactive', 'Run without interactive prompts')
18
24
  .action(async (options) => {
19
25
  const initCommand = new InitCommand();
@@ -48,5 +54,47 @@ program
48
54
  const upgradeCommand = new UpgradeCommand();
49
55
  await upgradeCommand.execute();
50
56
  });
57
+ program
58
+ .command('api-contract-generator')
59
+ .description('Generate API Contract workflow files')
60
+ .action(async () => {
61
+ const command = new ApiContractGeneratorCommand();
62
+ await command.execute();
63
+ });
64
+ program
65
+ .command('erd-generator')
66
+ .description('Generate ERD workflow files')
67
+ .action(async () => {
68
+ const command = new ErdGeneratorCommand();
69
+ await command.execute();
70
+ });
71
+ program
72
+ .command('fsd-generator')
73
+ .description('Generate FSD workflow files')
74
+ .action(async () => {
75
+ const command = new FsdGeneratorCommand();
76
+ await command.execute();
77
+ });
78
+ program
79
+ .command('tdd-generator')
80
+ .description('Generate TDD workflow files')
81
+ .action(async () => {
82
+ const command = new TddGeneratorCommand();
83
+ await command.execute();
84
+ });
85
+ program
86
+ .command('tdd-lite-generator')
87
+ .description('Generate TDD-Lite workflow files')
88
+ .action(async () => {
89
+ const command = new TddLiteGeneratorCommand();
90
+ await command.execute();
91
+ });
92
+ program
93
+ .command('wireframe-generator')
94
+ .description('Generate Wireframe workflow files')
95
+ .action(async () => {
96
+ const command = new WireframeGeneratorCommand();
97
+ await command.execute();
98
+ });
51
99
  program.parse();
52
100
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,oBAAoB,EAAE,gGAAgG,CAAC;KAC9H,MAAM,CAAC,wBAAwB,EAAE,0JAA0J,CAAC;KAC5L,MAAM,CAAC,kBAAkB,EAAE,iCAAiC,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACtB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC;AAClC,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACtB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACxC,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;AACjC,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC5C,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;AACnC,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,oBAAoB,EAAE,gGAAgG,CAAC;KAC9H,MAAM,CAAC,wBAAwB,EAAE,wQAAwQ,CAAC;KAC1S,MAAM,CAAC,kBAAkB,EAAE,iCAAiC,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACtB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC;AAClC,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACtB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IACxC,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;AACjC,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC5C,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;AACnC,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,wBAAwB,CAAC;KACjC,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,OAAO,GAAG,IAAI,2BAA2B,EAAE,CAAC;IAClD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,OAAO,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC1C,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,OAAO,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC1C,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,OAAO,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC1C,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,OAAO,GAAG,IAAI,uBAAuB,EAAE,CAAC;IAC9C,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,OAAO,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAChD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ interface ApiContractGeneratorOptions {
2
+ tools?: string[];
3
+ noInteractive?: boolean;
4
+ }
5
+ export declare class ApiContractGeneratorCommand {
6
+ execute(options?: ApiContractGeneratorOptions): Promise<void>;
7
+ private fileExists;
8
+ private detectConfiguredTools;
9
+ }
10
+ export {};
11
+ //# sourceMappingURL=api-contract-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-contract-generator.d.ts","sourceRoot":"","sources":["../../src/commands/api-contract-generator.ts"],"names":[],"mappings":"AAMA,UAAU,2BAA2B;IACjC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,2BAA2B;IAC9B,OAAO,CAAC,OAAO,GAAE,2BAAgC,GAAG,OAAO,CAAC,IAAI,CAAC;YAyEzD,UAAU;YASV,qBAAqB;CAuBtC"}
@@ -0,0 +1,97 @@
1
+ import { promises as fs } from 'fs';
2
+ import path from 'path';
3
+ import chalk from 'chalk';
4
+ import { PrompterConfig, PROMPTER_MARKERS } from '../core/config.js';
5
+ import { registry } from '../core/configurators/slash/index.js';
6
+ export class ApiContractGeneratorCommand {
7
+ async execute(options = {}) {
8
+ const projectPath = process.cwd();
9
+ // Check if initialized
10
+ if (!await PrompterConfig.prompterDirExists(projectPath)) {
11
+ console.log(chalk.red('\nāŒ Prompter is not initialized in this project.\n'));
12
+ console.log(chalk.gray(' Run `prompter init` first.\n'));
13
+ process.exitCode = 1;
14
+ return;
15
+ }
16
+ console.log(chalk.blue('\nšŸ“ Generating API Contract Generator workflow files...\n'));
17
+ // Detect currently configured tools
18
+ const configuredTools = await this.detectConfiguredTools(projectPath);
19
+ if (configuredTools.length === 0) {
20
+ console.log(chalk.yellow('āš ļø No tools configured yet.\n'));
21
+ console.log(chalk.gray(' Run `prompter init` to configure AI tools first.\n'));
22
+ process.exitCode = 1;
23
+ return;
24
+ }
25
+ // Generate api-contract-generator workflow files for all configured tools
26
+ let successCount = 0;
27
+ let failCount = 0;
28
+ for (const toolId of configuredTools) {
29
+ const configurator = registry.get(toolId);
30
+ if (configurator) {
31
+ try {
32
+ // Generate only the api-contract-generator workflow file
33
+ const body = configurator['getBody']('api-contract-generator');
34
+ const relativePath = configurator['getRelativePath']('api-contract-generator');
35
+ const filePath = path.join(projectPath, relativePath);
36
+ // Ensure directory exists
37
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
38
+ // Check if file exists
39
+ const fileExists = await this.fileExists(filePath);
40
+ if (fileExists) {
41
+ console.log(chalk.yellow('āš ļø') + ` ${chalk.cyan(relativePath)} already exists, skipping`);
42
+ continue;
43
+ }
44
+ // Get frontmatter if needed
45
+ const frontmatter = configurator['getFrontmatter']('api-contract-generator');
46
+ const sections = [];
47
+ if (frontmatter) {
48
+ sections.push(frontmatter.trim());
49
+ }
50
+ sections.push(`${PROMPTER_MARKERS.start}\n${body}\n${PROMPTER_MARKERS.end}`);
51
+ const content = sections.join('\n') + '\n';
52
+ await fs.writeFile(filePath, content, 'utf-8');
53
+ console.log(chalk.green('āœ“') + ` Created ${chalk.cyan(relativePath)}`);
54
+ successCount++;
55
+ }
56
+ catch (error) {
57
+ console.log(chalk.red('āœ—') + ` Failed to create files for ${toolId}: ${error}`);
58
+ failCount++;
59
+ }
60
+ }
61
+ }
62
+ // Success message
63
+ console.log(chalk.green(`\nāœ… API Contract Generator workflow files created successfully!\n`));
64
+ console.log(chalk.blue('Next steps:'));
65
+ console.log(chalk.gray(' 1. Use /api-contract-generator in your AI tool to create API contracts'));
66
+ console.log(chalk.gray(' 2. API contracts will be saved to prompter/<slug>/api-contract.md\n'));
67
+ }
68
+ async fileExists(filePath) {
69
+ try {
70
+ await fs.access(filePath);
71
+ return true;
72
+ }
73
+ catch {
74
+ return false;
75
+ }
76
+ }
77
+ async detectConfiguredTools(projectPath) {
78
+ const configuredTools = [];
79
+ const allConfigurators = registry.getAll();
80
+ for (const configurator of allConfigurators) {
81
+ const targets = configurator.getTargets();
82
+ let hasFiles = false;
83
+ for (const target of targets) {
84
+ const filePath = path.join(projectPath, target.path);
85
+ if (await this.fileExists(filePath)) {
86
+ hasFiles = true;
87
+ break;
88
+ }
89
+ }
90
+ if (hasFiles) {
91
+ configuredTools.push(configurator.toolId);
92
+ }
93
+ }
94
+ return configuredTools;
95
+ }
96
+ }
97
+ //# sourceMappingURL=api-contract-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-contract-generator.js","sourceRoot":"","sources":["../../src/commands/api-contract-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ interface ErdGeneratorOptions {
2
+ tools?: string[];
3
+ noInteractive?: boolean;
4
+ }
5
+ export declare class ErdGeneratorCommand {
6
+ execute(options?: ErdGeneratorOptions): Promise<void>;
7
+ private fileExists;
8
+ private detectConfiguredTools;
9
+ }
10
+ export {};
11
+ //# sourceMappingURL=erd-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erd-generator.d.ts","sourceRoot":"","sources":["../../src/commands/erd-generator.ts"],"names":[],"mappings":"AAMA,UAAU,mBAAmB;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,mBAAmB;IACtB,OAAO,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;YAyEjD,UAAU;YASV,qBAAqB;CAuBtC"}
@@ -0,0 +1,97 @@
1
+ import { promises as fs } from 'fs';
2
+ import path from 'path';
3
+ import chalk from 'chalk';
4
+ import { PrompterConfig, PROMPTER_MARKERS } from '../core/config.js';
5
+ import { registry } from '../core/configurators/slash/index.js';
6
+ export class ErdGeneratorCommand {
7
+ async execute(options = {}) {
8
+ const projectPath = process.cwd();
9
+ // Check if initialized
10
+ if (!await PrompterConfig.prompterDirExists(projectPath)) {
11
+ console.log(chalk.red('\nāŒ Prompter is not initialized in this project.\n'));
12
+ console.log(chalk.gray(' Run `prompter init` first.\n'));
13
+ process.exitCode = 1;
14
+ return;
15
+ }
16
+ console.log(chalk.blue('\nšŸ“ Generating ERD Generator workflow files...\n'));
17
+ // Detect currently configured tools
18
+ const configuredTools = await this.detectConfiguredTools(projectPath);
19
+ if (configuredTools.length === 0) {
20
+ console.log(chalk.yellow('āš ļø No tools configured yet.\n'));
21
+ console.log(chalk.gray(' Run `prompter init` to configure AI tools first.\n'));
22
+ process.exitCode = 1;
23
+ return;
24
+ }
25
+ // Generate erd-generator workflow files for all configured tools
26
+ let successCount = 0;
27
+ let failCount = 0;
28
+ for (const toolId of configuredTools) {
29
+ const configurator = registry.get(toolId);
30
+ if (configurator) {
31
+ try {
32
+ // Generate only the erd-generator workflow file
33
+ const body = configurator['getBody']('erd-generator');
34
+ const relativePath = configurator['getRelativePath']('erd-generator');
35
+ const filePath = path.join(projectPath, relativePath);
36
+ // Ensure directory exists
37
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
38
+ // Check if file exists
39
+ const fileExists = await this.fileExists(filePath);
40
+ if (fileExists) {
41
+ console.log(chalk.yellow('āš ļø') + ` ${chalk.cyan(relativePath)} already exists, skipping`);
42
+ continue;
43
+ }
44
+ // Get frontmatter if needed
45
+ const frontmatter = configurator['getFrontmatter']('erd-generator');
46
+ const sections = [];
47
+ if (frontmatter) {
48
+ sections.push(frontmatter.trim());
49
+ }
50
+ sections.push(`${PROMPTER_MARKERS.start}\n${body}\n${PROMPTER_MARKERS.end}`);
51
+ const content = sections.join('\n') + '\n';
52
+ await fs.writeFile(filePath, content, 'utf-8');
53
+ console.log(chalk.green('āœ“') + ` Created ${chalk.cyan(relativePath)}`);
54
+ successCount++;
55
+ }
56
+ catch (error) {
57
+ console.log(chalk.red('āœ—') + ` Failed to create files for ${toolId}: ${error}`);
58
+ failCount++;
59
+ }
60
+ }
61
+ }
62
+ // Success message
63
+ console.log(chalk.green(`\nāœ… ERD Generator workflow files created successfully!\n`));
64
+ console.log(chalk.blue('Next steps:'));
65
+ console.log(chalk.gray(' 1. Use /erd-generator in your AI tool to create ERDs'));
66
+ console.log(chalk.gray(' 2. ERDs will be saved to prompter/<slug>/erd.md\n'));
67
+ }
68
+ async fileExists(filePath) {
69
+ try {
70
+ await fs.access(filePath);
71
+ return true;
72
+ }
73
+ catch {
74
+ return false;
75
+ }
76
+ }
77
+ async detectConfiguredTools(projectPath) {
78
+ const configuredTools = [];
79
+ const allConfigurators = registry.getAll();
80
+ for (const configurator of allConfigurators) {
81
+ const targets = configurator.getTargets();
82
+ let hasFiles = false;
83
+ for (const target of targets) {
84
+ const filePath = path.join(projectPath, target.path);
85
+ if (await this.fileExists(filePath)) {
86
+ hasFiles = true;
87
+ break;
88
+ }
89
+ }
90
+ if (hasFiles) {
91
+ configuredTools.push(configurator.toolId);
92
+ }
93
+ }
94
+ return configuredTools;
95
+ }
96
+ }
97
+ //# sourceMappingURL=erd-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erd-generator.js","sourceRoot":"","sources":["../../src/commands/erd-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ interface FsdGeneratorOptions {
2
+ tools?: string[];
3
+ noInteractive?: boolean;
4
+ }
5
+ export declare class FsdGeneratorCommand {
6
+ execute(options?: FsdGeneratorOptions): Promise<void>;
7
+ private fileExists;
8
+ private detectConfiguredTools;
9
+ }
10
+ export {};
11
+ //# sourceMappingURL=fsd-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fsd-generator.d.ts","sourceRoot":"","sources":["../../src/commands/fsd-generator.ts"],"names":[],"mappings":"AAMA,UAAU,mBAAmB;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,mBAAmB;IACtB,OAAO,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;YAyEjD,UAAU;YASV,qBAAqB;CAuBtC"}
@@ -0,0 +1,97 @@
1
+ import { promises as fs } from 'fs';
2
+ import path from 'path';
3
+ import chalk from 'chalk';
4
+ import { PrompterConfig, PROMPTER_MARKERS } from '../core/config.js';
5
+ import { registry } from '../core/configurators/slash/index.js';
6
+ export class FsdGeneratorCommand {
7
+ async execute(options = {}) {
8
+ const projectPath = process.cwd();
9
+ // Check if initialized
10
+ if (!await PrompterConfig.prompterDirExists(projectPath)) {
11
+ console.log(chalk.red('\nāŒ Prompter is not initialized in this project.\n'));
12
+ console.log(chalk.gray(' Run `prompter init` first.\n'));
13
+ process.exitCode = 1;
14
+ return;
15
+ }
16
+ console.log(chalk.blue('\nšŸ“ Generating FSD Generator workflow files...\n'));
17
+ // Detect currently configured tools
18
+ const configuredTools = await this.detectConfiguredTools(projectPath);
19
+ if (configuredTools.length === 0) {
20
+ console.log(chalk.yellow('āš ļø No tools configured yet.\n'));
21
+ console.log(chalk.gray(' Run `prompter init` to configure AI tools first.\n'));
22
+ process.exitCode = 1;
23
+ return;
24
+ }
25
+ // Generate fsd-generator workflow files for all configured tools
26
+ let successCount = 0;
27
+ let failCount = 0;
28
+ for (const toolId of configuredTools) {
29
+ const configurator = registry.get(toolId);
30
+ if (configurator) {
31
+ try {
32
+ // Generate only the fsd-generator workflow file
33
+ const body = configurator['getBody']('fsd-generator');
34
+ const relativePath = configurator['getRelativePath']('fsd-generator');
35
+ const filePath = path.join(projectPath, relativePath);
36
+ // Ensure directory exists
37
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
38
+ // Check if file exists
39
+ const fileExists = await this.fileExists(filePath);
40
+ if (fileExists) {
41
+ console.log(chalk.yellow('āš ļø') + ` ${chalk.cyan(relativePath)} already exists, skipping`);
42
+ continue;
43
+ }
44
+ // Get frontmatter if needed
45
+ const frontmatter = configurator['getFrontmatter']('fsd-generator');
46
+ const sections = [];
47
+ if (frontmatter) {
48
+ sections.push(frontmatter.trim());
49
+ }
50
+ sections.push(`${PROMPTER_MARKERS.start}\n${body}\n${PROMPTER_MARKERS.end}`);
51
+ const content = sections.join('\n') + '\n';
52
+ await fs.writeFile(filePath, content, 'utf-8');
53
+ console.log(chalk.green('āœ“') + ` Created ${chalk.cyan(relativePath)}`);
54
+ successCount++;
55
+ }
56
+ catch (error) {
57
+ console.log(chalk.red('āœ—') + ` Failed to create files for ${toolId}: ${error}`);
58
+ failCount++;
59
+ }
60
+ }
61
+ }
62
+ // Success message
63
+ console.log(chalk.green(`\nāœ… FSD Generator workflow files created successfully!\n`));
64
+ console.log(chalk.blue('Next steps:'));
65
+ console.log(chalk.gray(' 1. Use /fsd-generator in your AI tool to create FSDs'));
66
+ console.log(chalk.gray(' 2. FSDs will be saved to prompter/<slug>/fsd.md\n'));
67
+ }
68
+ async fileExists(filePath) {
69
+ try {
70
+ await fs.access(filePath);
71
+ return true;
72
+ }
73
+ catch {
74
+ return false;
75
+ }
76
+ }
77
+ async detectConfiguredTools(projectPath) {
78
+ const configuredTools = [];
79
+ const allConfigurators = registry.getAll();
80
+ for (const configurator of allConfigurators) {
81
+ const targets = configurator.getTargets();
82
+ let hasFiles = false;
83
+ for (const target of targets) {
84
+ const filePath = path.join(projectPath, target.path);
85
+ if (await this.fileExists(filePath)) {
86
+ hasFiles = true;
87
+ break;
88
+ }
89
+ }
90
+ if (hasFiles) {
91
+ configuredTools.push(configurator.toolId);
92
+ }
93
+ }
94
+ return configuredTools;
95
+ }
96
+ }
97
+ //# sourceMappingURL=fsd-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fsd-generator.js","sourceRoot":"","sources":["../../src/commands/fsd-generator.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare class InitCommand {
12
12
  private detectInstalledPrompts;
13
13
  private installPrompts;
14
14
  private removePrompts;
15
+ private removeWorkflowFilesForPrompts;
15
16
  }
16
17
  export {};
17
18
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAaA,UAAU,WAAW;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,WAAW;IACd,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAwQzC,UAAU;YASV,qBAAqB;YAwBrB,eAAe;YAkBf,eAAe;YAkBf,sBAAsB;YAatB,cAAc;YAkCd,aAAa;CAqB9B"}
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,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,WAAW;IACd,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YA0RzC,UAAU;YASV,qBAAqB;YAwBrB,eAAe;YAkBf,eAAe;YAkBf,sBAAsB;YActB,cAAc;YAiCd,aAAa;YAuBb,6BAA6B;CA2B9C"}