@leejungkiin/awkit 1.1.6 → 1.1.9

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 (84) hide show
  1. package/README.md +51 -1
  2. package/bin/awk.js +2 -2
  3. package/core/GEMINI.md +45 -7
  4. package/package.json +8 -5
  5. package/skill-packs/neural-memory/skills/nm-memory-sync/SKILL.md +14 -1
  6. package/skills/ab-test-store-listing/SKILL.md +220 -0
  7. package/skills/android-aso/SKILL.md +197 -0
  8. package/skills/app-analytics/SKILL.md +210 -0
  9. package/skills/app-clips/SKILL.md +163 -0
  10. package/skills/app-icon-optimization/SKILL.md +170 -0
  11. package/skills/app-launch/SKILL.md +153 -0
  12. package/skills/app-marketing-context/SKILL.md +129 -0
  13. package/skills/app-store-featured/SKILL.md +213 -0
  14. package/skills/apple-search-ads/SKILL.md +205 -0
  15. package/skills/asc-metrics/SKILL.md +157 -0
  16. package/skills/aso-audit/SKILL.md +179 -0
  17. package/skills/competitor-analysis/SKILL.md +163 -0
  18. package/skills/competitor-tracking/SKILL.md +185 -0
  19. package/skills/crash-analytics/SKILL.md +181 -0
  20. package/skills/gitnexus-intelligence/SKILL.md +224 -0
  21. package/skills/in-app-events/SKILL.md +176 -0
  22. package/skills/keyword-research/SKILL.md +141 -0
  23. package/skills/localization/SKILL.md +165 -0
  24. package/skills/market-movers/SKILL.md +137 -0
  25. package/skills/market-pulse/SKILL.md +170 -0
  26. package/skills/metadata-optimization/SKILL.md +170 -0
  27. package/skills/monetization-strategy/SKILL.md +175 -0
  28. package/skills/onboarding-optimization/SKILL.md +194 -0
  29. package/skills/orchestrator/SKILL.md +306 -25
  30. package/skills/press-and-pr/SKILL.md +204 -0
  31. package/skills/rating-prompt-strategy/SKILL.md +184 -0
  32. package/skills/retention-optimization/SKILL.md +165 -0
  33. package/skills/review-management/SKILL.md +154 -0
  34. package/skills/screenshot-optimization/SKILL.md +167 -0
  35. package/skills/seasonal-aso/SKILL.md +141 -0
  36. package/skills/spec-gate/SKILL.md +312 -0
  37. package/skills/subscription-lifecycle/SKILL.md +206 -0
  38. package/skills/swiftui-pro/references/design.md +44 -0
  39. package/skills/symphony-enforcer/SKILL.md +92 -11
  40. package/skills/symphony-orchestrator/SKILL.md +9 -7
  41. package/skills/systematic-debugging/SKILL.md +32 -7
  42. package/skills/ua-campaign/SKILL.md +207 -0
  43. package/skills/verification-gate/SKILL.md +23 -2
  44. package/workflows/gitnexus.md +123 -0
  45. package/symphony/LICENSE +0 -21
  46. package/symphony/README.md +0 -178
  47. package/symphony/app/api/agents/route.js +0 -152
  48. package/symphony/app/api/events/route.js +0 -22
  49. package/symphony/app/api/knowledge/route.js +0 -253
  50. package/symphony/app/api/locks/route.js +0 -29
  51. package/symphony/app/api/notes/route.js +0 -125
  52. package/symphony/app/api/preflight/route.js +0 -23
  53. package/symphony/app/api/projects/route.js +0 -116
  54. package/symphony/app/api/roles/route.js +0 -134
  55. package/symphony/app/api/skills/route.js +0 -82
  56. package/symphony/app/api/status/route.js +0 -18
  57. package/symphony/app/api/tasks/route.js +0 -157
  58. package/symphony/app/api/workflows/route.js +0 -61
  59. package/symphony/app/api/workspaces/route.js +0 -15
  60. package/symphony/app/globals.css +0 -2605
  61. package/symphony/app/layout.js +0 -20
  62. package/symphony/app/page.js +0 -2122
  63. package/symphony/cli/index.js +0 -1060
  64. package/symphony/core/agent-manager.js +0 -357
  65. package/symphony/core/context-bus.js +0 -100
  66. package/symphony/core/db.js +0 -223
  67. package/symphony/core/file-lock-manager.js +0 -154
  68. package/symphony/core/merge-pipeline.js +0 -234
  69. package/symphony/core/orchestrator.js +0 -236
  70. package/symphony/core/task-manager.js +0 -335
  71. package/symphony/core/workspace-manager.js +0 -168
  72. package/symphony/jsconfig.json +0 -7
  73. package/symphony/lib/core.mjs +0 -1034
  74. package/symphony/mcp/index.js +0 -29
  75. package/symphony/mcp/server.js +0 -110
  76. package/symphony/mcp/tools/context.js +0 -80
  77. package/symphony/mcp/tools/locks.js +0 -99
  78. package/symphony/mcp/tools/status.js +0 -82
  79. package/symphony/mcp/tools/tasks.js +0 -216
  80. package/symphony/mcp/tools/workspace.js +0 -143
  81. package/symphony/next.config.mjs +0 -7
  82. package/symphony/package.json +0 -53
  83. package/symphony/scripts/postinstall.js +0 -49
  84. package/symphony/symphony.config.js +0 -41
