@dedesfr/prompter 0.6.0 → 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 (84) hide show
  1. package/CHANGELOG.md +34 -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/tdd-generator.d.ts +11 -0
  17. package/dist/commands/tdd-generator.d.ts.map +1 -0
  18. package/dist/commands/tdd-generator.js +97 -0
  19. package/dist/commands/tdd-generator.js.map +1 -0
  20. package/dist/commands/tdd-lite-generator.d.ts +11 -0
  21. package/dist/commands/tdd-lite-generator.d.ts.map +1 -0
  22. package/dist/commands/tdd-lite-generator.js +97 -0
  23. package/dist/commands/tdd-lite-generator.js.map +1 -0
  24. package/dist/commands/wireframe-generator.d.ts +11 -0
  25. package/dist/commands/wireframe-generator.d.ts.map +1 -0
  26. package/dist/commands/wireframe-generator.js +97 -0
  27. package/dist/commands/wireframe-generator.js.map +1 -0
  28. package/dist/core/config.d.ts.map +1 -1
  29. package/dist/core/config.js +36 -0
  30. package/dist/core/config.js.map +1 -1
  31. package/dist/core/configurators/slash/antigravity.d.ts.map +1 -1
  32. package/dist/core/configurators/slash/antigravity.js +14 -2
  33. package/dist/core/configurators/slash/antigravity.js.map +1 -1
  34. package/dist/core/configurators/slash/base.js +1 -1
  35. package/dist/core/configurators/slash/base.js.map +1 -1
  36. package/dist/core/configurators/slash/claude.d.ts.map +1 -1
  37. package/dist/core/configurators/slash/claude.js +14 -2
  38. package/dist/core/configurators/slash/claude.js.map +1 -1
  39. package/dist/core/configurators/slash/codex.d.ts.map +1 -1
  40. package/dist/core/configurators/slash/codex.js +14 -2
  41. package/dist/core/configurators/slash/codex.js.map +1 -1
  42. package/dist/core/configurators/slash/github-copilot.d.ts.map +1 -1
  43. package/dist/core/configurators/slash/github-copilot.js +14 -2
  44. package/dist/core/configurators/slash/github-copilot.js.map +1 -1
  45. package/dist/core/configurators/slash/kilocode.d.ts.map +1 -1
  46. package/dist/core/configurators/slash/kilocode.js +14 -2
  47. package/dist/core/configurators/slash/kilocode.js.map +1 -1
  48. package/dist/core/configurators/slash/opencode.d.ts.map +1 -1
  49. package/dist/core/configurators/slash/opencode.js +14 -2
  50. package/dist/core/configurators/slash/opencode.js.map +1 -1
  51. package/dist/core/prompt-templates.d.ts +6 -0
  52. package/dist/core/prompt-templates.d.ts.map +1 -1
  53. package/dist/core/prompt-templates.js +1278 -1
  54. package/dist/core/prompt-templates.js.map +1 -1
  55. package/dist/core/templates/slash-command-templates.d.ts +1 -1
  56. package/dist/core/templates/slash-command-templates.d.ts.map +1 -1
  57. package/dist/core/templates/slash-command-templates.js +8 -1
  58. package/dist/core/templates/slash-command-templates.js.map +1 -1
  59. package/docs/tasks.md +3 -0
  60. package/package.json +1 -1
  61. package/prompt/api-contract-generator.md +234 -0
  62. package/prompt/erd-generator.md +130 -0
  63. package/prompt/fsd-generator.md +157 -0
  64. package/prompt/tdd-generator.md +294 -0
  65. package/prompt/tdd-lite-generator.md +224 -0
  66. package/prompt/wireframe-generator.md +219 -0
  67. package/src/cli/index.ts +56 -2
  68. package/src/commands/api-contract-generator.ts +118 -0
  69. package/src/commands/erd-generator.ts +118 -0
  70. package/src/commands/fsd-generator.ts +118 -0
  71. package/src/commands/tdd-generator.ts +118 -0
  72. package/src/commands/tdd-lite-generator.ts +118 -0
  73. package/src/commands/wireframe-generator.ts +118 -0
  74. package/src/core/config.ts +36 -0
  75. package/src/core/configurators/slash/antigravity.ts +14 -2
  76. package/src/core/configurators/slash/base.ts +1 -1
  77. package/src/core/configurators/slash/claude.ts +14 -2
  78. package/src/core/configurators/slash/codex.ts +14 -2
  79. package/src/core/configurators/slash/github-copilot.ts +14 -2
  80. package/src/core/configurators/slash/kilocode.ts +14 -2
  81. package/src/core/configurators/slash/opencode.ts +14 -2
  82. package/src/core/prompt-templates.ts +1284 -1
  83. package/src/core/templates/slash-command-templates.ts +17 -2
  84. package/docs/prompt-template.md +0 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
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
+
3
37
  ## [0.6.0] - 2026-01-22
4
38
 
5
39
  ### ✨ 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.6.0');
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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"}
@@ -0,0 +1,11 @@
1
+ interface TddGeneratorOptions {
2
+ tools?: string[];
3
+ noInteractive?: boolean;
4
+ }
5
+ export declare class TddGeneratorCommand {
6
+ execute(options?: TddGeneratorOptions): Promise<void>;
7
+ private fileExists;
8
+ private detectConfiguredTools;
9
+ }
10
+ export {};
11
+ //# sourceMappingURL=tdd-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tdd-generator.d.ts","sourceRoot":"","sources":["../../src/commands/tdd-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 TddGeneratorCommand {
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 TDD 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 tdd-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 tdd-generator workflow file
33
+ const body = configurator['getBody']('tdd-generator');
34
+ const relativePath = configurator['getRelativePath']('tdd-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']('tdd-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āœ… TDD Generator workflow files created successfully!\n`));
64
+ console.log(chalk.blue('Next steps:'));
65
+ console.log(chalk.gray(' 1. Use /tdd-generator in your AI tool to create TDDs'));
66
+ console.log(chalk.gray(' 2. TDDs will be saved to prompter/<slug>/tdd.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=tdd-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tdd-generator.js","sourceRoot":"","sources":["../../src/commands/tdd-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ interface TddLiteGeneratorOptions {
2
+ tools?: string[];
3
+ noInteractive?: boolean;
4
+ }
5
+ export declare class TddLiteGeneratorCommand {
6
+ execute(options?: TddLiteGeneratorOptions): Promise<void>;
7
+ private fileExists;
8
+ private detectConfiguredTools;
9
+ }
10
+ export {};
11
+ //# sourceMappingURL=tdd-lite-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tdd-lite-generator.d.ts","sourceRoot":"","sources":["../../src/commands/tdd-lite-generator.ts"],"names":[],"mappings":"AAMA,UAAU,uBAAuB;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,uBAAuB;IAC1B,OAAO,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;YAyErD,UAAU;YASV,qBAAqB;CAuBtC"}