@leejungkiin/awkit 1.2.0 → 1.3.4
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/awf.js +0 -1
- package/bin/awk.js +309 -68
- package/core/GEMINI.md +19 -5
- package/package.json +3 -4
- package/skills/CATALOG.md +4 -0
- package/skills/GEMINI.md +158 -0
- package/skills/brainstorm-agent/SKILL.md +44 -11
- package/skills/ios-engineer/SKILL.md +4 -0
- package/skills/module-spec-writer/SKILL.md +459 -0
- package/skills/module-spec-writer/module-spec-writer/SKILL.md +414 -0
- package/skills/orchestrator/SKILL.md +178 -19
- package/skills/spec-gate/SKILL.md +39 -10
- package/skills/symphony-enforcer/SKILL.md +40 -22
- package/skills/trello-sync/SKILL.md +214 -0
- package/skills/verification-gate/SKILL.md +2 -0
- package/skills/visual-design-gate/SKILL.md +177 -0
- package/templates/configs/trello-config.json +5 -0
- package/VERSION +0 -1
|
@@ -4,11 +4,11 @@ description: >-
|
|
|
4
4
|
Gate 2 — Architecture & Data Design Gate. Chốt thiết kế kỹ thuật (DB Schema,
|
|
5
5
|
API Contract, State Machine) TRƯỚC KHI cho phép code. Bắt buộc user approve
|
|
6
6
|
thiết kế để tránh "vừa làm vừa sửa database". Auto-triggered bởi orchestrator
|
|
7
|
-
khi Gate 2 chưa thỏa mãn.
|
|
7
|
+
khi Gate 2 chưa thỏa mãn. Hỗ trợ auto-detect .kiro/specs/design.md.
|
|
8
8
|
metadata:
|
|
9
9
|
stage: core
|
|
10
|
-
version: "1.
|
|
11
|
-
tags: [gate, architecture, database, design, spec-first, core]
|
|
10
|
+
version: "1.1"
|
|
11
|
+
tags: [gate, architecture, database, design, spec-first, core, kiro]
|
|
12
12
|
requires: orchestrator
|
|
13
13
|
agent: Architect
|
|
14
14
|
trigger: conditional
|
|
@@ -58,8 +58,13 @@ Skill này được kích hoạt bởi:
|
|
|
58
58
|
Trước khi chạy, PHẢI có:
|
|
59
59
|
|
|
60
60
|
```
|
|
61
|
-
REQUIRED:
|
|
62
|
-
→
|
|
61
|
+
REQUIRED (theo thứ tự ưu tiên):
|
|
62
|
+
→ CHECK 1 (Kiro): .kiro/specs/<module>/design.md
|
|
63
|
+
→ Nếu tồn tại → AUTO-APPROVE: Load làm pre-approved architecture
|
|
64
|
+
→ Skip Phase 2-7, thẳng Phase 8 (Write to NeuralMemory)
|
|
65
|
+
→ Thông báo: "🔍 Phát hiện .kiro/specs design docs.
|
|
66
|
+
Thiết kế đã được chốt trong Kiro IDE. Auto-approve → Gate 2 PASS."
|
|
67
|
+
→ CHECK 2: docs/specs/<feature>.md HOẶC BRIEF.md (output từ Gate 1)
|
|
63
68
|
→ .project-identity (projectId, techStack)
|
|
64
69
|
|
|
65
70
|
OPTIONAL:
|
|
@@ -75,6 +80,17 @@ OPTIONAL:
|
|
|
75
80
|
### Phase 1: Context Gathering (Silent)
|
|
76
81
|
|
|
77
82
|
```
|
|
83
|
+
0. CHECK KIRO SPECS FIRST (HIGHEST PRIORITY):
|
|
84
|
+
- Scan .kiro/specs/<module>/design.md
|
|
85
|
+
- Nếu tồn tại:
|
|
86
|
+
→ Load design.md làm approved architecture
|
|
87
|
+
→ Load .kiro/specs/<project>/design.md cho project-wide schema
|
|
88
|
+
→ Load .kiro/specs/<module>/requirements.md cho acceptance criteria
|
|
89
|
+
→ Lưu vào NeuralMemory: "Kiro architecture loaded: <summary>"
|
|
90
|
+
→ SKIP Phase 2-7, thẳng Phase 8 (write decision to NeuralMemory)
|
|
91
|
+
→ Gate 2 AUTO-PASS
|
|
92
|
+
- Không tồn tại → tiếp Phase 1 bình thường
|
|
93
|
+
|
|
78
94
|
1. Đọc BRIEF.md / spec document → Extract:
|
|
79
95
|
- Core entities (Users, Orders, Products...)
|
|
80
96
|
- Relationships (1-N, N-N)
|
|
@@ -188,7 +204,21 @@ checklist:
|
|
|
188
204
|
- [ ] Input validation cho mọi user input?
|
|
189
205
|
```
|
|
190
206
|
|
|
191
|
-
### Phase 6:
|
|
207
|
+
### Phase 6: Multi-Role Architecture Review (AI Simulated)
|
|
208
|
+
|
|
209
|
+
**Trước khi gửi cho user approve, AI TỰ ĐỘNG đóng 5 vai trò chuyên sâu để soát lỗi:**
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
1. DBA (Database Admin): Đã đánh index các trường queries thường xuyên? Bảng có chuẩn hóa (normalize) chưa? Có issue N+1 query không?
|
|
213
|
+
2. Backend Lead: API có reusable không? Có tính đến rate limit chưa? Transaction boundaries ở đâu?
|
|
214
|
+
3. Security Officer: Có chống SQL Injection không? Data at rest/in transit encrypt thế nào? Cấp quyền Row-level (RBAC)?
|
|
215
|
+
4. QA Automation: Việc setup test data có khó không? Mock API/DB có thuận lợi không?
|
|
216
|
+
5. SRE / DevOps: Nếu data lớn lên, hệ thống có scale nổi? Quá trình migrate db (schema update) có gây downtime không?
|
|
217
|
+
|
|
218
|
+
*Nếu có P0/P1 issues, AI phải fix bản draft ngay lập tức.*
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Phase 7: Present & Approval
|
|
192
222
|
|
|
193
223
|
```
|
|
194
224
|
Present cho user với format:
|
|
@@ -206,8 +236,7 @@ Present cho user với format:
|
|
|
206
236
|
## State Machine
|
|
207
237
|
[Phase 4 output — nếu có]
|
|
208
238
|
|
|
209
|
-
|
|
210
|
-
[Phase 5 checklist results]
|
|
239
|
+
[Phase 7 checklist results]
|
|
211
240
|
|
|
212
241
|
## Concerns & Trade-offs
|
|
213
242
|
- [Concern 1]: [Mô tả + recommendation]
|
|
@@ -219,7 +248,7 @@ Present cho user với format:
|
|
|
219
248
|
───────────────────────────────────
|
|
220
249
|
```
|
|
221
250
|
|
|
222
|
-
### Phase
|
|
251
|
+
### Phase 8: Write Design Doc
|
|
223
252
|
|
|
224
253
|
Sau khi user approve:
|
|
225
254
|
|
|
@@ -309,4 +338,4 @@ WORKS WITH: nm-memory-sync (store architectural decisions)
|
|
|
309
338
|
|
|
310
339
|
---
|
|
311
340
|
|
|
312
|
-
*spec-gate v1.
|
|
341
|
+
*spec-gate v1.1 — Architecture & Data Design Gate for AWKit (Kiro Spec Integration)*
|
|
@@ -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.4: Kiro Spec Integration, Completion Status Protocol, Search-Before-Building, Boil-the-Lake.
|
|
8
8
|
metadata:
|
|
9
9
|
stage: core
|
|
10
|
-
version: "3.
|
|
11
|
-
replaces: "
|
|
10
|
+
version: "3.4"
|
|
11
|
+
replaces: "v3.3"
|
|
12
12
|
requires: symphony-orchestrator
|
|
13
|
-
tags: [symphony, enforcement, checkpoint, task-lifecycle, core, spec-first, auto-next]
|
|
13
|
+
tags: [symphony, enforcement, checkpoint, task-lifecycle, core, spec-first, auto-next, kiro]
|
|
14
14
|
agent: Symphony Enforcer
|
|
15
15
|
allowed-tools:
|
|
16
16
|
- symphony_create_task
|
|
@@ -24,10 +24,11 @@ invocation-type: auto
|
|
|
24
24
|
priority: 1
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
# Symphony Enforcer v3.
|
|
27
|
+
# Symphony Enforcer v3.4 — Kiro Spec Integration + Completion Status Protocol
|
|
28
28
|
|
|
29
29
|
> **Purpose:** Đảm bảo AI KHÔNG BAO GIỜ quên cập nhật Symphony.
|
|
30
|
-
> **Key Changes v3.
|
|
30
|
+
> **Key Changes v3.4:**
|
|
31
|
+
> - **Kiro Spec Integration**: Auto-detect `.kiro/specs/` → load specs + import tasks
|
|
31
32
|
> - **Completion Status Protocol**: 4-status (DONE/DONE_WITH_CONCERNS/BLOCKED/NEEDS_CONTEXT)
|
|
32
33
|
> - **Design Compliance (TP1.5)**: Đối chiếu schema changes vs approved design doc
|
|
33
34
|
> - **Pre-Plan Gate**: Đọc spec trước khi plan, hỏi user về constraints
|
|
@@ -47,7 +48,7 @@ KHÔNG CÓ NGOẠI LỆ:
|
|
|
47
48
|
- AI tự detect completion và auto-complete task
|
|
48
49
|
- Task done → PHẢI atomic git commit trước khi suggest next
|
|
49
50
|
- Kết thúc task PHẢI kèm next suggestion
|
|
50
|
-
- BỎ QUA BẤT KỲ STEP NÀO = VI PHẠM
|
|
51
|
+
- BỎ QUA BẤT BẤT KỲ STEP NÀO = VI PHẠM
|
|
51
52
|
```
|
|
52
53
|
|
|
53
54
|
---
|
|
@@ -74,30 +75,47 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
|
|
|
74
75
|
→ Output: "🧠 Step 2/5: Brain ✅ — switched to {projectId}"
|
|
75
76
|
```
|
|
76
77
|
|
|
77
|
-
### Step 3: Spec Alignment — Đọc Project Spec (
|
|
78
|
+
### Step 3: Spec Alignment — Đọc Project Spec (v3.4 + Kiro)
|
|
78
79
|
|
|
79
80
|
```
|
|
80
|
-
→
|
|
81
|
-
→ CÓ
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
81
|
+
→ CHECK 1 (Kiro — HIGHEST PRIORITY): .kiro/specs/ tồn tại?
|
|
82
|
+
→ CÓ → Load specs từ .kiro/specs/:
|
|
83
|
+
- .kiro/specs/<project>/requirements.md → project spec
|
|
84
|
+
- .kiro/specs/<module>/requirements.md → module specs
|
|
85
|
+
- .kiro/specs/<module>/design.md → architecture
|
|
86
|
+
- .kiro/specs/<module>/tasks.md → task breakdown (cho Step 4)
|
|
87
|
+
→ Extract constraints liên quan đến task hiện tại
|
|
88
|
+
→ Output: "📐 Step 3/5: Kiro Specs Loaded ✅ — {N} modules, {M} design docs"
|
|
89
|
+
|
|
90
|
+
→ CHECK 2 (fallback): docs/specs/PROJECT.md tồn tại?
|
|
91
|
+
→ CÓ → Đọc silent: PROJECT.md + TECH-SPEC.md + REQUIREMENTS.md
|
|
92
|
+
→ Extract constraints liên quan đến task hiện tại
|
|
93
|
+
→ NẾU PLANNING mode:
|
|
94
|
+
- Hỏi user 1-3 câu về constraints/UX cụ thể của feature
|
|
95
|
+
- Ví dụ: "Feature này cần offline support không?"
|
|
96
|
+
→ Output: "📐 Step 3/5: Spec Aligned ✅"
|
|
97
|
+
→ KHÔNG → Skip (project chưa /init) → "📐 Step 3/5: No spec — skipped"
|
|
89
98
|
```
|
|
90
99
|
|
|
91
|
-
> **Quan trọng:** Nếu TECH-SPEC.md có "Constraints & Non-Negotiables",
|
|
100
|
+
> **Quan trọng:** Nếu .kiro/specs hoặc TECH-SPEC.md có "Constraints & Non-Negotiables",
|
|
92
101
|
> AI PHẢI tuân thủ chúng trong implementation_plan.md.
|
|
93
102
|
|
|
94
103
|
### Step 4: Symphony Task — Tạo hoặc nhận task
|
|
95
104
|
|
|
96
105
|
```
|
|
97
|
-
→
|
|
98
|
-
→ CÓ
|
|
99
|
-
|
|
100
|
-
|
|
106
|
+
→ CHECK 1 (Kiro tasks): .kiro/specs/<module>/tasks.md tồn tại?
|
|
107
|
+
→ CÓ + chưa import → Parse task items từ tasks.md:
|
|
108
|
+
- Group theo module name
|
|
109
|
+
- Đánh tag kèm module name
|
|
110
|
+
→ ⛔ 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/5: Kiro Tasks Imported ✅ — {N} tasks created"
|
|
112
|
+
→ Claim task phù hợp nhất với user request
|
|
113
|
+
→ CÓ + đã import → symphony_available_tasks → claim task phù hợp
|
|
114
|
+
|
|
115
|
+
→ CHECK 2 (fallback): symphony_available_tasks(filter="my") → check active tasks
|
|
116
|
+
→ CÓ task in_progress phù hợp → dùng tiếp
|
|
117
|
+
→ CÓ task ready phù hợp → symphony_claim_task
|
|
118
|
+
→ KHÔNG CÓ → symphony_create_task(title) → symphony_claim_task(new_id)
|
|
101
119
|
→ Lưu task_id cho TP1-TP4
|
|
102
120
|
→ Output: "🎯 Step 4/5: Task ✅ — #sym-XYZ claimed"
|
|
103
121
|
```
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trello-sync
|
|
3
|
+
description: |
|
|
4
|
+
Hệ thống đồng bộ tiến độ dự án lên Trello sử dụng Trello CLI (v1.5+) + REST API.
|
|
5
|
+
Mỗi dự án = 1 Trello Card. Tiến độ được theo dõi qua Checklists và Comments.
|
|
6
|
+
AI tự động thêm/đánh dấu checklist items khi hoàn thành task.
|
|
7
|
+
metadata:
|
|
8
|
+
stage: core
|
|
9
|
+
version: "3.0"
|
|
10
|
+
tags: [trello, sync, project-management, tracking, agile]
|
|
11
|
+
agent: Trello Sync Agent
|
|
12
|
+
allowed-tools:
|
|
13
|
+
- run_command
|
|
14
|
+
trigger: always
|
|
15
|
+
invocation-type: auto
|
|
16
|
+
priority: 2
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Trello Sync v3.0 — Project-Per-Card Protocol
|
|
20
|
+
|
|
21
|
+
> **Purpose:** Tự động đồng bộ tiến độ dự án lên Trello card tương ứng, giúp team (PM, QC, Dev) theo dõi realtime.
|
|
22
|
+
> **Model:** 1 Card = 1 Dự án. Checklist Items = tasks/features. Comments = milestones.
|
|
23
|
+
> **Tools:** `trello-cli v1.5` (CLI) + Trello REST API (curl) cho checklist items.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## ⚠️ Core Rules
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
KHÔNG CÓ NGOẠI LỆ:
|
|
31
|
+
- 1 Dự án = 1 Trello Card (KHÔNG tạo card mới cho mỗi task).
|
|
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
|
+
- Tiến độ = Checklist Items trên card dự án. CHỈ ghi lại các task ở mức High-level / Module / Tính năng lớn.
|
|
34
|
+
- ⛔ KHÔNG BAO GIỜ đồng bộ từng sub-task chi tiết (từ file `.kiro/specs/tasks.md` hay Symphony) thành checklist item trên Trello, làm vậy sẽ gây rác board (spam).
|
|
35
|
+
- Card KHÔNG di chuyển giữa lists (list = team member, cố định).
|
|
36
|
+
- Comment ở milestone quan trọng PHẢI bao gồm các quyết định kỹ thuật cốt lõi hoặc nguyên nhân gốc rễ, không chỉ ghi "Done" chung chung.
|
|
37
|
+
- Comment chỉ ở milestone quan trọng, KHÔNG spam.
|
|
38
|
+
- KHÔNG ĐƯỢC sinh script file python/bash (VD: `trello_sync_kiro.py`) để đồng bộ hàng loạt (bulk sync) từ file markdown lên Trello.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 🔐 Auth & Config
|
|
44
|
+
|
|
45
|
+
Bảo mật: API Key và Token được lưu tại Global, cấu hình dự án (Board/List/Card) lưu tại Local.
|
|
46
|
+
|
|
47
|
+
### 1. Global Credentials (đặt tại `~/.gemini/antigravity/credentials/trello.json`)
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"api_key": "YOUR_TRELLO_API_KEY",
|
|
51
|
+
"api_token": "YOUR_TRELLO_API_TOKEN"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 2. Local Project Config (đặt file `.trello-config.json` tại root mỗi dự án)
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"board": "Appdexter - Code Magic",
|
|
59
|
+
"list": "Kiên",
|
|
60
|
+
"card": "Tên Card Dự Án"
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
| Field | Mô tả |
|
|
65
|
+
|-------|--------|
|
|
66
|
+
| `board` | Tên board (TÊN, không dùng ID) |
|
|
67
|
+
| `list` | Tên list chứa card (= team member đang phụ trách) |
|
|
68
|
+
| `card` | Tên card dự án (phải khớp chính xác trên Trello) |
|
|
69
|
+
|
|
70
|
+
### Tự Động Hóa Qua `awkit trello` (BẮT BUỘC)
|
|
71
|
+
|
|
72
|
+
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ừ Global Config và Local Config để thực thi nhanh chóng. MỌI thao tác Trello phải đi qua `awkit trello`.
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 📚 Command Reference
|
|
76
|
+
|
|
77
|
+
### AWKit Trello CLI (Native, Zero Config Needed in Bash)
|
|
78
|
+
|
|
79
|
+
Công cụ `awkit` đã cung cấp sẵn các lệnh native quản lý Trello. Phải ƯU TIÊN SỬ DỤNG.
|
|
80
|
+
|
|
81
|
+
| Action | Command |
|
|
82
|
+
|--------|---------|
|
|
83
|
+
| Cập nhật mô tả (desc) | `awkit trello desc "<text>"` |
|
|
84
|
+
| Comment milestone | `awkit trello comment "<text>"` |
|
|
85
|
+
| Thêm checklist item | `awkit trello item "<name>"` |
|
|
86
|
+
| Check ✅ hoàn thành | `awkit trello complete "<name>"` |
|
|
87
|
+
| Báo Blocked / Lỗi | `awkit trello block "<reason>"` |
|
|
88
|
+
| Tạo checklist mới | `awkit trello checklist "<name>"` |
|
|
89
|
+
|
|
90
|
+
> 💡 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-config.json`.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 🔄 Lifecycle & Trigger Points
|
|
95
|
+
|
|
96
|
+
### Board Structure (Context)
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
Board: Appdexter - Code Magic
|
|
100
|
+
├── App cần làm ☘️ ← Backlog (ý tưởng)
|
|
101
|
+
├── Kiên ← Cards = projects assigned to Kiên
|
|
102
|
+
├── Huy lớn ← Cards = projects assigned to Huy lớn
|
|
103
|
+
├── Doing ← Cards actively being worked on
|
|
104
|
+
├── Done ← Completed cards
|
|
105
|
+
└── ...
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Mỗi Card chứa:
|
|
109
|
+
- **Description**: Mô tả dự án, link repo
|
|
110
|
+
- **Checklists**: Các phase (UI, Code Logic, Infrastructure...)
|
|
111
|
+
- **Checklist Items**: Tasks cụ thể trong phase đó
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
### TP1: 🚀 Start Task / Start Project (Description + Checklist)
|
|
116
|
+
|
|
117
|
+
**Khi nào:** AI bắt đầu project mới hoặc làm task lớn mới (claim Symphony task).
|
|
118
|
+
|
|
119
|
+
**Action:**
|
|
120
|
+
```bash
|
|
121
|
+
# Update Card Description với thông tin cực kỳ rõ ràng cho Quản lý (PM) dự án
|
|
122
|
+
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)"
|
|
123
|
+
|
|
124
|
+
# 1. Tạo checklist (nếu cần, ví dụ Sprint)
|
|
125
|
+
awkit trello checklist "Sprint 2026-03"
|
|
126
|
+
|
|
127
|
+
# 2. Thêm item mới vào checklist
|
|
128
|
+
awkit trello item "Feature: Login Flow"
|
|
129
|
+
|
|
130
|
+
# 3. Comment báo bắt đầu
|
|
131
|
+
awkit trello comment "🤖 AI bắt đầu: Login Flow | Symphony: #sym-XXX"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
### TP2: 📈 Report Progress (Comment Milestone)
|
|
137
|
+
|
|
138
|
+
**Khi nào:** AI đạt milestone quan trọng (40%, 60%, 80%) hoặc hoàn thành cụm tính năng.
|
|
139
|
+
|
|
140
|
+
**Action:** Cung cấp thông tin CHUYÊN MÔN nhưng RÕ RÀNG cho PM:
|
|
141
|
+
```bash
|
|
142
|
+
awkit trello comment "⏳ Progress: Login Flow (60%) — UI hoàn thiện. QUYẾT ĐỊNH KỸ THUẬT: Đã chọn SQLite/Room thay vì Firebase để đảm bảo Offline-first theo spec."
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
### TP3: 🛑 Blocked
|
|
148
|
+
|
|
149
|
+
**Khi nào:** Task bị chặn, cần human input.
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# Label + Comment
|
|
153
|
+
awkit trello block "API 500 on /auth/login. Cần Backend check."
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
### TP4: ✅ Task Done (Đánh dấu Item Complete)
|
|
159
|
+
|
|
160
|
+
**Khi nào:** Task hoàn thành, verification pass.
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
# 1. Đánh dấu checklist item ✅
|
|
164
|
+
awkit trello complete "Feature: Login Flow"
|
|
165
|
+
|
|
166
|
+
# 2. Comment kết quả
|
|
167
|
+
awkit trello comment "✅ DONE: Login Flow | Commit: #$(git rev-parse --short HEAD)"
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 🔗 Symphony Integration
|
|
173
|
+
|
|
174
|
+
| Symphony Event | Trello Action |
|
|
175
|
+
|----------------|---------------|
|
|
176
|
+
| `symphony_claim_task` | Thêm checklist item (incomplete) + Comment start |
|
|
177
|
+
| `symphony_report_progress` | Comment milestone |
|
|
178
|
+
| Task BLOCKED | Label "Blocked" + Comment |
|
|
179
|
+
| `symphony_complete_task` | Mark item ✅ complete + Comment result |
|
|
180
|
+
|
|
181
|
+
Trong comment, **PHẢI** ghi Symphony Task ID: `Symphony: #sym-XXX`
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## 🎯 Best Practices
|
|
186
|
+
|
|
187
|
+
1. **Checklist naming**: Theo phase/module lớn (VD: "Module: fw-01-foundation", "Sprint 2026-03").
|
|
188
|
+
2. **Item naming**: Mô tả tính năng lớn (VD: "Login Flow", "Firebase Integration"). KHÔNG ĐƯA CÁC ĐẦU MỤC CODE LEVEL VÀO ĐÂY (VD: "Thêm nút bấm", "Sửa CSS", v.v.).
|
|
189
|
+
3. **Minimizing noise**: Comment chỉ ở milestones, KHÔNG spam mỗi dòng code. Cấm bulk-sync checklist item từ `tasks.md`.
|
|
190
|
+
4. **Graceful degradation**: CLI/API lỗi → log warning, KHÔNG block code flow.
|
|
191
|
+
5. **Dùng lệnh Native**: Luôn luôn gọi `awkit trello <lệnh>` thay vì `trello-cli` thủ công.
|
|
192
|
+
6. **Card KHÔNG di chuyển**: Card nằm cố định trong list team member. KHÔNG move card.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Edge Cases
|
|
197
|
+
|
|
198
|
+
| Tình huống | Xử lý |
|
|
199
|
+
|-----------|--------|
|
|
200
|
+
| `.trello-config.json` không tồn tại | ⛔ Bỏ qua Trello sync, log cảnh báo, tiếp tục code |
|
|
201
|
+
| Card not found | Chạy `sync`, retry. Nếu vẫn lỗi → báo user |
|
|
202
|
+
| Checklist chưa có | Tạo checklist mới bằng `card:checklist` |
|
|
203
|
+
| Item trùng tên | Dùng `card:checklists` kiểm tra trước khi thêm |
|
|
204
|
+
| Rate limit / API error | Log warning, tiếp tục code, KHÔNG block flow |
|
|
205
|
+
| Token hết hạn | Báo user refresh trong `.trello-config.json` |
|
|
206
|
+
| Dự án chưa có card trên Trello | Báo user tạo card trên board, cập nhật config |
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Learnings
|
|
211
|
+
|
|
212
|
+
- Board "Appdexter - Code Magic": Lists = team members, Cards = projects
|
|
213
|
+
- Tool native CLI `awkit trello` cho phép update thông tin dự án thẳng từ CLI mà không cần inject variables lằng nhằng.
|
|
214
|
+
- KHÔNG sinh script file mồ côi `trello_sync_kiro.py` — phải chạy trực tiếp qua `awkit trello`
|
|
@@ -138,6 +138,8 @@ Trước khi claim DONE, kiểm tra **mỗi item** dưới đây:
|
|
|
138
138
|
☐ Input validation: User input được validate trước khi process?
|
|
139
139
|
☐ Concurrency: Thread-safe? Race conditions handled?
|
|
140
140
|
☐ Backwards compatibility: Breaking changes documented?
|
|
141
|
+
☐ Localization (I18N): Text UI mới đã được thêm vào Localizable.strings (EN & VI) chưa?
|
|
142
|
+
→ Việc bọc `Localized()` trong code là chưa đủ. Phải THỰC SỰ mở file .strings (hoặc chạy update_strings.py) để bổ sung key/value trước khi báo cáo DONE.
|
|
141
143
|
```
|
|
142
144
|
|
|
143
145
|
**Nếu thiếu bất kỳ item nào → report DONE_WITH_CONCERNS, không DONE.**
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: visual-design-gate
|
|
3
|
+
description: >-
|
|
4
|
+
Gate 2.5 — Visual Design & UI Sync Gate. Thống nhất cách hiểu về UI/UX giữa
|
|
5
|
+
người dùng và AI thông qua phác thảo bằng Pencil MCP Server, hoặc thông qua
|
|
6
|
+
hình ảnh screenshot/design có sẵn. Đảm bảo UI/UX đã được chốt trước khi chia
|
|
7
|
+
Symphony tasks và viết code.
|
|
8
|
+
metadata:
|
|
9
|
+
stage: core
|
|
10
|
+
version: "1.0"
|
|
11
|
+
tags: [gate, ui, ux, design, pencil, visual, sync, core]
|
|
12
|
+
requires: orchestrator
|
|
13
|
+
agent: UI/UX Designer
|
|
14
|
+
trigger: conditional
|
|
15
|
+
invocation-type: auto
|
|
16
|
+
priority: 2.5
|
|
17
|
+
activation_keywords:
|
|
18
|
+
- "thiết kế giao diện"
|
|
19
|
+
- "vẽ UI"
|
|
20
|
+
- "phác thảo màn hình"
|
|
21
|
+
- "design ui"
|
|
22
|
+
- "pencil"
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Visual Design Gate v1.0 (Gate 2.5) — UI/UX Sync Gate
|
|
26
|
+
|
|
27
|
+
> **Purpose:** Giúp AI và người dùng đồng bộ cách hiểu về ý tưởng giao diện (UI/UX)
|
|
28
|
+
> TRƯỚC KHI chia tasks và bắt tay vào code. Sử dụng công cụ Pencil để vẽ preview,
|
|
29
|
+
> hoặc sử dụng mockups/screenshots do người dùng cung cấp sẵn để làm căn cứ.
|
|
30
|
+
>
|
|
31
|
+
> **Problem it solves:** "Code xong giao diện không ra gì, hoặc chệch hướng so với ý tưởng UI của user"
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## ⚠️ SCOPE CLARITY
|
|
36
|
+
|
|
37
|
+
| Skill này LÀM | Skill này KHÔNG làm |
|
|
38
|
+
|---------------|---------------------|
|
|
39
|
+
| Dùng `pencil` MCP server để phác thảo file `.pen` | Viết code React/Swift/Compose UI |
|
|
40
|
+
| Đọc hiểu ảnh đính kèm từ `docs/design` hoặc `docs/screenshot` | Nhận diện DB Schema (việc của spec-gate) |
|
|
41
|
+
| Tương tác với user để chốt màu sắc, bố cục, fonts | Quản lý logic back-end |
|
|
42
|
+
| Giới thiệu user về Pencil tool nếu project cần thiết kế mới | Phân chia task Symphony |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 🚀 ACTIVATION
|
|
47
|
+
|
|
48
|
+
Skill này được kích hoạt bởi:
|
|
49
|
+
1. **Orchestrator auto-trigger:** Khi Gate 2.5 check FAIL (feature có giao diện nhưng thiếu preview chốt UI, hoặc chưa có design image).
|
|
50
|
+
2. **Explicit command:** `/design-ui` hoặc `/visual-sync`
|
|
51
|
+
3. **Keyword trigger:** "thiết kế giao diện", "design ui bằng pencil", "phác thảo ui"
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 📋 INPUT REQUIREMENTS
|
|
56
|
+
|
|
57
|
+
Trước khi chạy, PHẢI có:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
REQUIRED:
|
|
61
|
+
→ docs/specs/<feature>.md (output Gate 1) HOẶC thiết kế DB đã chốt tại Gate 2
|
|
62
|
+
|
|
63
|
+
OPTIONAL BUT HIGHLY RECOMMENDED:
|
|
64
|
+
→ docs/design/ hoặc docs/screenshot/ chứa ảnh tham khảo đã có.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 🔄 PROCESS
|
|
70
|
+
|
|
71
|
+
### Phase 1: Context Gathering (Silent)
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
1. Đọc spec document của feature để xác định các elements UI cần thiết
|
|
75
|
+
(Danh sách nút, forms, data grids, navigations).
|
|
76
|
+
2. Quyét thư mục `docs/design/` và `docs/screenshot/` xem đã có ảnh tham khảo chưa.
|
|
77
|
+
3. Nếu CÓ ẢNH: Đọc và report phân tích UI của ảnh, và chuyển luôn sang Phase 3 (Approval).
|
|
78
|
+
4. Nếu KHÔNG CÓ ẢNH: Chuyển sang Phase 2 (Pencil Draft).
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Phase 2: Pencil Blueprint Drafting
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Khi dự án được chốt là CHƯA có giao diện mẫu, AI phải:
|
|
85
|
+
1. Thông báo cho User: "Để chúng ta hiểu đúng ý nhau về giao diện, tôi sẽ phác thảo một bản vẽ UI bằng công cụ Pencil. Quá trình này sẽ mất một chút thời gian xử lý."
|
|
86
|
+
2. Chạy tool `open_document` để tạo file `docs/design/<feature>.pen` (nếu chưa có).
|
|
87
|
+
3. Sử dụng tool `batch_design`:
|
|
88
|
+
- Dựng Layout theo chuẩn component (Container, Navbar, Sidebar, Content).
|
|
89
|
+
- Thêm Text, Buttons, Forms theo dữ liệu đã chốt từ spec-gate (ví dụ: spec ghi có login form email/pass, thì màn hình phải có 2 input + submit button).
|
|
90
|
+
- Áp color/theme phù hợp với identity của project.
|
|
91
|
+
4. Render screenshot của Pencil (sử dụng `get_screenshot` node id của screen).
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Phase 3: Present & Approval
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
Present cho user với format sau:
|
|
98
|
+
|
|
99
|
+
───────────────────────────────────
|
|
100
|
+
🎨 UI/UX DESIGN PREVIEW: <Feature Name>
|
|
101
|
+
───────────────────────────────────
|
|
102
|
+
|
|
103
|
+
## Design Source
|
|
104
|
+
[Trạng thái: Đã đọc từ ảnh `docs/design/mockup.png` HOẶC Bản nháp Pencil `docs/design/<feature>.pen`]
|
|
105
|
+
|
|
106
|
+
## Core UI Components
|
|
107
|
+
- [Component 1]: [Mô tả vai trò, ví dụ: Authentication Form chứa inputs login]
|
|
108
|
+
- [Component 2]: [Mô tả trạng thái state...]
|
|
109
|
+
- [Component 3]: ...
|
|
110
|
+
|
|
111
|
+
## Hình ảnh Preview
|
|
112
|
+
[Đính kèm Screenshot preview nếu dùng Pencil]
|
|
113
|
+
|
|
114
|
+
───────────────────────────────────
|
|
115
|
+
⏳ Anh xem giao diện tổ chức thế này đã đúng ý đồ anh muốn chưa?
|
|
116
|
+
- Nếu cần tôi tinh chỉnh bố cục, màu sắc bằng Pencil thì anh cứ báo.
|
|
117
|
+
- Nếu anh đã chốt, phản hồi "OK" để tôi chia task code nhé!
|
|
118
|
+
───────────────────────────────────
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Phase 4: Write UI Decision Doc
|
|
122
|
+
|
|
123
|
+
Sau khi user approve:
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
1. (Nếu xài thư mục chung) Ghi vào file README của thư mục `docs/design/` các quyết định chính về giao diện.
|
|
127
|
+
2. Lưu vào NeuralMemory:
|
|
128
|
+
nmem_remember(
|
|
129
|
+
content="Visual Design for <feature> approved. Focus points: <summary_ui_points>",
|
|
130
|
+
type="decision",
|
|
131
|
+
tags=["ui", "design", "<projectId>", "<feature>"]
|
|
132
|
+
)
|
|
133
|
+
3. Proceed → Orchestrator re-checks Gate 2.5 → PASS → Gate 3 (Symphony tasks).
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 🔙 DESIGN REVISION PROTOCOL
|
|
139
|
+
|
|
140
|
+
Khi User yêu cầu sửa bản Pencil phác thảo:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
1. Xác định chính xác node cần sửa.
|
|
144
|
+
2. Dùng batch_get từ Pencil MCP để lấy IDs các khung components liên quan.
|
|
145
|
+
3. Chạy Update (U) hoặc Replace (R) logic trên Pencil batch_design tool.
|
|
146
|
+
4. Cập nhật screenshot UI mới gửi lại User.
|
|
147
|
+
5. Tiếp tục vòng lặp cho đến khi "Approved".
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 🗣️ Communication Style
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
❌ "Please provide design mockups or approve the design generation process."
|
|
156
|
+
✅ "Để mình đồng điệu cách triển khai, tôi nghĩ nên phác thảo qua cái giao diện một chút.
|
|
157
|
+
Anh có ảnh màn hình / mockup (Figma/PNG) sẵn trong thư mục nào không, hay để tôi dùng công cụ Pencil vẽ nhanh 1 bản phác thảo anh xem qua?"
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 🚫 Anti-Patterns
|
|
163
|
+
|
|
164
|
+
```yaml
|
|
165
|
+
never_do:
|
|
166
|
+
- Ép user xài Pencil nếu user đã copy đầy đủ file design (ảnh, video) vào /docs/.
|
|
167
|
+
- Code Front-end UI (HTML/CSS/Swift) khi người dùng chưa đồng ý phương án bố cục.
|
|
168
|
+
- Vẽ chi tiết quá mất thời gian cho những task internal/CLI thuần túy (Orchestrator phải skip Gate này cho Backend).
|
|
169
|
+
|
|
170
|
+
always_do:
|
|
171
|
+
- Báo hiệu quá trình thao tác với Pencil vì nó sẽ mất thời gian load server, render node, chụp screenshot.
|
|
172
|
+
- Tái sử dụng các rules về spacing/màu sắc nếu trong file .pen đã có sẵn Design System Variables.
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
*visual-design-gate v1.0 — Visual Design & UI Sync Gate for AWKit*
|
package/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.1.6
|