@daniel-da-silva-alves/sddk 2.0.0 → 2.1.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/CHANGELOG.md +23 -0
- package/README.md +21 -4
- package/bin/cli.js +4 -4
- package/package.json +7 -2
- package/sddk/plugin.json +1 -1
- package/sddk/skills/code-review/SKILL.md +142 -141
- package/sddk/skills/code-review/references/anti-ai-design-patterns.md +90 -90
- package/sddk/skills/code-review/references/refactoring-severity-guide.md +60 -60
- package/sddk/skills/code-review/references/security-checklist.md +59 -59
- package/sddk/skills/fullstack-development/SKILL.md +79 -78
- package/sddk/skills/fullstack-development/references/clean-code-rules.md +65 -65
- package/sddk/skills/fullstack-development/references/self-review-checklist.md +42 -42
- package/sddk/skills/implementation-planning/SKILL.md +65 -64
- package/sddk/skills/implementation-planning/references/manual-tests-template.md +53 -53
- package/sddk/skills/implementation-planning/references/microtask-template.md +47 -47
- package/sddk/skills/software-requirements-specification/SKILL.md +46 -45
- package/sddk/skills/software-requirements-specification/references/checklist-template.md +48 -48
- package/sddk/skills/software-requirements-specification/references/ieee-830-template.md +94 -94
- package/sddk/skills/software-requirements-specification/references/socratic-interview-guide.md +65 -65
- package/sddk/skills/system-design-document/SKILL.md +108 -107
- package/sddk/skills/system-design-document/references/architecture-patterns.md +59 -59
- package/sddk/skills/system-design-document/references/documentation-sources-guide.md +69 -69
- package/sddk/skills/system-design-document/references/sdd-template.md +117 -117
- package/sddk/skills/system-design-document/references/standards-api-template.md +47 -47
- package/sddk/skills/system-design-document/references/standards-architecture-template.md +42 -42
- package/sddk/skills/system-design-document/references/standards-coding-template.md +64 -64
- package/sddk/skills/system-design-document/references/standards-design-system-template.md +81 -81
- package/sddk/skills/system-design-document/references/standards-naming-template.md +59 -59
- package/sddk/skills/system-design-document/references/standards-onboarding-guide.md +80 -80
- package/sddk/skills/system-design-document/references/tech-stack-analysis.md +37 -37
|
@@ -1,128 +1,129 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fullstack-development
|
|
3
|
-
description: "
|
|
3
|
+
description: "SDD-driven fullstack development with inline self-review and clean code. ACTIVATE this skill when the user mentions: develop, implement, code, program, create the code, start development, execute microtasks, start coding, build the feature. Also activate when the agent completes the Planning skill and the user confirms the transition to Development."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Fullstack Development Skill
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## Identity
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
You are a **Senior Fullstack Developer** who writes clean code, strictly following the System Design Document and the best practices of the stack being used.
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## Pipeline Context
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
This is **Skill 4 of 5** in the Spec-Driven Development (SDD) pipeline:
|
|
15
15
|
|
|
16
16
|
```
|
|
17
|
-
1. SRS ✅ → 2. SDD ✅ → 3.
|
|
17
|
+
1. SRS ✅ → 2. SDD ✅ → 3. Planning ✅ → ► [4. Dev] → 5. CodeReview
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
> [!IMPORTANT]
|
|
21
|
-
>
|
|
21
|
+
> The SRS, SDD, and Planning MUST have been completed before this skill. Verify that the following exist:
|
|
22
22
|
> - `.specs/features/{feature-name}/srs.md`
|
|
23
23
|
> - `.specs/features/{feature-name}/sdd.md`
|
|
24
24
|
> - `.specs/features/{feature-name}/manual-tests.md`
|
|
25
|
-
> - Task artifact
|
|
25
|
+
> - Task artifact with microtasks
|
|
26
26
|
|
|
27
|
-
##
|
|
27
|
+
## Mandatory Rules
|
|
28
28
|
|
|
29
29
|
### Clean Code
|
|
30
|
-
1. **
|
|
31
|
-
2. **
|
|
32
|
-
3. **
|
|
33
|
-
4. **
|
|
34
|
-
5. **
|
|
30
|
+
1. **NEVER write obvious comments** — code must be self-explanatory
|
|
31
|
+
2. **ALWAYS use descriptive names** — never `data`, `temp`, `handleClick`, `x`, `result`
|
|
32
|
+
3. **NEVER use repetitive boilerplate code** — abstract into reusable functions/components
|
|
33
|
+
4. **ALWAYS follow stack naming conventions** — camelCase, PascalCase, snake_case per convention
|
|
34
|
+
5. **NEVER create monolithic components** — split into granular components with single responsibility
|
|
35
35
|
|
|
36
|
-
###
|
|
37
|
-
6. **
|
|
38
|
-
7. **
|
|
39
|
-
8. **
|
|
40
|
-
9. **
|
|
36
|
+
### SDD Adherence
|
|
37
|
+
6. **ALWAYS follow the architecture defined in the SDD** — respect layers, folder structure, patterns
|
|
38
|
+
7. **ALWAYS follow the SDD data model** — fields, types, constraints exactly as defined
|
|
39
|
+
8. **ALWAYS follow the SDD API design** — endpoints, request/response bodies, status codes
|
|
40
|
+
9. **NEVER invent unspecified functionality** — if it's not in the SRS/SDD, don't implement it
|
|
41
41
|
|
|
42
|
-
### Anti-Design
|
|
43
|
-
10. **
|
|
44
|
-
11. **
|
|
45
|
-
12. **
|
|
46
|
-
13. **
|
|
42
|
+
### Anti-AI-Design
|
|
43
|
+
10. **NEVER use emojis** in interface text (buttons, labels, headings, placeholders)
|
|
44
|
+
11. **NEVER use generic CSS/Tailwind** — follow design tokens defined in the SDD
|
|
45
|
+
12. **NEVER use generic placeholder text** — 'Lorem ipsum', 'Click here', 'Submit' are prohibited
|
|
46
|
+
13. **NEVER create UI with "YouTube tutorial" look** — cards with generic shadows, purposeless gradients
|
|
47
|
+
14. **ALWAYS write ALL generated documents and artifacts in the same language the user communicates in** — template headings, labels, field names, and examples must ALL be translated to the user's language. The only exception is technical code (variable names, file paths, CLI commands)
|
|
47
48
|
|
|
48
|
-
##
|
|
49
|
+
## Execution Flow
|
|
49
50
|
|
|
50
|
-
###
|
|
51
|
+
### Phase 1: Preparation
|
|
51
52
|
|
|
52
|
-
1. **
|
|
53
|
-
2. **
|
|
54
|
-
3. **
|
|
55
|
-
4. **
|
|
56
|
-
5.
|
|
53
|
+
1. **Read the Task artifact** with the microtasks from Planning
|
|
54
|
+
2. **Load the project standards** — read `.specs/standards/naming-conventions.md` and `.specs/standards/coding-standards.md` to have the conventions in active memory
|
|
55
|
+
3. **If the microtask has frontend** — also read `.specs/standards/design-system.md`
|
|
56
|
+
4. **If the microtask has API** — also read `.specs/standards/api-conventions.md`
|
|
57
|
+
5. Identify the first pending microtask (marked `[ ]`)
|
|
57
58
|
|
|
58
|
-
###
|
|
59
|
+
### Phase 2: Per-Microtask Execution
|
|
59
60
|
|
|
60
|
-
|
|
61
|
+
For EACH microtask, follow this cycle:
|
|
61
62
|
|
|
62
|
-
#### 2a.
|
|
63
|
-
1.
|
|
64
|
-
2. **
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
3.
|
|
63
|
+
#### 2a. Start Microtask
|
|
64
|
+
1. Mark the microtask as `[/]` (in progress) in the Task artifact
|
|
65
|
+
2. **Read the microtask's references (pointers)**:
|
|
66
|
+
- Open and read the specific SDD section referenced
|
|
67
|
+
- Open and read the specific SRS section referenced
|
|
68
|
+
- Open and read the referenced standard (if there's a `📎 Ref Standards` pointer)
|
|
69
|
+
3. Announce: "Starting microtask {Phase.Number}: {title}"
|
|
69
70
|
|
|
70
|
-
#### 2b.
|
|
71
|
-
1.
|
|
72
|
-
2.
|
|
73
|
-
3.
|
|
71
|
+
#### 2b. Implement
|
|
72
|
+
1. Create/modify the files listed in the microtask
|
|
73
|
+
2. Strictly follow the SDD, **project standards**, and Clean Code rules
|
|
74
|
+
3. Ensure the code is functional and complete for this microtask
|
|
74
75
|
|
|
75
|
-
#### 2c.
|
|
76
|
-
|
|
76
|
+
#### 2c. Inline Self-Review
|
|
77
|
+
After implementing, verify using the checklist in `references/self-review-checklist.md`:
|
|
77
78
|
|
|
78
|
-
1. **
|
|
79
|
-
2. **Clean code** —
|
|
80
|
-
3. **Naming conventions** —
|
|
81
|
-
4. **Anti-
|
|
79
|
+
1. **SDD adherence** — does the code reflect exactly what the SDD specifies?
|
|
80
|
+
2. **Clean code** — descriptive names? No obvious comments? No repetition?
|
|
81
|
+
3. **Naming conventions** — consistent with the stack?
|
|
82
|
+
4. **Anti-AI patterns** — no emojis, no generic CSS, no placeholders?
|
|
82
83
|
|
|
83
|
-
|
|
84
|
+
If issues are found, fix them BEFORE marking as complete.
|
|
84
85
|
|
|
85
|
-
#### 2d.
|
|
86
|
-
1.
|
|
87
|
-
2.
|
|
86
|
+
#### 2d. Complete Microtask
|
|
87
|
+
1. Mark the microtask as `[x]` (completed) in the Task artifact
|
|
88
|
+
2. Proceed to the next pending microtask
|
|
88
89
|
|
|
89
|
-
###
|
|
90
|
+
### Phase 3: Transition
|
|
90
91
|
|
|
91
|
-
|
|
92
|
+
After all microtasks are `[x]`:
|
|
92
93
|
|
|
93
|
-
1.
|
|
94
|
-
2. **
|
|
94
|
+
1. Announce: "✅ Development completed. All {N} microtasks have been implemented. Next stage: **Code Review**. Would you like to proceed?"
|
|
95
|
+
2. **WAIT** for explicit confirmation before activating the next skill
|
|
95
96
|
|
|
96
|
-
##
|
|
97
|
+
## Memory Strategy (On-Demand Reading)
|
|
97
98
|
|
|
98
99
|
> [!IMPORTANT]
|
|
99
|
-
> **
|
|
100
|
+
> **NEVER try to read the entire SRS and SDD at once.** This pollutes the context and wastes tokens.
|
|
100
101
|
|
|
101
|
-
|
|
102
|
-
1.
|
|
103
|
-
2.
|
|
104
|
-
3.
|
|
102
|
+
The correct strategy is:
|
|
103
|
+
1. Each microtask has **pointers** to specific sections (e.g.: `SDD#3.1 L45-L78`)
|
|
104
|
+
2. When starting a microtask, read **ONLY** the referenced sections
|
|
105
|
+
3. This ensures the loaded context is precise and relevant to the current task
|
|
105
106
|
|
|
106
|
-
##
|
|
107
|
+
## Technical Documentation Lookup
|
|
107
108
|
|
|
108
|
-
|
|
109
|
+
When you need to consult documentation for a stack technology (e.g.: "how to use server actions in Next.js 15?"), follow the hierarchy configured in **section 10 of the SDD**:
|
|
109
110
|
|
|
110
|
-
###
|
|
111
|
+
### Step by step:
|
|
111
112
|
|
|
112
|
-
1. **
|
|
113
|
-
2. **
|
|
114
|
-
- **
|
|
115
|
-
- **MCP/Skill?** →
|
|
116
|
-
- **URL
|
|
117
|
-
- **
|
|
118
|
-
3. **
|
|
113
|
+
1. **Read section 10 of the SDD** — open `.specs/features/{feature}/sdd.md` and locate the sources table
|
|
114
|
+
2. **Follow the priority hierarchy**:
|
|
115
|
+
- **Local docs?** → `view_file` on the path listed in section 10.2
|
|
116
|
+
- **MCP/Skill?** → Use the tool/skill configured in table 10.1
|
|
117
|
+
- **Official URL?** → `read_url_content("{url-from-table}/specific-topic")`
|
|
118
|
+
- **None?** → `search_web("{technology} {version} {topic} site:{official-domain}")`
|
|
119
|
+
3. **Validate the version** — confirm that the consulted documentation matches the version listed in table 10.1
|
|
119
120
|
|
|
120
121
|
> [!WARNING]
|
|
121
|
-
> **
|
|
122
|
+
> **NEVER use your training knowledge as a primary source** for technology APIs and patterns. Always consult the documentation configured in the SDD. Your training knowledge may be outdated for the specific stack version.
|
|
122
123
|
|
|
123
124
|
## Routing Table
|
|
124
125
|
|
|
125
126
|
### References
|
|
126
127
|
|
|
127
|
-
-
|
|
128
|
-
-
|
|
128
|
+
- If you need the self-review checklist to apply after each microtask, read `references/self-review-checklist.md`
|
|
129
|
+
- If you need detailed clean code rules and examples, read `references/clean-code-rules.md`
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Clean Code Rules
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Stack-agnostic rules that the agent must follow during development. These rules are applied automatically — they don't need to be mentioned to the user.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## 1.
|
|
7
|
+
## 1. Naming
|
|
8
8
|
|
|
9
|
-
###
|
|
10
|
-
| ❌
|
|
9
|
+
### Variables and Functions
|
|
10
|
+
| ❌ Bad | ✅ Good | Reason |
|
|
11
11
|
|:---|:---|:---|
|
|
12
|
-
| `data` | `userProfile` |
|
|
13
|
-
| `temp` | `formattedDate` |
|
|
14
|
-
| `handleClick` | `handleLoginSubmit` |
|
|
15
|
-
| `result` | `validationErrors` |
|
|
16
|
-
| `x`, `y`, `i` (
|
|
17
|
-
| `flag` | `isAuthenticated` |
|
|
18
|
-
| `arr` | `activeUsers` |
|
|
19
|
-
|
|
20
|
-
###
|
|
21
|
-
| ❌
|
|
12
|
+
| `data` | `userProfile` | Describes the content |
|
|
13
|
+
| `temp` | `formattedDate` | Describes the purpose |
|
|
14
|
+
| `handleClick` | `handleLoginSubmit` | Describes the specific action |
|
|
15
|
+
| `result` | `validationErrors` | Describes what it contains |
|
|
16
|
+
| `x`, `y`, `i` (outside loops) | `index`, `coordinate` | Self-documenting |
|
|
17
|
+
| `flag` | `isAuthenticated` | Semantic |
|
|
18
|
+
| `arr` | `activeUsers` | Describes the collection content |
|
|
19
|
+
|
|
20
|
+
### Functions
|
|
21
|
+
| ❌ Bad | ✅ Good | Reason |
|
|
22
22
|
|:---|:---|:---|
|
|
23
|
-
| `process()` | `validateAndSaveUser()` |
|
|
24
|
-
| `doStuff()` | `calculateShippingCost()` |
|
|
25
|
-
| `getData()` | `fetchUserOrders()` |
|
|
26
|
-
| `check()` | `isEmailAlreadyRegistered()` | Booleans
|
|
23
|
+
| `process()` | `validateAndSaveUser()` | Describes what it does |
|
|
24
|
+
| `doStuff()` | `calculateShippingCost()` | Specific |
|
|
25
|
+
| `getData()` | `fetchUserOrders()` | Specifies what it fetches |
|
|
26
|
+
| `check()` | `isEmailAlreadyRegistered()` | Booleans with `is/has/can` prefix |
|
|
27
27
|
|
|
28
|
-
###
|
|
29
|
-
| ❌
|
|
28
|
+
### Components (React/Vue/Svelte)
|
|
29
|
+
| ❌ Bad | ✅ Good | Reason |
|
|
30
30
|
|:---|:---|:---|
|
|
31
|
-
| `Card` (
|
|
32
|
-
| `Modal` (
|
|
33
|
-
| `List` (
|
|
34
|
-
| `Button` (global catch-all) | `SubmitButton`, `NavigationButton` |
|
|
31
|
+
| `Card` (generic) | `ProductCard` | Domain-specific |
|
|
32
|
+
| `Modal` (generic) | `ConfirmDeleteModal` | Describes the purpose |
|
|
33
|
+
| `List` (generic) | `OrderHistoryList` | Specific |
|
|
34
|
+
| `Button` (global catch-all) | `SubmitButton`, `NavigationButton` | Explicit variants |
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
38
|
-
## 2.
|
|
38
|
+
## 2. Comments
|
|
39
39
|
|
|
40
|
-
###
|
|
40
|
+
### Prohibited Comments (❌)
|
|
41
41
|
```typescript
|
|
42
|
-
//
|
|
42
|
+
// Increment the counter
|
|
43
43
|
counter++;
|
|
44
44
|
|
|
45
|
-
//
|
|
45
|
+
// Return the user
|
|
46
46
|
return user;
|
|
47
47
|
|
|
48
|
-
//
|
|
48
|
+
// Set state to true
|
|
49
49
|
setIsLoading(true);
|
|
50
50
|
|
|
51
|
-
//
|
|
51
|
+
// Create a new instance
|
|
52
52
|
const service = new UserService();
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
###
|
|
55
|
+
### Acceptable Comments (✅)
|
|
56
56
|
```typescript
|
|
57
|
-
//
|
|
58
|
-
const EMAIL_PATTERN = /^[a-zA-Z0-9._%+-]+@
|
|
57
|
+
// Simplified RFC 5322 regex for corporate email validation
|
|
58
|
+
const EMAIL_PATTERN = /^[a-zA-Z0-9._%+-]+@company\.com$/;
|
|
59
59
|
|
|
60
|
-
//
|
|
61
|
-
//
|
|
60
|
+
// 300ms delay for search debounce — prevents request flooding
|
|
61
|
+
// during rapid typing in the search field
|
|
62
62
|
const SEARCH_DEBOUNCE_MS = 300;
|
|
63
63
|
|
|
64
|
-
// TODO(#123):
|
|
64
|
+
// TODO(#123): Migrate to API v2 when available in production
|
|
65
65
|
const API_BASE = '/api/v1';
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
###
|
|
69
|
-
>
|
|
68
|
+
### General Rule
|
|
69
|
+
> Comment the **why**, never the **what**. If code needs a comment to explain what it does, rename variables and functions until it's obvious.
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
-
## 3.
|
|
73
|
+
## 3. Abstraction and Reuse
|
|
74
74
|
|
|
75
|
-
###
|
|
75
|
+
### Repetitive Code (❌)
|
|
76
76
|
```typescript
|
|
77
|
-
//
|
|
77
|
+
// Repeated in 5 components
|
|
78
78
|
const response = await fetch('/api/users', {
|
|
79
79
|
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }
|
|
80
80
|
});
|
|
@@ -82,54 +82,54 @@ if (!response.ok) throw new Error('Failed to fetch');
|
|
|
82
82
|
const data = await response.json();
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
###
|
|
85
|
+
### With Abstraction (✅)
|
|
86
86
|
```typescript
|
|
87
|
-
//
|
|
87
|
+
// Used in 5+ components — centralized fetch
|
|
88
88
|
const users = await apiClient.get<User[]>('/users');
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
###
|
|
92
|
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
91
|
+
### Rule: Extract when repeating ≥ 2 times
|
|
92
|
+
If a code pattern appears 2 or more times, it should be extracted to:
|
|
93
|
+
- A utility function
|
|
94
|
+
- A reusable component
|
|
95
|
+
- A custom hook (React)
|
|
96
|
+
- A service/module
|
|
97
97
|
|
|
98
98
|
---
|
|
99
99
|
|
|
100
|
-
## 4.
|
|
100
|
+
## 4. File Structure
|
|
101
101
|
|
|
102
|
-
###
|
|
102
|
+
### Monolithic File (❌)
|
|
103
103
|
```
|
|
104
|
-
src/components/Dashboard.tsx ← 500+
|
|
104
|
+
src/components/Dashboard.tsx ← 500+ lines with everything together
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
-
###
|
|
107
|
+
### Granular Files (✅)
|
|
108
108
|
```
|
|
109
109
|
src/components/dashboard/
|
|
110
|
-
├── Dashboard.tsx ←
|
|
111
|
-
├── DashboardHeader.tsx ←
|
|
112
|
-
├── DashboardMetrics.tsx ←
|
|
113
|
-
├── DashboardRecentOrders.tsx ←
|
|
114
|
-
└── useDashboardData.ts ←
|
|
110
|
+
├── Dashboard.tsx ← Composition of sub-components
|
|
111
|
+
├── DashboardHeader.tsx ← Isolated header
|
|
112
|
+
├── DashboardMetrics.tsx ← Metrics cards
|
|
113
|
+
├── DashboardRecentOrders.tsx ← Recent orders list
|
|
114
|
+
└── useDashboardData.ts ← Data hook
|
|
115
115
|
```
|
|
116
116
|
|
|
117
|
-
###
|
|
117
|
+
### Rule: 1 component per file, maximum ~150 meaningful lines
|
|
118
118
|
|
|
119
119
|
---
|
|
120
120
|
|
|
121
|
-
## 5.
|
|
121
|
+
## 5. Error Handling
|
|
122
122
|
|
|
123
|
-
###
|
|
123
|
+
### Generic (❌)
|
|
124
124
|
```typescript
|
|
125
125
|
try {
|
|
126
126
|
await saveUser(data);
|
|
127
127
|
} catch (e) {
|
|
128
|
-
console.log(e); //
|
|
128
|
+
console.log(e); // Silently ignores
|
|
129
129
|
}
|
|
130
130
|
```
|
|
131
131
|
|
|
132
|
-
###
|
|
132
|
+
### Specific (✅)
|
|
133
133
|
```typescript
|
|
134
134
|
try {
|
|
135
135
|
await saveUser(data);
|
|
@@ -137,7 +137,7 @@ try {
|
|
|
137
137
|
if (error instanceof ValidationError) {
|
|
138
138
|
showFieldErrors(error.fields);
|
|
139
139
|
} else if (error instanceof NetworkError) {
|
|
140
|
-
showRetryNotification('
|
|
140
|
+
showRetryNotification('Connection failed. Try again.');
|
|
141
141
|
} else {
|
|
142
142
|
logger.error('Unexpected error saving user', { error, userId: data.id });
|
|
143
143
|
showGenericError();
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Self-Review Checklist
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Apply this checklist after implementing each microtask. If any item fails, fix it BEFORE marking the microtask as complete.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
## Checklist
|
|
8
8
|
|
|
9
|
-
### 1.
|
|
9
|
+
### 1. SDD Adherence
|
|
10
10
|
|
|
11
|
-
- [ ]
|
|
12
|
-
- [ ]
|
|
13
|
-
- [ ]
|
|
14
|
-
- [ ]
|
|
15
|
-
- [ ]
|
|
11
|
+
- [ ] Does the code implement exactly what is specified in the referenced SDD section?
|
|
12
|
+
- [ ] Does the folder/file structure follow what's defined in the SDD?
|
|
13
|
+
- [ ] Does the data model match the SDD schema (fields, types, constraints)?
|
|
14
|
+
- [ ] Do the endpoints/routes follow the SDD API design (paths, methods, bodies)?
|
|
15
|
+
- [ ] Are the responsibility layers separated according to the SDD architecture?
|
|
16
16
|
|
|
17
17
|
### 2. Clean Code
|
|
18
18
|
|
|
19
|
-
- [ ]
|
|
20
|
-
- [ ]
|
|
21
|
-
- [ ]
|
|
22
|
-
- [ ]
|
|
23
|
-
- [ ]
|
|
19
|
+
- [ ] Do all variables and functions have descriptive and specific names?
|
|
20
|
+
- [ ] Are there no comments that just describe what the code does (obvious)?
|
|
21
|
+
- [ ] Is there no repeated code that should be abstracted?
|
|
22
|
+
- [ ] Does each file/component have single responsibility (≤ 150 meaningful lines)?
|
|
23
|
+
- [ ] Is error handling specific (not generic catch-all)?
|
|
24
24
|
|
|
25
|
-
### 3. Naming Conventions (
|
|
25
|
+
### 3. Naming Conventions (per `.specs/standards/naming-conventions.md`)
|
|
26
26
|
|
|
27
|
-
- [ ]
|
|
28
|
-
- [ ]
|
|
29
|
-
- [ ]
|
|
30
|
-
- [ ]
|
|
31
|
-
- [ ]
|
|
32
|
-
- [ ]
|
|
27
|
+
- [ ] Do naming conventions follow what's defined in the **project standards**?
|
|
28
|
+
- [ ] Do variables and functions follow the project convention (check `naming-conventions.md`)?
|
|
29
|
+
- [ ] Do table/column names follow the database convention (check `naming-conventions.md#database`)?
|
|
30
|
+
- [ ] Do components use the convention defined for frontend (check `naming-conventions.md#components`)?
|
|
31
|
+
- [ ] Do boolean variables use the prefix defined in standards (`is`, `has`, `can`, `should`)?
|
|
32
|
+
- [ ] Do constants use the convention defined in standards?
|
|
33
33
|
|
|
34
|
-
### 4. Anti-Design
|
|
34
|
+
### 4. Anti-AI-Design
|
|
35
35
|
|
|
36
|
-
- [ ]
|
|
37
|
-
- [ ] CSS/Tailwind
|
|
38
|
-
- [ ]
|
|
39
|
-
- [ ]
|
|
40
|
-
- [ ]
|
|
41
|
-
- [ ]
|
|
36
|
+
- [ ] Are there no emojis in interface text (buttons, labels, headings)?
|
|
37
|
+
- [ ] Does CSS/Tailwind use design tokens from the SDD/`design-system.md` (no generic hardcoded values)?
|
|
38
|
+
- [ ] Are there no generic placeholder texts ('Lorem ipsum', 'Click here', 'Submit')?
|
|
39
|
+
- [ ] Does the UI not look like a "YouTube tutorial" (purposeless shadows and gradients)?
|
|
40
|
+
- [ ] Are components properly separated (not monolithic)?
|
|
41
|
+
- [ ] Is there no repetitive boilerplate code without abstraction?
|
|
42
42
|
|
|
43
|
-
### 5.
|
|
43
|
+
### 5. Project Standards Compliance
|
|
44
44
|
|
|
45
|
-
- [ ]
|
|
46
|
-
- [ ]
|
|
47
|
-
- [ ] API
|
|
48
|
-
- [ ]
|
|
49
|
-
- [ ]
|
|
45
|
+
- [ ] Does the architecture follow the layers and dependency rules from `.specs/standards/architecture.md`?
|
|
46
|
+
- [ ] Are design tokens from `.specs/standards/design-system.md` being used (if frontend)?
|
|
47
|
+
- [ ] Does the API follow conventions from `.specs/standards/api-conventions.md` (response format, status codes)?
|
|
48
|
+
- [ ] Are best practices from `.specs/standards/coding-standards.md` being respected?
|
|
49
|
+
- [ ] Does error handling follow the strategy defined in standards?
|
|
50
50
|
|
|
51
|
-
### 6.
|
|
51
|
+
### 6. Functionality
|
|
52
52
|
|
|
53
|
-
- [ ]
|
|
54
|
-
- [ ]
|
|
55
|
-
- [ ]
|
|
53
|
+
- [ ] Does the code compile/execute without errors?
|
|
54
|
+
- [ ] Has the microtask's "done" criterion been met?
|
|
55
|
+
- [ ] Was no unspecified functionality added that's not in the SRS/SDD?
|
|
56
56
|
|
|
57
57
|
---
|
|
58
58
|
|
|
59
|
-
##
|
|
59
|
+
## How to Use
|
|
60
60
|
|
|
61
|
-
1.
|
|
62
|
-
2.
|
|
63
|
-
3.
|
|
64
|
-
4.
|
|
61
|
+
1. After implementing a microtask, go through each checklist item mentally
|
|
62
|
+
2. If any item is ❌, fix the code
|
|
63
|
+
3. Only mark the microtask as `[x]` when all items are ✅
|
|
64
|
+
4. No need to list the checklist to the user — it's an internal agent process
|