agileflow 3.4.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.
- package/CHANGELOG.md +5 -0
- package/README.md +4 -4
- package/package.json +1 -1
- package/scripts/agileflow-welcome.js +79 -0
- package/scripts/claude-tmux.sh +12 -36
- package/scripts/lib/ac-test-matcher.js +452 -0
- package/scripts/lib/audit-registry.js +58 -2
- package/scripts/lib/configure-features.js +35 -0
- package/scripts/lib/model-profiles.js +25 -5
- package/scripts/lib/quality-gates.js +163 -0
- package/scripts/lib/signal-detectors.js +43 -0
- package/scripts/lib/status-writer.js +255 -0
- package/scripts/lib/story-claiming.js +128 -45
- package/scripts/lib/task-sync.js +32 -38
- package/scripts/lib/tmux-audit-monitor.js +611 -0
- package/scripts/lib/tool-registry.yaml +241 -0
- package/scripts/lib/tool-shed.js +441 -0
- package/scripts/native-team-observer.js +219 -0
- package/scripts/obtain-context.js +14 -0
- package/scripts/ralph-loop.js +30 -5
- package/scripts/smart-detect.js +21 -0
- package/scripts/spawn-audit-sessions.js +372 -44
- package/scripts/team-manager.js +19 -0
- package/src/core/agents/a11y-analyzer-aria.md +155 -0
- package/src/core/agents/a11y-analyzer-forms.md +162 -0
- package/src/core/agents/a11y-analyzer-keyboard.md +175 -0
- package/src/core/agents/a11y-analyzer-semantic.md +153 -0
- package/src/core/agents/a11y-analyzer-visual.md +158 -0
- package/src/core/agents/a11y-consensus.md +248 -0
- package/src/core/agents/ads-consensus.md +74 -0
- package/src/core/agents/ads-generate.md +145 -0
- package/src/core/agents/ads-performance-tracker.md +197 -0
- package/src/core/agents/api-quality-analyzer-conventions.md +148 -0
- package/src/core/agents/api-quality-analyzer-docs.md +176 -0
- package/src/core/agents/api-quality-analyzer-errors.md +183 -0
- package/src/core/agents/api-quality-analyzer-pagination.md +171 -0
- package/src/core/agents/api-quality-analyzer-versioning.md +143 -0
- package/src/core/agents/api-quality-consensus.md +214 -0
- package/src/core/agents/arch-analyzer-circular.md +148 -0
- package/src/core/agents/arch-analyzer-complexity.md +171 -0
- package/src/core/agents/arch-analyzer-coupling.md +146 -0
- package/src/core/agents/arch-analyzer-layering.md +151 -0
- package/src/core/agents/arch-analyzer-patterns.md +162 -0
- package/src/core/agents/arch-consensus.md +227 -0
- package/src/core/commands/adr.md +1 -0
- package/src/core/commands/ads/generate.md +238 -0
- package/src/core/commands/ads/health.md +327 -0
- package/src/core/commands/ads/test-plan.md +317 -0
- package/src/core/commands/ads/track.md +288 -0
- package/src/core/commands/ads.md +28 -16
- package/src/core/commands/assign.md +1 -0
- package/src/core/commands/audit.md +43 -6
- package/src/core/commands/babysit.md +90 -6
- package/src/core/commands/baseline.md +1 -0
- package/src/core/commands/blockers.md +1 -0
- package/src/core/commands/board.md +1 -0
- package/src/core/commands/changelog.md +1 -0
- package/src/core/commands/choose.md +1 -0
- package/src/core/commands/ci.md +1 -0
- package/src/core/commands/code/accessibility.md +347 -0
- package/src/core/commands/code/api.md +297 -0
- package/src/core/commands/code/architecture.md +297 -0
- package/src/core/commands/code/completeness.md +43 -6
- package/src/core/commands/code/legal.md +43 -6
- package/src/core/commands/code/logic.md +43 -6
- package/src/core/commands/code/performance.md +43 -6
- package/src/core/commands/code/security.md +43 -6
- package/src/core/commands/code/test.md +43 -6
- package/src/core/commands/configure.md +1 -0
- package/src/core/commands/council.md +1 -0
- package/src/core/commands/deploy.md +1 -0
- package/src/core/commands/diagnose.md +1 -0
- package/src/core/commands/docs.md +1 -0
- package/src/core/commands/epic/edit.md +213 -0
- package/src/core/commands/epic.md +1 -0
- package/src/core/commands/export.md +238 -0
- package/src/core/commands/help.md +16 -1
- package/src/core/commands/ideate/discover.md +7 -3
- package/src/core/commands/ideate/features.md +65 -4
- package/src/core/commands/ideate/new.md +158 -124
- package/src/core/commands/impact.md +1 -0
- package/src/core/commands/learn/explain.md +118 -0
- package/src/core/commands/learn/glossary.md +135 -0
- package/src/core/commands/learn/patterns.md +138 -0
- package/src/core/commands/learn/tour.md +126 -0
- package/src/core/commands/migrate/codemods.md +151 -0
- package/src/core/commands/migrate/plan.md +131 -0
- package/src/core/commands/migrate/scan.md +114 -0
- package/src/core/commands/migrate/validate.md +119 -0
- package/src/core/commands/multi-expert.md +1 -0
- package/src/core/commands/pr.md +1 -0
- package/src/core/commands/review.md +1 -0
- package/src/core/commands/sprint.md +1 -0
- package/src/core/commands/status/undo.md +191 -0
- package/src/core/commands/status.md +1 -0
- package/src/core/commands/story/edit.md +204 -0
- package/src/core/commands/story/view.md +29 -7
- package/src/core/commands/story-validate.md +1 -0
- package/src/core/commands/story.md +1 -0
- package/src/core/commands/tdd.md +1 -0
- package/src/core/commands/team/start.md +10 -6
- package/src/core/commands/tests.md +1 -0
- package/src/core/commands/verify.md +27 -1
- package/src/core/commands/workflow.md +2 -0
- package/src/core/teams/backend.json +41 -0
- package/src/core/teams/frontend.json +41 -0
- package/src/core/teams/qa.json +41 -0
- package/src/core/teams/solo.json +35 -0
- package/src/core/templates/agileflow-metadata.json +5 -0
- package/tools/cli/commands/setup.js +85 -3
- package/tools/cli/commands/update.js +42 -0
- package/tools/cli/installers/ide/claude-code.js +68 -0
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Unified marketing health scorecard — runs ads, SEO, landing page, and tracking audits in parallel to produce a combined score with cross-domain insights
|
|
3
|
+
argument-hint: "<account-data-and-url> [SCOPE=all]"
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: high
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:ads:health - Unified marketing health scorecard"
|
|
8
|
+
- "CRITICAL: Deploy ads audit + SEO audit + landing page analysis IN PARALLEL"
|
|
9
|
+
- "CRITICAL: Combine scores into unified Marketing Health Score with domain weights"
|
|
10
|
+
- "Domain weights: Ads 40%, SEO 25%, Landing Pages 20%, Tracking 15%"
|
|
11
|
+
- "Cross-domain insights: tracking gaps affect ads + SEO, landing page quality affects ad ROAS"
|
|
12
|
+
state_fields:
|
|
13
|
+
- ads_score
|
|
14
|
+
- seo_score
|
|
15
|
+
- landing_score
|
|
16
|
+
- tracking_score
|
|
17
|
+
- unified_score
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# /agileflow:ads:health
|
|
21
|
+
|
|
22
|
+
Unified marketing health scorecard that orchestrates ads, SEO, landing page, and tracking audits in parallel, then synthesizes into a single Marketing Health Score with cross-domain insights.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Quick Reference
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
/agileflow:ads:health <account-data> <landing-page-url> # Full health check
|
|
30
|
+
/agileflow:ads:health <account-data> SCOPE=ads,seo # Ads + SEO only
|
|
31
|
+
/agileflow:ads:health <account-data> SCOPE=ads,landing # Ads + landing pages only
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## How It Works
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
+-------------------------------------------------------------------+
|
|
40
|
+
| /agileflow:ads:health |
|
|
41
|
+
| |
|
|
42
|
+
| 1. Parse inputs (ad data + URLs) |
|
|
43
|
+
| 2. Deploy domain audits IN PARALLEL |
|
|
44
|
+
| 3. Collect all domain scores |
|
|
45
|
+
| 4. Cross-reference findings across domains |
|
|
46
|
+
| 5. Calculate unified Marketing Health Score |
|
|
47
|
+
| 6. Generate shareable scorecard |
|
|
48
|
+
+-------------------------------------------------------------------+
|
|
49
|
+
|
|
50
|
+
+-----------+ +----------+ +-----------+ +----------+
|
|
51
|
+
| Ads | | SEO | | Landing | | Tracking |
|
|
52
|
+
| Audit | | Audit | | Page | | Audit |
|
|
53
|
+
| (6 agents)| |(6 agents)| | Analysis | | (shared) |
|
|
54
|
+
+-----+-----+ +----+-----+ +-----+-----+ +----+-----+
|
|
55
|
+
| | | |
|
|
56
|
+
+---------------+---------------+---------------+
|
|
57
|
+
|
|
|
58
|
+
+-----------+-----------+
|
|
59
|
+
| Health Score |
|
|
60
|
+
| Synthesis & |
|
|
61
|
+
| Cross-Domain |
|
|
62
|
+
| Insights |
|
|
63
|
+
+-----------------------+
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Arguments
|
|
69
|
+
|
|
70
|
+
| Argument | Values | Default | Description |
|
|
71
|
+
|----------|--------|---------|-------------|
|
|
72
|
+
| account-data | Text, file, or description | Required for ads | Ad account data for ads audit |
|
|
73
|
+
| URL | Landing page URL(s) | Optional | URLs for SEO + landing page analysis |
|
|
74
|
+
| SCOPE | all, ads, seo, landing, tracking | all | Which domains to include |
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Step-by-Step Process
|
|
79
|
+
|
|
80
|
+
### STEP 1: Parse Inputs
|
|
81
|
+
|
|
82
|
+
Accept a combination of:
|
|
83
|
+
- **Ad account data** (pasted, file, or described) — triggers ads audit
|
|
84
|
+
- **URL(s)** — triggers SEO audit + landing page analysis
|
|
85
|
+
- **Both** — triggers full health check
|
|
86
|
+
|
|
87
|
+
If insufficient data provided:
|
|
88
|
+
|
|
89
|
+
```xml
|
|
90
|
+
<invoke name="AskUserQuestion">
|
|
91
|
+
<parameter name="questions">[
|
|
92
|
+
{
|
|
93
|
+
"question": "What data do you have for the health check? More data = more comprehensive score.",
|
|
94
|
+
"header": "Data Sources",
|
|
95
|
+
"multiSelect": true,
|
|
96
|
+
"options": [
|
|
97
|
+
{"label": "Ad account data (Recommended)", "description": "Paste from Google Ads, Meta Ads Manager — enables ads audit (40% of score)"},
|
|
98
|
+
{"label": "Website/landing page URL", "description": "Your main URL for SEO + landing page analysis (45% of score)"},
|
|
99
|
+
{"label": "Tracking setup description", "description": "Describe your GTM, pixels, conversion events (15% of score)"}
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
]</parameter>
|
|
103
|
+
</invoke>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### STEP 2: Deploy Domain Audits in Parallel
|
|
107
|
+
|
|
108
|
+
**CRITICAL**: Deploy ALL applicable audits in a SINGLE message with multiple Task calls using `run_in_background: true`.
|
|
109
|
+
|
|
110
|
+
#### Ads Audit (if ad data provided)
|
|
111
|
+
|
|
112
|
+
```xml
|
|
113
|
+
<invoke name="Task">
|
|
114
|
+
<parameter name="description">Ads audit for health scorecard</parameter>
|
|
115
|
+
<parameter name="prompt">Run a complete ads audit on this account data. Apply all checks from all 6 analyzers (Google, Meta, Budget, Creative, Tracking, Compliance). Calculate the Ads Health Score.
|
|
116
|
+
|
|
117
|
+
ACCOUNT DATA:
|
|
118
|
+
{account_data}
|
|
119
|
+
|
|
120
|
+
OUTPUT: Your Ads Health Score X/100 with category breakdown and top 5 findings by severity.</parameter>
|
|
121
|
+
<parameter name="subagent_type">ads-consensus</parameter>
|
|
122
|
+
<parameter name="run_in_background">true</parameter>
|
|
123
|
+
</invoke>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### SEO Audit (if URL provided)
|
|
127
|
+
|
|
128
|
+
```xml
|
|
129
|
+
<invoke name="Task">
|
|
130
|
+
<parameter name="description">SEO audit for health scorecard</parameter>
|
|
131
|
+
<parameter name="prompt">Run a complete SEO audit on this URL. Apply all checks from all 6 analyzers (Technical, Content, Schema, Performance, Images, Sitemap). Calculate the SEO Health Score.
|
|
132
|
+
|
|
133
|
+
URL: {url}
|
|
134
|
+
|
|
135
|
+
OUTPUT: Your SEO Health Score X/100 with category breakdown and top 5 findings by severity.</parameter>
|
|
136
|
+
<parameter name="subagent_type">seo-consensus</parameter>
|
|
137
|
+
<parameter name="run_in_background">true</parameter>
|
|
138
|
+
</invoke>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
#### Landing Page Analysis (if URL provided)
|
|
142
|
+
|
|
143
|
+
```xml
|
|
144
|
+
<invoke name="Task">
|
|
145
|
+
<parameter name="description">Landing page analysis for health scorecard</parameter>
|
|
146
|
+
<parameter name="prompt">Analyze this landing page for conversion optimization. Score across these dimensions:
|
|
147
|
+
|
|
148
|
+
URL: {url}
|
|
149
|
+
|
|
150
|
+
## Landing Page Scoring (100 points total)
|
|
151
|
+
|
|
152
|
+
### Above-the-Fold (30 points)
|
|
153
|
+
- Clear headline matching ad intent (10)
|
|
154
|
+
- Visible CTA above fold (10)
|
|
155
|
+
- Social proof visible without scrolling (5)
|
|
156
|
+
- Load time under 3 seconds (5)
|
|
157
|
+
|
|
158
|
+
### Message Match (25 points)
|
|
159
|
+
- Headline matches ad copy themes (10)
|
|
160
|
+
- Value proposition clarity (10)
|
|
161
|
+
- Single clear conversion goal (5)
|
|
162
|
+
|
|
163
|
+
### Trust & Proof (20 points)
|
|
164
|
+
- Customer testimonials/logos (8)
|
|
165
|
+
- Security badges/certifications (4)
|
|
166
|
+
- Clear contact information (4)
|
|
167
|
+
- Privacy policy linked (4)
|
|
168
|
+
|
|
169
|
+
### Form/CTA Optimization (15 points)
|
|
170
|
+
- Minimal form fields for stage (5)
|
|
171
|
+
- CTA button contrast and copy (5)
|
|
172
|
+
- Multiple CTAs on long pages (5)
|
|
173
|
+
|
|
174
|
+
### Mobile Experience (10 points)
|
|
175
|
+
- Responsive layout (4)
|
|
176
|
+
- Touch-friendly buttons (3)
|
|
177
|
+
- Fast mobile load (3)
|
|
178
|
+
|
|
179
|
+
OUTPUT: Landing Page Score X/100 with breakdown and top 5 recommendations.</parameter>
|
|
180
|
+
<parameter name="subagent_type">general-purpose</parameter>
|
|
181
|
+
<parameter name="run_in_background">true</parameter>
|
|
182
|
+
</invoke>
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
#### Tracking Audit (always runs if any data provided)
|
|
186
|
+
|
|
187
|
+
The tracking score is extracted from the ads audit (if run) or assessed independently from the URL/description.
|
|
188
|
+
|
|
189
|
+
### STEP 3: Collect Results
|
|
190
|
+
|
|
191
|
+
Wait for all background tasks to complete using TaskOutput with `block: true`.
|
|
192
|
+
|
|
193
|
+
### STEP 4: Cross-Domain Insights
|
|
194
|
+
|
|
195
|
+
After collecting all scores, identify cross-domain correlations:
|
|
196
|
+
|
|
197
|
+
| Pattern | Domains | Insight |
|
|
198
|
+
|---------|---------|---------|
|
|
199
|
+
| Tracking broken + low ads ROAS | Tracking + Ads | "Your ROAS numbers are unreliable — fix tracking first" |
|
|
200
|
+
| Slow landing page + high CPC | Landing + Ads | "Slow pages increase bounce rate, raising your CPC" |
|
|
201
|
+
| Missing schema + low organic | SEO + Landing | "No structured data means fewer rich snippets in SERPs" |
|
|
202
|
+
| Ad copy mismatch + low CVR | Ads + Landing | "Your ads promise X but landing page delivers Y" |
|
|
203
|
+
| No retargeting pixel + high bounce | Tracking + Landing | "Losing bounced visitors with no way to retarget them" |
|
|
204
|
+
|
|
205
|
+
### STEP 5: Calculate Unified Score
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
Marketing Health Score = sum(Domain Score * Domain Weight)
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**Domain Weights:**
|
|
212
|
+
| Domain | Weight | Why |
|
|
213
|
+
|--------|--------|-----|
|
|
214
|
+
| Ads | 40% | Direct spend efficiency — highest dollar impact |
|
|
215
|
+
| SEO | 25% | Organic acquisition — compounding long-term value |
|
|
216
|
+
| Landing Pages | 20% | Conversion rate — multiplier for all traffic |
|
|
217
|
+
| Tracking | 15% | Data quality — foundation for all optimization |
|
|
218
|
+
|
|
219
|
+
**If a domain is excluded** (not in SCOPE or no data), redistribute its weight proportionally to included domains.
|
|
220
|
+
|
|
221
|
+
**Grade Scale:**
|
|
222
|
+
| Grade | Score | Meaning |
|
|
223
|
+
|-------|-------|---------|
|
|
224
|
+
| A | 90-100 | Excellent — optimized marketing funnel |
|
|
225
|
+
| B | 80-89 | Good — minor improvements available |
|
|
226
|
+
| C | 70-79 | Needs Work — significant gaps in the funnel |
|
|
227
|
+
| D | 60-69 | Poor — major issues across multiple domains |
|
|
228
|
+
| F | < 60 | Critical — fundamental problems, likely wasting significant spend |
|
|
229
|
+
|
|
230
|
+
### STEP 6: Generate Scorecard
|
|
231
|
+
|
|
232
|
+
Output a compact, shareable scorecard:
|
|
233
|
+
|
|
234
|
+
```markdown
|
|
235
|
+
# Marketing Health Scorecard
|
|
236
|
+
|
|
237
|
+
**Generated**: {YYYY-MM-DD}
|
|
238
|
+
**Account**: {name/description}
|
|
239
|
+
**Scope**: {domains audited}
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Marketing Health Score: {X}/100 ({grade})
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
Ads: ████████████████████░░░░░░ 78/100 (40%)
|
|
247
|
+
SEO: ██████████████░░░░░░░░░░░░ 58/100 (25%)
|
|
248
|
+
Landing: ████████████████████████░░ 92/100 (20%)
|
|
249
|
+
Tracking: ██████░░░░░░░░░░░░░░░░░░░░ 25/100 (15%)
|
|
250
|
+
──────────────────────────
|
|
251
|
+
Overall: ██████████████████░░░░░░░░ 71/100 (C)
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
| Domain | Score | Grade | Top Issue |
|
|
255
|
+
|--------|-------|-------|-----------|
|
|
256
|
+
| **Ads** | {X}/100 | {grade} | {top finding} |
|
|
257
|
+
| **SEO** | {X}/100 | {grade} | {top finding} |
|
|
258
|
+
| **Landing Pages** | {X}/100 | {grade} | {top finding} |
|
|
259
|
+
| **Tracking** | {X}/100 | {grade} | {top finding} |
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Cross-Domain Insights
|
|
264
|
+
|
|
265
|
+
1. **{insight title}** ({domains affected})
|
|
266
|
+
{description and impact}
|
|
267
|
+
|
|
268
|
+
2. **{insight title}** ({domains affected})
|
|
269
|
+
{description and impact}
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Priority Actions (by estimated $ impact)
|
|
274
|
+
|
|
275
|
+
| # | Action | Domain | Impact | Effort |
|
|
276
|
+
|---|--------|--------|--------|--------|
|
|
277
|
+
| 1 | {action} | {domain} | {$$} | {Low/Med/High} |
|
|
278
|
+
| 2 | {action} | {domain} | {$$} | {Low/Med/High} |
|
|
279
|
+
| 3 | {action} | {domain} | {$$} | {Low/Med/High} |
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Domain Deep-Dives
|
|
284
|
+
|
|
285
|
+
Run individual audits for detailed findings:
|
|
286
|
+
- `/agileflow:ads:audit` — Full 190-check ads analysis
|
|
287
|
+
- `/agileflow:seo:audit` — Full 6-analyzer SEO audit
|
|
288
|
+
- `/agileflow:ads:landing` — Detailed landing page optimization
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
Save scorecard to `docs/08-project/health-scorecards/health-scorecard-{YYYYMMDD}.md`.
|
|
292
|
+
|
|
293
|
+
### STEP 7: Present Results
|
|
294
|
+
|
|
295
|
+
```xml
|
|
296
|
+
<invoke name="AskUserQuestion">
|
|
297
|
+
<parameter name="questions">[{
|
|
298
|
+
"question": "Marketing Health Score: {X}/100 ({grade}). Lowest domain: {domain} ({score}/100). {N} cross-domain insights found.",
|
|
299
|
+
"header": "Next steps",
|
|
300
|
+
"multiSelect": false,
|
|
301
|
+
"options": [
|
|
302
|
+
{"label": "Fix {lowest_domain} issues first (Recommended)", "description": "{top_issue} — estimated ${impact}/mo impact"},
|
|
303
|
+
{"label": "Deep-dive ads audit", "description": "Run full /agileflow:ads:audit for 190-check analysis"},
|
|
304
|
+
{"label": "Deep-dive SEO audit", "description": "Run full /agileflow:seo:audit for comprehensive SEO analysis"},
|
|
305
|
+
{"label": "Generate fix artifacts", "description": "Auto-generate corrected ad copy, schema markup, and meta tags"}
|
|
306
|
+
]
|
|
307
|
+
}]</parameter>
|
|
308
|
+
</invoke>
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
314
|
+
## Compact Summary
|
|
315
|
+
|
|
316
|
+
**Command**: `/agileflow:ads:health` - Unified marketing health scorecard
|
|
317
|
+
|
|
318
|
+
**What It Does**: Deploy ads + SEO + landing page + tracking audits in parallel -> cross-domain insights -> Marketing Health Score 0-100
|
|
319
|
+
|
|
320
|
+
**Domain Weights**: Ads 40%, SEO 25%, Landing Pages 20%, Tracking 15%
|
|
321
|
+
|
|
322
|
+
**Output**: Shareable scorecard with bar chart, cross-domain insights, and priority actions
|
|
323
|
+
|
|
324
|
+
**Usage**: `/agileflow:ads:health <account-data> <url> [SCOPE=all]`
|
|
325
|
+
|
|
326
|
+
**File**: `docs/08-project/health-scorecards/health-scorecard-{YYYYMMDD}.md`
|
|
327
|
+
<!-- COMPACT_SUMMARY_END -->
|
|
@@ -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 -->
|