@dedesfr/prompter 0.6.0 → 0.6.2

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 (90) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/cli/index.js +58 -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/document-explainer.d.ts +11 -0
  9. package/dist/commands/document-explainer.d.ts.map +1 -0
  10. package/dist/commands/document-explainer.js +97 -0
  11. package/dist/commands/document-explainer.js.map +1 -0
  12. package/dist/commands/erd-generator.d.ts +11 -0
  13. package/dist/commands/erd-generator.d.ts.map +1 -0
  14. package/dist/commands/erd-generator.js +97 -0
  15. package/dist/commands/erd-generator.js.map +1 -0
  16. package/dist/commands/fsd-generator.d.ts +11 -0
  17. package/dist/commands/fsd-generator.d.ts.map +1 -0
  18. package/dist/commands/fsd-generator.js +97 -0
  19. package/dist/commands/fsd-generator.js.map +1 -0
  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 +42 -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 +16 -2
  37. package/dist/core/configurators/slash/antigravity.js.map +1 -1
  38. package/dist/core/configurators/slash/base.js +1 -1
  39. package/dist/core/configurators/slash/base.js.map +1 -1
  40. package/dist/core/configurators/slash/claude.d.ts.map +1 -1
  41. package/dist/core/configurators/slash/claude.js +16 -2
  42. package/dist/core/configurators/slash/claude.js.map +1 -1
  43. package/dist/core/configurators/slash/codex.d.ts.map +1 -1
  44. package/dist/core/configurators/slash/codex.js +16 -2
  45. package/dist/core/configurators/slash/codex.js.map +1 -1
  46. package/dist/core/configurators/slash/github-copilot.d.ts.map +1 -1
  47. package/dist/core/configurators/slash/github-copilot.js +16 -2
  48. package/dist/core/configurators/slash/github-copilot.js.map +1 -1
  49. package/dist/core/configurators/slash/kilocode.d.ts.map +1 -1
  50. package/dist/core/configurators/slash/kilocode.js +16 -2
  51. package/dist/core/configurators/slash/kilocode.js.map +1 -1
  52. package/dist/core/configurators/slash/opencode.d.ts.map +1 -1
  53. package/dist/core/configurators/slash/opencode.js +16 -2
  54. package/dist/core/configurators/slash/opencode.js.map +1 -1
  55. package/dist/core/prompt-templates.d.ts +7 -0
  56. package/dist/core/prompt-templates.d.ts.map +1 -1
  57. package/dist/core/prompt-templates.js +1429 -1
  58. package/dist/core/prompt-templates.js.map +1 -1
  59. package/dist/core/templates/slash-command-templates.d.ts +1 -1
  60. package/dist/core/templates/slash-command-templates.d.ts.map +1 -1
  61. package/dist/core/templates/slash-command-templates.js +9 -1
  62. package/dist/core/templates/slash-command-templates.js.map +1 -1
  63. package/docs/tasks.md +3 -0
  64. package/package.json +2 -2
  65. package/prompt/api-contract-generator.md +234 -0
  66. package/prompt/document-explainer.md +149 -0
  67. package/prompt/erd-generator.md +130 -0
  68. package/prompt/fsd-generator.md +157 -0
  69. package/prompt/tdd-generator.md +294 -0
  70. package/prompt/tdd-lite-generator.md +224 -0
  71. package/prompt/wireframe-generator.md +219 -0
  72. package/src/cli/index.ts +65 -2
  73. package/src/commands/api-contract-generator.ts +118 -0
  74. package/src/commands/document-explainer.ts +118 -0
  75. package/src/commands/erd-generator.ts +118 -0
  76. package/src/commands/fsd-generator.ts +118 -0
  77. package/src/commands/tdd-generator.ts +118 -0
  78. package/src/commands/tdd-lite-generator.ts +118 -0
  79. package/src/commands/wireframe-generator.ts +118 -0
  80. package/src/core/config.ts +42 -0
  81. package/src/core/configurators/slash/antigravity.ts +16 -2
  82. package/src/core/configurators/slash/base.ts +2 -2
  83. package/src/core/configurators/slash/claude.ts +16 -2
  84. package/src/core/configurators/slash/codex.ts +16 -2
  85. package/src/core/configurators/slash/github-copilot.ts +16 -2
  86. package/src/core/configurators/slash/kilocode.ts +16 -2
  87. package/src/core/configurators/slash/opencode.ts +16 -2
  88. package/src/core/prompt-templates.ts +1442 -8
  89. package/src/core/templates/slash-command-templates.ts +19 -2
  90. package/docs/prompt-template.md +0 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,53 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## [0.6.2] - 2026-01-24
