@dedesfr/prompter 0.8.23 → 1.0.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 +70 -0
- package/README.md +105 -77
- package/dist/cli/index.js +25 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/init.d.ts +1 -7
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +60 -299
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts +4 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +56 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +4 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +14 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +31 -41
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/whoami.d.ts +4 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +42 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/core/auth-store.d.ts +10 -0
- package/dist/core/auth-store.d.ts.map +1 -0
- package/dist/core/auth-store.js +39 -0
- package/dist/core/auth-store.js.map +1 -0
- package/dist/core/configurators/slash/antigravity.d.ts +2 -5
- package/dist/core/configurators/slash/antigravity.d.ts.map +1 -1
- package/dist/core/configurators/slash/antigravity.js +2 -57
- package/dist/core/configurators/slash/antigravity.js.map +1 -1
- package/dist/core/configurators/slash/base.d.ts +6 -18
- package/dist/core/configurators/slash/base.d.ts.map +1 -1
- package/dist/core/configurators/slash/base.js +8 -77
- package/dist/core/configurators/slash/base.js.map +1 -1
- package/dist/core/configurators/slash/claude.d.ts +2 -5
- package/dist/core/configurators/slash/claude.d.ts.map +1 -1
- package/dist/core/configurators/slash/claude.js +2 -57
- package/dist/core/configurators/slash/claude.js.map +1 -1
- package/dist/core/configurators/slash/codex.d.ts +2 -5
- package/dist/core/configurators/slash/codex.d.ts.map +1 -1
- package/dist/core/configurators/slash/codex.js +2 -57
- package/dist/core/configurators/slash/codex.js.map +1 -1
- package/dist/core/configurators/slash/droid.d.ts +2 -5
- package/dist/core/configurators/slash/droid.d.ts.map +1 -1
- package/dist/core/configurators/slash/droid.js +2 -32
- package/dist/core/configurators/slash/droid.js.map +1 -1
- package/dist/core/configurators/slash/forge.d.ts +2 -5
- package/dist/core/configurators/slash/forge.d.ts.map +1 -1
- package/dist/core/configurators/slash/forge.js +2 -32
- package/dist/core/configurators/slash/forge.js.map +1 -1
- package/dist/core/configurators/slash/github-copilot.d.ts +2 -7
- package/dist/core/configurators/slash/github-copilot.d.ts.map +1 -1
- package/dist/core/configurators/slash/github-copilot.js +2 -96
- package/dist/core/configurators/slash/github-copilot.js.map +1 -1
- package/dist/core/configurators/slash/index.d.ts +1 -1
- package/dist/core/configurators/slash/index.d.ts.map +1 -1
- package/dist/core/configurators/slash/index.js +1 -1
- package/dist/core/configurators/slash/index.js.map +1 -1
- package/dist/core/configurators/slash/kilocode.d.ts +2 -5
- package/dist/core/configurators/slash/kilocode.d.ts.map +1 -1
- package/dist/core/configurators/slash/kilocode.js +2 -57
- package/dist/core/configurators/slash/kilocode.js.map +1 -1
- package/dist/core/configurators/slash/opencode.d.ts +2 -5
- package/dist/core/configurators/slash/opencode.d.ts.map +1 -1
- package/dist/core/configurators/slash/opencode.js +2 -57
- package/dist/core/configurators/slash/opencode.js.map +1 -1
- package/dist/core/configurators/slash/registry.d.ts +4 -4
- package/dist/core/configurators/slash/registry.d.ts.map +1 -1
- package/dist/core/configurators/slash/registry.js.map +1 -1
- package/dist/core/registry.d.ts +18 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +94 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/templates/index.d.ts +0 -1
- package/dist/core/templates/index.d.ts.map +1 -1
- package/dist/core/templates/index.js +0 -1
- package/dist/core/templates/index.js.map +1 -1
- package/package.json +7 -1
- package/AGENTS.md +0 -123
- package/CLAUDE.md +0 -17
- package/build.js +0 -20
- package/convex-setup.md +0 -403
- package/dist/core/templates/slash-command-templates.d.ts +0 -7
- package/dist/core/templates/slash-command-templates.d.ts.map +0 -1
- package/dist/core/templates/slash-command-templates.js +0 -1041
- package/dist/core/templates/slash-command-templates.js.map +0 -1
- package/prompt/ai-humanizer.md +0 -45
- package/prompt/api-contract-generator.md +0 -234
- package/prompt/apply.md +0 -17
- package/prompt/archive.md +0 -21
- package/prompt/design-system.md +0 -210
- package/prompt/document-explainer.md +0 -149
- package/prompt/epic-generator.md +0 -198
- package/prompt/epic-single.md +0 -47
- package/prompt/erd-generator.md +0 -130
- package/prompt/fsd-generator.md +0 -157
- package/prompt/prd-agent-generator.md +0 -147
- package/prompt/prd-generator.md +0 -195
- package/prompt/product-brief.md +0 -289
- package/prompt/proposal.md +0 -22
- package/prompt/qa-test-scenario.md +0 -133
- package/prompt/skill-creator.md +0 -350
- package/prompt/story-generator.md +0 -278
- package/prompt/story-single.md +0 -70
- package/prompt/tdd-generator.md +0 -294
- package/prompt/tdd-lite-generator.md +0 -224
- package/prompt/wireframe-generator.md +0 -219
- package/skills/ai-context-generator/SKILL.md +0 -54
- package/skills/ai-context-generator/references/AGENTS.template.md +0 -83
- package/skills/ai-context-generator/references/CLAUDE.template.md +0 -39
- package/skills/ai-context-generator/references/behavioral-guidelines.md +0 -71
- package/skills/ai-context-generator/references/discovery-checklist.md +0 -40
- package/skills/ai-context-generator/references/examples/AGENTS.good.md +0 -103
- package/skills/ai-context-generator/references/extraction-checklist.md +0 -23
- package/skills/ai-context-generator/references/overlays/laravel.md +0 -44
- package/skills/cerebro/SKILL.md +0 -187
- package/skills/cerebro/references/agents.md +0 -213
- package/skills/code-review/SKILL.md +0 -373
- package/skills/code-review/assets/report-template-agent.md +0 -212
- package/skills/code-review/assets/report-template-compact.md +0 -81
- package/skills/code-review/assets/report-template-full.md +0 -264
- package/skills/code-review/assets/report-template-human.md +0 -168
- package/skills/code-review/references/universal-patterns.md +0 -495
- package/skills/design-md/README.md +0 -34
- package/skills/design-md/SKILL.md +0 -172
- package/skills/design-md/examples/DESIGN.md +0 -154
- package/skills/design-system-generator/SKILL.md +0 -324
- package/skills/design-system-generator/assets/design-system-template.md +0 -348
- package/skills/design-system-generator/references/extraction-patterns.md +0 -321
- package/skills/doc-builder/SKILL.md +0 -115
- package/skills/doc-builder/references/ui-patterns.md +0 -394
- package/skills/document-translator/SKILL.md +0 -58
- package/skills/enhance-prompt/README.md +0 -34
- package/skills/enhance-prompt/SKILL.md +0 -204
- package/skills/enhance-prompt/references/KEYWORDS.md +0 -114
- package/skills/feature-planner/SKILL.md +0 -305
- package/skills/feature-planner/assets/implementation-plan-template.md +0 -85
- package/skills/frontend-design/LICENSE.txt +0 -177
- package/skills/frontend-design/SKILL.md +0 -42
- package/skills/gamma-builder/SKILL.md +0 -134
- package/skills/laravel-code-review/SKILL.md +0 -383
- package/skills/laravel-code-review/assets/report-template-agent.md +0 -195
- package/skills/laravel-code-review/assets/report-template-compact.md +0 -79
- package/skills/laravel-code-review/assets/report-template-full.md +0 -253
- package/skills/laravel-code-review/assets/report-template-human.md +0 -159
- package/skills/laravel-code-review/references/laravel-patterns.md +0 -571
- package/skills/laravel-code-review/references/php84-features.md +0 -442
- package/skills/mcp-builder/LICENSE.txt +0 -202
- package/skills/mcp-builder/SKILL.md +0 -236
- package/skills/mcp-builder/reference/evaluation.md +0 -602
- package/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
- package/skills/mcp-builder/reference/node_mcp_server.md +0 -970
- package/skills/mcp-builder/reference/python_mcp_server.md +0 -719
- package/skills/mcp-builder/scripts/connections.py +0 -151
- package/skills/mcp-builder/scripts/evaluation.py +0 -373
- package/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
- package/skills/mcp-builder/scripts/requirements.txt +0 -2
- package/skills/meeting-notes/SKILL.md +0 -159
- package/skills/meeting-notes/evals/evals.json +0 -23
- package/skills/project-orchestrator/SKILL.md +0 -487
- package/skills/project-orchestrator/assets/caddy-vps-setup.md +0 -180
- package/skills/project-orchestrator/assets/plan-summary-template.md +0 -159
- package/skills/prompter-specs/SKILL.md +0 -115
- package/skills/prompter-workflow/SKILL.md +0 -166
- package/skills/prompter-workflow/evals/evals.json +0 -89
- package/skills/sph-generator/SKILL.md +0 -488
- package/skills/ui-ux-pro/SKILL.md +0 -199
- package/skills/ui-ux-pro/assets/design-spec-template.md +0 -173
- package/skills/ui-ux-pro/references/component-patterns.md +0 -255
- package/skills/ui-ux-pro/references/design-principles.md +0 -167
- package/src/cli/index.ts +0 -223
- package/src/commands/archive.ts +0 -302
- package/src/commands/change.ts +0 -292
- package/src/commands/config.ts +0 -233
- package/src/commands/guide.ts +0 -50
- package/src/commands/init.ts +0 -899
- package/src/commands/list.ts +0 -194
- package/src/commands/show.ts +0 -138
- package/src/commands/spec.ts +0 -251
- package/src/commands/update.ts +0 -156
- package/src/commands/upgrade.ts +0 -30
- package/src/commands/validate.ts +0 -326
- package/src/core/artifact-graph/graph.ts +0 -167
- package/src/core/artifact-graph/index.ts +0 -44
- package/src/core/artifact-graph/instruction-loader.ts +0 -302
- package/src/core/artifact-graph/resolver.ts +0 -226
- package/src/core/artifact-graph/schema.ts +0 -124
- package/src/core/artifact-graph/state.ts +0 -64
- package/src/core/artifact-graph/types.ts +0 -65
- package/src/core/completions/command-registry.ts +0 -382
- package/src/core/completions/completion-provider.ts +0 -128
- package/src/core/completions/generators/bash-generator.ts +0 -191
- package/src/core/completions/generators/fish-generator.ts +0 -188
- package/src/core/completions/generators/powershell-generator.ts +0 -223
- package/src/core/completions/generators/zsh-generator.ts +0 -281
- package/src/core/completions/templates/bash-templates.ts +0 -24
- package/src/core/completions/templates/fish-templates.ts +0 -40
- package/src/core/completions/templates/powershell-templates.ts +0 -25
- package/src/core/completions/templates/zsh-templates.ts +0 -36
- package/src/core/completions/types.ts +0 -90
- package/src/core/config-schema.ts +0 -230
- package/src/core/config.ts +0 -181
- package/src/core/configurators/slash/antigravity.ts +0 -70
- package/src/core/configurators/slash/base.ts +0 -203
- package/src/core/configurators/slash/claude.ts +0 -70
- package/src/core/configurators/slash/codex.ts +0 -70
- package/src/core/configurators/slash/droid.ts +0 -44
- package/src/core/configurators/slash/forge.ts +0 -44
- package/src/core/configurators/slash/github-copilot.ts +0 -114
- package/src/core/configurators/slash/index.ts +0 -10
- package/src/core/configurators/slash/kilocode.ts +0 -70
- package/src/core/configurators/slash/opencode.ts +0 -70
- package/src/core/configurators/slash/registry.ts +0 -51
- package/src/core/converters/json-converter.ts +0 -62
- package/src/core/global-config.ts +0 -136
- package/src/core/parsers/change-parser.ts +0 -234
- package/src/core/parsers/markdown-parser.ts +0 -237
- package/src/core/parsers/requirement-blocks.ts +0 -234
- package/src/core/prompt-templates.ts +0 -3504
- package/src/core/schemas/base.schema.ts +0 -20
- package/src/core/schemas/change.schema.ts +0 -42
- package/src/core/schemas/index.ts +0 -20
- package/src/core/schemas/spec.schema.ts +0 -17
- package/src/core/skill-discovery.ts +0 -68
- package/src/core/specs-apply.ts +0 -483
- package/src/core/styles/palette.ts +0 -8
- package/src/core/templates/agents-template.ts +0 -459
- package/src/core/templates/claude-template.ts +0 -2
- package/src/core/templates/index.ts +0 -4
- package/src/core/templates/project-template.ts +0 -32
- package/src/core/templates/slash-command-templates.ts +0 -1068
- package/src/core/validation/constants.ts +0 -48
- package/src/core/validation/types.ts +0 -19
- package/src/core/validation/validator.ts +0 -449
- package/src/core/view.ts +0 -219
- package/src/index.ts +0 -1
- package/src/utils/change-metadata.ts +0 -171
- package/src/utils/change-utils.ts +0 -131
- package/src/utils/file-system.ts +0 -252
- package/src/utils/index.ts +0 -12
- package/src/utils/interactive.ts +0 -29
- package/src/utils/item-discovery.ts +0 -66
- package/src/utils/match.ts +0 -26
- package/src/utils/shell-detection.ts +0 -62
- package/src/utils/task-progress.ts +0 -43
- package/tsconfig.json +0 -28
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
|
|
4
|
-
const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
5
|
-
enhance: '.claude/commands/prompter/enhance.md',
|
|
6
|
-
'prd-generator': '.claude/commands/prompter/prd-generator.md',
|
|
7
|
-
'prd-agent-generator': '.claude/commands/prompter/prd-agent-generator.md',
|
|
8
|
-
'product-brief': '.claude/commands/prompter/product-brief.md',
|
|
9
|
-
'epic-single': '.claude/commands/prompter/epic-single.md',
|
|
10
|
-
'epic-generator': '.claude/commands/prompter/epic-generator.md',
|
|
11
|
-
'story-single': '.claude/commands/prompter/story-single.md',
|
|
12
|
-
'story-generator': '.claude/commands/prompter/story-generator.md',
|
|
13
|
-
'qa-test-scenario': '.claude/commands/prompter/qa-test-scenario.md',
|
|
14
|
-
'skill-creator': '.claude/commands/prompter/skill-creator.md',
|
|
15
|
-
'ai-humanizer': '.claude/commands/prompter/ai-humanizer.md',
|
|
16
|
-
'api-contract-generator': '.claude/commands/prompter/api-contract-generator.md',
|
|
17
|
-
'apply': '.claude/commands/prompter/apply.md',
|
|
18
|
-
'archive': '.claude/commands/prompter/archive.md',
|
|
19
|
-
'design-system': '.claude/commands/prompter/design-system.md',
|
|
20
|
-
'erd-generator': '.claude/commands/prompter/erd-generator.md',
|
|
21
|
-
'fsd-generator': '.claude/commands/prompter/fsd-generator.md',
|
|
22
|
-
'proposal': '.claude/commands/prompter/proposal.md',
|
|
23
|
-
'tdd-generator': '.claude/commands/prompter/tdd-generator.md',
|
|
24
|
-
'tdd-lite-generator': '.claude/commands/prompter/tdd-lite-generator.md',
|
|
25
|
-
'wireframe-generator': '.claude/commands/prompter/wireframe-generator.md',
|
|
26
|
-
'document-explainer': '.claude/commands/prompter/document-explainer.md'
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const DESCRIPTIONS: Record<SlashCommandId, string> = {
|
|
30
|
-
enhance: 'Enhance a rough prompt into a professional specification',
|
|
31
|
-
'prd-generator': 'Generate a comprehensive Product Requirements Document (PRD)',
|
|
32
|
-
'prd-agent-generator': 'Generate a PRD with autonomous assumptions (non-interactive mode)',
|
|
33
|
-
'product-brief': 'Generate an executive-level product brief (1-page summary)',
|
|
34
|
-
'epic-single': 'Generate a single well-defined Jira Epic',
|
|
35
|
-
'epic-generator': 'Generate a comprehensive set of EPICs from documentation',
|
|
36
|
-
'story-single': 'Generate a single Jira User Story from requirements',
|
|
37
|
-
'story-generator': 'Generate comprehensive user stories from EPICs and FSD',
|
|
38
|
-
'qa-test-scenario': 'Generate focused QA test scenarios from PRD',
|
|
39
|
-
'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
|
|
40
|
-
'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
|
|
41
|
-
'api-contract-generator': 'Generate OpenAPI specification from FSD and ERD',
|
|
42
|
-
'apply': 'Implement and apply an approved change proposal',
|
|
43
|
-
'archive': 'Archive a completed change and update specs',
|
|
44
|
-
'design-system': 'Generate comprehensive design system documentation for components and tokens',
|
|
45
|
-
'erd-generator': 'Generate Entity Relationship Diagram from FSD',
|
|
46
|
-
'fsd-generator': 'Generate Functional Specification Document from PRD',
|
|
47
|
-
'proposal': 'Create a new change proposal with spec deltas',
|
|
48
|
-
'tdd-generator': 'Generate comprehensive Technical Design Document',
|
|
49
|
-
'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
|
|
50
|
-
'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
|
|
51
|
-
'document-explainer': 'Analyze and explain complex documents into clear, actionable insights'
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
export class ClaudeConfigurator extends SlashCommandConfigurator {
|
|
55
|
-
readonly toolId = 'claude';
|
|
56
|
-
readonly isAvailable = true;
|
|
57
|
-
|
|
58
|
-
protected getRelativePath(id: SlashCommandId): string {
|
|
59
|
-
return FILE_PATHS[id];
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
protected getFrontmatter(id: SlashCommandId): string | undefined {
|
|
63
|
-
// Claude Code uses the filename as the command name
|
|
64
|
-
return undefined;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
protected getSkillTargetDir(skillName: string): string {
|
|
68
|
-
return `.claude/skills/${skillName}`;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
|
|
4
|
-
const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
5
|
-
enhance: '.codex/prompts/prompter-enhance.md',
|
|
6
|
-
'prd-generator': '.codex/prompts/prd-generator.md',
|
|
7
|
-
'prd-agent-generator': '.codex/prompts/prd-agent-generator.md',
|
|
8
|
-
'product-brief': '.codex/prompts/product-brief.md',
|
|
9
|
-
'epic-single': '.codex/prompts/epic-single.md',
|
|
10
|
-
'epic-generator': '.codex/prompts/epic-generator.md',
|
|
11
|
-
'story-single': '.codex/prompts/story-single.md',
|
|
12
|
-
'story-generator': '.codex/prompts/story-generator.md',
|
|
13
|
-
'qa-test-scenario': '.codex/prompts/qa-test-scenario.md',
|
|
14
|
-
'skill-creator': '.codex/prompts/skill-creator.md',
|
|
15
|
-
'ai-humanizer': '.codex/prompts/ai-humanizer.md',
|
|
16
|
-
'api-contract-generator': '.codex/prompts/api-contract-generator.md',
|
|
17
|
-
'apply': '.codex/prompts/apply.md',
|
|
18
|
-
'archive': '.codex/prompts/archive.md',
|
|
19
|
-
'design-system': '.codex/prompts/design-system.md',
|
|
20
|
-
'erd-generator': '.codex/prompts/erd-generator.md',
|
|
21
|
-
'fsd-generator': '.codex/prompts/fsd-generator.md',
|
|
22
|
-
'proposal': '.codex/prompts/proposal.md',
|
|
23
|
-
'tdd-generator': '.codex/prompts/tdd-generator.md',
|
|
24
|
-
'tdd-lite-generator': '.codex/prompts/tdd-lite-generator.md',
|
|
25
|
-
'wireframe-generator': '.codex/prompts/wireframe-generator.md',
|
|
26
|
-
'document-explainer': '.codex/prompts/document-explainer.md'
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const DESCRIPTIONS: Record<SlashCommandId, string> = {
|
|
30
|
-
enhance: 'Enhance a rough prompt into a professional specification',
|
|
31
|
-
'prd-generator': 'Generate a comprehensive Product Requirements Document (PRD)',
|
|
32
|
-
'prd-agent-generator': 'Generate a PRD with autonomous assumptions (non-interactive mode)',
|
|
33
|
-
'product-brief': 'Generate an executive-level product brief (1-page summary)',
|
|
34
|
-
'epic-single': 'Generate a single well-defined Jira Epic',
|
|
35
|
-
'epic-generator': 'Generate a comprehensive set of EPICs from documentation',
|
|
36
|
-
'story-single': 'Generate a single Jira User Story from requirements',
|
|
37
|
-
'story-generator': 'Generate comprehensive user stories from EPICs and FSD',
|
|
38
|
-
'qa-test-scenario': 'Generate focused QA test scenarios from PRD',
|
|
39
|
-
'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
|
|
40
|
-
'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
|
|
41
|
-
'api-contract-generator': 'Generate OpenAPI specification from FSD and ERD',
|
|
42
|
-
'apply': 'Implement and apply an approved change proposal',
|
|
43
|
-
'archive': 'Archive a completed change and update specs',
|
|
44
|
-
'design-system': 'Generate comprehensive design system documentation for components and tokens',
|
|
45
|
-
'erd-generator': 'Generate Entity Relationship Diagram from FSD',
|
|
46
|
-
'fsd-generator': 'Generate Functional Specification Document from PRD',
|
|
47
|
-
'proposal': 'Create a new change proposal with spec deltas',
|
|
48
|
-
'tdd-generator': 'Generate comprehensive Technical Design Document',
|
|
49
|
-
'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
|
|
50
|
-
'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
|
|
51
|
-
'document-explainer': 'Analyze and explain complex documents into clear, actionable insights'
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
export class CodexConfigurator extends SlashCommandConfigurator {
|
|
55
|
-
readonly toolId = 'codex';
|
|
56
|
-
readonly isAvailable = true;
|
|
57
|
-
|
|
58
|
-
protected getRelativePath(id: SlashCommandId): string {
|
|
59
|
-
return FILE_PATHS[id];
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
protected getFrontmatter(id: SlashCommandId): string | undefined {
|
|
63
|
-
const description = DESCRIPTIONS[id];
|
|
64
|
-
return `---\ndescription: ${description}\n---`;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
protected getSkillTargetDir(skillName: string): string {
|
|
68
|
-
return `.codex/skills/${skillName}`;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
|
|
4
|
-
const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
5
|
-
enhance: '.factory/commands/prompter/enhance.md',
|
|
6
|
-
'prd-generator': '.factory/commands/prompter/prd-generator.md',
|
|
7
|
-
'prd-agent-generator': '.factory/commands/prompter/prd-agent-generator.md',
|
|
8
|
-
'product-brief': '.factory/commands/prompter/product-brief.md',
|
|
9
|
-
'epic-single': '.factory/commands/prompter/epic-single.md',
|
|
10
|
-
'epic-generator': '.factory/commands/prompter/epic-generator.md',
|
|
11
|
-
'story-single': '.factory/commands/prompter/story-single.md',
|
|
12
|
-
'story-generator': '.factory/commands/prompter/story-generator.md',
|
|
13
|
-
'qa-test-scenario': '.factory/commands/prompter/qa-test-scenario.md',
|
|
14
|
-
'skill-creator': '.factory/commands/prompter/skill-creator.md',
|
|
15
|
-
'ai-humanizer': '.factory/commands/prompter/ai-humanizer.md',
|
|
16
|
-
'api-contract-generator': '.factory/commands/prompter/api-contract-generator.md',
|
|
17
|
-
'apply': '.factory/commands/prompter/apply.md',
|
|
18
|
-
'archive': '.factory/commands/prompter/archive.md',
|
|
19
|
-
'design-system': '.factory/commands/prompter/design-system.md',
|
|
20
|
-
'erd-generator': '.factory/commands/prompter/erd-generator.md',
|
|
21
|
-
'fsd-generator': '.factory/commands/prompter/fsd-generator.md',
|
|
22
|
-
'proposal': '.factory/commands/prompter/proposal.md',
|
|
23
|
-
'tdd-generator': '.factory/commands/prompter/tdd-generator.md',
|
|
24
|
-
'tdd-lite-generator': '.factory/commands/prompter/tdd-lite-generator.md',
|
|
25
|
-
'wireframe-generator': '.factory/commands/prompter/wireframe-generator.md',
|
|
26
|
-
'document-explainer': '.factory/commands/prompter/document-explainer.md'
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export class DroidConfigurator extends SlashCommandConfigurator {
|
|
30
|
-
readonly toolId = 'droid';
|
|
31
|
-
readonly isAvailable = true;
|
|
32
|
-
|
|
33
|
-
protected getRelativePath(id: SlashCommandId): string {
|
|
34
|
-
return FILE_PATHS[id];
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
protected getFrontmatter(id: SlashCommandId): string | undefined {
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
protected getSkillTargetDir(skillName: string): string {
|
|
42
|
-
return `.factory/skills/${skillName}`;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
|
|
4
|
-
const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
5
|
-
enhance: '.forge/commands/prompter/enhance.md',
|
|
6
|
-
'prd-generator': '.forge/commands/prompter/prd-generator.md',
|
|
7
|
-
'prd-agent-generator': '.forge/commands/prompter/prd-agent-generator.md',
|
|
8
|
-
'product-brief': '.forge/commands/prompter/product-brief.md',
|
|
9
|
-
'epic-single': '.forge/commands/prompter/epic-single.md',
|
|
10
|
-
'epic-generator': '.forge/commands/prompter/epic-generator.md',
|
|
11
|
-
'story-single': '.forge/commands/prompter/story-single.md',
|
|
12
|
-
'story-generator': '.forge/commands/prompter/story-generator.md',
|
|
13
|
-
'qa-test-scenario': '.forge/commands/prompter/qa-test-scenario.md',
|
|
14
|
-
'skill-creator': '.forge/commands/prompter/skill-creator.md',
|
|
15
|
-
'ai-humanizer': '.forge/commands/prompter/ai-humanizer.md',
|
|
16
|
-
'api-contract-generator': '.forge/commands/prompter/api-contract-generator.md',
|
|
17
|
-
'apply': '.forge/commands/prompter/apply.md',
|
|
18
|
-
'archive': '.forge/commands/prompter/archive.md',
|
|
19
|
-
'design-system': '.forge/commands/prompter/design-system.md',
|
|
20
|
-
'erd-generator': '.forge/commands/prompter/erd-generator.md',
|
|
21
|
-
'fsd-generator': '.forge/commands/prompter/fsd-generator.md',
|
|
22
|
-
'proposal': '.forge/commands/prompter/proposal.md',
|
|
23
|
-
'tdd-generator': '.forge/commands/prompter/tdd-generator.md',
|
|
24
|
-
'tdd-lite-generator': '.forge/commands/prompter/tdd-lite-generator.md',
|
|
25
|
-
'wireframe-generator': '.forge/commands/prompter/wireframe-generator.md',
|
|
26
|
-
'document-explainer': '.forge/commands/prompter/document-explainer.md'
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export class ForgeConfigurator extends SlashCommandConfigurator {
|
|
30
|
-
readonly toolId = 'forge';
|
|
31
|
-
readonly isAvailable = true;
|
|
32
|
-
|
|
33
|
-
protected getRelativePath(id: SlashCommandId): string {
|
|
34
|
-
return FILE_PATHS[id];
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
protected getFrontmatter(id: SlashCommandId): string | undefined {
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
protected getSkillTargetDir(skillName: string): string {
|
|
42
|
-
return `.forge/skills/${skillName}`;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
import { promises as fs } from 'fs';
|
|
4
|
-
import path from 'path';
|
|
5
|
-
import { PROMPTER_MARKERS } from '../../config.js';
|
|
6
|
-
|
|
7
|
-
const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
8
|
-
enhance: '.github/prompts/prompter-enhance.prompt.md',
|
|
9
|
-
'prd-generator': '.github/prompts/prd-generator.prompt.md',
|
|
10
|
-
'prd-agent-generator': '.github/prompts/prd-agent-generator.prompt.md',
|
|
11
|
-
'product-brief': '.github/prompts/product-brief.prompt.md',
|
|
12
|
-
'epic-single': '.github/prompts/epic-single.prompt.md',
|
|
13
|
-
'epic-generator': '.github/prompts/epic-generator.prompt.md',
|
|
14
|
-
'story-single': '.github/prompts/story-single.prompt.md',
|
|
15
|
-
'story-generator': '.github/prompts/story-generator.prompt.md',
|
|
16
|
-
'qa-test-scenario': '.github/prompts/qa-test-scenario.prompt.md',
|
|
17
|
-
'skill-creator': '.github/prompts/skill-creator.prompt.md',
|
|
18
|
-
'ai-humanizer': '.github/prompts/ai-humanizer.prompt.md',
|
|
19
|
-
'api-contract-generator': '.github/prompts/api-contract-generator.prompt.md',
|
|
20
|
-
'apply': '.github/prompts/apply.prompt.md',
|
|
21
|
-
'archive': '.github/prompts/archive.prompt.md',
|
|
22
|
-
'design-system': '.github/prompts/design-system.prompt.md',
|
|
23
|
-
'erd-generator': '.github/prompts/erd-generator.prompt.md',
|
|
24
|
-
'fsd-generator': '.github/prompts/fsd-generator.prompt.md',
|
|
25
|
-
'proposal': '.github/prompts/proposal.prompt.md',
|
|
26
|
-
'tdd-generator': '.github/prompts/tdd-generator.prompt.md',
|
|
27
|
-
'tdd-lite-generator': '.github/prompts/tdd-lite-generator.prompt.md',
|
|
28
|
-
'wireframe-generator': '.github/prompts/wireframe-generator.prompt.md',
|
|
29
|
-
'document-explainer': '.github/prompts/document-explainer.prompt.md'
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
const DESCRIPTIONS: Record<SlashCommandId, string> = {
|
|
33
|
-
enhance: 'Enhance a rough prompt into a professional specification',
|
|
34
|
-
'prd-generator': 'Generate a comprehensive Product Requirements Document (PRD)',
|
|
35
|
-
'prd-agent-generator': 'Generate a PRD with autonomous assumptions (non-interactive mode)',
|
|
36
|
-
'product-brief': 'Generate an executive-level product brief (1-page summary)',
|
|
37
|
-
'epic-single': 'Generate a single well-defined Jira Epic',
|
|
38
|
-
'epic-generator': 'Generate a comprehensive set of EPICs from documentation',
|
|
39
|
-
'story-single': 'Generate a single Jira User Story from requirements',
|
|
40
|
-
'story-generator': 'Generate comprehensive user stories from EPICs and FSD',
|
|
41
|
-
'qa-test-scenario': 'Generate focused QA test scenarios from PRD',
|
|
42
|
-
'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
|
|
43
|
-
'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
|
|
44
|
-
'api-contract-generator': 'Generate OpenAPI specification from FSD and ERD',
|
|
45
|
-
'apply': 'Implement and apply an approved change proposal',
|
|
46
|
-
'archive': 'Archive a completed change and update specs',
|
|
47
|
-
'design-system': 'Generate comprehensive design system documentation for components and tokens',
|
|
48
|
-
'erd-generator': 'Generate Entity Relationship Diagram from FSD',
|
|
49
|
-
'fsd-generator': 'Generate Functional Specification Document from PRD',
|
|
50
|
-
'proposal': 'Create a new change proposal with spec deltas',
|
|
51
|
-
'tdd-generator': 'Generate comprehensive Technical Design Document',
|
|
52
|
-
'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
|
|
53
|
-
'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
|
|
54
|
-
'document-explainer': 'Analyze and explain complex documents into clear, actionable insights'
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
export class GithubCopilotConfigurator extends SlashCommandConfigurator {
|
|
58
|
-
readonly toolId = 'github-copilot';
|
|
59
|
-
readonly isAvailable = true;
|
|
60
|
-
|
|
61
|
-
protected getRelativePath(id: SlashCommandId): string {
|
|
62
|
-
return FILE_PATHS[id];
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
protected getFrontmatter(id: SlashCommandId): string | undefined {
|
|
66
|
-
const description = DESCRIPTIONS[id];
|
|
67
|
-
return `---\ndescription: ${description}\n---`;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
async generateAll(projectPath: string, filterIds?: SlashCommandId[]): Promise<string[]> {
|
|
71
|
-
const createdOrUpdated: string[] = [];
|
|
72
|
-
|
|
73
|
-
for (const target of this.getTargets(filterIds)) {
|
|
74
|
-
const body = this.getBody(target.id);
|
|
75
|
-
const filePath = path.join(projectPath, target.path);
|
|
76
|
-
|
|
77
|
-
// Ensure directory exists
|
|
78
|
-
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
79
|
-
|
|
80
|
-
const exists = await this.checkFileExists(filePath);
|
|
81
|
-
if (exists) {
|
|
82
|
-
await this.updateBody(filePath, body);
|
|
83
|
-
} else {
|
|
84
|
-
const frontmatter = this.getFrontmatter(target.id);
|
|
85
|
-
const sections: string[] = [];
|
|
86
|
-
if (frontmatter) {
|
|
87
|
-
sections.push(frontmatter.trim());
|
|
88
|
-
}
|
|
89
|
-
// Add $ARGUMENTS after frontmatter
|
|
90
|
-
sections.push('$ARGUMENTS');
|
|
91
|
-
sections.push(`${PROMPTER_MARKERS.start}\n${body}\n${PROMPTER_MARKERS.end}`);
|
|
92
|
-
const content = sections.join('\n') + '\n';
|
|
93
|
-
await fs.writeFile(filePath, content, 'utf-8');
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
createdOrUpdated.push(target.path);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
return createdOrUpdated;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
protected getSkillTargetDir(skillName: string): string {
|
|
103
|
-
return `.github/skills/${skillName}`;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
private async checkFileExists(filePath: string): Promise<boolean> {
|
|
107
|
-
try {
|
|
108
|
-
await fs.access(filePath);
|
|
109
|
-
return true;
|
|
110
|
-
} catch {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
export { ConfiguratorRegistry, registry } from './registry.js';
|
|
3
|
-
export { AntigravityConfigurator } from './antigravity.js';
|
|
4
|
-
export { ClaudeConfigurator } from './claude.js';
|
|
5
|
-
export { CodexConfigurator } from './codex.js';
|
|
6
|
-
export { GithubCopilotConfigurator } from './github-copilot.js';
|
|
7
|
-
export { OpenCodeConfigurator } from './opencode.js';
|
|
8
|
-
export { KiloCodeConfigurator } from './kilocode.js';
|
|
9
|
-
export { ForgeConfigurator } from './forge.js';
|
|
10
|
-
export { DroidConfigurator } from './droid.js';
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
|
|
4
|
-
const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
5
|
-
enhance: '.kilocode/workflows/prompter-enhance.md',
|
|
6
|
-
'prd-generator': '.kilocode/workflows/prd-generator.md',
|
|
7
|
-
'prd-agent-generator': '.kilocode/workflows/prd-agent-generator.md',
|
|
8
|
-
'product-brief': '.kilocode/workflows/product-brief.md',
|
|
9
|
-
'epic-single': '.kilocode/workflows/epic-single.md',
|
|
10
|
-
'epic-generator': '.kilocode/workflows/epic-generator.md',
|
|
11
|
-
'story-single': '.kilocode/workflows/story-single.md',
|
|
12
|
-
'story-generator': '.kilocode/workflows/story-generator.md',
|
|
13
|
-
'qa-test-scenario': '.kilocode/workflows/qa-test-scenario.md',
|
|
14
|
-
'skill-creator': '.kilocode/workflows/skill-creator.md',
|
|
15
|
-
'ai-humanizer': '.kilocode/workflows/ai-humanizer.md',
|
|
16
|
-
'api-contract-generator': '.kilocode/workflows/api-contract-generator.md',
|
|
17
|
-
'apply': '.kilocode/workflows/apply.md',
|
|
18
|
-
'archive': '.kilocode/workflows/archive.md',
|
|
19
|
-
'design-system': '.kilocode/workflows/design-system.md',
|
|
20
|
-
'erd-generator': '.kilocode/workflows/erd-generator.md',
|
|
21
|
-
'fsd-generator': '.kilocode/workflows/fsd-generator.md',
|
|
22
|
-
'proposal': '.kilocode/workflows/proposal.md',
|
|
23
|
-
'tdd-generator': '.kilocode/workflows/tdd-generator.md',
|
|
24
|
-
'tdd-lite-generator': '.kilocode/workflows/tdd-lite-generator.md',
|
|
25
|
-
'wireframe-generator': '.kilocode/workflows/wireframe-generator.md',
|
|
26
|
-
'document-explainer': '.kilocode/workflows/document-explainer.md'
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const DESCRIPTIONS: Record<SlashCommandId, string> = {
|
|
30
|
-
enhance: 'Enhance a rough prompt into a professional specification',
|
|
31
|
-
'prd-generator': 'Generate a comprehensive Product Requirements Document (PRD)',
|
|
32
|
-
'prd-agent-generator': 'Generate a PRD with autonomous assumptions (non-interactive mode)',
|
|
33
|
-
'product-brief': 'Generate an executive-level product brief (1-page summary)',
|
|
34
|
-
'epic-single': 'Generate a single well-defined Jira Epic',
|
|
35
|
-
'epic-generator': 'Generate a comprehensive set of EPICs from documentation',
|
|
36
|
-
'story-single': 'Generate a single Jira User Story from requirements',
|
|
37
|
-
'story-generator': 'Generate comprehensive user stories from EPICs and FSD',
|
|
38
|
-
'qa-test-scenario': 'Generate focused QA test scenarios from PRD',
|
|
39
|
-
'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
|
|
40
|
-
'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
|
|
41
|
-
'api-contract-generator': 'Generate OpenAPI specification from FSD and ERD',
|
|
42
|
-
'apply': 'Implement and apply an approved change proposal',
|
|
43
|
-
'archive': 'Archive a completed change and update specs',
|
|
44
|
-
'design-system': 'Generate comprehensive design system documentation for components and tokens',
|
|
45
|
-
'erd-generator': 'Generate Entity Relationship Diagram from FSD',
|
|
46
|
-
'fsd-generator': 'Generate Functional Specification Document from PRD',
|
|
47
|
-
'proposal': 'Create a new change proposal with spec deltas',
|
|
48
|
-
'tdd-generator': 'Generate comprehensive Technical Design Document',
|
|
49
|
-
'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
|
|
50
|
-
'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
|
|
51
|
-
'document-explainer': 'Analyze and explain complex documents into clear, actionable insights'
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
export class KiloCodeConfigurator extends SlashCommandConfigurator {
|
|
55
|
-
readonly toolId = 'kilocode';
|
|
56
|
-
readonly isAvailable = true;
|
|
57
|
-
|
|
58
|
-
protected getRelativePath(id: SlashCommandId): string {
|
|
59
|
-
return FILE_PATHS[id];
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
protected getFrontmatter(id: SlashCommandId): string | undefined {
|
|
63
|
-
const description = DESCRIPTIONS[id];
|
|
64
|
-
return `---\ndescription: ${description}\n---`;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
protected getSkillTargetDir(skillName: string): string {
|
|
68
|
-
return `.kilocode/skills/${skillName}`;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
|
|
4
|
-
const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
5
|
-
enhance: '.opencode/command/prompter-enhance.md',
|
|
6
|
-
'prd-generator': '.opencode/command/prd-generator.md',
|
|
7
|
-
'prd-agent-generator': '.opencode/command/prd-agent-generator.md',
|
|
8
|
-
'product-brief': '.opencode/command/product-brief.md',
|
|
9
|
-
'epic-single': '.opencode/command/epic-single.md',
|
|
10
|
-
'epic-generator': '.opencode/command/epic-generator.md',
|
|
11
|
-
'story-single': '.opencode/command/story-single.md',
|
|
12
|
-
'story-generator': '.opencode/command/story-generator.md',
|
|
13
|
-
'qa-test-scenario': '.opencode/command/qa-test-scenario.md',
|
|
14
|
-
'skill-creator': '.opencode/command/skill-creator.md',
|
|
15
|
-
'ai-humanizer': '.opencode/command/ai-humanizer.md',
|
|
16
|
-
'api-contract-generator': '.opencode/command/api-contract-generator.md',
|
|
17
|
-
'apply': '.opencode/command/apply.md',
|
|
18
|
-
'archive': '.opencode/command/archive.md',
|
|
19
|
-
'design-system': '.opencode/command/design-system.md',
|
|
20
|
-
'erd-generator': '.opencode/command/erd-generator.md',
|
|
21
|
-
'fsd-generator': '.opencode/command/fsd-generator.md',
|
|
22
|
-
'proposal': '.opencode/command/proposal.md',
|
|
23
|
-
'tdd-generator': '.opencode/command/tdd-generator.md',
|
|
24
|
-
'tdd-lite-generator': '.opencode/command/tdd-lite-generator.md',
|
|
25
|
-
'wireframe-generator': '.opencode/command/wireframe-generator.md',
|
|
26
|
-
'document-explainer': '.opencode/command/document-explainer.md'
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const DESCRIPTIONS: Record<SlashCommandId, string> = {
|
|
30
|
-
enhance: 'Enhance a rough prompt into a professional specification',
|
|
31
|
-
'prd-generator': 'Generate a comprehensive Product Requirements Document (PRD)',
|
|
32
|
-
'prd-agent-generator': 'Generate a PRD with autonomous assumptions (non-interactive mode)',
|
|
33
|
-
'product-brief': 'Generate an executive-level product brief (1-page summary)',
|
|
34
|
-
'epic-single': 'Generate a single well-defined Jira Epic',
|
|
35
|
-
'epic-generator': 'Generate a comprehensive set of EPICs from documentation',
|
|
36
|
-
'story-single': 'Generate a single Jira User Story from requirements',
|
|
37
|
-
'story-generator': 'Generate comprehensive user stories from EPICs and FSD',
|
|
38
|
-
'qa-test-scenario': 'Generate focused QA test scenarios from PRD',
|
|
39
|
-
'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
|
|
40
|
-
'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
|
|
41
|
-
'api-contract-generator': 'Generate OpenAPI specification from FSD and ERD',
|
|
42
|
-
'apply': 'Implement and apply an approved change proposal',
|
|
43
|
-
'archive': 'Archive a completed change and update specs',
|
|
44
|
-
'design-system': 'Generate comprehensive design system documentation for components and tokens',
|
|
45
|
-
'erd-generator': 'Generate Entity Relationship Diagram from FSD',
|
|
46
|
-
'fsd-generator': 'Generate Functional Specification Document from PRD',
|
|
47
|
-
'proposal': 'Create a new change proposal with spec deltas',
|
|
48
|
-
'tdd-generator': 'Generate comprehensive Technical Design Document',
|
|
49
|
-
'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
|
|
50
|
-
'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
|
|
51
|
-
'document-explainer': 'Analyze and explain complex documents into clear, actionable insights'
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
export class OpenCodeConfigurator extends SlashCommandConfigurator {
|
|
55
|
-
readonly toolId = 'opencode';
|
|
56
|
-
readonly isAvailable = true;
|
|
57
|
-
|
|
58
|
-
protected getRelativePath(id: SlashCommandId): string {
|
|
59
|
-
return FILE_PATHS[id];
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
protected getFrontmatter(id: SlashCommandId): string | undefined {
|
|
63
|
-
const description = DESCRIPTIONS[id];
|
|
64
|
-
return `---\nagent: build\ndescription: ${description}\n---`;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
protected getSkillTargetDir(skillName: string): string {
|
|
68
|
-
return `.opencode/skills/${skillName}`;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { AntigravityConfigurator } from './antigravity.js';
|
|
3
|
-
import { ClaudeConfigurator } from './claude.js';
|
|
4
|
-
import { CodexConfigurator } from './codex.js';
|
|
5
|
-
import { GithubCopilotConfigurator } from './github-copilot.js';
|
|
6
|
-
import { OpenCodeConfigurator } from './opencode.js';
|
|
7
|
-
import { KiloCodeConfigurator } from './kilocode.js';
|
|
8
|
-
import { ForgeConfigurator } from './forge.js';
|
|
9
|
-
import { DroidConfigurator } from './droid.js';
|
|
10
|
-
|
|
11
|
-
export class ConfiguratorRegistry {
|
|
12
|
-
private configurators: Map<string, SlashCommandConfigurator> = new Map();
|
|
13
|
-
|
|
14
|
-
constructor() {
|
|
15
|
-
const antigravity = new AntigravityConfigurator();
|
|
16
|
-
const claude = new ClaudeConfigurator();
|
|
17
|
-
const codex = new CodexConfigurator();
|
|
18
|
-
const githubCopilot = new GithubCopilotConfigurator();
|
|
19
|
-
const opencode = new OpenCodeConfigurator();
|
|
20
|
-
const kilocode = new KiloCodeConfigurator();
|
|
21
|
-
const forge = new ForgeConfigurator();
|
|
22
|
-
const droid = new DroidConfigurator();
|
|
23
|
-
|
|
24
|
-
this.configurators.set(antigravity.toolId, antigravity);
|
|
25
|
-
this.configurators.set(claude.toolId, claude);
|
|
26
|
-
this.configurators.set(codex.toolId, codex);
|
|
27
|
-
this.configurators.set(githubCopilot.toolId, githubCopilot);
|
|
28
|
-
this.configurators.set(opencode.toolId, opencode);
|
|
29
|
-
this.configurators.set(kilocode.toolId, kilocode);
|
|
30
|
-
this.configurators.set(forge.toolId, forge);
|
|
31
|
-
this.configurators.set(droid.toolId, droid);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
get(toolId: string): SlashCommandConfigurator | undefined {
|
|
35
|
-
return this.configurators.get(toolId);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
getAll(): SlashCommandConfigurator[] {
|
|
39
|
-
return Array.from(this.configurators.values());
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
getAvailable(): SlashCommandConfigurator[] {
|
|
43
|
-
return this.getAll().filter(c => c.isAvailable);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
getToolIds(): string[] {
|
|
47
|
-
return Array.from(this.configurators.keys());
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export const registry = new ConfiguratorRegistry();
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { MarkdownParser } from '../parsers/markdown-parser.js';
|
|
4
|
-
import { ChangeParser } from '../parsers/change-parser.js';
|
|
5
|
-
import { Spec, Change } from '../schemas/index.js';
|
|
6
|
-
import { FileSystemUtils } from '../../utils/file-system.js';
|
|
7
|
-
|
|
8
|
-
export class JsonConverter {
|
|
9
|
-
convertSpecToJson(filePath: string): string {
|
|
10
|
-
const content = readFileSync(filePath, 'utf-8');
|
|
11
|
-
const parser = new MarkdownParser(content);
|
|
12
|
-
const specName = this.extractNameFromPath(filePath);
|
|
13
|
-
|
|
14
|
-
const spec = parser.parseSpec(specName);
|
|
15
|
-
|
|
16
|
-
const jsonSpec = {
|
|
17
|
-
...spec,
|
|
18
|
-
metadata: {
|
|
19
|
-
...spec.metadata,
|
|
20
|
-
sourcePath: filePath,
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
return JSON.stringify(jsonSpec, null, 2);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
async convertChangeToJson(filePath: string): Promise<string> {
|
|
28
|
-
const content = readFileSync(filePath, 'utf-8');
|
|
29
|
-
const changeName = this.extractNameFromPath(filePath);
|
|
30
|
-
const changeDir = path.dirname(filePath);
|
|
31
|
-
const parser = new ChangeParser(content, changeDir);
|
|
32
|
-
|
|
33
|
-
const change = await parser.parseChangeWithDeltas(changeName);
|
|
34
|
-
|
|
35
|
-
const jsonChange = {
|
|
36
|
-
...change,
|
|
37
|
-
metadata: {
|
|
38
|
-
...change.metadata,
|
|
39
|
-
sourcePath: filePath,
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
return JSON.stringify(jsonChange, null, 2);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
private extractNameFromPath(filePath: string): string {
|
|
47
|
-
const normalizedPath = FileSystemUtils.toPosixPath(filePath);
|
|
48
|
-
const parts = normalizedPath.split('/');
|
|
49
|
-
|
|
50
|
-
for (let i = parts.length - 1; i >= 0; i--) {
|
|
51
|
-
if (parts[i] === 'specs' || parts[i] === 'changes') {
|
|
52
|
-
if (i < parts.length - 1) {
|
|
53
|
-
return parts[i + 1];
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const fileName = parts[parts.length - 1] ?? '';
|
|
59
|
-
const dotIndex = fileName.lastIndexOf('.');
|
|
60
|
-
return dotIndex > 0 ? fileName.slice(0, dotIndex) : fileName;
|
|
61
|
-
}
|
|
62
|
-
}
|