@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,180 +0,0 @@
|
|
|
1
|
-
# Caddy Setup on a VPS (Step-by-Step)
|
|
2
|
-
|
|
3
|
-
This guide walks you through installing and managing Caddy as a reverse proxy on a Ubuntu/Debian VPS. Caddy automatically handles HTTPS for all your domains — no manual SSL certificate setup needed.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Prerequisites
|
|
8
|
-
|
|
9
|
-
Before starting, make sure:
|
|
10
|
-
|
|
11
|
-
1. You have a VPS running **Ubuntu 22.04 or Debian 12** (or newer).
|
|
12
|
-
2. You have SSH access to the VPS as a user with `sudo` privileges.
|
|
13
|
-
3. Your domain's **A record points to your VPS IP address** (set this in your domain registrar's DNS panel). DNS changes can take up to 30 minutes to propagate.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Step 1: Connect to Your VPS
|
|
18
|
-
|
|
19
|
-
Open a terminal and connect via SSH:
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
ssh your-user@your-vps-ip
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Step 2: Install Caddy
|
|
28
|
-
|
|
29
|
-
Run these commands one by one:
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
|
|
33
|
-
|
|
34
|
-
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
|
|
35
|
-
| sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
|
36
|
-
|
|
37
|
-
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
|
|
38
|
-
| sudo tee /etc/apt/sources.list.d/caddy-stable.list
|
|
39
|
-
|
|
40
|
-
sudo apt update && sudo apt install caddy
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Verify the install:
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
caddy version
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
You should see a version number like `v2.x.x`.
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## Step 3: Check That Caddy Is Running
|
|
54
|
-
|
|
55
|
-
Caddy starts automatically after install. Confirm it's active:
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
sudo systemctl status caddy
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Look for `Active: active (running)`. If it's not running, start it:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
sudo systemctl start caddy
|
|
65
|
-
sudo systemctl enable caddy # make it start on boot
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Step 4: Open Firewall Ports
|
|
71
|
-
|
|
72
|
-
Allow HTTP and HTTPS traffic:
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
sudo ufw allow 80
|
|
76
|
-
sudo ufw allow 443
|
|
77
|
-
sudo ufw allow 22 # keep SSH open
|
|
78
|
-
sudo ufw enable
|
|
79
|
-
sudo ufw status
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Step 5: Configure Your First Domain
|
|
85
|
-
|
|
86
|
-
The Caddy config file lives at `/etc/caddy/Caddyfile`. Open it:
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
sudo nano /etc/caddy/Caddyfile
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Replace the default content with:
|
|
93
|
-
|
|
94
|
-
```caddy
|
|
95
|
-
your-domain.com {
|
|
96
|
-
reverse_proxy localhost:3001
|
|
97
|
-
}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
> Replace `your-domain.com` with your actual domain, and `3001` with the port your app is running on.
|
|
101
|
-
|
|
102
|
-
Save and close: press `Ctrl+X`, then `Y`, then `Enter`.
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## Step 6: Reload Caddy
|
|
107
|
-
|
|
108
|
-
Apply the new config without downtime:
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
sudo systemctl reload caddy
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
Caddy will automatically obtain an SSL certificate for your domain. Visit `https://your-domain.com` — it should work with HTTPS out of the box.
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## Adding a New Project Later
|
|
119
|
-
|
|
120
|
-
When you deploy a new project on the same VPS, just add a new block to the Caddyfile:
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
sudo nano /etc/caddy/Caddyfile
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
Add below the existing block:
|
|
127
|
-
|
|
128
|
-
```caddy
|
|
129
|
-
your-domain.com {
|
|
130
|
-
reverse_proxy localhost:3001
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
another-project.com {
|
|
134
|
-
reverse_proxy localhost:3002
|
|
135
|
-
}
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
Then reload:
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
sudo systemctl reload caddy
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
Each project gets its own SSL certificate automatically.
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Common Commands
|
|
149
|
-
|
|
150
|
-
| Task | Command |
|
|
151
|
-
|------|---------|
|
|
152
|
-
| Check Caddy status | `sudo systemctl status caddy` |
|
|
153
|
-
| Reload after config change | `sudo systemctl reload caddy` |
|
|
154
|
-
| Restart Caddy | `sudo systemctl restart caddy` |
|
|
155
|
-
| View live logs | `sudo journalctl -u caddy -f` |
|
|
156
|
-
| Validate config before reload | `caddy validate --config /etc/caddy/Caddyfile` |
|
|
157
|
-
| View current config | `cat /etc/caddy/Caddyfile` |
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## Troubleshooting
|
|
162
|
-
|
|
163
|
-
**HTTPS not working / certificate error**
|
|
164
|
-
- Check that your domain's A record points to the VPS IP: `dig your-domain.com`
|
|
165
|
-
- Make sure ports 80 and 443 are open: `sudo ufw status`
|
|
166
|
-
- Check Caddy logs for errors: `sudo journalctl -u caddy -f`
|
|
167
|
-
|
|
168
|
-
**502 Bad Gateway**
|
|
169
|
-
- Your app is not running or not listening on the expected port.
|
|
170
|
-
- Check that your Docker containers are up: `docker compose ps`
|
|
171
|
-
- Verify the port in your Caddyfile matches the port your app exposes.
|
|
172
|
-
|
|
173
|
-
**Port already in use**
|
|
174
|
-
- Another process (e.g., Apache or Nginx) may be using port 80/443.
|
|
175
|
-
- Check: `sudo ss -tlnp | grep -E ':80|:443'`
|
|
176
|
-
- Stop the conflicting service: `sudo systemctl stop nginx` or `sudo systemctl stop apache2`
|
|
177
|
-
|
|
178
|
-
**Config change not taking effect**
|
|
179
|
-
- Always run `sudo systemctl reload caddy` after editing the Caddyfile.
|
|
180
|
-
- Validate first to catch syntax errors: `caddy validate --config /etc/caddy/Caddyfile`
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# Project Plan: [Project Name]
|
|
2
|
-
|
|
3
|
-
## Project Overview
|
|
4
|
-
[1-2 sentence summary of the project, its purpose, and target audience]
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## MVP Scope
|
|
9
|
-
|
|
10
|
-
### In Scope
|
|
11
|
-
- [ ] [Feature 1]
|
|
12
|
-
- [ ] [Feature 2]
|
|
13
|
-
- [ ] [Feature 3]
|
|
14
|
-
|
|
15
|
-
### Out of Scope (Deferred)
|
|
16
|
-
- [Deferred item 1] -- [reason]
|
|
17
|
-
- [Deferred item 2] -- [reason]
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## User Roles
|
|
22
|
-
| Role | Description | MVP? |
|
|
23
|
-
|------|-------------|------|
|
|
24
|
-
| [Role] | [What they do] | Yes/No |
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Core Features (Prioritized)
|
|
29
|
-
| # | Feature | Priority | Complexity | Notes |
|
|
30
|
-
|---|---------|----------|------------|-------|
|
|
31
|
-
| 1 | [Feature] | Must-have | [Low/Med/High] | [Notes] |
|
|
32
|
-
| 2 | [Feature] | Must-have | [Low/Med/High] | [Notes] |
|
|
33
|
-
| 3 | [Feature] | Nice-to-have | [Low/Med/High] | [Notes] |
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## Data Model Sketch
|
|
38
|
-
|
|
39
|
-
### Core Entities
|
|
40
|
-
- **[Entity 1]**: [key fields]
|
|
41
|
-
- **[Entity 2]**: [key fields]
|
|
42
|
-
- **[Entity 3]**: [key fields]
|
|
43
|
-
|
|
44
|
-
### Key Relationships
|
|
45
|
-
- [Entity A] has many [Entity B]
|
|
46
|
-
- [Entity B] belongs to [Entity A]
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## Integrations & Services
|
|
51
|
-
|
|
52
|
-
| Capability | Needed? | Service/Tool | Notes |
|
|
53
|
-
|------------|---------|--------------|-------|
|
|
54
|
-
| Caching | Yes/No | [e.g., Redis] | [Notes] |
|
|
55
|
-
| Queues / Background Jobs | Yes/No | [e.g., Redis Queue] | [Notes] |
|
|
56
|
-
| Real-Time | Yes/No | [e.g., Pusher, WebSockets] | [Notes] |
|
|
57
|
-
| Full-Text Search | Yes/No | [e.g., Meilisearch] | [Notes] |
|
|
58
|
-
| File Storage | Yes/No | [e.g., S3] | [Notes] |
|
|
59
|
-
| Email / SMS | Yes/No | [e.g., Resend, Twilio] | [Notes] |
|
|
60
|
-
| Analytics | Yes/No | [e.g., PostHog, Plausible] | [Notes] |
|
|
61
|
-
| Payments | Yes/No | [e.g., Stripe] | [Notes] |
|
|
62
|
-
| Third-Party | Yes/No | [e.g., social login, maps] | [Notes] |
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Tech Stack
|
|
67
|
-
|
|
68
|
-
| Layer | Choice | Rationale |
|
|
69
|
-
|-------|--------|-----------|
|
|
70
|
-
| Frontend | [e.g., Next.js] | [Why] |
|
|
71
|
-
| Backend | [e.g., NestJS / Convex] | [Why] |
|
|
72
|
-
| ORM / DB Layer | [e.g., Drizzle / Convex built-in] | [Why] |
|
|
73
|
-
| Database | [e.g., PostgreSQL / Convex document DB] | [Why] |
|
|
74
|
-
| Convex Hosting | [Cloud / Self-Hosted] | [Why -- only include if using Convex] |
|
|
75
|
-
| Convex Storage Backend | [SQLite / PostgreSQL -- only include if self-hosted Convex] | [Why -- SQLite for dev/hobby; Postgres for production] |
|
|
76
|
-
| Styling | [e.g., Tailwind CSS] | [Why] |
|
|
77
|
-
| Web Server | [e.g., Caddy] | [Why -- include when Docker is used] |
|
|
78
|
-
| Docker | Yes/No | [Why] |
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Deployment & Environments
|
|
83
|
-
|
|
84
|
-
| Environment | Platform | URL (if known) | Notes |
|
|
85
|
-
|-------------|----------|----------------|-------|
|
|
86
|
-
| Development | [e.g., Local + Docker] | localhost | |
|
|
87
|
-
| Staging | [e.g., Railway] | [TBD] | |
|
|
88
|
-
| Production | [e.g., VPS / DigitalOcean] | [TBD] | |
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Non-Functional Requirements
|
|
93
|
-
|
|
94
|
-
| Requirement | Detail |
|
|
95
|
-
|-------------|--------|
|
|
96
|
-
| Security | [e.g., standard auth, 2FA, GDPR] |
|
|
97
|
-
| Performance | [e.g., <1k users expected] |
|
|
98
|
-
| SEO | [e.g., required / not required] |
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## Open Questions / Risks
|
|
103
|
-
- [Open question or risk 1]
|
|
104
|
-
- [Open question or risk 2]
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
## Recommended Next Steps
|
|
109
|
-
|
|
110
|
-
### 1. Scaffold the project
|
|
111
|
-
```bash
|
|
112
|
-
# [Insert the exact setup command(s) for the chosen stack]
|
|
113
|
-
# React (Vite): npm create vite@latest
|
|
114
|
-
# Next.js: npx create-next-app@latest {project_name} --yes
|
|
115
|
-
# React + Convex: npm create convex@latest
|
|
116
|
-
# Express: npm install express --save
|
|
117
|
-
# NestJS: npm i -g @nestjs/cli && nest new {project_name}
|
|
118
|
-
# Laravel 12: composer create-project laravel/laravel:^12.0 {project_name}
|
|
119
|
-
# Filament: composer require filament/filament && php artisan filament:install --panels
|
|
120
|
-
```
|
|
121
|
-
> Replace the above with only the command(s) matching the selected stack.
|
|
122
|
-
|
|
123
|
-
### 2. Convex Self-Hosted Setup (only if self-hosted Convex was chosen)
|
|
124
|
-
```bash
|
|
125
|
-
# 1. Copy environment files
|
|
126
|
-
cp env.dev.example .env.dev
|
|
127
|
-
# Edit .env.dev with your port and origin values
|
|
128
|
-
|
|
129
|
-
# 2. Create initial .env.local
|
|
130
|
-
echo 'VITE_CONVEX_URL=http://localhost:3220' > .env.local
|
|
131
|
-
|
|
132
|
-
# 3. Start Convex backend and dashboard
|
|
133
|
-
docker compose --env-file .env.dev up -d convex convex-dashboard
|
|
134
|
-
|
|
135
|
-
# 4. Generate the self-hosted admin key from the running container
|
|
136
|
-
docker compose --env-file .env.dev exec convex ./generate_admin_key.sh
|
|
137
|
-
# Copy the printed convex-self-hosted|... value
|
|
138
|
-
|
|
139
|
-
# 5. Append CLI credentials to .env.local
|
|
140
|
-
# CONVEX_SELF_HOSTED_URL=http://localhost:3220
|
|
141
|
-
# CONVEX_SELF_HOSTED_ADMIN_KEY=convex-self-hosted|...
|
|
142
|
-
|
|
143
|
-
# 6. Deploy schema and functions
|
|
144
|
-
npm run deploy:selfhosted
|
|
145
|
-
|
|
146
|
-
# 7. (Optional) Seed data
|
|
147
|
-
npx convex run seed:run '{}' --url http://localhost:3220 --admin-key "$CONVEX_SELF_HOSTED_ADMIN_KEY"
|
|
148
|
-
```
|
|
149
|
-
> Notes:
|
|
150
|
-
> - Do NOT use a random string as `CONVEX_SELF_HOSTED_ADMIN_KEY` -- always generate it from the container.
|
|
151
|
-
> - Avoid reserved index names like `by_id` in your Convex schema -- rename them (e.g., `by_external_id`) before deploying.
|
|
152
|
-
> - `VITE_CONVEX_URL` must be reachable by the browser; pass it as a Docker build argument when building the frontend image.
|
|
153
|
-
|
|
154
|
-
### 3. Further steps
|
|
155
|
-
- [e.g., Define database schema based on data model above]
|
|
156
|
-
- [e.g., Implement authentication and user management]
|
|
157
|
-
- [e.g., Build core feature X]
|
|
158
|
-
- [e.g., Set up CI/CD pipeline]
|
|
159
|
-
- [e.g., Deploy staging environment]
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: prompter-specs
|
|
3
|
-
description: Generate structured implementation specs from casual change requests. Analyzes the codebase first, then produces a clear specification with problem statement, current state analysis, proposed solution, files to modify, implementation details, and visual representation. Use when the user describes a desired change, improvement, or reorganization — especially in casual or vague terms — and needs a structured plan before implementation. Triggers on requests like "can you organize...", "I want to change...", "restructure this...", "clean up the...", "make it better", "plan out how to...", or any request implying a codebase change where analysis should precede coding. Also use when the user explicitly asks for a "spec", "specs mode", "implementation plan", or "analysis before coding". Even when the user's request sounds simple, if it involves modifying multiple files or making structural decisions, produce a spec first.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Prompter Specs
|
|
7
|
-
|
|
8
|
-
Generate structured implementation specifications from casual user requests. Analyze first, spec second, implement only after approval.
|
|
9
|
-
|
|
10
|
-
## Core Principle
|
|
11
|
-
|
|
12
|
-
Do not jump to coding. When this skill activates, the job is to **understand the problem, analyze the current state, and produce a clear spec**. The user wants to see what will change and why before any code is written.
|
|
13
|
-
|
|
14
|
-
## Workflow
|
|
15
|
-
|
|
16
|
-
### 1. Understand the Request
|
|
17
|
-
|
|
18
|
-
Parse what the user is asking for, even if vague or casual. Phrases like "it's too long", "make it better", "organize this", "clean it up" all carry intent — identify the core problem behind them.
|
|
19
|
-
|
|
20
|
-
If the request is truly ambiguous (multiple valid interpretations), ask one focused clarifying question. Otherwise, proceed with analysis.
|
|
21
|
-
|
|
22
|
-
### 2. Explore the Codebase
|
|
23
|
-
|
|
24
|
-
Read the relevant files to understand the current state. Use Glob, Grep, and Read to build a complete picture. The spec must be grounded in what actually exists — never guess at file contents, counts, or structures.
|
|
25
|
-
|
|
26
|
-
Look for:
|
|
27
|
-
- The files and code directly related to the request
|
|
28
|
-
- Existing patterns and conventions the project uses
|
|
29
|
-
- Related systems that might be affected
|
|
30
|
-
|
|
31
|
-
### 3. Analyze and Decide
|
|
32
|
-
|
|
33
|
-
Formulate a solution based on what you found. When the user gives open-ended direction ("you decide", "figure it out", "whatever makes sense"), commit to a specific, well-reasoned approach. Present one clear recommendation — not a menu of options.
|
|
34
|
-
|
|
35
|
-
If there's a genuine trade-off worth flagging, mention it briefly in Implementation Details, but still recommend one path.
|
|
36
|
-
|
|
37
|
-
### 4. Write the Spec
|
|
38
|
-
|
|
39
|
-
Output a structured specification using the format below. Adapt section titles and depth to fit the change — a small reorganization needs less detail than an architecture shift.
|
|
40
|
-
|
|
41
|
-
### 5. Wait for Approval
|
|
42
|
-
|
|
43
|
-
After presenting the spec, ask if the user wants to:
|
|
44
|
-
- Proceed with implementation
|
|
45
|
-
- Adjust the proposal
|
|
46
|
-
- Discard and try a different approach
|
|
47
|
-
|
|
48
|
-
Do not start coding until the user confirms.
|
|
49
|
-
|
|
50
|
-
## Spec Format
|
|
51
|
-
|
|
52
|
-
```markdown
|
|
53
|
-
## Problem
|
|
54
|
-
[1-3 sentences describing what's wrong or what could be better.
|
|
55
|
-
Be specific — reference actual counts, names, or metrics from the codebase.]
|
|
56
|
-
|
|
57
|
-
## Current [Descriptive Title]
|
|
58
|
-
[Describe what exists right now. List items, show structure, reference actual
|
|
59
|
-
file contents. This section proves you've actually read the code.
|
|
60
|
-
Use a descriptive title that fits the context, e.g.:
|
|
61
|
-
- "Current Menu Items (flat list under Master Data)"
|
|
62
|
-
- "Current API Endpoints"
|
|
63
|
-
- "Current File Structure"]
|
|
64
|
-
|
|
65
|
-
## Proposed Solution: [Solution Title]
|
|
66
|
-
[Brief description of the approach — the "what" and "why" at a high level.]
|
|
67
|
-
|
|
68
|
-
### [Detail Section — titled to fit the change]
|
|
69
|
-
[The detailed proposal. Use nested lists, tables, diagrams, or whatever
|
|
70
|
-
format best communicates the new structure. Be specific — show exactly
|
|
71
|
-
what the result looks like, not vague descriptions.]
|
|
72
|
-
|
|
73
|
-
### Files to Modify
|
|
74
|
-
[For each file that needs changes:]
|
|
75
|
-
1. **`path/to/file`** — [What changes and why. Be specific about the
|
|
76
|
-
nature of the change, not just "update this file".]
|
|
77
|
-
|
|
78
|
-
### Implementation Details
|
|
79
|
-
[Technical specifics:]
|
|
80
|
-
- What new fields, properties, or patterns to introduce
|
|
81
|
-
- How existing code adapts to the change
|
|
82
|
-
- What stays unchanged (helps the user assess risk and scope)
|
|
83
|
-
- Migration or backwards-compatibility notes if applicable
|
|
84
|
-
- Performance or security considerations if relevant
|
|
85
|
-
|
|
86
|
-
### Visual Result
|
|
87
|
-
[Where it helps, show a text-based visualization of the end result.
|
|
88
|
-
Skip this section if the change doesn't benefit from visual representation.
|
|
89
|
-
Good candidates: UI layouts, directory trees, data flows, table structures,
|
|
90
|
-
menu hierarchies, architecture diagrams.]
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## Guidelines
|
|
94
|
-
|
|
95
|
-
### Match the Project's World
|
|
96
|
-
|
|
97
|
-
Read the project before writing the spec. Use its naming conventions, file organization patterns, and existing abstractions. Reference what the codebase already supports ("The sidebar already supports nested items — we extend this pattern") rather than proposing alien patterns.
|
|
98
|
-
|
|
99
|
-
### Ground Every Claim in Code
|
|
100
|
-
|
|
101
|
-
The "Current State" section must contain real information from the codebase. If the user says "the menu is too long" — count the items. If they say "the API is messy" — list the actual endpoints. If they say "the tests are slow" — check what test framework and patterns exist.
|
|
102
|
-
|
|
103
|
-
### Scale the Spec to the Change
|
|
104
|
-
|
|
105
|
-
- **Small changes** (rename, fix layout, reorder items): Shorter spec, skip Visual Result if not needed
|
|
106
|
-
- **Medium changes** (reorganize UI, refactor a module, add a feature): Full spec with all sections
|
|
107
|
-
- **Large changes** (new architecture, multi-service change): Consider splitting into phases, flag dependencies between them
|
|
108
|
-
|
|
109
|
-
### Call Out What Does NOT Change
|
|
110
|
-
|
|
111
|
-
Explicitly state what's unaffected. "No route or controller changes needed — purely presentation layer" or "Database schema unchanged" helps the user assess blast radius and risk.
|
|
112
|
-
|
|
113
|
-
### Stay Tech-Stack Agnostic
|
|
114
|
-
|
|
115
|
-
This workflow applies to any project. Whether it's Laravel, React, Django, Rails, Go, Swift, or a CLI tool — adapt the spec's language and file references to match. There's no assumption about framework or language.
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: prompter-workflow
|
|
3
|
-
description: Guide spec-driven development through Prompter's three-stage workflow — creating change proposals with spec deltas, implementing approved changes, and archiving completed work. Use this skill whenever the user mentions proposals, specs, changes, plans, or asks to create/apply/archive a Prompter change. Also trigger when the user wants to add features, make breaking changes, update architecture, or plan implementation work that should go through a formal proposal process.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Prompter Workflow
|
|
7
|
-
|
|
8
|
-
Drive spec-driven development through three stages: **Propose**, **Apply**, and **Archive**. Each stage has guardrails to keep changes minimal, scoped, and traceable.
|
|
9
|
-
|
|
10
|
-
## Before You Begin
|
|
11
|
-
|
|
12
|
-
1. Search existing specs under `prompter/specs/` and active changes under `prompter/changes/` to understand current state and avoid conflicts.
|
|
13
|
-
2. Search existing requirements with `rg -n "Requirement:|Scenario:" prompter/specs` before writing new ones.
|
|
14
|
-
|
|
15
|
-
## Detecting Which Stage
|
|
16
|
-
|
|
17
|
-
Determine which stage the user needs based on their request:
|
|
18
|
-
|
|
19
|
-
| Signal | Stage |
|
|
20
|
-
|--------|-------|
|
|
21
|
-
| "create a proposal", "plan a change", "add a feature", "I want to spec..." | **Propose** |
|
|
22
|
-
| "implement", "apply", "build this", references an existing change ID + wants code | **Apply** |
|
|
23
|
-
| "archive", "mark as done", "move to archive", references a completed change | **Archive** |
|
|
24
|
-
|
|
25
|
-
If unclear, default to **Propose** — it's always safer to plan first.
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Stage 1: Propose
|
|
30
|
-
|
|
31
|
-
Create a change proposal with spec deltas. No code gets written here — only design documents.
|
|
32
|
-
|
|
33
|
-
### Guardrails
|
|
34
|
-
|
|
35
|
-
- Favor straightforward, minimal implementations first.
|
|
36
|
-
- Keep changes tightly scoped to the requested outcome.
|
|
37
|
-
- Identify vague or ambiguous details and ask follow-up questions before editing files.
|
|
38
|
-
- Do not write any code during this stage.
|
|
39
|
-
|
|
40
|
-
### Steps
|
|
41
|
-
|
|
42
|
-
1. **Ground the proposal in current state.**
|
|
43
|
-
- List `prompter/changes/` to see active changes (check for conflicts).
|
|
44
|
-
- List `prompter/specs/` to see existing capabilities.
|
|
45
|
-
- Inspect related code or docs to understand current behavior.
|
|
46
|
-
- Note any gaps that require clarification from the user.
|
|
47
|
-
|
|
48
|
-
2. **Choose a change ID and scaffold.**
|
|
49
|
-
- Pick a unique, verb-led, kebab-case ID (e.g., `add-two-factor-auth`, `update-payment-flow`, `remove-legacy-api`).
|
|
50
|
-
- Create the directory structure:
|
|
51
|
-
```
|
|
52
|
-
prompter/changes/<change-id>/
|
|
53
|
-
├── proposal.md
|
|
54
|
-
├── tasks.md
|
|
55
|
-
├── design.md (only if needed — see criteria below)
|
|
56
|
-
└── specs/
|
|
57
|
-
└── <capability>/
|
|
58
|
-
└── spec.md
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
3. **Map the change into capabilities.**
|
|
62
|
-
- Break multi-scope efforts into distinct spec deltas with clear relationships.
|
|
63
|
-
- Prefer modifying existing specs over creating duplicates.
|
|
64
|
-
- One folder per affected capability under `specs/`.
|
|
65
|
-
|
|
66
|
-
4. **Write design.md (only when needed).**
|
|
67
|
-
Create `design.md` if the solution spans multiple systems, introduces new patterns, or demands trade-off discussion. Include: Context, Goals/Non-Goals, Decisions, Risks/Trade-offs, Migration Plan, Open Questions.
|
|
68
|
-
|
|
69
|
-
5. **Draft spec deltas.**
|
|
70
|
-
- Use `## ADDED|MODIFIED|REMOVED|RENAMED Requirements` headers.
|
|
71
|
-
- Include at least one `#### Scenario:` per requirement.
|
|
72
|
-
- Use SHALL/MUST for normative requirements.
|
|
73
|
-
- Cross-reference related capabilities when relevant.
|
|
74
|
-
- For MODIFIED requirements: copy the full existing requirement, then edit. Partial deltas lose detail at archive time.
|
|
75
|
-
|
|
76
|
-
6. **Draft tasks.md.**
|
|
77
|
-
- Ordered list of small, verifiable work items.
|
|
78
|
-
- Each task should deliver user-visible progress.
|
|
79
|
-
- Include validation steps (tests, tooling).
|
|
80
|
-
- Highlight dependencies or parallelizable work.
|
|
81
|
-
|
|
82
|
-
### Spec Format Reference
|
|
83
|
-
|
|
84
|
-
```markdown
|
|
85
|
-
## ADDED Requirements
|
|
86
|
-
### Requirement: Feature Name
|
|
87
|
-
The system SHALL provide [capability].
|
|
88
|
-
|
|
89
|
-
#### Scenario: Success case
|
|
90
|
-
- **WHEN** user performs action
|
|
91
|
-
- **THEN** expected result occurs
|
|
92
|
-
|
|
93
|
-
## MODIFIED Requirements
|
|
94
|
-
### Requirement: Existing Feature (full copy, then edit)
|
|
95
|
-
...
|
|
96
|
-
|
|
97
|
-
## REMOVED Requirements
|
|
98
|
-
### Requirement: Old Feature
|
|
99
|
-
**Reason**: [Why removing]
|
|
100
|
-
**Migration**: [How to handle]
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## Stage 2: Apply
|
|
106
|
-
|
|
107
|
-
Implement an approved change proposal. Work through tasks sequentially, keeping edits minimal.
|
|
108
|
-
|
|
109
|
-
### Guardrails
|
|
110
|
-
|
|
111
|
-
- Do not start implementation until the proposal is reviewed and approved.
|
|
112
|
-
- Keep changes tightly scoped to what the proposal specifies.
|
|
113
|
-
- Favor straightforward, minimal implementations.
|
|
114
|
-
|
|
115
|
-
### Steps
|
|
116
|
-
|
|
117
|
-
1. **Read the proposal.**
|
|
118
|
-
- Read `changes/<id>/proposal.md` to understand scope and motivation.
|
|
119
|
-
- Read `changes/<id>/design.md` (if present) for technical decisions.
|
|
120
|
-
- Read `changes/<id>/tasks.md` for the implementation checklist.
|
|
121
|
-
|
|
122
|
-
2. **Implement tasks sequentially.**
|
|
123
|
-
- Work through each task in order.
|
|
124
|
-
- Keep edits minimal and focused on the requested change.
|
|
125
|
-
|
|
126
|
-
3. **Confirm completion.**
|
|
127
|
-
- Verify every item in `tasks.md` is actually finished before updating statuses.
|
|
128
|
-
- Run tests and validation as specified in the tasks.
|
|
129
|
-
|
|
130
|
-
4. **Update the checklist.**
|
|
131
|
-
- Mark each task `- [x]` only after all work is done.
|
|
132
|
-
- Ensure the checklist reflects reality.
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## Stage 3: Archive
|
|
137
|
-
|
|
138
|
-
Move a completed change to the archive and update specs.
|
|
139
|
-
|
|
140
|
-
### Steps
|
|
141
|
-
|
|
142
|
-
1. **Determine the change ID.**
|
|
143
|
-
- If the user specified a change ID, use it (trim whitespace).
|
|
144
|
-
- If referenced loosely (by title or summary), list `prompter/changes/` to find candidates and confirm with the user.
|
|
145
|
-
|
|
146
|
-
2. **Verify the change exists and is ready.**
|
|
147
|
-
- Check `prompter/changes/<id>/` exists and is not already under `prompter/changes/archive/`.
|
|
148
|
-
|
|
149
|
-
3. **Move the change to archive.**
|
|
150
|
-
- Move `prompter/changes/<id>/` to `prompter/changes/archive/YYYY-MM-DD-<id>/` (use today's date).
|
|
151
|
-
- Apply the spec deltas: for each `changes/<id>/specs/<capability>/spec.md`, merge the ADDED/MODIFIED/REMOVED requirements into the corresponding `prompter/specs/<capability>/spec.md`.
|
|
152
|
-
- Skip spec merging only for tooling-only changes that don't affect specifications.
|
|
153
|
-
|
|
154
|
-
4. **Confirm archive landed.**
|
|
155
|
-
- Verify the directory moved to `prompter/changes/archive/`.
|
|
156
|
-
- Verify target specs were updated correctly.
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## Troubleshooting
|
|
161
|
-
|
|
162
|
-
| Error | Fix |
|
|
163
|
-
|-------|-----|
|
|
164
|
-
| "Change must have at least one delta" | Check `changes/<id>/specs/` has `.md` files with `## ADDED\|MODIFIED\|REMOVED Requirements` headers |
|
|
165
|
-
| "Requirement must have at least one scenario" | Use `#### Scenario:` format (4 hashtags, not bullets or bold) |
|
|
166
|
-
| Silent scenario parsing failures | Exact format required: `#### Scenario: Name` |
|