@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
@@ -1,58 +1,339 @@
1
1
  ---
2
2
  name: orchestrator
3
- description: Intelligent dispatcher — analyzes context and delegates to the right skill or workflow
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 Skill
18
+ # Orchestrator v2.1 — Autonomous State Machine Gatekeeper
7
19
 
8
- ## Purpose
9
- Route user requests to the correct workflow or skill based on context analysis.
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
- ## Routing Logic
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 0 — Structural (GitNexus, CHỈ khi .gitnexus/ tồn tại):
170
+ → gitnexus_impact: Check blast radius của symbol cần sửa
171
+ → gitnexus_context: Xem 360° callers/callees trước khi code
172
+ → gitnexus_query: Tìm execution flows liên quan
173
+ Layer 1 — Tried-and-True:
174
+ → nmem_recall: Tìm similar problems đã giải quyết trong brain
175
+ → grep_search: Tìm existing utils/patterns trong codebase
176
+ Layer 2 — New-and-Popular:
177
+ → Tìm thư viện/SDK chuẩn ngành cho problem này
178
+ → Ưu tiên well-maintained, community-backed solutions
179
+ Layer 3 — First-Principles:
180
+ → CHỈ build from scratch khi Layer 1+2 không có solution phù hợp
181
+ → Ghi lý do tại sao existing solutions không đáp ứng
182
+
183
+ ⚠️ KHÔNG được skip layers! Log kết quả search vào progress report.
184
+
185
+ ACTION:
186
+ → Nếu chưa có → Claim task tiếp theo: symphony_claim_task
187
+ → Code THEO TICKET, THEO DESIGN DOC, THEO search results
188
+ → Nếu phát hiện cần sửa schema khác design → ⛔ DỪNG:
189
+ "Schema change ngoài approved design detected.
190
+ Quay lại Gate 2 để cập nhật design doc."
191
+ → Complete ticket → symphony_complete_task
192
+ ```
193
+
194
+ ### Gate 5: Verification 🔵
195
+
196
+ ```
197
+ ACTION: Auto-trigger sau mỗi Gate 4 completion
198
+ → verification-gate skill (evidence before claims)
199
+ → Boil-the-Lake checklist (completeness check)
200
+ → code-review skill (nếu task phức tạp)
201
+ → Đối chiếu: code thực tế vs design doc
202
+ → OK → Task done → Auto-Next (TP4 in symphony-enforcer)
203
+ ```
204
+
205
+ ---
206
+
207
+ ## 🔀 STEP 3: Slash Command Detection (Giữ lại)
208
+
209
+ Nếu user dùng slash command rõ ràng → Load workflow file trực tiếp, SKIP triage.
12
210
 
13
- ### 1. Slash Command Detection
14
211
  ```
15
212
  User input starts with `/` → Load workflow file directly
16
213
  /plan → workflows/lifecycle/plan.md
17
214
  /code → workflows/lifecycle/code.md
18
215
  /debug → workflows/lifecycle/debug.md
19
- ...etc (see GEMINI.md § 2)
216
+ /brainstorm brainstorm-agent skill
217
+ ...etc (see GEMINI.md)
20
218
  ```
21
219
 
22
- ### 2. Intent Detection (No slash command)
220
+ > **Note:** Slash commands bypass triage vì user ĐÃ BIẾT mình cần gì.
221
+
222
+ ---
223
+
224
+ ## 🧠 STEP 4: Intent Detection (Fallback)
225
+
226
+ Nếu KHÔNG phải slash command VÀ triage chưa rõ:
227
+
23
228
  ```yaml
24
229
  code_intent:
25
- keywords: ["implement", "build", "create", "add", "code", "fix", "viết", "tạo"]
26
- action: Suggest `/code` or `/codeExpert`
230
+ keywords: ["implement", "build", "create", "add", "code", "fix", "viết", "tạo", "làm"]
231
+ action: Run triage route theo complexity
27
232
 
