@leejungkiin/awkit 1.3.8 → 1.4.2

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.
Files changed (135) hide show
  1. package/bin/awk.js +630 -52
  2. package/bin/claude-generators.js +122 -0
  3. package/core/AGENTS.md +54 -0
  4. package/core/CLAUDE.md +155 -0
  5. package/core/GEMINI.md +44 -9
  6. package/core/GEMINI.md.bak +126 -199
  7. package/package.json +1 -1
  8. package/skills/ai-sprite-maker/SKILL.md +81 -0
  9. package/skills/ai-sprite-maker/scripts/animate_sprite.py +102 -0
  10. package/skills/ai-sprite-maker/scripts/process_sprites.py +140 -0
  11. package/skills/awf-session-restore/SKILL.md +12 -2
  12. package/skills/brainstorm-agent/SKILL.md +11 -8
  13. package/skills/code-review/SKILL.md +21 -33
  14. package/skills/gitnexus/gitnexus-cli/SKILL.md +82 -0
  15. package/skills/gitnexus/gitnexus-debugging/SKILL.md +89 -0
  16. package/skills/gitnexus/gitnexus-exploring/SKILL.md +78 -0
  17. package/skills/gitnexus/gitnexus-guide/SKILL.md +64 -0
  18. package/skills/gitnexus/gitnexus-impact-analysis/SKILL.md +97 -0
  19. package/skills/gitnexus/gitnexus-refactoring/SKILL.md +121 -0
  20. package/skills/lucylab-tts/SKILL.md +64 -0
  21. package/skills/lucylab-tts/resources/voices_library.json +908 -0
  22. package/skills/lucylab-tts/scripts/.env +1 -0
  23. package/skills/lucylab-tts/scripts/lucylab_tts.py +506 -0
  24. package/skills/nm-memory-sync/SKILL.md +14 -1
  25. package/skills/orchestrator/SKILL.md +5 -38
  26. package/skills/ship-to-code/SKILL.md +115 -0
  27. package/skills/short-maker/SKILL.md +150 -0
  28. package/skills/short-maker/_backup/storyboard.html +106 -0
  29. package/skills/short-maker/_backup/video_mixer.py +296 -0
  30. package/skills/short-maker/outputs/fitbite-promo/background.jpg +0 -0
  31. package/skills/short-maker/outputs/fitbite-promo/final/promo-final.mp4 +0 -0
  32. package/skills/short-maker/outputs/fitbite-promo/script.md +19 -0
  33. package/skills/short-maker/outputs/fitbite-promo/segments/scene-01.mp4 +0 -0
  34. package/skills/short-maker/outputs/fitbite-promo/segments/scene-02.mp4 +0 -0
  35. package/skills/short-maker/outputs/fitbite-promo/segments/scene-03.mp4 +0 -0
  36. package/skills/short-maker/outputs/fitbite-promo/segments/scene-04.mp4 +0 -0
  37. package/skills/short-maker/outputs/fitbite-promo/storyboard/scene-01.png +0 -0
  38. package/skills/short-maker/outputs/fitbite-promo/storyboard/scene-02.png +0 -0
  39. package/skills/short-maker/outputs/fitbite-promo/storyboard/scene-03.png +0 -0
  40. package/skills/short-maker/outputs/fitbite-promo/storyboard/scene-04.png +0 -0
  41. package/skills/short-maker/outputs/fitbite-promo/storyboard.html +133 -0
  42. package/skills/short-maker/outputs/fitbite-promo/storyboard.json +38 -0
  43. package/skills/short-maker/outputs/fitbite-promo/temp/merged_chroma.mp4 +0 -0
  44. package/skills/short-maker/outputs/fitbite-promo/temp/merged_crossfaded.mp4 +0 -0
  45. package/skills/short-maker/outputs/fitbite-promo/temp/ready_00.mp4 +0 -0
  46. package/skills/short-maker/outputs/fitbite-promo/temp/ready_01.mp4 +0 -0
  47. package/skills/short-maker/outputs/fitbite-promo/temp/ready_02.mp4 +0 -0
  48. package/skills/short-maker/outputs/fitbite-promo/temp/ready_03.mp4 +0 -0
  49. package/skills/short-maker/outputs/fitbite-promo/tts/manifest.json +31 -0
  50. package/skills/short-maker/outputs/fitbite-promo/tts/scene-01.wav +0 -0
  51. package/skills/short-maker/outputs/fitbite-promo/tts/scene-02.wav +0 -0
  52. package/skills/short-maker/outputs/fitbite-promo/tts/scene-03.wav +0 -0
  53. package/skills/short-maker/outputs/fitbite-promo/tts/scene-04.wav +0 -0
  54. package/skills/short-maker/outputs/fitbite-promo/tts_script.txt +11 -0
  55. package/skills/short-maker/scripts/google-flow-cli/.project-identity +41 -0
  56. package/skills/short-maker/scripts/google-flow-cli/.trae/rules/project_rules.md +52 -0
  57. package/skills/short-maker/scripts/google-flow-cli/CODEBASE.md +67 -0
  58. package/skills/short-maker/scripts/google-flow-cli/GoogleFlowCli.code-workspace +29 -0
  59. package/skills/short-maker/scripts/google-flow-cli/README.md +168 -0
  60. package/skills/short-maker/scripts/google-flow-cli/docs/specs/PROJECT.md +12 -0
  61. package/skills/short-maker/scripts/google-flow-cli/docs/specs/REQUIREMENTS.md +22 -0
  62. package/skills/short-maker/scripts/google-flow-cli/docs/specs/ROADMAP.md +16 -0
  63. package/skills/short-maker/scripts/google-flow-cli/docs/specs/TECH-SPEC.md +13 -0
  64. package/skills/short-maker/scripts/google-flow-cli/gflow/__init__.py +3 -0
  65. package/skills/short-maker/scripts/google-flow-cli/gflow/api/__init__.py +19 -0
  66. package/skills/short-maker/scripts/google-flow-cli/gflow/api/client.py +1921 -0
  67. package/skills/short-maker/scripts/google-flow-cli/gflow/api/models.py +64 -0
  68. package/skills/short-maker/scripts/google-flow-cli/gflow/api/rpc_ids.py +98 -0
  69. package/skills/short-maker/scripts/google-flow-cli/gflow/auth/__init__.py +15 -0
  70. package/skills/short-maker/scripts/google-flow-cli/gflow/auth/browser_auth.py +692 -0
  71. package/skills/short-maker/scripts/google-flow-cli/gflow/auth/humanizer.py +417 -0
  72. package/skills/short-maker/scripts/google-flow-cli/gflow/auth/proxy_ext.py +120 -0
  73. package/skills/short-maker/scripts/google-flow-cli/gflow/auth/recaptcha.py +482 -0
  74. package/skills/short-maker/scripts/google-flow-cli/gflow/batchexecute/__init__.py +5 -0
  75. package/skills/short-maker/scripts/google-flow-cli/gflow/batchexecute/client.py +414 -0
  76. package/skills/short-maker/scripts/google-flow-cli/gflow/cli/__init__.py +1 -0
  77. package/skills/short-maker/scripts/google-flow-cli/gflow/cli/main.py +1075 -0
  78. package/skills/short-maker/scripts/google-flow-cli/pyproject.toml +36 -0
  79. package/skills/short-maker/scripts/google-flow-cli/script.txt +22 -0
  80. package/skills/short-maker/scripts/google-flow-cli/tests/__init__.py +0 -0
  81. package/skills/short-maker/scripts/google-flow-cli/tests/test_batchexecute.py +113 -0
  82. package/skills/short-maker/scripts/google-flow-cli/tests/test_client.py +190 -0
  83. package/skills/short-maker/templates/aida_script.md +40 -0
  84. package/skills/short-maker/templates/mimic_analyzer.md +29 -0
  85. package/skills/single-flow-task-execution/SKILL.md +412 -0
  86. package/skills/single-flow-task-execution/code-quality-reviewer-prompt.md +20 -0
  87. package/skills/single-flow-task-execution/implementer-prompt.md +78 -0
  88. package/skills/single-flow-task-execution/spec-reviewer-prompt.md +61 -0
  89. package/skills/skill-creator/SKILL.md +44 -0
  90. package/skills/spm-build-analysis/SKILL.md +92 -0
  91. package/skills/spm-build-analysis/references/build-optimization-sources.md +155 -0
  92. package/skills/spm-build-analysis/references/recommendation-format.md +85 -0
  93. package/skills/spm-build-analysis/references/spm-analysis-checks.md +105 -0
  94. package/skills/spm-build-analysis/scripts/check_spm_pins.py +118 -0
  95. package/skills/symphony-enforcer/SKILL.md +83 -97
  96. package/skills/symphony-orchestrator/SKILL.md +1 -1
  97. package/skills/trello-sync/SKILL.md +52 -45
  98. package/skills/verification-gate/SKILL.md +13 -2
  99. package/skills/xcode-build-benchmark/SKILL.md +88 -0
  100. package/skills/xcode-build-benchmark/references/benchmark-artifacts.md +94 -0
  101. package/skills/xcode-build-benchmark/references/benchmarking-workflow.md +67 -0
  102. package/skills/xcode-build-benchmark/schemas/build-benchmark.schema.json +230 -0
  103. package/skills/xcode-build-benchmark/scripts/benchmark_builds.py +308 -0
  104. package/skills/xcode-build-fixer/SKILL.md +218 -0
  105. package/skills/xcode-build-fixer/references/build-settings-best-practices.md +216 -0
  106. package/skills/xcode-build-fixer/references/fix-patterns.md +290 -0
  107. package/skills/xcode-build-fixer/references/recommendation-format.md +85 -0
  108. package/skills/xcode-build-fixer/scripts/benchmark_builds.py +308 -0
  109. package/skills/xcode-build-orchestrator/SKILL.md +156 -0
  110. package/skills/xcode-build-orchestrator/references/benchmark-artifacts.md +94 -0
  111. package/skills/xcode-build-orchestrator/references/build-settings-best-practices.md +216 -0
  112. package/skills/xcode-build-orchestrator/references/orchestration-report-template.md +143 -0
  113. package/skills/xcode-build-orchestrator/references/recommendation-format.md +85 -0
  114. package/skills/xcode-build-orchestrator/scripts/benchmark_builds.py +308 -0
  115. package/skills/xcode-build-orchestrator/scripts/diagnose_compilation.py +273 -0
  116. package/skills/xcode-build-orchestrator/scripts/generate_optimization_report.py +533 -0
  117. package/skills/xcode-compilation-analyzer/SKILL.md +89 -0
  118. package/skills/xcode-compilation-analyzer/references/build-optimization-sources.md +155 -0
  119. package/skills/xcode-compilation-analyzer/references/code-compilation-checks.md +106 -0
  120. package/skills/xcode-compilation-analyzer/references/recommendation-format.md +85 -0
  121. package/skills/xcode-compilation-analyzer/scripts/diagnose_compilation.py +273 -0
  122. package/skills/xcode-project-analyzer/SKILL.md +76 -0
  123. package/skills/xcode-project-analyzer/references/build-optimization-sources.md +155 -0
  124. package/skills/xcode-project-analyzer/references/build-settings-best-practices.md +216 -0
  125. package/skills/xcode-project-analyzer/references/project-audit-checks.md +101 -0
  126. package/skills/xcode-project-analyzer/references/recommendation-format.md +85 -0
  127. package/templates/CODEBASE.md +26 -42
  128. package/templates/configs/trello-config.json +2 -2
  129. package/templates/workflow_dual_mode_template.md +5 -5
  130. package/workflows/_uncategorized/conductor-codex.md +125 -0
  131. package/workflows/_uncategorized/conductor.md +97 -0
  132. package/workflows/_uncategorized/ship-to-code.md +85 -0
  133. package/workflows/_uncategorized/trello-sync.md +52 -0
  134. package/workflows/context/codebase-sync.md +10 -87
  135. 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.5: UI-First Three-Phase Execution with User Test Checkpoints.
