@leejungkiin/awkit 1.1.4 → 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.
Files changed (48) hide show
  1. package/README.md +15 -0
  2. package/VERSION +1 -1
  3. package/bin/awk.js +21 -55
  4. package/core/GEMINI.md +45 -7
  5. package/package.json +2 -2
  6. package/skills/CATALOG.md +11 -3
  7. package/skills/ab-test-store-listing/SKILL.md +220 -0
  8. package/skills/android-aso/SKILL.md +197 -0
  9. package/skills/app-analytics/SKILL.md +210 -0
  10. package/skills/app-clips/SKILL.md +163 -0
  11. package/skills/app-icon-optimization/SKILL.md +170 -0
  12. package/skills/app-launch/SKILL.md +153 -0
  13. package/skills/app-marketing-context/SKILL.md +129 -0
  14. package/skills/app-store-featured/SKILL.md +213 -0
  15. package/skills/apple-search-ads/SKILL.md +205 -0
  16. package/skills/asc-metrics/SKILL.md +157 -0
  17. package/skills/aso-audit/SKILL.md +179 -0
  18. package/skills/code-review/SKILL.md +125 -0
  19. package/skills/codex-conductor/SKILL.md +337 -0
  20. package/skills/competitor-analysis/SKILL.md +163 -0
  21. package/skills/competitor-tracking/SKILL.md +185 -0
  22. package/skills/crash-analytics/SKILL.md +181 -0
  23. package/skills/in-app-events/SKILL.md +176 -0
  24. package/skills/keyword-research/SKILL.md +141 -0
  25. package/skills/localization/SKILL.md +165 -0
  26. package/skills/market-movers/SKILL.md +137 -0
  27. package/skills/market-pulse/SKILL.md +170 -0
  28. package/skills/metadata-optimization/SKILL.md +170 -0
  29. package/skills/monetization-strategy/SKILL.md +175 -0
  30. package/skills/onboarding-optimization/SKILL.md +194 -0
  31. package/skills/orchestrator/SKILL.md +297 -25
  32. package/skills/press-and-pr/SKILL.md +204 -0
  33. package/skills/rating-prompt-strategy/SKILL.md +184 -0
  34. package/skills/retention-optimization/SKILL.md +165 -0
  35. package/skills/review-management/SKILL.md +154 -0
  36. package/skills/screenshot-optimization/SKILL.md +167 -0
  37. package/skills/seasonal-aso/SKILL.md +141 -0
  38. package/skills/spec-gate/SKILL.md +312 -0
  39. package/skills/subscription-lifecycle/SKILL.md +206 -0
  40. package/skills/swiftui-pro/references/design.md +44 -0
  41. package/skills/symphony-enforcer/SKILL.md +101 -9
  42. package/skills/systematic-debugging/SKILL.md +199 -0
  43. package/skills/ua-campaign/SKILL.md +207 -0
  44. package/skills/verification-gate/SKILL.md +151 -0
  45. package/skills/writing-skills/SKILL.md +110 -0
  46. package/workflows/conductor-codex.md +125 -0
  47. package/workflows/lifecycle/code.md +28 -1
  48. package/workflows/lifecycle/debug.md +34 -14
@@ -1,58 +1,330 @@
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 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
- ...etc (see GEMINI.md § 2)
212
+ /brainstorm brainstorm-agent skill
213
+ ...etc (see GEMINI.md)
20
214
  ```
21
215
 
22
- ### 2. Intent Detection (No slash command)
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: Suggest `/code` or `/codeExpert`
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: Suggest `/debug` or `/debugExpert`
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 `/plan` or `/planExpert`
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 `/recap` or `/save-brain`
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
- ### 3. Skill Pack Check
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
- If user request involves iOS-specific → Check if mobile-ios pack enabled
48
- If not enabled → Suggest: "awf enable-pack mobile-ios"
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
- ### 4. Fallback
292
+ ---
293
+
294
+ ## 🔗 Skill Relationships
295
+
52
296
  ```
53
- No match → Ask clarifying question (max 2 times)
54
- Still unclearSuggest `/help`
297
+ DELEGATES TO:
298
+ Gate 1brainstorm-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
- ## Auto-Activation
58
- This skill is always active. It runs as the first layer before any other processing.
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*
@@ -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