@dedesfr/prompter 0.6.15 → 0.7.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 +5 -0
- package/dist/cli/index.js +144 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/archive.d.ts +11 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +280 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/change.d.ts +35 -0
- package/dist/commands/change.d.ts.map +1 -0
- package/dist/commands/change.js +277 -0
- package/dist/commands/change.js.map +1 -0
- package/dist/commands/config.d.ts +8 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +198 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/list.d.ts +2 -2
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +153 -47
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/show.d.ts +14 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +132 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/spec.d.ts +15 -0
- package/dist/commands/spec.d.ts.map +1 -0
- package/dist/commands/spec.js +225 -0
- package/dist/commands/spec.js.map +1 -0
- package/dist/commands/validate.d.ts +24 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +294 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/core/artifact-graph/graph.d.ts +56 -0
- package/dist/core/artifact-graph/graph.d.ts.map +1 -0
- package/dist/core/artifact-graph/graph.js +141 -0
- package/dist/core/artifact-graph/graph.js.map +1 -0
- package/dist/core/artifact-graph/index.d.ts +7 -0
- package/dist/core/artifact-graph/index.d.ts.map +1 -0
- package/dist/core/artifact-graph/index.js +13 -0
- package/dist/core/artifact-graph/index.js.map +1 -0
- package/dist/core/artifact-graph/instruction-loader.d.ts +130 -0
- package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -0
- package/dist/core/artifact-graph/instruction-loader.js +173 -0
- package/dist/core/artifact-graph/instruction-loader.js.map +1 -0
- package/dist/core/artifact-graph/resolver.d.ts +61 -0
- package/dist/core/artifact-graph/resolver.d.ts.map +1 -0
- package/dist/core/artifact-graph/resolver.js +187 -0
- package/dist/core/artifact-graph/resolver.js.map +1 -0
- package/dist/core/artifact-graph/schema.d.ts +13 -0
- package/dist/core/artifact-graph/schema.d.ts.map +1 -0
- package/dist/core/artifact-graph/schema.js +108 -0
- package/dist/core/artifact-graph/schema.js.map +1 -0
- package/dist/core/artifact-graph/state.d.ts +12 -0
- package/dist/core/artifact-graph/state.d.ts.map +1 -0
- package/dist/core/artifact-graph/state.js +54 -0
- package/dist/core/artifact-graph/state.js.map +1 -0
- package/dist/core/artifact-graph/types.d.ts +45 -0
- package/dist/core/artifact-graph/types.d.ts.map +1 -0
- package/dist/core/artifact-graph/types.js +43 -0
- package/dist/core/artifact-graph/types.js.map +1 -0
- package/dist/core/completions/command-registry.d.ts +7 -0
- package/dist/core/completions/command-registry.d.ts.map +1 -0
- package/dist/core/completions/command-registry.js +380 -0
- package/dist/core/completions/command-registry.js.map +1 -0
- package/dist/core/completions/completion-provider.d.ts +60 -0
- package/dist/core/completions/completion-provider.d.ts.map +1 -0
- package/dist/core/completions/completion-provider.js +102 -0
- package/dist/core/completions/completion-provider.js.map +1 -0
- package/dist/core/completions/generators/bash-generator.d.ts +32 -0
- package/dist/core/completions/generators/bash-generator.d.ts.map +1 -0
- package/dist/core/completions/generators/bash-generator.js +174 -0
- package/dist/core/completions/generators/bash-generator.js.map +1 -0
- package/dist/core/completions/generators/fish-generator.d.ts +32 -0
- package/dist/core/completions/generators/fish-generator.d.ts.map +1 -0
- package/dist/core/completions/generators/fish-generator.js +157 -0
- package/dist/core/completions/generators/fish-generator.js.map +1 -0
- package/dist/core/completions/generators/powershell-generator.d.ts +33 -0
- package/dist/core/completions/generators/powershell-generator.d.ts.map +1 -0
- package/dist/core/completions/generators/powershell-generator.js +207 -0
- package/dist/core/completions/generators/powershell-generator.js.map +1 -0
- package/dist/core/completions/generators/zsh-generator.d.ts +44 -0
- package/dist/core/completions/generators/zsh-generator.d.ts.map +1 -0
- package/dist/core/completions/generators/zsh-generator.js +250 -0
- package/dist/core/completions/generators/zsh-generator.js.map +1 -0
- package/dist/core/completions/templates/bash-templates.d.ts +6 -0
- package/dist/core/completions/templates/bash-templates.d.ts.map +1 -0
- package/dist/core/completions/templates/bash-templates.js +24 -0
- package/dist/core/completions/templates/bash-templates.js.map +1 -0
- package/dist/core/completions/templates/fish-templates.d.ts +7 -0
- package/dist/core/completions/templates/fish-templates.d.ts.map +1 -0
- package/dist/core/completions/templates/fish-templates.js +39 -0
- package/dist/core/completions/templates/fish-templates.js.map +1 -0
- package/dist/core/completions/templates/powershell-templates.d.ts +6 -0
- package/dist/core/completions/templates/powershell-templates.d.ts.map +1 -0
- package/dist/core/completions/templates/powershell-templates.js +25 -0
- package/dist/core/completions/templates/powershell-templates.js.map +1 -0
- package/dist/core/completions/templates/zsh-templates.d.ts +6 -0
- package/dist/core/completions/templates/zsh-templates.d.ts.map +1 -0
- package/dist/core/completions/templates/zsh-templates.js +36 -0
- package/dist/core/completions/templates/zsh-templates.js.map +1 -0
- package/dist/core/completions/types.d.ts +78 -0
- package/dist/core/completions/types.d.ts.map +1 -0
- package/dist/core/completions/types.js +2 -0
- package/dist/core/completions/types.js.map +1 -0
- package/dist/core/config-schema.d.ts +76 -0
- package/dist/core/config-schema.d.ts.map +1 -0
- package/dist/core/config-schema.js +200 -0
- package/dist/core/config-schema.js.map +1 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +18 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/configurators/slash/antigravity.d.ts.map +1 -1
- package/dist/core/configurators/slash/antigravity.js +6 -0
- 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 +6 -0
- 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 +6 -0
- 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 +6 -0
- 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 +6 -0
- 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 +6 -0
- package/dist/core/configurators/slash/opencode.js.map +1 -1
- package/dist/core/converters/json-converter.d.ts +6 -0
- package/dist/core/converters/json-converter.d.ts.map +1 -0
- package/dist/core/converters/json-converter.js +51 -0
- package/dist/core/converters/json-converter.js.map +1 -0
- package/dist/core/global-config.d.ts +39 -0
- package/dist/core/global-config.d.ts.map +1 -0
- package/dist/core/global-config.js +115 -0
- package/dist/core/global-config.js.map +1 -0
- package/dist/core/parsers/change-parser.d.ts +13 -0
- package/dist/core/parsers/change-parser.d.ts.map +1 -0
- package/dist/core/parsers/change-parser.js +193 -0
- package/dist/core/parsers/change-parser.js.map +1 -0
- package/dist/core/parsers/markdown-parser.d.ts +22 -0
- package/dist/core/parsers/markdown-parser.d.ts.map +1 -0
- package/dist/core/parsers/markdown-parser.js +187 -0
- package/dist/core/parsers/markdown-parser.js.map +1 -0
- package/dist/core/parsers/requirement-blocks.d.ts +37 -0
- package/dist/core/parsers/requirement-blocks.d.ts.map +1 -0
- package/dist/core/parsers/requirement-blocks.js +201 -0
- package/dist/core/parsers/requirement-blocks.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +3 -0
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +66 -0
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/schemas/base.schema.d.ts +13 -0
- package/dist/core/schemas/base.schema.d.ts.map +1 -0
- package/dist/core/schemas/base.schema.js +13 -0
- package/dist/core/schemas/base.schema.js.map +1 -0
- package/dist/core/schemas/change.schema.d.ts +73 -0
- package/dist/core/schemas/change.schema.d.ts.map +1 -0
- package/dist/core/schemas/change.schema.js +31 -0
- package/dist/core/schemas/change.schema.js.map +1 -0
- package/dist/core/schemas/index.d.ts +4 -0
- package/dist/core/schemas/index.d.ts.map +1 -0
- package/dist/core/schemas/index.js +4 -0
- package/dist/core/schemas/index.js.map +1 -0
- package/dist/core/schemas/spec.schema.d.ts +18 -0
- package/dist/core/schemas/spec.schema.d.ts.map +1 -0
- package/dist/core/schemas/spec.schema.js +15 -0
- package/dist/core/schemas/spec.schema.js.map +1 -0
- package/dist/core/specs-apply.d.ts +73 -0
- package/dist/core/specs-apply.d.ts.map +1 -0
- package/dist/core/specs-apply.js +384 -0
- package/dist/core/specs-apply.js.map +1 -0
- package/dist/core/styles/palette.d.ts +7 -0
- package/dist/core/styles/palette.d.ts.map +1 -0
- package/dist/core/styles/palette.js +8 -0
- package/dist/core/styles/palette.js.map +1 -0
- 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 +4 -1
- package/dist/core/templates/slash-command-templates.js.map +1 -1
- package/dist/core/validation/constants.d.ts +34 -0
- package/dist/core/validation/constants.d.ts.map +1 -0
- package/dist/core/validation/constants.js +40 -0
- package/dist/core/validation/constants.js.map +1 -0
- package/dist/core/validation/types.d.ts +18 -0
- package/dist/core/validation/types.d.ts.map +1 -0
- package/dist/core/validation/types.js +2 -0
- package/dist/core/validation/types.js.map +1 -0
- package/dist/core/validation/validator.d.ts +33 -0
- package/dist/core/validation/validator.d.ts.map +1 -0
- package/dist/core/validation/validator.js +409 -0
- package/dist/core/validation/validator.js.map +1 -0
- package/dist/core/view.d.ts +8 -0
- package/dist/core/view.d.ts.map +1 -0
- package/dist/core/view.js +168 -0
- package/dist/core/view.js.map +1 -0
- package/dist/utils/change-metadata.d.ts +47 -0
- package/dist/utils/change-metadata.d.ts.map +1 -0
- package/dist/utils/change-metadata.js +130 -0
- package/dist/utils/change-metadata.js.map +1 -0
- package/dist/utils/change-utils.d.ts +51 -0
- package/dist/utils/change-utils.d.ts.map +1 -0
- package/dist/utils/change-utils.js +100 -0
- package/dist/utils/change-utils.js.map +1 -0
- package/dist/utils/file-system.d.ts +25 -0
- package/dist/utils/file-system.d.ts.map +1 -0
- package/dist/utils/file-system.js +218 -0
- package/dist/utils/file-system.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/interactive.d.ts +18 -0
- package/dist/utils/interactive.d.ts.map +1 -0
- package/dist/utils/interactive.js +21 -0
- package/dist/utils/interactive.js.map +1 -0
- package/dist/utils/item-discovery.d.ts +4 -0
- package/dist/utils/item-discovery.d.ts.map +1 -0
- package/dist/utils/item-discovery.js +72 -0
- package/dist/utils/item-discovery.js.map +1 -0
- package/dist/utils/match.d.ts +3 -0
- package/dist/utils/match.d.ts.map +1 -0
- package/dist/utils/match.js +22 -0
- package/dist/utils/match.js.map +1 -0
- package/dist/utils/shell-detection.d.ts +20 -0
- package/dist/utils/shell-detection.d.ts.map +1 -0
- package/dist/utils/shell-detection.js +41 -0
- package/dist/utils/shell-detection.js.map +1 -0
- package/dist/utils/task-progress.d.ts +8 -0
- package/dist/utils/task-progress.d.ts.map +1 -0
- package/dist/utils/task-progress.js +36 -0
- package/dist/utils/task-progress.js.map +1 -0
- package/docs/tasks.md +1 -1
- package/package.json +6 -2
- package/prompt/apply.md +17 -0
- package/prompt/archive.md +21 -0
- package/prompt/proposal.md +22 -0
- package/src/cli/index.ts +151 -16
- package/src/commands/archive.ts +302 -0
- package/src/commands/change.ts +292 -0
- package/src/commands/config.ts +233 -0
- package/src/commands/list.ts +176 -66
- package/src/commands/show.ts +138 -0
- package/src/commands/spec.ts +251 -0
- package/src/commands/validate.ts +326 -0
- package/src/core/artifact-graph/graph.ts +167 -0
- package/src/core/artifact-graph/index.ts +44 -0
- package/src/core/artifact-graph/instruction-loader.ts +302 -0
- package/src/core/artifact-graph/resolver.ts +226 -0
- package/src/core/artifact-graph/schema.ts +124 -0
- package/src/core/artifact-graph/state.ts +64 -0
- package/src/core/artifact-graph/types.ts +65 -0
- package/src/core/completions/command-registry.ts +382 -0
- package/src/core/completions/completion-provider.ts +128 -0
- package/src/core/completions/generators/bash-generator.ts +191 -0
- package/src/core/completions/generators/fish-generator.ts +188 -0
- package/src/core/completions/generators/powershell-generator.ts +223 -0
- package/src/core/completions/generators/zsh-generator.ts +281 -0
- package/src/core/completions/templates/bash-templates.ts +24 -0
- package/src/core/completions/templates/fish-templates.ts +40 -0
- package/src/core/completions/templates/powershell-templates.ts +25 -0
- package/src/core/completions/templates/zsh-templates.ts +36 -0
- package/src/core/completions/types.ts +90 -0
- package/src/core/config-schema.ts +230 -0
- package/src/core/config.ts +18 -0
- package/src/core/configurators/slash/antigravity.ts +6 -0
- package/src/core/configurators/slash/base.ts +1 -1
- package/src/core/configurators/slash/claude.ts +6 -0
- package/src/core/configurators/slash/codex.ts +6 -0
- package/src/core/configurators/slash/github-copilot.ts +6 -0
- package/src/core/configurators/slash/kilocode.ts +6 -0
- package/src/core/configurators/slash/opencode.ts +6 -0
- package/src/core/converters/json-converter.ts +62 -0
- package/src/core/global-config.ts +136 -0
- package/src/core/parsers/change-parser.ts +234 -0
- package/src/core/parsers/markdown-parser.ts +237 -0
- package/src/core/parsers/requirement-blocks.ts +234 -0
- package/src/core/prompt-templates.ts +69 -0
- package/src/core/schemas/base.schema.ts +20 -0
- package/src/core/schemas/change.schema.ts +42 -0
- package/src/core/schemas/index.ts +20 -0
- package/src/core/schemas/spec.schema.ts +17 -0
- package/src/core/specs-apply.ts +483 -0
- package/src/core/styles/palette.ts +8 -0
- package/src/core/templates/slash-command-templates.ts +7 -1
- package/src/core/validation/constants.ts +48 -0
- package/src/core/validation/types.ts +19 -0
- package/src/core/validation/validator.ts +449 -0
- package/src/core/view.ts +219 -0
- package/src/utils/change-metadata.ts +171 -0
- package/src/utils/change-utils.ts +131 -0
- package/src/utils/file-system.ts +252 -0
- package/src/utils/index.ts +12 -0
- package/src/utils/interactive.ts +29 -0
- package/src/utils/item-discovery.ts +66 -0
- package/src/utils/match.ts +26 -0
- package/src/utils/shell-detection.ts +62 -0
- package/src/utils/task-progress.ts +43 -0
- package/dist/commands/ai-humanizer.d.ts +0 -11
- package/dist/commands/ai-humanizer.d.ts.map +0 -1
- package/dist/commands/ai-humanizer.js +0 -97
- package/dist/commands/ai-humanizer.js.map +0 -1
- package/dist/commands/api-contract-generator.d.ts +0 -11
- package/dist/commands/api-contract-generator.d.ts.map +0 -1
- package/dist/commands/api-contract-generator.js +0 -97
- package/dist/commands/api-contract-generator.js.map +0 -1
- package/dist/commands/design-system.d.ts +0 -11
- package/dist/commands/design-system.d.ts.map +0 -1
- package/dist/commands/design-system.js +0 -97
- package/dist/commands/design-system.js.map +0 -1
- package/dist/commands/document-explainer.d.ts +0 -11
- package/dist/commands/document-explainer.d.ts.map +0 -1
- package/dist/commands/document-explainer.js +0 -97
- package/dist/commands/document-explainer.js.map +0 -1
- package/dist/commands/epic-generator.d.ts +0 -11
- package/dist/commands/epic-generator.d.ts.map +0 -1
- package/dist/commands/epic-generator.js +0 -97
- package/dist/commands/epic-generator.js.map +0 -1
- package/dist/commands/erd-generator.d.ts +0 -11
- package/dist/commands/erd-generator.d.ts.map +0 -1
- package/dist/commands/erd-generator.js +0 -97
- package/dist/commands/erd-generator.js.map +0 -1
- package/dist/commands/fsd-generator.d.ts +0 -11
- package/dist/commands/fsd-generator.d.ts.map +0 -1
- package/dist/commands/fsd-generator.js +0 -97
- package/dist/commands/fsd-generator.js.map +0 -1
- package/dist/commands/prd-agent-generator.d.ts +0 -11
- package/dist/commands/prd-agent-generator.d.ts.map +0 -1
- package/dist/commands/prd-agent-generator.js +0 -95
- package/dist/commands/prd-agent-generator.js.map +0 -1
- package/dist/commands/prd-generator.d.ts +0 -11
- package/dist/commands/prd-generator.d.ts.map +0 -1
- package/dist/commands/prd-generator.js +0 -97
- package/dist/commands/prd-generator.js.map +0 -1
- package/dist/commands/product-brief.d.ts +0 -11
- package/dist/commands/product-brief.d.ts.map +0 -1
- package/dist/commands/product-brief.js +0 -97
- package/dist/commands/product-brief.js.map +0 -1
- package/dist/commands/skill-creator.d.ts +0 -11
- package/dist/commands/skill-creator.d.ts.map +0 -1
- package/dist/commands/skill-creator.js +0 -101
- package/dist/commands/skill-creator.js.map +0 -1
- package/dist/commands/story-generator.d.ts +0 -11
- package/dist/commands/story-generator.d.ts.map +0 -1
- package/dist/commands/story-generator.js +0 -97
- package/dist/commands/story-generator.js.map +0 -1
- package/dist/commands/tdd-generator.d.ts +0 -11
- package/dist/commands/tdd-generator.d.ts.map +0 -1
- package/dist/commands/tdd-generator.js +0 -97
- package/dist/commands/tdd-generator.js.map +0 -1
- package/dist/commands/tdd-lite-generator.d.ts +0 -11
- package/dist/commands/tdd-lite-generator.d.ts.map +0 -1
- package/dist/commands/tdd-lite-generator.js +0 -97
- package/dist/commands/tdd-lite-generator.js.map +0 -1
- package/dist/commands/wireframe-generator.d.ts +0 -11
- package/dist/commands/wireframe-generator.d.ts.map +0 -1
- package/dist/commands/wireframe-generator.js +0 -97
- package/dist/commands/wireframe-generator.js.map +0 -1
- package/src/commands/ai-humanizer.ts +0 -118
- package/src/commands/api-contract-generator.ts +0 -118
- package/src/commands/design-system.ts +0 -118
- package/src/commands/document-explainer.ts +0 -118
- package/src/commands/epic-generator.ts +0 -118
- package/src/commands/erd-generator.ts +0 -118
- package/src/commands/fsd-generator.ts +0 -118
- package/src/commands/prd-agent-generator.ts +0 -115
- package/src/commands/prd-generator.ts +0 -118
- package/src/commands/product-brief.ts +0 -118
- package/src/commands/skill-creator.ts +0 -123
- package/src/commands/story-generator.ts +0 -118
- package/src/commands/tdd-generator.ts +0 -118
- package/src/commands/tdd-lite-generator.ts +0 -118
- package/src/commands/wireframe-generator.ts +0 -118
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static template strings for Bash completion scripts.
|
|
3
|
+
* These are Bash-specific helper functions that never change.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export const BASH_DYNAMIC_HELPERS = `# Dynamic completion helpers
|
|
7
|
+
|
|
8
|
+
_prompter_complete_changes() {
|
|
9
|
+
local changes
|
|
10
|
+
changes=$(prompter __complete changes 2>/dev/null | cut -f1)
|
|
11
|
+
COMPREPLY=($(compgen -W "$changes" -- "$cur"))
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
_prompter_complete_specs() {
|
|
15
|
+
local specs
|
|
16
|
+
specs=$(prompter __complete specs 2>/dev/null | cut -f1)
|
|
17
|
+
COMPREPLY=($(compgen -W "$specs" -- "$cur"))
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
_prompter_complete_items() {
|
|
21
|
+
local items
|
|
22
|
+
items=$(prompter __complete changes 2>/dev/null | cut -f1; prompter __complete specs 2>/dev/null | cut -f1)
|
|
23
|
+
COMPREPLY=($(compgen -W "$items" -- "$cur"))
|
|
24
|
+
}`;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static template strings for Fish completion scripts.
|
|
3
|
+
* These are Fish-specific helper functions that never change.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export const FISH_STATIC_HELPERS = `# Helper function to check if a subcommand is present
|
|
7
|
+
function __fish_prompter_using_subcommand
|
|
8
|
+
set -l cmd (commandline -opc)
|
|
9
|
+
set -e cmd[1]
|
|
10
|
+
for i in $argv
|
|
11
|
+
if contains -- $i $cmd
|
|
12
|
+
return 0
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
return 1
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
function __fish_prompter_no_subcommand
|
|
19
|
+
set -l cmd (commandline -opc)
|
|
20
|
+
test (count $cmd) -eq 1
|
|
21
|
+
end`;
|
|
22
|
+
|
|
23
|
+
export const FISH_DYNAMIC_HELPERS = `# Dynamic completion helpers
|
|
24
|
+
|
|
25
|
+
function __fish_prompter_changes
|
|
26
|
+
prompter __complete changes 2>/dev/null | while read -l id desc
|
|
27
|
+
printf '%s\\t%s\\n' "$id" "$desc"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
function __fish_prompter_specs
|
|
32
|
+
prompter __complete specs 2>/dev/null | while read -l id desc
|
|
33
|
+
printf '%s\\t%s\\n' "$id" "$desc"
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
function __fish_prompter_items
|
|
38
|
+
__fish_prompter_changes
|
|
39
|
+
__fish_prompter_specs
|
|
40
|
+
end`;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static template strings for PowerShell completion scripts.
|
|
3
|
+
* These are PowerShell-specific helper functions that never change.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export const POWERSHELL_DYNAMIC_HELPERS = `# Dynamic completion helpers
|
|
7
|
+
|
|
8
|
+
function Get-PrompterChanges {
|
|
9
|
+
$output = prompter __complete changes 2>$null
|
|
10
|
+
if ($output) {
|
|
11
|
+
$output | ForEach-Object {
|
|
12
|
+
($_ -split "\\t")[0]
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function Get-PrompterSpecs {
|
|
18
|
+
$output = prompter __complete specs 2>$null
|
|
19
|
+
if ($output) {
|
|
20
|
+
$output | ForEach-Object {
|
|
21
|
+
($_ -split "\\t")[0]
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static template strings for Zsh completion scripts.
|
|
3
|
+
* These are Zsh-specific helper functions that never change.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export const ZSH_DYNAMIC_HELPERS = `# Dynamic completion helpers
|
|
7
|
+
|
|
8
|
+
# Use prompter __complete to get available changes
|
|
9
|
+
_prompter_complete_changes() {
|
|
10
|
+
local -a changes
|
|
11
|
+
while IFS=$'\\t' read -r id desc; do
|
|
12
|
+
changes+=("$id:$desc")
|
|
13
|
+
done < <(prompter __complete changes 2>/dev/null)
|
|
14
|
+
_describe "change" changes
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
# Use prompter __complete to get available specs
|
|
18
|
+
_prompter_complete_specs() {
|
|
19
|
+
local -a specs
|
|
20
|
+
while IFS=$'\\t' read -r id desc; do
|
|
21
|
+
specs+=("$id:$desc")
|
|
22
|
+
done < <(prompter __complete specs 2>/dev/null)
|
|
23
|
+
_describe "spec" specs
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
# Get both changes and specs
|
|
27
|
+
_prompter_complete_items() {
|
|
28
|
+
local -a items
|
|
29
|
+
while IFS=$'\\t' read -r id desc; do
|
|
30
|
+
items+=("$id:$desc")
|
|
31
|
+
done < <(prompter __complete changes 2>/dev/null)
|
|
32
|
+
while IFS=$'\\t' read -r id desc; do
|
|
33
|
+
items+=("$id:$desc")
|
|
34
|
+
done < <(prompter __complete specs 2>/dev/null)
|
|
35
|
+
_describe "item" items
|
|
36
|
+
}`;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { SupportedShell } from '../../utils/shell-detection.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Definition of a command-line flag/option
|
|
5
|
+
*/
|
|
6
|
+
export interface FlagDefinition {
|
|
7
|
+
/**
|
|
8
|
+
* Flag name without dashes (e.g., "json", "strict", "no-interactive")
|
|
9
|
+
*/
|
|
10
|
+
name: string;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Short flag name without dash (e.g., "y" for "-y")
|
|
14
|
+
*/
|
|
15
|
+
short?: string;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Human-readable description of what the flag does
|
|
19
|
+
*/
|
|
20
|
+
description: string;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Whether the flag takes an argument value
|
|
24
|
+
*/
|
|
25
|
+
takesValue?: boolean;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Possible values for the flag (for completion suggestions)
|
|
29
|
+
*/
|
|
30
|
+
values?: string[];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Definition of a CLI command
|
|
35
|
+
*/
|
|
36
|
+
export interface CommandDefinition {
|
|
37
|
+
/**
|
|
38
|
+
* Command name (e.g., "init", "validate", "show")
|
|
39
|
+
*/
|
|
40
|
+
name: string;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Human-readable description of the command
|
|
44
|
+
*/
|
|
45
|
+
description: string;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Flags/options supported by this command
|
|
49
|
+
*/
|
|
50
|
+
flags: FlagDefinition[];
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Subcommands (e.g., "change show", "spec validate")
|
|
54
|
+
*/
|
|
55
|
+
subcommands?: CommandDefinition[];
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Whether this command accepts a positional argument (e.g., item name, path)
|
|
59
|
+
*/
|
|
60
|
+
acceptsPositional?: boolean;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Type of positional argument for dynamic completion
|
|
64
|
+
* - 'change-id': Complete with active change IDs
|
|
65
|
+
* - 'spec-id': Complete with spec IDs
|
|
66
|
+
* - 'change-or-spec-id': Complete with both changes and specs
|
|
67
|
+
* - 'path': Complete with file paths
|
|
68
|
+
* - 'shell': Complete with supported shell names
|
|
69
|
+
* - undefined: No specific completion
|
|
70
|
+
*/
|
|
71
|
+
positionalType?: 'change-id' | 'spec-id' | 'change-or-spec-id' | 'path' | 'shell';
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Interface for shell-specific completion script generators
|
|
76
|
+
*/
|
|
77
|
+
export interface CompletionGenerator {
|
|
78
|
+
/**
|
|
79
|
+
* The shell type this generator targets
|
|
80
|
+
*/
|
|
81
|
+
readonly shell: SupportedShell;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Generate the completion script content
|
|
85
|
+
*
|
|
86
|
+
* @param commands - Command definitions to generate completions for
|
|
87
|
+
* @returns The shell-specific completion script as a string
|
|
88
|
+
*/
|
|
89
|
+
generate(commands: CommandDefinition[]): string;
|
|
90
|
+
}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Zod schema for global Prompter configuration.
|
|
5
|
+
* Uses passthrough() to preserve unknown fields for forward compatibility.
|
|
6
|
+
*/
|
|
7
|
+
export const GlobalConfigSchema = z
|
|
8
|
+
.object({
|
|
9
|
+
featureFlags: z
|
|
10
|
+
.record(z.string(), z.boolean())
|
|
11
|
+
.optional()
|
|
12
|
+
.default({}),
|
|
13
|
+
})
|
|
14
|
+
.passthrough();
|
|
15
|
+
|
|
16
|
+
export type GlobalConfigType = z.infer<typeof GlobalConfigSchema>;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Default configuration values.
|
|
20
|
+
*/
|
|
21
|
+
export const DEFAULT_CONFIG: GlobalConfigType = {
|
|
22
|
+
featureFlags: {},
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const KNOWN_TOP_LEVEL_KEYS = new Set(Object.keys(DEFAULT_CONFIG));
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Validate a config key path for CLI set operations.
|
|
29
|
+
* Unknown top-level keys are rejected unless explicitly allowed by the caller.
|
|
30
|
+
*/
|
|
31
|
+
export function validateConfigKeyPath(path: string): { valid: boolean; reason?: string } {
|
|
32
|
+
const rawKeys = path.split('.');
|
|
33
|
+
|
|
34
|
+
if (rawKeys.length === 0 || rawKeys.some((key) => key.trim() === '')) {
|
|
35
|
+
return { valid: false, reason: 'Key path must not be empty' };
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const rootKey = rawKeys[0];
|
|
39
|
+
if (!KNOWN_TOP_LEVEL_KEYS.has(rootKey)) {
|
|
40
|
+
return { valid: false, reason: `Unknown top-level key "${rootKey}"` };
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (rootKey === 'featureFlags') {
|
|
44
|
+
if (rawKeys.length > 2) {
|
|
45
|
+
return { valid: false, reason: 'featureFlags values are booleans and do not support nested keys' };
|
|
46
|
+
}
|
|
47
|
+
return { valid: true };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (rawKeys.length > 1) {
|
|
51
|
+
return { valid: false, reason: `"${rootKey}" does not support nested keys` };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return { valid: true };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Get a nested value from an object using dot notation.
|
|
59
|
+
*
|
|
60
|
+
* @param obj - The object to access
|
|
61
|
+
* @param path - Dot-separated path (e.g., "featureFlags.someFlag")
|
|
62
|
+
* @returns The value at the path, or undefined if not found
|
|
63
|
+
*/
|
|
64
|
+
export function getNestedValue(obj: Record<string, unknown>, path: string): unknown {
|
|
65
|
+
const keys = path.split('.');
|
|
66
|
+
let current: unknown = obj;
|
|
67
|
+
|
|
68
|
+
for (const key of keys) {
|
|
69
|
+
if (current === null || current === undefined) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
if (typeof current !== 'object') {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
current = (current as Record<string, unknown>)[key];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return current;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Set a nested value in an object using dot notation.
|
|
83
|
+
* Creates intermediate objects as needed.
|
|
84
|
+
*
|
|
85
|
+
* @param obj - The object to modify (mutated in place)
|
|
86
|
+
* @param path - Dot-separated path (e.g., "featureFlags.someFlag")
|
|
87
|
+
* @param value - The value to set
|
|
88
|
+
*/
|
|
89
|
+
export function setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): void {
|
|
90
|
+
const keys = path.split('.');
|
|
91
|
+
let current: Record<string, unknown> = obj;
|
|
92
|
+
|
|
93
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
94
|
+
const key = keys[i];
|
|
95
|
+
if (current[key] === undefined || current[key] === null || typeof current[key] !== 'object') {
|
|
96
|
+
current[key] = {};
|
|
97
|
+
}
|
|
98
|
+
current = current[key] as Record<string, unknown>;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const lastKey = keys[keys.length - 1];
|
|
102
|
+
current[lastKey] = value;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Delete a nested value from an object using dot notation.
|
|
107
|
+
*
|
|
108
|
+
* @param obj - The object to modify (mutated in place)
|
|
109
|
+
* @param path - Dot-separated path (e.g., "featureFlags.someFlag")
|
|
110
|
+
* @returns true if the key existed and was deleted, false otherwise
|
|
111
|
+
*/
|
|
112
|
+
export function deleteNestedValue(obj: Record<string, unknown>, path: string): boolean {
|
|
113
|
+
const keys = path.split('.');
|
|
114
|
+
let current: Record<string, unknown> = obj;
|
|
115
|
+
|
|
116
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
117
|
+
const key = keys[i];
|
|
118
|
+
if (current[key] === undefined || current[key] === null || typeof current[key] !== 'object') {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
current = current[key] as Record<string, unknown>;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const lastKey = keys[keys.length - 1];
|
|
125
|
+
if (lastKey in current) {
|
|
126
|
+
delete current[lastKey];
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Coerce a string value to its appropriate type.
|
|
134
|
+
* - "true" / "false" -> boolean
|
|
135
|
+
* - Numeric strings -> number
|
|
136
|
+
* - Everything else -> string
|
|
137
|
+
*
|
|
138
|
+
* @param value - The string value to coerce
|
|
139
|
+
* @param forceString - If true, always return the value as a string
|
|
140
|
+
* @returns The coerced value
|
|
141
|
+
*/
|
|
142
|
+
export function coerceValue(value: string, forceString: boolean = false): string | number | boolean {
|
|
143
|
+
if (forceString) {
|
|
144
|
+
return value;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Boolean coercion
|
|
148
|
+
if (value === 'true') {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
if (value === 'false') {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Number coercion - must be a valid finite number
|
|
156
|
+
const num = Number(value);
|
|
157
|
+
if (!isNaN(num) && isFinite(num) && value.trim() !== '') {
|
|
158
|
+
return num;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return value;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Format a value for YAML-like display.
|
|
166
|
+
*
|
|
167
|
+
* @param value - The value to format
|
|
168
|
+
* @param indent - Current indentation level
|
|
169
|
+
* @returns Formatted string
|
|
170
|
+
*/
|
|
171
|
+
export function formatValueYaml(value: unknown, indent: number = 0): string {
|
|
172
|
+
const indentStr = ' '.repeat(indent);
|
|
173
|
+
|
|
174
|
+
if (value === null || value === undefined) {
|
|
175
|
+
return 'null';
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (typeof value === 'boolean' || typeof value === 'number') {
|
|
179
|
+
return String(value);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
if (typeof value === 'string') {
|
|
183
|
+
return value;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (Array.isArray(value)) {
|
|
187
|
+
if (value.length === 0) {
|
|
188
|
+
return '[]';
|
|
189
|
+
}
|
|
190
|
+
return value.map((item) => `${indentStr}- ${formatValueYaml(item, indent + 1)}`).join('\n');
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
if (typeof value === 'object') {
|
|
194
|
+
const entries = Object.entries(value as Record<string, unknown>);
|
|
195
|
+
if (entries.length === 0) {
|
|
196
|
+
return '{}';
|
|
197
|
+
}
|
|
198
|
+
return entries
|
|
199
|
+
.map(([key, val]) => {
|
|
200
|
+
const formattedVal = formatValueYaml(val, indent + 1);
|
|
201
|
+
if (typeof val === 'object' && val !== null && Object.keys(val).length > 0) {
|
|
202
|
+
return `${indentStr}${key}:\n${formattedVal}`;
|
|
203
|
+
}
|
|
204
|
+
return `${indentStr}${key}: ${formattedVal}`;
|
|
205
|
+
})
|
|
206
|
+
.join('\n');
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return String(value);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Validate a configuration object against the schema.
|
|
214
|
+
*
|
|
215
|
+
* @param config - The configuration to validate
|
|
216
|
+
* @returns Validation result with success status and optional error message
|
|
217
|
+
*/
|
|
218
|
+
export function validateConfig(config: unknown): { success: boolean; error?: string } {
|
|
219
|
+
try {
|
|
220
|
+
GlobalConfigSchema.parse(config);
|
|
221
|
+
return { success: true };
|
|
222
|
+
} catch (error) {
|
|
223
|
+
if (error instanceof z.ZodError) {
|
|
224
|
+
const zodError = error as z.ZodError;
|
|
225
|
+
const messages = zodError.issues.map((e) => `${e.path.join('.')}: ${e.message}`);
|
|
226
|
+
return { success: false, error: messages.join('; ') };
|
|
227
|
+
}
|
|
228
|
+
return { success: false, error: 'Unknown validation error' };
|
|
229
|
+
}
|
|
230
|
+
}
|
package/src/core/config.ts
CHANGED
|
@@ -44,6 +44,18 @@ export const AVAILABLE_PROMPTS: PromptChoice[] = [
|
|
|
44
44
|
description: 'Generate OpenAPI specification from FSD and ERD',
|
|
45
45
|
sourceFile: 'api-contract-generator.md'
|
|
46
46
|
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Apply',
|
|
49
|
+
value: 'apply',
|
|
50
|
+
description: 'Implement and apply an approved change proposal',
|
|
51
|
+
sourceFile: 'apply.md'
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'Archive',
|
|
55
|
+
value: 'archive',
|
|
56
|
+
description: 'Archive a completed change and update specs',
|
|
57
|
+
sourceFile: 'archive.md'
|
|
58
|
+
},
|
|
47
59
|
{
|
|
48
60
|
name: 'Design System',
|
|
49
61
|
value: 'design-system',
|
|
@@ -98,6 +110,12 @@ export const AVAILABLE_PROMPTS: PromptChoice[] = [
|
|
|
98
110
|
description: 'Create concise product brief documents',
|
|
99
111
|
sourceFile: 'product-brief.md'
|
|
100
112
|
},
|
|
113
|
+
{
|
|
114
|
+
name: 'Proposal',
|
|
115
|
+
value: 'proposal',
|
|
116
|
+
description: 'Create a new change proposal with spec deltas',
|
|
117
|
+
sourceFile: 'proposal.md'
|
|
118
|
+
},
|
|
101
119
|
{
|
|
102
120
|
name: 'QA Test Scenario',
|
|
103
121
|
value: 'qa-test-scenario',
|
|
@@ -14,9 +14,12 @@ const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
|
14
14
|
'skill-creator': '.agent/workflows/skill-creator.md',
|
|
15
15
|
'ai-humanizer': '.agent/workflows/ai-humanizer.md',
|
|
16
16
|
'api-contract-generator': '.agent/workflows/api-contract-generator.md',
|
|
17
|
+
'apply': '.agent/workflows/apply.md',
|
|
18
|
+
'archive': '.agent/workflows/archive.md',
|
|
17
19
|
'design-system': '.agent/workflows/design-system.md',
|
|
18
20
|
'erd-generator': '.agent/workflows/erd-generator.md',
|
|
19
21
|
'fsd-generator': '.agent/workflows/fsd-generator.md',
|
|
22
|
+
'proposal': '.agent/workflows/proposal.md',
|
|
20
23
|
'tdd-generator': '.agent/workflows/tdd-generator.md',
|
|
21
24
|
'tdd-lite-generator': '.agent/workflows/tdd-lite-generator.md',
|
|
22
25
|
'wireframe-generator': '.agent/workflows/wireframe-generator.md',
|
|
@@ -36,9 +39,12 @@ const DESCRIPTIONS: Record<SlashCommandId, string> = {
|
|
|
36
39
|
'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
|
|
37
40
|
'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
|
|
38
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',
|
|
39
44
|
'design-system': 'Generate comprehensive design system documentation for components and tokens',
|
|
40
45
|
'erd-generator': 'Generate Entity Relationship Diagram from FSD',
|
|
41
46
|
'fsd-generator': 'Generate Functional Specification Document from PRD',
|
|
47
|
+
'proposal': 'Create a new change proposal with spec deltas',
|
|
42
48
|
'tdd-generator': 'Generate comprehensive Technical Design Document',
|
|
43
49
|
'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
|
|
44
50
|
'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
|
|
@@ -9,7 +9,7 @@ export interface SlashCommandTarget {
|
|
|
9
9
|
kind: 'slash';
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
const ALL_COMMANDS: SlashCommandId[] = ['enhance', 'prd-generator', 'prd-agent-generator', 'product-brief', 'epic-single', 'epic-generator', 'story-single', 'story-generator', 'qa-test-scenario', 'skill-creator', 'ai-humanizer', 'api-contract-generator', 'design-system', 'erd-generator', 'fsd-generator', 'tdd-generator', 'tdd-lite-generator', 'wireframe-generator', 'document-explainer'];
|
|
12
|
+
const ALL_COMMANDS: SlashCommandId[] = ['enhance', 'prd-generator', 'prd-agent-generator', 'product-brief', 'epic-single', 'epic-generator', 'story-single', 'story-generator', 'qa-test-scenario', 'skill-creator', 'ai-humanizer', 'api-contract-generator', 'apply', 'archive', 'design-system', 'erd-generator', 'fsd-generator', 'proposal', 'tdd-generator', 'tdd-lite-generator', 'wireframe-generator', 'document-explainer'];
|
|
13
13
|
|
|
14
14
|
export abstract class SlashCommandConfigurator {
|
|
15
15
|
abstract readonly toolId: string;
|
|
@@ -14,9 +14,12 @@ const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
|
14
14
|
'skill-creator': '.claude/commands/prompter/skill-creator.md',
|
|
15
15
|
'ai-humanizer': '.claude/commands/prompter/ai-humanizer.md',
|
|
16
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',
|
|
17
19
|
'design-system': '.claude/commands/prompter/design-system.md',
|
|
18
20
|
'erd-generator': '.claude/commands/prompter/erd-generator.md',
|
|
19
21
|
'fsd-generator': '.claude/commands/prompter/fsd-generator.md',
|
|
22
|
+
'proposal': '.claude/commands/prompter/proposal.md',
|
|
20
23
|
'tdd-generator': '.claude/commands/prompter/tdd-generator.md',
|
|
21
24
|
'tdd-lite-generator': '.claude/commands/prompter/tdd-lite-generator.md',
|
|
22
25
|
'wireframe-generator': '.claude/commands/prompter/wireframe-generator.md',
|
|
@@ -36,9 +39,12 @@ const DESCRIPTIONS: Record<SlashCommandId, string> = {
|
|
|
36
39
|
'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
|
|
37
40
|
'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
|
|
38
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',
|
|
39
44
|
'design-system': 'Generate comprehensive design system documentation for components and tokens',
|
|
40
45
|
'erd-generator': 'Generate Entity Relationship Diagram from FSD',
|
|
41
46
|
'fsd-generator': 'Generate Functional Specification Document from PRD',
|
|
47
|
+
'proposal': 'Create a new change proposal with spec deltas',
|
|
42
48
|
'tdd-generator': 'Generate comprehensive Technical Design Document',
|
|
43
49
|
'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
|
|
44
50
|
'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
|
|
@@ -14,9 +14,12 @@ const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
|
14
14
|
'skill-creator': '.codex/prompts/skill-creator.md',
|
|
15
15
|
'ai-humanizer': '.codex/prompts/ai-humanizer.md',
|
|
16
16
|
'api-contract-generator': '.codex/prompts/api-contract-generator.md',
|
|
17
|
+
'apply': '.codex/prompts/apply.md',
|
|
18
|
+
'archive': '.codex/prompts/archive.md',
|
|
17
19
|
'design-system': '.codex/prompts/design-system.md',
|
|
18
20
|
'erd-generator': '.codex/prompts/erd-generator.md',
|
|
19
21
|
'fsd-generator': '.codex/prompts/fsd-generator.md',
|
|
22
|
+
'proposal': '.codex/prompts/proposal.md',
|
|
20
23
|
'tdd-generator': '.codex/prompts/tdd-generator.md',
|
|
21
24
|
'tdd-lite-generator': '.codex/prompts/tdd-lite-generator.md',
|
|
22
25
|
'wireframe-generator': '.codex/prompts/wireframe-generator.md',
|
|
@@ -36,9 +39,12 @@ const DESCRIPTIONS: Record<SlashCommandId, string> = {
|
|
|
36
39
|
'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
|
|
37
40
|
'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
|
|
38
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',
|
|
39
44
|
'design-system': 'Generate comprehensive design system documentation for components and tokens',
|
|
40
45
|
'erd-generator': 'Generate Entity Relationship Diagram from FSD',
|
|
41
46
|
'fsd-generator': 'Generate Functional Specification Document from PRD',
|
|
47
|
+
'proposal': 'Create a new change proposal with spec deltas',
|
|
42
48
|
'tdd-generator': 'Generate comprehensive Technical Design Document',
|
|
43
49
|
'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
|
|
44
50
|
'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
|
|
@@ -17,9 +17,12 @@ const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
|
17
17
|
'skill-creator': '.github/prompts/skill-creator.prompt.md',
|
|
18
18
|
'ai-humanizer': '.github/prompts/ai-humanizer.prompt.md',
|
|
19
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',
|
|
20
22
|
'design-system': '.github/prompts/design-system.prompt.md',
|
|
21
23
|
'erd-generator': '.github/prompts/erd-generator.prompt.md',
|
|
22
24
|
'fsd-generator': '.github/prompts/fsd-generator.prompt.md',
|
|
25
|
+
'proposal': '.github/prompts/proposal.prompt.md',
|
|
23
26
|
'tdd-generator': '.github/prompts/tdd-generator.prompt.md',
|
|
24
27
|
'tdd-lite-generator': '.github/prompts/tdd-lite-generator.prompt.md',
|
|
25
28
|
'wireframe-generator': '.github/prompts/wireframe-generator.prompt.md',
|
|
@@ -39,9 +42,12 @@ const DESCRIPTIONS: Record<SlashCommandId, string> = {
|
|
|
39
42
|
'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
|
|
40
43
|
'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
|
|
41
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',
|
|
42
47
|
'design-system': 'Generate comprehensive design system documentation for components and tokens',
|
|
43
48
|
'erd-generator': 'Generate Entity Relationship Diagram from FSD',
|
|
44
49
|
'fsd-generator': 'Generate Functional Specification Document from PRD',
|
|
50
|
+
'proposal': 'Create a new change proposal with spec deltas',
|
|
45
51
|
'tdd-generator': 'Generate comprehensive Technical Design Document',
|
|
46
52
|
'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
|
|
47
53
|
'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
|
|
@@ -14,9 +14,12 @@ const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
|
14
14
|
'skill-creator': '.kilocode/workflows/skill-creator.md',
|
|
15
15
|
'ai-humanizer': '.kilocode/workflows/ai-humanizer.md',
|
|
16
16
|
'api-contract-generator': '.kilocode/workflows/api-contract-generator.md',
|
|
17
|
+
'apply': '.kilocode/workflows/apply.md',
|
|
18
|
+
'archive': '.kilocode/workflows/archive.md',
|
|
17
19
|
'design-system': '.kilocode/workflows/design-system.md',
|
|
18
20
|
'erd-generator': '.kilocode/workflows/erd-generator.md',
|
|
19
21
|
'fsd-generator': '.kilocode/workflows/fsd-generator.md',
|
|
22
|
+
'proposal': '.kilocode/workflows/proposal.md',
|
|
20
23
|
'tdd-generator': '.kilocode/workflows/tdd-generator.md',
|
|
21
24
|
'tdd-lite-generator': '.kilocode/workflows/tdd-lite-generator.md',
|
|
22
25
|
'wireframe-generator': '.kilocode/workflows/wireframe-generator.md',
|
|
@@ -36,9 +39,12 @@ const DESCRIPTIONS: Record<SlashCommandId, string> = {
|
|
|
36
39
|
'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
|
|
37
40
|
'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
|
|
38
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',
|
|
39
44
|
'design-system': 'Generate comprehensive design system documentation for components and tokens',
|
|
40
45
|
'erd-generator': 'Generate Entity Relationship Diagram from FSD',
|
|
41
46
|
'fsd-generator': 'Generate Functional Specification Document from PRD',
|
|
47
|
+
'proposal': 'Create a new change proposal with spec deltas',
|
|
42
48
|
'tdd-generator': 'Generate comprehensive Technical Design Document',
|
|
43
49
|
'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
|
|
44
50
|
'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
|
|
@@ -14,9 +14,12 @@ const FILE_PATHS: Record<SlashCommandId, string> = {
|
|
|
14
14
|
'skill-creator': '.opencode/command/skill-creator.md',
|
|
15
15
|
'ai-humanizer': '.opencode/command/ai-humanizer.md',
|
|
16
16
|
'api-contract-generator': '.opencode/command/api-contract-generator.md',
|
|
17
|
+
'apply': '.opencode/command/apply.md',
|
|
18
|
+
'archive': '.opencode/command/archive.md',
|
|
17
19
|
'design-system': '.opencode/command/design-system.md',
|
|
18
20
|
'erd-generator': '.opencode/command/erd-generator.md',
|
|
19
21
|
'fsd-generator': '.opencode/command/fsd-generator.md',
|
|
22
|
+
'proposal': '.opencode/command/proposal.md',
|
|
20
23
|
'tdd-generator': '.opencode/command/tdd-generator.md',
|
|
21
24
|
'tdd-lite-generator': '.opencode/command/tdd-lite-generator.md',
|
|
22
25
|
'wireframe-generator': '.opencode/command/wireframe-generator.md',
|
|
@@ -36,9 +39,12 @@ const DESCRIPTIONS: Record<SlashCommandId, string> = {
|
|
|
36
39
|
'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
|
|
37
40
|
'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
|
|
38
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',
|
|
39
44
|
'design-system': 'Generate comprehensive design system documentation for components and tokens',
|
|
40
45
|
'erd-generator': 'Generate Entity Relationship Diagram from FSD',
|
|
41
46
|
'fsd-generator': 'Generate Functional Specification Document from PRD',
|
|
47
|
+
'proposal': 'Create a new change proposal with spec deltas',
|
|
42
48
|
'tdd-generator': 'Generate comprehensive Technical Design Document',
|
|
43
49
|
'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
|
|
44
50
|
'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
|