7
+ v3.7: UI-First Three-Phase Execution with Auto Device Checkpoints (Maestro).
8
8
  metadata:
9
9
  stage: core
10
- version: "3.5"
11
- replaces: "v3.4"
10
+ version: "3.7"
11
+ replaces: "v3.6"
12
12
  requires: symphony-orchestrator
13
- tags: [symphony, enforcement, checkpoint, task-lifecycle, core, spec-first, auto-next, kiro, ui-first, user-test]
13
+ tags: [symphony, enforcement, checkpoint, task-lifecycle, core, spec-first, auto-next, kiro, ui-first, user-test, maestro, automated-verification]
14
14
  agent: Symphony Enforcer
15
15
  allowed-tools:
16
16
  - symphony_create_task
@@ -24,14 +24,15 @@ invocation-type: auto
24
24
  priority: 1
25
25
  ---
26
26
 
27
- # Symphony Enforcer v3.5 — UI-First Three-Phase Execution + User Test Checkpoints
27
+ # Symphony Enforcer v3.7 — UI-First Three-Phase Execution + Auto Device Checkpoints
28
28
 
29
29
  > **Purpose:** Đảm bảo AI KHÔNG BAO GIỜ quên cập nhật Symphony.
30
- > **Key Changes v3.5:**
31
- > - **Gate 4 Three-Phase Execution**: Phase A (Infra) Phase B (UI Shell + User Test) → Phase C (Logic + User Test)
32
- > - **TP1.7: User Test Checkpoint**: Trigger dừng lại cho user test trên device thật
30
+ > **Key Changes v3.7:**
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 + Auto Check) → Phase C (Logic + Auto Check)
33
+ > - **TP1.7: Auto Device Checkpoint (ADC)**: Tự động build & quét UI bằng Maestro MCP thay vì chờ user test thủ công
33
34
  > - **UI-First Task Ordering**: UI tasks PHẢI đi trước logic tasks trong Symphony