28
233
  debug_intent:
29
- keywords: ["error", "bug", "crash", "fix", "lỗi", "sửa", "fail"]
30
- action: Suggest `/debug` or `/debugExpert`
234
+ keywords: ["error", "bug", "crash", "fix", "lỗi", "sửa", "fail", "broken"]
235
+ action: systematic-debugging skill (bypass spec gates — debugging is reactive)
31
236
 
32
237
  plan_intent:
33
238
  keywords: ["plan", "design", "architect", "how to", "strategy", "thiết kế"]
34
- action: Suggest `/plan` or `/planExpert`
239
+ action: Suggest Gate 1-2 flow
240
+
241
+ brainstorm_intent:
242
+ keywords: ["brainstorm", "ý tưởng", "idea", "nên làm gì", "what should"]
243
+ action: brainstorm-agent skill
35
244
 
36
245
  context_intent:
37
246
  keywords: ["remember", "save", "continue", "where was I", "nhớ", "tiếp"]
38
- action: Suggest `/recap` or `/save-brain`
247
+ action: Suggest /recap or /save-brain
39
248
 
40
- ads_intent:
41
- keywords: ["ads", "campaign", "CPI", "ROAS", "quảng cáo"]
42
- action: Suggest `/ads-audit` or `/adsExpert`
249
+ refactor_intent:
250
+ keywords: ["refactor", "rename", "extract", "split", "move", "restructure", "blast radius", "impact"]
251
+ action: gitnexus-intelligence skill (impact analysis + safe refactoring)
43
252
  ```
44
253
 
45
- ### 3. Skill Pack Check
254
+ ---
255
+
256
+ ## 🗣️ Communication Style
257
+
258
+ Orchestrator KHÔNG nói giọng máy móc. Dùng giọng đồng nghiệp senior:
259
+
260
+ ```
261
+ ❌ "ERROR: Gate 1 not satisfied. Spec document missing."
262
+ ✅ "Ý tưởng rất hay! Kinh nghiệm cho thấy nếu không chốt yêu cầu trước,
263
+ sau sửa cực lắm. Để tôi hỏi vài câu rồi mình chốt spec nhé?"
264
+
265
+ ❌ "Gate 2 failed. Architecture document required."
266
+ ✅ "Đã hiểu yêu cầu rồi. Giờ để tôi phác thảo cấu trúc database
267
+ cho anh xem trước — tránh kiểu vừa làm vừa đập đi xây lại."
268
+
269
+ ❌ "Execution blocked. No Symphony task found."
270
+ ✅ "Design ngon rồi! Giờ tôi bẻ ra thành 5 task nhỏ trên Symphony
271
+ để track tiến độ nhé."
46
272
  ```
47
- If user request involves iOS-specific → Check if mobile-ios pack enabled
48
- If not enabled → Suggest: "awf enable-pack mobile-ios"
273
+
274
+ ---
275
+
276
+ ## 🚫 Anti-Patterns
277
+
278
+ ```yaml
279
+ never_do:
280
+ - Cho phép code COMPLEX task mà chưa qua Gate 1-2
281
+ - Tự ý thêm cột DB ngoài approved design
282
+ - Hỏi "Bạn muốn chạy workflow nào?" — AI phải TỰ QUYẾT
283
+ - Tạo Symphony tickets trước khi có design doc (Gate 3 cần Gate 2)
284
+ - Force user qua 5 Gates cho trivial tasks
285
+ - Code mới mà chưa search existing solution (Search Before Building)
286
+ - Đồng ý approach có vấn đề mà không push back (Anti-sycophancy)
287
+ - Skip edge cases / error handling vì "trivial" (Boil the Lake)
288
+
289
+ always_do:
290
+ - Hiển thị triage result trước mọi action
291
+ - Thông báo đang ở Gate nào khi chặn
292
+ - Giữ giọng thân thiện, giải thích LÝ DO chặn
293
+ - Cho phép user override gate: "skip gates" hoặc "bỏ qua"
294
+ - Re-check gates sau mỗi lần user provide input
295
+ - Search NeuralMemory + codebase TRƯỚC khi code mới
296
+ - Report DONE_WITH_CONCERNS nếu có caveats (Completion Status)
297
+ - Escalate sau 3 failed attempts (3-Strike Rule)
49
298
  ```
50
299
 
51
- ### 4. Fallback
300
+ ---
301
+
302
+ ## 🔗 Skill Relationships
303
+
52
304
  ```
