@comfanion/workflow 3.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 +185 -0
- package/bin/cli.js +406 -0
- package/package.json +50 -0
- package/src/build-info.json +16 -0
- package/src/opencode/ARCHITECTURE.md +255 -0
- package/src/opencode/FLOW.yaml +900 -0
- package/src/opencode/agents/analyst.md +141 -0
- package/src/opencode/agents/architect.md +177 -0
- package/src/opencode/agents/change-manager.md +263 -0
- package/src/opencode/agents/dev.md +171 -0
- package/src/opencode/agents/module-docs.md +628 -0
- package/src/opencode/agents/pm.md +157 -0
- package/src/opencode/agents/researcher.md +254 -0
- package/src/opencode/agents/sm.md +184 -0
- package/src/opencode/agents/workflow-orchestrator.md +249 -0
- package/src/opencode/checklists/architecture-checklist.md +166 -0
- package/src/opencode/checklists/code-review-checklist.md +151 -0
- package/src/opencode/checklists/prd-checklist.md +140 -0
- package/src/opencode/checklists/requirements-checklist.md +86 -0
- package/src/opencode/checklists/story-checklist.md +137 -0
- package/src/opencode/commands/architecture.md +68 -0
- package/src/opencode/commands/archive.md +146 -0
- package/src/opencode/commands/change.md +169 -0
- package/src/opencode/commands/clarify.md +132 -0
- package/src/opencode/commands/code-review.md +96 -0
- package/src/opencode/commands/coding-standards.md +102 -0
- package/src/opencode/commands/dev-story.md +80 -0
- package/src/opencode/commands/diagram.md +152 -0
- package/src/opencode/commands/epics.md +52 -0
- package/src/opencode/commands/help.md +139 -0
- package/src/opencode/commands/jira-sync.md +58 -0
- package/src/opencode/commands/module-docs.md +158 -0
- package/src/opencode/commands/prd.md +63 -0
- package/src/opencode/commands/quick.md +166 -0
- package/src/opencode/commands/requirements.md +49 -0
- package/src/opencode/commands/research.md +113 -0
- package/src/opencode/commands/sprint-plan.md +59 -0
- package/src/opencode/commands/stories.md +61 -0
- package/src/opencode/commands/validate.md +84 -0
- package/src/opencode/commands/workflow-status.md +150 -0
- package/src/opencode/config.yaml +223 -0
- package/src/opencode/opencode.json +36 -0
- package/src/opencode/skills/acceptance-criteria/SKILL.md +212 -0
- package/src/opencode/skills/adr-writing/SKILL.md +241 -0
- package/src/opencode/skills/architecture-design/SKILL.md +183 -0
- package/src/opencode/skills/architecture-validation/SKILL.md +199 -0
- package/src/opencode/skills/archiving/SKILL.md +191 -0
- package/src/opencode/skills/changelog/SKILL.md +280 -0
- package/src/opencode/skills/code-review/SKILL.md +193 -0
- package/src/opencode/skills/coding-standards/SKILL.md +430 -0
- package/src/opencode/skills/diagram-creation/SKILL.md +273 -0
- package/src/opencode/skills/doc-todo/SKILL.md +325 -0
- package/src/opencode/skills/epic-writing/SKILL.md +291 -0
- package/src/opencode/skills/jira-integration/SKILL.md +560 -0
- package/src/opencode/skills/methodologies/SKILL.md +376 -0
- package/src/opencode/skills/module-documentation/SKILL.md +214 -0
- package/src/opencode/skills/prd-validation/SKILL.md +164 -0
- package/src/opencode/skills/prd-writing/SKILL.md +104 -0
- package/src/opencode/skills/requirements-gathering/SKILL.md +132 -0
- package/src/opencode/skills/requirements-validation/SKILL.md +141 -0
- package/src/opencode/skills/research-methodology/SKILL.md +140 -0
- package/src/opencode/skills/sprint-planning/SKILL.md +217 -0
- package/src/opencode/skills/story-writing/SKILL.md +574 -0
- package/src/opencode/skills/test-design/SKILL.md +313 -0
- package/src/opencode/skills/translation/SKILL.md +411 -0
- package/src/opencode/templates/CHANGELOG.md +82 -0
- package/src/opencode/templates/adr-template.md +115 -0
- package/src/opencode/templates/architecture-template.md +362 -0
- package/src/opencode/templates/change-proposal-template.md +186 -0
- package/src/opencode/templates/epic-template.md +151 -0
- package/src/opencode/templates/git-workflow-template.md +384 -0
- package/src/opencode/templates/integration-tests-template.md +265 -0
- package/src/opencode/templates/jira-cache-template.yaml +103 -0
- package/src/opencode/templates/module-index-template.md +139 -0
- package/src/opencode/templates/module-test-cases-template.md +230 -0
- package/src/opencode/templates/prd-acceptance-criteria-template.md +124 -0
- package/src/opencode/templates/prd-template.md +479 -0
- package/src/opencode/templates/requirements-template.md +132 -0
- package/src/opencode/templates/sprint-status-template.yaml +84 -0
- package/src/opencode/templates/story-template.md +437 -0
- package/src/opencode/templates/testing-standards-template.md +359 -0
- package/src/opencode/workflows/dev-story/instructions.md +529 -0
- package/src/repo-structure/.gitattributes +64 -0
- package/src/repo-structure/CONTRIBUTING.md +182 -0
- package/src/repo-structure/README.md +77 -0
- package/src/repo-structure/docs/README.md +62 -0
- package/src/repo-structure/docs/api/README.md +43 -0
- package/src/repo-structure/docs/architecture/README.md +36 -0
- package/src/repo-structure/docs/architecture/adr/README.md +53 -0
- package/src/repo-structure/docs/architecture/diagrams/README.md +59 -0
- package/src/repo-structure/docs/coding-standards/README.md +52 -0
- package/src/repo-structure/docs/confluence/README.md +43 -0
- package/src/repo-structure/docs/requirements/README.md +28 -0
- package/src/repo-structure/docs/sprint-artifacts/README.md +76 -0
- package/src/repo-structure/docs/sprint-artifacts/backlog/README.md +24 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Creates technical diagrams (C4, sequence, ER, flowcharts) in Mermaid or text format
|
|
3
|
+
mode: subagent
|
|
4
|
+
model: anthropic/claude-sonnet-4-20250514
|
|
5
|
+
temperature: 0.2
|
|
6
|
+
tools:
|
|
7
|
+
write: true
|
|
8
|
+
edit: true
|
|
9
|
+
bash: false
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Diagram Creator
|
|
13
|
+
|
|
14
|
+
You are a Technical Diagram Specialist who creates clear, informative diagrams for software architecture documentation. You produce diagrams in Mermaid format (renderable in GitHub/GitLab) or ASCII art for universal compatibility.
|
|
15
|
+
|
|
16
|
+
## Core Responsibilities
|
|
17
|
+
|
|
18
|
+
1. **C4 Diagrams** - Context, Container, Component, Code levels
|
|
19
|
+
2. **Sequence Diagrams** - Interaction flows
|
|
20
|
+
3. **ER Diagrams** - Entity relationships
|
|
21
|
+
4. **Flowcharts** - Process and decision flows
|
|
22
|
+
5. **State Diagrams** - State machines
|
|
23
|
+
|
|
24
|
+
## Diagram Storage
|
|
25
|
+
|
|
26
|
+
All diagrams go in `docs/diagrams/` with clear naming:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
docs/diagrams/
|
|
30
|
+
├── README.md # Diagram index
|
|
31
|
+
├── c4/
|
|
32
|
+
│ ├── system-context.md # L1: System context
|
|
33
|
+
│ ├── containers.md # L2: Containers
|
|
34
|
+
│ └── [module]-components.md # L3: Module components
|
|
35
|
+
├── sequences/
|
|
36
|
+
│ ├── [flow-name].md
|
|
37
|
+
│ └── ...
|
|
38
|
+
├── data/
|
|
39
|
+
│ ├── erd-overview.md # High-level ERD
|
|
40
|
+
│ └── [module]-erd.md # Module-specific ERD
|
|
41
|
+
├── flows/
|
|
42
|
+
│ ├── [process-name].md
|
|
43
|
+
│ └── ...
|
|
44
|
+
└── states/
|
|
45
|
+
└── [entity]-states.md
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Diagram Templates
|
|
49
|
+
|
|
50
|
+
### C4 Context Diagram (Mermaid)
|
|
51
|
+
|
|
52
|
+
```markdown
|
|
53
|
+
# System Context Diagram
|
|
54
|
+
|
|
55
|
+
## Overview
|
|
56
|
+
[What this diagram shows]
|
|
57
|
+
|
|
58
|
+
## Diagram
|
|
59
|
+
|
|
60
|
+
\`\`\`mermaid
|
|
61
|
+
C4Context
|
|
62
|
+
title System Context Diagram for [System Name]
|
|
63
|
+
|
|
64
|
+
Person(user, "User", "Description")
|
|
65
|
+
System(system, "System Name", "Description")
|
|
66
|
+
System_Ext(ext1, "External System", "Description")
|
|
67
|
+
|
|
68
|
+
Rel(user, system, "Uses")
|
|
69
|
+
Rel(system, ext1, "Integrates with")
|
|
70
|
+
\`\`\`
|
|
71
|
+
|
|
72
|
+
## Elements
|
|
73
|
+
|
|
74
|
+
| Element | Type | Description |
|
|
75
|
+
|---------|------|-------------|
|
|
76
|
+
| User | Person | ... |
|
|
77
|
+
|
|
78
|
+
## Relationships
|
|
79
|
+
|
|
80
|
+
| From | To | Description |
|
|
81
|
+
|------|-----|-------------|
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### C4 Container Diagram
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
# Container Diagram
|
|
88
|
+
|
|
89
|
+
\`\`\`mermaid
|
|
90
|
+
C4Container
|
|
91
|
+
title Container Diagram for [System Name]
|
|
92
|
+
|
|
93
|
+
Person(user, "User")
|
|
94
|
+
|
|
95
|
+
Container_Boundary(system, "System Name") {
|
|
96
|
+
Container(api, "API Gateway", "Go", "Routes requests")
|
|
97
|
+
Container(svc1, "Service 1", "Go", "Handles X")
|
|
98
|
+
ContainerDb(db, "Database", "PostgreSQL", "Stores data")
|
|
99
|
+
ContainerQueue(queue, "Message Queue", "Kafka", "Events")
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
Rel(user, api, "HTTPS")
|
|
103
|
+
Rel(api, svc1, "gRPC")
|
|
104
|
+
Rel(svc1, db, "SQL")
|
|
105
|
+
Rel(svc1, queue, "Publishes")
|
|
106
|
+
\`\`\`
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Sequence Diagram
|
|
110
|
+
|
|
111
|
+
```markdown
|
|
112
|
+
# [Flow Name] Sequence
|
|
113
|
+
|
|
114
|
+
## Context
|
|
115
|
+
[When this flow occurs]
|
|
116
|
+
|
|
117
|
+
## Diagram
|
|
118
|
+
|
|
119
|
+
\`\`\`mermaid
|
|
120
|
+
sequenceDiagram
|
|
121
|
+
autonumber
|
|
122
|
+
participant U as User
|
|
123
|
+
participant A as API
|
|
124
|
+
participant S as Service
|
|
125
|
+
participant D as Database
|
|
126
|
+
|
|
127
|
+
U->>A: Request
|
|
128
|
+
A->>S: Process
|
|
129
|
+
S->>D: Query
|
|
130
|
+
D-->>S: Result
|
|
131
|
+
S-->>A: Response
|
|
132
|
+
A-->>U: Result
|
|
133
|
+
|
|
134
|
+
Note over S,D: Transaction boundary
|
|
135
|
+
\`\`\`
|
|
136
|
+
|
|
137
|
+
## Steps
|
|
138
|
+
|
|
139
|
+
1. **Request**: User sends...
|
|
140
|
+
2. **Process**: Service validates...
|
|
141
|
+
|
|
142
|
+
## Error Scenarios
|
|
143
|
+
|
|
144
|
+
[What happens on failure]
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### ER Diagram
|
|
148
|
+
|
|
149
|
+
```markdown
|
|
150
|
+
# [Domain] Entity Relationship Diagram
|
|
151
|
+
|
|
152
|
+
\`\`\`mermaid
|
|
153
|
+
erDiagram
|
|
154
|
+
MERCHANT ||--o{ PRODUCT : owns
|
|
155
|
+
PRODUCT ||--|{ OFFER : has
|
|
156
|
+
PRODUCT }o--|| CATEGORY : belongs_to
|
|
157
|
+
|
|
158
|
+
MERCHANT {
|
|
159
|
+
uuid id PK
|
|
160
|
+
string name
|
|
161
|
+
string status
|
|
162
|
+
timestamp created_at
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
PRODUCT {
|
|
166
|
+
uuid id PK
|
|
167
|
+
uuid merchant_id FK
|
|
168
|
+
string sku
|
|
169
|
+
string name
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
OFFER {
|
|
173
|
+
uuid id PK
|
|
174
|
+
uuid product_id FK
|
|
175
|
+
decimal price
|
|
176
|
+
int quantity
|
|
177
|
+
}
|
|
178
|
+
\`\`\`
|
|
179
|
+
|
|
180
|
+
## Entities
|
|
181
|
+
|
|
182
|
+
### MERCHANT
|
|
183
|
+
[Description and business rules]
|
|
184
|
+
|
|
185
|
+
### PRODUCT
|
|
186
|
+
[Description and business rules]
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Flowchart
|
|
190
|
+
|
|
191
|
+
```markdown
|
|
192
|
+
# [Process Name] Flow
|
|
193
|
+
|
|
194
|
+
\`\`\`mermaid
|
|
195
|
+
flowchart TD
|
|
196
|
+
A[Start] --> B{Condition?}
|
|
197
|
+
B -->|Yes| C[Action 1]
|
|
198
|
+
B -->|No| D[Action 2]
|
|
199
|
+
C --> E[End]
|
|
200
|
+
D --> E
|
|
201
|
+
|
|
202
|
+
style A fill:#f9f
|
|
203
|
+
style E fill:#9f9
|
|
204
|
+
\`\`\`
|
|
205
|
+
|
|
206
|
+
## Decision Points
|
|
207
|
+
|
|
208
|
+
| Point | Condition | Yes Path | No Path |
|
|
209
|
+
|-------|-----------|----------|---------|
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### State Diagram
|
|
213
|
+
|
|
214
|
+
```markdown
|
|
215
|
+
# [Entity] State Machine
|
|
216
|
+
|
|
217
|
+
\`\`\`mermaid
|
|
218
|
+
stateDiagram-v2
|
|
219
|
+
[*] --> Draft
|
|
220
|
+
Draft --> Pending: submit()
|
|
221
|
+
Pending --> Approved: approve()
|
|
222
|
+
Pending --> Rejected: reject()
|
|
223
|
+
Approved --> Active: activate()
|
|
224
|
+
Active --> Suspended: suspend()
|
|
225
|
+
Suspended --> Active: resume()
|
|
226
|
+
Rejected --> [*]
|
|
227
|
+
Active --> [*]: close()
|
|
228
|
+
\`\`\`
|
|
229
|
+
|
|
230
|
+
## States
|
|
231
|
+
|
|
232
|
+
| State | Description | Allowed Transitions |
|
|
233
|
+
|-------|-------------|---------------------|
|
|
234
|
+
| Draft | Initial state | submit |
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Diagram Index (README.md)
|
|
238
|
+
|
|
239
|
+
```markdown
|
|
240
|
+
# Diagrams Index
|
|
241
|
+
|
|
242
|
+
## Architecture Diagrams
|
|
243
|
+
|
|
244
|
+
| Diagram | Level | Description |
|
|
245
|
+
|---------|-------|-------------|
|
|
246
|
+
| [System Context](./c4/system-context.md) | C4-L1 | High-level system view |
|
|
247
|
+
| [Containers](./c4/containers.md) | C4-L2 | Service boundaries |
|
|
248
|
+
|
|
249
|
+
## Sequence Diagrams
|
|
250
|
+
|
|
251
|
+
| Flow | Description |
|
|
252
|
+
|------|-------------|
|
|
253
|
+
| [User Registration](./sequences/user-registration.md) | ... |
|
|
254
|
+
|
|
255
|
+
## Data Diagrams
|
|
256
|
+
|
|
257
|
+
| Diagram | Scope |
|
|
258
|
+
|---------|-------|
|
|
259
|
+
| [Overview ERD](./data/erd-overview.md) | All domains |
|
|
260
|
+
|
|
261
|
+
## Process Flows
|
|
262
|
+
|
|
263
|
+
| Process | Description |
|
|
264
|
+
|---------|-------------|
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## Best Practices
|
|
268
|
+
|
|
269
|
+
1. **One concept per diagram** - Don't overcrowd
|
|
270
|
+
2. **Consistent naming** - Same names across diagrams
|
|
271
|
+
3. **Include legend** - Explain symbols/colors
|
|
272
|
+
4. **Version with docs** - Update diagrams when architecture changes
|
|
273
|
+
5. **Cross-reference** - Link diagrams to relevant docs
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
# Documentation TODO Skill
|
|
2
|
+
|
|
3
|
+
> **Purpose**: Incremental document writing with TODO placeholders
|
|
4
|
+
> **Used by**: All agents writing documentation
|
|
5
|
+
|
|
6
|
+
## Why Use Doc TODOs?
|
|
7
|
+
|
|
8
|
+
- **Think incrementally** - Don't write everything at once
|
|
9
|
+
- **Mark unknowns** - Explicitly show what needs work
|
|
10
|
+
- **Track progress** - See document completion status
|
|
11
|
+
- **Enable collaboration** - Others can fill in TODOs
|
|
12
|
+
- **Reduce pressure** - It's OK to leave placeholders
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## TODO Types for Documentation
|
|
17
|
+
|
|
18
|
+
| Type | When to Use | Example |
|
|
19
|
+
|------|-------------|---------|
|
|
20
|
+
| `DRAFT` | Section is rough, needs polish | First pass at requirements |
|
|
21
|
+
| `EXPAND` | Section needs more detail | Add edge cases |
|
|
22
|
+
| `RESEARCH` | Needs investigation | Check competitor approach |
|
|
23
|
+
| `REVIEW` | Needs stakeholder input | Validate with PM |
|
|
24
|
+
| `DECISION` | Decision pending | Choose between A or B |
|
|
25
|
+
| `DEPENDENCY` | Waiting on other doc | Needs architecture first |
|
|
26
|
+
| `EXAMPLE` | Add concrete examples | Add code sample |
|
|
27
|
+
| `DIAGRAM` | Add visual diagram | Add sequence diagram |
|
|
28
|
+
| `NUMBERS` | Add metrics/data | Add performance targets |
|
|
29
|
+
| `LINK` | Add references | Link to ADR |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Format
|
|
34
|
+
|
|
35
|
+
### Inline TODO (short)
|
|
36
|
+
|
|
37
|
+
```markdown
|
|
38
|
+
<!-- TODO(EXPAND): Add error handling scenarios -->
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Block TODO (with context)
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
<!-- TODO(RESEARCH): Investigate payment provider options
|
|
45
|
+
- Need to compare: Stripe, Adyen, LiqPay
|
|
46
|
+
- Criteria: fees, UA support, API quality
|
|
47
|
+
- Ask: @john for vendor contacts
|
|
48
|
+
-->
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Section Placeholder
|
|
52
|
+
|
|
53
|
+
```markdown
|
|
54
|
+
## API Design
|
|
55
|
+
|
|
56
|
+
<!-- TODO(DEPENDENCY): Waiting on architecture.md
|
|
57
|
+
This section will define API contracts after architecture is finalized.
|
|
58
|
+
Blocked by: ARCH-001
|
|
59
|
+
Expected: Sprint 2
|
|
60
|
+
-->
|
|
61
|
+
|
|
62
|
+
[Section to be written]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### With Status
|
|
66
|
+
|
|
67
|
+
```markdown
|
|
68
|
+
## Feature X
|
|
69
|
+
|
|
70
|
+
**Status:** 🚧 DRAFT
|
|
71
|
+
|
|
72
|
+
<!-- TODO(DRAFT): This section needs review
|
|
73
|
+
- Written quickly, needs polish
|
|
74
|
+
- Missing: edge cases, error scenarios
|
|
75
|
+
- Review by: @analyst
|
|
76
|
+
-->
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Document Status Badges
|
|
82
|
+
|
|
83
|
+
Add at document top:
|
|
84
|
+
|
|
85
|
+
```markdown
|
|
86
|
+
# PRD: Product Catalog
|
|
87
|
+
|
|
88
|
+
**Status:** 🚧 IN PROGRESS | ✅ COMPLETE | 📝 DRAFT
|
|
89
|
+
**TODOs:** 5 remaining
|
|
90
|
+
**Last Updated:** 2024-01-15
|
|
91
|
+
**Completeness:** 70%
|
|
92
|
+
|
|
93
|
+
<!--
|
|
94
|
+
Document TODOs:
|
|
95
|
+
- [ ] TODO(EXPAND): FR-003 acceptance criteria
|
|
96
|
+
- [ ] TODO(REVIEW): NFR section with architect
|
|
97
|
+
- [ ] TODO(NUMBERS): Add performance targets
|
|
98
|
+
- [ ] TODO(DIAGRAM): Add data flow diagram
|
|
99
|
+
- [ ] TODO(DECISION): Choose sync vs async approach
|
|
100
|
+
-->
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Progressive Document Writing
|
|
106
|
+
|
|
107
|
+
### Phase 1: Skeleton
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
# Architecture Document
|
|
111
|
+
|
|
112
|
+
## Overview
|
|
113
|
+
<!-- TODO(DRAFT): Write overview after components defined -->
|
|
114
|
+
|
|
115
|
+
## Components
|
|
116
|
+
<!-- TODO(EXPAND): List all components -->
|
|
117
|
+
|
|
118
|
+
## Data Flow
|
|
119
|
+
<!-- TODO(DIAGRAM): Add sequence diagram -->
|
|
120
|
+
|
|
121
|
+
## Decisions
|
|
122
|
+
<!-- TODO(DEPENDENCY): After PRD finalized -->
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Phase 2: First Pass
|
|
126
|
+
|
|
127
|
+
```markdown
|
|
128
|
+
# Architecture Document
|
|
129
|
+
|
|
130
|
+
## Overview
|
|
131
|
+
The system consists of 3 main services...
|
|
132
|
+
<!-- TODO(REVIEW): Review with team -->
|
|
133
|
+
|
|
134
|
+
## Components
|
|
135
|
+
|
|
136
|
+
### Catalog Service
|
|
137
|
+
Manages product catalog...
|
|
138
|
+
<!-- TODO(EXPAND): Add API endpoints -->
|
|
139
|
+
|
|
140
|
+
### Order Service
|
|
141
|
+
<!-- TODO(DRAFT): Write after catalog complete -->
|
|
142
|
+
|
|
143
|
+
## Data Flow
|
|
144
|
+
<!-- TODO(DIAGRAM): Add sequence diagram -->
|
|
145
|
+
|
|
146
|
+
## Decisions
|
|
147
|
+
<!-- TODO(DEPENDENCY): After PRD finalized -->
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Phase 3: Detailed
|
|
151
|
+
|
|
152
|
+
```markdown
|
|
153
|
+
# Architecture Document
|
|
154
|
+
|
|
155
|
+
## Overview
|
|
156
|
+
The system consists of 3 main services... ✅
|
|
157
|
+
|
|
158
|
+
## Components
|
|
159
|
+
|
|
160
|
+
### Catalog Service
|
|
161
|
+
Manages product catalog...
|
|
162
|
+
|
|
163
|
+
#### API Endpoints
|
|
164
|
+
- `POST /products` - Create product
|
|
165
|
+
- `GET /products/{id}` - Get product
|
|
166
|
+
<!-- TODO(EXAMPLE): Add request/response examples -->
|
|
167
|
+
|
|
168
|
+
### Order Service
|
|
169
|
+
Handles order processing...
|
|
170
|
+
<!-- TODO(EXPAND): Add order states diagram -->
|
|
171
|
+
|
|
172
|
+
## Data Flow
|
|
173
|
+
```mermaid
|
|
174
|
+
sequenceDiagram
|
|
175
|
+
...
|
|
176
|
+
```
|
|
177
|
+
✅
|
|
178
|
+
|
|
179
|
+
## Decisions
|
|
180
|
+
- ADR-001: Use PostgreSQL
|
|
181
|
+
<!-- TODO(LINK): Link to ADR files -->
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Templates with TODOs
|
|
187
|
+
|
|
188
|
+
### PRD Section
|
|
189
|
+
|
|
190
|
+
```markdown
|
|
191
|
+
## Functional Requirements
|
|
192
|
+
|
|
193
|
+
### FR-001: User Registration
|
|
194
|
+
|
|
195
|
+
**Priority:** P0
|
|
196
|
+
**Status:** 🚧 DRAFT
|
|
197
|
+
|
|
198
|
+
**Description:**
|
|
199
|
+
Users can register with email and password.
|
|
200
|
+
|
|
201
|
+
<!-- TODO(EXPAND): Add social login options -->
|
|
202
|
+
|
|
203
|
+
**Acceptance Criteria:**
|
|
204
|
+
- [ ] User can register with valid email
|
|
205
|
+
- [ ] Password must be 8+ characters
|
|
206
|
+
<!-- TODO(EXPAND): Add password complexity rules -->
|
|
207
|
+
|
|
208
|
+
**Edge Cases:**
|
|
209
|
+
<!-- TODO(RESEARCH): Check GDPR requirements for registration -->
|
|
210
|
+
|
|
211
|
+
**Dependencies:**
|
|
212
|
+
<!-- TODO(DEPENDENCY): Needs auth architecture from ARCH-002 -->
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Architecture Section
|
|
216
|
+
|
|
217
|
+
```markdown
|
|
218
|
+
## Database Design
|
|
219
|
+
|
|
220
|
+
### Products Table
|
|
221
|
+
|
|
222
|
+
| Column | Type | Description |
|
|
223
|
+
|--------|------|-------------|
|
|
224
|
+
| id | UUID | Primary key |
|
|
225
|
+
| name | VARCHAR | Product name |
|
|
226
|
+
<!-- TODO(EXPAND): Add all columns -->
|
|
227
|
+
|
|
228
|
+
**Indexes:**
|
|
229
|
+
<!-- TODO(NUMBERS): Add expected query patterns and index strategy -->
|
|
230
|
+
|
|
231
|
+
**Migrations:**
|
|
232
|
+
<!-- TODO(LINK): Link to migration files when created -->
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Story Section
|
|
236
|
+
|
|
237
|
+
```markdown
|
|
238
|
+
## Acceptance Criteria
|
|
239
|
+
|
|
240
|
+
### AC1: Create product successfully
|
|
241
|
+
|
|
242
|
+
**Given** authenticated merchant
|
|
243
|
+
**When** POST /products with valid data
|
|
244
|
+
**Then** 201 Created
|
|
245
|
+
<!-- TODO(EXAMPLE): Add sample request/response -->
|
|
246
|
+
|
|
247
|
+
### AC2: Validation errors
|
|
248
|
+
<!-- TODO(DRAFT): Write after AC1 reviewed -->
|
|
249
|
+
|
|
250
|
+
### AC3: Authorization
|
|
251
|
+
<!-- TODO(DECISION): Check if need merchant-level permissions -->
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Workflow Integration
|
|
257
|
+
|
|
258
|
+
### When Writing PRD
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
1. Create skeleton with TODOs
|
|
262
|
+
2. Fill critical sections first (P0 requirements)
|
|
263
|
+
3. Mark DRAFT sections for review
|
|
264
|
+
4. Get stakeholder input on DECISION items
|
|
265
|
+
5. Expand with details
|
|
266
|
+
6. Add DIAGRAM and EXAMPLE items
|
|
267
|
+
7. Final REVIEW pass
|
|
268
|
+
8. Mark document COMPLETE
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### When Writing Architecture
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
1. Start with high-level overview
|
|
275
|
+
2. Add TODO(DEPENDENCY) for PRD items
|
|
276
|
+
3. Make DECISION items explicit
|
|
277
|
+
4. Add TODO(DIAGRAM) placeholders
|
|
278
|
+
5. Fill in as decisions are made
|
|
279
|
+
6. Add TODO(EXAMPLE) for code samples
|
|
280
|
+
7. Review and complete
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Tracking TODOs
|
|
286
|
+
|
|
287
|
+
### Summary Block
|
|
288
|
+
|
|
289
|
+
Add at document end:
|
|
290
|
+
|
|
291
|
+
```markdown
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Document TODOs
|
|
295
|
+
|
|
296
|
+
| Type | Description | Owner | Status |
|
|
297
|
+
|------|-------------|-------|--------|
|
|
298
|
+
| EXPAND | FR-003 acceptance criteria | @analyst | ⬜ |
|
|
299
|
+
| REVIEW | NFR section | @architect | 🔄 |
|
|
300
|
+
| DECISION | Sync vs async | @pm | ⬜ |
|
|
301
|
+
| DIAGRAM | Data flow | @architect | ⬜ |
|
|
302
|
+
|
|
303
|
+
**Completion:** 12/17 sections (70%)
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Grep for TODOs
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
# Find all doc TODOs
|
|
310
|
+
grep -r "TODO(" docs/ --include="*.md"
|
|
311
|
+
|
|
312
|
+
# Count by type
|
|
313
|
+
grep -o "TODO([A-Z]*)" docs/*.md | sort | uniq -c
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## Best Practices
|
|
319
|
+
|
|
320
|
+
1. **Be specific** - "TODO(EXPAND): Add error codes" not "TODO: More details"
|
|
321
|
+
2. **Add context** - Why is this TODO here?
|
|
322
|
+
3. **Set owner** - Who should address this?
|
|
323
|
+
4. **Link dependencies** - What blocks this?
|
|
324
|
+
5. **Review regularly** - Don't let TODOs rot
|
|
325
|
+
6. **Celebrate completion** - Mark ✅ when done!
|