@leejungkiin/awkit 1.1.6 → 1.1.7
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/README.md +15 -0
- package/core/GEMINI.md +45 -7
- package/package.json +3 -3
- package/skills/ab-test-store-listing/SKILL.md +220 -0
- package/skills/android-aso/SKILL.md +197 -0
- package/skills/app-analytics/SKILL.md +210 -0
- package/skills/app-clips/SKILL.md +163 -0
- package/skills/app-icon-optimization/SKILL.md +170 -0
- package/skills/app-launch/SKILL.md +153 -0
- package/skills/app-marketing-context/SKILL.md +129 -0
- package/skills/app-store-featured/SKILL.md +213 -0
- package/skills/apple-search-ads/SKILL.md +205 -0
- package/skills/asc-metrics/SKILL.md +157 -0
- package/skills/aso-audit/SKILL.md +179 -0
- package/skills/competitor-analysis/SKILL.md +163 -0
- package/skills/competitor-tracking/SKILL.md +185 -0
- package/skills/crash-analytics/SKILL.md +181 -0
- package/skills/in-app-events/SKILL.md +176 -0
- package/skills/keyword-research/SKILL.md +141 -0
- package/skills/localization/SKILL.md +165 -0
- package/skills/market-movers/SKILL.md +137 -0
- package/skills/market-pulse/SKILL.md +170 -0
- package/skills/metadata-optimization/SKILL.md +170 -0
- package/skills/monetization-strategy/SKILL.md +175 -0
- package/skills/onboarding-optimization/SKILL.md +194 -0
- package/skills/orchestrator/SKILL.md +297 -25
- package/skills/press-and-pr/SKILL.md +204 -0
- package/skills/rating-prompt-strategy/SKILL.md +184 -0
- package/skills/retention-optimization/SKILL.md +165 -0
- package/skills/review-management/SKILL.md +154 -0
- package/skills/screenshot-optimization/SKILL.md +167 -0
- package/skills/seasonal-aso/SKILL.md +141 -0
- package/skills/spec-gate/SKILL.md +312 -0
- package/skills/subscription-lifecycle/SKILL.md +206 -0
- package/skills/swiftui-pro/references/design.md +44 -0
- package/skills/symphony-enforcer/SKILL.md +92 -11
- package/skills/systematic-debugging/SKILL.md +32 -7
- package/skills/ua-campaign/SKILL.md +207 -0
- package/skills/verification-gate/SKILL.md +23 -2
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: onboarding-optimization
|
|
3
|
+
description: When the user wants to improve their app's onboarding experience, increase activation rate, reduce Day 1 drop-off, or optimize the first-run flow. Use when the user mentions "onboarding", "first-run", "activation", "tutorial", "day 1 retention", "new user flow", "permission prompts", "sign-up conversion", "onboarding funnel", or "users dropping off early". For overall retention strategy, see retention-optimization. For paywall placement, see monetization-strategy.
|
|
4
|
+
metadata:
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Onboarding Optimization
|
|
9
|
+
|
|
10
|
+
You optimize the first-run experience to maximize activation — the moment a new user completes the core action that predicts long-term retention.
|
|
11
|
+
|
|
12
|
+
## The Activation Principle
|
|
13
|
+
|
|
14
|
+
**Activation ≠ sign-up.** Activation is the first time the user gets real value from your app. Identify it before anything else.
|
|
15
|
+
|
|
16
|
+
| App Type | Activation Event |
|
|
17
|
+
|----------|-----------------|
|
|
18
|
+
| Fitness | First workout completed |
|
|
19
|
+
| Productivity | First task or project created |
|
|
20
|
+
| Social | First connection made or content posted |
|
|
21
|
+
| Finance | First account linked or budget set |
|
|
22
|
+
| Games | First level or match completed |
|
|
23
|
+
| Meditation | First session completed |
|
|
24
|
+
| Photo/Video | First photo edited or exported |
|
|
25
|
+
|
|
26
|
+
**Rule:** Everything in onboarding should funnel toward that one activation event as fast as possible.
|
|
27
|
+
|
|
28
|
+
## Initial Assessment
|
|
29
|
+
|
|
30
|
+
1. Check for `app-marketing-context.md`
|
|
31
|
+
2. Ask: **What is your activation event?**
|
|
32
|
+
3. Ask: **What % of new users reach it within 24 hours?** (baseline)
|
|
33
|
+
4. Ask: **Where do users drop off?** (which step, if known)
|
|
34
|
+
5. Ask: **How long does your current onboarding take?** (steps, screens)
|
|
35
|
+
6. Ask: **Do you have Firebase/Mixpanel funnels set up?**
|
|
36
|
+
|
|
37
|
+
## Onboarding Audit Framework
|
|
38
|
+
|
|
39
|
+
### Step 1 — Map the Current Flow
|
|
40
|
+
|
|
41
|
+
List every screen from app open to activation:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
App open → [Screen 1] → [Screen 2] → ... → Activation event
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Flag each screen: **Required** | **Value-adding** | **Friction only**
|
|
48
|
+
|
|
49
|
+
Remove or defer everything that is friction-only.
|
|
50
|
+
|
|
51
|
+
### Step 2 — Score Each Screen
|
|
52
|
+
|
|
53
|
+
| Factor | Question | Score |
|
|
54
|
+
|--------|---------|-------|
|
|
55
|
+
| **Necessity** | Can the user reach activation without this? | 0 = skip it |
|
|
56
|
+
| **Timing** | Is this the right moment for this ask? | |
|
|
57
|
+
| **Value exchange** | Does the user understand why this benefits them? | |
|
|
58
|
+
| **Cognitive load** | How many decisions does this require? | |
|
|
59
|
+
|
|
60
|
+
### Step 3 — Permission Prompt Timing
|
|
61
|
+
|
|
62
|
+
Permissions are the #1 drop-off point. Rules:
|
|
63
|
+
|
|
64
|
+
| Permission | When to ask | Never ask |
|
|
65
|
+
|-----------|------------|-----------|
|
|
66
|
+
| Push notifications | After activation, not before | On cold open |
|
|
67
|
+
| Location | When the feature needs it | During sign-up |
|
|
68
|
+
| Camera/microphone | Contextually, when used | Before any value |
|
|
69
|
+
| Contacts | When the social feature is used | In onboarding |
|
|
70
|
+
| Tracking (ATT) | After user is invested | On first open |
|
|
71
|
+
|
|
72
|
+
**The pre-permission screen:** Always show a native-looking explanation screen before the system prompt. Users who understand the "why" grant at 2–3× the rate.
|
|
73
|
+
|
|
74
|
+
### Step 4 — Sign-Up Friction
|
|
75
|
+
|
|
76
|
+
| Pattern | Impact | Recommendation |
|
|
77
|
+
|---------|--------|---------------|
|
|
78
|
+
| Required sign-up before value | High drop-off | Defer to post-activation |
|
|
79
|
+
| Only email+password | Medium drop-off | Add Sign in with Apple + Google |
|
|
80
|
+
| Long profile setup | High drop-off | Ask 1 question max, defer rest |
|
|
81
|
+
| Email verification required | Kills momentum | Defer or make optional |
|
|
82
|
+
|
|
83
|
+
**Guest mode / try before sign-up:** Allow users to experience the core value before requiring an account. Conversion from guest → registered is typically 40–60% vs. a hard gate at 15–30%.
|
|
84
|
+
|
|
85
|
+
## Onboarding Patterns by App Type
|
|
86
|
+
|
|
87
|
+
### Value-First (recommended for most apps)
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
Open → Core feature demo / interactive preview
|
|
91
|
+
→ Activation moment
|
|
92
|
+
→ "Save your progress" → Sign-up
|
|
93
|
+
→ Permission asks
|
|
94
|
+
→ Personalization
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Personalization-First (works for health, fitness, AI apps)
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
Open → 3–5 personalization questions (show progress bar)
|
|
101
|
+
→ "Your plan is ready" reveal moment
|
|
102
|
+
→ Sign-up gate (invested now)
|
|
103
|
+
→ Activation
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Social-First (social apps)
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
Open → Sign in with Apple/Google (single tap)
|
|
110
|
+
→ Find friends / follow suggestions
|
|
111
|
+
→ First feed with content
|
|
112
|
+
→ Activation (post, comment, react)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Funnel Benchmarks
|
|
116
|
+
|
|
117
|
+
| Step | Benchmark | Poor |
|
|
118
|
+
|------|-----------|------|
|
|
119
|
+
| App open → first interaction | > 85% | < 70% |
|
|
120
|
+
| Sign-up conversion | > 60% | < 40% |
|
|
121
|
+
| Push permission grant | > 50% | < 30% |
|
|
122
|
+
| Activation (D0) | > 40% | < 20% |
|
|
123
|
+
| Day 1 retention | > 30% | < 15% |
|
|
124
|
+
|
|
125
|
+
## Personalization Questions
|
|
126
|
+
|
|
127
|
+
If you include personalization, follow these rules:
|
|
128
|
+
- Maximum **3–5 questions** in onboarding
|
|
129
|
+
- Each question must visibly affect the experience
|
|
130
|
+
- Show a progress indicator (step 1 of 3)
|
|
131
|
+
- Use visual selections, not text inputs
|
|
132
|
+
- Never ask for data you won't use immediately
|
|
133
|
+
|
|
134
|
+
## Paywall Placement in Onboarding
|
|
135
|
+
|
|
136
|
+
**Rule:** Show value before the paywall.
|
|
137
|
+
|
|
138
|
+
| Placement | Works When |
|
|
139
|
+
|-----------|-----------|
|
|
140
|
+
| Before activation | Almost never — user has no reference for value |
|
|
141
|
+
| At activation | Strong — user just felt the value |
|
|
142
|
+
| Post-activation, D1 | Strongest for subscription apps |
|
|
143
|
+
| Contextual (feature gate) | Good for feature-based paywall |
|
|
144
|
+
|
|
145
|
+
See `monetization-strategy` for paywall design details.
|
|
146
|
+
|
|
147
|
+
## Output Format
|
|
148
|
+
|
|
149
|
+
### Onboarding Audit
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Current flow:
|
|
153
|
+
[Screen 1] — Required / friction
|
|
154
|
+
[Screen 2] — Value-adding
|
|
155
|
+
[Screen 3] — Required / friction
|
|
156
|
+
...
|
|
157
|
+
[Activation event] — Step N
|
|
158
|
+
|
|
159
|
+
Drop-off analysis:
|
|
160
|
+
Biggest drop: [screen] ([X]% exit rate if known)
|
|
161
|
+
Estimated cause: [hypothesis]
|
|
162
|
+
|
|
163
|
+
Recommended changes:
|
|
164
|
+
1. [Remove / defer X] — Expected impact: [lift in activation]
|
|
165
|
+
2. [Reorder Y before Z] — Expected impact: [rationale]
|
|
166
|
+
3. [Add pre-permission screen for Z] — Expected impact: [grant rate improvement]
|
|
167
|
+
|
|
168
|
+
Revised flow:
|
|
169
|
+
Open → [Screen] → [Screen] → Activation → Sign-up → Permissions
|
|
170
|
+
Estimated steps removed: [N]
|
|
171
|
+
Estimated time to activation: [Xs → Xs]
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Permission Screen Copy Template
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
[Icon representing the permission]
|
|
178
|
+
|
|
179
|
+
[Benefit headline — what the user gets]
|
|
180
|
+
e.g., "Get notified when your goal is complete"
|
|
181
|
+
|
|
182
|
+
[One-line explanation]
|
|
183
|
+
e.g., "We'll only send you reminders you set — no spam."
|
|
184
|
+
|
|
185
|
+
[Allow button] [Not now]
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Related Skills
|
|
189
|
+
|
|
190
|
+
- `retention-optimization` — Day 7/30 retention strategy
|
|
191
|
+
- `monetization-strategy` — Paywall placement and trial design
|
|
192
|
+
- `ab-test-store-listing` — Test onboarding variants
|
|
193
|
+
- `app-analytics` — Set up activation funnel tracking
|
|
194
|
+
- `rating-prompt-strategy` — When to ask for a rating post-activation
|
|
@@ -1,58 +1,330 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: orchestrator
|
|
3
|
-
description:
|
|
3
|
+
description: >-
|
|
4
|
+
Autonomous State Machine Gatekeeper — triages task complexity, enforces 5-Gate pipeline,
|
|
5
|
+
and auto-routes to the correct skill. AI tự kiểm tra trạng thái dự án và bắt buộc
|
|
6
|
+
user đi qua đúng Gate trước khi code. User KHÔNG CẦN gọi workflow bằng tay.
|
|
7
|
+
metadata:
|
|
8
|
+
stage: core
|
|
9
|
+
version: "2.1"
|
|
10
|
+
replaces: "1.0"
|
|
11
|
+
tags: [orchestrator, routing, gate, triage, state-machine, core]
|
|
12
|
+
agent: Orchestrator
|
|
13
|
+
trigger: always
|
|
14
|
+
invocation-type: auto
|
|
15
|
+
priority: 0
|
|
4
16
|
---
|
|
5
17
|
|
|
6
|
-
# Orchestrator
|
|
18
|
+
# Orchestrator v2.1 — Autonomous State Machine Gatekeeper
|
|
7
19
|
|
|
8
|
-
|
|
9
|
-
|
|
20
|
+
> **Purpose:** Route mọi request qua hệ thống 5-Gate tự động.
|
|
21
|
+
> AI tự nhận diện project state → tự quyết định gate nào cần chạy.
|
|
22
|
+
> User chỉ cần nói ý tưởng, AI lo phần còn lại.
|
|
10
23
|
|
|
11
|
-
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## ⚡ Core Principle
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
AI LÀ NGƯỜI GIÁM SÁT "CÁN CÂN" CỦA DỰ ÁN.
|
|
30
|
+
- User không cần nhớ workflow nào để gọi
|
|
31
|
+
- AI tự detect thiếu spec → tự hỏi
|
|
32
|
+
- AI tự detect thiếu design → tự phác thảo
|
|
33
|
+
- AI tự detect thiếu tickets → tự tạo
|
|
34
|
+
- Chỉ cho phép code khi TẤT CẢ prerequisites thỏa mãn
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 6 Decision Principles (Auto-decide khi không cần hỏi user)
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
1. Complete > Shortcuts — AI cost rẻ. Implement đủ, kể cả edge cases.
|
|
41
|
+
2. Evidence > Assumptions — Dựa trên data thực tế, không đoán.
|
|
42
|
+
3. Standard > Custom — Ưu tiên thư viện/pattern có sẵn.
|
|
43
|
+
4. Explicit > Implicit — Code rõ ràng, không clever tricks.
|
|
44
|
+
5. Test > Trust — Viết test, không "chắc chắn đúng".
|
|
45
|
+
6. Small > Big — Incremental changes, không big-bang.
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 🎯 STEP 1: Complexity Triage (BẮT BUỘC)
|
|
51
|
+
|
|
52
|
+
Mỗi khi nhận request từ user, orchestrator PHẢI phân loại complexity **TRƯỚC** mọi action khác.
|
|
53
|
+
|
|
54
|
+
### Scoring Criteria
|
|
55
|
+
|
|
56
|
+
```yaml
|
|
57
|
+
factors:
|
|
58
|
+
persistence_change: # Thay đổi Database/Storage/Model
|
|
59
|
+
score: +4
|
|
60
|
+
signals: ["database", "schema", "table", "collection", "model", "migration", "storage"]
|
|
61
|
+
|
|
62
|
+
new_feature: # Feature hoàn toàn mới
|
|
63
|
+
score: +3
|
|
64
|
+
signals: ["tính năng mới", "new feature", "implement", "build", "tạo mới"]
|
|
65
|
+
|
|
66
|
+
multi_file: # Ảnh hưởng nhiều file/module
|
|
67
|
+
score: +2
|
|
68
|
+
signals: [">3 files", "cross-module", "refactor lớn", "architecture"]
|
|
69
|
+
|
|
70
|
+
api_change: # Thay đổi API contract
|
|
71
|
+
score: +2
|
|
72
|
+
signals: ["API", "endpoint", "request", "response", "contract"]
|
|
73
|
+
|
|
74
|
+
ui_only: # Chỉ thay đổi UI/styling
|
|
75
|
+
score: +0
|
|
76
|
+
signals: ["đổi màu", "UI", "layout", "font", "padding", "margin"]
|
|
77
|
+
|
|
78
|
+
single_file_fix: # Sửa 1 file, logic nhỏ
|
|
79
|
+
score: +0
|
|
80
|
+
signals: ["fix typo", "sửa lỗi nhỏ", "update text", "rename"]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Classification
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
TRIVIAL (score 0-2): Bypass ALL gates → Execute trực tiếp
|
|
87
|
+
Examples: đổi màu nút, sửa typo, thêm log, fix linter, update string
|
|
88
|
+
|
|
89
|
+
MODERATE (score 3-5): Gate 3 + 4 + 5
|
|
90
|
+
Examples: thêm UI component, sửa logic business nhỏ, update 1-2 files
|
|
91
|
+
|
|
92
|
+
COMPLEX (score 6-10): ALL 5 Gates bắt buộc
|
|
93
|
+
Examples: thêm feature mới, thay đổi DB schema, refactor architecture, thêm API
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Output Format
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
🔍 TRIAGE: [TRIVIAL|MODERATE|COMPLEX] (score: N/10)
|
|
100
|
+
Factors: [list detected factors]
|
|
101
|
+
Gates required: [list gates]
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 🚦 STEP 2: Gate State Check (Cho COMPLEX tasks)
|
|
107
|
+
|
|
108
|
+
Sau khi triage = COMPLEX, orchestrator kiểm tra **tuần tự** từng Gate.
|
|
109
|
+
Dừng tại Gate ĐẦU TIÊN chưa thỏa mãn.
|
|
110
|
+
|
|
111
|
+
### Gate 1: Spec Clarification 🔴
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
CHECK: Tồn tại file mô tả feature này?
|
|
115
|
+
→ Scan: docs/specs/<feature>.md HOẶC docs/BRIEF.md có section liên quan
|
|
116
|
+
→ Hoặc: NeuralMemory có BRIEF/SPEC cho feature này
|
|
117
|
+
|
|
118
|
+
PASS condition: File tồn tại VÀ có nội dung rõ ràng (use cases, target users, scope)
|
|
119
|
+
|
|
120
|
+
FAIL action:
|
|
121
|
+
→ Thông báo user: "Ý tưởng rất hay! Nhưng trước khi bắt tay vào code,
|
|
122
|
+
để tôi hỏi vài câu để chốt rõ yêu cầu đã nhé."
|
|
123
|
+
→ Kích hoạt: brainstorm-agent skill (Phase 2-6)
|
|
124
|
+
→ Output: BRIEF.md hoặc docs/specs/<feature>.md
|
|
125
|
+
→ Sau khi tạo xong → Re-check Gate 1 → Proceed Gate 2
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Gate 2: Architecture & Data Design 🟠
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
CHECK: Tồn tại bản thiết kế kỹ thuật đã được duyệt?
|
|
132
|
+
→ Scan: docs/architecture/<feature>_design.md
|
|
133
|
+
→ HOẶC: implementation_plan.md có section "Data Model" + marker "Approved"
|
|
134
|
+
|
|
135
|
+
PASS condition: File tồn tại VÀ có marker "## Status: Approved"
|
|
136
|
+
|
|
137
|
+
FAIL action:
|
|
138
|
+
→ Thông báo user: "Đã có spec rồi. Giờ để tôi phác thảo thiết kế
|
|
139
|
+
Database và API trước khi code, tránh phải sửa đi sửa lại sau nhé."
|
|
140
|
+
→ Kích hoạt: spec-gate skill
|
|
141
|
+
→ Output: docs/architecture/<feature>_design.md
|
|
142
|
+
→ Yêu cầu user approve design
|
|
143
|
+
→ Sau khi approved → Re-check Gate 2 → Proceed Gate 3
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Gate 3: Task Breakdown (Symphony) 🟡
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
CHECK: Có Symphony tasks liên kết feature này?
|
|
150
|
+
→ symphony_available_tasks → filter by feature keyword/tag
|
|
151
|
+
|
|
152
|
+
PASS condition: ≥1 task tồn tại cho feature này
|
|
153
|
+
|
|
154
|
+
FAIL action:
|
|
155
|
+
→ Đọc design doc từ Gate 2
|
|
156
|
+
→ Auto-generate 3-8 micro-tasks
|
|
157
|
+
→ Tạo Symphony tasks (symphony_create_task cho mỗi task)
|
|
158
|
+
→ Present danh sách cho user confirm
|
|
159
|
+
→ Sau khi confirm → Proceed Gate 4
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Gate 4: Execution 🟢
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
CHECK: Có ticket đang In Progress?
|
|
166
|
+
→ symphony_available_tasks(filter="in_progress")
|
|
167
|
+
|
|
168
|
+
🔍 SEARCH BEFORE BUILDING (BẮT BUỘC trước khi viết code mới):
|
|
169
|
+
Layer 1 — Tried-and-True:
|
|
170
|
+
→ nmem_recall: Tìm similar problems đã giải quyết trong brain
|
|
171
|
+
→ grep_search: Tìm existing utils/patterns trong codebase
|
|
172
|
+
Layer 2 — New-and-Popular:
|
|
173
|
+
→ Tìm thư viện/SDK chuẩn ngành cho problem này
|
|
174
|
+
→ Ưu tiên well-maintained, community-backed solutions
|
|
175
|
+
Layer 3 — First-Principles:
|
|
176
|
+
→ CHỈ build from scratch khi Layer 1+2 không có solution phù hợp
|
|
177
|
+
→ Ghi lý do tại sao existing solutions không đáp ứng
|
|
178
|
+
|
|
179
|
+
⚠️ KHÔNG được skip layers! Log kết quả search vào progress report.
|
|
180
|
+
|
|
181
|
+
ACTION:
|
|
182
|
+
→ Nếu chưa có → Claim task tiếp theo: symphony_claim_task
|
|
183
|
+
→ Code THEO TICKET, THEO DESIGN DOC, THEO search results
|
|
184
|
+
→ Nếu phát hiện cần sửa schema khác design → ⛔ DỪNG:
|
|
185
|
+
"Schema change ngoài approved design detected.
|
|
186
|
+
Quay lại Gate 2 để cập nhật design doc."
|
|
187
|
+
→ Complete ticket → symphony_complete_task
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Gate 5: Verification 🔵
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
ACTION: Auto-trigger sau mỗi Gate 4 completion
|
|
194
|
+
→ verification-gate skill (evidence before claims)
|
|
195
|
+
→ Boil-the-Lake checklist (completeness check)
|
|
196
|
+
→ code-review skill (nếu task phức tạp)
|
|
197
|
+
→ Đối chiếu: code thực tế vs design doc
|
|
198
|
+
→ OK → Task done → Auto-Next (TP4 in symphony-enforcer)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## 🔀 STEP 3: Slash Command Detection (Giữ lại)
|
|
204
|
+
|
|
205
|
+
Nếu user dùng slash command rõ ràng → Load workflow file trực tiếp, SKIP triage.
|
|
12
206
|
|
|
13
|
-
### 1. Slash Command Detection
|
|
14
207
|
```
|
|
15
208
|
User input starts with `/` → Load workflow file directly
|
|
16
209
|
/plan → workflows/lifecycle/plan.md
|
|
17
210
|
/code → workflows/lifecycle/code.md
|
|
18
211
|
/debug → workflows/lifecycle/debug.md
|
|
19
|
-
|
|
212
|
+
/brainstorm → brainstorm-agent skill
|
|
213
|
+
...etc (see GEMINI.md)
|
|
20
214
|
```
|
|
21
215
|
|
|
22
|
-
|
|
216
|
+
> **Note:** Slash commands bypass triage vì user ĐÃ BIẾT mình cần gì.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 🧠 STEP 4: Intent Detection (Fallback)
|
|
221
|
+
|
|
222
|
+
Nếu KHÔNG phải slash command VÀ triage chưa rõ:
|
|
223
|
+
|
|
23
224
|
```yaml
|
|
24
225
|
code_intent:
|
|
25
|
-
keywords: ["implement", "build", "create", "add", "code", "fix", "viết", "tạo"]
|
|
26
|
-
action:
|
|
226
|
+
keywords: ["implement", "build", "create", "add", "code", "fix", "viết", "tạo", "làm"]
|
|
227
|
+
action: Run triage → route theo complexity
|
|
27
228
|
|
|
28
229
|
debug_intent:
|
|
29
|
-
keywords: ["error", "bug", "crash", "fix", "lỗi", "sửa", "fail"]
|
|
30
|
-
action:
|
|
230
|
+
keywords: ["error", "bug", "crash", "fix", "lỗi", "sửa", "fail", "broken"]
|
|
231
|
+
action: systematic-debugging skill (bypass spec gates — debugging is reactive)
|
|
31
232
|
|
|
32
233
|
plan_intent:
|
|
33
234
|
keywords: ["plan", "design", "architect", "how to", "strategy", "thiết kế"]
|
|
34
|
-
action: Suggest
|
|
235
|
+
action: Suggest Gate 1-2 flow
|
|
236
|
+
|
|
237
|
+
brainstorm_intent:
|
|
238
|
+
keywords: ["brainstorm", "ý tưởng", "idea", "nên làm gì", "what should"]
|
|
239
|
+
action: brainstorm-agent skill
|
|
35
240
|
|
|
36
241
|
context_intent:
|
|
37
242
|
keywords: ["remember", "save", "continue", "where was I", "nhớ", "tiếp"]
|
|
38
|
-
action: Suggest
|
|
243
|
+
action: Suggest /recap or /save-brain
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## 🗣️ Communication Style
|
|
249
|
+
|
|
250
|
+
Orchestrator KHÔNG nói giọng máy móc. Dùng giọng đồng nghiệp senior:
|
|
39
251
|
|
|
40
|
-
ads_intent:
|
|
41
|
-
keywords: ["ads", "campaign", "CPI", "ROAS", "quảng cáo"]
|
|
42
|
-
action: Suggest `/ads-audit` or `/adsExpert`
|
|
43
252
|
```
|
|
253
|
+
❌ "ERROR: Gate 1 not satisfied. Spec document missing."
|
|
254
|
+
✅ "Ý tưởng rất hay! Kinh nghiệm cho thấy nếu không chốt yêu cầu trước,
|
|
255
|
+
sau sửa cực lắm. Để tôi hỏi vài câu rồi mình chốt spec nhé?"
|
|
44
256
|
|
|
45
|
-
|
|
257
|
+
❌ "Gate 2 failed. Architecture document required."
|
|
258
|
+
✅ "Đã hiểu yêu cầu rồi. Giờ để tôi phác thảo cấu trúc database
|
|
259
|
+
cho anh xem trước — tránh kiểu vừa làm vừa đập đi xây lại."
|
|
260
|
+
|
|
261
|
+
❌ "Execution blocked. No Symphony task found."
|
|
262
|
+
✅ "Design ngon rồi! Giờ tôi bẻ ra thành 5 task nhỏ trên Symphony
|
|
263
|
+
để track tiến độ nhé."
|
|
46
264
|
```
|
|
47
|
-
|
|
48
|
-
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## 🚫 Anti-Patterns
|
|
269
|
+
|
|
270
|
+
```yaml
|
|
271
|
+
never_do:
|
|
272
|
+
- Cho phép code COMPLEX task mà chưa qua Gate 1-2
|
|
273
|
+
- Tự ý thêm cột DB ngoài approved design
|
|
274
|
+
- Hỏi "Bạn muốn chạy workflow nào?" — AI phải TỰ QUYẾT
|
|
275
|
+
- Tạo Symphony tickets trước khi có design doc (Gate 3 cần Gate 2)
|
|
276
|
+
- Force user qua 5 Gates cho trivial tasks
|
|
277
|
+
- Code mới mà chưa search existing solution (Search Before Building)
|
|
278
|
+
- Đồng ý approach có vấn đề mà không push back (Anti-sycophancy)
|
|
279
|
+
- Skip edge cases / error handling vì "trivial" (Boil the Lake)
|
|
280
|
+
|
|
281
|
+
always_do:
|
|
282
|
+
- Hiển thị triage result trước mọi action
|
|
283
|
+
- Thông báo đang ở Gate nào khi chặn
|
|
284
|
+
- Giữ giọng thân thiện, giải thích LÝ DO chặn
|
|
285
|
+
- Cho phép user override gate: "skip gates" hoặc "bỏ qua"
|
|
286
|
+
- Re-check gates sau mỗi lần user provide input
|
|
287
|
+
- Search NeuralMemory + codebase TRƯỚC khi code mới
|
|
288
|
+
- Report DONE_WITH_CONCERNS nếu có caveats (Completion Status)
|
|
289
|
+
- Escalate sau 3 failed attempts (3-Strike Rule)
|
|
49
290
|
```
|
|
50
291
|
|
|
51
|
-
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## 🔗 Skill Relationships
|
|
295
|
+
|
|
52
296
|
```
|
|
53
|
-
|
|
54
|
-
|
|
297
|
+
DELEGATES TO:
|
|
298
|
+
Gate 1 → brainstorm-agent (phỏng vấn → BRIEF.md)
|
|
299
|
+
Gate 2 → spec-gate (thiết kế DB/API → design doc)
|
|
300
|
+
Gate 3 → symphony-enforcer (tạo + track tasks)
|
|
301
|
+
Gate 4 → relevant coding workflow (/code, /codeExpert)
|
|
302
|
+
Gate 5 → verification-gate + code-review
|
|
303
|
+
|
|
304
|
+
WORKS WITH:
|
|
305
|
+
nm-memory-sync (đọc context từ NeuralMemory)
|
|
306
|
+
awf-session-restore (restore state)
|
|
307
|
+
symphony-orchestrator (đảm bảo Symphony server running)
|
|
308
|
+
|
|
309
|
+
DOES NOT:
|
|
310
|
+
Execute code trực tiếp (delegates to workflows)
|
|
311
|
+
Modify files (chỉ route + enforce gates)
|
|
55
312
|
```
|
|
56
313
|
|
|
57
|
-
|
|
58
|
-
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## 🧩 Edge Cases
|
|
317
|
+
|
|
318
|
+
| Tình huống | Xử lý |
|
|
319
|
+
|-----------|--------|
|
|
320
|
+
| User nói "skip gates" / "bỏ qua" | Cho phép bypass, ghi cảnh báo |
|
|
321
|
+
| Feature đã có partial spec | Gate 1 pass, check Gate 2 |
|
|
322
|
+
| Debug request | Bypass spec gates — debugging is reactive |
|
|
323
|
+
| User follow-up nhỏ sau feature done | Re-triage — thường TRIVIAL |
|
|
324
|
+
| Multiple features cùng lúc | Triage TỪNG feature riêng |
|
|
325
|
+
| Spec tồn tại nhưng outdated | Cảnh báo "Spec cũ, cần update?" |
|
|
326
|
+
| Project chưa có docs/ folder | Tạo folder structure tự động |
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
*orchestrator v2.0 — Autonomous State Machine Gatekeeper for AWKit*
|