@leejungkiin/awkit 1.3.7 → 1.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/bin/awk.js +250 -59
- package/core/AGENTS.md +38 -0
- package/core/GEMINI.md.bak +126 -199
- package/package.json +1 -1
- package/skill-packs/superpowers/skills/single-flow-task-execution/SKILL.md +50 -0
- package/skills/admob-roas/SKILL.md +130 -0
- package/skills/awf-session-restore/SKILL.md +12 -2
- package/skills/brainstorm-agent/SKILL.md +11 -8
- package/skills/gitnexus/gitnexus-cli/SKILL.md +82 -0
- package/skills/gitnexus/gitnexus-debugging/SKILL.md +89 -0
- package/skills/gitnexus/gitnexus-exploring/SKILL.md +78 -0
- package/skills/gitnexus/gitnexus-guide/SKILL.md +64 -0
- package/skills/gitnexus/gitnexus-impact-analysis/SKILL.md +97 -0
- package/skills/gitnexus/gitnexus-refactoring/SKILL.md +121 -0
- package/skills/nm-memory-sync/SKILL.md +14 -1
- package/skills/orchestrator/SKILL.md +25 -465
- package/skills/ship-to-code/SKILL.md +115 -0
- package/skills/single-flow-task-execution/SKILL.md +409 -0
- package/skills/single-flow-task-execution/code-quality-reviewer-prompt.md +20 -0
- package/skills/single-flow-task-execution/implementer-prompt.md +78 -0
- package/skills/single-flow-task-execution/spec-reviewer-prompt.md +61 -0
- package/skills/symphony-enforcer/SKILL.md +239 -32
- package/skills/trello-sync/SKILL.md +55 -32
- package/templates/CODEBASE.md +26 -42
- package/templates/configs/trello-config.json +2 -2
- package/templates/project-identity/android.json +10 -0
- package/templates/project-identity/backend-nestjs.json +10 -0
- package/templates/project-identity/expo.json +10 -0
- package/templates/project-identity/ios.json +10 -0
- package/templates/project-identity/web-nextjs.json +10 -0
- package/templates/workflow_dual_mode_template.md +5 -5
- package/workflows/_uncategorized/conductor-codex.md +125 -0
- package/workflows/_uncategorized/conductor.md +97 -0
- package/workflows/_uncategorized/trello-sync.md +52 -0
- package/workflows/quality/visual-debug.md +66 -12
|
@@ -4,13 +4,13 @@ description: |
|
|
|
4
4
|
Mandatory Symphony checkpoint system. Ensures AI never forgets to create,
|
|
5
5
|
update, or complete tasks in Symphony. Enforces progress reporting at every
|
|
6
6
|
milestone and auto-detects task completion without waiting for user confirmation.
|
|
7
|
-
v3.
|
|
7
|
+
v3.5: UI-First Three-Phase Execution with User Test Checkpoints.
|
|
8
8
|
metadata:
|
|
9
9
|
stage: core
|
|
10
|
-
version: "3.
|
|
11
|
-
replaces: "v3.
|
|
10
|
+
version: "3.6"
|
|
11
|
+
replaces: "v3.5"
|
|
12
12
|
requires: symphony-orchestrator
|
|
13
|
-
tags: [symphony, enforcement, checkpoint, task-lifecycle, core, spec-first, auto-next, kiro]
|
|
13
|
+
tags: [symphony, enforcement, checkpoint, task-lifecycle, core, spec-first, auto-next, kiro, ui-first, user-test]
|
|
14
14
|
agent: Symphony Enforcer
|
|
15
15
|
allowed-tools:
|
|
16
16
|
- symphony_create_task
|
|
@@ -24,17 +24,15 @@ invocation-type: auto
|
|
|
24
24
|
priority: 1
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
# Symphony Enforcer v3.
|
|
27
|
+
# Symphony Enforcer v3.6 — UI-First Three-Phase Execution + Legacy Cleanup
|
|
28
28
|
|
|
29
29
|
> **Purpose:** Đảm bảo AI KHÔNG BAO GIỜ quên cập nhật Symphony.
|
|
30
|
-
> **Key Changes v3.
|
|
31
|
-
> - **
|
|
32
|
-
> - **
|
|
33
|
-
> - **
|
|
34
|
-
> - **
|
|
35
|
-
> -
|
|
36
|
-
> - **Auto-Next**: BẮT BUỘC gợi ý next steps sau mỗi task done
|
|
37
|
-
> - **Atomic Git Commits**: Tự động commit sau mỗi task done
|
|
30
|
+
> **Key Changes v3.6:**
|
|
31
|
+
> - **Step 0.5: Legacy Artifact Cleanup**: Auto-detect stale `.symphony/tasks.json` and warn user
|
|
32
|
+
> - **Gate 4 Three-Phase Execution**: Phase A (Infra) → Phase B (UI Shell + User Test) → Phase C (Logic + User Test)
|
|
33
|
+
> - **TP1.7: User Test Checkpoint**: Trigger dừng lại cho user test trên device thật
|
|
34
|
+
> - **UI-First Task Ordering**: UI tasks PHẢI đi trước logic tasks trong Symphony
|
|
35
|
+
> - Kế thừa tất cả features v3.5 (Kiro, Completion Status, Design Compliance).
|
|
38
36
|
> **Principle:** AI tự detect completion — user KHÔNG CẦN nói "xong".
|
|
39
37
|
|
|
40
38
|
---
|
|
@@ -55,16 +53,32 @@ KHÔNG CÓ NGOẠI LỆ:
|
|
|
55
53
|
|
|
56
54
|
## 🔒 STRICT STARTUP PROTOCOL (BẮT BUỘC)
|
|
57
55
|
|
|
58
|
-
Mỗi khi bắt đầu task code/debug/plan, AI PHẢI đi qua **
|
|
56
|
+
Mỗi khi bắt đầu task code/debug/plan, AI PHẢI đi qua **6 steps tuần tự**.
|
|
59
57
|
KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
|
|
60
58
|
|
|
59
|
+
### Step 0.5: Legacy Artifact Cleanup (AUTO — v3.6)
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
→ Kiểm tra: .symphony/tasks.json tồn tại?
|
|
63
|
+
→ CÓ → ⚠️ CẢNH BÁO: "Legacy tasks.json detected. Symphony uses SQLite DB — this file is stale."
|
|
64
|
+
→ Khuyên user xoá: "rm .symphony/tasks.json"
|
|
65
|
+
→ KHÔNG tự xoá (safety guardrail) — chỉ cảnh báo.
|
|
66
|
+
→ Ghi log vào NeuralMemory: "Legacy tasks.json found at {project}, warned user."
|
|
67
|
+
→ KHÔNG → ✅ Clean (no legacy artifacts)
|
|
68
|
+
→ Output: "🧹 Step 0.5: Legacy Check ✅ — No stale artifacts"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
> **Lý do:** Symphony v2+ sử dụng SQLite DB (`symphony.db`) làm single source of truth.
|
|
72
|
+
> File `tasks.json` là di sản từ phiên bản cũ (pre-SQLite). Nếu tồn tại song song sẽ gây
|
|
73
|
+
> "split-brain" — một nửa tool đọc JSON, một nửa đọc DB → dữ liệu lệch pha.
|
|
74
|
+
|
|
61
75
|
### Step 1: Project Identity — `.project-identity`
|
|
62
76
|
|
|
63
77
|
```
|
|
64
78
|
→ Kiểm tra: file .project-identity có tồn tại?
|
|
65
79
|
→ CÓ → Đọc projectId, projectName
|
|
66
80
|
→ KHÔNG → ⛔ DỪNG. Hỏi user hoặc tạo .project-identity.
|
|
67
|
-
→ Output: "📋 Step 1/
|
|
81
|
+
→ Output: "📋 Step 1/6: Project Identity ✅ — {projectId}"
|
|
68
82
|
```
|
|
69
83
|
|
|
70
84
|
### Step 2: NeuralMemory Brain — Switch brain
|
|
@@ -72,7 +86,7 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
|
|
|
72
86
|
```
|
|
73
87
|
→ nmem brain use <projectId>
|
|
74
88
|
→ nmem_recap(level=1) — load context
|
|
75
|
-
→ Output: "🧠 Step 2/
|
|
89
|
+
→ Output: "🧠 Step 2/6: Brain ✅ — switched to {projectId}"
|
|
76
90
|
```
|
|
77
91
|
|
|
78
92
|
### Step 3: Spec Alignment — Đọc Project Spec (v3.4 + Kiro)
|
|
@@ -85,7 +99,7 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
|
|
|
85
99
|
- .kiro/specs/<module>/design.md → architecture
|
|
86
100
|
- .kiro/specs/<module>/tasks.md → task breakdown (cho Step 4)
|
|
87
101
|
→ Extract constraints liên quan đến task hiện tại
|
|
88
|
-
→ Output: "📐 Step 3/
|
|
102
|
+
→ Output: "📐 Step 3/6: Kiro Specs Loaded ✅ — {N} modules, {M} design docs"
|
|
89
103
|
|
|
90
104
|
→ CHECK 2 (fallback): docs/specs/PROJECT.md tồn tại?
|
|
91
105
|
→ CÓ → Đọc silent: PROJECT.md + TECH-SPEC.md + REQUIREMENTS.md
|
|
@@ -93,8 +107,8 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
|
|
|
93
107
|
→ NẾU PLANNING mode:
|
|
94
108
|
- Hỏi user 1-3 câu về constraints/UX cụ thể của feature
|
|
95
109
|
- Ví dụ: "Feature này cần offline support không?"
|
|
96
|
-
→ Output: "📐 Step 3/
|
|
97
|
-
→ KHÔNG → Skip (project chưa /init) → "📐 Step 3/
|
|
110
|
+
→ Output: "📐 Step 3/6: Spec Aligned ✅"
|
|
111
|
+
→ KHÔNG → Skip (project chưa /init) → "📐 Step 3/6: No spec — skipped"
|
|
98
112
|
```
|
|
99
113
|
|
|
100
114
|
> **Quan trọng:** Nếu .kiro/specs hoặc TECH-SPEC.md có "Constraints & Non-Negotiables",
|
|
@@ -108,7 +122,7 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
|
|
|
108
122
|
- Group theo module name
|
|
109
123
|
- Đánh tag kèm module name
|
|
110
124
|
→ ⛔ CẢNH BÁO: KHÔNG đồng bộ hàng loạt các item nhỏ này lên Trello (để tránh rác board). Chỉ đồng bộ lên cấp module hoặc feature lớn.
|
|
111
|
-
→ Output: "🎯 Step 4/
|
|
125
|
+
→ Output: "🎯 Step 4/6: Kiro Tasks Imported ✅ — {N} tasks created"
|
|
112
126
|
→ Claim task phù hợp nhất với user request
|
|
113
127
|
→ CÓ + đã import → symphony_available_tasks → claim task phù hợp
|
|
114
128
|
|
|
@@ -117,7 +131,7 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
|
|
|
117
131
|
→ CÓ task ready phù hợp → symphony_claim_task
|
|
118
132
|
→ KHÔNG CÓ → symphony_create_task(title) → symphony_claim_task(new_id)
|
|
119
133
|
→ Lưu task_id cho TP1-TP4
|
|
120
|
-
→ Output: "🎯 Step 4/
|
|
134
|
+
→ Output: "🎯 Step 4/6: Task ✅ — #sym-XYZ claimed"
|
|
121
135
|
```
|
|
122
136
|
|
|
123
137
|
### Step 5: Confirmation Block
|
|
@@ -125,11 +139,12 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
|
|
|
125
139
|
```
|
|
126
140
|
🚦 STARTUP PROTOCOL COMPLETE
|
|
127
141
|
══════════════════════════════════════
|
|
128
|
-
Step
|
|
129
|
-
Step
|
|
130
|
-
Step
|
|
131
|
-
Step
|
|
132
|
-
Step
|
|
142
|
+
Step 0.5: 🧹 Legacy Check ✅ No stale artifacts
|
|
143
|
+
Step 1: 📋 Project Identity ✅ {projectId}
|
|
144
|
+
Step 2: 🧠 NeuralMemory ✅ brain: {projectId}
|
|
145
|
+
Step 3: 📐 Spec Alignment ✅ {constraints_count} constraints loaded
|
|
146
|
+
Step 4: 🎯 Task ✅ #sym-XYZ — "{title}"
|
|
147
|
+
Step 5: ✅ READY TO WORK
|
|
133
148
|
══════════════════════════════════════
|
|
134
149
|
```
|
|
135
150
|
|
|
@@ -137,7 +152,7 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
|
|
|
137
152
|
|
|
138
153
|
---
|
|
139
154
|
|
|
140
|
-
## Auto-Lifecycle: task_boundary ↔ Symphony (
|
|
155
|
+
## Auto-Lifecycle: task_boundary ↔ Symphony (v3.5)
|
|
141
156
|
|
|
142
157
|
```
|
|
143
158
|
LIÊN KẾT TỰ ĐỘNG:
|
|
@@ -145,6 +160,12 @@ LIÊN KẾT TỰ ĐỘNG:
|
|
|
145
160
|
- task_boundary(EXECUTION) → symphony_report_progress(40%)
|
|
146
161
|
- task_boundary(VERIFICATION) → symphony_report_progress(80%)
|
|
147
162
|
- notify_user(BlockedOnUser=false) → TRIGGER TP2 (completion check)
|
|
163
|
+
|
|
164
|
+
THREE-PHASE MAPPING (Gate 4 — COMPLEX tasks với UI):
|
|
165
|
+
- Phase A done (build OK) → report_progress(25%) + checkpoint build
|
|
166
|
+
- Phase B done (UI mock) → report_progress(45%) + TRIGGER TP1.7 (User Test)
|
|
167
|
+
- Phase C per-feature done → report_progress(50-85%) + TRIGGER TP1.7 (User Test)
|
|
168
|
+
- Phase C all features done → report_progress(90%) → Gate 5
|
|
148
169
|
```
|
|
149
170
|
|
|
150
171
|
AI PHẢI giữ `current_task_id` xuyên suốt session.
|
|
@@ -152,6 +173,113 @@ Mỗi lần gọi `task_boundary` với mode mới → đồng thời report pro
|
|
|
152
173
|
|
|
153
174
|
---
|
|
154
175
|
|
|
176
|
+
## 🚨 Three-Phase Auto-Enforcement Protocol (BẮT BUỘC — v3.5)
|
|
177
|
+
|
|
178
|
+
> **Vấn đề:** AI không tự chủ động dùng Three-Phase nếu không bị ép.
|
|
179
|
+
> **Giải pháp:** Auto-detect + auto-announce + auto-enforce.
|
|
180
|
+
|
|
181
|
+
### Phase State Tracking
|
|
182
|
+
|
|
183
|
+
AI PHẢI duy trì trạng thái phase hiện tại xuyên suốt Gate 4:
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
current_phase = "A" | "B" | "C" | "none"
|
|
187
|
+
phase_b_confirmed = false | true
|
|
188
|
+
checkpoint_count = 0
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Auto-Detection: Khi nào kích hoạt Three-Phase?
|
|
192
|
+
|
|
193
|
+
Tại đầu Gate 4 (EXECUTION bắt đầu), AI PHẢI tự kiểm tra:
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
1. Task được triage là COMPLEX?
|
|
197
|
+
2. Task có UI component? (detect qua):
|
|
198
|
+
→ Symphony task title chứa: screen, view, UI, layout, dashboard, form
|
|
199
|
+
→ Implementation plan mentions: Composable, Fragment, Activity, Screen, View
|
|
200
|
+
→ Design doc tồn tại (docs/design/ hoặc docs/architecture/ có UI sections)
|
|
201
|
+
→ Spec references: wireframe, mockup, screenshot
|
|
202
|
+
→ Platform: Android/iOS/React Native/Flutter (hầu hết có UI)
|
|
203
|
+
|
|
204
|
+
Nếu CẢ HAI điều kiện thỏa:
|
|
205
|
+
→ BẮT BUỘC kích hoạt Three-Phase
|
|
206
|
+
→ Hiển thị Phase Announcement Block
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Phase Announcement Block (BẮT BUỘC)
|
|
210
|
+
|
|
211
|
+
Khi kích hoạt Three-Phase, AI PHẢI hiển thị:
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
🎯 THREE-PHASE EXECUTION ACTIVATED
|
|
215
|
+
══════════════════════════════════════
|
|
216
|
+
🏗️ Phase A: Infrastructure Setup
|
|
217
|
+
→ {list tasks for Phase A}
|
|
218
|
+
🎨 Phase B: UI Shell (Mock Data)
|
|
219
|
+
→ {list tasks for Phase B}
|
|
220
|
+
→ 🧪 USER TEST sau phase này
|
|
221
|
+
⚡ Phase C: Logic Integration
|
|
222
|
+
→ {list tasks for Phase C}
|
|
223
|
+
→ 🧪 USER TEST mỗi feature
|
|
224
|
+
══════════════════════════════════════
|
|
225
|
+
Bắt đầu Phase A...
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Phase Transition Triggers (TỰ ĐỘNG)
|
|
229
|
+
|
|
230
|
+
AI PHẢI tự động phát hiện khi chuyển phase:
|
|
231
|
+
|
|
232
|
+
```yaml
|
|
233
|
+
auto_triggers:
|
|
234
|
+
phase_a_to_b:
|
|
235
|
+
signal: Tất cả [INFRA] tasks đã done + build OK
|
|
236
|
+
action: |
|
|
237
|
+
- Announce: "🏗️ Phase A ✅ — Build thành công. Chuyển sang Phase B (UI Shell)."
|
|
238
|
+
- Set current_phase = "B"
|
|
239
|
+
- Bắt đầu code UI tasks
|
|
240
|
+
|
|
241
|
+
phase_b_to_checkpoint:
|
|
242
|
+
signal: Tất cả [UI] tasks đã done
|
|
243
|
+
action: |
|
|
244
|
+
- ⛔ DẪNG CODE NGAY LẬP TỨC
|
|
245
|
+
- TRIGGER TP1.7 (User Test Checkpoint)
|
|
246
|
+
- CHỊ user confirm "✅ OK" trước khi làm bất cứ gì khác
|
|
247
|
+
- KHÔNG được tự ý skip bước này
|
|
248
|
+
|
|
249
|
+
checkpoint_to_phase_c:
|
|
250
|
+
signal: User confirmed "✅" hoặc "OK"
|
|
251
|
+
action: |
|
|
252
|
+
- Set phase_b_confirmed = true
|
|
253
|
+
- Set current_phase = "C"
|
|
254
|
+
- Announce: "🎨 Phase B ✅ — UI đã được duyệt. Chuyển sang Phase C (Logic)."
|
|
255
|
+
- Bắt đầu code [LOGIC] tasks
|
|
256
|
+
|
|
257
|
+
phase_c_per_feature:
|
|
258
|
+
signal: 1 feature [LOGIC] đã done + có UI impact
|
|
259
|
+
action: |
|
|
260
|
+
- TRIGGER TP1.7 (mini checkpoint)
|
|
261
|
+
- Batch các features nhỏ lại nếu có thể
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Enforcement Rules
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
❌ VI PHạM NẶNG:
|
|
268
|
+
- Code logic (Phase C) khi phase_b_confirmed = false
|
|
269
|
+
- Skip Phase Announcement Block
|
|
270
|
+
- Code UI và Logic lẫn lộn trong cùng 1 lượt (phải tách rõ phase)
|
|
271
|
+
- Tự giả vờ user confirm để skip checkpoint
|
|
272
|
+
- Không hiển thị Phase Announcement khi Three-Phase activated
|
|
273
|
+
|
|
274
|
+
✅ BẮT BUỘC:
|
|
275
|
+
- Luôn announce phase transition rõ ràng
|
|
276
|
+
- Luôn tạo hướng dẫn test CỤ THỂ (không chung chung)
|
|
277
|
+
- Luôn dùng notify_user(BlockedOnUser=true) cho checkpoints
|
|
278
|
+
- Ghi lại phase state vào NeuralMemory khi chuyển phase
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
155
283
|
## Trigger Points
|
|
156
284
|
|
|
157
285
|
### TP1: Progress Milestone
|
|
@@ -171,13 +299,16 @@ symphony_report_progress(
|
|
|
171
299
|
)
|
|
172
300
|
```
|
|
173
301
|
|
|
174
|
-
**Progress Guide:**
|
|
302
|
+
**Progress Guide (Three-Phase Model):**
|
|
175
303
|
```
|
|
176
304
|
10% — Task created, đang research/đọc code
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
305
|
+
20% — Implementation plan approved
|
|
306
|
+
25% — Phase A done (build OK, dependencies ready)
|
|
307
|
+
30% — Phase B bắt đầu (UI shell coding)
|
|
308
|
+
45% — Phase B done → USER TEST CHECKPOINT #1 (UI review)
|
|
309
|
+
50% — Phase C bắt đầu (logic integration)
|
|
310
|
+
50-85% — Phase C per-feature (each feature = +5-10%)
|
|
311
|
+
85% — Phase C done, đang final verification
|
|
181
312
|
90% — Walkthrough/docs tạo xong
|
|
182
313
|
100% — Hoàn thành (auto-trigger TP2)
|
|
183
314
|
```
|
|
@@ -229,6 +360,80 @@ File patterns:
|
|
|
229
360
|
|
|
230
361
|
---
|
|
231
362
|
|
|
363
|
+
### TP1.7: User Test Checkpoint (NEW v3.5 — Gate 4 Three-Phase)
|
|
364
|
+
|
|
365
|
+
**Khi nào:** Trigger ở 2 thời điểm chính trong Gate 4:
|
|
366
|
+
|
|
367
|
+
1. **Phase B → C Transition (BẮT BUỘC cho COMPLEX):**
|
|
368
|
+
- ALL UI screens đã code xong với mock data
|
|
369
|
+
- Navigation hoạt động full flow
|
|
370
|
+
- App build và chạy OK trên emulator/device
|
|
371
|
+
|
|
372
|
+
2. **Sau mỗi feature trong Phase C (COMPLEX tasks):**
|
|
373
|
+
- Feature X đã thay mock bằng real data
|
|
374
|
+
- Feature works end-to-end trên device
|
|
375
|
+
|
|
376
|
+
**Điều kiện kích hoạt:**
|
|
377
|
+
```
|
|
378
|
+
COMPLEX + có UI component → BẮT BUỘC TP1.7
|
|
379
|
+
MODERATE + có UI component → OPTIONAL (recommend cho hardware features: camera, GPS, sensors)
|
|
380
|
+
TRIVIAL → SKIP
|
|
381
|
+
Backend-only tasks → SKIP
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
**Action:**
|
|
385
|
+
```
|
|
386
|
+
1. Report progress trước: symphony_report_progress(current_task, progress)
|
|
387
|
+
|
|
388
|
+
2. Present User Test Checkpoint:
|
|
389
|
+
|
|
390
|
+
🧪 USER TEST CHECKPOINT #{N}
|
|
391
|
+
══════════════════════════════════════
|
|
392
|
+
📱 Phase: {B|C} — {phase_name}
|
|
393
|
+
📋 Đã code xong: {summary of completed work}
|
|
394
|
+
📁 Files changed: {N} files
|
|
395
|
+
|
|
396
|
+
🔍 Hướng dẫn test:
|
|
397
|
+
1. {step 1 — cụ thể, actionable}
|
|
398
|
+
2. {step 2 — expected behavior}
|
|
399
|
+
3. {step 3 — edge case to check}
|
|
400
|
+
|
|
401
|
+
⏳ Anh test xong reply:
|
|
402
|
+
✅ OK — tiếp tục
|
|
403
|
+
⚠️ Issue: {mô tả} — tôi sẽ fix trước khi đi tiếp
|
|
404
|
+
══════════════════════════════════════
|
|
405
|
+
|
|
406
|
+
3. Gọi notify_user(BlockedOnUser=true) — DỪNG và CHỜ user response
|
|
407
|
+
|
|
408
|
+
4. User response handling:
|
|
409
|
+
→ "OK" / "✅" → Tiếp tục phase tiếp / feature tiếp
|
|
410
|
+
→ "Issue: ..." → Fix issue → re-run checkpoint
|
|
411
|
+
→ "Skip" → Ghi note concern, tiếp tục (DONE_WITH_CONCERNS later)
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
**Test Guidance Generation:**
|
|
415
|
+
```
|
|
416
|
+
AI PHẢI tạo hướng dẫn test CỤ THỂ cho từng checkpoint:
|
|
417
|
+
|
|
418
|
+
Phase B Examples (UI):
|
|
419
|
+
- "Mở app → bấm tab Health → xem Dashboard có hiển thị 4 cards không?"
|
|
420
|
+
- "Quay ngang màn hình → layout có bể không?"
|
|
421
|
+
- "Bấm nút Camera → xem preview có xuất hiện không?"
|
|
422
|
+
|
|
423
|
+
Phase C Examples (Logic):
|
|
424
|
+
- "Mở Health Dashboard → data thật có load lên không? (nếu có wifi)"
|
|
425
|
+
- "Chụp ảnh thức ăn → kết quả AI có trả về trong 5s không?"
|
|
426
|
+
- "Bấm Save → quay lại list → record mới có xuất hiện không?"
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
**Enforcement:**
|
|
430
|
+
- ❌ KHÔNG được chuyển từ Phase B → Phase C mà chưa có user confirm (COMPLEX)
|
|
431
|
+
- ❌ KHÔNG được skip checkpoint cho hardware-related features (Camera, GPS, Sensors)
|
|
432
|
+
- ✅ NÊN batch các features nhỏ lại thành 1 checkpoint (tránh quá nhiều interrupt)
|
|
433
|
+
- ✅ Checkpoint cho logic KHÔNG cần nếu feature là pure-backend/invisible
|
|
434
|
+
|
|
435
|
+
---
|
|
436
|
+
|
|
232
437
|
### TP2: Task Complete — Completion Status Protocol
|
|
233
438
|
|
|
234
439
|
**Khi nào:** AI detect ≥2/4 completion signals:
|
|
@@ -470,3 +675,5 @@ Nếu completed:
|
|
|
470
675
|
- Spec alignment tránh plan bị lệch khỏi project constraints
|
|
471
676
|
- Atomic commits giúp rollback chính xác — 1 task = 1 commit (learned from GSD)
|
|
472
677
|
- KHÔNG auto-push — chỉ commit local, push cần user confirm
|
|
678
|
+
- Three-Phase WORKS vì AI CHỦ ĐỘNG announce — không chờ user gọi (learned from FitWitness v12.3)
|
|
679
|
+
- User test sớm bắt lỗi sớm — code logic trên UI sai = double wasted (learned from FitWitness v12.3)
|
|
@@ -30,19 +30,23 @@ priority: 2
|
|
|
30
30
|
KHÔNG CÓ NGOẠI LỆ:
|
|
31
31
|
- 1 Dự án = 1 Trello Card (KHÔNG tạo card mới cho mỗi task).
|
|
32
32
|
- **Mô tả Card (Description)** BẮT BUỘC phải được update chứa cái nhìn tổng thể về dự án (Mục tiêu, Tech Stack, Tình trạng chung) để Quản lý dễ nắm bắt.
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
33
|
+
- **Trello (PM View) vs Kiro (Dev View):** Trello là màn hình dành cho Quản lý (PM, QC), còn `.kiro/specs/tasks.md` hay `task.md` là nơi để AI/Dev làm việc.
|
|
34
|
+
- [QUAN TRỌNG NHẤT VỀ ĐỘ CHI TIẾT (GRANULARITY)]: Khi được yêu cầu chia task để sync lên Trello, AI PHẢI CHIA NHỎ các phase/tính năng lớn ra thành các Sub-features / Điểm chạm nghiệp vụ (Medium-detail). CẤM làm task quá chung chung.
|
|
35
|
+
- BAD (Quá chung chung): "Hoàn thiện Launch", "Setup Thanh Toán", "Xử lý Logic".
|
|
36
|
+
- BAD (Quá chi tiết / Dev task): "Tạo file BillingManager.kt", "Sửa padding cho nút Share".
|
|
37
|
+
- GOOD (Chuẩn PM View): "Tích hợp Google Play Billing v7", "Xử lý AlarmManager nhắc nhở đo huyết áp", "Cài đặt Crashlytics", "Thiết kế Store Assets (Icon, Screenshots)".
|
|
38
|
+
- AI NÊN gom nhóm các Items vào thành nhiều Checklist rõ ràng theo từng phân khu lớn (VD: `Checklist: 1. Hoàn Thiện Logic`, `Checklist: 2. Monetization`, `Checklist: 3. Analytics & QA`).
|
|
39
|
+
- ⛔ TUYỆT ĐỐI CẤM đưa các GIAI ĐOẠN QUY TRÌNH (Process Gates) vào Checklist Items. KHÔNG CÓ CÁC MỤC NHƯ: "Tài liệu", "Thiết kế Giao diện", "Gate 1", "Phase 2".
|
|
40
|
+
- Progress qua các Gate (Gate 1, Gate 2...) CHỈ ĐƯỢC BÁO CÁO qua Comment. Quản lý không quan tâm AI đang ở Gate nào trên Checklists.
|
|
41
|
+
- BẮT BUỘC ĐỒNG BỘ TOÀN BỘ DANH SÁCH NGHIỆP VỤ TỔNG HỢP: Khi Spec/dự án đã hòm hòm, AI phân mảnh các scope thành các Checklist Items (như quy tắc Granularity ở trên).
|
|
42
|
+
- Comment ở milestone quan trọng PHẢI bao gồm các quyết định cốt lõi hoặc sự thay đổi phase (VD: "Đã thiết kế xong màn hình Home", "Bắt đầu code Logic tracking").
|
|
39
43
|
```
|
|
40
44
|
|
|
41
45
|
---
|
|
42
46
|
|
|
43
47
|
## 🔐 Auth & Config
|
|
44
48
|
|
|
45
|
-
Credentials được lưu dưới dạng **environment variables** (`TRELLO_KEY`, `TRELLO_TOKEN`) trong shell profile (`~/.zshrc` hoặc `~/.bashrc`). Cấu hình dự án (Board/List/Card) lưu
|
|
49
|
+
Credentials được lưu dưới dạng **environment variables** (`TRELLO_KEY`, `TRELLO_TOKEN`) trong shell profile (`~/.zshrc` hoặc `~/.bashrc`). Cấu hình dự án (Board/List/Card) lưu trong `"trello"` key của `.project-identity` ở root mỗi dự án (fallback: `.trello-config.json`).
|
|
46
50
|
|
|
47
51
|
### 1. Global Credentials (Environment Variables)
|
|
48
52
|
|
|
@@ -50,15 +54,21 @@ User setup lần đầu qua **interactive wizard** khi chạy `awkit init`:
|
|
|
50
54
|
- CLI tự hỏi API Key → tạo link authorize token → hỏi Token → lưu vào `~/.zshrc`.
|
|
51
55
|
- Nếu user đã setup rồi, CLI tự skip bước này.
|
|
52
56
|
|
|
53
|
-
### 2. Local Project Config (
|
|
57
|
+
### 2. Local Project Config (`"trello"` key trong `.project-identity`)
|
|
54
58
|
```json
|
|
55
59
|
{
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
60
|
+
"projectName": "MyApp",
|
|
61
|
+
"projectId": "myapp",
|
|
62
|
+
"trello": {
|
|
63
|
+
"board": "Appdexter - Code Magic",
|
|
64
|
+
"list": "Kiên",
|
|
65
|
+
"card": "Tên Card Dự Án"
|
|
66
|
+
}
|
|
59
67
|
}
|
|
60
68
|
```
|
|
61
69
|
|
|
70
|
+
> **Fallback:** Nếu `.project-identity` không có key `trello`, CLI sẽ thử đọc `.trello-config.json` (backward compat).
|
|
71
|
+
|
|
62
72
|
| Field | Mô tả |
|
|
63
73
|
|-------|--------|
|
|
64
74
|
| `board` | Tên board (TÊN, không dùng ID) |
|
|
@@ -79,7 +89,7 @@ Lần 3 (vẫn lỗi): báo user "Trello chưa được cấu hình. Vui lòng c
|
|
|
79
89
|
|
|
80
90
|
### Tự Động Hóa Qua `awkit trello` (BẮT BUỘC)
|
|
81
91
|
|
|
82
|
-
AI không cần tự inject ENV hay tìm kiếm cấu hình. Công cụ lệnh `awkit trello` v1.3.0+ sẽ TỰ ĐỘNG đọc từ env vars và `.
|
|
92
|
+
AI không cần tự inject ENV hay tìm kiếm cấu hình. Công cụ lệnh `awkit trello` v1.3.0+ sẽ TỰ ĐỘNG đọc từ env vars và `.project-identity`. MỌI thao tác Trello phải đi qua `awkit trello`.
|
|
83
93
|
---
|
|
84
94
|
|
|
85
95
|
## 📚 Command Reference
|
|
@@ -97,7 +107,7 @@ Công cụ `awkit` đã cung cấp sẵn các lệnh native quản lý Trello. P
|
|
|
97
107
|
| Báo Blocked / Lỗi | `awkit trello block "<reason>"` |
|
|
98
108
|
| Tạo checklist mới | `awkit trello checklist "<name>"` |
|
|
99
109
|
|
|
100
|
-
> 💡 Nếu gặp board/list/card "not found", cấu hình có thể sai, báo user kiểm tra lại `.
|
|
110
|
+
> 💡 Nếu gặp board/list/card "not found", cấu hình có thể sai, báo user kiểm tra lại `trello` key trong `.project-identity`.
|
|
101
111
|
|
|
102
112
|
---
|
|
103
113
|
|
|
@@ -124,21 +134,23 @@ Mỗi Card chứa:
|
|
|
124
134
|
|
|
125
135
|
### TP1: 🚀 Start Task / Start Project (Description + Checklist)
|
|
126
136
|
|
|
127
|
-
**Khi nào:** AI bắt đầu project mới hoặc
|
|
137
|
+
**Khi nào:** AI bắt đầu project mới, hoặc chuẩn bị triển khai Specs đã chốt (Gate 3/Gate 4).
|
|
138
|
+
*(Lưu ý: Không tạo Checklist Items các phase "Gate 1", "Gate 2" - lúc này chỉ dùng Comment hoặc Update Description thôi).*
|
|
128
139
|
|
|
129
140
|
**Action:**
|
|
130
141
|
```bash
|
|
131
142
|
# Update Card Description với thông tin cực kỳ rõ ràng cho Quản lý (PM) dự án
|
|
132
143
|
awkit trello desc "**Trạng thái:** Đang phát triển. **Công nghệ:** Kotlin, Jetpack Compose, Room. **Tiến độ hiện tại:** ... (Tóm tắt sơ lược)"
|
|
133
144
|
|
|
134
|
-
# 1. Tạo checklist
|
|
135
|
-
awkit trello checklist "
|
|
145
|
+
# 1. Tạo checklist dựa trên Module/Epic Nghiệp vụ thực tế
|
|
146
|
+
awkit trello checklist "Module: Xác thực Người Dùng"
|
|
136
147
|
|
|
137
|
-
# 2. Thêm item mới vào checklist
|
|
138
|
-
awkit trello item "
|
|
148
|
+
# 2. Thêm item mới vào checklist (Tuyệt đối KHÔNG ĐẶT TÊN theo Gate/Phase/Scaffolding)
|
|
149
|
+
awkit trello item "Đăng nhập bằng Google"
|
|
150
|
+
awkit trello item "Hồ sơ Người Dùng"
|
|
139
151
|
|
|
140
|
-
# 3. Comment báo
|
|
141
|
-
awkit trello comment "🤖 AI bắt đầu:
|
|
152
|
+
# 3. Comment thông báo cập nhật tiến trình hoặc trạng thái Agent
|
|
153
|
+
awkit trello comment "🤖 AI bắt đầu: Xây dựng giao diện Đăng Nhập | Symphony: #sym-XXX"
|
|
142
154
|
```
|
|
143
155
|
|
|
144
156
|
---
|
|
@@ -167,26 +179,35 @@ awkit trello block "API 500 on /auth/login. Cần Backend check."
|
|
|
167
179
|
|
|
168
180
|
### TP4: ✅ Task Done (Đánh dấu Item Complete)
|
|
169
181
|
|
|
170
|
-
**Khi nào:**
|
|
182
|
+
**Khi nào:** Toàn bộ cụm Tính năng Nghiệp vụ (Epic/Feature bao gồm nhiều sub-tasks) đã hoàn thành và sẵn sàng test.
|
|
183
|
+
*(Lưu ý: Không check item nếu chỉ mới xong 1 task code con lập trình)*
|
|
171
184
|
|
|
172
185
|
```bash
|
|
173
|
-
# 1. Đánh dấu checklist item ✅
|
|
174
|
-
awkit trello complete "
|
|
186
|
+
# 1. Đánh dấu checklist item đại diện cho tính năng ✅
|
|
187
|
+
awkit trello complete "Đăng nhập bằng Google"
|
|
175
188
|
|
|
176
189
|
# 2. Comment kết quả
|
|
177
|
-
awkit trello comment "✅ DONE:
|
|
190
|
+
awkit trello comment "✅ DONE Feature: Đăng nhập bằng Google | Commit: #$(git rev-parse --short HEAD)"
|
|
178
191
|
```
|
|
179
192
|
|
|
180
193
|
---
|
|
181
194
|
|
|
182
|
-
## 🔗 Symphony Integration
|
|
195
|
+
## 🔗 Symphony Integration (NGUYÊN TẮC: Nhiều Task Code -> 1 Trello Feature)
|
|
196
|
+
|
|
197
|
+
⚠️ **CHÚ Ý CỰC KỲ QUAN TRỌNG:** KHÔNG MAP 1:1 TỪ SYMPHONY SANG TRELLO CHECKLIST!
|
|
198
|
+
Trong Symphony có thể có 50 task nhỏ (VD: Tạo View, Viết API, Sửa CSS). Trello chỉ có 5 Checklist Items lớn (VD: Chức năng Đăng nhập, Profile, Thanh toán).
|
|
199
|
+
Do đó: **CẤM** gọi `awkit trello item` mỗi khi claim 1 task con từ Symphony. Nếu làm vậy Trello sẽ biến thành bãi rác toàn các task code lặt vặt.
|
|
200
|
+
|
|
201
|
+
**Cách Sync Đúng:**
|
|
202
|
+
- Thiết lập Checklist Items ngay từ đầu dựa trên Spec tổng.
|
|
203
|
+
- Khi code từng phân hệ con, ĐỪNG sinh ra checklist mới.
|
|
183
204
|
|
|
184
205
|
| Symphony Event | Trello Action |
|
|
185
206
|
|----------------|---------------|
|
|
186
|
-
| `symphony_claim_task` |
|
|
207
|
+
| `symphony_claim_task` | **CHỈ** Comment báo tiến độ: "Đang xử lý code: [Task]..." |
|
|
187
208
|
| `symphony_report_progress` | Comment milestone |
|
|
188
209
|
| Task BLOCKED | Label "Blocked" + Comment |
|
|
189
|
-
| `symphony_complete_task` |
|
|
210
|
+
| `symphony_complete_task` | **CHỈ** Comment: "Xong code task [Task]." *(Tùy chọn: nếu feature lớn xong 100%, mới call `complete` cho item chính)* |
|
|
190
211
|
|
|
191
212
|
Trong comment, **PHẢI** ghi Symphony Task ID: `Symphony: #sym-XXX`
|
|
192
213
|
|
|
@@ -194,9 +215,11 @@ Trong comment, **PHẢI** ghi Symphony Task ID: `Symphony: #sym-XXX`
|
|
|
194
215
|
|
|
195
216
|
## 🎯 Best Practices
|
|
196
217
|
|
|
197
|
-
1. **Checklist naming**:
|
|
198
|
-
|
|
199
|
-
|
|
218
|
+
1. **Checklist naming (Module/Epic)**: Tên checklist thể hiện mảng Tính năng/Module lớn (VD: "Module: Authentication", "Sprint: Workout Tính năng cốt lõi").
|
|
219
|
+
⛔ KHÔNG ĐẶT theo quy trình AI như "Gate 1", "Phase: Setup", "Giai đoạn Design".
|
|
220
|
+
2. **Item naming (Product Features)**: Tên item là tính năng/màn hình cụ thể (VD: "Google Sign-In", "Màn hình Thông kê Calorie", "Chức năng AI tư vấn thực đơn").
|
|
221
|
+
⛔ KHÔNG ĐẶT kiểu "Tài liệu Specs", "Code Scaffolding", "Sửa CSS" hay "Tạo file ABC".
|
|
222
|
+
3. **Minimizing noise**: Cập nhật milestone (chuyển gate, chuyển phase) qua **Comment** trên Card, KHÔNG GHI THÀNH **Checklist item** (vốn dĩ checklist item là thứ bàn giao được cho user). Cấm bulk-sync từ `tasks.md`.
|
|
200
223
|
4. **Graceful degradation**: CLI/API lỗi → log warning, KHÔNG block code flow.
|
|
201
224
|
5. **Dùng lệnh Native**: Luôn luôn gọi `awkit trello <lệnh>` thay vì `trello-cli` thủ công.
|
|
202
225
|
6. **Card KHÔNG di chuyển**: Card nằm cố định trong list team member. KHÔNG move card.
|
|
@@ -207,14 +230,14 @@ Trong comment, **PHẢI** ghi Symphony Task ID: `Symphony: #sym-XXX`
|
|
|
207
230
|
|
|
208
231
|
| Tình huống | Xử lý |
|
|
209
232
|
|-----------|--------|
|
|
210
|
-
|
|
|
233
|
+
| Trello config not found | ⛔ Bỏ qua Trello sync, log cảnh báo, tiếp tục code |
|
|
211
234
|
| **Credentials not found** | `source ~/.zshrc` → retry (max 2 lần). Vẫn lỗi → báo user chạy `awkit init` |
|
|
212
235
|
| Card not found | Chạy `sync`, retry. Nếu vẫn lỗi → báo user |
|
|
213
236
|
| Checklist chưa có | Tạo checklist mới bằng `awkit trello checklist` |
|
|
214
237
|
| Item trùng tên | Dùng `card:checklists` kiểm tra trước khi thêm |
|
|
215
238
|
| Rate limit / API error | Log warning, tiếp tục code, KHÔNG block flow. CLI tự retry 429. |
|
|
216
239
|
| Token hết hạn | Báo user chạy `awkit init` để setup lại credential mới |
|
|
217
|
-
| Dự án chưa có card trên Trello | Báo user tạo card trên board, cập nhật `.
|
|
240
|
+
| Dự án chưa có card trên Trello | Báo user tạo card trên board, cập nhật `trello` trong `.project-identity` |
|
|
218
241
|
|
|
219
242
|
---
|
|
220
243
|
|