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,288 @@
1
+ ---
2
+ description: Ads performance tracker — ingest performance CSVs, establish baselines, detect winners and anomalies, output KPI dashboard with trend analysis
3
+ argument-hint: "<performance-data> [PERIOD=7d] [BASELINE=auto]"
4
+ compact_context:
5
+ priority: medium
6
+ preserve_rules:
7
+ - "ACTIVE COMMAND: /agileflow:ads:track - Performance tracking and winner detection"
8
+ - "Ingest CSV/pasted performance data, establish baselines, detect anomalies"
9
+ - "Winner detection: statistical significance, cost efficiency, trend direction"
10
+ - "Delegate to ads-performance-tracker agent for analysis"
11
+ - "State persisted in docs/08-project/ads-tracking/"
12
+ state_fields:
13
+ - period
14
+ - baseline
15
+ - campaigns_tracked
16
+ - winners
17
+ - anomalies
18
+ ---
19
+
20
+ # /agileflow:ads:track
21
+
22
+ Ingest ad performance data (CSVs or pasted), establish baselines, detect winners and anomalies, and output a KPI dashboard with trend analysis and actionable recommendations.
23
+
24
+ ---
25
+
26
+ ## Quick Reference
27
+
28
+ ```
29
+ /agileflow:ads:track <performance-data> # Analyze performance data
30
+ /agileflow:ads:track <csv-file> PERIOD=30d # 30-day trend analysis
31
+ /agileflow:ads:track <data> BASELINE=last-report # Compare against last saved baseline
32
+ /agileflow:ads:track compare <old-csv> <new-csv> # Period-over-period comparison
33
+ ```
34
+
35
+ ---
36
+
37
+ ## Arguments
38
+
39
+ | Argument | Values | Default | Description |
40
+ |----------|--------|---------|-------------|
41
+ | performance-data | CSV, pasted text, or file path | Required | Performance metrics to analyze |
42
+ | PERIOD | 1d, 7d, 14d, 30d, 90d | 7d | Analysis period |
43
+ | BASELINE | auto, last-report, or specific date | auto | Baseline for comparison |
44
+ | FORMAT | dashboard, csv, both | dashboard | Output format |
45
+
46
+ ---
47
+
48
+ ## Data Formats Accepted
49
+
50
+ ### CSV Export (preferred)
51
+ ```csv
52
+ Campaign,Ad Set,Ad,Impressions,Clicks,CTR,CPC,Spend,Conversions,CVR,CPA,ROAS,Date
53
+ Brand - Search,Brand Terms,Ad 1,15234,1843,12.1%,$0.45,$829,234,12.7%,$3.54,8.2,2026-02-28
54
+ ```
55
+
56
+ ### Pasted Table
57
+ ```
58
+ Campaign | Spend | Clicks | CPA | ROAS
59
+ Brand Search | $829 | 1,843 | $3.54 | 8.2x
60
+ Non-Brand Search | $2,341 | 987 | $15.20 | 2.1x
61
+ Meta Prospecting | $1,560 | 2,104 | $28.40 | 1.4x
62
+ ```
63
+
64
+ ### Platform-Specific Exports
65
+ - Google Ads: Campaign/Ad Group/Keyword reports
66
+ - Meta Ads Manager: Campaign/Ad Set/Ad performance export
67
+ - LinkedIn: Campaign Manager CSV export
68
+ - TikTok: Business Center export
69
+
70
+ ---
71
+
72
+ ## Analysis Framework
73
+
74
+ ### STEP 1: Parse & Normalize Data
75
+
76
+ Delegate to the `ads-performance-tracker` agent:
77
+
78
+ ```xml
79
+ <invoke name="Agent">
80
+ <parameter name="description">Analyze ad performance data</parameter>
81
+ <parameter name="prompt">TASK: Analyze ad performance data and generate KPI dashboard.
82
+
83
+ PERFORMANCE DATA:
84
+ {data}
85
+
86
+ PERIOD: {period}
87
+ BASELINE: {baseline}
88
+
89
+ Follow the full analysis framework in your instructions.
90
+
91
+ OUTPUT: Complete KPI dashboard with winner detection, anomaly alerts, and recommendations.</parameter>
92
+ <parameter name="subagent_type">ads-performance-tracker</parameter>
93
+ </invoke>
94
+ ```
95
+
96
+ ### STEP 2: Establish Baselines
97
+
98
+ If this is the first analysis or BASELINE=auto:
99
+ - Calculate median and mean for each metric across all campaigns
100
+ - Set thresholds at 1 standard deviation from mean
101
+ - Save baseline to `docs/08-project/ads-tracking/baseline-{YYYYMMDD}.json`
102
+
103
+ If BASELINE=last-report:
104
+ - Load the most recent baseline from `docs/08-project/ads-tracking/`
105
+ - Compare current metrics against saved baseline
106
+
107
+ ### STEP 3: Winner Detection
108
+
109
+ Apply statistical winner detection:
110
+
111
+ | Metric | Winner Threshold | Confidence Requirement |
112
+ |--------|-----------------|----------------------|
113
+ | CPC | < 0.7x median CPC | 100+ clicks |
114
+ | CTR | > 1.5x median CTR | 1000+ impressions |
115
+ | CVR | > 1.5x median CVR | 50+ clicks |
116
+ | CPA | < 0.7x median CPA | 20+ conversions |
117
+ | ROAS | > 1.5x median ROAS | $500+ spend |
118
+
119
+ **Winner Classification:**
120
+ | Class | Criteria | Action |
121
+ |-------|----------|--------|
122
+ | **Strong Winner** | Beats threshold on 3+ metrics | Scale 20%/week |
123
+ | **Emerging Winner** | Beats threshold on 1-2 metrics | Continue monitoring |
124
+ | **Stable Performer** | Within 1 SD of median on all metrics | Maintain |
125
+ | **Underperformer** | Below median on 2+ metrics | Optimize or pause |
126
+ | **Kill** | CPA > 3x target OR ROAS < 0.5x target | Pause immediately |
127
+
128
+ ### STEP 4: Anomaly Detection
129
+
130
+ Flag anomalies when:
131
+ - **Spend spike**: Daily spend > 2x average (possible budget cap issue)
132
+ - **CTR drop**: CTR drops > 30% day-over-day (ad fatigue, audience saturation)
133
+ - **CPC surge**: CPC increases > 50% week-over-week (competition, quality score)
134
+ - **Conversion drop**: Conversions drop > 40% with stable traffic (tracking break, landing page issue)
135
+ - **ROAS collapse**: ROAS drops below 1:1 (unprofitable, needs immediate action)
136
+
137
+ ### STEP 5: Trend Analysis
138
+
139
+ For each campaign, calculate:
140
+ - **7-day rolling average** for CPC, CTR, CVR, CPA
141
+ - **Trend direction**: Improving, Stable, Declining
142
+ - **Velocity**: Rate of change (slow, moderate, rapid)
143
+ - **Projected trajectory**: If trend continues, estimated metrics in 7/14/30 days
144
+
145
+ ---
146
+
147
+ ## Output Format
148
+
149
+ ```markdown
150
+ # Ads Performance Dashboard
151
+
152
+ **Generated**: {YYYY-MM-DD}
153
+ **Period**: {start_date} to {end_date} ({N} days)
154
+ **Platforms**: {platforms}
155
+ **Total Spend**: ${total_spend}
156
+ **Baseline**: {baseline_source}
157
+
158
+ ---
159
+
160
+ ## Executive Summary
161
+
162
+ | Metric | Current | Baseline | Change | Trend |
163
+ |--------|---------|----------|--------|-------|
164
+ | Total Spend | ${current} | ${baseline} | {+/-}% | {→/↑/↓} |
165
+ | Avg CPC | ${current} | ${baseline} | {+/-}% | {→/↑/↓} |
166
+ | Avg CTR | {current}% | {baseline}% | {+/-}% | {→/↑/↓} |
167
+ | Total Conversions | {current} | {baseline} | {+/-}% | {→/↑/↓} |
168
+ | Avg CPA | ${current} | ${baseline} | {+/-}% | {→/↑/↓} |
169
+ | Blended ROAS | {current}x | {baseline}x | {+/-}% | {→/↑/↓} |
170
+
171
+ ---
172
+
173
+ ## Winner Detection
174
+
175
+ ### Strong Winners (scale these)
176
+ | Campaign | CPC | CTR | CVR | CPA | ROAS | Action |
177
+ |----------|-----|-----|-----|-----|------|--------|
178
+ | {name} | ${cpc} ✅ | {ctr}% ✅ | {cvr}% ✅ | ${cpa} ✅ | {roas}x | Scale 20%/wk |
179
+
180
+ ### Emerging Winners (monitor closely)
181
+ | Campaign | CPC | CTR | CVR | CPA | ROAS | Action |
182
+ |----------|-----|-----|-----|-----|------|--------|
183
+ | {name} | ${cpc} | {ctr}% ✅ | {cvr}% | ${cpa} | {roas}x | Continue 7d |
184
+
185
+ ### Kill List (pause immediately)
186
+ | Campaign | Issue | CPA vs Target | Spend Wasted | Action |
187
+ |----------|-------|--------------|-------------|--------|
188
+ | {name} | CPA 3.2x target | ${cpa} vs ${target} | ${wasted} | **PAUSE NOW** |
189
+
190
+ ---
191
+
192
+ ## Anomaly Alerts
193
+
194
+ | Alert | Campaign | Metric | Expected | Actual | Severity |
195
+ |-------|----------|--------|----------|--------|----------|
196
+ | ⚠️ | {name} | CPC | ${expected} | ${actual} | HIGH |
197
+ | 🔴 | {name} | Conversions | {expected} | {actual} | CRITICAL |
198
+
199
+ ---
200
+
201
+ ## Campaign Performance
202
+
203
+ ### {Campaign Name}
204
+
205
+ | Metric | Value | vs Baseline | Trend (7d) |
206
+ |--------|-------|-------------|------------|
207
+ | Spend | ${spend} | {+/-}% | {→/↑/↓} |
208
+ | Impressions | {impr} | {+/-}% | {→/↑/↓} |
209
+ | Clicks | {clicks} | {+/-}% | {→/↑/↓} |
210
+ | CTR | {ctr}% | {+/-}% | {→/↑/↓} |
211
+ | CPC | ${cpc} | {+/-}% | {→/↑/↓} |
212
+ | Conversions | {conv} | {+/-}% | {→/↑/↓} |
213
+ | CVR | {cvr}% | {+/-}% | {→/↑/↓} |
214
+ | CPA | ${cpa} | {+/-}% | {→/↑/↓} |
215
+ | ROAS | {roas}x | {+/-}% | {→/↑/↓} |
216
+
217
+ **Classification**: {Strong Winner / Emerging / Stable / Underperformer / Kill}
218
+
219
+ ---
220
+
221
+ ## Budget Reallocation Recommendation
222
+
223
+ | Campaign | Current Budget | Recommended | Change | Reason |
224
+ |----------|---------------|-------------|--------|--------|
225
+ | {winner} | ${current} | ${recommended} | +20% | Strong winner, scale |
226
+ | {loser} | ${current} | ${recommended} | -100% | 3x kill rule |
227
+
228
+ **Estimated Impact**: Reallocating ${amount} from underperformers to winners = estimated {X}% CPA reduction
229
+
230
+ ---
231
+
232
+ ## Recommendations
233
+
234
+ ### Immediate (this session)
235
+ 1. **Pause {campaign}** — CPA ${X} exceeds 3x target (${target})
236
+ 2. **Scale {campaign}** — Strong winner, increase budget 20%
237
+
238
+ ### This Week
239
+ 3. **Refresh creative for {campaign}** — CTR declining 15% WoW (ad fatigue)
240
+ 4. **Check tracking for {campaign}** — Conversions dropped 40% with stable clicks
241
+
242
+ ### This Month
243
+ 5. **Test new angles** — Run /agileflow:ads:generate + /agileflow:ads:test-plan
244
+ 6. **Platform diversification** — {platform} ROAS declining, test {other_platform}
245
+ ```
246
+
247
+ Save dashboard to `docs/08-project/ads-tracking/dashboard-{YYYYMMDD}.md`.
248
+ Save baseline to `docs/08-project/ads-tracking/baseline-{YYYYMMDD}.json`.
249
+
250
+ ---
251
+
252
+ ## Present Results
253
+
254
+ ```xml
255
+ <invoke name="AskUserQuestion">
256
+ <parameter name="questions">[{
257
+ "question": "Performance dashboard generated. {winners} winners, {kills} to kill, {anomalies} anomalies. Total spend: ${spend}, blended ROAS: {roas}x.",
258
+ "header": "Next steps",
259
+ "multiSelect": false,
260
+ "options": [
261
+ {"label": "Pause kill-list campaigns now (Recommended)", "description": "Stop wasting ${wasted_amount}/mo on {kill_count} underperforming campaigns"},
262
+ {"label": "Generate replacement ad copy", "description": "Run /agileflow:ads:generate for fatigued campaigns"},
263
+ {"label": "Create test plan for winners", "description": "Run /agileflow:ads:test-plan to scale winning angles"},
264
+ {"label": "Run full ads audit", "description": "Run /agileflow:ads:audit for comprehensive 190-check analysis"}
265
+ ]
266
+ }]</parameter>
267
+ </invoke>
268
+ ```
269
+
270
+ ---
271
+
272
+ <!-- COMPACT_SUMMARY_START -->
273
+ ## Compact Summary
274
+
275
+ **Command**: `/agileflow:ads:track` - Performance tracking with winner detection
276
+
277
+ **Input**: Performance CSV/data from ad platforms
278
+
279
+ **Analysis**: Baselines, winner detection (5 classes), anomaly alerts, trend analysis, budget reallocation
280
+
281
+ **Key Rules**: 3x Kill Rule for CPA, 20% max scaling per week, 100+ clicks for CPC confidence
282
+
283
+ **Output**: KPI dashboard + baseline JSON + recommendations
284
+
285
+ **Usage**: `/agileflow:ads:track <data> [PERIOD=7d] [BASELINE=auto]`
286
+
287
+ **Files**: `docs/08-project/ads-tracking/dashboard-{YYYYMMDD}.md`, `baseline-{YYYYMMDD}.json`
288
+ <!-- COMPACT_SUMMARY_END -->
@@ -0,0 +1,124 @@
1
+ ---
2
+ description: YouTube Ads audit for video campaign types, ad formats, targeting strategy, bidding optimization, and creative effectiveness
3
+ argument-hint: "<account-data>"
4
+ compact_context:
5
+ priority: medium
6
+ preserve_rules:
7
+ - "ACTIVE COMMAND: /agileflow:ads:youtube - YouTube Ads audit"
8
+ - "Inline command - check video formats, campaign types, targeting"
9
+ - "YouTube runs through Google Ads platform"
10
+ state_fields:
11
+ - youtube_score
12
+ ---
13
+
14
+ # /agileflow:ads:youtube
15
+
16
+ Run an inline audit on YouTube advertising campaigns (managed through Google Ads) focusing on video-specific optimization.
17
+
18
+ ---
19
+
20
+ ## Quick Reference
21
+
22
+ ```
23
+ /agileflow:ads:youtube <account-data> # YouTube Ads audit
24
+ ```
25
+
26
+ ---
27
+
28
+ ## The 8 Checks
29
+
30
+ | # | Check | Severity | Pass Criteria |
31
+ |---|-------|----------|---------------|
32
+ | YT-1 | Campaign type alignment | HIGH | Correct campaign type for objective |
33
+ | YT-2 | Video format coverage | HIGH | Multiple formats tested (skippable, bumper, shorts) |
34
+ | YT-3 | Targeting strategy | HIGH | Audience targeting refined beyond demographics |
35
+ | YT-4 | Bidding strategy | HIGH | CPV/CPM/tCPA based on objective |
36
+ | YT-5 | Creative hook in 5 seconds | CRITICAL | First 5 seconds grab attention (before skip) |
37
+ | YT-6 | Companion banner | MEDIUM | Companion banner uploaded for desktop |
38
+ | YT-7 | Frequency capping | HIGH | Frequency cap set (3-5 per week recommended) |
39
+ | YT-8 | Conversion tracking | CRITICAL | YouTube conversions tracked in Google Ads |
40
+
41
+ ---
42
+
43
+ ## Process
44
+
45
+ ### STEP 1: Apply All 8 Checks
46
+
47
+ Review the account data against each check. For YouTube specifically:
48
+
49
+ **Campaign types**:
50
+ | Type | Best For | Format |
51
+ |------|---------|--------|
52
+ | Video Reach | Awareness | Bumper (6s) + In-stream |
53
+ | Video Views | Consideration | Skippable in-stream + in-feed |
54
+ | Video Action | Conversions | Skippable in-stream with CTA |
55
+ | Shorts Ads | Awareness + young demo | Vertical 60s max |
56
+ | Demand Gen | Full-funnel | YouTube + Discover + Gmail |
57
+
58
+ **Creative best practices**:
59
+ - First 5 seconds: Brand + hook (many viewers skip at 5s)
60
+ - CTA overlay throughout (not just at end)
61
+ - Mobile-first: 70%+ YouTube watching is mobile
62
+ - Captions/subtitles: Many watch without sound
63
+ - 15-30 seconds optimal for action campaigns
64
+ - Shorts: Vertical 9:16, authentic style
65
+
66
+ **Targeting options**:
67
+ - Custom Intent: Based on Google search behavior
68
+ - Affinity: Interest-based broad reach
69
+ - In-Market: Active purchase intent
70
+ - Remarketing: Website visitors, video viewers
71
+ - Customer Match: Upload customer lists
72
+ - Topic/placement: Specific channels/videos
73
+
74
+ ### STEP 2: Score
75
+
76
+ ```
77
+ YouTube Score = 100 - sum(severity_deductions)
78
+ ```
79
+
80
+ Deductions: CRITICAL (-15), HIGH (-8), MEDIUM (-4), LOW (-2)
81
+
82
+ ### STEP 3: Output
83
+
84
+ ```markdown
85
+ ## YouTube Ads Audit
86
+
87
+ **YouTube Score**: {X}/100
88
+
89
+ | Check | Status | Notes |
90
+ |-------|--------|-------|
91
+ | YT-1 Campaign types | PASS/FAIL | {types in use} |
92
+ | YT-2 Video formats | PASS/FAIL | {formats tested} |
93
+ | YT-3 Targeting | PASS/FAIL | {targeting methods} |
94
+ | YT-4 Bidding | PASS/FAIL | {strategies used} |
95
+ | YT-5 5-second hook | PASS/FAIL | {creative analysis} |
96
+ | YT-6 Companion banner | PASS/FAIL | {banner status} |
97
+ | YT-7 Frequency cap | PASS/FAIL | {cap settings} |
98
+ | YT-8 Conversion tracking | PASS/FAIL | {tracking status} |
99
+
100
+ ### Key Recommendations
101
+ 1. {Top priority fix}
102
+ 2. {Second priority}
103
+ 3. {Third priority}
104
+
105
+ ### YouTube-Specific Tips
106
+ - Video Action campaigns drive most conversions (skippable in-stream with CTA)
107
+ - Custom Intent audiences (based on search) are YouTube's secret weapon
108
+ - Always create Shorts versions of successful long-form ads
109
+ - Test bumper ads (6s) for remarketing - cheap and high frequency
110
+ ```
111
+
112
+ ---
113
+
114
+ <!-- COMPACT_SUMMARY_START -->
115
+ ## Compact Summary
116
+
117
+ **Command**: `/agileflow:ads:youtube` - YouTube Ads audit
118
+
119
+ **Checks**: 8 (inline, no separate agent)
120
+
121
+ **Key**: 5-second hook, campaign types, Custom Intent targeting, frequency caps
122
+
123
+ **Quick Usage**: `/agileflow:ads:youtube <account-data>`
124
+ <!-- COMPACT_SUMMARY_END -->
@@ -0,0 +1,140 @@
1
+ ---
2
+ description: Paid advertising audit & planning toolkit - multi-platform account audits, campaign planning, budget optimization, and competitive intelligence
3
+ argument-hint: "[subcommand] [account-data]"
4
+ compact_context:
5
+ priority: medium
6
+ preserve_rules:
7
+ - "ACTIVE COMMAND: /agileflow:ads - Paid advertising router"
8
+ - "Route to the appropriate sub-command based on user intent"
9
+ - "If no sub-command specified, show the quick reference guide"
10
+ state_fields:
11
+ - subcommand
12
+ - platforms
13
+ ---
14
+
15
+ # /agileflow:ads
16
+
17
+ Paid advertising audit & planning toolkit for multi-platform account optimization. Routes to specialized sub-commands.
18
+
19
+ ---
20
+
21
+ ## Quick Reference
22
+
23
+ ```
24
+ /agileflow:ads:audit <account-data> # Full multi-platform audit (6 parallel analyzers)
25
+ /agileflow:ads:health <data+url> # Unified marketing health scorecard (ads+SEO+landing)
26
+ /agileflow:ads:generate <product-description> # Bulk ad copy generation (40+ variants)
27
+ /agileflow:ads:test-plan # CPC-first test planning with decision criteria
28
+ /agileflow:ads:track <performance-csv> # Performance tracking with winner detection
29
+ /agileflow:ads:plan # Campaign planning with industry templates
30
+ /agileflow:ads:google <account-data> # Google Ads deep-dive (74 checks)
31
+ /agileflow:ads:meta <account-data> # Meta/Facebook audit (46 checks)
32
+ /agileflow:ads:creative <account-data> # Cross-platform creative review (21 checks)
33
+ /agileflow:ads:budget <account-data> # Budget allocation & bidding strategy
34
+ /agileflow:ads:landing <URL> # Landing page optimization
35
+ /agileflow:ads:competitor <industry> # Competitive intelligence
36
+ /agileflow:ads:linkedin <account-data> # LinkedIn audit (9 checks)
37
+ /agileflow:ads:tiktok <account-data> # TikTok audit (8 checks)
38
+ /agileflow:ads:microsoft <account-data> # Microsoft Ads audit (7 checks)
39
+ /agileflow:ads:youtube <account-data> # YouTube audit
40
+ ```
41
+
42
+ ---
43
+
44
+ ## Sub-Commands
45
+
46
+ | Command | Purpose | When to Use |
47
+ |---------|---------|-------------|
48
+ | **audit** | Full multi-platform audit with Ads Health Score | Starting point for any account |
49
+ | **health** | Unified marketing scorecard (ads+SEO+landing+tracking) | Executive overview of full marketing funnel |
50
+ | **generate** | Bulk ad copy generation (40+ variants) | Creating new ad creative at scale |
51
+ | **test-plan** | CPC-first test planning with decision criteria | Structuring A/B tests with winner/kill rules |
52
+ | **track** | Performance tracking with winner detection | Ongoing campaign monitoring and optimization |
53
+ | **plan** | Campaign planning with industry templates | New campaigns or restructuring |
54
+ | **google** | Google Ads deep-dive (74 checks) | Google-specific optimization |
55
+ | **meta** | Meta/Facebook audit (46 checks) | Meta-specific optimization |
56
+ | **creative** | Cross-platform creative quality | Creative strategy improvement |
57
+ | **budget** | Budget & bidding strategy | Spend optimization |
58
+ | **landing** | Landing page optimization | Conversion rate improvement |
59
+ | **competitor** | Competitive intelligence | Market positioning |
60
+ | **linkedin** | LinkedIn Ads audit | LinkedIn-specific optimization |
61
+ | **tiktok** | TikTok Ads audit | TikTok-specific optimization |
62
+ | **microsoft** | Microsoft Ads audit | Microsoft-specific optimization |
63
+ | **youtube** | YouTube Ads audit | Video campaign optimization |
64
+
65
+ ---
66
+
67
+ ## Account Data Formats
68
+
69
+ The ads commands accept account data in several formats:
70
+
71
+ 1. **Pasted text** - Copy/paste from ad platform exports (CSV, tables)
72
+ 2. **File path** - Point to exported CSV/JSON files
73
+ 3. **Structured description** - Describe your account setup in plain text
74
+ 4. **Screenshots** - Describe what you see in platform dashboards
75
+
76
+ For best results, include:
77
+ - Campaign names, types, and objectives
78
+ - Budget and spend data
79
+ - Conversion tracking setup
80
+ - Targeting settings
81
+ - Ad creative details
82
+ - Performance metrics (CPA, ROAS, CTR, CVR)
83
+
84
+ ---
85
+
86
+ ## Routing Logic
87
+
88
+ If the user provides data without a sub-command, determine intent:
89
+
90
+ 1. **"audit my ads"** -> `/agileflow:ads:audit`
91
+ 2. **"health check" / "marketing score" / "full scorecard"** -> `/agileflow:ads:health`
92
+ 3. **"generate ad copy" / "write ads" / "bulk ads" / "ad variants"** -> `/agileflow:ads:generate`
93
+ 4. **"test plan" / "A/B test" / "split test" / "CPC test"** -> `/agileflow:ads:test-plan`
94
+ 5. **"track performance" / "dashboard" / "winners" / "KPIs"** -> `/agileflow:ads:track`
95
+ 6. **"plan a campaign"** -> `/agileflow:ads:plan`
96
+ 7. **"check my Google Ads"** -> `/agileflow:ads:google`
97
+ 8. **"Meta" / "Facebook ads"** -> `/agileflow:ads:meta`
98
+ 9. **"creative review"** -> `/agileflow:ads:creative`
99
+ 10. **"budget" / "spend" / "bidding"** -> `/agileflow:ads:budget`
100
+ 11. **"landing page"** -> `/agileflow:ads:landing`
101
+ 12. **"competitor" / "competitive"** -> `/agileflow:ads:competitor`
102
+ 13. **"LinkedIn"** -> `/agileflow:ads:linkedin`
103
+ 14. **"TikTok"** -> `/agileflow:ads:tiktok`
104
+ 15. **"Microsoft" / "Bing"** -> `/agileflow:ads:microsoft`
105
+ 16. **"YouTube" / "video ads"** -> `/agileflow:ads:youtube`
106
+ 17. **Unclear** -> Show the quick reference and ask which analysis they want
107
+
108
+ ---
109
+
110
+ ## If No Sub-Command Specified
111
+
112
+ Show the quick reference table above and ask:
113
+
114
+ ```xml
115
+ <invoke name="AskUserQuestion">
116
+ <parameter name="questions">[{
117
+ "question": "Which advertising analysis would you like to run?",
118
+ "header": "Ads Analysis",
119
+ "multiSelect": false,
120
+ "options": [
121
+ {"label": "Full multi-platform audit (Recommended)", "description": "Comprehensive 6-analyzer audit with Ads Health Score 0-100"},
122
+ {"label": "Marketing health scorecard", "description": "Unified score across ads + SEO + landing pages + tracking"},
123
+ {"label": "Generate ad copy (40+ variants)", "description": "Bulk ad copy from product description with ICP angles + platform CSV"},
124
+ {"label": "Create A/B test plan", "description": "CPC-first testing with budget allocation and winner/kill rules"}
125
+ ]
126
+ }]</parameter>
127
+ </invoke>
128
+ ```
129
+
130
+ ---
131
+
132
+ <!-- COMPACT_SUMMARY_START -->
133
+ ## Compact Summary
134
+
135
+ **Command**: `/agileflow:ads` - Paid advertising audit & planning router
136
+
137
+ **Sub-commands**: audit, health, generate, test-plan, track, plan, google, meta, creative, budget, landing, competitor, linkedin, tiktok, microsoft, youtube
138
+
139
+ **Quick start**: `/agileflow:ads:audit <account-data>` for full analysis
140
+ <!-- COMPACT_SUMMARY_END -->
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Assign or reassign a story to an owner
3
+ phase: pre-story
3
4
  argument-hint: "STORY=<US-ID> NEW_OWNER=<id> [NEW_STATUS=<status>] [NOTE=<text>]"
