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.
- package/CHANGELOG.md +10 -0
- package/README.md +6 -6
- package/lib/skill-loader.js +0 -1
- package/package.json +1 -1
- package/scripts/agileflow-statusline.sh +81 -0
- package/scripts/agileflow-welcome.js +79 -0
- package/scripts/claude-tmux.sh +90 -23
- package/scripts/claude-watchdog.sh +225 -0
- package/scripts/generators/agent-registry.js +14 -1
- package/scripts/generators/inject-babysit.js +22 -9
- package/scripts/generators/inject-help.js +19 -9
- package/scripts/lib/ac-test-matcher.js +452 -0
- package/scripts/lib/audit-cleanup.js +250 -0
- package/scripts/lib/audit-registry.js +304 -0
- package/scripts/lib/configure-features.js +35 -0
- package/scripts/lib/feature-catalog.js +3 -3
- package/scripts/lib/gate-enforcer.js +295 -0
- package/scripts/lib/model-profiles.js +118 -0
- package/scripts/lib/quality-gates.js +163 -0
- package/scripts/lib/signal-detectors.js +44 -1
- package/scripts/lib/skill-catalog.js +557 -0
- package/scripts/lib/skill-recommender.js +311 -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/tdd-phase-manager.js +455 -0
- package/scripts/lib/team-events.js +34 -3
- package/scripts/lib/tmux-audit-monitor.js +611 -0
- package/scripts/lib/tmux-group-colors.js +113 -0
- package/scripts/lib/tool-registry.yaml +241 -0
- package/scripts/lib/tool-shed.js +441 -0
- package/scripts/messaging-bridge.js +209 -1
- 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 +877 -0
- package/scripts/team-manager.js +56 -16
- package/scripts/tmux-close-windows.sh +180 -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-audit-budget.md +181 -0
- package/src/core/agents/ads-audit-compliance.md +169 -0
- package/src/core/agents/ads-audit-creative.md +164 -0
- package/src/core/agents/ads-audit-google.md +226 -0
- package/src/core/agents/ads-audit-meta.md +183 -0
- package/src/core/agents/ads-audit-tracking.md +197 -0
- package/src/core/agents/ads-consensus.md +396 -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/agents/brainstorm-analyzer-features.md +169 -0
- package/src/core/agents/brainstorm-analyzer-growth.md +161 -0
- package/src/core/agents/brainstorm-analyzer-integration.md +172 -0
- package/src/core/agents/brainstorm-analyzer-market.md +147 -0
- package/src/core/agents/brainstorm-analyzer-ux.md +167 -0
- package/src/core/agents/brainstorm-consensus.md +237 -0
- package/src/core/agents/completeness-consensus.md +5 -5
- package/src/core/agents/perf-consensus.md +2 -2
- package/src/core/agents/security-consensus.md +2 -2
- package/src/core/agents/seo-analyzer-content.md +167 -0
- package/src/core/agents/seo-analyzer-images.md +187 -0
- package/src/core/agents/seo-analyzer-performance.md +206 -0
- package/src/core/agents/seo-analyzer-schema.md +176 -0
- package/src/core/agents/seo-analyzer-sitemap.md +172 -0
- package/src/core/agents/seo-analyzer-technical.md +144 -0
- package/src/core/agents/seo-consensus.md +289 -0
- package/src/core/agents/test-consensus.md +2 -2
- package/src/core/commands/adr.md +1 -0
- package/src/core/commands/ads/audit.md +375 -0
- package/src/core/commands/ads/budget.md +97 -0
- package/src/core/commands/ads/competitor.md +112 -0
- package/src/core/commands/ads/creative.md +85 -0
- package/src/core/commands/ads/generate.md +238 -0
- package/src/core/commands/ads/google.md +112 -0
- package/src/core/commands/ads/health.md +327 -0
- package/src/core/commands/ads/landing.md +119 -0
- package/src/core/commands/ads/linkedin.md +112 -0
- package/src/core/commands/ads/meta.md +91 -0
- package/src/core/commands/ads/microsoft.md +115 -0
- package/src/core/commands/ads/plan.md +321 -0
- package/src/core/commands/ads/test-plan.md +317 -0
- package/src/core/commands/ads/tiktok.md +129 -0
- package/src/core/commands/ads/track.md +288 -0
- package/src/core/commands/ads/youtube.md +124 -0
- package/src/core/commands/ads.md +140 -0
- package/src/core/commands/assign.md +1 -0
- package/src/core/commands/audit.md +43 -6
- package/src/core/commands/babysit.md +315 -1266
- 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/{audit → code}/completeness.md +72 -25
- package/src/core/commands/{audit → code}/legal.md +63 -16
- package/src/core/commands/{audit → code}/logic.md +64 -16
- package/src/core/commands/{audit → code}/performance.md +67 -20
- package/src/core/commands/{audit → code}/security.md +69 -19
- package/src/core/commands/{audit → code}/test.md +67 -20
- 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/{discovery → ideate}/brief.md +12 -12
- package/src/core/commands/{discovery/new.md → ideate/discover.md} +20 -16
- package/src/core/commands/ideate/features.md +496 -0
- 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/seo/audit.md +373 -0
- package/src/core/commands/seo/competitor.md +174 -0
- package/src/core/commands/seo/content.md +107 -0
- package/src/core/commands/seo/geo.md +229 -0
- package/src/core/commands/seo/hreflang.md +140 -0
- package/src/core/commands/seo/images.md +96 -0
- package/src/core/commands/seo/page.md +198 -0
- package/src/core/commands/seo/plan.md +163 -0
- package/src/core/commands/seo/programmatic.md +131 -0
- package/src/core/commands/seo/references/cwv-thresholds.md +64 -0
- package/src/core/commands/seo/references/eeat-framework.md +110 -0
- package/src/core/commands/seo/references/quality-gates.md +91 -0
- package/src/core/commands/seo/references/schema-types.md +102 -0
- package/src/core/commands/seo/schema.md +183 -0
- package/src/core/commands/seo/sitemap.md +97 -0
- package/src/core/commands/seo/technical.md +100 -0
- package/src/core/commands/seo.md +107 -0
- package/src/core/commands/skill/list.md +68 -212
- package/src/core/commands/skill/recommend.md +216 -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-next.md +238 -0
- package/src/core/commands/tdd.md +211 -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/experts/_core-expertise.yaml +105 -0
- package/src/core/experts/analytics/expertise.yaml +5 -99
- package/src/core/experts/codebase-query/expertise.yaml +3 -72
- package/src/core/experts/compliance/expertise.yaml +6 -72
- package/src/core/experts/database/expertise.yaml +9 -52
- package/src/core/experts/documentation/expertise.yaml +7 -140
- package/src/core/experts/integrations/expertise.yaml +7 -127
- package/src/core/experts/mentor/expertise.yaml +8 -35
- package/src/core/experts/monitoring/expertise.yaml +7 -49
- package/src/core/experts/performance/expertise.yaml +1 -26
- package/src/core/experts/security/expertise.yaml +9 -34
- package/src/core/experts/ui/expertise.yaml +6 -36
- package/src/core/knowledge/ads/ad-audit-checklist-scoring.md +424 -0
- package/src/core/knowledge/ads/ad-optimization-logic.md +590 -0
- package/src/core/knowledge/ads/ad-technical-specifications.md +385 -0
- package/src/core/knowledge/ads/definitive-advertising-reference-2026.md +506 -0
- package/src/core/knowledge/ads/paid-advertising-research-2026.md +445 -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 +20 -1
- package/tools/cli/commands/setup.js +85 -3
- package/tools/cli/commands/update.js +42 -0
- package/tools/cli/installers/ide/_base-ide.js +42 -5
- package/tools/cli/installers/ide/claude-code.js +71 -3
- package/tools/cli/lib/content-injector.js +160 -12
- package/tools/cli/lib/docs-setup.js +1 -1
- package/src/core/commands/skill/create.md +0 -698
- package/src/core/commands/skill/delete.md +0 -316
- package/src/core/commands/skill/edit.md +0 -359
- package/src/core/commands/skill/test.md +0 -394
- package/src/core/commands/skill/upgrade.md +0 -552
- package/src/core/templates/skill-template.md +0 -117
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Budget allocation and bidding strategy optimizer with industry benchmarks, platform minimums, scaling rules, and reallocation recommendations
|
|
3
|
+
argument-hint: "<account-data>"
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: medium
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:ads:budget - Budget & bidding strategy"
|
|
8
|
+
- "Delegate to ads-audit-budget agent for 24 checks"
|
|
9
|
+
- "Include platform minimums and scaling rules"
|
|
10
|
+
state_fields:
|
|
11
|
+
- budget_score
|
|
12
|
+
- total_spend
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# /agileflow:ads:budget
|
|
16
|
+
|
|
17
|
+
Run a budget allocation and bidding strategy audit using the `ads-audit-budget` agent with 24 checks, including industry benchmarks and specific reallocation recommendations.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Quick Reference
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
/agileflow:ads:budget <account-data> # Full budget audit
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Process
|
|
30
|
+
|
|
31
|
+
### STEP 1: Validate Input
|
|
32
|
+
|
|
33
|
+
If no data provided, ask for:
|
|
34
|
+
- Monthly spend per platform
|
|
35
|
+
- Campaign-level budgets and performance
|
|
36
|
+
- Bid strategies in use
|
|
37
|
+
- Conversion data (volume, CPA, ROAS)
|
|
38
|
+
- Industry and target metrics
|
|
39
|
+
|
|
40
|
+
### STEP 2: Deploy Budget Analyzer
|
|
41
|
+
|
|
42
|
+
```xml
|
|
43
|
+
<invoke name="Task">
|
|
44
|
+
<parameter name="description">Budget and bidding audit</parameter>
|
|
45
|
+
<parameter name="prompt">TASK: Audit budget allocation and bidding strategy.
|
|
46
|
+
|
|
47
|
+
ACCOUNT DATA:
|
|
48
|
+
{budget_data}
|
|
49
|
+
|
|
50
|
+
Apply ALL 24 checks across 4 categories:
|
|
51
|
+
- Budget Allocation (35%) - 8 checks
|
|
52
|
+
- Bidding Strategy (30%) - 8 checks
|
|
53
|
+
- Scaling & Pacing (20%) - 4 checks
|
|
54
|
+
- Platform Mix (15%) - 4 checks
|
|
55
|
+
|
|
56
|
+
Enforce platform minimums, scaling rules, and 3x Kill Rule.
|
|
57
|
+
Include specific dollar reallocation recommendations.
|
|
58
|
+
|
|
59
|
+
OUTPUT: Full findings with Budget Score X/100</parameter>
|
|
60
|
+
<parameter name="subagent_type">ads-audit-budget</parameter>
|
|
61
|
+
</invoke>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### STEP 3: Present Results
|
|
65
|
+
|
|
66
|
+
Show Budget Score with specific reallocation recommendations.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Platform Minimums
|
|
71
|
+
|
|
72
|
+
| Platform | Campaign Minimum | Ad Set/Group Minimum |
|
|
73
|
+
|----------|-----------------|---------------------|
|
|
74
|
+
| Google Ads | $10/day | $5/day |
|
|
75
|
+
| Meta Ads | $20/day | $10/day |
|
|
76
|
+
| LinkedIn Ads | $50/day | $25/day |
|
|
77
|
+
| TikTok Ads | $50/day campaign | $20/day ad group |
|
|
78
|
+
| Microsoft Ads | $10/day | $5/day |
|
|
79
|
+
|
|
80
|
+
## Scaling Rules
|
|
81
|
+
|
|
82
|
+
1. Max 20% budget increase per week
|
|
83
|
+
2. Only scale campaigns that exited learning phase
|
|
84
|
+
3. 3x Kill Rule: Pause if CPA > 3x target
|
|
85
|
+
4. Minimum 2 weeks data before major changes
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
90
|
+
## Compact Summary
|
|
91
|
+
|
|
92
|
+
**Command**: `/agileflow:ads:budget` - Budget & bidding strategy audit
|
|
93
|
+
|
|
94
|
+
**Agent**: `ads-audit-budget` (24 checks, 4 categories)
|
|
95
|
+
|
|
96
|
+
**Quick Usage**: `/agileflow:ads:budget <account-data>`
|
|
97
|
+
<!-- COMPACT_SUMMARY_END -->
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Competitive intelligence for paid advertising - market positioning, messaging gaps, ad copy analysis, and strategic recommendations
|
|
3
|
+
argument-hint: "<industry-or-competitors>"
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: medium
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:ads:competitor - Competitive intelligence"
|
|
8
|
+
- "Use WebSearch for competitor research"
|
|
9
|
+
- "Focus on ad-specific competitive factors"
|
|
10
|
+
state_fields:
|
|
11
|
+
- industry
|
|
12
|
+
- competitors
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# /agileflow:ads:competitor
|
|
16
|
+
|
|
17
|
+
Analyze competitive landscape for paid advertising, including competitor ad strategies, messaging positioning, and market gaps.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Quick Reference
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
/agileflow:ads:competitor "SaaS project management" # Industry research
|
|
25
|
+
/agileflow:ads:competitor "competitor1, competitor2" # Specific competitors
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Process
|
|
31
|
+
|
|
32
|
+
### STEP 1: Identify Competitors
|
|
33
|
+
|
|
34
|
+
If competitors not specified, use WebSearch to identify top advertisers in the space:
|
|
35
|
+
- Search for industry keywords and note who's advertising
|
|
36
|
+
- Look for "Sponsored" results on Google
|
|
37
|
+
- Check Meta Ad Library for active advertisers
|
|
38
|
+
|
|
39
|
+
### STEP 2: Analyze Competitor Ads
|
|
40
|
+
|
|
41
|
+
For each competitor, research:
|
|
42
|
+
|
|
43
|
+
| Factor | How to Find | What to Note |
|
|
44
|
+
|--------|------------|-------------|
|
|
45
|
+
| **Ad copy themes** | Google search, Ad Library | Headlines, CTAs, value props |
|
|
46
|
+
| **Landing pages** | Click through ads | Page structure, offers, forms |
|
|
47
|
+
| **Platforms active** | Ad libraries, social | Which platforms they invest in |
|
|
48
|
+
| **Offer positioning** | Ad copy, landing pages | Free trial, discount, demo |
|
|
49
|
+
| **Audience signals** | LinkedIn ads, social targeting | Who they're targeting |
|
|
50
|
+
| **Creative style** | Ad Library | Video vs image, UGC, professional |
|
|
51
|
+
|
|
52
|
+
### STEP 3: Gap Analysis
|
|
53
|
+
|
|
54
|
+
Identify opportunities the user can exploit:
|
|
55
|
+
|
|
56
|
+
```markdown
|
|
57
|
+
## Competitive Intelligence Report
|
|
58
|
+
|
|
59
|
+
### Competitor Overview
|
|
60
|
+
|
|
61
|
+
| Competitor | Platforms | Key Message | Offer | Ad Style |
|
|
62
|
+
|-----------|-----------|------------|-------|---------|
|
|
63
|
+
| {name} | {platforms} | {message} | {offer} | {style} |
|
|
64
|
+
|
|
65
|
+
### Messaging Gaps
|
|
66
|
+
{Where competitors are NOT messaging - opportunities for differentiation}
|
|
67
|
+
|
|
68
|
+
### Ad Format Gaps
|
|
69
|
+
{Ad types/platforms competitors aren't using}
|
|
70
|
+
|
|
71
|
+
### Positioning Recommendations
|
|
72
|
+
1. **Differentiate on**: {unique angle}
|
|
73
|
+
2. **Counter-position**: {how to position against top competitor}
|
|
74
|
+
3. **Underserved keyword themes**: {keyword areas competitors miss}
|
|
75
|
+
|
|
76
|
+
### Suggested Ad Copy Angles
|
|
77
|
+
- **Angle 1**: {headline idea} - Why: {competitive reason}
|
|
78
|
+
- **Angle 2**: {headline idea} - Why: {competitive reason}
|
|
79
|
+
- **Angle 3**: {headline idea} - Why: {competitive reason}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### STEP 4: Offer Next Steps
|
|
83
|
+
|
|
84
|
+
```xml
|
|
85
|
+
<invoke name="AskUserQuestion">
|
|
86
|
+
<parameter name="questions">[{
|
|
87
|
+
"question": "Competitive analysis complete. {N} competitors analyzed, {M} messaging gaps found.",
|
|
88
|
+
"header": "Next steps",
|
|
89
|
+
"multiSelect": false,
|
|
90
|
+
"options": [
|
|
91
|
+
{"label": "Build campaign plan using these insights (Recommended)", "description": "Run /agileflow:ads:plan with competitive positioning"},
|
|
92
|
+
{"label": "Audit our current ads against findings", "description": "Compare your ads to competitor strategies"},
|
|
93
|
+
{"label": "Deep-dive into specific competitor", "description": "More detailed analysis of one competitor"},
|
|
94
|
+
{"label": "Generate ad copy based on gaps", "description": "Create ad copy exploiting found gaps"}
|
|
95
|
+
]
|
|
96
|
+
}]</parameter>
|
|
97
|
+
</invoke>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
103
|
+
## Compact Summary
|
|
104
|
+
|
|
105
|
+
**Command**: `/agileflow:ads:competitor` - Competitive intelligence for ads
|
|
106
|
+
|
|
107
|
+
**Input**: Industry or competitor names
|
|
108
|
+
|
|
109
|
+
**Output**: Competitor ad analysis, messaging gaps, positioning recommendations
|
|
110
|
+
|
|
111
|
+
**Quick Usage**: `/agileflow:ads:competitor <industry-or-competitors>`
|
|
112
|
+
<!-- COMPACT_SUMMARY_END -->
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Cross-platform creative quality review with 21 checks for ad copy effectiveness, visual compliance, format coverage, and performance testing
|
|
3
|
+
argument-hint: "<account-data>"
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: medium
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:ads:creative - Creative quality review"
|
|
8
|
+
- "Delegate to ads-audit-creative agent for 21 checks"
|
|
9
|
+
state_fields:
|
|
10
|
+
- creative_score
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# /agileflow:ads:creative
|
|
14
|
+
|
|
15
|
+
Run a creative quality audit across all ad platforms using the `ads-audit-creative` agent with 21 checks.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Quick Reference
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
/agileflow:ads:creative <account-data> # Cross-platform creative review
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Process
|
|
28
|
+
|
|
29
|
+
### STEP 1: Validate Input
|
|
30
|
+
|
|
31
|
+
If no data provided, ask the user to share:
|
|
32
|
+
- Ad copy (headlines, descriptions, primary text)
|
|
33
|
+
- Creative assets (image specs, video details)
|
|
34
|
+
- Platform-specific formatting
|
|
35
|
+
- Performance metrics (CTR, CPC, frequency)
|
|
36
|
+
|
|
37
|
+
### STEP 2: Deploy Creative Analyzer
|
|
38
|
+
|
|
39
|
+
```xml
|
|
40
|
+
<invoke name="Task">
|
|
41
|
+
<parameter name="description">Creative quality audit</parameter>
|
|
42
|
+
<parameter name="prompt">TASK: Audit creative quality across all platforms.
|
|
43
|
+
|
|
44
|
+
ACCOUNT DATA:
|
|
45
|
+
{creative_data}
|
|
46
|
+
|
|
47
|
+
Apply ALL 21 checks across 4 categories:
|
|
48
|
+
- Ad Copy Effectiveness (30%) - 7 checks
|
|
49
|
+
- Visual & Format Compliance (25%) - 6 checks
|
|
50
|
+
- Platform-Specific Requirements (25%) - 4 checks
|
|
51
|
+
- Performance & Testing (20%) - 4 checks
|
|
52
|
+
|
|
53
|
+
Check safe zones (TikTok, Meta Stories), character limits, and restricted content.
|
|
54
|
+
|
|
55
|
+
OUTPUT: Full findings with Creative Score X/100</parameter>
|
|
56
|
+
<parameter name="subagent_type">ads-audit-creative</parameter>
|
|
57
|
+
</invoke>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### STEP 3: Present Results
|
|
61
|
+
|
|
62
|
+
Show Creative Score and offer actionable next steps.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 21 Checks Overview
|
|
67
|
+
|
|
68
|
+
| Category | Weight | Checks | Focus |
|
|
69
|
+
|----------|--------|--------|-------|
|
|
70
|
+
| Ad Copy Effectiveness | 30% | 7 | Value prop, CTA, social proof, keyword alignment |
|
|
71
|
+
| Visual & Format | 25% | 6 | Resolution, text overlay, brand, mobile-first |
|
|
72
|
+
| Platform Requirements | 25% | 4 | Format coverage, native style, char limits, compliance |
|
|
73
|
+
| Performance & Testing | 20% | 4 | Diversity, winner ID, refresh cadence, A/B testing |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
78
|
+
## Compact Summary
|
|
79
|
+
|
|
80
|
+
**Command**: `/agileflow:ads:creative` - Cross-platform creative quality review
|
|
81
|
+
|
|
82
|
+
**Agent**: `ads-audit-creative` (21 checks, 4 categories)
|
|
83
|
+
|
|
84
|
+
**Quick Usage**: `/agileflow:ads:creative <account-data>`
|
|
85
|
+
<!-- COMPACT_SUMMARY_END -->
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Bulk ad copy generation — produce 40+ headline/body/CTA variants from product description + ICP angles, formatted for Meta bulk upload and Google Ads Editor
|
|
3
|
+
argument-hint: "<product-description> [PLATFORM=all] [VARIANTS=40] [ANGLES=auto]"
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: medium
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:ads:generate - Bulk ad copy generation"
|
|
8
|
+
- "Generate headline/body/CTA variants from product description + ICP angles"
|
|
9
|
+
- "Output structured markdown AND CSV formatted for Meta bulk upload"
|
|
10
|
+
- "Delegate to ads-generate agent for variant production"
|
|
11
|
+
state_fields:
|
|
12
|
+
- product_description
|
|
13
|
+
- platform
|
|
14
|
+
- variant_count
|
|
15
|
+
- angles
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# /agileflow:ads:generate
|
|
19
|
+
|
|
20
|
+
Generate bulk ad copy variants from a product description and ideal customer profile (ICP) angles. Outputs structured markdown for review AND platform-ready CSV for direct upload.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Quick Reference
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
/agileflow:ads:generate <product-description> # 40 variants, all platforms
|
|
28
|
+
/agileflow:ads:generate <product-description> PLATFORM=meta # Meta-optimized variants
|
|
29
|
+
/agileflow:ads:generate <product-description> PLATFORM=google # Google Ads Editor format
|
|
30
|
+
/agileflow:ads:generate <product-description> VARIANTS=80 ANGLES=5 # 80 variants across 5 angles
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Arguments
|
|
36
|
+
|
|
37
|
+
| Argument | Values | Default | Description |
|
|
38
|
+
|----------|--------|---------|-------------|
|
|
39
|
+
| product-description | Text, URL, or file path | Required | Product/service description to generate copy for |
|
|
40
|
+
| PLATFORM | all, meta, google, linkedin, tiktok | all | Target platform(s) for format optimization |
|
|
41
|
+
| VARIANTS | 20-100 | 40 | Number of ad variants to generate |
|
|
42
|
+
| ANGLES | 1-10 or auto | auto (5) | Number of ICP angles to explore |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Multi-Step Discovery Flow
|
|
47
|
+
|
|
48
|
+
### STEP 1: Product Discovery
|
|
49
|
+
|
|
50
|
+
If product description is minimal or missing, gather context:
|
|
51
|
+
|
|
52
|
+
```xml
|
|
53
|
+
<invoke name="AskUserQuestion">
|
|
54
|
+
<parameter name="questions">[
|
|
55
|
+
{
|
|
56
|
+
"question": "What are you advertising? Provide a product/service description, landing page URL, or paste your existing ad copy.",
|
|
57
|
+
"header": "Product",
|
|
58
|
+
"multiSelect": false,
|
|
59
|
+
"options": [
|
|
60
|
+
{"label": "Paste product description (Recommended)", "description": "Copy/paste from your website, pitch deck, or product brief"},
|
|
61
|
+
{"label": "Provide landing page URL", "description": "I'll analyze the page and extract product details"},
|
|
62
|
+
{"label": "Describe verbally", "description": "I'll ask follow-up questions to build the brief"}
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"question": "Who is your ideal customer?",
|
|
67
|
+
"header": "ICP",
|
|
68
|
+
"multiSelect": false,
|
|
69
|
+
"options": [
|
|
70
|
+
{"label": "B2B decision makers", "description": "CTOs, VPs, Directors making software/service purchasing decisions"},
|
|
71
|
+
{"label": "SMB owners", "description": "Small business owners looking for solutions to operational problems"},
|
|
72
|
+
{"label": "Consumers", "description": "Individual consumers making personal purchasing decisions"},
|
|
73
|
+
{"label": "Let me describe", "description": "I'll provide specific ICP details"}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
]</parameter>
|
|
77
|
+
</invoke>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### STEP 2: Angle Generation
|
|
81
|
+
|
|
82
|
+
From the product description and ICP, generate 5 differentiated messaging angles:
|
|
83
|
+
|
|
84
|
+
**Standard Angle Framework:**
|
|
85
|
+
|
|
86
|
+
| # | Angle | What It Emphasizes |
|
|
87
|
+
|---|-------|--------------------|
|
|
88
|
+
| 1 | **Pain Point** | The problem your ICP faces without this product |
|
|
89
|
+
| 2 | **Outcome/Benefit** | The result/transformation after using the product |
|
|
90
|
+
| 3 | **Social Proof** | Numbers, testimonials, authority signals |
|
|
91
|
+
| 4 | **Urgency/Scarcity** | Time-limited offer, competitive pressure, FOMO |
|
|
92
|
+
| 5 | **Contrarian/Pattern Interrupt** | Challenges assumptions, stands out in feed |
|
|
93
|
+
|
|
94
|
+
If ANGLES > 5, add from:
|
|
95
|
+
| 6 | **Comparison** | Direct or indirect competitor comparison |
|
|
96
|
+
| 7 | **How-It-Works** | Simplicity, 3-step process, ease of use |
|
|
97
|
+
| 8 | **Identity** | "For people who..." — tribe/identity-based |
|
|
98
|
+
| 9 | **Risk Reversal** | Guarantee, free trial, money-back |
|
|
99
|
+
| 10 | **Curiosity** | Open loops, questions, intrigue |
|
|
100
|
+
|
|
101
|
+
### STEP 3: Generate Variants
|
|
102
|
+
|
|
103
|
+
Delegate to the `ads-generate` agent for variant production:
|
|
104
|
+
|
|
105
|
+
```xml
|
|
106
|
+
<invoke name="Agent">
|
|
107
|
+
<parameter name="description">Generate ad copy variants</parameter>
|
|
108
|
+
<parameter name="prompt">TASK: Generate {VARIANTS} ad copy variants for bulk upload.
|
|
109
|
+
|
|
110
|
+
PRODUCT:
|
|
111
|
+
{product_description}
|
|
112
|
+
|
|
113
|
+
ICP:
|
|
114
|
+
{icp_description}
|
|
115
|
+
|
|
116
|
+
ANGLES:
|
|
117
|
+
{angle_list_with_descriptions}
|
|
118
|
+
|
|
119
|
+
PLATFORMS: {platform}
|
|
120
|
+
|
|
121
|
+
## Generation Rules
|
|
122
|
+
|
|
123
|
+
1. **Per angle**: Generate {VARIANTS / ANGLES} variants per angle
|
|
124
|
+
2. **Per variant**: Generate headline + body + CTA as a set
|
|
125
|
+
3. **Platform compliance**: Respect character limits per platform
|
|
126
|
+
4. **Diversity**: No two variants should have the same opening word
|
|
127
|
+
5. **Specificity**: Include numbers, timeframes, or concrete outcomes where possible
|
|
128
|
+
6. **CTA variety**: Mix of "Learn More", "Get Started", "Try Free", "See How", "Book Demo"
|
|
129
|
+
|
|
130
|
+
## Platform Character Limits
|
|
131
|
+
|
|
132
|
+
### Meta Ads
|
|
133
|
+
- Primary Text: 125 chars (above fold), 1000 max
|
|
134
|
+
- Headline: 27 chars (recommended), 255 max
|
|
135
|
+
- Description: 27 chars (recommended), 255 max
|
|
136
|
+
- CTA: Select from preset list
|
|
137
|
+
|
|
138
|
+
### Google Ads (RSA)
|
|
139
|
+
- Headline: 30 chars max (generate 15 headlines)
|
|
140
|
+
- Description: 90 chars max (generate 4 descriptions)
|
|
141
|
+
- Path: 15 chars per path segment
|
|
142
|
+
|
|
143
|
+
### LinkedIn
|
|
144
|
+
- Intro text: 150 chars (above fold), 600 max
|
|
145
|
+
- Headline: 70 chars max
|
|
146
|
+
- Description: 100 chars max
|
|
147
|
+
|
|
148
|
+
### TikTok
|
|
149
|
+
- Ad text: 100 chars (recommended)
|
|
150
|
+
- No headline separate from creative
|
|
151
|
+
|
|
152
|
+
## Output Format
|
|
153
|
+
|
|
154
|
+
OUTPUT your response in TWO sections:
|
|
155
|
+
|
|
156
|
+
### Section 1: Review Format (Markdown Table)
|
|
157
|
+
|
|
158
|
+
| # | Angle | Headline | Body | CTA | Platform |
|
|
159
|
+
|---|-------|----------|------|-----|----------|
|
|
160
|
+
| 1 | Pain Point | ... | ... | Learn More | Meta |
|
|
161
|
+
| ... | ... | ... | ... | ... | ... |
|
|
162
|
+
|
|
163
|
+
### Section 2: Meta Bulk Upload CSV
|
|
164
|
+
|
|
165
|
+
```csv
|
|
166
|
+
Ad Name,Primary Text,Headline,Description,Call to Action,Website URL
|
|
167
|
+
{angle}-{number},"{body}","{headline}","{description}",LEARN_MORE,{url}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Section 3: Google Ads Editor CSV (if PLATFORM includes google)
|
|
171
|
+
|
|
172
|
+
```csv
|
|
173
|
+
Campaign,Ad Group,Headline 1,Headline 2,Headline 3,Description 1,Description 2,Path 1,Path 2
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Flag any variants that push character limits with ⚠️.</parameter>
|
|
177
|
+
<parameter name="subagent_type">ads-generate</parameter>
|
|
178
|
+
</invoke>
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### STEP 4: Present Results
|
|
182
|
+
|
|
183
|
+
After generation completes, present summary and offer next steps:
|
|
184
|
+
|
|
185
|
+
```xml
|
|
186
|
+
<invoke name="AskUserQuestion">
|
|
187
|
+
<parameter name="questions">[{
|
|
188
|
+
"question": "Generated {N} ad variants across {M} angles. {platform_count} platform format(s) ready. Files saved to docs/08-project/ads-copy/.",
|
|
189
|
+
"header": "Next steps",
|
|
190
|
+
"multiSelect": false,
|
|
191
|
+
"options": [
|
|
192
|
+
{"label": "Generate more variants for winning angles (Recommended)", "description": "Double down on the strongest 2-3 angles with more variations"},
|
|
193
|
+
{"label": "Create test plan for these variants", "description": "Run /agileflow:ads:test-plan to structure A/B tests with decision criteria"},
|
|
194
|
+
{"label": "Adapt for additional platforms", "description": "Reformat variants for Google, LinkedIn, or TikTok specifications"},
|
|
195
|
+
{"label": "Review and refine specific variants", "description": "Edit individual variants or regenerate specific angles"}
|
|
196
|
+
]
|
|
197
|
+
}]</parameter>
|
|
198
|
+
</invoke>
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Output Files
|
|
204
|
+
|
|
205
|
+
The agent saves artifacts to:
|
|
206
|
+
- `docs/08-project/ads-copy/ads-copy-{YYYYMMDD}.md` — Full review format with all variants
|
|
207
|
+
- `docs/08-project/ads-copy/meta-bulk-upload-{YYYYMMDD}.csv` — Meta Ads Manager bulk upload format
|
|
208
|
+
- `docs/08-project/ads-copy/google-ads-editor-{YYYYMMDD}.csv` — Google Ads Editor import format (if applicable)
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Example Output
|
|
213
|
+
|
|
214
|
+
For a SaaS product "TaskFlow — AI project management":
|
|
215
|
+
|
|
216
|
+
| # | Angle | Headline | Body | CTA |
|
|
217
|
+
|---|-------|----------|------|-----|
|
|
218
|
+
| 1 | Pain Point | Stop losing tasks in Slack threads | Your team wastes 5 hours/week searching for decisions buried in chat. TaskFlow surfaces action items automatically. | Try Free |
|
|
219
|
+
| 2 | Outcome | Ship 2x faster with AI project management | TaskFlow auto-generates tasks from meetings, prioritizes your backlog, and predicts blockers before they happen. | Get Started |
|
|
220
|
+
| 3 | Social Proof | 2,847 teams shipped faster this month | "We cut our sprint planning from 3 hours to 20 minutes" — VP Eng, Series B startup | See How |
|
|
221
|
+
| 4 | Urgency | Your competitors already use AI for PM | 73% of high-growth startups adopted AI project management in 2025. Don't get left behind. | Start Free Trial |
|
|
222
|
+
| 5 | Contrarian | Project management tools are the problem | More tools = more context switching. TaskFlow replaces your PM tool, not adds to it. | Learn More |
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
227
|
+
## Compact Summary
|
|
228
|
+
|
|
229
|
+
**Command**: `/agileflow:ads:generate` - Bulk ad copy generation with ICP angles
|
|
230
|
+
|
|
231
|
+
**Input**: Product description + ICP + platform (interactive or parameters)
|
|
232
|
+
|
|
233
|
+
**Output**: 40+ ad variants in review markdown + platform-ready CSV (Meta bulk upload, Google Ads Editor)
|
|
234
|
+
|
|
235
|
+
**Usage**: `/agileflow:ads:generate <product-description> [PLATFORM=all] [VARIANTS=40] [ANGLES=auto]`
|
|
236
|
+
|
|
237
|
+
**Files**: `docs/08-project/ads-copy/ads-copy-{YYYYMMDD}.md`, `*-bulk-upload-*.csv`
|
|
238
|
+
<!-- COMPACT_SUMMARY_END -->
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Google Ads deep-dive audit with 74 deterministic checks across conversion tracking, spend efficiency, account structure, keywords, ad copy, and settings
|
|
3
|
+
argument-hint: "<account-data>"
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: medium
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:ads:google - Google Ads deep-dive"
|
|
8
|
+
- "Delegate to ads-audit-google agent for 74 checks"
|
|
9
|
+
- "Quality gates: tracking required, no Broad without Smart Bidding, 3x Kill Rule"
|
|
10
|
+
state_fields:
|
|
11
|
+
- google_score
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# /agileflow:ads:google
|
|
15
|
+
|
|
16
|
+
Run a deep-dive audit on a Google Ads account using the `ads-audit-google` agent with 74 deterministic checks across 6 categories.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Quick Reference
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
/agileflow:ads:google <account-data> # Full Google Ads audit
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
### STEP 1: Validate Input
|
|
31
|
+
|
|
32
|
+
If no account data provided, ask the user to paste or describe their Google Ads setup including:
|
|
33
|
+
- Campaign types and objectives
|
|
34
|
+
- Budget and spend data
|
|
35
|
+
- Keyword match types and Quality Scores
|
|
36
|
+
- Ad copy and extensions
|
|
37
|
+
- Conversion tracking setup
|
|
38
|
+
- Bid strategies in use
|
|
39
|
+
|
|
40
|
+
### STEP 2: Deploy Google Ads Analyzer
|
|
41
|
+
|
|
42
|
+
```xml
|
|
43
|
+
<invoke name="Task">
|
|
44
|
+
<parameter name="description">Google Ads deep-dive audit</parameter>
|
|
45
|
+
<parameter name="prompt">TASK: Run a comprehensive Google Ads audit.
|
|
46
|
+
|
|
47
|
+
ACCOUNT DATA:
|
|
48
|
+
{account_data}
|
|
49
|
+
|
|
50
|
+
Apply ALL 74 checks across 6 weighted categories:
|
|
51
|
+
- Conversion Tracking (25%) - 12 checks
|
|
52
|
+
- Wasted Spend (25%) - 15 checks
|
|
53
|
+
- Account Structure (15%) - 12 checks
|
|
54
|
+
- Keyword Strategy (15%) - 14 checks
|
|
55
|
+
- Ad Copy Quality (10%) - 11 checks
|
|
56
|
+
- Campaign Settings (10%) - 10 checks
|
|
57
|
+
|
|
58
|
+
Enforce ALL quality gates:
|
|
59
|
+
1. No optimization without conversion tracking
|
|
60
|
+
2. No Broad Match without Smart Bidding
|
|
61
|
+
3. 3x Kill Rule for CPA
|
|
62
|
+
4. Brand/non-brand separation
|
|
63
|
+
|
|
64
|
+
OUTPUT: Full findings with Google Ads Score X/100</parameter>
|
|
65
|
+
<parameter name="subagent_type">ads-audit-google</parameter>
|
|
66
|
+
</invoke>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### STEP 3: Present Results
|
|
70
|
+
|
|
71
|
+
Show the Google Ads Score and key findings, then offer next steps:
|
|
72
|
+
|
|
73
|
+
```xml
|
|
74
|
+
<invoke name="AskUserQuestion">
|
|
75
|
+
<parameter name="questions">[{
|
|
76
|
+
"question": "Google Ads Audit: Score {X}/100. {N} findings ({critical} critical). Quality gates: {status}.",
|
|
77
|
+
"header": "Next steps",
|
|
78
|
+
"multiSelect": false,
|
|
79
|
+
"options": [
|
|
80
|
+
{"label": "Fix critical issues (Recommended)", "description": "{top issues}"},
|
|
81
|
+
{"label": "Run full multi-platform audit", "description": "Check all platforms together"},
|
|
82
|
+
{"label": "Optimize budget allocation", "description": "Run /agileflow:ads:budget"},
|
|
83
|
+
{"label": "Review creative quality", "description": "Run /agileflow:ads:creative"}
|
|
84
|
+
]
|
|
85
|
+
}]</parameter>
|
|
86
|
+
</invoke>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 74 Checks Overview
|
|
92
|
+
|
|
93
|
+
| Category | Weight | Checks | Focus |
|
|
94
|
+
|----------|--------|--------|-------|
|
|
95
|
+
| Conversion Tracking | 25% | 12 | Tag, enhanced conversions, CAPI, consent mode |
|
|
96
|
+
| Wasted Spend | 25% | 15 | Negatives, search terms, 3x rule, QS, network |
|
|
97
|
+
| Account Structure | 15% | 12 | Naming, ad groups, PMax isolation, experiments |
|
|
98
|
+
| Keyword Strategy | 15% | 14 | Match types, QS distribution, intent alignment |
|
|
99
|
+
| Ad Copy Quality | 10% | 11 | RSAs, headlines, CTAs, extensions, testing |
|
|
100
|
+
| Campaign Settings | 10% | 10 | Bidding, location, auto-apply, remarketing |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
105
|
+
## Compact Summary
|
|
106
|
+
|
|
107
|
+
**Command**: `/agileflow:ads:google` - Google Ads deep-dive audit
|
|
108
|
+
|
|
109
|
+
**Agent**: `ads-audit-google` (74 checks, 6 categories)
|
|
110
|
+
|
|
111
|
+
**Quick Usage**: `/agileflow:ads:google <account-data>`
|
|
112
|
+
<!-- COMPACT_SUMMARY_END -->
|