4
+
5
+ ### ✨ Added
6
+ - **New Document Explainer Command**: Added `document-explainer` command to generate workflow files for document analysis
7
+ - Extracts value, identifies issues, and facilitates productive discussion about improvements
8
+ - Provides section-by-section breakdown in plain language
9
+ - Identifies gaps, redundancies, and structural improvement opportunities
10
+ - **Embedded Document Explainer Template**: New comprehensive prompt template for document analysis
11
+ - Complete workflow support for all supported AI tools
12
+ - Structured output including executive summary, key takeaways, and improvement suggestions
13
+ - **Init Command Enhancement**: Added `document-explainer` to prompt installation options
14
+ - Selectable in interactive `prompter init` mode
15
+ - Supported via `--prompts` flag
16
+
17
+ ## [0.6.1] - 2026-01-23
18
+
19
+ ### ✨ Added
20
+ - **New Generator Commands**: Added 6 new workflow generator commands for complete software development lifecycle
21
+ - `api-contract-generator`: Generate OpenAPI specification from FSD and ERD
22
+ - `erd-generator`: Generate Entity Relationship Diagram from FSD
23
+ - `fsd-generator`: Generate Functional Specification Document from PRD
24
+ - `tdd-generator`: Generate comprehensive Technical Design Document
25
+ - `tdd-lite-generator`: Generate lean Technical Design Document (TDD-Lite)
26
+ - `wireframe-generator`: Generate UI/UX wireframes from technical specs
27
+ - **Embedded Templates**: All 6 new generators include full embedded prompt templates
28
+ - Complete workflow support for all AI tools
29
+ - Comprehensive prompts for technical documentation generation
30
+ - End-to-end software development workflow coverage
31
+ - **Init Command Enhancement**: Updated `prompter init` to include all new prompts
32
+ - New prompts available in interactive selection
33
+ - Added to `--prompts` flag options
34
+ - Alphabetically organized prompt list
35
+
36
+ ### šŸ”„ Changed
37
+ - **Tool Configurators**: Updated all AI tool configurators with new command paths
38
+ - GitHub Copilot: `.github/prompts/[command].prompt.md`
39
+ - Antigravity: `.agent/workflows/[command].md`
40
+ - Claude Code: `.claude/commands/prompter/[command].md`
41
+ - Codex: `.codex/prompts/[command].md`
42
+ - OpenCode: `.opencode/prompts/[command].md`
43
+ - Kilo Code: `.kilocode/workflows/[command].md`
44
+
45
+ ### šŸ”§ Technical
46
+ - Extended `SlashCommandId` type with 6 new command identifiers
47
+ - Added command bodies to `slashCommandBodies` registry
48
+ - Updated `ALL_COMMANDS` array in base configurator
49
+ - Enhanced `AVAILABLE_PROMPTS` with new generator descriptions
50
+
3
51
  ## [0.6.0] - 2026-01-22
4
52
 
5
53
  ### ✨ Added
package/dist/cli/index.js CHANGED
@@ -4,16 +4,23 @@ 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';
13
+ import { DocumentExplainerCommand } from '../commands/document-explainer.js';
7
14
  const program = new Command();
