devflow-prompts 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/README.md +914 -0
- package/bin/cli.js +100 -0
- package/flows/devflow.0-gen-rules.prompt.md +335 -0
- package/flows/devflow.0-rev-rules.prompt.md +156 -0
- package/flows/devflow.1-gen-requirement.prompt.md +279 -0
- package/flows/devflow.1-rev-requirement.prompt.md +206 -0
- package/flows/devflow.2-gen-design.prompt.md +217 -0
- package/flows/devflow.2-rev-design.prompt.md +132 -0
- package/flows/devflow.3-gen-code.prompt.md +155 -0
- package/flows/devflow.3-rev-code.prompt.md +150 -0
- package/flows/devflow.4-gen-test-plan.prompt.md +171 -0
- package/flows/devflow.4-rev-test-plan.prompt.md +124 -0
- package/flows/devflow.5-gen-test-code.prompt.md +114 -0
- package/flows/devflow.5-rev-test-code.prompt.md +131 -0
- package/flows/devflow.6-analyze.prompt.md +240 -0
- package/gen-chat.sh +58 -0
- package/index.js +4 -0
- package/package.json +25 -0
- package/raws/.gitkeep +0 -0
- package/raws/changename.md +7 -0
- package/raws/my-project-rules.txt +7 -0
- package/rules/.gitkeep +0 -0
- package/scripts/setup-devflow-chat-antigravity.sh +44 -0
- package/scripts/setup-devflow-chat-vscode.sh +111 -0
- package/specs/.gitkeep +0 -0
- package/templates/gen-requirement-template.txt +26 -0
- package/templates/gen-rule-template.txt +17 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Convert raw customer request to structured requirement document
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /devflow.1-gen-requirement
|
|
6
|
+
|
|
7
|
+
## Description
|
|
8
|
+
|
|
9
|
+
Convert raw customer request into a structured, clear, and testable requirement document. Supports input via direct text or a file path.
|
|
10
|
+
|
|
11
|
+
## Input Requirements
|
|
12
|
+
|
|
13
|
+
**Input Type: File Path (Required)**
|
|
14
|
+
- Provides path to a text file containing Task ID, Language, and Raw Request.
|
|
15
|
+
- **File can be located anywhere** (e.g., `~/Desktop/request.txt`, `/tmp/my-task.txt`).
|
|
16
|
+
- **Filename**: Flexible naming, but meaningful names recommended (e.g., `FEAT-001-request.txt`).
|
|
17
|
+
- Format inside file:
|
|
18
|
+
```text
|
|
19
|
+
Task ID: ...
|
|
20
|
+
Language: ...
|
|
21
|
+
Raw Request: ...
|
|
22
|
+
```
|
|
23
|
+
- AI will automatically read the file.
|
|
24
|
+
|
|
25
|
+
**Task Mode (Optional, Default: NEW)**
|
|
26
|
+
- `NEW`: New feature request.
|
|
27
|
+
- `UPDATE`: Request to update/refactor existing functionality.
|
|
28
|
+
|
|
29
|
+
**Existing Logic/Code (Required for UPDATE)**
|
|
30
|
+
- If Mode is `UPDATE`, provide current business rules or code snippets to be modified.
|
|
31
|
+
|
|
32
|
+
**Rule File** (optional but recommended):
|
|
33
|
+
- `devflow.1-gen-requirement.rule.md` from `/devflow-prompts/rules/` - Guidelines for generating requirements
|
|
34
|
+
|
|
35
|
+
## Input Validation
|
|
36
|
+
|
|
37
|
+
- **Task ID**: Required, cannot be empty
|
|
38
|
+
- **Raw Request**: Required, cannot be empty
|
|
39
|
+
- **Language**: If specified, must be one of: `en`, `vi`, `ja`, `ko`
|
|
40
|
+
|
|
41
|
+
**If validation fails**: Stop immediately and output error message.
|
|
42
|
+
|
|
43
|
+
## Output Format
|
|
44
|
+
|
|
45
|
+
File markdown: `{#task-id}-requirement.md`
|
|
46
|
+
|
|
47
|
+
**Folder Structure**: All feature artifacts must be stored in:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
/devflow-prompts/specs/{#task-id}/
|
|
51
|
+
├── {#task-id}-requirement.md
|
|
52
|
+
├── {#task-id}-design.md
|
|
53
|
+
├── {#task-id}-test.md
|
|
54
|
+
├── {#task-id}-feature.patch
|
|
55
|
+
└── {#task-id}-test.patch
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Example: `/devflow-prompts/specs/FEAT-001/FEAT-001-requirement.md`
|
|
59
|
+
|
|
60
|
+
## Template
|
|
61
|
+
|
|
62
|
+
```markdown
|
|
63
|
+
# {#task-id} - Requirement
|
|
64
|
+
|
|
65
|
+
## 0. Raw Request (Original)
|
|
66
|
+
|
|
67
|
+
**Source**: {Email/Meeting/Ticket/etc.}
|
|
68
|
+
**Date**: {YYYY-MM-DD}
|
|
69
|
+
**From**: {Customer/Stakeholder name}
|
|
70
|
+
```
|
|
71
|
+
{Paste exact original request here - keep verbatim}
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 1. Overview
|
|
78
|
+
- Goal:
|
|
79
|
+
- Background:
|
|
80
|
+
- Stakeholders:
|
|
81
|
+
|
|
82
|
+
## 2. Scope
|
|
83
|
+
### In scope
|
|
84
|
+
- ...
|
|
85
|
+
|
|
86
|
+
### Out of scope
|
|
87
|
+
- ...
|
|
88
|
+
|
|
89
|
+
## 3. User stories
|
|
90
|
+
- US-1:
|
|
91
|
+
- US-2:
|
|
92
|
+
|
|
93
|
+
## 4. Functional requirements
|
|
94
|
+
### FR-1: <title>
|
|
95
|
+
- Description:
|
|
96
|
+
- Acceptance Criteria:
|
|
97
|
+
- [ ] AC-1 ...
|
|
98
|
+
- [ ] AC-2 ...
|
|
99
|
+
- Error/Edge cases:
|
|
100
|
+
- ...
|
|
101
|
+
|
|
102
|
+
## 5. Non-functional requirements
|
|
103
|
+
- Performance:
|
|
104
|
+
- Security:
|
|
105
|
+
- Reliability:
|
|
106
|
+
- Observability:
|
|
107
|
+
|
|
108
|
+
## 6. Data & Business rules
|
|
109
|
+
- Entities:
|
|
110
|
+
- Rules/Validation:
|
|
111
|
+
- Permissions:
|
|
112
|
+
|
|
113
|
+
## 7. UI/UX (if applicable)
|
|
114
|
+
- Screens/Flows:
|
|
115
|
+
- Empty states:
|
|
116
|
+
|
|
117
|
+
## 8. Integration (if applicable)
|
|
118
|
+
- External systems:
|
|
119
|
+
- Constraints:
|
|
120
|
+
|
|
121
|
+
## 9. Assumptions
|
|
122
|
+
- ...
|
|
123
|
+
|
|
124
|
+
## 10. Open questions (ask customer)
|
|
125
|
+
- Q1:
|
|
126
|
+
- Q2:
|
|
127
|
+
|
|
128
|
+
## 11. Examples
|
|
129
|
+
- Example scenarios:
|
|
130
|
+
- Example inputs/outputs:
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Prompt
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
You are a Senior Business Analyst.
|
|
137
|
+
Convert the raw customer request into a clear requirement document.
|
|
138
|
+
|
|
139
|
+
INPUT:
|
|
140
|
+
<<<
|
|
141
|
+
{USER INPUT HERE - File path}
|
|
142
|
+
>>>
|
|
143
|
+
|
|
144
|
+
INSTRUCTIONS:
|
|
145
|
+
|
|
146
|
+
1. **Read Input File**:
|
|
147
|
+
- The user will provide a file path.
|
|
148
|
+
- USE `view_file` tool to read its content.
|
|
149
|
+
- IF input is NOT a file path, ask user to provide a file path.
|
|
150
|
+
- File paths can be anywhere in the filesystem, not limited to `/devflow-prompts`.
|
|
151
|
+
|
|
152
|
+
**Behave based on Mode (if specified in file or prompt)**:
|
|
153
|
+
- **IF Mode is UPDATE**:
|
|
154
|
+
- Check if "Existing Logic" is provided.
|
|
155
|
+
- Focus on "What changes" vs "What remains".
|
|
156
|
+
- In "Scope", explicitly list what is preserved.
|
|
157
|
+
- **IF Mode is NEW**:
|
|
158
|
+
- Focus on complete new feature definition.
|
|
159
|
+
|
|
160
|
+
2. **Parse Information**:
|
|
161
|
+
- Extract **Task ID**.
|
|
162
|
+
- Extract **Language** (default `en` if missing).
|
|
163
|
+
- Extract **Raw Request** (the core message).
|
|
164
|
+
|
|
165
|
+
3. **Output Generation**:
|
|
166
|
+
- Produce ONLY the markdown content for file: `{Task ID}-requirement.md`.
|
|
167
|
+
- Follow EXACTLY the template below.
|
|
168
|
+
- Keep technical terms in English (API, HTTP, JWT, etc.).
|
|
169
|
+
- Write professionally in the identified language.
|
|
170
|
+
|
|
171
|
+
TEMPLATE:
|
|
172
|
+
<<<
|
|
173
|
+
{PASTE TEMPLATE ABOVE HERE}
|
|
174
|
+
>>>
|
|
175
|
+
|
|
176
|
+
RULES:
|
|
177
|
+
- Do NOT invent missing information. Put missing items into "Open questions".
|
|
178
|
+
- Acceptance criteria must be checkbox items.
|
|
179
|
+
- Include error/edge cases for each functional requirement.
|
|
180
|
+
- If a section (e.g., UI/UX, Integration) is not applicable, explicitly write "Not applicable" (do not remove the section).
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Rules/Guidelines
|
|
184
|
+
|
|
185
|
+
1. ✅ **No invention** - Missing info → put in "Open questions"
|
|
186
|
+
2. ✅ **Acceptance Criteria** - Must be checkbox format, testable
|
|
187
|
+
3. ✅ **Error/Edge cases** - Each FR must have error cases
|
|
188
|
+
4. ✅ **Language flexibility** - Default English, can override
|
|
189
|
+
5. ✅ **Examples** - Must have concrete input/output examples
|
|
190
|
+
|
|
191
|
+
## Usage Example
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
/devflow.1-gen-requirement ~/Desktop/FEAT-001-request.txt
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Common Mistakes to Avoid
|
|
198
|
+
|
|
199
|
+
### ❌ Inventing Information
|
|
200
|
+
|
|
201
|
+
```markdown
|
|
202
|
+
# BAD
|
|
203
|
+
|
|
204
|
+
- Password must be at least 8 characters
|
|
205
|
+
(Customer didn't mention password requirements)
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
```markdown
|
|
209
|
+
# GOOD
|
|
210
|
+
|
|
211
|
+
## 10. Open questions
|
|
212
|
+
|
|
213
|
+
- Q1: What are the password requirements (length, complexity)?
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### ❌ Vague Acceptance Criteria
|
|
217
|
+
|
|
218
|
+
```markdown
|
|
219
|
+
# BAD
|
|
220
|
+
|
|
221
|
+
- [ ] AC-1: Login works correctly
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
```markdown
|
|
225
|
+
# GOOD
|
|
226
|
+
|
|
227
|
+
- [ ] AC-1: User enters correct email/password → redirect to dashboard
|
|
228
|
+
- [ ] AC-2: User enters wrong password → show error "Invalid credentials"
|
|
229
|
+
- [ ] AC-3: Session token created and stored in cookie (httpOnly, secure)
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### ❌ Missing Edge Cases
|
|
233
|
+
|
|
234
|
+
```markdown
|
|
235
|
+
# BAD
|
|
236
|
+
|
|
237
|
+
### FR-1: Login
|
|
238
|
+
|
|
239
|
+
- Description: User logs in
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
```markdown
|
|
243
|
+
# GOOD
|
|
244
|
+
|
|
245
|
+
### FR-1: Login
|
|
246
|
+
|
|
247
|
+
- Description: User logs in with email/password
|
|
248
|
+
- Error/Edge cases:
|
|
249
|
+
- Email doesn't exist
|
|
250
|
+
- Wrong password
|
|
251
|
+
- Account locked
|
|
252
|
+
- Empty email/password
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Language Override Examples
|
|
256
|
+
|
|
257
|
+
### Example 1: Vietnamese output
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
Task ID: FEAT-001
|
|
261
|
+
Language: vi
|
|
262
|
+
Raw request: "Tôi muốn user đăng nhập bằng email/password"
|
|
263
|
+
|
|
264
|
+
# → Output will be in Vietnamese
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Example 2: Japanese output
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
Task ID: FEAT-001
|
|
271
|
+
Language: ja
|
|
272
|
+
Raw request: "メール/パスワードでログインできるようにしたい"
|
|
273
|
+
|
|
274
|
+
# → Output will be in Japanese
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Next Steps
|
|
278
|
+
|
|
279
|
+
After requirement is ready → run `/devflow.1-rev-requirement` to review
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Review requirement document for completeness and clarity
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /devflow.1-rev-requirement
|
|
6
|
+
|
|
7
|
+
## Description
|
|
8
|
+
Review requirement document to detect gaps, ambiguities, contradictions, and suggest improvements.
|
|
9
|
+
|
|
10
|
+
## Input Requirements
|
|
11
|
+
|
|
12
|
+
**Input Type: File Path (Required)**
|
|
13
|
+
- Provide path to your requirement file
|
|
14
|
+
- **Filename MUST contain task-id** (e.g., `FEAT-001-requirement.md`, `FEAT-001.md`, `my-FEAT-001-spec.md`)
|
|
15
|
+
- Task-id is needed to name output files
|
|
16
|
+
- Can be anywhere in filename, any format: `TASK-123`, `FEAT-001`, `BUG-456`
|
|
17
|
+
- **File can be located anywhere** (not limited to `/devflow-prompts`)
|
|
18
|
+
- Examples:
|
|
19
|
+
- `~/Desktop/FEAT-001-requirement.md` ✅
|
|
20
|
+
- `/tmp/TASK-123-spec.md` ✅
|
|
21
|
+
- `./my-FEAT-001-notes.txt` ✅
|
|
22
|
+
- `~/requirement.md` ❌ (no task-id)
|
|
23
|
+
- AI will automatically read file and extract task-id from filename
|
|
24
|
+
|
|
25
|
+
**Rule File** (optional but recommended):
|
|
26
|
+
- `devflow.1-rev-requirement.rule.md` from `/devflow-prompts/rules/` (for quality checklist)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## Input Validation
|
|
31
|
+
|
|
32
|
+
- **Requirement file**: Required, must exist
|
|
33
|
+
- **File format**: Must be valid markdown
|
|
34
|
+
- **Task ID**: Must be extractable from filename (e.g., `FEAT-001`, `TASK-123`, `BUG-456`)
|
|
35
|
+
- Pattern: Uppercase letters + dash + numbers (e.g., `FEAT-001`, `TASK-123`)
|
|
36
|
+
- If not found in filename, AI should ask user to provide task-id
|
|
37
|
+
|
|
38
|
+
**If validation fails**: Stop immediately and output error message.
|
|
39
|
+
|
|
40
|
+
## Output Format
|
|
41
|
+
1. **Issues list** (grouped):
|
|
42
|
+
- Missing info
|
|
43
|
+
- Ambiguities
|
|
44
|
+
- Conflicts/contradictions
|
|
45
|
+
- Unclear acceptance criteria
|
|
46
|
+
- Missing edge/error cases
|
|
47
|
+
2. **Proposed fixes** (bullet points)
|
|
48
|
+
3. **Revised version**: Full updated markdown for `{#task-id}-requirement.md`
|
|
49
|
+
|
|
50
|
+
## Prompt
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
You are a Product Owner + QA reviewer.
|
|
54
|
+
Review the requirement document for completeness, ambiguity, contradictions, and testability.
|
|
55
|
+
|
|
56
|
+
INPUT:
|
|
57
|
+
<<<
|
|
58
|
+
{USER INPUT HERE - File path}
|
|
59
|
+
>>>
|
|
60
|
+
|
|
61
|
+
INSTRUCTIONS:
|
|
62
|
+
|
|
63
|
+
1. **Read Input File**:
|
|
64
|
+
- The user will provide a file path.
|
|
65
|
+
- USE `view_file` tool to read its content.
|
|
66
|
+
- IF input is NOT a file path, ask user to provide a file path.
|
|
67
|
+
- File paths can be anywhere in the filesystem, not limited to `/devflow-prompts`.
|
|
68
|
+
|
|
69
|
+
2. **Extract Task ID** (for file path input):
|
|
70
|
+
- Extract task-id from filename using pattern: `[A-Z]+-[0-9]+`
|
|
71
|
+
- Examples:
|
|
72
|
+
- `FEAT-001-requirement.md` → task-id: `FEAT-001`
|
|
73
|
+
- `/tmp/TASK-123-spec.md` → task-id: `TASK-123`
|
|
74
|
+
- `my-BUG-456-notes.txt` → task-id: `BUG-456`
|
|
75
|
+
- If no task-id found in filename, ask user to provide it
|
|
76
|
+
|
|
77
|
+
3. **Review the Requirement**:
|
|
78
|
+
- Analyze for completeness, ambiguity, contradictions, testability
|
|
79
|
+
- Check against quality checklist
|
|
80
|
+
|
|
81
|
+
OUTPUT:
|
|
82
|
+
1) Issues list (grouped):
|
|
83
|
+
- Missing info
|
|
84
|
+
- Ambiguities
|
|
85
|
+
- Conflicts/contradictions
|
|
86
|
+
- Unclear acceptance criteria
|
|
87
|
+
- Missing edge/error cases
|
|
88
|
+
2) Proposed fixes (bullet points)
|
|
89
|
+
3) Produce a revised version:
|
|
90
|
+
- Output ONLY the full updated markdown for {#task-id}-requirement.md (same template)
|
|
91
|
+
|
|
92
|
+
RULES:
|
|
93
|
+
- Keep the template headings unchanged.
|
|
94
|
+
- If something cannot be resolved, keep it as an "Open question" but rewrite the question to be specific.
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Rules/Guidelines
|
|
98
|
+
1. ✅ **Completeness** - Are all sections fully filled?
|
|
99
|
+
2. ✅ **Ambiguity** - Any unclear parts that can be interpreted multiple ways?
|
|
100
|
+
3. ✅ **Contradictions** - Any conflicts between requirements?
|
|
101
|
+
4. ✅ **Testability** - Can acceptance criteria be tested?
|
|
102
|
+
5. ✅ **Edge cases** - Are all error/edge cases covered?
|
|
103
|
+
|
|
104
|
+
## Review Checklist
|
|
105
|
+
|
|
106
|
+
### Completeness Check
|
|
107
|
+
- [ ] Overview has Goal, Background, Stakeholders?
|
|
108
|
+
- [ ] Scope clearly defines In/Out scope?
|
|
109
|
+
- [ ] Has User Stories?
|
|
110
|
+
- [ ] Each FR has Description, AC, Error cases?
|
|
111
|
+
- [ ] NFR covers Performance, Security, Reliability?
|
|
112
|
+
- [ ] Data & Business rules are clear?
|
|
113
|
+
- [ ] Has concrete Examples?
|
|
114
|
+
|
|
115
|
+
### Ambiguity Check
|
|
116
|
+
- [ ] Acceptance Criteria specific enough?
|
|
117
|
+
- [ ] Validation rules clear (not using "appropriate", "reasonable")?
|
|
118
|
+
- [ ] Error messages defined?
|
|
119
|
+
- [ ] UI/UX flows clear?
|
|
120
|
+
|
|
121
|
+
### Contradiction Check
|
|
122
|
+
- [ ] FRs don't conflict with each other?
|
|
123
|
+
- [ ] NFRs don't conflict with FRs?
|
|
124
|
+
- [ ] Business rules consistent?
|
|
125
|
+
|
|
126
|
+
### Testability Check
|
|
127
|
+
- [ ] Each AC can be verified?
|
|
128
|
+
- [ ] Expected behavior clear?
|
|
129
|
+
- [ ] Test data can be prepared?
|
|
130
|
+
|
|
131
|
+
### Edge Cases Check
|
|
132
|
+
- [ ] Empty/null inputs?
|
|
133
|
+
- [ ] Invalid formats?
|
|
134
|
+
- [ ] Permission denied?
|
|
135
|
+
- [ ] Resource not found?
|
|
136
|
+
- [ ] Concurrent access?
|
|
137
|
+
- [ ] Timeout scenarios?
|
|
138
|
+
|
|
139
|
+
## Usage Example
|
|
140
|
+
|
|
141
|
+
## Usage Example
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
/devflow.1-rev-requirement /devflow-prompts/specs/FEAT-001/FEAT-001-requirement.md
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Common Issues Found
|
|
148
|
+
|
|
149
|
+
### Missing Info
|
|
150
|
+
```markdown
|
|
151
|
+
# Issue
|
|
152
|
+
FR-1 doesn't specify session timeout duration
|
|
153
|
+
|
|
154
|
+
# Fix
|
|
155
|
+
→ Add to Open questions: "Q: What is the session timeout? (suggest: 2h)"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Ambiguity
|
|
159
|
+
```markdown
|
|
160
|
+
# Issue
|
|
161
|
+
AC: "User is notified when error occurs"
|
|
162
|
+
→ How to notify? Toast? Email? SMS?
|
|
163
|
+
|
|
164
|
+
# Fix
|
|
165
|
+
AC: "User sees red error message at top of form"
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Contradiction
|
|
169
|
+
```markdown
|
|
170
|
+
# Issue
|
|
171
|
+
FR-1: "User must verify email before login"
|
|
172
|
+
FR-2: "User can login immediately after register"
|
|
173
|
+
→ Contradiction!
|
|
174
|
+
|
|
175
|
+
# Fix
|
|
176
|
+
Clarify: User can login but has limited features until email verified
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Unclear AC
|
|
180
|
+
```markdown
|
|
181
|
+
# Issue
|
|
182
|
+
AC: "Login works correctly"
|
|
183
|
+
→ Too vague!
|
|
184
|
+
|
|
185
|
+
# Fix
|
|
186
|
+
AC-1: User enters correct credentials → redirect to /dashboard
|
|
187
|
+
AC-2: User enters wrong password → show error, stay on login page
|
|
188
|
+
AC-3: Session token stored in cookie with httpOnly=true, secure=true
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Missing Edge Cases
|
|
192
|
+
```markdown
|
|
193
|
+
# Issue
|
|
194
|
+
FR-1: Login
|
|
195
|
+
→ No error cases
|
|
196
|
+
|
|
197
|
+
# Fix
|
|
198
|
+
Error/Edge cases:
|
|
199
|
+
- Email doesn't exist → show "Invalid credentials"
|
|
200
|
+
- Wrong password → show "Invalid credentials"
|
|
201
|
+
- Account locked → show "Account locked. Try again in X minutes"
|
|
202
|
+
- Empty email/password → show validation errors
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Next Steps
|
|
206
|
+
After clarifying → run `/devflow.2-gen-design` to create technical design
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create technical design from requirement (architecture, API, data model)
|
|
3
|
+
---
|
|
4
|
+
# /devflow.2-gen-design
|
|
5
|
+
|
|
6
|
+
## Description
|
|
7
|
+
|
|
8
|
+
Create technical design document from requirement and coding rules, including architecture, API, data model, security, observability.
|
|
9
|
+
|
|
10
|
+
## Input Requirements
|
|
11
|
+
|
|
12
|
+
**Input Type: File Path (Required)**
|
|
13
|
+
- Provide path to your requirement file
|
|
14
|
+
- **Filename MUST contain task-id** (e.g., `FEAT-001-requirement.md`, `TASK-123.md`)
|
|
15
|
+
- Task-id is needed to name output design file
|
|
16
|
+
- Can be anywhere in filename: `FEAT-001`, `TASK-123`, `BUG-456`
|
|
17
|
+
- **File can be located anywhere** (not limited to `/devflow-prompts`)
|
|
18
|
+
- Examples:
|
|
19
|
+
- `~/Documents/FEAT-001-requirement.md` ✅
|
|
20
|
+
- `/tmp/TASK-123-spec.md` ✅
|
|
21
|
+
- `./BUG-456-notes.txt` ✅
|
|
22
|
+
- `~/requirement.md` ❌ (no task-id)
|
|
23
|
+
- AI will automatically read the file.
|
|
24
|
+
|
|
25
|
+
**Task Mode (Optional, Default: NEW)**
|
|
26
|
+
- `NEW`: Designing a new feature.
|
|
27
|
+
- `UPDATE`: Modifying existing design/code. **Requires strict impact analysis.**
|
|
28
|
+
|
|
29
|
+
**Coding Rule Files** (from `/devflow-prompts/rules/`):
|
|
30
|
+
- `devflow.2-gen-design.rule.md` (required) - Architecture, API, Security guidelines.
|
|
31
|
+
**MUST define project structure/roots.**
|
|
32
|
+
- `devflow.3-gen-code.rule.md` (optional) - For implementation context
|
|
33
|
+
|
|
34
|
+
**Language** (optional): Output language (default: `en`)
|
|
35
|
+
|
|
36
|
+
## Input Validation
|
|
37
|
+
|
|
38
|
+
- **Requirement file**: Required, must exist
|
|
39
|
+
- **File name**: MUST contain task-id pattern `[A-Z]+-[0-9]+` (e.g., `FEAT-001-req.md`, `TASK-123.md`)
|
|
40
|
+
- **Coding rules**: `devflow.2-gen-design.rule.md` is required
|
|
41
|
+
- **Language**: If specified, must be one of: `en`, `vi`, `ja`, `ko`
|
|
42
|
+
|
|
43
|
+
**If validation fails**: Stop immediately and output error message.
|
|
44
|
+
|
|
45
|
+
## Output Format
|
|
46
|
+
|
|
47
|
+
File markdown: `{#task-id}-design.md`
|
|
48
|
+
|
|
49
|
+
**Folder Structure**: Save in `/devflow-prompts/specs/{#task-id}/`
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
/devflow-prompts/specs/{#task-id}/{#task-id}-design.md
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Template
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
# {#task-id} - Technical Design
|
|
59
|
+
|
|
60
|
+
## 1. Summary
|
|
61
|
+
- What we build:
|
|
62
|
+
- Why:
|
|
63
|
+
- Non-goals:
|
|
64
|
+
|
|
65
|
+
## 2. Assumptions & Constraints
|
|
66
|
+
- Assumptions:
|
|
67
|
+
- Constraints (tech/product/legal):
|
|
68
|
+
|
|
69
|
+
## 3. Architecture / Approach
|
|
70
|
+
- High-level approach:
|
|
71
|
+
- Components/modules:
|
|
72
|
+
- Data flow:
|
|
73
|
+
|
|
74
|
+
## 4. API / Contracts
|
|
75
|
+
### Endpoints / RPC
|
|
76
|
+
- <METHOD> <PATH>
|
|
77
|
+
- Request:
|
|
78
|
+
- Response:
|
|
79
|
+
- Auth:
|
|
80
|
+
- Errors:
|
|
81
|
+
- Status code:
|
|
82
|
+
- Error code:
|
|
83
|
+
- Message:
|
|
84
|
+
|
|
85
|
+
### Events / Jobs (if any)
|
|
86
|
+
- ...
|
|
87
|
+
|
|
88
|
+
## 5. Data model
|
|
89
|
+
- Tables/Collections changes:
|
|
90
|
+
- Migrations:
|
|
91
|
+
- Indexing:
|
|
92
|
+
|
|
93
|
+
## 6. Detailed business logic
|
|
94
|
+
### UC-1: <use case name>
|
|
95
|
+
- Steps:
|
|
96
|
+
- Validation:
|
|
97
|
+
- Permission checks:
|
|
98
|
+
- Edge cases:
|
|
99
|
+
- Idempotency (if needed):
|
|
100
|
+
|
|
101
|
+
## 7. Security
|
|
102
|
+
- AuthN/AuthZ:
|
|
103
|
+
- Input validation:
|
|
104
|
+
- Rate limit:
|
|
105
|
+
- Data privacy:
|
|
106
|
+
|
|
107
|
+
## 8. Observability
|
|
108
|
+
- Logs:
|
|
109
|
+
- Metrics:
|
|
110
|
+
- Tracing:
|
|
111
|
+
|
|
112
|
+
## 9. Rollout & Backward compatibility
|
|
113
|
+
- Feature flag:
|
|
114
|
+
- Migration/compatibility:
|
|
115
|
+
- Deployment steps:
|
|
116
|
+
- Rollback plan:
|
|
117
|
+
|
|
118
|
+
## 10. Test strategy (high level)
|
|
119
|
+
- Unit:
|
|
120
|
+
- Integration:
|
|
121
|
+
- E2E:
|
|
122
|
+
|
|
123
|
+
## 11. Task breakdown
|
|
124
|
+
- [ ] Backend:
|
|
125
|
+
- [ ] Frontend:
|
|
126
|
+
- [ ] Migration:
|
|
127
|
+
- [ ] Docs:
|
|
128
|
+
|
|
129
|
+
## 12. Risks / Open questions
|
|
130
|
+
- ...
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Prompt
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
You are a Staff Software Engineer.
|
|
137
|
+
Write an implementable technical design based on the requirement and coding rules.
|
|
138
|
+
|
|
139
|
+
LANGUAGE SETTING:
|
|
140
|
+
- Default: English (en)
|
|
141
|
+
- User can override by adding "Language: {vi|ja|ko}" in input
|
|
142
|
+
- Write in the specified language
|
|
143
|
+
|
|
144
|
+
INPUTS:
|
|
145
|
+
1) Requirement file: <file path containing task-id>
|
|
146
|
+
{USER INPUT HERE - MUST be a file path}
|
|
147
|
+
>>>
|
|
148
|
+
3) Task Mode (Optional): NEW | UPDATE
|
|
149
|
+
4) Coding rules: <paste content>
|
|
150
|
+
|
|
151
|
+
INSTRUCTIONS:
|
|
152
|
+
|
|
153
|
+
1. **Read Input File**:
|
|
154
|
+
- The user will provide a file path.
|
|
155
|
+
- Use available file-reading tool (e.g. `view_file`) to read content.
|
|
156
|
+
- **Fallback**: If tool is unavailable, ask user to paste content.
|
|
157
|
+
- IF input is NOT a file path, ask user to provide a file path.
|
|
158
|
+
- File paths can be anywhere in the filesystem, not limited to `/devflow-prompts`.
|
|
159
|
+
|
|
160
|
+
2. **Extract Task ID** (for file path input):
|
|
161
|
+
- Extract task-id from filename using pattern: `[A-Z]+-[0-9]+`
|
|
162
|
+
- Examples: `FEAT-001-requirement.md` → `FEAT-001`, `TASK-123.md` → `TASK-123`
|
|
163
|
+
- If no task-id found, ask user to provide it
|
|
164
|
+
|
|
165
|
+
3. **Existing System Awareness & Mode**:
|
|
166
|
+
- **IF Mode is UPDATE**:
|
|
167
|
+
- **MANDATORY**: Inspect the existing codebase using the structure defined in the **Coding Rules**.
|
|
168
|
+
- Use `list_dir` and `view_file` to analyze relevant files in the current workspace.
|
|
169
|
+
- **Impact Analysis**: Fill section 3.5 carefully. Identify ALL touched components with exact file paths if possible.
|
|
170
|
+
- **Backward Compatibility**: Explicitly state how old clients/data are supported.
|
|
171
|
+
- **Constraint Check**: Verify if changes violate any architectural boundary defined in Rules.
|
|
172
|
+
- **IF Mode is NEW**:
|
|
173
|
+
- Follow the architecture defined in **Coding Rules**.
|
|
174
|
+
- Align with the existing project structure (do not invent a new architecture unless the project is empty).
|
|
175
|
+
|
|
176
|
+
- **System Context**:
|
|
177
|
+
- Rely on the **Coding Rules** to understand the project structure (e.g., where `services`, `controllers` are located).
|
|
178
|
+
- Do not ask user for paths if they are standard/defined in rules.
|
|
179
|
+
|
|
180
|
+
4. **Coding rules**:
|
|
181
|
+
<<<
|
|
182
|
+
{paste coding rules - Architecture, BE, FE, Test, Security}
|
|
183
|
+
>>>
|
|
184
|
+
|
|
185
|
+
OUTPUT:
|
|
186
|
+
- Produce ONLY the markdown content for file: {#task-id}-design.md
|
|
187
|
+
- Follow EXACTLY this template structure:
|
|
188
|
+
<<<
|
|
189
|
+
{PASTE TEMPLATE ABOVE HERE}
|
|
190
|
+
>>>
|
|
191
|
+
|
|
192
|
+
RULES:
|
|
193
|
+
- Do not change requirements. If requirement is unclear, list it in "Risks / Open questions".
|
|
194
|
+
- Make concrete decisions: endpoints, validation rules, status/error codes, data model changes.
|
|
195
|
+
- Ensure compliance with coding rules (layering, naming, patterns).
|
|
196
|
+
- When making major design decisions, briefly state the rationale or trade-off.
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Rules/Guidelines
|
|
200
|
+
|
|
201
|
+
1. ✅ **Don't change requirements** - Unclear → "Risks/Open questions"
|
|
202
|
+
2. ✅ **Concrete decisions** - Endpoints, validation, error codes must be specific
|
|
203
|
+
3. ✅ **Follow coding rules** - Layering, naming, patterns
|
|
204
|
+
4. ✅ **Implementable** - Detailed enough for dev to implement immediately
|
|
205
|
+
5. ✅ **Testable** - Clear test strategy
|
|
206
|
+
|
|
207
|
+
## Usage Example
|
|
208
|
+
|
|
209
|
+
## Usage Example
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
/devflow.2-gen-design /devflow-prompts/specs/FEAT-001/FEAT-001-requirement.md
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Next Steps
|
|
216
|
+
|
|
217
|
+
After tech design is ready → run `/devflow.2-rev-design` to review
|