34
- > - Kế thừa tất cả features v3.4 (Kiro, Completion Status, Design Compliance).
35
+ > - Kế thừa tất cả features v3.5 (Kiro, Completion Status, Design Compliance).
35
36
  > **Principle:** AI tự detect completion — user KHÔNG CẦN nói "xong".
36
37
 
37
38
  ---
@@ -52,16 +53,32 @@ KHÔNG CÓ NGOẠI LỆ:
52
53
 
53
54
  ## 🔒 STRICT STARTUP PROTOCOL (BẮT BUỘC)
54
55
 
55
- Mỗi khi bắt đầu task code/debug/plan, AI PHẢI đi qua **5 steps tuần tự**.
56
+ Mỗi khi bắt đầu task code/debug/plan, AI PHẢI đi qua **6 steps tuần tự**.
56
57
  KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
57
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
+
58
75
  ### Step 1: Project Identity — `.project-identity`
59
76
 
60
77
  ```
61
78
  → Kiểm tra: file .project-identity có tồn tại?
62
79
  → CÓ → Đọc projectId, projectName
63
80
  → KHÔNG → ⛔ DỪNG. Hỏi user hoặc tạo .project-identity.
64
- → Output: "📋 Step 1/5: Project Identity ✅ — {projectId}"
81
+ → Output: "📋 Step 1/6: Project Identity ✅ — {projectId}"
65
82
  ```
66
83
 
67
84
  ### Step 2: NeuralMemory Brain — Switch brain
@@ -69,7 +86,7 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
69
86
  ```
70
87
  → nmem brain use <projectId>
71
88
  → nmem_recap(level=1) — load context
72
- → Output: "🧠 Step 2/5: Brain ✅ — switched to {projectId}"
89
+ → Output: "🧠 Step 2/6: Brain ✅ — switched to {projectId}"
73
90
  ```
74
91
 
75
92
  ### Step 3: Spec Alignment — Đọc Project Spec (v3.4 + Kiro)
@@ -82,7 +99,7 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
82
99
  - .kiro/specs/<module>/design.md → architecture
83
100
  - .kiro/specs/<module>/tasks.md → task breakdown (cho Step 4)
84
101
  → Extract constraints liên quan đến task hiện tại
85
- → Output: "📐 Step 3/5: Kiro Specs Loaded ✅ — {N} modules, {M} design docs"
102
+ → Output: "📐 Step 3/6: Kiro Specs Loaded ✅ — {N} modules, {M} design docs"
86
103
 
87
104
  → CHECK 2 (fallback): docs/specs/PROJECT.md tồn tại?
88
105
  → CÓ → Đọc silent: PROJECT.md + TECH-SPEC.md + REQUIREMENTS.md
@@ -90,8 +107,8 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
90
107
  → NẾU PLANNING mode:
91
108
  - Hỏi user 1-3 câu về constraints/UX cụ thể của feature
92
109
  - Ví dụ: "Feature này cần offline support không?"
93
- → Output: "📐 Step 3/5: Spec Aligned ✅"
94
- → KHÔNG → Skip (project chưa /init) → "📐 Step 3/5: No spec — skipped"
110
+ → Output: "📐 Step 3/6: Spec Aligned ✅"
111
+ → KHÔNG → Skip (project chưa /init) → "📐 Step 3/6: No spec — skipped"
95
112
  ```
96
113
 
97
114
  > **Quan trọng:** Nếu .kiro/specs hoặc TECH-SPEC.md có "Constraints & Non-Negotiables",
@@ -105,7 +122,7 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
105
122
  - Group theo module name
106
123
  - Đánh tag kèm module name
107
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.
108
- → Output: "🎯 Step 4/5: Kiro Tasks Imported ✅ — {N} tasks created"
125
+ → Output: "🎯 Step 4/6: Kiro Tasks Imported ✅ — {N} tasks created"
109
126
  → Claim task phù hợp nhất với user request
110
127
  → CÓ + đã import → symphony_available_tasks → claim task phù hợp
111
128
 
@@ -114,7 +131,7 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
114
131
  → CÓ task ready phù hợp → symphony_claim_task
115
132
  → KHÔNG CÓ → symphony_create_task(title) → symphony_claim_task(new_id)
116
133
  → Lưu task_id cho TP1-TP4
117
- → Output: "🎯 Step 4/5: Task ✅ — #sym-XYZ claimed"
134
+ → Output: "🎯 Step 4/6: Task ✅ — #sym-XYZ claimed"
118
135
  ```
