musubi-sdd 6.0.0 → 6.1.1
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/bin/musubi-init.js +1 -1
- package/package.json +1 -1
- package/src/templates/agents/claude-code/skills/constitution-enforcer/SKILL.md +1 -1
- package/src/templates/agents/claude-code/skills/constitution-enforcer/phase-minus-one-gates.md +3 -3
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/SKILL.md +1 -1
- package/src/templates/agents/claude-code/skills/steering/auto-update-rules.md +6 -6
- package/src/templates/agents/claude-code/skills/traceability-auditor/SKILL.md +4 -4
- package/src/templates/agents/claude-code/skills/traceability-auditor/coverage-matrix-template.md +3 -3
- package/src/templates/agents/claude-code/skills/traceability-auditor/gap-detection-rules.md +3 -3
- package/src/templates/agents/github-copilot/commands/sdd-requirements.prompt.md +255 -42
package/bin/musubi-init.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "musubi-sdd",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.1.1",
|
|
4
4
|
"description": "Ultimate Specification Driven Development Tool with 27 Agents for 7 AI Coding Platforms + MCP Integration (Claude Code, GitHub Copilot, Cursor, Gemini CLI, Windsurf, Codex, Qwen Code)",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -616,4 +616,4 @@ Before finishing:
|
|
|
616
616
|
- [ ] Failures documented with severity
|
|
617
617
|
- [ ] Remediation plan provided
|
|
618
618
|
- [ ] Overall status determined (APPROVED/BLOCKED)
|
|
619
|
-
- [ ] Report saved to `storage/
|
|
619
|
+
- [ ] Report saved to `storage/specs/[feature]/constitutional-compliance.md`
|
package/src/templates/agents/claude-code/skills/constitution-enforcer/phase-minus-one-gates.md
CHANGED
|
@@ -192,9 +192,9 @@ def validate_traceability_setup(feature_name):
|
|
|
192
192
|
Verify traceability chain is ready.
|
|
193
193
|
"""
|
|
194
194
|
required_artifacts = {
|
|
195
|
-
"requirements": f"storage/
|
|
196
|
-
"design": f"storage/
|
|
197
|
-
"tasks": f"storage/
|
|
195
|
+
"requirements": f"storage/specs/{feature_name}/requirements.md",
|
|
196
|
+
"design": f"storage/specs/{feature_name}/design.md",
|
|
197
|
+
"tasks": f"storage/specs/{feature_name}/tasks.md",
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
for artifact, path in required_artifacts.items():
|
|
@@ -318,7 +318,7 @@ app.get('/health/live', (req, res) => {
|
|
|
318
318
|
|
|
319
319
|
### Phase 1: SLO Definition (Based on Requirements)
|
|
320
320
|
|
|
321
|
-
1. Read `storage/
|
|
321
|
+
1. Read `storage/specs/[feature]-requirements.md`
|
|
322
322
|
2. Identify non-functional requirements (performance, availability)
|
|
323
323
|
3. Define SLIs and SLOs
|
|
324
324
|
4. Calculate error budgets
|
|
@@ -107,7 +107,7 @@ git diff --name-only | grep -E "(webpack|vite|rollup|esbuild)\.config\."
|
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
109
|
# New feature directories
|
|
110
|
-
git diff --name-only --diff-filter=A | grep "storage/
|
|
110
|
+
git diff --name-only --diff-filter=A | grep "storage/specs/"
|
|
111
111
|
|
|
112
112
|
# New requirement files
|
|
113
113
|
git diff --name-only --diff-filter=A | grep "requirements\.md"
|
|
@@ -154,7 +154,7 @@ git diff --name-only --diff-filter=A | grep "requirements\.md"
|
|
|
154
154
|
|
|
155
155
|
### memories/architecture_decisions.md
|
|
156
156
|
|
|
157
|
-
**Trigger**: New ADR created in `storage/
|
|
157
|
+
**Trigger**: New ADR created in `storage/specs/*/design.md`
|
|
158
158
|
|
|
159
159
|
**Action**:
|
|
160
160
|
|
|
@@ -245,8 +245,8 @@ diff <(grep "dependencies" steering/tech.md) <(cat package.json | jq '.dependenc
|
|
|
245
245
|
# 2. Check if structure.md directories match actual structure
|
|
246
246
|
diff <(grep -E "^-\s+" steering/structure.md | cut -d' ' -f2) <(find src -type d -maxdepth 2)
|
|
247
247
|
|
|
248
|
-
# 3. Check if product.md features match storage/
|
|
249
|
-
diff <(grep "Feature" steering/product.md) <(ls storage/
|
|
248
|
+
# 3. Check if product.md features match storage/specs/
|
|
249
|
+
diff <(grep "Feature" steering/product.md) <(ls storage/specs/)
|
|
250
250
|
```
|
|
251
251
|
|
|
252
252
|
### Report Divergence
|
|
@@ -268,7 +268,7 @@ diff <(grep "Feature" steering/product.md) <(ls storage/features/)
|
|
|
268
268
|
|
|
269
269
|
### product.md
|
|
270
270
|
|
|
271
|
-
- ⚠️ Missing feature: payment-integration (in storage/
|
|
271
|
+
- ⚠️ Missing feature: payment-integration (in storage/specs/)
|
|
272
272
|
|
|
273
273
|
## Recommendations
|
|
274
274
|
|
|
@@ -310,7 +310,7 @@ on:
|
|
|
310
310
|
paths:
|
|
311
311
|
- 'package.json'
|
|
312
312
|
- 'src/**'
|
|
313
|
-
- 'storage/
|
|
313
|
+
- 'storage/specs/**'
|
|
314
314
|
|
|
315
315
|
jobs:
|
|
316
316
|
check-steering:
|
|
@@ -101,9 +101,9 @@ Test Suite (tests/auth/service.test.ts)
|
|
|
101
101
|
|
|
102
102
|
### Phase 1: Collect Artifacts
|
|
103
103
|
|
|
104
|
-
1. Read `storage/
|
|
105
|
-
2. Read `storage/
|
|
106
|
-
3. Read `storage/
|
|
104
|
+
1. Read `storage/specs/[feature]-requirements.md`
|
|
105
|
+
2. Read `storage/specs/[feature]-design.md`
|
|
106
|
+
3. Read `storage/specs/[feature]-tasks.md`
|
|
107
107
|
4. Scan source code for implementation
|
|
108
108
|
5. Scan test files for test cases
|
|
109
109
|
|
|
@@ -290,7 +290,7 @@ coverage_test = (requirements_with_tests / requirements_total) * 100
|
|
|
290
290
|
- **After**:
|
|
291
291
|
- If gaps found → orchestrator triggers missing skills
|
|
292
292
|
- If complete → quality-assurance approves release
|
|
293
|
-
- **Uses**: All spec files in `storage/
|
|
293
|
+
- **Uses**: All spec files in `storage/specs/` and `storage/changes/`
|
|
294
294
|
|
|
295
295
|
## Gap Detection Rules
|
|
296
296
|
|
package/src/templates/agents/claude-code/skills/traceability-auditor/coverage-matrix-template.md
CHANGED
|
@@ -99,9 +99,9 @@ Template for creating traceability coverage matrices that ensure 100% compliance
|
|
|
99
99
|
def generate_traceability_matrix(feature_name):
|
|
100
100
|
"""Generate traceability matrix for a feature."""
|
|
101
101
|
|
|
102
|
-
requirements = parse_requirements(f"storage/
|
|
103
|
-
design = parse_design(f"storage/
|
|
104
|
-
tasks = parse_tasks(f"storage/
|
|
102
|
+
requirements = parse_requirements(f"storage/specs/{feature_name}-requirements.md")
|
|
103
|
+
design = parse_design(f"storage/specs/{feature_name}-design.md")
|
|
104
|
+
tasks = parse_tasks(f"storage/specs/{feature_name}-tasks.md")
|
|
105
105
|
code_files = find_code_files(f"src/{feature_name}/")
|
|
106
106
|
test_files = find_test_files(f"tests/{feature_name}/")
|
|
107
107
|
|
|
@@ -94,8 +94,8 @@ for ref in all_references:
|
|
|
94
94
|
#!/bin/bash
|
|
95
95
|
# find-orphaned-requirements.sh
|
|
96
96
|
|
|
97
|
-
REQ_FILE="storage/
|
|
98
|
-
DESIGN_FILE="storage/
|
|
97
|
+
REQ_FILE="storage/specs/$1-requirements.md"
|
|
98
|
+
DESIGN_FILE="storage/specs/$1-design.md"
|
|
99
99
|
|
|
100
100
|
# Extract requirement IDs
|
|
101
101
|
grep -oP 'REQ-[\w-]+' "$REQ_FILE" | sort -u > /tmp/reqs.txt
|
|
@@ -212,7 +212,7 @@ name: Traceability Check
|
|
|
212
212
|
on:
|
|
213
213
|
pull_request:
|
|
214
214
|
paths:
|
|
215
|
-
- 'storage/
|
|
215
|
+
- 'storage/specs/**'
|
|
216
216
|
- 'src/**'
|
|
217
217
|
- 'tests/**'
|
|
218
218
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# SDD Requirements Command
|
|
2
2
|
|
|
3
|
-
Create EARS-format requirements specification.
|
|
3
|
+
Create EARS-format requirements specification through interactive dialogue.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## Instructions for
|
|
7
|
+
## Instructions for AI Agent
|
|
8
8
|
|
|
9
9
|
You are executing the `/sdd-requirements [feature-name]` command to create a requirements specification.
|
|
10
10
|
|
|
@@ -18,7 +18,14 @@ You are executing the `/sdd-requirements [feature-name]` command to create a req
|
|
|
18
18
|
|
|
19
19
|
### Your Task
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
**CRITICAL**: Before generating requirements, you MUST engage in an interactive 1-on-1 dialogue with the user to uncover the TRUE PURPOSE behind their request. Surface-level requirements often hide deeper needs.
|
|
22
|
+
|
|
23
|
+
### Output Directory
|
|
24
|
+
|
|
25
|
+
**Requirements documents are saved to**: `storage/specs/`
|
|
26
|
+
|
|
27
|
+
- English: `storage/specs/{{feature-name}}-requirements.md`
|
|
28
|
+
- Japanese: `storage/specs/{{feature-name}}-requirements.ja.md`
|
|
22
29
|
|
|
23
30
|
---
|
|
24
31
|
|
|
@@ -44,28 +51,142 @@ steering/tech.md # Technology stack
|
|
|
44
51
|
|
|
45
52
|
---
|
|
46
53
|
|
|
47
|
-
### 2.
|
|
54
|
+
### 2. Interactive True Purpose Discovery (1-on-1 Dialogue)
|
|
55
|
+
|
|
56
|
+
**CRITICAL RULE**: You MUST ask exactly ONE question, then STOP and WAIT for the user's response. Do NOT ask multiple questions at once. Do NOT list all questions. Do NOT proceed until the user answers.
|
|
57
|
+
|
|
58
|
+
#### Dialogue Rules (MANDATORY)
|
|
48
59
|
|
|
49
|
-
**
|
|
60
|
+
1. **ONE QUESTION ONLY**: Ask a single question per turn
|
|
61
|
+
2. **STOP AND WAIT**: After asking, end your response immediately
|
|
62
|
+
3. **NO QUESTION LISTS**: Never show "Q1, Q2, Q3..." format
|
|
63
|
+
4. **SEQUENTIAL FLOW**: Move to next question only after receiving an answer
|
|
50
64
|
|
|
51
|
-
####
|
|
65
|
+
#### Phase 1: Surface Purpose → True Purpose Discovery
|
|
52
66
|
|
|
53
|
-
|
|
67
|
+
**Question Sequence** (Ask ONE at a time, wait for answer before next):
|
|
54
68
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
69
|
+
**Turn 1**: Start with the WHY question
|
|
70
|
+
```
|
|
71
|
+
この機能で解決したい『本当の課題』は何ですか?
|
|
72
|
+
```
|
|
73
|
+
→ STOP HERE. Wait for user response.
|
|
60
74
|
|
|
61
|
-
|
|
75
|
+
**Turn 2**: Based on answer, ask WHO question
|
|
76
|
+
```
|
|
77
|
+
この機能を最も必要としているのは誰ですか?
|
|
78
|
+
```
|
|
79
|
+
→ STOP HERE. Wait for user response.
|
|
80
|
+
|
|
81
|
+
**Turn 3**: Ask WHAT-IF question
|
|
82
|
+
```
|
|
83
|
+
もしこの機能が完璧に動作したら、何が変わりますか?
|
|
84
|
+
```
|
|
85
|
+
→ STOP HERE. Wait for user response.
|
|
86
|
+
|
|
87
|
+
**Turn 4**: Ask CONSTRAINT question
|
|
88
|
+
```
|
|
89
|
+
この機能で『絶対にやってはいけないこと』はありますか?
|
|
90
|
+
```
|
|
91
|
+
→ STOP HERE. Wait for user response.
|
|
92
|
+
|
|
93
|
+
**Turn 5**: Ask SUCCESS CRITERIA question
|
|
94
|
+
```
|
|
95
|
+
この機能が『成功した』と言えるのはどんな状態ですか?
|
|
96
|
+
```
|
|
97
|
+
→ STOP HERE. Wait for user response.
|
|
98
|
+
|
|
99
|
+
**After 5+ turns**: Summarize and confirm
|
|
100
|
+
```
|
|
101
|
+
ここまでの理解を確認させてください:
|
|
102
|
+
[Summary]
|
|
103
|
+
この理解で正しいですか?
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
#### Example Dialogue Flow
|
|
107
|
+
|
|
108
|
+
**AI Turn 1**:
|
|
109
|
+
> まず、この機能について教えてください。
|
|
110
|
+
>
|
|
111
|
+
> **この機能で解決したい『本当の課題』は何ですか?**
|
|
112
|
+
|
|
113
|
+
**User**: "CSVから社員データをインポートしたい"
|
|
114
|
+
|
|
115
|
+
**AI Turn 2**:
|
|
116
|
+
> なるほど、社員データのCSVインポートですね。
|
|
117
|
+
>
|
|
118
|
+
> **このインポート機能を最も必要としているのは誰ですか?**(人事部?IT管理者?)
|
|
119
|
+
|
|
120
|
+
**User**: "人事部です"
|
|
121
|
+
|
|
122
|
+
**AI Turn 3**:
|
|
123
|
+
> 人事部の方が使うのですね。
|
|
124
|
+
>
|
|
125
|
+
> **もしこの機能が完璧に動作したら、人事部の業務はどう変わりますか?**
|
|
126
|
+
|
|
127
|
+
...(continues one question at a time)
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### 3. MECE Analysis (Comprehensive Coverage)
|
|
132
|
+
|
|
133
|
+
**After understanding the TRUE PURPOSE, apply MECE to ensure completeness.**
|
|
134
|
+
|
|
135
|
+
#### MECE Dimensions for Requirements
|
|
136
|
+
|
|
137
|
+
**Dimension 1: User Journey (Who × When × Where)**
|
|
138
|
+
| Stage | Questions to Cover |
|
|
139
|
+
|-------|--------------------|
|
|
140
|
+
| Before | How do users discover/access this feature? |
|
|
141
|
+
| During | What is the core interaction flow? |
|
|
142
|
+
| After | What happens after completion? Notifications? |
|
|
143
|
+
| Error | What happens when something goes wrong? |
|
|
144
|
+
|
|
145
|
+
**Dimension 2: Data Lifecycle (CRUD)**
|
|
146
|
+
| Operation | Check |
|
|
147
|
+
|-----------|-------|
|
|
148
|
+
| Create | What data is created? By whom? |
|
|
149
|
+
| Read | Who can view? What format? |
|
|
150
|
+
| Update | What can be modified? By whom? |
|
|
151
|
+
| Delete | Soft delete? Hard delete? Retention? |
|
|
152
|
+
|
|
153
|
+
**Dimension 3: Cross-Cutting Concerns**
|
|
154
|
+
| Concern | Requirements |
|
|
155
|
+
|---------|-------------|
|
|
156
|
+
| Security | Authentication, Authorization, Encryption |
|
|
157
|
+
| Performance | Response time, Throughput, Concurrency |
|
|
158
|
+
| Reliability | Error handling, Recovery, Failover |
|
|
159
|
+
| Scalability | Load limits, Growth capacity |
|
|
160
|
+
| Compliance | GDPR, SOC2, PCI-DSS (if applicable) |
|
|
161
|
+
|
|
162
|
+
**Dimension 4: Integration Points**
|
|
163
|
+
| Integration | Check |
|
|
164
|
+
|-------------|-------|
|
|
165
|
+
| Upstream | What systems feed data to this feature? |
|
|
166
|
+
| Downstream | What systems consume this feature's output? |
|
|
167
|
+
| External | Any third-party APIs or services? |
|
|
168
|
+
|
|
169
|
+
**MECE Completeness Check**:
|
|
170
|
+
- [ ] All user types covered?
|
|
171
|
+
- [ ] All states (normal, edge, error) covered?
|
|
172
|
+
- [ ] All data flows covered?
|
|
173
|
+
- [ ] All integration points covered?
|
|
174
|
+
- [ ] No overlapping requirements?
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
### 4. Research Existing System (Brownfield)
|
|
179
|
+
|
|
180
|
+
**If modifying existing functionality**:
|
|
62
181
|
|
|
63
182
|
- Search for existing implementation: `grep -r "{{feature}}" src/`
|
|
64
183
|
- Read related code
|
|
65
184
|
- Identify current behavior
|
|
66
185
|
- Document what needs to change (delta spec)
|
|
67
186
|
|
|
68
|
-
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
### 5. Contextual Research
|
|
69
190
|
|
|
70
191
|
- Analyze steering/product.md for user types
|
|
71
192
|
- Review existing requirements docs
|
|
@@ -73,7 +194,9 @@ Use `AskUserQuestion` tool to ask:
|
|
|
73
194
|
|
|
74
195
|
---
|
|
75
196
|
|
|
76
|
-
###
|
|
197
|
+
### 6. Generate Requirements Document
|
|
198
|
+
|
|
199
|
+
**Output Directory**: `storage/specs/`
|
|
77
200
|
|
|
78
201
|
Use template from `templates/requirements.md`:
|
|
79
202
|
|
|
@@ -84,13 +207,41 @@ Use template from `templates/requirements.md`:
|
|
|
84
207
|
|
|
85
208
|
## Overview
|
|
86
209
|
|
|
87
|
-
- Purpose
|
|
210
|
+
- Purpose (True Purpose discovered through dialogue)
|
|
88
211
|
- Scope (in/out)
|
|
89
212
|
- Business context (from steering/product.md)
|
|
90
213
|
|
|
214
|
+
## True Purpose Statement
|
|
215
|
+
|
|
216
|
+
[Summary of TRUE PURPOSE uncovered through dialogue]
|
|
217
|
+
|
|
218
|
+
- Surface Request: [What user initially asked for]
|
|
219
|
+
- True Purpose: [What user actually needs]
|
|
220
|
+
- Key Insight: [Critical understanding gained]
|
|
221
|
+
|
|
91
222
|
## Stakeholders
|
|
92
223
|
|
|
93
|
-
[Table of roles]
|
|
224
|
+
[Table of roles identified through dialogue]
|
|
225
|
+
|
|
226
|
+
## MECE Coverage Summary
|
|
227
|
+
|
|
228
|
+
### User Journey Coverage
|
|
229
|
+
- [ ] Before: Entry/Discovery
|
|
230
|
+
- [ ] During: Core Flow
|
|
231
|
+
- [ ] After: Completion
|
|
232
|
+
- [ ] Error: Exception Handling
|
|
233
|
+
|
|
234
|
+
### Data Lifecycle Coverage
|
|
235
|
+
- [ ] Create
|
|
236
|
+
- [ ] Read
|
|
237
|
+
- [ ] Update
|
|
238
|
+
- [ ] Delete
|
|
239
|
+
|
|
240
|
+
### Cross-Cutting Concerns
|
|
241
|
+
- [ ] Security
|
|
242
|
+
- [ ] Performance
|
|
243
|
+
- [ ] Reliability
|
|
244
|
+
- [ ] Scalability
|
|
94
245
|
|
|
95
246
|
## Functional Requirements
|
|
96
247
|
|
|
@@ -98,6 +249,8 @@ Use template from `templates/requirements.md`:
|
|
|
98
249
|
|
|
99
250
|
[EARS Pattern - choose appropriate pattern]
|
|
100
251
|
|
|
252
|
+
**MECE Category**: [User Journey Stage | Data Operation | etc.]
|
|
253
|
+
|
|
101
254
|
**Acceptance Criteria**:
|
|
102
255
|
|
|
103
256
|
- [Testable criterion 1]
|
|
@@ -119,6 +272,10 @@ Use template from `templates/requirements.md`:
|
|
|
119
272
|
|
|
120
273
|
### REQ-AVAIL-001: Availability
|
|
121
274
|
|
|
275
|
+
## MECE Gap Analysis
|
|
276
|
+
|
|
277
|
+
[List any gaps identified during MECE analysis]
|
|
278
|
+
|
|
122
279
|
## Requirements Coverage Matrix
|
|
123
280
|
|
|
124
281
|
[Initial table - will be filled during design/implementation]
|
|
@@ -126,7 +283,7 @@ Use template from `templates/requirements.md`:
|
|
|
126
283
|
|
|
127
284
|
---
|
|
128
285
|
|
|
129
|
-
###
|
|
286
|
+
### 7. Apply EARS Format (Article IV)
|
|
130
287
|
|
|
131
288
|
**CRITICAL**: All requirements MUST use one of 5 EARS patterns.
|
|
132
289
|
|
|
@@ -150,10 +307,11 @@ Each requirement MUST have:
|
|
|
150
307
|
- [ ] Testable acceptance criteria
|
|
151
308
|
- [ ] Priority (P0/P1/P2/P3)
|
|
152
309
|
- [ ] Status (Draft initially)
|
|
310
|
+
- [ ] MECE Category (for traceability)
|
|
153
311
|
|
|
154
312
|
---
|
|
155
313
|
|
|
156
|
-
###
|
|
314
|
+
### 8. Assign Requirement IDs
|
|
157
315
|
|
|
158
316
|
**Format**: `REQ-[COMPONENT]-[NUMBER]`
|
|
159
317
|
|
|
@@ -172,7 +330,7 @@ Each requirement MUST have:
|
|
|
172
330
|
|
|
173
331
|
---
|
|
174
332
|
|
|
175
|
-
###
|
|
333
|
+
### 9. Add Non-Functional Requirements (from MECE Cross-Cutting Concerns)
|
|
176
334
|
|
|
177
335
|
Always include these categories:
|
|
178
336
|
|
|
@@ -221,7 +379,7 @@ The {{COMPONENT}} SHALL maintain 99.9% uptime.
|
|
|
221
379
|
|
|
222
380
|
---
|
|
223
381
|
|
|
224
|
-
###
|
|
382
|
+
### 10. Brownfield: Create Delta Specification
|
|
225
383
|
|
|
226
384
|
If this is a change to existing system, add delta sections:
|
|
227
385
|
|
|
@@ -266,7 +424,7 @@ The authentication system SHALL hash passwords using bcrypt cost 12.
|
|
|
266
424
|
|
|
267
425
|
---
|
|
268
426
|
|
|
269
|
-
###
|
|
427
|
+
### 11. Constitutional Validation
|
|
270
428
|
|
|
271
429
|
Validate requirements against constitutional articles:
|
|
272
430
|
|
|
@@ -290,10 +448,12 @@ Run validation:
|
|
|
290
448
|
|
|
291
449
|
---
|
|
292
450
|
|
|
293
|
-
###
|
|
451
|
+
### 12. Save Document (Bilingual)
|
|
294
452
|
|
|
295
453
|
**IMPORTANT**: Create BOTH English and Japanese versions.
|
|
296
454
|
|
|
455
|
+
**Output Directory**: `storage/specs/`
|
|
456
|
+
|
|
297
457
|
**English version (Primary/Reference)**:
|
|
298
458
|
Save to: `storage/specs/{{feature-name}}-requirements.md`
|
|
299
459
|
|
|
@@ -323,7 +483,7 @@ Save to: `storage/specs/{{feature-name}}-requirements.ja.md`
|
|
|
323
483
|
|
|
324
484
|
---
|
|
325
485
|
|
|
326
|
-
###
|
|
486
|
+
### 13. Generate Summary
|
|
327
487
|
|
|
328
488
|
Present summary to user:
|
|
329
489
|
|
|
@@ -331,11 +491,25 @@ Present summary to user:
|
|
|
331
491
|
## ✅ Requirements Specification Complete
|
|
332
492
|
|
|
333
493
|
**Feature**: {{FEATURE_NAME}}
|
|
494
|
+
**Output Directory**: `storage/specs/`
|
|
334
495
|
**Files**:
|
|
335
496
|
|
|
336
497
|
- English: storage/specs/{{feature-name}}-requirements.md
|
|
337
498
|
- Japanese: storage/specs/{{feature-name}}-requirements.ja.md
|
|
338
499
|
|
|
500
|
+
### True Purpose Discovery:
|
|
501
|
+
|
|
502
|
+
- Surface Request: [What user initially asked]
|
|
503
|
+
- True Purpose: [What user actually needs]
|
|
504
|
+
- Key Insight: [Critical understanding gained]
|
|
505
|
+
|
|
506
|
+
### MECE Coverage:
|
|
507
|
+
|
|
508
|
+
- User Journey: ✅ All stages covered
|
|
509
|
+
- Data Lifecycle: ✅ CRUD covered
|
|
510
|
+
- Cross-Cutting: ✅ Security/Performance/Reliability/Scalability
|
|
511
|
+
- Integrations: ✅ Upstream/Downstream/External
|
|
512
|
+
|
|
339
513
|
### Summary:
|
|
340
514
|
|
|
341
515
|
- **Total Requirements**: [N]
|
|
@@ -381,28 +555,54 @@ Present summary to user:
|
|
|
381
555
|
### User Command:
|
|
382
556
|
|
|
383
557
|
```bash
|
|
384
|
-
|
|
558
|
+
#sdd-requirements authentication
|
|
385
559
|
```
|
|
386
560
|
|
|
387
|
-
###
|
|
561
|
+
### AI Agent Actions:
|
|
388
562
|
|
|
389
563
|
1. **Read Steering**:
|
|
390
564
|
- `steering/product.md` → Target users: B2B SaaS companies
|
|
391
565
|
- `steering/tech.md` → Stack: Next.js, PostgreSQL, Prisma
|
|
392
566
|
- `steering/structure.md` → Pattern: Library-first
|
|
393
567
|
|
|
394
|
-
2. **
|
|
568
|
+
2. **Interactive Dialogue (1-on-1)**:
|
|
395
569
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
570
|
+
**AI**: 「認証機能について、この機能で解決したい『本当の課題』は何ですか?」
|
|
571
|
+
|
|
572
|
+
**User**: 「ユーザーがログインできるようにしたい」
|
|
573
|
+
|
|
574
|
+
**AI**: 「なるほど。では、この機能がないと、誰がどのように困りますか?」
|
|
575
|
+
|
|
576
|
+
**User**: 「顧客がサービスを使えない。また、管理者が顧客データを保護できない」
|
|
577
|
+
|
|
578
|
+
**AI**: 「顧客データの保護が重要なのですね。この機能で『絶対にやってはいけないこと』はありますか?」
|
|
579
|
+
|
|
580
|
+
**User**: 「データ漏洩。SOC2準拠が必要」
|
|
581
|
+
|
|
582
|
+
**AI**: 「SOC2準拠が必要とのこと。この機能が『成功した』と言えるのはどんな状態ですか?」
|
|
583
|
+
|
|
584
|
+
**User**: 「ログイン成功率99%以上、不正アクセスゼロ」
|
|
585
|
+
|
|
586
|
+
**AI**: 「理解しました。確認させてください:
|
|
587
|
+
- **表面的要求**: ユーザーがログインできること
|
|
588
|
+
- **真の目的**: SOC2準拠でセキュアな顧客データ保護
|
|
589
|
+
- **成功基準**: ログイン成功率99%以上、不正アクセスゼロ
|
|
590
|
+
この理解で正しいですか?」
|
|
402
591
|
|
|
403
|
-
3. **
|
|
592
|
+
3. **MECE Analysis**:
|
|
593
|
+
- User Journey: Login → Session → Logout → Error handling
|
|
594
|
+
- Data: Credentials(C), Session(RUD), Audit Log(CR)
|
|
595
|
+
- Security: Authentication, Authorization, Encryption, Audit
|
|
596
|
+
|
|
597
|
+
4. **Generate Requirements**:
|
|
404
598
|
|
|
405
599
|
```markdown
|
|
600
|
+
## True Purpose Statement
|
|
601
|
+
|
|
602
|
+
- Surface Request: ユーザーログイン機能
|
|
603
|
+
- True Purpose: SOC2準拠のセキュアな顧客データ保護基盤
|
|
604
|
+
- Key Insight: 単なるログインではなく、コンプライアンス要件が重要
|
|
605
|
+
|
|
406
606
|
### REQ-AUTH-001: User Login
|
|
407
607
|
|
|
408
608
|
WHEN a user provides valid credentials,
|
|
@@ -410,19 +610,19 @@ Present summary to user:
|
|
|
410
610
|
AND the system SHALL create a session
|
|
411
611
|
AND the system SHALL redirect to dashboard.
|
|
412
612
|
|
|
413
|
-
|
|
613
|
+
**MECE Category**: User Journey - During
|
|
414
614
|
|
|
415
|
-
|
|
615
|
+
### REQ-AUTH-002: Audit Logging (SOC2)
|
|
416
616
|
|
|
417
|
-
|
|
418
|
-
|
|
617
|
+
The authentication system SHALL log all authentication events
|
|
618
|
+
with timestamp, user ID, IP address, and result.
|
|
419
619
|
|
|
420
|
-
|
|
620
|
+
**MECE Category**: Cross-Cutting - Security/Compliance
|
|
421
621
|
```
|
|
422
622
|
|
|
423
|
-
|
|
623
|
+
5. **Save to Output Directory**: `storage/specs/authentication-requirements.md`
|
|
424
624
|
|
|
425
|
-
|
|
625
|
+
6. **Summarize**: Present summary with MECE coverage report
|
|
426
626
|
|
|
427
627
|
---
|
|
428
628
|
|
|
@@ -446,15 +646,18 @@ Present summary to user:
|
|
|
446
646
|
|
|
447
647
|
Before completing, verify:
|
|
448
648
|
|
|
649
|
+
- [ ] Interactive dialogue conducted (TRUE PURPOSE discovered)
|
|
650
|
+
- [ ] MECE analysis completed (all dimensions covered)
|
|
449
651
|
- [ ] Steering context read and applied
|
|
450
652
|
- [ ] All requirements in EARS format
|
|
451
653
|
- [ ] Requirement IDs assigned (REQ-XXX-NNN)
|
|
654
|
+
- [ ] MECE category assigned to each requirement
|
|
452
655
|
- [ ] Acceptance criteria defined for each requirement
|
|
453
656
|
- [ ] Priority assigned (P0/P1/P2/P3)
|
|
454
657
|
- [ ] Non-functional requirements included
|
|
455
658
|
- [ ] Constitutional validation passed
|
|
456
659
|
- [ ] Document saved to storage/specs/
|
|
457
|
-
- [ ] Summary presented to user
|
|
660
|
+
- [ ] Summary with MECE coverage presented to user
|
|
458
661
|
|
|
459
662
|
---
|
|
460
663
|
|
|
@@ -486,4 +689,14 @@ If `storage/specs/{{feature-name}}-requirements.md` exists:
|
|
|
486
689
|
|
|
487
690
|
---
|
|
488
691
|
|
|
692
|
+
**Output Directory Summary**:
|
|
693
|
+
- Requirements documents: `storage/specs/{{feature-name}}-requirements.md`
|
|
694
|
+
- Japanese version: `storage/specs/{{feature-name}}-requirements.ja.md`
|
|
695
|
+
|
|
696
|
+
---
|
|
697
|
+
|
|
698
|
+
**Execution**: Begin interactive dialogue now for the specified feature.
|
|
699
|
+
|
|
700
|
+
---
|
|
701
|
+
|
|
489
702
|
**Execution**: Begin requirements generation now for the specified feature.
|