53
- No match → Ask clarifying question (max 2 times)
54
- Still unclearSuggest `/help`
305
+ DELEGATES TO:
306
+ Gate 1brainstorm-agent (phỏng vấn → BRIEF.md)
307
+ Gate 2 → spec-gate (thiết kế DB/API → design doc)
308
+ Gate 3 → symphony-enforcer (tạo + track tasks)
309
+ Gate 4 → relevant coding workflow (/code, /codeExpert)
310
+ Gate 5 → verification-gate + code-review
311
+
312
+ WORKS WITH:
313
+ nm-memory-sync (đọc context từ NeuralMemory)
314
+ awf-session-restore (restore state)
315
+ symphony-orchestrator (đảm bảo Symphony server running)
316
+ gitnexus-intelligence (architectural awareness trước khi code)
317
+
318
+ DOES NOT:
319
+ Execute code trực tiếp (delegates to workflows)
320
+ Modify files (chỉ route + enforce gates)
55
321
  ```
56
322
 
57
- ## Auto-Activation
58
- This skill is always active. It runs as the first layer before any other processing.
323
+ ---
324
+
325
+ ## 🧩 Edge Cases
326
+
327
+ | Tình huống | Xử lý |
328
+ |-----------|--------|
329
+ | User nói "skip gates" / "bỏ qua" | Cho phép bypass, ghi cảnh báo |
330
+ | Feature đã có partial spec | Gate 1 pass, check Gate 2 |
331
+ | Debug request | Bypass spec gates — debugging is reactive |
332
+ | User follow-up nhỏ sau feature done | Re-triage — thường TRIVIAL |
333
+ | Multiple features cùng lúc | Triage TỪNG feature riêng |
334
+ | Spec tồn tại nhưng outdated | Cảnh báo "Spec cũ, cần update?" |
335
+ | Project chưa có docs/ folder | Tạo folder structure tự động |
336
+
337
+ ---
338
+
339
+ *orchestrator v2.0 — Autonomous State Machine Gatekeeper for AWKit*
@@ -0,0 +1,204 @@
1
+ ---
2
+ name: press-and-pr
3
+ description: When the user wants to get press coverage, media mentions, or editorial features for their app — including writing press releases, pitching journalists, getting on "best apps" lists, or building an app press kit. Use when the user mentions "press", "PR", "media coverage", "TechCrunch", "journalist", "press release", "app press kit", "get featured in media", "editorial coverage", "review from a blogger", or "app launch announcement". For Apple editorial featuring, see app-store-featured. For launch strategy, see app-launch.
4
+ metadata:
5
+ version: 1.0.0
6
+ ---
7
+
8
+ # Press & PR for Apps
9
+
10
+ You help indie developers and app teams get genuine media coverage — which drives installs, backlinks, and App Store credibility.
11
+
12
+ ## Why Press Still Matters
13
+
14
+ - **Web referral** in App Store Connect directly tracks installs from press links
15
+ - **Backlinks** from high-authority sites (TechCrunch, The Verge) improve web presence
16
+ - **Social proof** — "As seen on…" on your product page improves conversion
17
+ - **Apple editorial** — press coverage increases editorial featuring consideration
18
+ - **Organic amplification** — articles get shared, creating discovery beyond the original publication
19
+
20
+ ## Target Media Tiers
21
+
22
+ ### Tier 1 — High impact, harder to get
23
+
24
+ | Publication | Focus | Notes |
25
+ |-------------|-------|-------|
26
+ | TechCrunch | Consumer tech, startups | Exclusives preferred |
27
+ | The Verge | Consumer tech | Curated; quality bar is high |
28
+ | Wired | Tech culture | Long-form, unique angle needed |
29
+ | Fast Company | Innovation, productivity | Strong business angle |
30
+ | 9to5Mac | iOS/macOS apps | App-specific, accessible |
31
+ | MacStories | iOS apps | Very accessible for indie devs |
32
+
33
+ ### Tier 2 — Accessible, meaningful reach
34
+
35
+ | Type | Examples |
36
+ |------|---------|
37
+ | App review blogs | AppAdvice, TouchArcade (games), AppShopper |
38
+ | Niche newsletters | App-specific verticals (health, productivity, finance newsletters) |
39
+ | YouTube channels | AppFind, MKBHD (for significant apps), niche channels |
40
+ | Podcasts | App podcast appearances, niche shows |
41
+
42
+ ### Tier 3 — Start here
43
+
44
+ | Type | Examples |
45
+ |------|---------|
46
+ | Reddit | r/iphone, r/androidapps, r/productivity (category-specific) |
47
+ | Product Hunt | Launch day visibility |
48
+ | Hacker News | Show HN post for technical/productivity apps |
49
+ | Indie hackers | For indie developer community coverage |
50
+
51
+ ## What Makes a Story
52
+
53
+ Press doesn't cover apps — they cover **stories**. Find your angle:
54
+
55
+ | Angle | Example |
56
+ |-------|---------|
57
+ | **Numbers** | "App hit 100K downloads in 7 days with no marketing" |
58
+ | **Problem solved** | "Solo dev built X because no existing tool did Y" |
59
+ | **Unique data** | "Our app analyzed 10M habit logs — here's what we learned" |
60
+ | **Category creation** | "We invented a new category of [type] app" |
61
+ | **David vs Goliath** | Indie beating a Big Tech competitor |
62
+ | **Timely** | Tied to a current news trend or cultural moment |
63
+ | **Human story** | Founder's compelling personal motivation |
64
+
65
+ **Test your angle:** Can you explain the story in 1 sentence that would make someone say "interesting"?
66
+
67
+ ## Press Kit
68
+
69
+ Create a `presskit/` folder on your website or a Notion page with:
70
+
71
+ ```
72
+ Press Kit Contents:
73
+ - [ ] App name, one-liner, category
74
+ - [ ] 3 founder photos (high-res, print-quality)
75
+ - [ ] App icon (1024×1024px, PNG)
76
+ - [ ] 5–10 screenshots (phone mockups, high-res)
77
+ - [ ] App preview video (optional but impactful)
78
+ - [ ] 3-sentence company/founder bio
79
+ - [ ] Key stats (downloads, ratings, notable users)
80
+ - [ ] Press quotes / prior coverage (if any)
81
+ - [ ] App Store link + website
82
+ - [ ] Press contact email
83
+ ```
84
+
85
+ Host at: `yoursite.com/press` or a publicly shared Notion/Google Drive link.
86
+
87
+ ## Press Release Structure
88
+
89
+ ```
90
+ FOR IMMEDIATE RELEASE
91
+
92
+ [Headline — most newsworthy fact as a statement]
93
+ [Subheadline — supporting detail]
94
+
95
+ [City, Date] — [Hook sentence: what happened and why it matters]
96
+
97
+ [Paragraph 1: The news — who, what, when, where]
98
+
99
+ [Paragraph 2: The why — problem being solved, backstory, unique approach]
100
+
101
+ [Paragraph 3: A quote from the founder]
102
+ "[Quote that adds voice, not just restates facts]" — [Name], [Title], [Company]
103
+
104
+ [Paragraph 4: Key features or data points — 3 max]
105
+
106
+ [Paragraph 5: Availability, pricing, platforms]
107
+ [App Name] is available on [iOS/Android/both] for [free/price]. Download at [App Store link].
108
+
109
+ ###
110
+
111
+ About [Company]:
112
+ [2–3 sentences]
113
+
114
+ Media Contact:
115
+ [Name] | [email] | [phone optional]
116
+ ```
117
+
118
+ ## Pitching Journalists
119
+
120
+ ### The Cold Pitch Email
121
+
122
+ ```
123
+ Subject: [App Name] — [your angle in 8 words]
124
+ e.g., "Habitica clone reached #1 Health with zero ad spend"
125
+
126
+ Hi [First name],
127
+
128
+ [1 sentence: why you're reaching out to them specifically]
129
+ e.g., "I read your piece on [recent article] — [App Name] is related."
130
+
131
+ [1 sentence: what the app does]
132
+ [1 sentence: the story angle / most interesting stat or fact]
133
+ [1 sentence: why now / why timely]
134
+
135
+ Happy to send a promo code, press kit, or get on a quick call.
136
+
137
+ [Your name]
138
+ [App Store link]
139
+ [Press kit link]
140
+ ```
141
+
142
+ **Rules:**
143
+ - Max 5 sentences in the pitch
144
+ - Personalize the first line for each journalist — no mass blast
145
+ - Don't attach files — link to your press kit
146
+ - Send Tuesday–Thursday, 8–10am recipient's timezone
147
+ - Follow up once after 5 business days — then move on
148
+
149
+ ### Finding the Right Journalists
150
+
151
+ 1. Search the target publication for recent app reviews in your category
152
+ 2. Note the byline — pitch that specific writer
153
+ 3. Check their Twitter/X bio for DM preference
154
+ 4. Use tools like Hunter.io for email guessing (format: first@publication.com)
155
+
156
+ ## Embargo Strategy
157
+
158
+ For major launches, offer an embargo:
159
+
160
+ - Contact journalists 1–2 weeks before launch
161
+ - Offer exclusive access under embargo (story publishes on launch day)
162
+ - One journalist per tier (don't offer the same exclusive to two competing outlets)
163
+ - Provide TestFlight / Play beta access
164
+
165
+ Exclusives dramatically increase pickup from Tier 1 publications.
166
+
167
+ ## Product Hunt Launch
168
+
169
+ | Step | When | Action |
170
+ |------|------|--------|
171
+ | Create coming soon | 2 weeks before | Enable "coming soon" to collect followers |
172
+ | Find a hunter | 1 week before | Ask an influential PH user to "hunt" you |
173
+ | Prepare assets | 3 days before | Gallery, tagline, description, first comment |
174
+ | Launch day | Tuesday–Thursday | Ship at 12:01am PST; all-day community engagement |
175
+ | Follow-up post | Launch + 1 week | Share results as a Show HN or maker story |
176
+
177
+ ## Output Format
178
+
179
+ ### PR Plan
180
+
181
+ ```
182
+ Story angle: [one sentence]
183
+
184
+ Media targets:
185
+ Tier 1: [publication + journalist name]
186
+ Tier 2: [2–3 blogs/newsletters]
187
+ Tier 3: Product Hunt, Reddit r/[category], HN
188
+
189
+ Timeline:
190
+ T-14: Press kit ready, press release drafted
191
+ T-10: Embargo pitches sent to Tier 1
192
+ T-7: Follow-ups + Tier 2 pitches
193
+ T-0: Launch + Product Hunt + Tier 3 posts
194
+ T+3: Thank reporters who covered, share articles
195
+
196
+ Press kit: [link]
197
+ Press contact: [email]
198
+ ```
199
+
200
+ ## Related Skills
201
+
202
+ - `app-launch` — Full launch strategy (PR is one channel within it)
203
+ - `app-store-featured` — Press coverage supports Apple editorial consideration
204
+ - `ua-campaign` — Complement PR with paid UA on launch week