119
136
 
120
137
  ### Step 5: Confirmation Block
@@ -122,11 +139,12 @@ KHÔNG được bắt đầu work cho đến khi TẤT CẢ steps ✅.
122
139
  ```
123
140
  🚦 STARTUP PROTOCOL COMPLETE
124
141
  ══════════════════════════════════════
125
- Step 1: 📋 Project Identity {projectId}
126
- Step 2: 🧠 NeuralMemory brain: {projectId}
127
- Step 3: 📐 Spec Alignment ✅ {constraints_count} constraints loaded
128
- Step 4: 🎯 Task #sym-XYZ "{title}"
129
- Step 5: ✅ READY TO WORK
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
130
148
  ══════════════════════════════════════
131
149
  ```
132
150
 
@@ -145,8 +163,8 @@ LIÊN KẾT TỰ ĐỘNG:
145
163
 
146
164
  THREE-PHASE MAPPING (Gate 4 — COMPLEX tasks với UI):
147
165
  - Phase A done (build OK) → report_progress(25%) + checkpoint build
148
- - Phase B done (UI mock) → report_progress(45%) + TRIGGER TP1.7 (User Test)
149
- - Phase C per-feature done → report_progress(50-85%) + TRIGGER TP1.7 (User Test)
166
+ - Phase B done (UI mock) → report_progress(45%) + TRIGGER TP1.7 (Auto Device Checkpoint)
167
+ - Phase C per-feature done → report_progress(50-85%) + TRIGGER TP1.7 (Auto Device Checkpoint)
150
168
  - Phase C all features done → report_progress(90%) → Gate 5
151
169
  ```
152
170
 
@@ -199,10 +217,10 @@ Khi kích hoạt Three-Phase, AI PHẢI hiển thị:
199
217
  → {list tasks for Phase A}
200
218
  🎨 Phase B: UI Shell (Mock Data)
201
219
  → {list tasks for Phase B}
202
- → 🧪 USER TEST sau phase này
220
+ → 🧪 AUTO DEVICE TEST (Maestro) sau phase này
203
221
  ⚡ Phase C: Logic Integration
204
222
  → {list tasks for Phase C}
205
- → 🧪 USER TEST mỗi feature
223
+ → 🧪 AUTO DEVICE TEST (Maestro) mỗi feature
206
224
  ══════════════════════════════════════
207
225
  Bắt đầu Phase A...
208
226
  ```
@@ -223,13 +241,19 @@ auto_triggers:
223
241
  phase_b_to_checkpoint:
224
242
  signal: Tất cả [UI] tasks đã done
225
243
  action: |
226
- - ⛔ DẪNG CODE NGAY LẬP TỨC
227
- - TRIGGER TP1.7 (User Test Checkpoint)
228
- - CHỊ user confirm "✅ OK" trước khi làm bất cứ gì khác
229
- - KHÔNG được tự ý skip bước này
244
+ - ⛔ TRIGGER TP1.7 (Checkpoint)
245
+ - Đọc `.project-identity` -> `autoVerification`
246
+ - NẾU `true`:
247
+ + Chạy Auto Build check exit code 0
248
+ + Dùng mcp_maestro_launch_app và take_screenshot
249
+ + NẾU fail → DỪNG (notify_user BlockedOnUser=true)
250
+ + NẾU pass → Báo cáo Screenshot (BlockedOnUser=false) và làm tiếp Phase C
251
+ - NẾU `false` (default):
252
+ + DỪNG VÀ CHỜ user test thủ công (notify_user BlockedOnUser=true)
253
+ + CHỜ user xác nhận "OK" mới đi tiếp Phase C
230
254
 
231
255
  checkpoint_to_phase_c:
232
- signal: User confirmed "" hoặc "OK"
256
+ signal: Build success & App launched (autoVerification=true) HOẶC User confirmed "OK" (autoVerification=false)
233
257
  action: |
234
258
  - Set phase_b_confirmed = true
235
259
  - Set current_phase = "C"
@@ -247,16 +271,16 @@ auto_triggers:
247
271
 
248
272
  ```
249
273
  ❌ VI PHạM NẶNG:
250
- - Code logic (Phase C) khi phase_b_confirmed = false
274
+ - Code logic (Phase C) khi phase_b_confirmed = false (chưa pass Phase B checkpoint)
251
275
  - Skip Phase Announcement Block
252
- - Code UI và Logic lẫn lộn trong cùng 1 lượt (phải tách rõ phase)
253
- - Tự giả vờ user confirm để skip checkpoint
254
- - Không hiển thị Phase Announcement khi Three-Phase activated
276
+ - Bỏ qua TP1.7
277
+ - Chạy Auto-verification khi `autoVerification: false` (bỏ qua thủ công)
278
+ - Chờ user test thủ công khi `autoVerification: true` (lười setup auto)
255
279
 
256
280
  ✅ BẮT BUỘC:
257
281
  - Luôn announce phase transition rõ ràng
258
- - Luôn tạo hướng dẫn test CỤ THỂ (không chung chung)
259
- - Luôn dùng notify_user(BlockedOnUser=true) cho checkpoints
282
+ - Luôn đọc `autoVerification` trong `.project-identity` trước khi trigger check.
283
+ - Gắn BlockedOnUser = true cho mode manual, false cho mode auto.
260
284
  - Ghi lại phase state vào NeuralMemory khi chuyển phase
261
285
  ```
262
286
 
@@ -342,77 +366,39 @@ File patterns:
342
366
 
343
367
  ---
344
368
 