8
15
  program
9
16
  .name('prompter')
10
17
  .description('Enhance prompts directly in your AI coding workflow')
11
- .version('0.6.0');
18
+ .version('0.6.2');
12
19
  program
13
20
  .command('init')
14
21
  .description('Initialize Prompter in your project')
15
22
  .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)')
23
+ .option('--prompts <prompts...>', 'Specify prompts to install (ai-humanizer, api-contract-generator, document-explainer, 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
24
  .option('--no-interactive', 'Run without interactive prompts')
18
25
  .action(async (options) => {
19
26
  const initCommand = new InitCommand();
@@ -48,5 +55,54 @@ program
48
55
  const upgradeCommand = new UpgradeCommand();
49
56
  await upgradeCommand.execute();
50
57
  });
58
+ program
59
+ .command('api-contract-generator')
60
+ .description('Generate API Contract workflow files')
61
+ .action(async () => {
62
+ const command = new ApiContractGeneratorCommand();
63
+ await command.execute();
64
+ });
65
+ program
66
+ .command('erd-generator')
67
+ .description('Generate ERD workflow files')
68
+ .action(async () => {
69
+ const command = new ErdGeneratorCommand();
70
+ await command.execute();
71
+ });
72
+ program
73
+ .command('fsd-generator')
74
+ .description('Generate FSD workflow files')
75
+ .action(async () => {
76
+ const command = new FsdGeneratorCommand();
77
+ await command.execute();
78
+ });
79
+ program
80
+ .command('tdd-generator')
81
+ .description('Generate TDD workflow files')
82
+ .action(async () => {
83
+ const command = new TddGeneratorCommand();
84
+ await command.execute();
85
+ });
86
+ program
87
+ .command('tdd-lite-generator')
88
+ .description('Generate TDD-Lite workflow files')
89
+ .action(async () => {
90
+ const command = new TddLiteGeneratorCommand();
91
+ await command.execute();
92
+ });
93
+ program
94
+ .command('wireframe-generator')
95
+ .description('Generate Wireframe workflow files')
96
+ .action(async () => {
97
+ const command = new WireframeGeneratorCommand();
98
+ await command.execute();
99
+ });
100
+ program
101
+ .command('document-explainer')
102
+ .description('Generate Document Explainer workflow files')
103
+ .action(async () => {
104
+ const command = new DocumentExplainerCommand();
105
+ await command.execute();
106
+ });
51
107
  program.parse();
52
108
  //# 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":"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"}
@@ -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 DocumentExplainerOptions {
2
+ tools?: string[];
3
+ noInteractive?: boolean;
4
+ }
5
+ export declare class DocumentExplainerCommand {
6
+ execute(options?: DocumentExplainerOptions): Promise<void>;
7
+ private fileExists;
8
+ private detectConfiguredTools;
9
+ }
10
+ export {};
11
+ //# sourceMappingURL=document-explainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-explainer.d.ts","sourceRoot":"","sources":["../../src/commands/document-explainer.ts"],"names":[],"mappings":"AAMA,UAAU,wBAAwB;IAC9B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,wBAAwB;IAC3B,OAAO,CAAC,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;YAyEtD,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 DocumentExplainerCommand {
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 document explainer 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 document-explainer 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 document-explainer workflow file
33
+ const body = configurator['getBody']('document-explainer');
34
+ const relativePath = configurator['getRelativePath']('document-explainer');
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']('document-explainer');
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āœ… Document explainer workflow files created successfully!\n`));
64
+ console.log(chalk.blue('Next steps:'));
65
+ console.log(chalk.gray(' 1. Use /document-explainer in your AI tool to analyze complex documents'));
66
+ console.log(chalk.gray(' 2. Provide your document content to get a comprehensive breakdown and insights\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=document-explainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-explainer.js","sourceRoot":"","sources":["../../src/commands/document-explainer.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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"}