agileflow 3.3.0 → 3.4.1

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 (210) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +6 -6
  3. package/lib/skill-loader.js +0 -1
  4. package/package.json +1 -1
  5. package/scripts/agileflow-statusline.sh +81 -0
  6. package/scripts/agileflow-welcome.js +79 -0
  7. package/scripts/claude-tmux.sh +90 -23
  8. package/scripts/claude-watchdog.sh +225 -0
  9. package/scripts/generators/agent-registry.js +14 -1
  10. package/scripts/generators/inject-babysit.js +22 -9
  11. package/scripts/generators/inject-help.js +19 -9
  12. package/scripts/lib/ac-test-matcher.js +452 -0
  13. package/scripts/lib/audit-cleanup.js +250 -0
  14. package/scripts/lib/audit-registry.js +304 -0
  15. package/scripts/lib/configure-features.js +35 -0
  16. package/scripts/lib/feature-catalog.js +3 -3
  17. package/scripts/lib/gate-enforcer.js +295 -0
  18. package/scripts/lib/model-profiles.js +118 -0
  19. package/scripts/lib/quality-gates.js +163 -0
  20. package/scripts/lib/signal-detectors.js +44 -1
  21. package/scripts/lib/skill-catalog.js +557 -0
  22. package/scripts/lib/skill-recommender.js +311 -0
  23. package/scripts/lib/status-writer.js +255 -0
  24. package/scripts/lib/story-claiming.js +128 -45
  25. package/scripts/lib/task-sync.js +32 -38
  26. package/scripts/lib/tdd-phase-manager.js +455 -0
  27. package/scripts/lib/team-events.js +34 -3
  28. package/scripts/lib/tmux-audit-monitor.js +611 -0
  29. package/scripts/lib/tmux-group-colors.js +113 -0
  30. package/scripts/lib/tool-registry.yaml +241 -0
  31. package/scripts/lib/tool-shed.js +441 -0
  32. package/scripts/messaging-bridge.js +209 -1
  33. package/scripts/native-team-observer.js +219 -0
  34. package/scripts/obtain-context.js +14 -0
  35. package/scripts/ralph-loop.js +30 -5
  36. package/scripts/smart-detect.js +21 -0
  37. package/scripts/spawn-audit-sessions.js +877 -0
  38. package/scripts/team-manager.js +56 -16
  39. package/scripts/tmux-close-windows.sh +180 -0
  40. package/src/core/agents/a11y-analyzer-aria.md +155 -0
  41. package/src/core/agents/a11y-analyzer-forms.md +162 -0
  42. package/src/core/agents/a11y-analyzer-keyboard.md +175 -0
  43. package/src/core/agents/a11y-analyzer-semantic.md +153 -0
  44. package/src/core/agents/a11y-analyzer-visual.md +158 -0
  45. package/src/core/agents/a11y-consensus.md +248 -0
  46. package/src/core/agents/ads-audit-budget.md +181 -0
  47. package/src/core/agents/ads-audit-compliance.md +169 -0
  48. package/src/core/agents/ads-audit-creative.md +164 -0
  49. package/src/core/agents/ads-audit-google.md +226 -0
  50. package/src/core/agents/ads-audit-meta.md +183 -0
  51. package/src/core/agents/ads-audit-tracking.md +197 -0
  52. package/src/core/agents/ads-consensus.md +396 -0
  53. package/src/core/agents/ads-generate.md +145 -0
  54. package/src/core/agents/ads-performance-tracker.md +197 -0
  55. package/src/core/agents/api-quality-analyzer-conventions.md +148 -0
  56. package/src/core/agents/api-quality-analyzer-docs.md +176 -0
  57. package/src/core/agents/api-quality-analyzer-errors.md +183 -0
  58. package/src/core/agents/api-quality-analyzer-pagination.md +171 -0
  59. package/src/core/agents/api-quality-analyzer-versioning.md +143 -0
  60. package/src/core/agents/api-quality-consensus.md +214 -0
  61. package/src/core/agents/arch-analyzer-circular.md +148 -0
  62. package/src/core/agents/arch-analyzer-complexity.md +171 -0
  63. package/src/core/agents/arch-analyzer-coupling.md +146 -0
  64. package/src/core/agents/arch-analyzer-layering.md +151 -0
  65. package/src/core/agents/arch-analyzer-patterns.md +162 -0
  66. package/src/core/agents/arch-consensus.md +227 -0
  67. package/src/core/agents/brainstorm-analyzer-features.md +169 -0
  68. package/src/core/agents/brainstorm-analyzer-growth.md +161 -0
  69. package/src/core/agents/brainstorm-analyzer-integration.md +172 -0
  70. package/src/core/agents/brainstorm-analyzer-market.md +147 -0
  71. package/src/core/agents/brainstorm-analyzer-ux.md +167 -0
  72. package/src/core/agents/brainstorm-consensus.md +237 -0
  73. package/src/core/agents/completeness-consensus.md +5 -5
  74. package/src/core/agents/perf-consensus.md +2 -2
  75. package/src/core/agents/security-consensus.md +2 -2
  76. package/src/core/agents/seo-analyzer-content.md +167 -0
  77. package/src/core/agents/seo-analyzer-images.md +187 -0
  78. package/src/core/agents/seo-analyzer-performance.md +206 -0
  79. package/src/core/agents/seo-analyzer-schema.md +176 -0
  80. package/src/core/agents/seo-analyzer-sitemap.md +172 -0
  81. package/src/core/agents/seo-analyzer-technical.md +144 -0
  82. package/src/core/agents/seo-consensus.md +289 -0
  83. package/src/core/agents/test-consensus.md +2 -2
  84. package/src/core/commands/adr.md +1 -0
  85. package/src/core/commands/ads/audit.md +375 -0
  86. package/src/core/commands/ads/budget.md +97 -0
  87. package/src/core/commands/ads/competitor.md +112 -0
  88. package/src/core/commands/ads/creative.md +85 -0
  89. package/src/core/commands/ads/generate.md +238 -0
  90. package/src/core/commands/ads/google.md +112 -0
  91. package/src/core/commands/ads/health.md +327 -0
  92. package/src/core/commands/ads/landing.md +119 -0
  93. package/src/core/commands/ads/linkedin.md +112 -0
  94. package/src/core/commands/ads/meta.md +91 -0
  95. package/src/core/commands/ads/microsoft.md +115 -0
  96. package/src/core/commands/ads/plan.md +321 -0
  97. package/src/core/commands/ads/test-plan.md +317 -0
  98. package/src/core/commands/ads/tiktok.md +129 -0
  99. package/src/core/commands/ads/track.md +288 -0
  100. package/src/core/commands/ads/youtube.md +124 -0
  101. package/src/core/commands/ads.md +140 -0
  102. package/src/core/commands/assign.md +1 -0
  103. package/src/core/commands/audit.md +43 -6
  104. package/src/core/commands/babysit.md +315 -1266
  105. package/src/core/commands/baseline.md +1 -0
  106. package/src/core/commands/blockers.md +1 -0
  107. package/src/core/commands/board.md +1 -0
  108. package/src/core/commands/changelog.md +1 -0
  109. package/src/core/commands/choose.md +1 -0
  110. package/src/core/commands/ci.md +1 -0
  111. package/src/core/commands/code/accessibility.md +347 -0
  112. package/src/core/commands/code/api.md +297 -0
  113. package/src/core/commands/code/architecture.md +297 -0
  114. package/src/core/commands/{audit → code}/completeness.md +72 -25
  115. package/src/core/commands/{audit → code}/legal.md +63 -16
  116. package/src/core/commands/{audit → code}/logic.md +64 -16
  117. package/src/core/commands/{audit → code}/performance.md +67 -20
  118. package/src/core/commands/{audit → code}/security.md +69 -19
  119. package/src/core/commands/{audit → code}/test.md +67 -20
  120. package/src/core/commands/configure.md +1 -0
  121. package/src/core/commands/council.md +1 -0
  122. package/src/core/commands/deploy.md +1 -0
  123. package/src/core/commands/diagnose.md +1 -0
  124. package/src/core/commands/docs.md +1 -0
  125. package/src/core/commands/epic/edit.md +213 -0
  126. package/src/core/commands/epic.md +1 -0
  127. package/src/core/commands/export.md +238 -0
  128. package/src/core/commands/help.md +16 -1
  129. package/src/core/commands/{discovery → ideate}/brief.md +12 -12
  130. package/src/core/commands/{discovery/new.md → ideate/discover.md} +20 -16
  131. package/src/core/commands/ideate/features.md +496 -0
  132. package/src/core/commands/ideate/new.md +158 -124
  133. package/src/core/commands/impact.md +1 -0
  134. package/src/core/commands/learn/explain.md +118 -0
  135. package/src/core/commands/learn/glossary.md +135 -0
  136. package/src/core/commands/learn/patterns.md +138 -0
  137. package/src/core/commands/learn/tour.md +126 -0
  138. package/src/core/commands/migrate/codemods.md +151 -0
  139. package/src/core/commands/migrate/plan.md +131 -0
  140. package/src/core/commands/migrate/scan.md +114 -0
  141. package/src/core/commands/migrate/validate.md +119 -0
  142. package/src/core/commands/multi-expert.md +1 -0
  143. package/src/core/commands/pr.md +1 -0
  144. package/src/core/commands/review.md +1 -0
  145. package/src/core/commands/seo/audit.md +373 -0
  146. package/src/core/commands/seo/competitor.md +174 -0
  147. package/src/core/commands/seo/content.md +107 -0
  148. package/src/core/commands/seo/geo.md +229 -0
  149. package/src/core/commands/seo/hreflang.md +140 -0
  150. package/src/core/commands/seo/images.md +96 -0
  151. package/src/core/commands/seo/page.md +198 -0
  152. package/src/core/commands/seo/plan.md +163 -0
  153. package/src/core/commands/seo/programmatic.md +131 -0
  154. package/src/core/commands/seo/references/cwv-thresholds.md +64 -0
  155. package/src/core/commands/seo/references/eeat-framework.md +110 -0
  156. package/src/core/commands/seo/references/quality-gates.md +91 -0
  157. package/src/core/commands/seo/references/schema-types.md +102 -0
  158. package/src/core/commands/seo/schema.md +183 -0
  159. package/src/core/commands/seo/sitemap.md +97 -0
  160. package/src/core/commands/seo/technical.md +100 -0
  161. package/src/core/commands/seo.md +107 -0
  162. package/src/core/commands/skill/list.md +68 -212
  163. package/src/core/commands/skill/recommend.md +216 -0
  164. package/src/core/commands/sprint.md +1 -0
  165. package/src/core/commands/status/undo.md +191 -0
  166. package/src/core/commands/status.md +1 -0
  167. package/src/core/commands/story/edit.md +204 -0
  168. package/src/core/commands/story/view.md +29 -7
  169. package/src/core/commands/story-validate.md +1 -0
  170. package/src/core/commands/story.md +1 -0
  171. package/src/core/commands/tdd-next.md +238 -0
  172. package/src/core/commands/tdd.md +211 -0
  173. package/src/core/commands/team/start.md +10 -6
  174. package/src/core/commands/tests.md +1 -0
  175. package/src/core/commands/verify.md +27 -1
  176. package/src/core/commands/workflow.md +2 -0
  177. package/src/core/experts/_core-expertise.yaml +105 -0
  178. package/src/core/experts/analytics/expertise.yaml +5 -99
  179. package/src/core/experts/codebase-query/expertise.yaml +3 -72
  180. package/src/core/experts/compliance/expertise.yaml +6 -72
  181. package/src/core/experts/database/expertise.yaml +9 -52
  182. package/src/core/experts/documentation/expertise.yaml +7 -140
  183. package/src/core/experts/integrations/expertise.yaml +7 -127
  184. package/src/core/experts/mentor/expertise.yaml +8 -35
  185. package/src/core/experts/monitoring/expertise.yaml +7 -49
  186. package/src/core/experts/performance/expertise.yaml +1 -26
  187. package/src/core/experts/security/expertise.yaml +9 -34
  188. package/src/core/experts/ui/expertise.yaml +6 -36
  189. package/src/core/knowledge/ads/ad-audit-checklist-scoring.md +424 -0
  190. package/src/core/knowledge/ads/ad-optimization-logic.md +590 -0
  191. package/src/core/knowledge/ads/ad-technical-specifications.md +385 -0
  192. package/src/core/knowledge/ads/definitive-advertising-reference-2026.md +506 -0
  193. package/src/core/knowledge/ads/paid-advertising-research-2026.md +445 -0
  194. package/src/core/teams/backend.json +41 -0
  195. package/src/core/teams/frontend.json +41 -0
  196. package/src/core/teams/qa.json +41 -0
  197. package/src/core/teams/solo.json +35 -0
  198. package/src/core/templates/agileflow-metadata.json +20 -1
  199. package/tools/cli/commands/setup.js +85 -3
  200. package/tools/cli/commands/update.js +42 -0
  201. package/tools/cli/installers/ide/_base-ide.js +42 -5
  202. package/tools/cli/installers/ide/claude-code.js +71 -3
  203. package/tools/cli/lib/content-injector.js +160 -12
  204. package/tools/cli/lib/docs-setup.js +1 -1
  205. package/src/core/commands/skill/create.md +0 -698
  206. package/src/core/commands/skill/delete.md +0 -316
  207. package/src/core/commands/skill/edit.md +0 -359
  208. package/src/core/commands/skill/test.md +0 -394
  209. package/src/core/commands/skill/upgrade.md +0 -552
  210. package/src/core/templates/skill-template.md +0 -117