345
- ### TP1.7: User Test Checkpoint (NEW v3.5 Gate 4 Three-Phase)
369
+ ### TP1.7: Flexible Checkpoint (Manual v/s Auto) (UPDATE v3.7)
370
+
371
+ **Cấu hình Mode Verification:**
372
+ Quy trình Verification được quyết định bởi thuộc tính `"autoVerification"` trong `.project-identity`:
373
+ - `{"autoVerification": true}` → **Auto Device Checkpoint (ADC)**: Dùng Maestro tự build & chụp ảnh screenshot. Tiến thẳng sang bước tiếp (BlockedOnUser=false).
374
+ - `{"autoVerification": false}` (hoặc không khai báo) → **Manual Checkpoint**: Dừng lại chờ user test thủ công (BlockedOnUser=true). Đây là **MẶC ĐỊNH an toàn**.
346
375
 
347
- **Khi nào:** Trigger ở 2 thời điểm chính trong Gate 4:
376
+ **Khi nào trigger TP1.7:**
348
377
 
349
378
  1. **Phase B → C Transition (BẮT BUỘC cho COMPLEX):**
350
- - ALL UI screens đã code xong với mock data
351
- - Navigation hoạt động full flow
352
- - App build và chạy OK trên emulator/device
379
+ - ALL UI screens đã code xong
353
380
 
354
381
  2. **Sau mỗi feature trong Phase C (COMPLEX tasks):**
355
- - Feature X đã thay mock bằng real data
356
- - Feature works end-to-end trên device
382
+ - Feature X đã code xong logic
357
383
 
358
- **Điều kiện kích hoạt:**
359
- ```
360
- COMPLEX + có UI component → BẮT BUỘC TP1.7
361
- MODERATE + có UI component → OPTIONAL (recommend cho hardware features: camera, GPS, sensors)
362
- TRIVIAL → SKIP
363
- Backend-only tasks → SKIP
364
- ```
365
-
366
- **Action:**
384
+ **Action (Tùy theo Mode):**
367
385
  ```
368
386
  1. Report progress trước: symphony_report_progress(current_task, progress)
387
+ 2. Kiểm tra cờ `autoVerification` trong .project-identity.
369
388
 
370
- 2. Present User Test Checkpoint:
389
+ === TRƯỜNG HỢP 1: autoVerification = false (Default Manual) ===
390
+ - Announce "🧪 MANUAL USER TEST CHECKPOINT #{N}"
391
+ - Đưa hướng dẫn test cụ thể (e.g. "Mở app -> Bấm nút A -> Xem kết quả B")
392
+ - Gọi notify_user(BlockedOnUser=true) — DỪNG và CHỜ user response
393
+ - Chỉ đi tiếp khi user reply "OK".
371
394
 
372
- 🧪 USER TEST CHECKPOINT #{N}
373
- ══════════════════════════════════════
374
- 📱 Phase: {B|C} — {phase_name}
375
- 📋 Đã code xong: {summary of completed work}
376
- 📁 Files changed: {N} files
377
-
378
- 🔍 Hướng dẫn test:
379
- 1. {step 1 — cụ thể, actionable}
380
- 2. {step 2 — expected behavior}
381
- 3. {step 3 — edge case to check}
382
-
383
- ⏳ Anh test xong reply:
384
- ✅ OK — tiếp tục
385
- ⚠️ Issue: {mô tả} — tôi sẽ fix trước khi đi tiếp
386
- ══════════════════════════════════════
387
-
388
- 3. Gọi notify_user(BlockedOnUser=true) — DỪNG và CHỜ user response
389
-
390
- 4. User response handling:
391
- → "OK" / "✅" → Tiếp tục phase tiếp / feature tiếp
392
- → "Issue: ..." → Fix issue → re-run checkpoint
393
- → "Skip" → Ghi note concern, tiếp tục (DONE_WITH_CONCERNS later)
394
- ```
395
-
396
- **Test Guidance Generation:**
395
+ === TRƯỜNG HỢP 2: autoVerification = true (Auto Maestro) ===
396
+ - Chạy Auto Build
397
+ - Chạy mcp_maestro_launch_app, mcp_maestro_take_screenshot
398
+ - Announce "🤖 AUTO DEVICE CHECKPOINT #{N}" + Log + Evidence
399
+ - NẾU Build/Run Lỗi: BlockedOnUser=true (bắt user xem lỗi).
400
+ - NẾU Pass: BlockedOnUser=false. Lập tức đi tiếp phase tiếp theo! KHÔNG DỪNG.
397
401
  ```
398
- AI PHẢI tạo hướng dẫn test CỤ THỂ cho từng checkpoint:
399
-
400
- Phase B Examples (UI):
401
- - "Mở app → bấm tab Health → xem Dashboard có hiển thị 4 cards không?"
402
- - "Quay ngang màn hình → layout có bể không?"
403
- - "Bấm nút Camera → xem preview có xuất hiện không?"
404
-
405
- Phase C Examples (Logic):
406
- - "Mở Health Dashboard → data thật có load lên không? (nếu có wifi)"
407
- - "Chụp ảnh thức ăn → kết quả AI có trả về trong 5s không?"
408
- - "Bấm Save → quay lại list → record mới có xuất hiện không?"
409
- ```
410
-
411
- **Enforcement:**
412
- - ❌ KHÔNG được chuyển từ Phase B → Phase C mà chưa có user confirm (COMPLEX)
413
- - ❌ KHÔNG được skip checkpoint cho hardware-related features (Camera, GPS, Sensors)
414
- - ✅ NÊN batch các features nhỏ lại thành 1 checkpoint (tránh quá nhiều interrupt)
415
- - ✅ Checkpoint cho logic KHÔNG cần nếu feature là pure-backend/invisible
416
402
 
417
403
  ---
418
404
 
@@ -8,7 +8,7 @@ metadata:
8
8
  stage: core
9
9
  version: "3.0"
10
10
  replaces: null
11
- requires: "@leejungkiin/awkit-symphony" (npm i -g @leejungkiin/awkit-symphony)
11
+ requires: "@leejungkiin/awkit-symphony (npm i -g @leejungkiin/awkit-symphony)"
12
12
  tags: [symphony, setup, server, orchestration, core, preflight, multi-project, agent]