@@ -29,3 +29,47 @@ Prefer to place standard fonts, sizes, colors, stack spacing, padding, rounding,
29
29
  - Avoid hard-coded values for padding and stack spacing unless specifically requested.
30
30
  - Avoid UIKit colors (`UIColor`) in SwiftUI code; use SwiftUI `Color` or asset catalog colors.
31
31
  - The font size `.caption2` is extremely small, and is generally best avoided. Even the font size `.caption` is on the small side, and should be used carefully.
32
+
33
+
34
+ ## Dark Mode Color Safety Rules
35
+
36
+ These rules prevent common dark mode bugs that are invisible in light mode development.
37
+
38
+ ### 1. Never use hardcoded `Color.white` or `Color.black` for backgrounds or fills
39
+ - **Bad**: `.fill(Color.white)`, `.background(Color.black)`
40
+ - **Good**: `.fill(ColorPalette.darkCard)`, `.background(ColorPalette.backgroundPrimary)`
41
+ - **Exception**: White/black on a NON-adaptive surface (e.g., white icon on a camera viewfinder that is always dark, or text on a green gradient button where the gradient is the same in both modes).
42
+
43
+ ### 2. Never pair `.foregroundColor(.white)` with an adaptive fill
44
+ - If a button uses an adaptive fill like `ColorPalette.textPrimary` (which flips between dark/light), the text MUST also use an adaptive color that provides contrast in BOTH modes.
45
+ - **Bad**: `.fill(ColorPalette.textPrimary)` + `.foregroundColor(.white)` — in dark mode, textPrimary ≈ #EDEDED and .white = #FFFFFF → invisible text!
46
+ - **Good**: `.fill(ColorPalette.textPrimary)` + `.foregroundColor(ColorPalette.backgroundPrimary)` — backgroundPrimary is always the opposite of textPrimary.
47
+ - **Rule of thumb**: If fill is adaptive, text color MUST be its inverse adaptive token.
48
+
49
+ ### 3. Static background images (PNG/JPG) don't adapt to dark mode
50
+ - Background images with light themes (e.g., food illustrations on white/cream) will always render light, breaking dark mode.
51
+ - **Fix options**:
52
+ - Provide dark variants in the Asset catalog and use `@Environment(\.colorScheme)` to switch.
53
+ - Reduce opacity in dark mode: `.opacity(colorScheme == .dark ? 0.08 : 1.0)`.
54
+ - Apply a dark overlay or color multiply blend.
55
+ - **Exception**: Screenshot/mockup images displayed inside a dark phone frame (the frame provides context).
56
+
57
+ ### 4. Always verify contrast between text and its immediate background
58
+ - When reading code, mentally resolve what every color token becomes in BOTH modes.
59
+ - Common trap: Card background = `#272727` (dark gray in dark mode), button fill = `#EDEDED` (light in dark mode), text on button = `.white` → barely visible.
60
+ - **Paired tokens for high contrast**:
61
+ - Fill: `textPrimary` ↔ Text: `backgroundPrimary`
62
+ - Fill: `darkCard` ↔ Text: `textPrimary`
63
+ - Fill: `primaryGreen` ↔ Text: `.white` (green is always green)
64
+
65
+ ### 5. Shadow colors must be adaptive
66
+ - **Bad**: `.shadow(color: Color.black.opacity(0.1), ...)`
67
+ - **Good**: `.shadow(color: ColorPalette.shadowLight, ...)` or `.shadow(color: ColorPalette.textPrimary.opacity(0.08), ...)`
68
+ - In dark mode, black shadows on dark backgrounds are invisible; use lighter shadow tokens or skip shadows entirely.
69
+
70
+ ### 6. Quick dark mode audit checklist
71
+ When writing or reviewing any SwiftUI view:
72
+ 1. `grep -n 'Color\.white\|Color\.black\|\.white\b' FileName.swift` — find all hardcoded colors.
73
+ 2. For each hit, ask: "Does this element sit on an adaptive background?" If yes → replace with adaptive token.
74
+ 3. Check all `Image("asset_name")` — are any light-themed images used as backgrounds? If yes → add dark mode handling.
75
+ 4. For every button: verify fill color + text color provide 4.5:1 contrast ratio in BOTH modes.
@@ -4,10 +4,10 @@ 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.1: Pre-Plan Gate, Auto-Lifecycle, Auto-Next, Atomic Git Commits.
7
+ v3.3: Completion Status Protocol, Search-Before-Building, Boil-the-Lake.
8
8
  metadata:
9
9
  stage: core
10
- version: "3.1"
10
+ version: "3.3"
11
11
  replaces: "v2.0"
12
12
  requires: symphony-orchestrator
13
13
  tags: [symphony, enforcement, checkpoint, task-lifecycle, core, spec-first, auto-next]
@@ -24,14 +24,16 @@ invocation-type: auto
24
24
  priority: 1
25
25
  ---
26
26
 
27
- # Symphony Enforcer v3.1Spec-First + Auto-Lifecycle + Auto-Next + Atomic Commits
27
+ # Symphony Enforcer v3.3Completion Status Protocol + Gstack Principles
28
28
 
29
29
  > **Purpose:** Đảm bảo AI KHÔNG BAO GIỜ quên cập nhật Symphony.
30
- > **Key Changes v3.1:**
30
+ > **Key Changes v3.3:**
31
+ > - **Completion Status Protocol**: 4-status (DONE/DONE_WITH_CONCERNS/BLOCKED/NEEDS_CONTEXT)
32
+ > - **Design Compliance (TP1.5)**: Đối chiếu schema changes vs approved design doc
31
33
  > - **Pre-Plan Gate**: Đọc spec trước khi plan, hỏi user về constraints
32
34
  > - **Auto-Lifecycle**: Liên kết task_boundary ↔ Symphony tự động
33
35
  > - **Auto-Next**: BẮT BUỘC gợi ý next steps sau mỗi task done
34
- > - **Atomic Git Commits**: Tự động commit sau mỗi task done (NEW v3.1)
36
+ > - **Atomic Git Commits**: Tự động commit sau mỗi task done
35
37
  > **Principle:** AI tự detect completion — user KHÔNG CẦN nói "xong".
36
38
 
37
39
  ---