@@ -0,0 +1,317 @@
1
+ ---
2
+ description: CPC-first test planning — structured test matrix with budget allocation, CPC thresholds, winner/kill rules, and graduation criteria
3
+ argument-hint: "[BUDGET=100] [DURATION=3d] [VARIANTS=from-generate]"
4
+ compact_context:
5
+ priority: medium
6
+ preserve_rules:
7
+ - "ACTIVE COMMAND: /agileflow:ads:test-plan - CPC-first test planning"
8
+ - "Generate structured test matrix with decision criteria"
9
+ - "CPC threshold methodology: $100/3-day test, winner/kill rules"
10
+ - "Output includes budget allocation, measurement criteria, graduation rules"
11
+ state_fields:
12
+ - test_budget
13
+ - duration
14
+ - variants
15
+ - platform
16
+ ---
17
+
18
+ # /agileflow:ads:test-plan
19
+
20
+ Generate a structured A/B testing plan with budget allocation, CPC-first decision criteria, winner/kill rules, and graduation strategy. Based on the CPC-first testing methodology where cheap clicks validate messaging before optimizing for conversions.
21
+
22
+ ---
23
+
24
+ ## Quick Reference
25
+
26
+ ```
27
+ /agileflow:ads:test-plan # Interactive (recommended)
28
+ /agileflow:ads:test-plan BUDGET=300 DURATION=5d # Custom budget/duration
29
+ /agileflow:ads:test-plan VARIANTS=from-generate # Use variants from /ads:generate
30
+ /agileflow:ads:test-plan BUDGET=100 PLATFORM=meta # Meta-specific test plan
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Arguments
36
+
37
+ | Argument | Values | Default | Description |
38
+ |----------|--------|---------|-------------|
39
+ | BUDGET | Dollar amount | $100 | Total test budget per round |
40
+ | DURATION | Days | 3d | Test duration before decision |
41
+ | VARIANTS | from-generate, manual, or count | from-generate | Source of ad variants to test |
42
+ | PLATFORM | meta, google, linkedin, tiktok | meta | Platform to test on |
43
+
44
+ ---
45
+
46
+ ## CPC-First Testing Methodology
47
+
48
+ ### Why CPC First?
49
+
50
+ ```
51
+ Traditional: Optimize for conversions → need 50+ conversions per variant → $$$
52
+ CPC-First: Optimize for clicks → need 100+ clicks per variant → $
53
+
54
+ CPC validates MESSAGE RESONANCE at 1/50th the cost.
55
+ Only graduate winners to conversion optimization.
56
+ ```
57
+
58
+ ### The 3-Stage Funnel
59
+
60
+ ```
61
+ Stage 1: CPC Test ($100, 3 days)
62
+ → Does the message resonate? (CTR + CPC)
63
+ → Kill: CPC > 2x average
64
+ → Graduate: CPC < average AND CTR > 1%
65
+
66
+ Stage 2: Landing Page Test ($300, 7 days)
67
+ → Do clicks convert? (CVR + CPA)
68
+ → Kill: CVR < 1% after 200+ clicks
69
+ → Graduate: CPA < 2x target
70
+
71
+ Stage 3: Scale Test ($1000+, 14 days)
72
+ → Does it scale profitably? (ROAS + volume)
73
+ → Kill: ROAS < 1.5x at 2x budget
74
+ → Graduate: ROAS > 2x → move to always-on
75
+ ```
76
+
77
+ ---
78
+
79
+ ## Multi-Step Discovery Flow
80
+
81
+ ### STEP 1: Test Context
82
+
83
+ ```xml
84
+ <invoke name="AskUserQuestion">
85
+ <parameter name="questions">[
86
+ {
87
+ "question": "What stage of testing are you at?",
88
+ "header": "Test Stage",
89
+ "multiSelect": false,
90
+ "options": [
91
+ {"label": "Stage 1: Message testing (Recommended)", "description": "CPC-first — validate which angles/hooks resonate before spending on conversions"},
92
+ {"label": "Stage 2: Landing page testing", "description": "I have winning ad copy, now testing landing page variants"},
93
+ {"label": "Stage 3: Scale testing", "description": "I have winning ads + landing pages, testing budget scaling"},
94
+ {"label": "Full funnel from scratch", "description": "Generate a complete 3-stage test plan"}
95
+ ]
96
+ },
97
+ {
98
+ "question": "How many ad variants do you want to test?",
99
+ "header": "Variants",
100
+ "multiSelect": false,
101
+ "options": [
102
+ {"label": "Use variants from /ads:generate (Recommended)", "description": "Pull variants from the most recent ads-copy generation"},
103
+ {"label": "5 variants (minimum viable test)", "description": "Test 5 angles with $20 each"},
104
+ {"label": "10 variants (standard test)", "description": "Test 10 variants with $10 each"},
105
+ {"label": "20 variants (comprehensive)", "description": "Test 20 variants — requires $200+ budget"}
106
+ ]
107
+ }
108
+ ]</parameter>
109
+ </invoke>
110
+ ```
111
+
112
+ ### STEP 2: Check for Existing Variants
113
+
114
+ If VARIANTS=from-generate, look for recent ad copy:
115
+
116
+ ```
117
+ docs/08-project/ads-copy/ads-copy-{YYYYMMDD}.md
118
+ ```
119
+
120
+ If found, extract angle names and variant counts. If not found, suggest running `/agileflow:ads:generate` first.
121
+
122
+ ### STEP 3: Generate Test Plan
123
+
124
+ Based on stage, budget, and variants, generate the test matrix.
125
+
126
+ ---
127
+
128
+ ## Output Format
129
+
130
+ ```markdown
131
+ # Ad Testing Plan
132
+
133
+ **Generated**: {YYYY-MM-DD}
134
+ **Platform**: {platform}
135
+ **Total Budget**: ${total across all stages}
136
+ **Methodology**: CPC-First → CVR → Scale
137
+
138
+ ---
139
+
140
+ ## Stage 1: Message Resonance Test (CPC-First)
141
+
142
+ **Budget**: ${budget}
143
+ **Duration**: {duration}
144
+ **Objective**: Traffic (optimize for link clicks)
145
+ **Bidding**: Lowest cost (no cap)
146
+
147
+ ### Test Matrix
148
+
149
+ | Variant | Angle | Headline | Daily Budget | Min Clicks | Decision By |
150
+ |---------|-------|----------|-------------|------------|-------------|
151
+ | A | Pain Point | "{headline}" | ${daily} | 33 | {date} |
152
+ | B | Outcome | "{headline}" | ${daily} | 33 | {date} |
153
+ | C | Social Proof | "{headline}" | ${daily} | 33 | {date} |
154
+ | D | Urgency | "{headline}" | ${daily} | 33 | {date} |
155
+ | E | Contrarian | "{headline}" | ${daily} | 33 | {date} |
156
+
157
+ ### Decision Criteria
158
+
159
+ | Metric | Kill | Hold | Graduate |
160
+ |--------|------|------|----------|
161
+ | **CPC** | > ${2x_avg} | ${avg} - ${2x_avg} | < ${avg} |
162
+ | **CTR** | < 0.5% | 0.5% - 1.0% | > 1.0% |
163
+ | **Impressions** | < 500 (insufficient data) | 500-1000 | > 1000 |
164
+
165
+ ### Decision Rules
166
+
167
+ 1. **Kill immediately** if CPC > 2x average after 50+ clicks
168
+ 2. **Hold** if CPC is average but CTR is borderline — extend 2 more days
169
+ 3. **Graduate** if CPC < average AND CTR > 1.0% — move to Stage 2
170
+ 4. **Minimum data**: Do NOT make decisions with < 100 impressions per variant
171
+ 5. **Time minimum**: Run at least 48 hours to capture day-of-week variance
172
+
173
+ ### Expected Outcomes
174
+
175
+ At $100 budget with ~$1.50 CPC:
176
+ - ~67 total clicks across 5 variants
177
+ - ~13 clicks per variant (marginal — consider $200 for statistical confidence)
178
+ - Expected: 1-2 clear winners, 1-2 kills, 1-2 holds
179
+
180
+ ### Budget Scaling (if budget allows)
181
+
182
+ | Budget | Variants | Clicks/Variant | Confidence |
183
+ |--------|----------|---------------|------------|
184
+ | $100 | 5 | ~13 | Low (directional only) |
185
+ | $200 | 5 | ~27 | Medium (clear signal) |
186
+ | $300 | 5 | ~40 | High (statistically significant) |
187
+ | $500 | 10 | ~33 | High (wider angle coverage) |
188
+
189
+ ---
190
+
191
+ ## Stage 2: Conversion Validation Test
192
+
193
+ **Budget**: ${stage2_budget}
194
+ **Duration**: 7 days
195
+ **Objective**: Conversions (optimize for leads/purchases)
196
+ **Bidding**: Target CPA (set at 1.5x current CPA)
197
+
198
+ ### Graduates from Stage 1
199
+ {Only variants that passed Stage 1 criteria}
200
+
201
+ | Variant | Angle | Stage 1 CPC | Stage 1 CTR | Daily Budget |
202
+ |---------|-------|-------------|-------------|-------------|
203
+ | {winner} | {angle} | ${cpc} | {ctr}% | ${daily} |
204
+
205
+ ### Decision Criteria
206
+
207
+ | Metric | Kill | Hold | Graduate |
208
+ |--------|------|------|----------|
209
+ | **CPA** | > 3x target | 1.5x - 3x target | < 1.5x target |
210
+ | **CVR** | < 1% after 200+ clicks | 1% - 3% | > 3% |
211
+ | **ROAS** (e-commerce) | < 1:1 | 1:1 - 2:1 | > 2:1 |
212
+
213
+ ### The 3x Kill Rule
214
+
215
+ > **If any campaign's CPA exceeds 3x your target CPA, pause it immediately.**
216
+ > No exceptions. No "let it learn longer." Kill it, iterate the creative, relaunch.
217
+
218
+ ---
219
+
220
+ ## Stage 3: Scale Test
221
+
222
+ **Budget**: ${stage3_budget}
223
+ **Duration**: 14 days
224
+ **Objective**: Profitable scale
225
+ **Bidding**: Target CPA or Target ROAS
226
+
227
+ ### Scaling Rules
228
+
229
+ 1. **20% Rule**: Never increase budget more than 20% per day
230
+ 2. **Learning Phase**: After budget changes, wait 3-5 days before judging
231
+ 3. **Diminishing Returns**: Track CPA at each budget level:
232
+
233
+ | Budget Level | Expected CPA | Actual CPA | CPA Delta | Action |
234
+ |-------------|-------------|-----------|-----------|--------|
235
+ | Baseline ${x} | ${target} | — | — | — |
236
+ | +20% ${x*1.2} | ${target*1.1} | — | — | Continue if < 1.5x |
237
+ | +20% ${x*1.44} | ${target*1.2} | — | — | Pause if > 2x |
238
+ | +20% ${x*1.73} | ${target*1.3} | — | — | — |
239
+
240
+ 4. **Exit criteria**: Stop scaling when CPA increase per 20% budget step exceeds 15%
241
+
242
+ ---
243
+
244
+ ## Test Calendar
245
+
246
+ | Week | Stage | Action | Budget | Key Metric |
247
+ |------|-------|--------|--------|-----------|
248
+ | 1 | Setup | Create campaigns, install tracking | $0 | Pixel fires ✓ |
249
+ | 1-2 | Stage 1 | CPC message test | ${s1} | CPC + CTR |
250
+ | 2 | Decision | Kill/Hold/Graduate | — | — |
251
+ | 2-3 | Stage 2 | Conversion test (winners) | ${s2} | CPA + CVR |
252
+ | 3 | Decision | Kill/Graduate | — | — |
253
+ | 4-5 | Stage 3 | Scale test | ${s3} | ROAS at scale |
254
+ | 6 | Evergreen | Move winners to always-on | ${ongoing} | Monitor weekly |
255
+
256
+ ---
257
+
258
+ ## Tracking Requirements
259
+
260
+ Before starting ANY test:
261
+
262
+ - [ ] Conversion pixel/tag installed and firing
263
+ - [ ] Conversion events defined (lead, purchase, sign-up)
264
+ - [ ] UTM parameters on all ad URLs: `utm_source={platform}&utm_medium=paid&utm_campaign={test_name}&utm_content={variant}`
265
+ - [ ] Google Analytics or equivalent receiving data
266
+ - [ ] Baseline metrics recorded (current CPC, CTR, CPA if available)
267
+
268
+ ---
269
+
270
+ ## Post-Test Analysis Template
271
+
272
+ After each stage, record:
273
+
274
+ | Variant | Impressions | Clicks | CTR | CPC | Conversions | CVR | CPA | Decision |
275
+ |---------|------------|--------|-----|-----|------------|-----|-----|----------|
276
+ | A | — | — | — | — | — | — | — | Kill/Hold/Graduate |
277
+ ```
278
+
279
+ Save test plan to `docs/08-project/ads-test-plans/test-plan-{YYYYMMDD}.md`.
280
+
281
+ ---
282
+
283
+ ## Present Results
284
+
285
+ ```xml
286
+ <invoke name="AskUserQuestion">
287
+ <parameter name="questions">[{
288
+ "question": "Test plan generated: {N} variants across {stages} stages, ${total_budget} total budget, {duration} timeline. Ready to launch?",
289
+ "header": "Next steps",
290
+ "multiSelect": false,
291
+ "options": [
292
+ {"label": "Generate ad variants to test (Recommended)", "description": "Run /agileflow:ads:generate to create the ad copy for this test plan"},
293
+ {"label": "Adjust budget or duration", "description": "Modify the test parameters before finalizing"},
294
+ {"label": "Review tracking setup", "description": "Verify conversion tracking is properly configured before testing"},
295
+ {"label": "Export for platform", "description": "Format the test plan as platform-specific campaign structure"}
296
+ ]
297
+ }]</parameter>
298
+ </invoke>
299
+ ```
300
+
301
+ ---
302
+
303
+ <!-- COMPACT_SUMMARY_START -->
304
+ ## Compact Summary
305
+
306
+ **Command**: `/agileflow:ads:test-plan` - CPC-first A/B test planning
307
+
308
+ **Methodology**: Stage 1 (CPC message test, $100/3d) → Stage 2 (CVR validation, $300/7d) → Stage 3 (Scale test, $1000+/14d)
309
+
310
+ **Key Rules**: 3x Kill Rule, 20% scaling rule, 48h minimum data, 100+ impressions before decisions
311
+
312
+ **Output**: Test matrix with decision criteria, scaling rules, and timeline
313
+
314
+ **Usage**: `/agileflow:ads:test-plan [BUDGET=100] [DURATION=3d] [VARIANTS=from-generate]`
315
+
316
+ **File**: `docs/08-project/ads-test-plans/test-plan-{YYYYMMDD}.md`
317
+ <!-- COMPACT_SUMMARY_END -->
@@ -0,0 +1,129 @@
1
+ ---
2
+ description: TikTok Ads audit with 8 checks for learning phase management, budget minimums, creative safe zones, and platform-specific optimization
3
+ argument-hint: "<account-data>"
4
+ compact_context:
5
+ priority: medium
6
+ preserve_rules:
7
+ - "ACTIVE COMMAND: /agileflow:ads:tiktok - TikTok Ads audit"
8
+ - "Inline command - 8 checks, no separate agent needed"
9
+ - "Min budget: $50/day campaign, $20/day ad group"
10
+ - "Learning phase: 50 conversions in 7 days"
11
+ state_fields:
12
+ - tiktok_score
13
+ ---
14
+
15
+ # /agileflow:ads:tiktok
16
+
17
+ Run an inline audit on a TikTok Ads account with 8 focused checks. TikTok requires creative-first strategy and strict learning phase management.
18
+
19
+ ---
20
+
21
+ ## Quick Reference
22
+
23
+ ```
24
+ /agileflow:ads:tiktok <account-data> # TikTok Ads audit
25
+ ```
26
+
27
+ ---
28
+
29
+ ## The 8 Checks
30
+
31
+ | # | Check | Severity | Pass Criteria |
32
+ |---|-------|----------|---------------|
33
+ | TT-1 | TikTok Pixel installed | CRITICAL | Pixel on all pages, Events API preferred |
34
+ | TT-2 | Learning phase management | CRITICAL | 50 conversions in 7 days per ad group |
35
+ | TT-3 | Budget meets minimum | CRITICAL | $50/day campaign, $20/day ad group |
36
+ | TT-4 | Creative safe zones | HIGH | Key content within center 720x900px |
37
+ | TT-5 | Video-first creatives | HIGH | All ads are video (no static images) |
38
+ | TT-6 | UGC/authentic style | HIGH | Native-feeling content (not polished ads) |
39
+ | TT-7 | Sound-on design | MEDIUM | Audio is integral, not optional |
40
+ | TT-8 | Creative refresh < 14 days | HIGH | New creatives every 1-2 weeks |
41
+
42
+ ---
43
+
44
+ ## Process
45
+
46
+ ### STEP 1: Apply All 8 Checks
47
+
48
+ Review the account data against each check. For TikTok specifically:
49
+
50
+ **Learning phase is critical**:
51
+ - TikTok needs 50 conversions in 7 days per ad group to exit learning
52
+ - At $20/day minimum: $140/week = 50 conversions needed
53
+ - That requires CPA < $2.80 - often unrealistic
54
+ - **Solution**: Optimize for upper-funnel events (View Content, Add to Cart) until volume builds
55
+
56
+ **Creative safe zones**:
57
+ ```
58
+ +---------------------------+
59
+ | Username (130px) |
60
+ | |
61
+ | +----------------+ |
62
+ | | | |
63
+ | | SAFE ZONE | |
64
+ | | 720 x 900px | |
65
+ | | | |
66
+ | +----------------+ |
67
+ | |btns |
68
+ | CTA + Nav (170px) | |
69
+ +---------------------------+
70
+ ```
71
+
72
+ **Creative best practices**:
73
+ - First 3 seconds: Hook with pattern interrupt
74
+ - 15-30 second sweet spot for most objectives
75
+ - Vertical 9:16 only (no landscape)
76
+ - Captions/text overlay for sound-off viewing
77
+ - Trend-aware content outperforms polished ads
78
+
79
+ ### STEP 2: Score
80
+
81
+ ```
82
+ TikTok Score = 100 - sum(severity_deductions)
83
+ ```
84
+
85
+ Deductions: CRITICAL (-15), HIGH (-8), MEDIUM (-4), LOW (-2)
86
+
87
+ ### STEP 3: Output
88
+
89
+ ```markdown
90
+ ## TikTok Ads Audit
91
+
92
+ **TikTok Score**: {X}/100
93
+
94
+ | Check | Status | Notes |
95
+ |-------|--------|-------|
96
+ | TT-1 Pixel/Events API | PASS/FAIL | {details} |
97
+ | TT-2 Learning phase | PASS/FAIL | {conversion volume} |
98
+ | TT-3 Budget minimum | PASS/FAIL | ${daily}/day |
99
+ | TT-4 Safe zones | PASS/FAIL | {creative analysis} |
100
+ | TT-5 Video-first | PASS/FAIL | {format types} |
101
+ | TT-6 UGC style | PASS/FAIL | {creative style} |
102
+ | TT-7 Sound-on | PASS/FAIL | {audio strategy} |
103
+ | TT-8 Creative refresh | PASS/FAIL | {last refresh date} |
104
+
105
+ ### Key Recommendations
106
+ 1. {Top priority fix}
107
+ 2. {Second priority}
108
+ 3. {Third priority}
109
+
110
+ ### TikTok-Specific Tips
111
+ - "Don't make ads, make TikToks" - native > polished
112
+ - Spark Ads (boosting organic) often outperform traditional ads
113
+ - Creative fatigue hits faster on TikTok (7-14 days vs 30 on Meta)
114
+ - Use Creative Center for trending sounds and formats
115
+ ```
116
+
117
+ ---
118
+
119
+ <!-- COMPACT_SUMMARY_START -->
120
+ ## Compact Summary
121
+
122
+ **Command**: `/agileflow:ads:tiktok` - TikTok Ads audit
123
+
124
+ **Checks**: 8 (inline, no separate agent)
125
+
126
+ **Key**: $50/day min, 50 conv/7 days learning, video-only, UGC style
127
+
128
+ **Quick Usage**: `/agileflow:ads:tiktok <account-data>`
129
+ <!-- COMPACT_SUMMARY_END -->