13
13
  agent: Symphony Conductor
14
14
  allowed-tools:
@@ -30,21 +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
- - **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` là nơi để AI/Dev làm việc. Hai khái niệm này hoàn toàn khác nhau.
34
- - [QUAN TRỌNG] Checklist Items trên Trello = ĐẦU VIỆC NGHIỆP VỤ (Business Features). VD: "Màn hình Đăng Nhập", "Chức năng AI Chat", "Tích hợp Thanh Toán".
35
- - 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", "App Scaffolding".
36
- - PM KHÔNG QUAN TÂM ĐẾN QUY TRÌNH GATE CỦA AI. Progress qua các Gate (Gate 1, Gate 2...) CHỈ ĐƯỢC BÁO CÁO qua Comment.
37
- - KHÔNG BAO GIỜ bứng nguyên các task kỹ thuật chi tiết (VD: "Tạo file `BloodPressureViewModel.kt`") lên Trello. CẤM ĐỒNG BỘ (bulk-sync) raw `tasks.md` sang Trello.
38
- - BẮT BUỘC ĐỒNG BỘ TOÀN BỘ DANH SÁCH NGHIỆP VỤ TỔNG HỢP (Features): Chờ đến khi Đặc tả kỹ thuật (Specs) đã các tính năng, AI mới parse ra các Features thành các Checklist Items để Quản lý (PM) có thể thấy trọn vẹn scope.
39
- - Card KHÔNG di chuyển giữa lists (list = team member, cố định).
40
- - 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: "Đã hoàn thành Gate 2 Design", "Bắt đầu code Logic").
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ử 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ử 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à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 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").
41
43
  ```
42
44
 
43
45
  ---
44
46
 
45
47
  ## 🔐 Auth & Config
46
48
 
47
- 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 tại `.trello-config.json` ở root mỗi dự án.
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`).
48
50
 
49
51
  ### 1. Global Credentials (Environment Variables)
50
52
 
@@ -52,15 +54,21 @@ User setup lần đầu qua **interactive wizard** khi chạy `awkit init`:
52
54
  - CLI tự hỏi API Key → tạo link authorize token → hỏi Token → lưu vào `~/.zshrc`.
53
55
  - Nếu user đã setup rồi, CLI tự skip bước này.
54
56
 
55
- ### 2. Local Project Config (`.trello-config.json` tại root dự án)
57
+ ### 2. Local Project Config (`"trello"` key trong `.project-identity`)
56
58
  ```json
57
59
  {
58
- "board": "Appdexter - Code Magic",
59
- "list": "Kiên",
60
- "card": "Tên Card Dự Án"
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
+ }
61
67
  }
62
68
  ```
63
69
 
70
+ > **Fallback:** Nếu `.project-identity` không có key `trello`, CLI sẽ thử đọc `.trello-config.json` (backward compat).
71
+
64
72
  | Field | Mô tả |
65
73
  |-------|--------|
66
74
  | `board` | Tên board (TÊN, không dùng ID) |
@@ -81,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
81
89
 
82
90
  ### Tự Động Hóa Qua `awkit trello` (BẮT BUỘC)
83
91
 
84
- 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à `.trello-config.json`. MỌI thao tác Trello phải đi qua `awkit trello`.
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`.
85
93
  ---
86
94
 
87
95
  ## 📚 Command Reference
@@ -99,7 +107,7 @@ Công cụ `awkit` đã cung cấp sẵn các lệnh native quản lý Trello. P
99
107
  | Báo Blocked / Lỗi | `awkit trello block "<reason>"` |
100
108
  | Tạo checklist mới | `awkit trello checklist "<name>"` |
101
109
 
102
- > 💡 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`.
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`.
103
111
 
104
112
  ---
105
113
 
@@ -124,62 +132,61 @@ Mỗi Card chứa:
124
132
 
125
133
  ---
126
134
 
127
- ### TP1: 🚀 Start Task / Start Project (Description + Checklist)
135
+ ### ⚡ Delegation Rule: Khi nào dùng CLI, khi nào tự xử
128
136
 
129
- **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).
130
- *(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).*
137
+ > [!IMPORTANT]
138
+ > Gemini/Codex CLI đã sẵn skill trello-sync. Chỉ delegate cho CLI khi **tác vụ NẶNG** (nhiều bước, cần phân tích). Tác vụ đơn giản thì Antigravity tự gọi `awkit trello` trực tiếp — tránh xử lý 2 lần.
131
139
 
132
- **Action:**
133
- ```bash
134
- # Update Card Description với thông tin cực kỳ ràng cho Quản (PM) dự án
135
- 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 lược)"
140
+ | Loại tác vụ | Xử lý | Lý do |
141
+ |-------------|--------|-------|
142
+ | 🔴 **Nặng** Setup project, tạo nhiều checklists, sync toàn bộ spec | `gemini -p "..." --approval-mode auto` | Nhiều bước, cần phân tích spec → delegate |
143
+ | 🟢 **Nhẹ** Add 1 item, complete 1 item, comment, block | `awkit trello <cmd>` trực tiếp | 1 lệnh duy nhất → tự gọi, không cần CLI |
144
+
145
+ ---
136
146
 
137
- # 1. Tạo checklist dựa trên Module/Epic Nghiệp vụ thực tế
138
- awkit trello checklist "Module: Xác thực Người Dùng"
147
+ ### TP1: 🚀 Start Task / Start Project (Description + Checklist) — 🔴 DELEGATE
139
148
 
140
- # 2. Thêm item mới vào checklist (Tuyệt đối KHÔNG ĐẶT TÊN theo Gate/Phase/Scaffolding)
141
- awkit trello item "Đăng nhập bằng Google"
142
- awkit trello item "Hồ sơ Người Dùng"
149
+ **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).
150
+ *(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).*
143
151
 
144
- # 3. Comment thông báo cập nhật tiến trình hoặc trạng thái Agent
145
- awkit trello comment "🤖 AI bắt đầu: Xây dựng giao diện Đăng Nhập | Symphony: #sym-XXX"
152
+ **Action:** Delegate cho **Gemini CLI** (nhiều bước: update desc + tạo checklists + thêm items + comment):
153
+ ```bash
154
+ gemini -p "Phân tích Spec/thiết kế đã chốt của dự án. Tạo các checklists và checklist items trên Trello card theo quy tắc Granularity (PM View). Cập nhật description card với tổng quan dự án. Comment thông báo bắt đầu. Dùng awkit trello." --approval-mode auto
146
155
  ```
147
156
 
148
157
  ---
149
158
 
150
- ### TP2: 📈 Report Progress (Comment Milestone)
159
+ ### TP2: 📈 Report Progress (Comment Milestone) — 🟢 TRỰC TIẾP
151
160
 
152
161
  **Khi nào:** AI đạt milestone quan trọng (40%, 60%, 80%) hoặc hoàn thành cụm tính năng.
153
162
 
154
- **Action:** Cung cấp thông tin CHUYÊN MÔN nhưng RÕ RÀNG cho PM:
163
+ **Action:** Gọi trực tiếp (1 lệnh duy nhất):
155
164
  ```bash
