triples-agentic 2.4.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/LICENSE +21 -0
- package/README.md +326 -0
- package/docs/workflow.md +163 -0
- package/install.sh +98 -0
- package/package.json +54 -0
- package/src/agents/README.md +85 -0
- package/src/agents/jiwoo-prd.md +84 -0
- package/src/agents/kaede-backend.md +95 -0
- package/src/agents/kotone-flutter.md +100 -0
- package/src/agents/lynn-testcase.md +92 -0
- package/src/agents/nakyoung-tasks.md +89 -0
- package/src/agents/seoyeon.md +76 -0
- package/src/agents/shion-qa.md +89 -0
- package/src/agents/sohyun-ios.md +97 -0
- package/src/agents/yeonji-android.md +98 -0
- package/src/agents/yooyeon-rfc.md +82 -0
- package/src/agents/yubin-frontend.md +88 -0
- package/src/bin/setup.js +640 -0
- package/src/hooks/README.md +102 -0
- package/src/hooks/dangerous-commands.json +33 -0
- package/src/hooks/dangerous-commands.md +18 -0
- package/src/knowledge/README.md +129 -0
- package/src/knowledge/general/boy-scout-rule.md +13 -0
- package/src/knowledge/general/composition-over-inheritance.md +14 -0
- package/src/knowledge/general/dry.md +14 -0
- package/src/knowledge/general/fail-fast.md +13 -0
- package/src/knowledge/general/kiss.md +15 -0
- package/src/knowledge/general/least-surprise.md +13 -0
- package/src/knowledge/general/slap.md +29 -0
- package/src/knowledge/general/solid.md +44 -0
- package/src/knowledge/general/tdd.md +76 -0
- package/src/knowledge/general/yagni.md +12 -0
- package/src/knowledge/mobile/android/android-architecture.md +83 -0
- package/src/knowledge/mobile/android/android-platform.md +60 -0
- package/src/knowledge/mobile/android/kotlin-concurrency.md +75 -0
- package/src/knowledge/mobile/android/kotlin-core.md +88 -0
- package/src/knowledge/mobile/flutter/dart-async.md +93 -0
- package/src/knowledge/mobile/flutter/dart-core.md +97 -0
- package/src/knowledge/mobile/flutter/flutter-architecture.md +88 -0
- package/src/knowledge/mobile/flutter/flutter-platform.md +79 -0
- package/src/knowledge/mobile/ios/ios-architecture.md +88 -0
- package/src/knowledge/mobile/ios/ios-platform.md +66 -0
- package/src/knowledge/mobile/ios/swift-concurrency.md +99 -0
- package/src/knowledge/mobile/ios/swift-core.md +79 -0
- package/src/knowledge/planning/architecture-database.md +47 -0
- package/src/knowledge/planning/architecture-patterns.md +64 -0
- package/src/knowledge/planning/architecture-security.md +61 -0
- package/src/knowledge/planning/estimation.md +82 -0
- package/src/knowledge/planning/orchestration.md +70 -0
- package/src/knowledge/planning/prd-quality-gates.md +38 -0
- package/src/knowledge/planning/prd-writing.md +59 -0
- package/src/knowledge/planning/product-principles.md +48 -0
- package/src/knowledge/planning/product-prioritization.md +45 -0
- package/src/knowledge/planning/rfc-quality-gates.md +38 -0
- package/src/knowledge/planning/rfc-writing.md +81 -0
- package/src/knowledge/planning/task-decomposition.md +61 -0
- package/src/knowledge/planning/task-readiness.md +64 -0
- package/src/knowledge/quality/qa-execution.md +55 -0
- package/src/knowledge/quality/qa-reporting.md +71 -0
- package/src/knowledge/quality/test-case-quality.md +61 -0
- package/src/knowledge/quality/test-case-writing.md +76 -0
- package/src/knowledge/quality/testing-strategy.md +70 -0
- package/src/knowledge/quality/testing-types.md +84 -0
- package/src/knowledge/web/backend/api-design.md +74 -0
- package/src/knowledge/web/backend/api-security.md +54 -0
- package/src/knowledge/web/backend/backend-security.md +84 -0
- package/src/knowledge/web/backend/backend-structure.md +78 -0
- package/src/knowledge/web/frontend/frontend-components.md +49 -0
- package/src/knowledge/web/frontend/frontend-performance.md +41 -0
- package/src/knowledge/web/frontend/frontend-state.md +59 -0
- package/src/knowledge/web/frontend/web-accessibility.md +51 -0
- package/src/knowledge/web/frontend/web-performance.md +51 -0
- package/src/knowledge/web/frontend/web-security.md +59 -0
- package/src/templates/prd.md +109 -0
- package/src/templates/rfc.md +156 -0
- package/src/templates/task-breakdown.md +172 -0
- package/src/templates/test-case.md +157 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Product Requirements Document: [Feature / Product Name]
|
|
2
|
+
|
|
3
|
+
**Author:** JiWoo (Senior PM)
|
|
4
|
+
**Status:** Draft | Under Review | Approved
|
|
5
|
+
**Date:** YYYY-MM-DD
|
|
6
|
+
**Version:** 1.0
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Problem Statement
|
|
11
|
+
|
|
12
|
+
> One paragraph. What specific user problem are we solving? Who experiences it? Why does it matter now?
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## User Personas
|
|
17
|
+
|
|
18
|
+
### Primary Persona: [Persona Name]
|
|
19
|
+
- **Role:** [Job title or user type]
|
|
20
|
+
- **Goals:** [What they are trying to accomplish]
|
|
21
|
+
- **Frustrations:** [What currently gets in their way]
|
|
22
|
+
- **Context:** [When and how they interact with this product]
|
|
23
|
+
|
|
24
|
+
### Secondary Persona (if applicable): [Persona Name]
|
|
25
|
+
- **Role:**
|
|
26
|
+
- **Goals:**
|
|
27
|
+
- **Context:**
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Feature Scope
|
|
32
|
+
|
|
33
|
+
### In Scope
|
|
34
|
+
- [Feature or capability included in this release]
|
|
35
|
+
- [Feature or capability included in this release]
|
|
36
|
+
- [Feature or capability included in this release]
|
|
37
|
+
|
|
38
|
+
### Out of Scope
|
|
39
|
+
- [Feature or capability explicitly excluded — with brief reason]
|
|
40
|
+
- [Feature or capability explicitly excluded]
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## User Stories
|
|
45
|
+
|
|
46
|
+
| ID | As a... | I want to... | So that... | Priority |
|
|
47
|
+
|----|---------|-------------|------------|---------|
|
|
48
|
+
| US-01 | [persona] | [goal] | [benefit] | P0/P1/P2 |
|
|
49
|
+
| US-02 | [persona] | [goal] | [benefit] | P0/P1/P2 |
|
|
50
|
+
| US-03 | [persona] | [goal] | [benefit] | P0/P1/P2 |
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Acceptance Criteria
|
|
55
|
+
|
|
56
|
+
### US-01: [Story Title]
|
|
57
|
+
- [ ] **Given** [context], **When** [action], **Then** [specific measurable outcome]
|
|
58
|
+
- [ ] **Given** [context], **When** [action], **Then** [specific measurable outcome]
|
|
59
|
+
|
|
60
|
+
### US-02: [Story Title]
|
|
61
|
+
- [ ] **Given** [context], **When** [action], **Then** [specific measurable outcome]
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Success Metrics
|
|
66
|
+
|
|
67
|
+
| Metric | Baseline | Target | Measurement Method |
|
|
68
|
+
|--------|----------|--------|-------------------|
|
|
69
|
+
| [Metric name] | [Current value] | [Target value] | [How to measure] |
|
|
70
|
+
| [Metric name] | [Current value] | [Target value] | [How to measure] |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Non-Functional Requirements
|
|
75
|
+
|
|
76
|
+
- **Performance:** [e.g., page load < 2s on 3G; API response < 200ms p95]
|
|
77
|
+
- **Security:** [e.g., all data encrypted at rest and in transit]
|
|
78
|
+
- **Accessibility:** WCAG 2.1 AA compliance required
|
|
79
|
+
- **Internationalization:** [supported locales, RTL if applicable]
|
|
80
|
+
- **Browser/Platform Support:** [e.g., last 2 versions of Chrome, Firefox, Safari]
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Dependencies & Risks
|
|
85
|
+
|
|
86
|
+
### Dependencies
|
|
87
|
+
- [System, team, or data source this depends on]
|
|
88
|
+
- [Third-party service required]
|
|
89
|
+
|
|
90
|
+
### Risks
|
|
91
|
+
| Risk | Likelihood | Impact | Mitigation |
|
|
92
|
+
|------|-----------|--------|------------|
|
|
93
|
+
| [Risk description] | High/Med/Low | High/Med/Low | [How to mitigate] |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Open Questions
|
|
98
|
+
|
|
99
|
+
| # | Question | Owner | Due Date |
|
|
100
|
+
|---|----------|-------|---------|
|
|
101
|
+
| 1 | [Unanswered question] | [Person responsible] | [Date] |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Update History
|
|
106
|
+
|
|
107
|
+
| Version | Date | Changed By | Summary |
|
|
108
|
+
|---------|------|------------|---------|
|
|
109
|
+
| 1.0 | YYYY-MM-DD | JiWoo | Initial draft |
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# RFC: [Feature / System Name]
|
|
2
|
+
|
|
3
|
+
**Author:** YooYeon (Staff Engineer)
|
|
4
|
+
**Status:** Draft | Under Review | Approved | Superseded
|
|
5
|
+
**Date:** YYYY-MM-DD
|
|
6
|
+
**Version:** 1.0
|
|
7
|
+
**Related PRD:** workspace/PRD.md
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Summary
|
|
12
|
+
|
|
13
|
+
> One paragraph: what is being built, using what approach, and the key trade-off explicitly accepted.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Motivation
|
|
18
|
+
|
|
19
|
+
Why is this being built now? What problem does it solve that current systems cannot address? Reference the PRD problem statement.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Technical Proposal
|
|
24
|
+
|
|
25
|
+
### Architecture Overview
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
[ASCII diagram or description of how components interact]
|
|
29
|
+
|
|
30
|
+
Client → API Gateway → [Service A] → [Database]
|
|
31
|
+
↘ [Service B] → [Cache]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Data Model
|
|
35
|
+
|
|
36
|
+
```sql
|
|
37
|
+
-- Key tables / schemas / collections
|
|
38
|
+
|
|
39
|
+
CREATE TABLE users (
|
|
40
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
41
|
+
email TEXT NOT NULL UNIQUE,
|
|
42
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
43
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
-- [Additional entities...]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### API Contracts
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
POST /api/v1/[resource]
|
|
53
|
+
Authorization: Bearer <token>
|
|
54
|
+
Content-Type: application/json
|
|
55
|
+
|
|
56
|
+
Request:
|
|
57
|
+
{
|
|
58
|
+
"field": "value"
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
Response 201:
|
|
62
|
+
{
|
|
63
|
+
"data": {
|
|
64
|
+
"id": "uuid",
|
|
65
|
+
"field": "value",
|
|
66
|
+
"createdAt": "2024-01-01T00:00:00Z"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
Response 400:
|
|
71
|
+
{
|
|
72
|
+
"error": {
|
|
73
|
+
"code": "VALIDATION_ERROR",
|
|
74
|
+
"message": "field is required",
|
|
75
|
+
"field": "field"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Key Algorithms / Business Logic
|
|
81
|
+
|
|
82
|
+
> Describe any non-trivial logic that needs design attention: pricing calculations, state machines, rate limiting, etc.
|
|
83
|
+
|
|
84
|
+
### Infrastructure & Deployment
|
|
85
|
+
|
|
86
|
+
- **Hosting:** [Cloud provider, region, service type]
|
|
87
|
+
- **Scaling:** [How does this scale under load?]
|
|
88
|
+
- **Observability:** [Logs, metrics, traces — what is instrumented?]
|
|
89
|
+
- **Environment config:** [Environment variables required]
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Alternatives Considered
|
|
94
|
+
|
|
95
|
+
### Alternative 1: [Name]
|
|
96
|
+
**Description:** What was this approach?
|
|
97
|
+
**Rejected because:** [Specific reason — not just "worse"]
|
|
98
|
+
|
|
99
|
+
### Alternative 2: [Name]
|
|
100
|
+
**Description:** What was this approach?
|
|
101
|
+
**Rejected because:** [Specific reason]
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Trade-offs & Risks
|
|
106
|
+
|
|
107
|
+
| Trade-off / Risk | Impact | Mitigation |
|
|
108
|
+
|-----------------|--------|------------|
|
|
109
|
+
| [What we give up or what could go wrong] | High/Med/Low | [How we mitigate] |
|
|
110
|
+
| [Trade-off] | High/Med/Low | [Mitigation] |
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Migration Plan
|
|
115
|
+
|
|
116
|
+
> If this changes existing behavior or data: how do existing users/data get migrated?
|
|
117
|
+
|
|
118
|
+
1. [Migration step]
|
|
119
|
+
2. [Migration step]
|
|
120
|
+
3. [Verification step]
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Rollout Plan
|
|
125
|
+
|
|
126
|
+
- **Feature flag:** [flag name — yes/no and rollout strategy]
|
|
127
|
+
- **Phased rollout:** [e.g., 1% → 10% → 100% with monitoring gates]
|
|
128
|
+
- **Rollback procedure:** [How to undo this change if it goes wrong]
|
|
129
|
+
- **Go-live checklist:**
|
|
130
|
+
- [ ] Database migration run and verified
|
|
131
|
+
- [ ] Feature flag configured
|
|
132
|
+
- [ ] Monitoring dashboards set up
|
|
133
|
+
- [ ] Runbook updated
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Open Questions
|
|
138
|
+
|
|
139
|
+
| # | Question | Owner | Due Date |
|
|
140
|
+
|---|----------|-------|---------|
|
|
141
|
+
| 1 | [Unresolved technical question] | [Person] | [Date] |
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## References
|
|
146
|
+
|
|
147
|
+
- [Link to PRD: workspace/PRD.md]
|
|
148
|
+
- [External documentation, standards, or prior RFCs]
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Update History
|
|
153
|
+
|
|
154
|
+
| Version | Date | Changed By | Summary |
|
|
155
|
+
|---------|------|------------|---------|
|
|
156
|
+
| 1.0 | YYYY-MM-DD | YooYeon | Initial draft |
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Task Breakdown: [Feature / Sprint Name]
|
|
2
|
+
|
|
3
|
+
**Author:** NaKyoung (TPM)
|
|
4
|
+
**Date:** YYYY-MM-DD
|
|
5
|
+
**Related PRD:** workspace/PRD.md
|
|
6
|
+
**Related RFC:** workspace/RFC.md
|
|
7
|
+
**Sprint:** [Sprint N] | **Duration:** [X weeks]
|
|
8
|
+
**Total Story Points:** [sum]
|
|
9
|
+
**Estimated Timeline:** [X–Y weeks]
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Team Allocation
|
|
14
|
+
|
|
15
|
+
| Agent | Role | Platforms |
|
|
16
|
+
|-------|------|-----------|
|
|
17
|
+
| YuBin | Frontend Web | Web |
|
|
18
|
+
| Kaede | Backend | API / Server |
|
|
19
|
+
| YeonJi | Android | Android Native |
|
|
20
|
+
| SoHyun | iOS | iOS Native |
|
|
21
|
+
| Kotone | Flutter | Android + iOS + Web |
|
|
22
|
+
|
|
23
|
+
*Only activate agents for platforms confirmed in PRD/RFC.*
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Epic: [Epic Name]
|
|
28
|
+
|
|
29
|
+
> Brief description of what this epic delivers and why.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
### Story: US-01 — [User Story Title]
|
|
34
|
+
|
|
35
|
+
> As a [persona], I want [goal] so that [benefit].
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
#### TASK-001: [Short imperative title]
|
|
40
|
+
|
|
41
|
+
**Story Points:** 3
|
|
42
|
+
**Estimated Hours:** 4–8h
|
|
43
|
+
**Assignee:** [YuBin / Kaede / YeonJi / SoHyun / Kotone]
|
|
44
|
+
**Platform:** [Web / Android / iOS / Flutter / Backend]
|
|
45
|
+
**Dependencies:** none / TASK-XXX
|
|
46
|
+
|
|
47
|
+
**Description:**
|
|
48
|
+
One paragraph of what needs to be done and why.
|
|
49
|
+
|
|
50
|
+
**Acceptance Criteria:**
|
|
51
|
+
- [ ] [Specific, binary pass/fail criterion]
|
|
52
|
+
- [ ] [Specific, binary pass/fail criterion]
|
|
53
|
+
- [ ] [Specific, binary pass/fail criterion]
|
|
54
|
+
|
|
55
|
+
**Technical Notes:**
|
|
56
|
+
[Any non-obvious constraints, API endpoints to call, or design assets to reference]
|
|
57
|
+
|
|
58
|
+
**Definition of Done:**
|
|
59
|
+
- [ ] Code written, reviewed, and merged
|
|
60
|
+
- [ ] Unit/component tests written and passing
|
|
61
|
+
- [ ] Integrated and verified in dev environment
|
|
62
|
+
- [ ] No regressions in existing functionality
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
#### TASK-002: [Short imperative title]
|
|
67
|
+
|
|
68
|
+
**Story Points:** 5
|
|
69
|
+
**Estimated Hours:** 1–2 days
|
|
70
|
+
**Assignee:** [Agent]
|
|
71
|
+
**Platform:** [Platform]
|
|
72
|
+
**Dependencies:** TASK-001
|
|
73
|
+
|
|
74
|
+
**Description:**
|
|
75
|
+
[Description]
|
|
76
|
+
|
|
77
|
+
**Acceptance Criteria:**
|
|
78
|
+
- [ ] [Criterion]
|
|
79
|
+
- [ ] [Criterion]
|
|
80
|
+
|
|
81
|
+
**Technical Notes:**
|
|
82
|
+
[Notes]
|
|
83
|
+
|
|
84
|
+
**Definition of Done:**
|
|
85
|
+
- [ ] Code written, reviewed, and merged
|
|
86
|
+
- [ ] Tests written and passing
|
|
87
|
+
- [ ] Verified in dev environment
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
### Story: US-02 — [User Story Title]
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
#### TASK-003: [Short imperative title]
|
|
96
|
+
|
|
97
|
+
**Story Points:** 2
|
|
98
|
+
**Estimated Hours:** 2–4h
|
|
99
|
+
**Assignee:** [Agent]
|
|
100
|
+
**Platform:** Backend
|
|
101
|
+
**Dependencies:** none
|
|
102
|
+
|
|
103
|
+
**Description:**
|
|
104
|
+
[Description]
|
|
105
|
+
|
|
106
|
+
**Acceptance Criteria:**
|
|
107
|
+
- [ ] [Criterion]
|
|
108
|
+
|
|
109
|
+
**Technical Notes:**
|
|
110
|
+
[Notes]
|
|
111
|
+
|
|
112
|
+
**Definition of Done:**
|
|
113
|
+
- [ ] Code written, reviewed, and merged
|
|
114
|
+
- [ ] Integration test passing
|
|
115
|
+
- [ ] API documented
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Infrastructure / Setup Tasks
|
|
120
|
+
|
|
121
|
+
> Technical tasks required by the RFC that don't map to user stories.
|
|
122
|
+
|
|
123
|
+
#### TASK-I01: [Infrastructure task title]
|
|
124
|
+
|
|
125
|
+
**Story Points:** 3
|
|
126
|
+
**Estimated Hours:** 4–8h
|
|
127
|
+
**Assignee:** Kaede (Backend)
|
|
128
|
+
**Platform:** Backend / DevOps
|
|
129
|
+
**Dependencies:** none
|
|
130
|
+
|
|
131
|
+
**Description:**
|
|
132
|
+
[e.g., Configure PostgreSQL schema and run initial migration]
|
|
133
|
+
|
|
134
|
+
**Acceptance Criteria:**
|
|
135
|
+
- [ ] Migration runs successfully in dev environment
|
|
136
|
+
- [ ] Rollback migration also tested
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Dependency Map
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
TASK-I01 (DB setup)
|
|
144
|
+
└── TASK-001 (API endpoint)
|
|
145
|
+
└── TASK-002 (Frontend integration)
|
|
146
|
+
└── TASK-003 (UI polish)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Timeline Estimate
|
|
152
|
+
|
|
153
|
+
| Week | Focus | Tasks |
|
|
154
|
+
|------|-------|-------|
|
|
155
|
+
| Week 1 | Setup + Core API | TASK-I01, TASK-003 |
|
|
156
|
+
| Week 2 | Core Features | TASK-001, TASK-002 |
|
|
157
|
+
| Week 3 | Polish + QA | Remaining tasks + QA gate |
|
|
158
|
+
|
|
159
|
+
**Buffer:** Add 20% to account for reviews, bug fixes, and unplanned complexity.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Story Point Summary
|
|
164
|
+
|
|
165
|
+
| Agent | Tasks | Points | Est. Time |
|
|
166
|
+
|-------|-------|--------|-----------|
|
|
167
|
+
| YuBin | [N] tasks | [X] pts | [X days] |
|
|
168
|
+
| Kaede | [N] tasks | [X] pts | [X days] |
|
|
169
|
+
| YeonJi | [N] tasks | [X] pts | [X days] |
|
|
170
|
+
| SoHyun | [N] tasks | [X] pts | [X days] |
|
|
171
|
+
| Kotone | [N] tasks | [X] pts | [X days] |
|
|
172
|
+
| **Total** | | **[X] pts** | **[X–Y weeks]** |
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Test Cases: [Feature Name]
|
|
2
|
+
|
|
3
|
+
**Author:** Lynn (QA Lead)
|
|
4
|
+
**Date:** YYYY-MM-DD
|
|
5
|
+
**Related PRD:** workspace/PRD.md
|
|
6
|
+
**Related RFC:** workspace/RFC.md
|
|
7
|
+
**Total Test Cases:** [N]
|
|
8
|
+
**Smoke Suite (P0):** [N] cases
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Test Data Requirements
|
|
13
|
+
|
|
14
|
+
Before executing, ensure the following test data is in place:
|
|
15
|
+
|
|
16
|
+
| Data | Description | Where to Create |
|
|
17
|
+
|------|-------------|----------------|
|
|
18
|
+
| Standard user | Active account, no special permissions | [Setup instructions] |
|
|
19
|
+
| Admin user | Account with admin role | [Setup instructions] |
|
|
20
|
+
| [Other fixture] | [Description] | [Setup instructions] |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Test Suite: [Feature / User Story Name]
|
|
25
|
+
|
|
26
|
+
### TC-001: [Short descriptive title — happy path]
|
|
27
|
+
|
|
28
|
+
**Priority:** P0
|
|
29
|
+
**Type:** Positive / Happy Path
|
|
30
|
+
**Platform:** Web / Android / iOS / Flutter / All
|
|
31
|
+
**Related:** US-01
|
|
32
|
+
|
|
33
|
+
**Preconditions:**
|
|
34
|
+
- User is logged in with a standard account
|
|
35
|
+
- [Other preconditions — precise system state]
|
|
36
|
+
|
|
37
|
+
**Test Steps:**
|
|
38
|
+
1. Navigate to [screen or URL]
|
|
39
|
+
2. [Action on specific element]
|
|
40
|
+
3. [Enter specific data: use concrete values, not "valid input"]
|
|
41
|
+
4. [Click/tap specific button]
|
|
42
|
+
|
|
43
|
+
**Expected Result:**
|
|
44
|
+
- [Specific, observable outcome — not "works correctly"]
|
|
45
|
+
- [System state change — e.g., "Record appears in the list"]
|
|
46
|
+
- [Performance expectation if applicable — e.g., "Response within 2 seconds"]
|
|
47
|
+
|
|
48
|
+
**Test Data:**
|
|
49
|
+
- Email: `test@example.com`
|
|
50
|
+
- Password: `TestPassword123!`
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
### TC-002: [Error path title]
|
|
55
|
+
|
|
56
|
+
**Priority:** P1
|
|
57
|
+
**Type:** Negative / Error Path
|
|
58
|
+
**Platform:** Web / All
|
|
59
|
+
|
|
60
|
+
**Preconditions:**
|
|
61
|
+
- [System state]
|
|
62
|
+
|
|
63
|
+
**Test Steps:**
|
|
64
|
+
1. [Step]
|
|
65
|
+
2. [Step — with invalid input: e.g., "Enter `invalid-email` in the Email field"]
|
|
66
|
+
3. [Step]
|
|
67
|
+
|
|
68
|
+
**Expected Result:**
|
|
69
|
+
- [Specific error message displayed verbatim if possible]
|
|
70
|
+
- [System should NOT do X]
|
|
71
|
+
- [User remains on the same screen]
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### TC-003: [Edge case title]
|
|
76
|
+
|
|
77
|
+
**Priority:** P2
|
|
78
|
+
**Type:** Edge Case / Boundary
|
|
79
|
+
**Platform:** All
|
|
80
|
+
|
|
81
|
+
**Preconditions:**
|
|
82
|
+
- [Precise state — e.g., "User has exactly 0 items in cart"]
|
|
83
|
+
|
|
84
|
+
**Test Steps:**
|
|
85
|
+
1. [Step]
|
|
86
|
+
2. [Step with boundary value — e.g., "Enter 255 characters in the Name field (maximum allowed)"]
|
|
87
|
+
3. [Step]
|
|
88
|
+
|
|
89
|
+
**Expected Result:**
|
|
90
|
+
- [Expected boundary behavior]
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
### TC-004: [Platform-specific title]
|
|
95
|
+
|
|
96
|
+
**Priority:** P1
|
|
97
|
+
**Type:** Platform-Specific
|
|
98
|
+
**Platform:** Android
|
|
99
|
+
|
|
100
|
+
**Preconditions:**
|
|
101
|
+
- [Android-specific state — e.g., "Device is in portrait orientation"]
|
|
102
|
+
|
|
103
|
+
**Test Steps:**
|
|
104
|
+
1. [Step]
|
|
105
|
+
2. [Android-specific action — e.g., "Rotate device to landscape"]
|
|
106
|
+
3. [Step]
|
|
107
|
+
|
|
108
|
+
**Expected Result:**
|
|
109
|
+
- [Platform-specific expected behavior]
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
### TC-005: [Regression scenario]
|
|
114
|
+
|
|
115
|
+
**Priority:** P1
|
|
116
|
+
**Type:** Regression
|
|
117
|
+
**Platform:** Web
|
|
118
|
+
|
|
119
|
+
**Preconditions:**
|
|
120
|
+
- [State]
|
|
121
|
+
|
|
122
|
+
**Test Steps:**
|
|
123
|
+
1. [Existing flow that should still work]
|
|
124
|
+
2. [Step]
|
|
125
|
+
|
|
126
|
+
**Expected Result:**
|
|
127
|
+
- [Existing behavior preserved — confirm no regression]
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Automation Candidates
|
|
132
|
+
|
|
133
|
+
Test cases recommended for automation (P0 and P1):
|
|
134
|
+
|
|
135
|
+
| TC ID | Title | Framework | Priority |
|
|
136
|
+
|-------|-------|-----------|---------|
|
|
137
|
+
| TC-001 | [Title] | Playwright / XCUITest / Espresso | P0 |
|
|
138
|
+
| TC-002 | [Title] | Playwright | P1 |
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Exploratory Testing Notes
|
|
143
|
+
|
|
144
|
+
Areas for unscripted manual exploration:
|
|
145
|
+
- [Area 1: e.g., "Test with slow network connection (DevTools throttling)"]
|
|
146
|
+
- [Area 2: e.g., "Test with very long user-generated content"]
|
|
147
|
+
- [Area 3: e.g., "Test concurrent actions from two browser tabs"]
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Traceability Matrix
|
|
152
|
+
|
|
153
|
+
| Test Case | User Story | Acceptance Criterion |
|
|
154
|
+
|-----------|-----------|---------------------|
|
|
155
|
+
| TC-001 | US-01 | AC-01.1 |
|
|
156
|
+
| TC-002 | US-01 | AC-01.2 (error state) |
|
|
157
|
+
| TC-003 | US-02 | AC-02.1 |
|