oh-my-ag 1.2.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/.agent/skills/_shared/api-contracts/README.md +56 -0
- package/.agent/skills/_shared/api-contracts/template.md +88 -0
- package/.agent/skills/_shared/clarification-protocol.md +217 -0
- package/.agent/skills/_shared/common-checklist.md +31 -0
- package/.agent/skills/_shared/context-budget.md +118 -0
- package/.agent/skills/_shared/context-loading.md +105 -0
- package/.agent/skills/_shared/difficulty-guide.md +55 -0
- package/.agent/skills/_shared/lessons-learned.md +113 -0
- package/.agent/skills/_shared/memory-protocol.md +79 -0
- package/.agent/skills/_shared/reasoning-templates.md +161 -0
- package/.agent/skills/_shared/skill-routing.md +80 -0
- package/.agent/skills/_shared/verify.sh +252 -0
- package/.agent/skills/backend-agent/SKILL.md +47 -0
- package/.agent/skills/backend-agent/resources/api-template.py +326 -0
- package/.agent/skills/backend-agent/resources/checklist.md +36 -0
- package/.agent/skills/backend-agent/resources/error-playbook.md +98 -0
- package/.agent/skills/backend-agent/resources/examples.md +85 -0
- package/.agent/skills/backend-agent/resources/execution-protocol.md +45 -0
- package/.agent/skills/backend-agent/resources/snippets.md +197 -0
- package/.agent/skills/backend-agent/resources/tech-stack.md +39 -0
- package/.agent/skills/commit/SKILL.md +121 -0
- package/.agent/skills/commit/config/commit-config.yaml +55 -0
- package/.agent/skills/commit/resources/conventional-commits.md +166 -0
- package/.agent/skills/debug-agent/SKILL.md +51 -0
- package/.agent/skills/debug-agent/resources/bug-report-template.md +332 -0
- package/.agent/skills/debug-agent/resources/checklist.md +30 -0
- package/.agent/skills/debug-agent/resources/common-patterns.md +734 -0
- package/.agent/skills/debug-agent/resources/debugging-checklist.md +362 -0
- package/.agent/skills/debug-agent/resources/error-playbook.md +94 -0
- package/.agent/skills/debug-agent/resources/examples.md +87 -0
- package/.agent/skills/debug-agent/resources/execution-protocol.md +51 -0
- package/.agent/skills/frontend-agent/SKILL.md +48 -0
- package/.agent/skills/frontend-agent/resources/checklist.md +38 -0
- package/.agent/skills/frontend-agent/resources/component-template.tsx +92 -0
- package/.agent/skills/frontend-agent/resources/error-playbook.md +108 -0
- package/.agent/skills/frontend-agent/resources/examples.md +77 -0
- package/.agent/skills/frontend-agent/resources/execution-protocol.md +49 -0
- package/.agent/skills/frontend-agent/resources/snippets.md +205 -0
- package/.agent/skills/frontend-agent/resources/tailwind-rules.md +343 -0
- package/.agent/skills/frontend-agent/resources/tech-stack.md +36 -0
- package/.agent/skills/mobile-agent/SKILL.md +46 -0
- package/.agent/skills/mobile-agent/resources/checklist.md +35 -0
- package/.agent/skills/mobile-agent/resources/error-playbook.md +106 -0
- package/.agent/skills/mobile-agent/resources/examples.md +79 -0
- package/.agent/skills/mobile-agent/resources/execution-protocol.md +49 -0
- package/.agent/skills/mobile-agent/resources/screen-template.dart +298 -0
- package/.agent/skills/mobile-agent/resources/snippets.md +235 -0
- package/.agent/skills/mobile-agent/resources/tech-stack.md +45 -0
- package/.agent/skills/orchestrator/SKILL.md +99 -0
- package/.agent/skills/orchestrator/config/cli-config.yaml +78 -0
- package/.agent/skills/orchestrator/resources/memory-schema.md +212 -0
- package/.agent/skills/orchestrator/resources/subagent-prompt-template.md +153 -0
- package/.agent/skills/orchestrator/scripts/parallel-run.sh +330 -0
- package/.agent/skills/orchestrator/scripts/spawn-agent.sh +263 -0
- package/.agent/skills/orchestrator/templates/backend-task.md +18 -0
- package/.agent/skills/orchestrator/templates/debug-task.md +16 -0
- package/.agent/skills/orchestrator/templates/frontend-task.md +17 -0
- package/.agent/skills/orchestrator/templates/mobile-task.md +17 -0
- package/.agent/skills/orchestrator/templates/qa-task.md +16 -0
- package/.agent/skills/orchestrator/templates/tasks-example.yaml +15 -0
- package/.agent/skills/pm-agent/SKILL.md +47 -0
- package/.agent/skills/pm-agent/resources/error-playbook.md +75 -0
- package/.agent/skills/pm-agent/resources/examples.md +121 -0
- package/.agent/skills/pm-agent/resources/execution-protocol.md +46 -0
- package/.agent/skills/pm-agent/resources/task-template.json +57 -0
- package/.agent/skills/qa-agent/SKILL.md +43 -0
- package/.agent/skills/qa-agent/resources/checklist.md +294 -0
- package/.agent/skills/qa-agent/resources/error-playbook.md +95 -0
- package/.agent/skills/qa-agent/resources/examples.md +100 -0
- package/.agent/skills/qa-agent/resources/execution-protocol.md +50 -0
- package/.agent/skills/qa-agent/resources/self-check.md +27 -0
- package/.agent/skills/workflow-guide/SKILL.md +57 -0
- package/.agent/skills/workflow-guide/resources/examples.md +68 -0
- package/README.ko.md +459 -0
- package/README.md +563 -0
- package/bin/cli.js +205 -0
- package/package.json +75 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pm-agent
|
|
3
|
+
description: Product manager that decomposes requirements into actionable tasks with priorities and dependencies
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PM Agent - Product Manager
|
|
7
|
+
|
|
8
|
+
## When to use
|
|
9
|
+
- Breaking down complex feature requests into tasks
|
|
10
|
+
- Determining technical feasibility and architecture
|
|
11
|
+
- Prioritizing work and planning sprints
|
|
12
|
+
- Defining API contracts and data models
|
|
13
|
+
|
|
14
|
+
## When NOT to use
|
|
15
|
+
- Implementing actual code -> delegate to specialized agents
|
|
16
|
+
- Performing code reviews -> use QA Agent
|
|
17
|
+
|
|
18
|
+
## Core Rules
|
|
19
|
+
1. API-first design: define contracts before implementation tasks
|
|
20
|
+
2. Every task has: agent, title, acceptance criteria, priority, dependencies
|
|
21
|
+
3. Minimize dependencies for maximum parallel execution
|
|
22
|
+
4. Security and testing are part of every task (not separate phases)
|
|
23
|
+
5. Tasks should be completable by a single agent
|
|
24
|
+
6. Output JSON plan + task-board.md for orchestrator compatibility
|
|
25
|
+
|
|
26
|
+
## How to Execute
|
|
27
|
+
Follow `resources/execution-protocol.md` step by step.
|
|
28
|
+
See `resources/examples.md` for input/output examples.
|
|
29
|
+
Save plan to `.agent/plan.json` and `.gemini/antigravity/brain/current-plan.md`.
|
|
30
|
+
|
|
31
|
+
## Common Pitfalls
|
|
32
|
+
- Too Granular: "Implement user auth API" is one task, not five
|
|
33
|
+
- Vague Tasks: "Make it better" -> "Add loading states to all forms"
|
|
34
|
+
- Tight Coupling: tasks should use public APIs, not internal state
|
|
35
|
+
- Deferred Quality: testing is part of every task, not a final phase
|
|
36
|
+
|
|
37
|
+
## References
|
|
38
|
+
- Execution steps: `resources/execution-protocol.md`
|
|
39
|
+
- Plan examples: `resources/examples.md`
|
|
40
|
+
- Error recovery: `resources/error-playbook.md`
|
|
41
|
+
- Task schema: `resources/task-template.json`
|
|
42
|
+
- API contracts: `../_shared/api-contracts/`
|
|
43
|
+
- Context loading: `../_shared/context-loading.md`
|
|
44
|
+
- Reasoning templates: `../_shared/reasoning-templates.md`
|
|
45
|
+
- Clarification: `../_shared/clarification-protocol.md`
|
|
46
|
+
- Context budget: `../_shared/context-budget.md`
|
|
47
|
+
- Lessons learned: `../_shared/lessons-learned.md`
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# PM Agent - Error Recovery Playbook
|
|
2
|
+
|
|
3
|
+
When you encounter a failure during planning, follow these recovery steps.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Requirements Ambiguous
|
|
8
|
+
|
|
9
|
+
**Symptoms**: User request is vague ("좋은 앱 만들어줘", "Make it better")
|
|
10
|
+
|
|
11
|
+
1. Break down what you DO understand
|
|
12
|
+
2. List specific assumptions you're making
|
|
13
|
+
3. Create plan based on reasonable assumptions
|
|
14
|
+
4. Mark assumptions clearly: `⚠️ Assumption: [description]`
|
|
15
|
+
5. **절대 하지 말 것**: 모호한 채로 태스크를 생성 — 에이전트가 방향을 잃음
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Existing Codebase Unknown
|
|
20
|
+
|
|
21
|
+
**Symptoms**: Planning for an existing project but don't know the architecture
|
|
22
|
+
|
|
23
|
+
1. Use Serena: `get_symbols_overview("src/")` or `get_symbols_overview("app/")`
|
|
24
|
+
2. Look for framework indicators: `package.json`, `pyproject.toml`, `pubspec.yaml`
|
|
25
|
+
3. Check for existing patterns: `search_for_pattern("@app.get|@app.post")` (FastAPI)
|
|
26
|
+
4. If Serena unavailable: note in plan "architecture assumptions — verify before execution"
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Task Decomposition Too Granular or Too Coarse
|
|
31
|
+
|
|
32
|
+
**Self-check**:
|
|
33
|
+
- Each task should take 1 agent, 10-20 turns
|
|
34
|
+
- If a task needs < 5 turns: merge with a related task
|
|
35
|
+
- If a task needs > 30 turns: split into sub-tasks
|
|
36
|
+
- If unsure: err on the side of fewer, larger tasks
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Dependency Deadlock
|
|
41
|
+
|
|
42
|
+
**Symptoms**: Task A depends on B, B depends on A (circular)
|
|
43
|
+
|
|
44
|
+
1. Identify the cycle
|
|
45
|
+
2. Break it by defining an API contract or shared interface first
|
|
46
|
+
3. Create a priority-0 task: "Define API contracts" (no dependencies)
|
|
47
|
+
4. Both tasks then depend on the contract, not on each other
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Tech Stack Decision Unclear
|
|
52
|
+
|
|
53
|
+
**Symptoms**: Multiple valid options, no clear winner
|
|
54
|
+
|
|
55
|
+
1. Check existing codebase — consistency wins over "better" tech
|
|
56
|
+
2. If greenfield: use the project's default stack (see SKILL.md tech-stack references)
|
|
57
|
+
3. Default choices:
|
|
58
|
+
- Frontend: Next.js 14 + TypeScript + Tailwind
|
|
59
|
+
- Backend: FastAPI + PostgreSQL + Redis
|
|
60
|
+
- Mobile: Flutter + Riverpod
|
|
61
|
+
4. Note decision rationale in plan: `tech_decision: { choice: "X", reason: "Y" }`
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Serena Memory / Quota Issues
|
|
66
|
+
|
|
67
|
+
동일: backend-agent 플레이북의 해당 섹션 참조.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 일반 원칙
|
|
72
|
+
|
|
73
|
+
- **계획은 코드가 아님**: 완벽하지 않아도 됨. 에이전트가 실행 중 조정할 수 있음
|
|
74
|
+
- **막힘**: 5턴 이상 진전 없으면 현재 상태 저장, `Status: blocked`
|
|
75
|
+
- **코드 작성 금지**: PM은 계획만 — 구현은 다른 에이전트에게 위임
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# PM Agent - Examples
|
|
2
|
+
|
|
3
|
+
## Example 1: Simple TODO App
|
|
4
|
+
|
|
5
|
+
**Input**: "JWT 인증이 있는 TODO 앱을 만들어줘"
|
|
6
|
+
|
|
7
|
+
**Output**:
|
|
8
|
+
```json
|
|
9
|
+
{
|
|
10
|
+
"project_name": "TODO App with JWT Auth",
|
|
11
|
+
"tech_stack": {
|
|
12
|
+
"frontend": "Next.js 14 + TypeScript + Tailwind",
|
|
13
|
+
"backend": "FastAPI + PostgreSQL + Redis",
|
|
14
|
+
"testing": "pytest + Vitest + Playwright"
|
|
15
|
+
},
|
|
16
|
+
"tasks": [
|
|
17
|
+
{
|
|
18
|
+
"id": "task-1",
|
|
19
|
+
"agent": "backend",
|
|
20
|
+
"title": "JWT authentication API",
|
|
21
|
+
"priority": 1,
|
|
22
|
+
"dependencies": [],
|
|
23
|
+
"estimated_complexity": "high",
|
|
24
|
+
"acceptance_criteria": [
|
|
25
|
+
"POST /api/auth/register with email + password",
|
|
26
|
+
"POST /api/auth/login returns access + refresh tokens",
|
|
27
|
+
"Password hashed with bcrypt",
|
|
28
|
+
"Rate limiting: 5/min on login"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "task-2",
|
|
33
|
+
"agent": "backend",
|
|
34
|
+
"title": "TODO CRUD API",
|
|
35
|
+
"priority": 1,
|
|
36
|
+
"dependencies": [],
|
|
37
|
+
"acceptance_criteria": [
|
|
38
|
+
"CRUD endpoints for /api/todos",
|
|
39
|
+
"User-scoped (JWT required)",
|
|
40
|
+
"Pagination on list endpoint"
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "task-3",
|
|
45
|
+
"agent": "frontend",
|
|
46
|
+
"title": "Login + Register UI",
|
|
47
|
+
"priority": 1,
|
|
48
|
+
"dependencies": [],
|
|
49
|
+
"acceptance_criteria": [
|
|
50
|
+
"Login and register forms with validation",
|
|
51
|
+
"JWT token storage",
|
|
52
|
+
"Redirect to /todos after login"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": "task-4",
|
|
57
|
+
"agent": "frontend",
|
|
58
|
+
"title": "TODO List UI",
|
|
59
|
+
"priority": 2,
|
|
60
|
+
"dependencies": ["task-2", "task-3"],
|
|
61
|
+
"acceptance_criteria": [
|
|
62
|
+
"Add, toggle, delete todos",
|
|
63
|
+
"Loading and empty states",
|
|
64
|
+
"Responsive design"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "task-5",
|
|
69
|
+
"agent": "qa",
|
|
70
|
+
"title": "Security & Performance Review",
|
|
71
|
+
"priority": 3,
|
|
72
|
+
"dependencies": ["task-1", "task-2", "task-3", "task-4"],
|
|
73
|
+
"acceptance_criteria": [
|
|
74
|
+
"OWASP Top 10 audit passed",
|
|
75
|
+
"Lighthouse > 90",
|
|
76
|
+
"No N+1 queries"
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Example 2: Feature Addition to Existing App
|
|
84
|
+
|
|
85
|
+
**Input**: "Add a comment system to the blog posts"
|
|
86
|
+
|
|
87
|
+
**Output**:
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"project_name": "Blog Comments Feature",
|
|
91
|
+
"tasks": [
|
|
92
|
+
{
|
|
93
|
+
"id": "task-1",
|
|
94
|
+
"agent": "backend",
|
|
95
|
+
"title": "Comments API",
|
|
96
|
+
"priority": 1,
|
|
97
|
+
"dependencies": [],
|
|
98
|
+
"acceptance_criteria": [
|
|
99
|
+
"POST /api/posts/{id}/comments (auth required)",
|
|
100
|
+
"GET /api/posts/{id}/comments (public, paginated)",
|
|
101
|
+
"DELETE /api/comments/{id} (owner only)",
|
|
102
|
+
"Nested replies (1 level deep)"
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"id": "task-2",
|
|
107
|
+
"agent": "frontend",
|
|
108
|
+
"title": "Comment Section UI",
|
|
109
|
+
"priority": 2,
|
|
110
|
+
"dependencies": ["task-1"],
|
|
111
|
+
"acceptance_criteria": [
|
|
112
|
+
"Comment list with pagination (load more)",
|
|
113
|
+
"Add comment form (auth required)",
|
|
114
|
+
"Reply to comment",
|
|
115
|
+
"Delete own comment",
|
|
116
|
+
"Real-time count update"
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# PM Agent - Execution Protocol
|
|
2
|
+
|
|
3
|
+
## Step 0: Prepare
|
|
4
|
+
1. **Assess difficulty** — see `../_shared/difficulty-guide.md`
|
|
5
|
+
- **Simple**: Lightweight plan, 3-5 tasks | **Medium**: Full 4 steps | **Complex**: Full + API contracts
|
|
6
|
+
2. **Clarify requirements** — follow `../_shared/clarification-protocol.md` (critical for PM)
|
|
7
|
+
- Check **Uncertainty Triggers**: 비즈니스 로직, 보안/인증, 기존 코드 충돌?
|
|
8
|
+
- Determine level: LOW → proceed | MEDIUM → present options | HIGH → ask immediately
|
|
9
|
+
3. **Use reasoning templates** — for architecture decisions, use `../_shared/reasoning-templates.md` (decision matrix)
|
|
10
|
+
4. **Check lessons** — read cross-domain section in `../_shared/lessons-learned.md`
|
|
11
|
+
|
|
12
|
+
**⚠️ Intelligent Escalation**: When uncertain, escalate early. Don't blindly proceed.
|
|
13
|
+
|
|
14
|
+
Follow these steps in order (adjust depth by difficulty).
|
|
15
|
+
|
|
16
|
+
## Step 1: Analyze Requirements
|
|
17
|
+
- Parse user request into concrete requirements
|
|
18
|
+
- Identify explicit and implicit features
|
|
19
|
+
- List edge cases and assumptions
|
|
20
|
+
- Ask clarifying questions if ambiguous
|
|
21
|
+
- Use Serena (if existing codebase): `get_symbols_overview` to understand current architecture
|
|
22
|
+
|
|
23
|
+
## Step 2: Design Architecture
|
|
24
|
+
- Select tech stack (frontend, backend, mobile, database, infra)
|
|
25
|
+
- Define API contracts (method, path, request/response schema)
|
|
26
|
+
- Design data models (tables, relationships, indexes)
|
|
27
|
+
- Identify security requirements (auth, validation, encryption)
|
|
28
|
+
- Plan infrastructure (hosting, caching, CDN, monitoring)
|
|
29
|
+
|
|
30
|
+
## Step 3: Decompose Tasks
|
|
31
|
+
- Break into tasks completable by a single agent
|
|
32
|
+
- Each task has: agent, title, description, acceptance criteria, priority, dependencies
|
|
33
|
+
- Minimize dependencies for maximum parallel execution
|
|
34
|
+
- Priority tiers: 1 = independent (run first), 2 = depends on tier 1, etc.
|
|
35
|
+
- Complexity: Low / Medium / High / Very High
|
|
36
|
+
- Save to `.agent/plan.json` and `.gemini/antigravity/brain/current-plan.md`
|
|
37
|
+
|
|
38
|
+
## Step 4: Validate Plan
|
|
39
|
+
- Check: Can each task be done independently given its dependencies?
|
|
40
|
+
- Check: Are acceptance criteria measurable and testable?
|
|
41
|
+
- Check: Is security considered from the start (not deferred)?
|
|
42
|
+
- Check: Are API contracts defined before frontend/mobile tasks?
|
|
43
|
+
- Output task-board.md format for orchestrator compatibility
|
|
44
|
+
|
|
45
|
+
## On Error
|
|
46
|
+
See `resources/error-playbook.md` for recovery steps.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"project_name": "",
|
|
3
|
+
"description": "",
|
|
4
|
+
"tech_stack": {
|
|
5
|
+
"frontend": "",
|
|
6
|
+
"backend": "",
|
|
7
|
+
"mobile": "",
|
|
8
|
+
"database": "",
|
|
9
|
+
"infrastructure": ""
|
|
10
|
+
},
|
|
11
|
+
"architecture_decisions": [
|
|
12
|
+
{
|
|
13
|
+
"decision": "",
|
|
14
|
+
"rationale": "",
|
|
15
|
+
"alternatives_considered": []
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"tasks": [
|
|
19
|
+
{
|
|
20
|
+
"id": "task-1",
|
|
21
|
+
"agent": "backend|frontend|mobile|qa",
|
|
22
|
+
"title": "",
|
|
23
|
+
"description": "",
|
|
24
|
+
"priority": 1,
|
|
25
|
+
"dependencies": [],
|
|
26
|
+
"estimated_complexity": "low|medium|high|very-high",
|
|
27
|
+
"acceptance_criteria": [],
|
|
28
|
+
"artifacts_expected": []
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"api_contracts": [
|
|
32
|
+
{
|
|
33
|
+
"endpoint": "",
|
|
34
|
+
"method": "GET|POST|PUT|DELETE|PATCH",
|
|
35
|
+
"request": {},
|
|
36
|
+
"response": {},
|
|
37
|
+
"headers": {}
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"data_models": [
|
|
41
|
+
{
|
|
42
|
+
"entity": "",
|
|
43
|
+
"fields": {}
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"non_functional_requirements": {
|
|
47
|
+
"security": [],
|
|
48
|
+
"performance": [],
|
|
49
|
+
"scalability": []
|
|
50
|
+
},
|
|
51
|
+
"testing_strategy": {
|
|
52
|
+
"unit_tests": "",
|
|
53
|
+
"integration_tests": "",
|
|
54
|
+
"e2e_tests": "",
|
|
55
|
+
"performance_tests": ""
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-agent
|
|
3
|
+
description: Quality assurance specialist for security, performance, accessibility, and comprehensive testing
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# QA Agent - Quality Assurance Specialist
|
|
7
|
+
|
|
8
|
+
## When to use
|
|
9
|
+
- Final review before deployment
|
|
10
|
+
- Security audits (OWASP Top 10)
|
|
11
|
+
- Performance analysis
|
|
12
|
+
- Accessibility compliance (WCAG 2.1 AA)
|
|
13
|
+
- Test coverage analysis
|
|
14
|
+
|
|
15
|
+
## When NOT to use
|
|
16
|
+
- Initial implementation -> let specialists build first
|
|
17
|
+
- Writing new features -> use domain agents
|
|
18
|
+
|
|
19
|
+
## Core Rules
|
|
20
|
+
1. Review in priority order: Security > Performance > Accessibility > Code Quality
|
|
21
|
+
2. Every finding must include file:line, description, and fix
|
|
22
|
+
3. Severity: CRITICAL (security breach/data loss), HIGH (blocks launch), MEDIUM (this sprint), LOW (backlog)
|
|
23
|
+
4. Run automated tools first: `npm audit`, `bandit`, `lighthouse`
|
|
24
|
+
5. No false positives - every finding must be reproducible
|
|
25
|
+
6. Provide remediation code, not just descriptions
|
|
26
|
+
|
|
27
|
+
## How to Execute
|
|
28
|
+
Follow `resources/execution-protocol.md` step by step.
|
|
29
|
+
See `resources/examples.md` for input/output examples.
|
|
30
|
+
Before submitting, run `resources/self-check.md`.
|
|
31
|
+
|
|
32
|
+
## Serena Memory (CLI Mode)
|
|
33
|
+
See `../_shared/serena-memory-protocol.md`.
|
|
34
|
+
|
|
35
|
+
## References
|
|
36
|
+
- Execution steps: `resources/execution-protocol.md`
|
|
37
|
+
- Report examples: `resources/examples.md`
|
|
38
|
+
- QA checklist: `resources/checklist.md`
|
|
39
|
+
- Self-check: `resources/self-check.md`
|
|
40
|
+
- Error recovery: `resources/error-playbook.md`
|
|
41
|
+
- Context loading: `../_shared/context-loading.md`
|
|
42
|
+
- Context budget: `../_shared/context-budget.md`
|
|
43
|
+
- Lessons learned: `../_shared/lessons-learned.md`
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
# QA Review Checklist
|
|
2
|
+
|
|
3
|
+
## Security Checklist
|
|
4
|
+
|
|
5
|
+
### Authentication & Authorization
|
|
6
|
+
- [ ] Passwords hashed with bcrypt/argon2 (not MD5/SHA1)
|
|
7
|
+
- [ ] Password strength requirements enforced (min 8 chars)
|
|
8
|
+
- [ ] JWT tokens properly signed and validated
|
|
9
|
+
- [ ] Refresh tokens implemented (if long sessions needed)
|
|
10
|
+
- [ ] Token expiry reasonable (15min access, 7day refresh)
|
|
11
|
+
- [ ] Authorization checks on ALL endpoints
|
|
12
|
+
- [ ] Users can only access their own data
|
|
13
|
+
- [ ] Admin functions require admin role
|
|
14
|
+
- [ ] Rate limiting on auth endpoints (5-10 attempts/min)
|
|
15
|
+
- [ ] Account lockout after failed login attempts (optional)
|
|
16
|
+
- [ ] MFA available (optional, but recommended)
|
|
17
|
+
|
|
18
|
+
### Input Validation & Injection
|
|
19
|
+
- [ ] SQL injection: ORM used OR parameterized queries
|
|
20
|
+
- [ ] XSS: Input sanitized, CSP headers set
|
|
21
|
+
- [ ] Command injection: No shell execution with user input
|
|
22
|
+
- [ ] Path traversal: File paths validated
|
|
23
|
+
- [ ] LDAP injection: LDAP queries parameterized
|
|
24
|
+
- [ ] XML injection: XML parsing secure
|
|
25
|
+
- [ ] Email validation (proper regex/library)
|
|
26
|
+
- [ ] URL validation (allowlist for external requests)
|
|
27
|
+
|
|
28
|
+
### Data Protection
|
|
29
|
+
- [ ] HTTPS enforced (redirect HTTP to HTTPS)
|
|
30
|
+
- [ ] Sensitive data NOT in logs
|
|
31
|
+
- [ ] Sensitive data NOT in error messages
|
|
32
|
+
- [ ] Sensitive data NOT in URLs (use POST body)
|
|
33
|
+
- [ ] Database backups encrypted
|
|
34
|
+
- [ ] PII data encrypted at rest (if applicable)
|
|
35
|
+
- [ ] Secure session management (httpOnly, secure, sameSite cookies)
|
|
36
|
+
|
|
37
|
+
### API Security
|
|
38
|
+
- [ ] CORS properly configured (not `*` in production)
|
|
39
|
+
- [ ] CSRF protection enabled
|
|
40
|
+
- [ ] Rate limiting on API endpoints
|
|
41
|
+
- [ ] API keys/tokens NOT in source code
|
|
42
|
+
- [ ] API versioning implemented
|
|
43
|
+
- [ ] Proper error handling (no stack traces exposed)
|
|
44
|
+
|
|
45
|
+
### Dependencies
|
|
46
|
+
- [ ] No high/critical vulnerabilities (npm audit / safety check)
|
|
47
|
+
- [ ] Dependencies up-to-date
|
|
48
|
+
- [ ] No unused dependencies
|
|
49
|
+
- [ ] License compliance checked
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Performance Checklist
|
|
54
|
+
|
|
55
|
+
### Backend Performance
|
|
56
|
+
- [ ] API response time < 200ms (p95)
|
|
57
|
+
- [ ] Database queries optimized (no N+1)
|
|
58
|
+
- [ ] Database indexes on foreign keys and frequent queries
|
|
59
|
+
- [ ] Connection pooling configured
|
|
60
|
+
- [ ] Caching implemented (Redis for frequent queries)
|
|
61
|
+
- [ ] Pagination for large result sets
|
|
62
|
+
- [ ] Async operations where appropriate
|
|
63
|
+
- [ ] Background jobs for heavy tasks
|
|
64
|
+
|
|
65
|
+
### Frontend Performance
|
|
66
|
+
- [ ] Lighthouse Performance score > 90
|
|
67
|
+
- [ ] First Contentful Paint (FCP) < 1.5s
|
|
68
|
+
- [ ] Largest Contentful Paint (LCP) < 2.5s
|
|
69
|
+
- [ ] Cumulative Layout Shift (CLS) < 0.1
|
|
70
|
+
- [ ] Time to Interactive (TTI) < 3.5s
|
|
71
|
+
- [ ] Bundle size < 500KB (main bundle)
|
|
72
|
+
- [ ] Code splitting implemented
|
|
73
|
+
- [ ] Lazy loading for non-critical components
|
|
74
|
+
- [ ] Images optimized (WebP, compression)
|
|
75
|
+
- [ ] Images lazy loaded (loading="lazy")
|
|
76
|
+
- [ ] Fonts optimized (font-display: swap)
|
|
77
|
+
- [ ] No render-blocking resources
|
|
78
|
+
- [ ] Service worker for caching (optional)
|
|
79
|
+
|
|
80
|
+
### Mobile Performance
|
|
81
|
+
- [ ] App size < 30MB (Android), < 50MB (iOS)
|
|
82
|
+
- [ ] Cold start < 2s
|
|
83
|
+
- [ ] Smooth scrolling (60fps)
|
|
84
|
+
- [ ] No memory leaks
|
|
85
|
+
- [ ] Battery usage minimal
|
|
86
|
+
- [ ] Offline support (if required)
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Accessibility Checklist (WCAG 2.1 AA)
|
|
91
|
+
|
|
92
|
+
### Perceivable
|
|
93
|
+
- [ ] All images have alt text
|
|
94
|
+
- [ ] Decorative images have empty alt (`alt=""`)
|
|
95
|
+
- [ ] Color contrast 4.5:1 (normal text), 3:1 (large text)
|
|
96
|
+
- [ ] Text resizable up to 200% without loss of content
|
|
97
|
+
- [ ] Content understandable without color alone
|
|
98
|
+
- [ ] Audio/video has captions (if applicable)
|
|
99
|
+
|
|
100
|
+
### Operable
|
|
101
|
+
- [ ] All functionality available via keyboard
|
|
102
|
+
- [ ] No keyboard trap
|
|
103
|
+
- [ ] Focus order is logical
|
|
104
|
+
- [ ] Focus indicators visible
|
|
105
|
+
- [ ] Skip to main content link
|
|
106
|
+
- [ ] No content flashes more than 3 times per second
|
|
107
|
+
- [ ] Enough time to read/interact with content
|
|
108
|
+
- [ ] Pause/stop for moving content
|
|
109
|
+
|
|
110
|
+
### Understandable
|
|
111
|
+
- [ ] Page language set (`<html lang="en">`)
|
|
112
|
+
- [ ] Clear labels on form inputs
|
|
113
|
+
- [ ] Error messages clear and helpful
|
|
114
|
+
- [ ] Required fields indicated
|
|
115
|
+
- [ ] Consistent navigation across pages
|
|
116
|
+
- [ ] Predictable behavior (no unexpected popups)
|
|
117
|
+
|
|
118
|
+
### Robust
|
|
119
|
+
- [ ] Valid HTML (semantic tags)
|
|
120
|
+
- [ ] ARIA labels where needed
|
|
121
|
+
- [ ] ARIA roles appropriate
|
|
122
|
+
- [ ] Works with screen readers (test with NVDA/JAWS)
|
|
123
|
+
- [ ] Works in different browsers (Chrome, Firefox, Safari, Edge)
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Testing Checklist
|
|
128
|
+
|
|
129
|
+
### Unit Tests
|
|
130
|
+
- [ ] Test coverage > 80%
|
|
131
|
+
- [ ] All business logic functions tested
|
|
132
|
+
- [ ] Edge cases covered
|
|
133
|
+
- [ ] Error handling tested
|
|
134
|
+
- [ ] Mocks used appropriately
|
|
135
|
+
- [ ] Tests run fast (< 10s total)
|
|
136
|
+
- [ ] No flaky tests
|
|
137
|
+
|
|
138
|
+
### Integration Tests
|
|
139
|
+
- [ ] All API endpoints tested
|
|
140
|
+
- [ ] Database operations tested
|
|
141
|
+
- [ ] Auth flow tested
|
|
142
|
+
- [ ] Error responses tested (401, 403, 404, 500)
|
|
143
|
+
- [ ] Request validation tested
|
|
144
|
+
|
|
145
|
+
### E2E Tests
|
|
146
|
+
- [ ] Critical user flows tested (registration, login, main feature)
|
|
147
|
+
- [ ] Happy path tested
|
|
148
|
+
- [ ] Error scenarios tested
|
|
149
|
+
- [ ] Mobile responsive tested
|
|
150
|
+
- [ ] Cross-browser tested (Chrome, Firefox, Safari)
|
|
151
|
+
|
|
152
|
+
### Performance Tests
|
|
153
|
+
- [ ] Load testing (1000 concurrent users)
|
|
154
|
+
- [ ] Stress testing (identify breaking point)
|
|
155
|
+
- [ ] Database under load tested
|
|
156
|
+
- [ ] API rate limits tested
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Code Quality Checklist
|
|
161
|
+
|
|
162
|
+
### Architecture
|
|
163
|
+
- [ ] Clear separation of concerns
|
|
164
|
+
- [ ] DRY principle followed (no duplication > 5%)
|
|
165
|
+
- [ ] SOLID principles followed
|
|
166
|
+
- [ ] Dependency injection used
|
|
167
|
+
- [ ] Repository pattern (backend)
|
|
168
|
+
- [ ] Component composition (frontend)
|
|
169
|
+
|
|
170
|
+
### Code Metrics
|
|
171
|
+
- [ ] Cyclomatic complexity < 10 per function
|
|
172
|
+
- [ ] Function length < 50 lines
|
|
173
|
+
- [ ] File length < 500 lines
|
|
174
|
+
- [ ] No deeply nested code (< 4 levels)
|
|
175
|
+
- [ ] Meaningful variable names
|
|
176
|
+
|
|
177
|
+
### Error Handling
|
|
178
|
+
- [ ] All async operations have try/catch
|
|
179
|
+
- [ ] Errors logged appropriately
|
|
180
|
+
- [ ] User-friendly error messages
|
|
181
|
+
- [ ] No silent failures
|
|
182
|
+
- [ ] Graceful degradation
|
|
183
|
+
|
|
184
|
+
### Documentation
|
|
185
|
+
- [ ] README with setup instructions
|
|
186
|
+
- [ ] API documentation (OpenAPI/Swagger)
|
|
187
|
+
- [ ] Complex logic documented
|
|
188
|
+
- [ ] Environment variables documented
|
|
189
|
+
- [ ] No TODO/FIXME in production code
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Browser Compatibility Checklist
|
|
194
|
+
|
|
195
|
+
### Desktop
|
|
196
|
+
- [ ] Chrome (latest 2 versions)
|
|
197
|
+
- [ ] Firefox (latest 2 versions)
|
|
198
|
+
- [ ] Safari (latest 2 versions)
|
|
199
|
+
- [ ] Edge (latest 2 versions)
|
|
200
|
+
|
|
201
|
+
### Mobile
|
|
202
|
+
- [ ] iOS Safari (latest 2 versions)
|
|
203
|
+
- [ ] Android Chrome (latest 2 versions)
|
|
204
|
+
- [ ] Responsive breakpoints (320px, 768px, 1024px, 1440px)
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## DevOps Checklist
|
|
209
|
+
|
|
210
|
+
### Environment
|
|
211
|
+
- [ ] Environment variables used (not hardcoded)
|
|
212
|
+
- [ ] .env.example provided
|
|
213
|
+
- [ ] Secrets NOT in source code
|
|
214
|
+
- [ ] Different configs for dev/staging/prod
|
|
215
|
+
|
|
216
|
+
### Logging
|
|
217
|
+
- [ ] Appropriate log levels (DEBUG, INFO, WARNING, ERROR)
|
|
218
|
+
- [ ] No sensitive data in logs
|
|
219
|
+
- [ ] Structured logging (JSON format)
|
|
220
|
+
- [ ] Log rotation configured
|
|
221
|
+
|
|
222
|
+
### Monitoring
|
|
223
|
+
- [ ] Health check endpoint (`/health`)
|
|
224
|
+
- [ ] Error tracking (Sentry, Rollbar, etc.)
|
|
225
|
+
- [ ] Performance monitoring (APM)
|
|
226
|
+
- [ ] Uptime monitoring
|
|
227
|
+
|
|
228
|
+
### Deployment
|
|
229
|
+
- [ ] CI/CD pipeline configured
|
|
230
|
+
- [ ] Automated tests in CI
|
|
231
|
+
- [ ] Database migrations automated
|
|
232
|
+
- [ ] Rollback plan documented
|
|
233
|
+
- [ ] Zero-downtime deployment (if required)
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Final Sign-Off
|
|
238
|
+
|
|
239
|
+
### Critical (Must Pass)
|
|
240
|
+
- [ ] No CRITICAL security vulnerabilities
|
|
241
|
+
- [ ] No HIGH security vulnerabilities
|
|
242
|
+
- [ ] All E2E tests passing
|
|
243
|
+
- [ ] Performance meets requirements
|
|
244
|
+
- [ ] No data loss scenarios
|
|
245
|
+
|
|
246
|
+
### Important (Should Pass)
|
|
247
|
+
- [ ] Test coverage > 80%
|
|
248
|
+
- [ ] Accessibility WCAG 2.1 AA
|
|
249
|
+
- [ ] Code quality metrics met
|
|
250
|
+
- [ ] Documentation complete
|
|
251
|
+
|
|
252
|
+
### Nice-to-Have (Can Address Later)
|
|
253
|
+
- [ ] Code refactoring opportunities documented
|
|
254
|
+
- [ ] Performance optimization ideas documented
|
|
255
|
+
- [ ] Future enhancement ideas documented
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Issue Prioritization
|
|
260
|
+
|
|
261
|
+
### 🔴 CRITICAL (Block Deployment)
|
|
262
|
+
- Security vulnerabilities (SQL injection, XSS, auth bypass)
|
|
263
|
+
- Data loss bugs
|
|
264
|
+
- Application crashes
|
|
265
|
+
- Complete feature breakage
|
|
266
|
+
|
|
267
|
+
### 🟠 HIGH (Fix Before Launch)
|
|
268
|
+
- Performance issues (> 5s load time)
|
|
269
|
+
- Major accessibility violations
|
|
270
|
+
- Missing auth checks
|
|
271
|
+
- Broken core functionality
|
|
272
|
+
|
|
273
|
+
### 🟡 MEDIUM (Fix in Sprint)
|
|
274
|
+
- Minor bugs
|
|
275
|
+
- Code quality issues
|
|
276
|
+
- Missing tests
|
|
277
|
+
- Minor accessibility issues
|
|
278
|
+
|
|
279
|
+
### 🔵 LOW (Backlog)
|
|
280
|
+
- Refactoring opportunities
|
|
281
|
+
- Performance optimizations
|
|
282
|
+
- Nice-to-have features
|
|
283
|
+
- Documentation improvements
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Notes
|
|
288
|
+
|
|
289
|
+
- Run automated tools FIRST: `npm audit`, `bandit`, `lighthouse`
|
|
290
|
+
- Use Serena MCP for code analysis patterns
|
|
291
|
+
- Use Antigravity Browser for E2E testing
|
|
292
|
+
- Document all findings with file:line references
|
|
293
|
+
- Provide remediation code examples
|
|
294
|
+
- Estimate fix time for each issue
|