156
- 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."
165
+ awkit trello comment "⏳ Progress: [Tính năng] ([X]%) — [Chi tiết kỹ thuật]. Symphony: #sym-XXX"
157
166
  ```
158
167
 
159
168
  ---
160
169
 
161
- ### TP3: 🛑 Blocked
170
+ ### TP3: 🛑 Blocked — 🟢 TRỰC TIẾP
162
171
 
163
172
  **Khi nào:** Task bị chặn, cần human input.
164
173
 
174
+ **Action:** Gọi trực tiếp:
165
175
  ```bash
166
- # Label + Comment
167
- awkit trello block "API 500 on /auth/login. Cần Backend check."
176
+ awkit trello block "[Lý do block chi tiết]"
168
177
  ```
169
178
 
170
179
  ---
171
180
 
172
- ### TP4: ✅ Task Done (Đánh dấu Item Complete)
181
+ ### TP4: ✅ Task Done (Đánh dấu Item Complete) — 🟢 TRỰC TIẾP
173
182
 
174
- **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.
175
- *(Lưu ý: Không check item nếu chỉ mới xong 1 task code con lập trình)*
183
+ **Khi nào:** Toàn bộ cụm Tính năng Nghiệp vụ đã hoàn thành và sẵn sàng test.
184
+ *(Lưu ý: Không check item nếu chỉ mới xong 1 task code con)*
176
185
 
186
+ **Action:** Gọi trực tiếp:
177
187
  ```bash
178
- # 1. Đánh dấu checklist item đại diện cho tính năng
179
- awkit trello complete "Đăng nhập bằng Google"
180
-
181
- # 2. Comment kết quả
182
- awkit trello comment "✅ DONE Feature: Đăng nhập bằng Google | Commit: #$(git rev-parse --short HEAD)"
188
+ awkit trello complete "[Tên tính năng]"
189
+ awkit trello comment " DONE: [Tên tính năng] | Commit: #$(git rev-parse --short HEAD)"
183
190
  ```
184
191
 
185
192
  ---
@@ -222,14 +229,14 @@ Trong comment, **PHẢI** ghi Symphony Task ID: `Symphony: #sym-XXX`
222
229
 
223
230
  | Tình huống | Xử lý |
224
231
  |-----------|--------|
225
- | `.trello-config.json` không tồn tại | ⛔ Bỏ qua Trello sync, log cảnh báo, tiếp tục code |
232
+ | Trello config not found | ⛔ Bỏ qua Trello sync, log cảnh báo, tiếp tục code |
226
233
  | **Credentials not found** | `source ~/.zshrc` → retry (max 2 lần). Vẫn lỗi → báo user chạy `awkit init` |
227
234
  | Card not found | Chạy `sync`, retry. Nếu vẫn lỗi → báo user |
228
235
  | Checklist chưa có | Tạo checklist mới bằng `awkit trello checklist` |
229
236
  | Item trùng tên | Dùng `card:checklists` kiểm tra trước khi thêm |
230
237
  | Rate limit / API error | Log warning, tiếp tục code, KHÔNG block flow. CLI tự retry 429. |
231
238
  | Token hết hạn | Báo user chạy `awkit init` để setup lại credential mới |
232
- | Dự án chưa có card trên Trello | Báo user tạo card trên board, cập nhật `.trello-config.json` |
239
+ | 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` |
233
240
 
234
241
  ---
235
242
 
@@ -31,6 +31,10 @@ BEFORE claiming any status or expressing satisfaction:
31
31
  - If NO: State actual status with evidence
32
32
  - If YES: State claim WITH evidence
33
33
  5. ONLY THEN: Make the claim
34
+ 6. AUTO-COMMIT: Build 0 errors → git add → git commit → git push (non-force)
35
+ - Do NOT ask user permission for regular commits
36
+ - Use conventional commit message (fix:/feat:/refactor:)
37
+ - If push fails → git pull --rebase && git push (retry once)
34
38
 
35
39
  Skip any step = lying, not verifying
36
40
  ```
@@ -53,7 +57,7 @@ Skip any step = lying, not verifying
53
57
  | Linter clean | Linter output: 0 errors | Partial check, extrapolation |
54
58
  | Build succeeds | Build command: exit 0 | Linter passing, looks good |
55
59
  | Bug fixed | Test original symptom: passes | Code changed, assumed fixed |
56
- | Feature works | Demo/run showing behavior | Code written, assumed works |
60
+ | Feature works | Maestro MCP auto run/Screenshot | Code written, assumed works |
57
61
  | Requirements met | Line-by-line checklist | Tests passing |
58
62
  | Deploy succeeded | Health check: 200 OK | Deploy command completed |
59
63
 
@@ -93,8 +97,9 @@ If you catch yourself thinking any of these, STOP and run verification:
93
97
 
94
98
  **Build:**