4
5
  compact_context:
5
6
  priority: high
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Audit story completion - tests + acceptance criteria verification (GSD pattern)
3
+ phase: post-impl
3
4
  argument-hint: "STORY=<US-ID>"
4
5
  compact_context:
5
6
  priority: high
@@ -162,25 +163,61 @@ Parse results:
162
163
 
163
164
  ### Step 3: Verify Acceptance Criteria
164
165
 
165
- Display each AC from status.json and ask user to verify:
166
+ **3a. Run AC-to-Test Matcher (automated pre-check)**
167
+
168
+ Before asking the user to verify AC manually, run the automated AC-to-test matcher:
169
+
170
+ ```bash
171
+ node -e "
172
+ const { matchACToTests } = require('./.agileflow/scripts/lib/ac-test-matcher');
173
+ const result = matchACToTests('{{STORY_ID}}');
174
+ console.log(JSON.stringify(result, null, 2));
175
+ "
176
+ ```
177
+
178
+ This returns matched/unmatched AC with confidence levels. Use the results to pre-populate the checklist.
179
+
180
+ **3b. Display AC checklist with auto-matched items**
181
+
182
+ Show each AC with auto-match status. High-confidence matches are pre-checked:
166
183
 
167
184
  ```xml
168
185
  <invoke name="AskUserQuestion">
169
186
  <parameter name="questions">[{
170
- "question": "Verify each acceptance criterion is met for {{STORY_ID}}:",
187
+ "question": "Verify acceptance criteria for {{STORY_ID}} ({{matched}}/{{total}} auto-matched to tests):",
171
188
  "header": "AC Check",
172
189
  "multiSelect": true,
173
190
  "options": [
174
- {"label": "{{AC_1}}", "description": "Mark if complete"},
175
- {"label": "{{AC_2}}", "description": "Mark if complete"},
176
- {"label": "{{AC_3}}", "description": "Mark if complete"}
191
+ {"label": "AC1: {{AC_1}} [auto-verified]", "description": "Matched to {{test_file}} (high confidence)"},
192
+ {"label": "AC2: {{AC_2}} [auto-verified]", "description": "Matched to {{test_file}} (medium confidence)"},
193
+ {"label": "AC3: {{AC_3}} [needs manual check]", "description": "No matching tests found - verify manually"}
177
194
  ]
178
195
  }]</parameter>
179
196
  </invoke>
180
197
  ```
181
198
 
199
+ Auto-matched AC (high/medium confidence) should be pre-selected. Unmatched AC require manual verification.
200
+
201
+ **3c. Write ac_status to status.json**
202
+
203
+ After verification, write structured `ac_status` to the story in status.json:
204
+
205
+ ```json
206
+ {
207
+ "ac_status": {
208
+ "0": "auto-verified",
209
+ "1": "auto-verified",
210
+ "2": "verified",
211
+ "3": "unverified"
212
+ },
213
+ "ac_coverage": 0.75
214
+ }
215
+ ```
216
+
217
+ Values: `auto-verified` (test match), `verified` (manual confirm), `likely-covered` (medium confidence), `unverified` (not confirmed)
218
+
182
219
  Calculate verification rate:
183
- - Count selected (verified) vs total AC
220
+ - Count verified + auto-verified vs total AC
184
221
  - 100% = All verified
185
222
  - <100% = Partial
186
223