@@ -168,7 +170,48 @@ symphony_report_progress(
168
170
 
169
171
  ---
170
172
 
171
- ### TP2: Task CompleteAuto-detect
173
+ ### TP1.5: Design Compliance Check (NEW v3.2 Gate 4 Enforcement)
174
+
175
+ **Khi nào:** Mỗi khi AI sửa file liên quan đến DB/Model/Schema trong EXECUTION mode.
176
+
177
+ **Trigger signals:**
178
+ ```
179
+ File patterns:
180
+ - **/models/**, **/entities/**, **/schemas/**
181
+ - **Migration*, **Schema*, **Model*
182
+ - *.entity.*, *.model.*, *.schema.*
183
+ - Database.swift, AppDatabase.swift, schema.prisma, etc.
184
+ ```
185
+
186
+ **Action:**
187
+ ```
188
+ 1. Kiểm tra: docs/architecture/<feature>_design.md tồn tại?
189
+ → KHÔNG → ⚠️ Warning: "Đang sửa model file nhưng chưa có approved design.
190
+ Recommend chạy spec-gate trước."
191
+ → Nếu COMPLEX task → ⛔ DỪNG, enforce Gate 2
192
+ → Nếu TRIVIAL/MODERATE → Warning only, tiếp tục
193
+
194
+ 2. Đối chiếu thay đổi vs approved design:
195
+ → Thêm field KHÔNG có trong design? → ⛔ DỪNG
196
+ → Đổi type khác design? → ⛔ DỪNG
197
+ → Xóa field trong design? → ⛔ DỪNG
198
+ → Thêm field CÓ trong design? → ✅ OK
199
+
200
+ 3. Khi DỪNG:
201
+ → Thông báo: "Schema change ngoài approved design detected.
202
+ [field_name] không có trong docs/architecture/<feature>_design.md.
203
+ Quay lại Gate 2 để update design trước nhé."
204
+ → Kích hoạt spec-gate skill để update design doc
205
+ → Sau khi re-approve → tiếp tục code
206
+ ```
207
+
208
+ **Enforcement:**
209
+ - ❌ KHÔNG tự ý thêm cột/bảng ngoài approved design cho COMPLEX tasks
210
+ - ✅ NÊN ghi lại mọi deviation attempt vào NeuralMemory cho future reference
211
+
212
+ ---
213
+
214
+ ### TP2: Task Complete — Completion Status Protocol
172
215
 
173
216
  **Khi nào:** AI detect ≥2/4 completion signals:
174
217
 
@@ -179,7 +222,44 @@ Signal 3: Tất cả checklist items trong task.md đã [x]
179
222
  Signal 4: Verification pass (tests OK, build OK)
180
223
  ```
181
224
 
182
- **Action:**
225
+ **Completion Status Protocol (4 statuses):**
226
+
227
+ ```
228
+ DONE:
229
+ Điều kiện: Verification pass, không caveats.
230
+ Action: symphony_complete_task với evidence.
231
+ Format: "✅ DONE — {summary}. Build: ✅. Tests: ✅ N/N."
232
+
233
+ DONE_WITH_CONCERNS:
234
+ Điều kiện: Code hoạt động nhưng có caveats/risks cần biết.
235
+ Action: Complete task NHƯNG ghi rõ concerns.
236
+ Format: "⚠️ DONE_WITH_CONCERNS — {summary}.
237
+ Concerns: [list cụ thể]
238
+ Risk: [mức độ ảnh hưởng]
239
+ Recommendation: [đề xuất xử lý]"
240
+ Ví dụ: "Feature works nhưng chưa handle offline mode."
241
+ Ví dụ: "API call thành công nhưng chưa có retry logic."
242
+
243
+ BLOCKED:
244
+ Điều kiện: Không thể tiếp tục vì external dependency/blocker.
245
+ Action: KHÔNG complete task. Report + list attempts.
246
+ Format: "🚫 BLOCKED — {reason}.
247
+ Attempted: [list things đã thử]
248
+ Needs: [what's needed to unblock]"
249
+ Ví dụ: "API endpoint return 500, đã retry 3 lần."
250
+
251
+ NEEDS_CONTEXT:
252
+ Điều kiện: Thiếu thông tin từ user để tiếp tục.
253
+ Action: KHÔNG complete task. Hỏi user cụ thể.
254
+ Format: "❓ NEEDS_CONTEXT — {what's missing}.
255
+ Question: [câu hỏi cụ thể]
256
+ Options: [list options nếu có]"
257
+ Ví dụ: "Cần user clarify: offline-first hay online-only?"
258
+ ```
259
+
260
+ ⛔ **KHÔNG BAO GIỜ report DONE nếu thực tế là DONE_WITH_CONCERNS hoặc BLOCKED.**
261
+
262
+ **Action (cho DONE status):**
183
263
  ```
184
264
  0. ⚡ VERIFICATION GATE (BẮT BUỘC — Iron Law):
185
265
  - IDENTIFY: What command proves this task is done?
@@ -192,11 +272,12 @@ Signal 4: Verification pass (tests OK, build OK)
192
272
 
193
273
  1. symphony_complete_task(
194
274
  task_id=current_task,
195
- summary="mô tả ngắn + VERIFICATION EVIDENCE"
196
- // ✅ "Implemented X. Build: ✅ exit 0. Tests: ✅ 47/47. Lint: ✅ 0 errors."
197
- // "Implemented X" (không evidence)
275
+ summary="mô tả ngắn + STATUS + VERIFICATION EVIDENCE"
276
+ // ✅ "DONE — Implemented X. Build: ✅ exit 0. Tests: ✅ 47/47."
277
+ // "DONE_WITH_CONCERNS — Implemented X. Build: ✅. Concerns: no offline support."
278
+ // ❌ "Implemented X" (không status, không evidence)
198
279
  )
199
- 2. Hiển thị: "✅ SYM #sym-XYZ — Done"
280
+ 2. Hiển thị: "✅ SYM #sym-XYZ — {STATUS}"
200
281
  3. → TRIGGER TP2.5 (Atomic Git Commit)
201
282
  4. → TRIGGER TP4 (Auto-Next) NGAY LẬP TỨC
202
283
  ```
@@ -8,7 +8,7 @@ metadata:
8
8
  stage: core
9
9
  version: "3.0"
10
10
  replaces: null
11
- requires: awkit-symphony (npm i -g 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:
@@ -50,13 +50,12 @@ QUAN TRỌNG:
50
50
  ### Bước 1: Install Global
51
51
 
52
52
  ```bash
53
- cd ~/Dev/NodeJS/main-awf/symphony
54
- npm link
53
+ npm i -g @leejungkiin/awkit-symphony
55
54
  ```
56
55
 
57
- > Hoặc khi publish npm:
56
+ > Dev mode (từ source):
58
57
  > ```bash
59
- > npm i -g awkit-symphony
58
+ > cd ~/Dev/NodeJS/main-awf/symphony && npm link
60
59
  > ```
61
60
 
62
61
  ### Bước 2: Verify
@@ -127,9 +126,12 @@ symphony preflight --json # JSON cho AI parsing
127
126
  → symphony start -p 3100 &
128
127
  → Đợi 3-5 giây
129
128
  → Retry preflight
130
- 3. Nếu vẫn FAIL:
129
+ 3. Nếu vẫn FAIL (command not found):
130
+ → AI tự chạy: npm i -g @leejungkiin/awkit-symphony
131
+ → Retry symphony start
132
+ 4. Nếu vẫn FAIL:
131
133
  → "⚠️ Symphony không khởi động được"
132
- → Hướng dẫn: cd ~/Dev/NodeJS/main-awf/symphony && npm link && symphony start
134
+ → Hướng dẫn user cài thủ công
133
135
  ```
134
136
 
135
137
  ---
@@ -98,26 +98,51 @@ You MUST complete each phase before proceeding to the next.
98
98
  2. **Implement Single Fix** — ONE change at a time. No "while I'm here" improvements
99
99
  3. **Verify Fix** — Test passes? No other tests broken? Issue actually resolved?
100
100
 
101
- ## The 3-Fix Rule
101
+ ## The 3-Strike Escalation Protocol
102
102
 
103
103
  ```
104
- If 3+ fixes have FAILED → STOP
104
+ If 3+ fixes have FAILED → STOP. ESCALATE. NO EXCEPTIONS.
105
105
 
106
106
  This is NOT a failed hypothesis.
107
107
  This is a WRONG ARCHITECTURE.
108
108
  ```
109
109
 
110
- **After 3 failed fixes:**
111
- - Is this pattern fundamentally sound?
112
- - Are we sticking with it through sheer inertia?
113
- - Should we refactor architecture vs. continue fixing symptoms?
114
- - **DISCUSS with user before attempting more fixes**
110
+ **Escalation Protocol (BẮT BUỘC sau 3 failed attempts):**
111
+
112
+ ```
113
+ 1. STOP Không thử fix thứ 4.
114
+ 2. REPORT full context cho user:
115
+ 🚫 ESCALATION — 3 fix attempts failed
116
+ ─────────────────────────────────────
117
+ Attempt 1: {what tried} → {why failed}
118
+ Attempt 2: {what tried} → {why failed}
119
+ Attempt 3: {what tried} → {why failed}
120
+
121
+ Root Cause Hypothesis: {current best guess}
122
+ Architectural Concern: {pattern detected}
123
+
124
+ Recommended: [refactor approach | seek expert | alternative solution]
125
+ ─────────────────────────────────────
126
+ 3. WAIT for user decision — do NOT proceed autonomously.
127
+ ```
115
128
 
116
129
  **Pattern indicating architectural problem:**
117
130
  - Each fix reveals new shared state/coupling
118
131
  - Fixes require "massive refactoring" to implement
119
132
  - Each fix creates new symptoms elsewhere
120
133
 
134
+ ## Scope Freeze During Debug
135
+
136
+ ```
137
+ Khi đang debug một issue:
138
+ - KHÔNG sửa bug khác "tiện tay"
139
+ - KHÔNG refactor code xung quanh
140
+ - KHÔNG thêm feature "nhân tiện"
141
+ - CHỈ tập trung vào root cause hiện tại
142
+
143
+ Violation → revert side changes, focus on current scope
144
+ ```
145
+
121
146
  ## Red Flags — STOP and Return to Phase 1
122
147
 
123
148
  If you catch yourself thinking:
@@ -0,0 +1,207 @@
1
+ ---
2
+ name: ua-campaign
3
+ description: When the user wants to plan or optimize paid user acquisition campaigns. Also use when the user mentions "Apple Search Ads", "user acquisition", "paid ads", "UA", "ad campaign", "install campaign", "Facebook ads for apps", "TikTok ads", or "cost per install". For organic growth, see aso-audit. For launch-specific UA, see app-launch.
4
+ metadata:
5
+ version: 1.0.0
6
+ ---
7
+
8
+ # User Acquisition Campaigns
9
+
10
+ You are an expert in mobile app user acquisition across all major ad platforms. Your goal is to help the user plan, launch, and optimize paid campaigns that drive profitable installs.
11
+
12
+ ## Initial Assessment
13
+
14
+ 1. Check for `app-marketing-context.md` — read it for context
15
+ 2. Ask for **monthly UA budget** (this determines channel strategy)
16
+ 3. Ask for **target CPI** (cost per install) or **target ROAS**
17
+ 4. Ask for **current LTV** (lifetime value per user)
18
+ 5. Ask for **target audience** (demographics, interests, behaviors)
19
+ 6. Ask for **target countries**
20
+ 7. Ask for **app category** (affects channel selection)
21
+
22
+ ## Channel Selection
23
+
24
+ ### Budget-Based Recommendations
25
+
26
+ | Monthly Budget | Recommended Channels |
27
+ |---------------|---------------------|
28
+ | < $1K | Apple Search Ads (Basic) only |
29
+ | $1K-$5K | Apple Search Ads (Advanced) + 1 social channel |
30
+ | $5K-$20K | ASA + Meta + Google UAC |
31
+ | $20K-$100K | ASA + Meta + Google + TikTok + testing new channels |
32
+ | $100K+ | All channels + programmatic + influencer |
33
+
34
+ ### Channel Comparison
35
+
36
+ | Channel | Avg CPI | Intent | Best For | Complexity |
37
+ |---------|---------|--------|----------|------------|
38
+ | **Apple Search Ads** | $1-3 | Very High | All iOS apps | Low |
39
+ | **Google UAC** | $0.5-2 | Medium | Android + broad reach | Medium |
40
+ | **Meta (FB/IG)** | $1-4 | Low-Medium | Consumer, social, e-commerce | High |
41
+ | **TikTok** | $0.5-3 | Low | Young demographics, games | Medium |
42
+ | **Snapchat** | $0.5-2 | Low | Gen Z, AR apps | Medium |
43
+ | **Twitter/X** | $2-5 | Low | News, tech, finance | Medium |
44
+ | **Reddit** | $1-3 | Medium | Niche communities | Low |
45
+
46
+ ## Apple Search Ads (Priority Channel)
47
+
48
+ ### Why Start Here
49
+ - Highest intent (user is actively searching)
50
+ - Best conversion rates (30-50% tap-to-install)
51
+ - Direct App Store integration
52
+ - Works for any budget
53
+
54
+ ### Campaign Structure
55
+
56
+ ```
57
+ Account
58
+ ├── Brand Campaign (exact match)
59
+ │ ├── [your app name]
60
+ │ └── [common misspellings]
61
+ ├── Category Campaign (broad + exact)
62
+ │ ├── [category terms]
63
+ │ └── [feature terms]
64
+ ├── Competitor Campaign (exact match)
65
+ │ ├── [competitor name 1]
66
+ │ └── [competitor name 2]
67
+ └── Discovery Campaign (Search Match)
68
+ └── Auto-targeting (find new keywords)
69
+ ```
70
+
71
+ ### Bidding Strategy
72
+
73
+ | Campaign Type | Bid Strategy | Target CPA |
74
+ |--------------|-------------|------------|
75
+ | Brand | Low bids, high volume | < $0.50 |
76
+ | Category | Medium bids | $1-3 |
77
+ | Competitor | Higher bids, lower volume | $2-5 |
78
+ | Discovery | Low bids, broad | $1-3 |
79
+
80
+ ### Optimization Checklist
81
+
82
+ - [ ] Add negative keywords from Discovery to prevent waste
83
+ - [ ] Move winning Discovery keywords to exact match campaigns
84
+ - [ ] Pause keywords with CPA > 2x target
85
+ - [ ] Increase bids on keywords with CPA < target
86
+ - [ ] Test Custom Product Pages for different keyword intents
87
+ - [ ] Review Search Match terms weekly
88
+ - [ ] Adjust bids by day of week and time
89
+
90
+ ## Meta (Facebook/Instagram) Campaigns
91
+
92
+ ### Campaign Structure
93
+
94
+ ```
95
+ Campaign: App Installs
96
+ ├── Ad Set 1: Lookalike (1%) of paying users
97
+ │ ├── Ad: Video (15s feature demo)
98
+ │ ├── Ad: Carousel (feature highlights)
99
+ │ └── Ad: Static (benefit headline)
100
+ ├── Ad Set 2: Interest-based targeting
101
+ │ ├── Ad: Video (problem/solution)
102
+ │ └── Ad: UGC-style testimonial
103
+ └── Ad Set 3: Broad targeting (let Meta optimize)
104
+ ├── Ad: Best performing from above
105
+ └── Ad: New creative test
106
+ ```
107
+
108
+ ### Creative Best Practices
109
+
110
+ **Video ads (highest performance):**
111
+ - Hook in first 3 seconds
112
+ - Show the app in action
113
+ - 15-30 seconds optimal
114
+ - Works without sound (captions)
115
+ - End with clear CTA and App Store badge
116
+
117
+ **Static ads:**
118
+ - Bold headline with key benefit
119
+ - App screenshot or mockup
120
+ - Social proof (rating, user count)
121
+ - Clear "Download Free" CTA
122
+
123
+ ### Audience Strategy
124
+
125
+ 1. **Seed:** Upload paying user emails → create Lookalike
126
+ 2. **Expand:** Lookalike 1% → 3% → 5% as you scale
127
+ 3. **Layer:** Interest targeting for specific segments
128
+ 4. **Broad:** Let Meta's algorithm find users (works at scale)
129
+
130
+ ## Google UAC (Universal App Campaigns)
131
+
132
+ ### Setup
133
+ - Provide 4 text ideas, 20 images, 5 videos
134
+ - Set target CPI or target CPA
135
+ - Google automatically creates and tests ad combinations
136
+ - Runs across Search, Display, YouTube, and Play Store
137
+
138
+ ### Optimization
139
+ - Focus on creative quality (Google does the targeting)
140
+ - Test different value propositions in text
141
+ - Provide diverse creative assets
142
+ - Set realistic CPA targets (start high, lower gradually)
143
+
144
+ ## Key Metrics & Optimization
145
+
146
+ ### Funnel Metrics
147
+
148
+ ```
149
+ Impressions → Taps → Installs → Activations → Purchases
150
+ CTR CVR CPI CPA ROAS
151
+ ```
152
+
153
+ | Metric | Formula | Target |
154
+ |--------|---------|--------|
155
+ | CTR | Taps / Impressions | > 5% (ASA), > 1% (social) |
156
+ | CVR | Installs / Taps | > 30% (ASA), > 10% (social) |
157
+ | CPI | Spend / Installs | < LTV / 3 |
158
+ | CPA | Spend / Purchases | < LTV |
159
+ | ROAS | Revenue / Spend | > 1.0 (break even), > 2.0 (good) |
160
+ | D7 ROAS | Day 7 Revenue / Spend | Predict long-term ROAS |
161
+
162
+ ### Optimization Cadence
163
+
164
+ | Frequency | Action |
165
+ |-----------|--------|
166
+ | Daily | Check spend pacing, pause overspending |
167
+ | Weekly | Review CPI/CPA by keyword/ad set, adjust bids |
168
+ | Bi-weekly | Refresh creative (ad fatigue after 2-3 weeks) |
169
+ | Monthly | Review channel mix, reallocate budget to winners |
170
+ | Quarterly | Strategic review, test new channels |
171
+
172
+ ## Output Format
173
+
174
+ ### UA Plan
175
+
176
+ ```
177
+ Monthly Budget: $[X]
178
+ Target CPI: $[X]
179
+ Target Monthly Installs: [N]
180
+
181
+ Channel Allocation:
182
+ - Apple Search Ads: [X]% ($[X])
183
+ - Meta: [X]% ($[X])
184
+ - Google UAC: [X]% ($[X])
185
+ - Testing: [X]% ($[X])
186
+
187
+ Week 1: [setup tasks]
188
+ Week 2: [launch tasks]
189
+ Week 3-4: [optimization tasks]
190
+ ```
191
+
192
+ ### Campaign Briefs
193
+
194
+ For each channel, provide:
195
+ - Campaign structure
196
+ - Targeting strategy
197
+ - Creative requirements
198
+ - Budget and bid recommendations
199
+ - KPI targets
200
+
201
+ ## Related Skills
202
+
203
+ - `app-launch` — UA strategy for launch
204
+ - `monetization-strategy` — LTV calculation for CPI targets
205
+ - `app-analytics` — Attribution and funnel tracking
206
+ - `competitor-analysis` — Competitive ad intelligence
207
+ - `ab-test-store-listing` — Improve organic conversion (lowers effective CPI)
@@ -121,10 +121,31 @@ When calling `symphony_complete_task`:
121
121
  ✅ symphony_complete_task(summary="Implemented feature X. Build: ✅ (exit 0). Tests: ✅ 47/47 pass. Lint: ✅ 0 errors.")
122
122
  ```
123
123
 
124
+ ## Boil-the-Lake Completeness Checklist
125
+
126
+ > **Principle:** AI's marginal cost is near zero. Ship completeness, not shortcuts.
127
+
128
+ Trước khi claim DONE, kiểm tra **mỗi item** dưới đây:
129
+
130
+ ```
131
+ ☐ Error handling: MỌI code path có proper error handling?
132
+ → Network errors, parsing errors, invalid input, timeouts
133
+ ☐ Edge cases: Đã handle empty states, nil/null, boundary values?
134
+ → Empty list, first item, last item, max size
135
+ ☐ Logging: Đủ log cho production debugging?
136
+ → Errors logged with context, key operations tracked
137
+ ☐ Cleanup: Resources released? Listeners removed? Timers cancelled?
138
+ ☐ Input validation: User input được validate trước khi process?
139
+ ☐ Concurrency: Thread-safe? Race conditions handled?
140
+ ☐ Backwards compatibility: Breaking changes documented?
141
+ ```
142
+
143
+ **Nếu thiếu bất kỳ item nào → report DONE_WITH_CONCERNS, không DONE.**
144
+
124
145
  ## The Bottom Line
125
146
 
126
- **No shortcuts for verification.**
147
+ **No shortcuts for verification. No shortcuts for completeness.**
127
148
 
128
- Run the command. Read the output. THEN claim the result.
149
+ Run the command. Read the output. Check the checklist. THEN claim the result.
129
150
 
130
151
  This is non-negotiable.
@@ -0,0 +1,123 @@
1
+ ---
2
+ description: 🔍 GitNexus Code Intelligence — Index, explore, và analyze codebase qua knowledge graph
3
+ ---
4
+
5
+ # /gitnexus Workflow
6
+
7
+ > GitNexus cung cấp code intelligence qua knowledge graph. Index codebase → query qua MCP tools.
8
+
9
+ ## Sub-commands
10
+
11
+ ### `/gitnexus init` — Index project hiện tại
12
+
13
+ // turbo
14
+ 1. Kiểm tra Node.js >= 18:
15
+ ```bash
16
+ node --version
17
+ ```
18
+
19
+ 2. Index project:
20
+ ```bash
21
+ npx -y gitnexus@latest analyze
22
+ ```
23
+
24
+ 3. Verify index:
25
+ ```bash
26
+ npx gitnexus status
27
+ ```
28
+
29
+ 4. (Optional) Generate embeddings cho semantic search tốt hơn:
30
+ ```bash
31
+ npx gitnexus analyze --embeddings
32
+ ```
33
+
34
+ ---
35
+
36
+ ### `/gitnexus status` — Kiểm tra index
37
+
38
+ // turbo
39
+ 1. Xem trạng thái index:
40
+ ```bash
41
+ npx gitnexus status
42
+ ```
43
+
44
+ 2. Nếu stale → suggest re-index:
45
+ ```bash
46
+ npx gitnexus analyze
47
+ ```
48
+
49
+ ---
50
+
51
+ ### `/gitnexus impact <symbol>` — Quick impact analysis
52
+
53
+ 1. Chạy impact analysis:
54
+ ```
55
+ gitnexus_impact({target: "<symbol>", direction: "upstream"})
56
+ ```
57
+
58
+ 2. Đọc processes bị ảnh hưởng:
59
+ ```
60
+ READ gitnexus://repo/{name}/processes
61
+ ```
62
+
63
+ 3. Report risk level cho user:
64
+ - d=1 → WILL BREAK (PHẢI update)
65
+ - d=2 → LIKELY AFFECTED (nên test)
66
+ - d=3 → MAY NEED TESTING
67
+
68
+ ---
69
+
70
+ ### `/gitnexus explore` — Architecture overview
71
+
72
+ 1. Đọc context overview:
73
+ ```
74
+ READ gitnexus://repo/{name}/context
75
+ ```
76
+
77
+ 2. Xem functional areas:
78
+ ```
79
+ READ gitnexus://repo/{name}/clusters
80
+ ```
81
+
82
+ 3. Liệt kê execution flows:
83
+ ```
84
+ READ gitnexus://repo/{name}/processes
85
+ ```
86
+
87
+ 4. Present tổng quan cho user:
88
+ - Số symbols, relationships
89
+ - Functional clusters
90
+ - Key execution flows
91
+
92
+ ---
93
+
94
+ ### `/gitnexus list` — Liệt kê repos đã index
95
+
96
+ // turbo
97
+ 1. Liệt kê tất cả repos:
98
+ ```bash
99
+ npx gitnexus list
100
+ ```
101
+
102
+ ---
103
+
104
+ ### `/gitnexus clean` — Xóa index
105
+
106
+ 1. Xóa index project hiện tại:
107
+ ```bash
108
+ npx gitnexus clean
109
+ ```
110
+
111
+ 2. Xóa tất cả indexes (cẩn thận!):
112
+ ```bash
113
+ npx gitnexus clean --all --force
114
+ ```
115
+
116
+ ---
117
+
118
+ ## Notes
119
+
120
+ - GitNexus lưu index trong `.gitnexus/` (đã gitignored)
121
+ - Registry toàn cục ở `~/.gitnexus/registry.json`
122
+ - Hỗ trợ 13 ngôn ngữ: TypeScript, JavaScript, Python, Java, Kotlin, C#, Go, Rust, PHP, Ruby, Swift, C, C++
123
+ - MCP server serve TẤT CẢ repos đã index (không cần config per-project)
package/symphony/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 AWKit
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.