95
99
  ```
96
- ✅ [Run build] → [See: BUILD SUCCEEDED] → "Build passes"
100
+ ✅ [Run build] → [See: BUILD SUCCEEDED] → auto git add+commit+push → "Build passes, committed & pushed"
97
101
  ❌ "Linter passed so build is fine"
102
+ ❌ Build succeeded but forgot to commit
98
103
  ```
99
104
 
100
105
  **Bug Fix:**
@@ -103,6 +108,12 @@ If you catch yourself thinking any of these, STOP and run verification:
103
108
  ❌ "I've changed the code, bug should be fixed"
104
109
  ```
105
110
 
111
+ **UI/Feature Verification:**
112
+ ```
113
+ ✅ Run Automated App Build → Run mcp_maestro_launch_app → Take mcp_maestro_take_screenshot → "UI renders correctly and no crash"
114
+ ❌ "Code looks good, layouts conform to specs, should render fine."
115
+ ```
116
+
106
117
  **Requirements:**
107
118
  ```
108
119
  ✅ Re-read plan → Create checklist → Verify each → Report gaps or completion
@@ -0,0 +1,88 @@
1
+ ---
2
+ name: xcode-build-benchmark
3
+ description: Benchmark Xcode clean và incremental builds với đầu vào có thể lặp lại, xuất timing summaries và lưu timestamped `.build-benchmark/` artifacts. Sử dụng khi lập trình viên muốn đo lường baseline, so sánh trước và sau khi tối ưu, hoặc khi phàn nàn về việc build chậm và muốn đo chính xác build mất bao lâu.
4
+ ---
5
+
6
+ # Xcode Build Benchmark
7
+
8
+ Use this skill to produce a repeatable Xcode build baseline before anyone tries to optimize build times.
9
+
10
+ ## Core Rules
11
+
12
+ - Measure before recommending changes.
13
+ - Capture clean and incremental builds separately.
14
+ - Keep the command, destination, configuration, scheme, and warm-up rules consistent across runs.
15
+ - Write a timestamped JSON artifact to `.build-benchmark/`.
16
+ - Do not change project files as part of benchmarking.
17
+
18
+ ## Inputs To Collect
19
+
20
+ Confirm or infer:
21
+
22
+ - workspace or project path
23
+ - scheme
24
+ - configuration
25
+ - destination
26
+ - whether the user wants simulator or device numbers
27
+ - whether a custom `DerivedData` path is needed
28
+
29
+ If the project has both clean-build and incremental-build pain, benchmark both. That is the default.
30
+
31
+ ## Worktree Considerations
32
+
33
+ When benchmarking inside a git worktree, SPM packages with `exclude:` paths that reference gitignored directories (e.g., `__Snapshots__`) will cause `xcodebuild -resolvePackageDependencies` to crash. Create those missing directories before running any builds.
34
+
35
+ ## Default Workflow
36
+
37
+ 1. Normalize the build command and note every flag that affects caching or module reuse.
38
+ 2. Run one warm-up build if needed to validate that the command succeeds.
39
+ 3. Run 3 clean builds.
40
+ 4. If `COMPILATION_CACHING = YES` is detected, run 3 cached clean builds. These measure clean build time with a warm compilation cache -- the realistic scenario for branch switching, pulling changes, or Clean Build Folder. The script handles this automatically by building once to warm the cache, then deleting DerivedData (but not the compilation cache) before each measured run. Pass `--no-cached-clean` to skip.
41
+ 5. Run 3 zero-change builds (build immediately after a successful build with no edits). This measures the fixed overhead floor: dependency computation, project description transfer, build description creation, script phases, codesigning, and validation. A zero-change build that takes more than a few seconds indicates avoidable per-build overhead. Use the default `benchmark_builds.py` invocation (no `--touch-file` flag).
42
+ 6. Optionally run 3 incremental builds with a file touch to measure a real edit-rebuild loop. Use `--touch-file path/to/SomeFile.swift` to touch a representative source file before each build.
43
+ 7. Save the raw results and summary into `.build-benchmark/`.
44
+ 8. Report medians and spread, not just the single fastest run.
45
+
46
+ ## Preferred Command Path
47
+
48
+ Use the shared helper when possible:
49
+
50
+ ```bash
51
+ python3 scripts/benchmark_builds.py \
52
+ --workspace App.xcworkspace \
53
+ --scheme MyApp \
54
+ --configuration Debug \
55
+ --destination "platform=iOS Simulator,name=iPhone 16" \
56
+ --output-dir .build-benchmark
57
+ ```
58
+
59
+ If you cannot use the helper script, run equivalent `xcodebuild` commands with `-showBuildTimingSummary` and preserve the raw output.
60
+
61
+ ## Required Output
62
+
63
+ Return:
64
+
65
+ - clean build median, min, max
66
+ - cached clean build median, min, max (when COMPILATION_CACHING is enabled)
67
+ - zero-change build median, min, max (fixed overhead floor)
68
+ - incremental build median, min, max (if `--touch-file` was used)
69
+ - biggest timing-summary categories
70
+ - environment details that could affect comparisons
71
+ - path to the saved artifact
72
+
73
+ If results are noisy, say so and recommend rerunning under calmer conditions.
74
+
75
+ ## When To Stop
76
+
77
+ Stop after measurement if the user only asked for benchmarking. If they want optimization guidance, hand off the artifact to the relevant specialist by reading its SKILL.md and applying its workflow to the same project context:
78
+
79
+ - [`xcode-compilation-analyzer`](../xcode-compilation-analyzer/SKILL.md)
80
+ - [`xcode-project-analyzer`](../xcode-project-analyzer/SKILL.md)
81
+ - [`spm-build-analysis`](../spm-build-analysis/SKILL.md)
82
+ - [`xcode-build-orchestrator`](../xcode-build-orchestrator/SKILL.md) for full orchestration
83
+
84
+ ## Additional Resources
85
+
86
+ - For the benchmark contract, see [references/benchmarking-workflow.md](references/benchmarking-workflow.md)
87
+ - For the shared artifact format, see [references/benchmark-artifacts.md](references/benchmark-artifacts.md)
88
+ - For the JSON schema, see [schemas/build-benchmark.schema.json](schemas/build-benchmark.schema.json)