@dedesfr/prompter 0.1.0 ā 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -0
- package/README.md +66 -8
- package/dist/cli/index.js +9 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +157 -22
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/prd-generator.d.ts +11 -0
- package/dist/commands/prd-generator.d.ts.map +1 -0
- package/dist/commands/prd-generator.js +97 -0
- package/dist/commands/prd-generator.js.map +1 -0
- package/dist/core/configurators/slash/antigravity.d.ts.map +1 -1
- package/dist/core/configurators/slash/antigravity.js +10 -2
- package/dist/core/configurators/slash/antigravity.js.map +1 -1
- package/dist/core/configurators/slash/base.js +1 -1
- package/dist/core/configurators/slash/base.js.map +1 -1
- package/dist/core/configurators/slash/claude.d.ts.map +1 -1
- package/dist/core/configurators/slash/claude.js +10 -2
- package/dist/core/configurators/slash/claude.js.map +1 -1
- package/dist/core/configurators/slash/codex.d.ts.map +1 -1
- package/dist/core/configurators/slash/codex.js +10 -2
- package/dist/core/configurators/slash/codex.js.map +1 -1
- package/dist/core/configurators/slash/github-copilot.d.ts.map +1 -1
- package/dist/core/configurators/slash/github-copilot.js +10 -2
- package/dist/core/configurators/slash/github-copilot.js.map +1 -1
- package/dist/core/configurators/slash/kilocode.d.ts.map +1 -1
- package/dist/core/configurators/slash/kilocode.js +10 -2
- package/dist/core/configurators/slash/kilocode.js.map +1 -1
- package/dist/core/configurators/slash/opencode.d.ts.map +1 -1
- package/dist/core/configurators/slash/opencode.js +10 -2
- package/dist/core/configurators/slash/opencode.js.map +1 -1
- package/dist/core/templates/slash-command-templates.d.ts +1 -1
- package/dist/core/templates/slash-command-templates.d.ts.map +1 -1
- package/dist/core/templates/slash-command-templates.js +494 -1
- package/dist/core/templates/slash-command-templates.js.map +1 -1
- package/package.json +1 -1
- package/prompt/epic-single.md +47 -0
- package/prompt/prd-generator.md +195 -0
- package/prompt/qa-test-scenario.md +133 -0
- package/prompt/story-single.md +70 -0
- package/src/cli/index.ts +10 -1
- package/src/commands/init.ts +165 -22
- package/src/commands/prd-generator.ts +118 -0
- package/src/core/configurators/slash/antigravity.ts +10 -2
- package/src/core/configurators/slash/base.ts +1 -1
- package/src/core/configurators/slash/claude.ts +10 -2
- package/src/core/configurators/slash/codex.ts +10 -2
- package/src/core/configurators/slash/github-copilot.ts +10 -2
- package/src/core/configurators/slash/kilocode.ts +10 -2
- package/src/core/configurators/slash/opencode.ts +10 -2
- package/src/core/templates/slash-command-templates.ts +499 -2
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# CHANGELOG
|
|
2
|
+
|
|
3
|
+
## [0.2.0] - 2026-01-19
|
|
4
|
+
|
|
5
|
+
### ⨠Added
|
|
6
|
+
- **Re-configurable AI Tools**: `prompter init` now allows re-selection of AI tools at any time, even after initial setup
|
|
7
|
+
- Add new AI tools to existing configuration
|
|
8
|
+
- Remove unused AI tools
|
|
9
|
+
- Switch between different AI tools seamlessly
|
|
10
|
+
- Interactive checkbox interface with current tools pre-selected
|
|
11
|
+
- Non-interactive mode with `--tools` flag for automation
|
|
12
|
+
|
|
13
|
+
### š Changed
|
|
14
|
+
- `prompter init` no longer blocks on already-initialized projects
|
|
15
|
+
- Tool selection now shows currently configured tools before prompting
|
|
16
|
+
- Success messages now context-aware (initialization vs re-configuration)
|
|
17
|
+
- Improved user feedback with change summaries (Added/Removed/Kept)
|
|
18
|
+
|
|
19
|
+
### š”ļø Safety
|
|
20
|
+
- Enhanced prompts in `prompter/<slug>/` always preserved
|
|
21
|
+
- `prompter/project.md` preserved during re-configuration
|
|
22
|
+
- `AGENTS.md` preserved if already exists
|
|
23
|
+
- Automatic cleanup of empty directories when removing tools
|
|
24
|
+
- Cancel-safe operation (Ctrl+C) at any time
|
|
25
|
+
|
|
26
|
+
### š Documentation
|
|
27
|
+
- Added comprehensive re-configuration guide (`docs/reconfigure-tools.md`)
|
|
28
|
+
- Added before/after comparison (`docs/before-after-comparison.md`)
|
|
29
|
+
- Added usage scenarios guide (`docs/usage-scenarios.md`)
|
|
30
|
+
- Added implementation summary (`docs/implementation-summary.md`)
|
|
31
|
+
- Updated README with re-configuration examples
|
|
32
|
+
|
|
33
|
+
### š§ Technical
|
|
34
|
+
- Added `detectConfiguredTools()` method to scan for existing workflow files
|
|
35
|
+
- Added `removeToolFiles()` method for clean tool removal
|
|
36
|
+
- Added `removeEmptyDirs()` method for automatic directory cleanup
|
|
37
|
+
- Improved file existence checking and preservation logic
|
|
38
|
+
|
|
39
|
+
### šÆ Backward Compatibility
|
|
40
|
+
- 100% backward compatible with existing installations
|
|
41
|
+
- No breaking changes to command syntax or behavior
|
|
42
|
+
- Fresh projects work identically to previous versions
|
|
43
|
+
- No changes to workflow file format
|
|
44
|
+
- No changes to other commands (`update`, `list`)
|
|
45
|
+
|
|
46
|
+
## [0.1.0] - Previous Release
|
|
47
|
+
- Initial release with `init`, `update`, and `list` commands
|
|
48
|
+
- Support for 6 AI tools: Antigravity, Claude Code, Codex, GitHub Copilot, OpenCode, Kilo Code
|
|
49
|
+
- Universal support via AGENTS.md
|
|
50
|
+
- Workflow file generation with managed markers
|
package/README.md
CHANGED
|
@@ -28,23 +28,77 @@ prompter init
|
|
|
28
28
|
3. **Review** - Find the enhanced spec in `prompter/<slug>/enhanced-prompt.md`
|
|
29
29
|
4. **Build** - Use the enhanced specification to guide implementation
|
|
30
30
|
|
|
31
|
+
### Available Workflows
|
|
32
|
+
|
|
33
|
+
Prompter includes multiple workflow templates for different documentation needs:
|
|
34
|
+
|
|
35
|
+
#### `/prompter-enhance` - Prompt Enhancement
|
|
36
|
+
Transform rough ideas into clear, actionable specifications.
|
|
37
|
+
```bash
|
|
38
|
+
/prompter-enhance Build a user dashboard with analytics
|
|
39
|
+
```
|
|
40
|
+
Output: `prompter/<slug>/enhanced-prompt.md`
|
|
41
|
+
|
|
42
|
+
#### `/prd-generator` - Product Requirements Document
|
|
43
|
+
Generate comprehensive PRDs with objectives, user stories, and success metrics.
|
|
44
|
+
```bash
|
|
45
|
+
/prd-generator Feature: User authentication system
|
|
46
|
+
```
|
|
47
|
+
Output: `prompter/<slug>/prd.md`
|
|
48
|
+
|
|
49
|
+
#### `/epic-single` - Jira Epic Generation
|
|
50
|
+
Create well-structured Jira Epics from high-level requirements.
|
|
51
|
+
```bash
|
|
52
|
+
/epic-single Payment processing system for e-commerce
|
|
53
|
+
```
|
|
54
|
+
Output: `prompter/<slug>/epic.md`
|
|
55
|
+
|
|
56
|
+
#### `/story-single` - User Story Generation
|
|
57
|
+
Convert requirements or QA findings into actionable user stories.
|
|
58
|
+
```bash
|
|
59
|
+
/story-single Users need to reset their password via email
|
|
60
|
+
```
|
|
61
|
+
Output: `prompter/<slug>/story.md`
|
|
62
|
+
|
|
63
|
+
#### `/qa-test-scenario` - QA Test Scenarios
|
|
64
|
+
Generate focused test scenarios from PRDs or requirements.
|
|
65
|
+
```bash
|
|
66
|
+
/qa-test-scenario [paste your PRD content]
|
|
67
|
+
```
|
|
68
|
+
Output: `prompter/<slug>/qa-test-scenarios.md`
|
|
69
|
+
|
|
31
70
|
## Supported AI Tools
|
|
32
71
|
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
- **
|
|
36
|
-
- **
|
|
37
|
-
- **
|
|
38
|
-
- **
|
|
72
|
+
Each tool gets workflow files for all commands (`/prompter-enhance`, `/prd-generator`, `/epic-single`, `/story-single`, `/qa-test-scenario`):
|
|
73
|
+
|
|
74
|
+
- **Antigravity** - `.agent/workflows/*.md`
|
|
75
|
+
- **Claude Code** - `.claude/commands/prompter/*.md`
|
|
76
|
+
- **Codex** - `.codex/prompts/*.md`
|
|
77
|
+
- **GitHub Copilot** - `.github/prompts/*.md`
|
|
78
|
+
- **OpenCode** - `.opencode/prompts/*.md`
|
|
79
|
+
- **Kilo Code** - `.kilocode/workflows/*.md`
|
|
39
80
|
- **Universal** - `AGENTS.md` for any AGENTS.md-compatible tool
|
|
40
81
|
|
|
41
82
|
## Commands
|
|
42
83
|
|
|
43
84
|
```bash
|
|
44
|
-
prompter init # Initialize Prompter
|
|
85
|
+
prompter init # Initialize Prompter (or re-configure tools)
|
|
45
86
|
prompter update # Update workflow files to latest version
|
|
46
87
|
prompter list # List all enhanced prompts
|
|
47
88
|
prompter list --json # Output as JSON
|
|
89
|
+
prompter prd-generator # Generate PRD workflow files for configured tools
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Re-configuring Tools
|
|
93
|
+
|
|
94
|
+
You can run `prompter init` again at any time to add, remove, or switch AI tools. See [docs/reconfigure-tools.md](docs/reconfigure-tools.md) for details.
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Add or remove tools interactively
|
|
98
|
+
prompter init
|
|
99
|
+
|
|
100
|
+
# Or specify tools directly
|
|
101
|
+
prompter init --tools github-copilot,claude
|
|
48
102
|
```
|
|
49
103
|
|
|
50
104
|
## Output Structure
|
|
@@ -53,7 +107,11 @@ prompter list --json # Output as JSON
|
|
|
53
107
|
prompter/
|
|
54
108
|
āāā project.md # Project context (edit this!)
|
|
55
109
|
āāā <slug>/
|
|
56
|
-
ā
|
|
110
|
+
ā āāā enhanced-prompt.md # Enhanced specification
|
|
111
|
+
ā āāā prd.md # Product Requirements Document
|
|
112
|
+
ā āāā epic.md # Jira Epic
|
|
113
|
+
ā āāā story.md # Jira User Story
|
|
114
|
+
ā āāā qa-test-scenarios.md # QA Test Scenarios
|
|
57
115
|
āāā ...
|
|
58
116
|
```
|
|
59
117
|
|
package/dist/cli/index.js
CHANGED
|
@@ -2,11 +2,12 @@ import { Command } from 'commander';
|
|
|
2
2
|
import { InitCommand } from '../commands/init.js';
|
|
3
3
|
import { UpdateCommand } from '../commands/update.js';
|
|
4
4
|
import { ListCommand } from '../commands/list.js';
|
|
5
|
+
import { PrdGeneratorCommand } from '../commands/prd-generator.js';
|
|
5
6
|
const program = new Command();
|
|
6
7
|
program
|
|
7
8
|
.name('prompter')
|
|
8
9
|
.description('Enhance prompts directly in your AI coding workflow')
|
|
9
|
-
.version('0.
|
|
10
|
+
.version('0.3.0');
|
|
10
11
|
program
|
|
11
12
|
.command('init')
|
|
12
13
|
.description('Initialize Prompter in your project')
|
|
@@ -31,5 +32,12 @@ program
|
|
|
31
32
|
const listCommand = new ListCommand();
|
|
32
33
|
await listCommand.execute(options);
|
|
33
34
|
});
|
|
35
|
+
program
|
|
36
|
+
.command('prd-generator')
|
|
37
|
+
.description('Generate PRD workflow files for configured AI tools')
|
|
38
|
+
.action(async (options) => {
|
|
39
|
+
const prdGeneratorCommand = new PrdGeneratorCommand();
|
|
40
|
+
await prdGeneratorCommand.execute(options);
|
|
41
|
+
});
|
|
34
42
|
program.parse();
|
|
35
43
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -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;
|
|
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,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,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,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,eAAe,CAAC;KACxB,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACtB,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACtD,MAAM,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -5,6 +5,9 @@ interface InitOptions {
|
|
|
5
5
|
export declare class InitCommand {
|
|
6
6
|
execute(options?: InitOptions): Promise<void>;
|
|
7
7
|
private fileExists;
|
|
8
|
+
private detectConfiguredTools;
|
|
9
|
+
private removeToolFiles;
|
|
10
|
+
private removeEmptyDirs;
|
|
8
11
|
}
|
|
9
12
|
export {};
|
|
10
13
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,WAAW;IACd,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,WAAW;IACd,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAmKzC,UAAU;YASV,qBAAqB;YAwBrB,eAAe;YAkBf,eAAe;CAiBhC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -8,12 +8,24 @@ import { registry } from '../core/configurators/slash/index.js';
|
|
|
8
8
|
export class InitCommand {
|
|
9
9
|
async execute(options = {}) {
|
|
10
10
|
const projectPath = process.cwd();
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
const isReInitialization = await PrompterConfig.prompterDirExists(projectPath);
|
|
12
|
+
if (isReInitialization) {
|
|
13
|
+
console.log(chalk.blue('\nš Re-configuring Prompter tools...\n'));
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
console.log(chalk.blue('\nš Initializing Prompter...\n'));
|
|
17
|
+
}
|
|
18
|
+
// Detect currently configured tools if re-initializing
|
|
19
|
+
let currentTools = [];
|
|
20
|
+
if (isReInitialization) {
|
|
21
|
+
currentTools = await this.detectConfiguredTools(projectPath);
|
|
22
|
+
if (currentTools.length > 0) {
|
|
23
|
+
console.log(chalk.gray('Currently configured tools: ') + chalk.cyan(currentTools.map(t => {
|
|
24
|
+
const tool = SUPPORTED_TOOLS.find(st => st.value === t);
|
|
25
|
+
return tool ? tool.name : t;
|
|
26
|
+
}).join(', ')));
|
|
27
|
+
console.log();
|
|
28
|
+
}
|
|
17
29
|
}
|
|
18
30
|
// Select tools
|
|
19
31
|
let selectedTools = [];
|
|
@@ -22,28 +34,45 @@ export class InitCommand {
|
|
|
22
34
|
}
|
|
23
35
|
else if (!options.noInteractive) {
|
|
24
36
|
try {
|
|
37
|
+
const message = isReInitialization
|
|
38
|
+
? 'Select AI tools to configure (check/uncheck to add/remove):'
|
|
39
|
+
: 'Select AI tools to configure:';
|
|
25
40
|
selectedTools = await checkbox({
|
|
26
|
-
message
|
|
41
|
+
message,
|
|
27
42
|
choices: SUPPORTED_TOOLS.map(tool => ({
|
|
28
43
|
name: tool.name,
|
|
29
44
|
value: tool.value,
|
|
30
|
-
checked:
|
|
45
|
+
checked: isReInitialization
|
|
46
|
+
? currentTools.includes(tool.value)
|
|
47
|
+
: tool.value === 'antigravity' // Default check Antigravity for new init
|
|
31
48
|
}))
|
|
32
49
|
});
|
|
33
50
|
}
|
|
34
51
|
catch (error) {
|
|
35
52
|
// User cancelled
|
|
36
|
-
console.log(chalk.yellow('\nInitialization cancelled.'));
|
|
53
|
+
console.log(chalk.yellow(isReInitialization ? '\nRe-configuration cancelled.' : '\nInitialization cancelled.'));
|
|
37
54
|
return;
|
|
38
55
|
}
|
|
39
56
|
}
|
|
40
|
-
|
|
57
|
+
else if (isReInitialization && selectedTools.length === 0) {
|
|
58
|
+
// In non-interactive re-init without tools specified, keep current tools
|
|
59
|
+
selectedTools = currentTools;
|
|
60
|
+
}
|
|
61
|
+
// Create or ensure prompter directory
|
|
41
62
|
const prompterPath = await PrompterConfig.ensurePrompterDir(projectPath);
|
|
42
|
-
|
|
43
|
-
|
|
63
|
+
if (!isReInitialization) {
|
|
64
|
+
console.log(chalk.green('ā') + ` Created ${chalk.cyan(PROMPTER_DIR + '/')}`);
|
|
65
|
+
}
|
|
66
|
+
// Create project.md if not exists
|
|
44
67
|
const projectMdPath = path.join(prompterPath, 'project.md');
|
|
45
|
-
await
|
|
46
|
-
|
|
68
|
+
const projectMdExists = await this.fileExists(projectMdPath);
|
|
69
|
+
if (!projectMdExists) {
|
|
70
|
+
await fs.writeFile(projectMdPath, projectTemplate, 'utf-8');
|
|
71
|
+
console.log(chalk.green('ā') + ` Created ${chalk.cyan(PROMPTER_DIR + '/project.md')}`);
|
|
72
|
+
}
|
|
73
|
+
else if (isReInitialization) {
|
|
74
|
+
console.log(chalk.gray(' project.md already exists, keeping it'));
|
|
75
|
+
}
|
|
47
76
|
// Create AGENTS.md for universal support
|
|
48
77
|
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
49
78
|
const agentsExists = await this.fileExists(agentsMdPath);
|
|
@@ -54,10 +83,32 @@ export class InitCommand {
|
|
|
54
83
|
else {
|
|
55
84
|
console.log(chalk.gray(' AGENTS.md already exists, skipping'));
|
|
56
85
|
}
|
|
57
|
-
//
|
|
58
|
-
|
|
86
|
+
// Handle tool changes
|
|
87
|
+
const toolsToAdd = selectedTools.filter(t => !currentTools.includes(t));
|
|
88
|
+
const toolsToRemove = currentTools.filter(t => !selectedTools.includes(t));
|
|
89
|
+
const toolsToKeep = selectedTools.filter(t => currentTools.includes(t));
|
|
90
|
+
// Remove old tool files
|
|
91
|
+
if (toolsToRemove.length > 0) {
|
|
92
|
+
console.log(chalk.blue('\nšļø Removing workflow files...\n'));
|
|
93
|
+
for (const toolId of toolsToRemove) {
|
|
94
|
+
const configurator = registry.get(toolId);
|
|
95
|
+
if (configurator) {
|
|
96
|
+
try {
|
|
97
|
+
const files = await this.removeToolFiles(projectPath, configurator);
|
|
98
|
+
for (const file of files) {
|
|
99
|
+
console.log(chalk.yellow('ā') + ` Removed ${chalk.cyan(file)}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.log(chalk.red('ā') + ` Failed to remove files for ${toolId}: ${error}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Generate workflow files for new tools
|
|
109
|
+
if (toolsToAdd.length > 0) {
|
|
59
110
|
console.log(chalk.blue('\nš Creating workflow files...\n'));
|
|
60
|
-
for (const toolId of
|
|
111
|
+
for (const toolId of toolsToAdd) {
|
|
61
112
|
const configurator = registry.get(toolId);
|
|
62
113
|
if (configurator) {
|
|
63
114
|
try {
|
|
@@ -72,12 +123,46 @@ export class InitCommand {
|
|
|
72
123
|
}
|
|
73
124
|
}
|
|
74
125
|
}
|
|
126
|
+
// Show kept tools
|
|
127
|
+
if (isReInitialization && toolsToKeep.length > 0 && (toolsToAdd.length > 0 || toolsToRemove.length > 0)) {
|
|
128
|
+
console.log(chalk.blue('\n⨠Keeping existing tools:\n'));
|
|
129
|
+
for (const toolId of toolsToKeep) {
|
|
130
|
+
const tool = SUPPORTED_TOOLS.find(t => t.value === toolId);
|
|
131
|
+
if (tool) {
|
|
132
|
+
console.log(chalk.gray(' ⢠') + chalk.cyan(tool.name));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
75
136
|
// Success message
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
137
|
+
if (isReInitialization) {
|
|
138
|
+
console.log(chalk.green('\nā
Prompter tools updated successfully!\n'));
|
|
139
|
+
if (toolsToAdd.length > 0 || toolsToRemove.length > 0) {
|
|
140
|
+
console.log(chalk.blue('Summary:'));
|
|
141
|
+
if (toolsToAdd.length > 0) {
|
|
142
|
+
console.log(chalk.green(' Added: ') + toolsToAdd.map(t => {
|
|
143
|
+
const tool = SUPPORTED_TOOLS.find(st => st.value === t);
|
|
144
|
+
return tool ? tool.name : t;
|
|
145
|
+
}).join(', '));
|
|
146
|
+
}
|
|
147
|
+
if (toolsToRemove.length > 0) {
|
|
148
|
+
console.log(chalk.yellow(' Removed: ') + toolsToRemove.map(t => {
|
|
149
|
+
const tool = SUPPORTED_TOOLS.find(st => st.value === t);
|
|
150
|
+
return tool ? tool.name : t;
|
|
151
|
+
}).join(', '));
|
|
152
|
+
}
|
|
153
|
+
console.log();
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
console.log(chalk.gray(' No changes made.\n'));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
console.log(chalk.green('\nā
Prompter initialized successfully!\n'));
|
|
161
|
+
console.log(chalk.blue('Next steps:'));
|
|
162
|
+
console.log(chalk.gray(' 1. Edit prompter/project.md to describe your project'));
|
|
163
|
+
console.log(chalk.gray(' 2. Use /prompter-enhance to transform prompts'));
|
|
164
|
+
console.log(chalk.gray(' 3. Run `prompter list` to see enhanced prompts\n'));
|
|
165
|
+
}
|
|
81
166
|
}
|
|
82
167
|
async fileExists(filePath) {
|
|
83
168
|
try {
|
|
@@ -88,5 +173,55 @@ export class InitCommand {
|
|
|
88
173
|
return false;
|
|
89
174
|
}
|
|
90
175
|
}
|
|
176
|
+
async detectConfiguredTools(projectPath) {
|
|
177
|
+
const configuredTools = [];
|
|
178
|
+
const allConfigurators = registry.getAll();
|
|
179
|
+
for (const configurator of allConfigurators) {
|
|
180
|
+
const targets = configurator.getTargets();
|
|
181
|
+
let hasFiles = false;
|
|
182
|
+
for (const target of targets) {
|
|
183
|
+
const filePath = path.join(projectPath, target.path);
|
|
184
|
+
if (await this.fileExists(filePath)) {
|
|
185
|
+
hasFiles = true;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (hasFiles) {
|
|
190
|
+
configuredTools.push(configurator.toolId);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return configuredTools;
|
|
194
|
+
}
|
|
195
|
+
async removeToolFiles(projectPath, configurator) {
|
|
196
|
+
const removedFiles = [];
|
|
197
|
+
const targets = configurator.getTargets();
|
|
198
|
+
for (const target of targets) {
|
|
199
|
+
const filePath = path.join(projectPath, target.path);
|
|
200
|
+
if (await this.fileExists(filePath)) {
|
|
201
|
+
await fs.unlink(filePath);
|
|
202
|
+
removedFiles.push(target.path);
|
|
203
|
+
// Remove empty parent directories
|
|
204
|
+
await this.removeEmptyDirs(path.dirname(filePath), projectPath);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return removedFiles;
|
|
208
|
+
}
|
|
209
|
+
async removeEmptyDirs(dirPath, projectPath) {
|
|
210
|
+
// Don't remove the project directory itself
|
|
211
|
+
if (dirPath === projectPath || dirPath === path.dirname(projectPath)) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const files = await fs.readdir(dirPath);
|
|
216
|
+
if (files.length === 0) {
|
|
217
|
+
await fs.rmdir(dirPath);
|
|
218
|
+
// Recursively check parent
|
|
219
|
+
await this.removeEmptyDirs(path.dirname(dirPath), projectPath);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
// Directory doesn't exist or can't be removed, ignore
|
|
224
|
+
}
|
|
225
|
+
}
|
|
91
226
|
}
|
|
92
227
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAOhE,MAAM,OAAO,WAAW;IACpB,KAAK,CAAC,OAAO,CAAC,UAAuB,EAAE;QACnC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface PrdGeneratorOptions {
|
|
2
|
+
tools?: string[];
|
|
3
|
+
noInteractive?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare class PrdGeneratorCommand {
|
|
6
|
+
execute(options?: PrdGeneratorOptions): Promise<void>;
|
|
7
|
+
private fileExists;
|
|
8
|
+
private detectConfiguredTools;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=prd-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prd-generator.d.ts","sourceRoot":"","sources":["../../src/commands/prd-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 PrdGeneratorCommand {
|
|
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 PRD 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 prd-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 prd-generator workflow file
|
|
33
|
+
const body = configurator['getBody']('prd-generator');
|
|
34
|
+
const relativePath = configurator['getRelativePath']('prd-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']('prd-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ā
PRD generator workflow files created successfully!\n`));
|
|
64
|
+
console.log(chalk.blue('Next steps:'));
|
|
65
|
+
console.log(chalk.gray(' 1. Use /prd-generator in your AI tool to create PRDs'));
|
|
66
|
+
console.log(chalk.gray(' 2. PRDs will be saved to prompter/<slug>/prd.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=prd-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prd-generator.js","sourceRoot":"","sources":["../../src/commands/prd-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../../../src/core/configurators/slash/antigravity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../../../src/core/configurators/slash/antigravity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAkB1D,qBAAa,uBAAwB,SAAQ,wBAAwB;IACjE,QAAQ,CAAC,MAAM,iBAAiB;IAChC,QAAQ,CAAC,WAAW,QAAQ;IAE5B,SAAS,CAAC,eAAe,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM;IAIrD,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS;CAInE"}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { SlashCommandConfigurator } from './base.js';
|
|
2
2
|
const FILE_PATHS = {
|
|
3
|
-
enhance: '.agent/workflows/prompter-enhance.md'
|
|
3
|
+
enhance: '.agent/workflows/prompter-enhance.md',
|
|
4
|
+
'prd-generator': '.agent/workflows/prd-generator.md',
|
|
5
|
+
'epic-single': '.agent/workflows/epic-single.md',
|
|
6
|
+
'story-single': '.agent/workflows/story-single.md',
|
|
7
|
+
'qa-test-scenario': '.agent/workflows/qa-test-scenario.md'
|
|
4
8
|
};
|
|
5
9
|
const DESCRIPTIONS = {
|
|
6
|
-
enhance: 'Enhance a rough prompt into a professional specification'
|
|
10
|
+
enhance: 'Enhance a rough prompt into a professional specification',
|
|
11
|
+
'prd-generator': 'Generate a comprehensive Product Requirements Document (PRD)',
|
|
12
|
+
'epic-single': 'Generate a single well-defined Jira Epic',
|
|
13
|
+
'story-single': 'Generate a single Jira User Story from requirements',
|
|
14
|
+
'qa-test-scenario': 'Generate focused QA test scenarios from PRD'
|
|
7
15
|
};
|
|
8
16
|
export class AntigravityConfigurator extends SlashCommandConfigurator {
|
|
9
17
|
toolId = 'antigravity';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../../../src/core/configurators/slash/antigravity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAGrD,MAAM,UAAU,GAAmC;IAC/C,OAAO,EAAE,sCAAsC;
|
|
1
|
+
{"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../../../src/core/configurators/slash/antigravity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAGrD,MAAM,UAAU,GAAmC;IAC/C,OAAO,EAAE,sCAAsC;IAC/C,eAAe,EAAE,mCAAmC;IACpD,aAAa,EAAE,iCAAiC;IAChD,cAAc,EAAE,kCAAkC;IAClD,kBAAkB,EAAE,sCAAsC;CAC7D,CAAC;AAEF,MAAM,YAAY,GAAmC;IACjD,OAAO,EAAE,0DAA0D;IACnE,eAAe,EAAE,8DAA8D;IAC/E,aAAa,EAAE,0CAA0C;IACzD,cAAc,EAAE,qDAAqD;IACrE,kBAAkB,EAAE,6CAA6C;CACpE,CAAC;AAEF,MAAM,OAAO,uBAAwB,SAAQ,wBAAwB;IACxD,MAAM,GAAG,aAAa,CAAC;IACvB,WAAW,GAAG,IAAI,CAAC;IAElB,eAAe,CAAC,EAAkB;QACxC,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAES,cAAc,CAAC,EAAkB;QACvC,MAAM,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QACrC,OAAO,qBAAqB,WAAW,OAAO,CAAC;IACnD,CAAC;CACJ"}
|
|
@@ -2,7 +2,7 @@ import { promises as fs } from 'fs';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { TemplateManager } from '../../templates/index.js';
|
|
4
4
|
import { PROMPTER_MARKERS } from '../../config.js';
|
|
5
|
-
const ALL_COMMANDS = ['enhance'];
|
|
5
|
+
const ALL_COMMANDS = ['enhance', 'prd-generator', 'epic-single', 'story-single', 'qa-test-scenario'];
|
|
6
6
|
export class SlashCommandConfigurator {
|
|
7
7
|
getTargets() {
|
|
8
8
|
return ALL_COMMANDS.map((id) => ({
|