agileflow 3.3.0 → 3.4.0
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 +6 -6
- package/lib/skill-loader.js +0 -1
- package/package.json +1 -1
- package/scripts/agileflow-statusline.sh +81 -0
- package/scripts/claude-tmux.sh +113 -22
- 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/audit-cleanup.js +250 -0
- package/scripts/lib/audit-registry.js +248 -0
- package/scripts/lib/feature-catalog.js +3 -3
- package/scripts/lib/gate-enforcer.js +295 -0
- package/scripts/lib/model-profiles.js +98 -0
- package/scripts/lib/signal-detectors.js +1 -1
- package/scripts/lib/skill-catalog.js +557 -0
- package/scripts/lib/skill-recommender.js +311 -0
- package/scripts/lib/tdd-phase-manager.js +455 -0
- package/scripts/lib/team-events.js +34 -3
- package/scripts/lib/tmux-group-colors.js +113 -0
- package/scripts/messaging-bridge.js +209 -1
- package/scripts/spawn-audit-sessions.js +549 -0
- package/scripts/team-manager.js +37 -16
- package/scripts/tmux-close-windows.sh +180 -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 +322 -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/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/google.md +112 -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/tiktok.md +129 -0
- package/src/core/commands/ads/youtube.md +124 -0
- package/src/core/commands/ads.md +128 -0
- package/src/core/commands/babysit.md +249 -1284
- package/src/core/commands/{audit → code}/completeness.md +35 -25
- package/src/core/commands/{audit → code}/legal.md +26 -16
- package/src/core/commands/{audit → code}/logic.md +27 -16
- package/src/core/commands/{audit → code}/performance.md +30 -20
- package/src/core/commands/{audit → code}/security.md +32 -19
- package/src/core/commands/{audit → code}/test.md +30 -20
- package/src/core/commands/{discovery → ideate}/brief.md +12 -12
- package/src/core/commands/{discovery/new.md → ideate/discover.md} +13 -13
- package/src/core/commands/ideate/features.md +435 -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/tdd-next.md +238 -0
- package/src/core/commands/tdd.md +210 -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/templates/agileflow-metadata.json +15 -1
- package/tools/cli/installers/ide/_base-ide.js +42 -5
- package/tools/cli/installers/ide/claude-code.js +3 -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,229 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Generative Engine Optimization (GEO) - analyze and optimize content for AI search platforms like ChatGPT, Google AI Overviews, and Perplexity
|
|
3
|
+
argument-hint: "URL"
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: medium
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:seo:geo - AI search optimization"
|
|
8
|
+
- "Assess 5 GEO dimensions: Citability, Structure, Multimodal, Authority, Technical Access"
|
|
9
|
+
- "Check robots.txt for AI bot access (GPTBot, ClaudeBot, PerplexityBot)"
|
|
10
|
+
- "Check for /llms.txt file"
|
|
11
|
+
- "Optimize for 134-167 word citation blocks"
|
|
12
|
+
state_fields:
|
|
13
|
+
- target_url
|
|
14
|
+
- geo_score
|
|
15
|
+
- ai_bot_access
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# /agileflow:seo:geo
|
|
19
|
+
|
|
20
|
+
Analyze and optimize content for AI search platforms (Generative Engine Optimization). Ensure your content gets cited by ChatGPT, Google AI Overviews, Perplexity, and Claude.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Quick Reference
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
/agileflow:seo:geo https://example.com # Full GEO analysis
|
|
28
|
+
/agileflow:seo:geo https://example.com/blog/guide # Analyze specific content page
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Background
|
|
34
|
+
|
|
35
|
+
**GEO (Generative Engine Optimization)** optimizes content for AI-powered search platforms:
|
|
36
|
+
- Google AI Overviews
|
|
37
|
+
- ChatGPT (with Browse/Search)
|
|
38
|
+
- Perplexity
|
|
39
|
+
- Claude
|
|
40
|
+
|
|
41
|
+
**Key insight**: Brand correlation is 3x stronger than backlinks for AI visibility. 92% of AI citations come from top-10 traditional search results.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Arguments
|
|
46
|
+
|
|
47
|
+
| Argument | Values | Default | Description |
|
|
48
|
+
|----------|--------|---------|-------------|
|
|
49
|
+
| URL | Any valid URL | Required | Page or site to analyze |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## GEO Assessment Framework
|
|
54
|
+
|
|
55
|
+
### 1. Citability (25%)
|
|
56
|
+
|
|
57
|
+
AI platforms cite content that contains self-contained, quotable blocks:
|
|
58
|
+
|
|
59
|
+
| Signal | Good | Poor |
|
|
60
|
+
|--------|------|------|
|
|
61
|
+
| Answer blocks | 134-167 word self-contained paragraphs | Long unbroken paragraphs |
|
|
62
|
+
| Specific facts | Numbers, dates, names, percentages | Vague generalizations |
|
|
63
|
+
| Definitions | Clear "X is Y" statements | Implied definitions |
|
|
64
|
+
| Lists | Numbered/bulleted key points | Points buried in prose |
|
|
65
|
+
| Attribution | "According to [source]..." | Unsourced claims |
|
|
66
|
+
|
|
67
|
+
**Check**: Count paragraphs in the 134-167 word range. Assess whether they answer specific questions independently.
|
|
68
|
+
|
|
69
|
+
### 2. Structure (20%)
|
|
70
|
+
|
|
71
|
+
AI platforms parse structured content more effectively:
|
|
72
|
+
|
|
73
|
+
| Signal | Good | Poor |
|
|
74
|
+
|--------|------|------|
|
|
75
|
+
| Question headers | H2/H3 as questions (Who, What, How) | Generic headings |
|
|
76
|
+
| Short paragraphs | 2-4 sentences | Wall of text |
|
|
77
|
+
| Tables | Comparison data in tables | Comparisons in prose |
|
|
78
|
+
| Numbered steps | Step-by-step instructions | Instructions in paragraphs |
|
|
79
|
+
| TL;DR / Summary | Key takeaway at top or bottom | No summary |
|
|
80
|
+
|
|
81
|
+
### 3. Multimodal Content (15%)
|
|
82
|
+
|
|
83
|
+
Pages with multiple content types get 156% higher AI citation rates:
|
|
84
|
+
|
|
85
|
+
| Signal | Good | Poor |
|
|
86
|
+
|--------|------|------|
|
|
87
|
+
| Text + Images | Informative images with good alt text | Text only |
|
|
88
|
+
| Text + Video | Embedded video with transcript | No video |
|
|
89
|
+
| Text + Tables | Data visualization | Numbers in paragraphs |
|
|
90
|
+
| Interactive | Calculators, tools, quizzes | Static content only |
|
|
91
|
+
| Infographics | Visual summaries | No visual aids |
|
|
92
|
+
|
|
93
|
+
### 4. Authority (20%)
|
|
94
|
+
|
|
95
|
+
AI platforms prioritize authoritative sources:
|
|
96
|
+
|
|
97
|
+
| Signal | Good | Poor |
|
|
98
|
+
|--------|------|------|
|
|
99
|
+
| Author credentials | Named author with bio/credentials | No attribution |
|
|
100
|
+
| Publication dates | Recent, prominently displayed | No dates or old |
|
|
101
|
+
| Primary sources | Original data, research, case studies | Only secondary sources |
|
|
102
|
+
| Citations | Links to authoritative references | No outbound links |
|
|
103
|
+
| Brand presence | Wikipedia, Reddit, YouTube mentions | No cross-platform presence |
|
|
104
|
+
|
|
105
|
+
### 5. Technical Access (20%)
|
|
106
|
+
|
|
107
|
+
AI bots must be able to access your content:
|
|
108
|
+
|
|
109
|
+
| Signal | Good | Poor |
|
|
110
|
+
|--------|------|------|
|
|
111
|
+
| GPTBot allowed | Not blocked in robots.txt | Blocked |
|
|
112
|
+
| ClaudeBot allowed | Not blocked in robots.txt | Blocked |
|
|
113
|
+
| PerplexityBot allowed | Not blocked in robots.txt | Blocked |
|
|
114
|
+
| Google-Extended allowed | Not blocked | Blocked |
|
|
115
|
+
| `/llms.txt` present | Exists at root | Missing |
|
|
116
|
+
| Server-side rendering | Content in HTML source | JS-only rendering |
|
|
117
|
+
| Fast response | Quick TTFB | Slow or rate-limited |
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Process
|
|
122
|
+
|
|
123
|
+
### STEP 1: Fetch Target Page
|
|
124
|
+
|
|
125
|
+
Use WebFetch to retrieve the page content.
|
|
126
|
+
|
|
127
|
+
### STEP 2: Fetch robots.txt
|
|
128
|
+
|
|
129
|
+
Check `{domain}/robots.txt` for AI bot rules:
|
|
130
|
+
```
|
|
131
|
+
User-agent: GPTBot
|
|
132
|
+
User-agent: ClaudeBot
|
|
133
|
+
User-agent: PerplexityBot
|
|
134
|
+
User-agent: Google-Extended
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### STEP 3: Check for llms.txt
|
|
138
|
+
|
|
139
|
+
Fetch `{domain}/llms.txt` - a machine-readable site description for AI platforms.
|
|
140
|
+
|
|
141
|
+
### STEP 4: Analyze Each Dimension
|
|
142
|
+
|
|
143
|
+
Score each of the 5 dimensions out of 100, then apply weights:
|
|
144
|
+
|
|
145
|
+
| Dimension | Weight |
|
|
146
|
+
|-----------|--------|
|
|
147
|
+
| Citability | 25% |
|
|
148
|
+
| Structure | 20% |
|
|
149
|
+
| Multimodal | 15% |
|
|
150
|
+
| Authority | 20% |
|
|
151
|
+
| Technical Access | 20% |
|
|
152
|
+
|
|
153
|
+
### STEP 5: Output Report
|
|
154
|
+
|
|
155
|
+
```markdown
|
|
156
|
+
# GEO Analysis: {URL}
|
|
157
|
+
|
|
158
|
+
## AI Search Readiness Score: {X}/100
|
|
159
|
+
|
|
160
|
+
| Dimension | Score | Weight | Weighted | Key Finding |
|
|
161
|
+
|-----------|-------|--------|----------|-------------|
|
|
162
|
+
| Citability | {X}/100 | 25% | {X} | {finding} |
|
|
163
|
+
| Structure | {X}/100 | 20% | {X} | {finding} |
|
|
164
|
+
| Multimodal | {X}/100 | 15% | {X} | {finding} |
|
|
165
|
+
| Authority | {X}/100 | 20% | {X} | {finding} |
|
|
166
|
+
| Technical Access | {X}/100 | 20% | {X} | {finding} |
|
|
167
|
+
|
|
168
|
+
## AI Bot Access Status
|
|
169
|
+
|
|
170
|
+
| Bot | Status | robots.txt |
|
|
171
|
+
|-----|--------|-----------|
|
|
172
|
+
| GPTBot (ChatGPT) | Allowed/Blocked | {rule or "No rule"} |
|
|
173
|
+
| ClaudeBot (Claude) | Allowed/Blocked | {rule or "No rule"} |
|
|
174
|
+
| PerplexityBot | Allowed/Blocked | {rule or "No rule"} |
|
|
175
|
+
| Google-Extended (AI Overviews) | Allowed/Blocked | {rule or "No rule"} |
|
|
176
|
+
|
|
177
|
+
## llms.txt: {Present/Missing}
|
|
178
|
+
|
|
179
|
+
## Citability Analysis
|
|
180
|
+
|
|
181
|
+
- Citation-ready blocks found: {N}
|
|
182
|
+
- Average paragraph length: {N} words
|
|
183
|
+
- Self-contained answer blocks: {N}
|
|
184
|
+
|
|
185
|
+
## Recommendations
|
|
186
|
+
|
|
187
|
+
### Quick Wins
|
|
188
|
+
1. {highest impact, easiest change}
|
|
189
|
+
2. {next priority}
|
|
190
|
+
|
|
191
|
+
### Content Improvements
|
|
192
|
+
1. {content change for better citability}
|
|
193
|
+
2. {structural improvement}
|
|
194
|
+
|
|
195
|
+
### Technical Changes
|
|
196
|
+
1. {robots.txt or llms.txt change}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### STEP 6: Offer Next Steps
|
|
200
|
+
|
|
201
|
+
```xml
|
|
202
|
+
<invoke name="AskUserQuestion">
|
|
203
|
+
<parameter name="questions">[{
|
|
204
|
+
"question": "GEO analysis: AI Search Readiness {X}/100. {bot_status}. {N} citation-ready blocks found.",
|
|
205
|
+
"header": "Next steps",
|
|
206
|
+
"multiSelect": false,
|
|
207
|
+
"options": [
|
|
208
|
+
{"label": "Improve citability (Recommended)", "description": "Restructure content into 134-167 word answer blocks"},
|
|
209
|
+
{"label": "Fix AI bot access", "description": "Update robots.txt to allow GPTBot, ClaudeBot, PerplexityBot"},
|
|
210
|
+
{"label": "Create llms.txt", "description": "Generate machine-readable site description"},
|
|
211
|
+
{"label": "Run full SEO audit", "description": "/agileflow:seo:audit {domain}"}
|
|
212
|
+
]
|
|
213
|
+
}]</parameter>
|
|
214
|
+
</invoke>
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
220
|
+
## Compact Summary
|
|
221
|
+
|
|
222
|
+
**Command**: `/agileflow:seo:geo` - AI search optimization (Generative Engine Optimization)
|
|
223
|
+
|
|
224
|
+
**5 Dimensions**: Citability 25%, Structure 20%, Multimodal 15%, Authority 20%, Technical Access 20%
|
|
225
|
+
|
|
226
|
+
**Key Checks**: AI bot access in robots.txt, llms.txt presence, 134-167 word citation blocks
|
|
227
|
+
|
|
228
|
+
**Target Platforms**: Google AI Overviews, ChatGPT, Perplexity, Claude
|
|
229
|
+
<!-- COMPACT_SUMMARY_END -->
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Multi-language SEO validation - hreflang tag correctness, reciprocity checks, language code validation, and international targeting
|
|
3
|
+
argument-hint: "URL"
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: medium
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:seo:hreflang - Multi-language SEO"
|
|
8
|
+
- "Check hreflang tags, reciprocity, language codes, x-default"
|
|
9
|
+
- "Verify all language versions reference each other"
|
|
10
|
+
state_fields:
|
|
11
|
+
- target_url
|
|
12
|
+
- languages_found
|
|
13
|
+
- reciprocity_issues
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# /agileflow:seo:hreflang
|
|
17
|
+
|
|
18
|
+
Validate multi-language SEO implementation: hreflang tags, reciprocity, language codes, x-default, and international targeting.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Quick Reference
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
/agileflow:seo:hreflang https://example.com # Check hreflang implementation
|
|
26
|
+
/agileflow:seo:hreflang https://example.com/es/ # Check from Spanish version
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Arguments
|
|
32
|
+
|
|
33
|
+
| Argument | Values | Default | Description |
|
|
34
|
+
|----------|--------|---------|-------------|
|
|
35
|
+
| URL | Any valid URL | Required | Page to check hreflang |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## What Gets Checked
|
|
40
|
+
|
|
41
|
+
### 1. Hreflang Tag Detection
|
|
42
|
+
|
|
43
|
+
Look for hreflang in three possible locations:
|
|
44
|
+
- HTML `<head>`: `<link rel="alternate" hreflang="es" href="...">`
|
|
45
|
+
- HTTP headers: `Link: <...>; rel="alternate"; hreflang="es"`
|
|
46
|
+
- XML sitemap: `<xhtml:link rel="alternate" hreflang="es" href="..."/>`
|
|
47
|
+
|
|
48
|
+
### 2. Validation Rules
|
|
49
|
+
|
|
50
|
+
| Rule | Check | Common Error |
|
|
51
|
+
|------|-------|-------------|
|
|
52
|
+
| **Valid language codes** | ISO 639-1 (2-letter) | "eng" instead of "en" |
|
|
53
|
+
| **Valid region codes** | ISO 3166-1 (2-letter) | "uk" instead of "gb" |
|
|
54
|
+
| **x-default present** | Fallback for unmatched | Missing x-default |
|
|
55
|
+
| **Self-referencing** | Page includes itself | Missing self-reference |
|
|
56
|
+
| **Reciprocity** | A→B means B→A | One-way hreflang |
|
|
57
|
+
| **Consistent URLs** | Match canonical | hreflang to non-canonical |
|
|
58
|
+
| **Absolute URLs** | Full https:// URLs | Relative paths |
|
|
59
|
+
| **Return 200** | All hreflang URLs live | 404 or redirect targets |
|
|
60
|
+
|
|
61
|
+
### 3. Reciprocity Check
|
|
62
|
+
|
|
63
|
+
For each language version:
|
|
64
|
+
1. Fetch the page
|
|
65
|
+
2. Check that it links back to all other versions
|
|
66
|
+
3. Flag any broken reciprocity chains
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Page A (en) → B (es), C (fr)
|
|
70
|
+
Page B (es) → A (en), C (fr) ← Must reference A and C
|
|
71
|
+
Page C (fr) → A (en), B (es) ← Must reference A and B
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 4. Common Issues
|
|
75
|
+
|
|
76
|
+
| Issue | Severity | Fix |
|
|
77
|
+
|-------|----------|-----|
|
|
78
|
+
| Missing x-default | HIGH | Add x-default pointing to canonical version |
|
|
79
|
+
| Broken reciprocity | HIGH | Ensure all versions reference each other |
|
|
80
|
+
| Invalid language code | MEDIUM | Use ISO 639-1 codes |
|
|
81
|
+
| hreflang to redirect | MEDIUM | Point to final destination URL |
|
|
82
|
+
| hreflang to noindex | HIGH | Don't noindex alternate versions |
|
|
83
|
+
| Mixed implementation | LOW | Use one method consistently |
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Process
|
|
88
|
+
|
|
89
|
+
### STEP 1: Fetch the Target Page
|
|
90
|
+
|
|
91
|
+
Use WebFetch to retrieve the page. Extract hreflang tags from HTML head.
|
|
92
|
+
|
|
93
|
+
### STEP 2: Map All Language Versions
|
|
94
|
+
|
|
95
|
+
Build a matrix of all language versions and their hreflang references.
|
|
96
|
+
|
|
97
|
+
### STEP 3: Verify Reciprocity
|
|
98
|
+
|
|
99
|
+
Fetch each alternate version and verify it references back to all other versions.
|
|
100
|
+
|
|
101
|
+
### STEP 4: Output Report
|
|
102
|
+
|
|
103
|
+
```markdown
|
|
104
|
+
# Hreflang Analysis: {URL}
|
|
105
|
+
|
|
106
|
+
## Language Versions Found
|
|
107
|
+
|
|
108
|
+
| Language | Region | URL | Status |
|
|
109
|
+
|----------|--------|-----|--------|
|
|
110
|
+
| en | - | https://example.com/ | 200 |
|
|
111
|
+
| es | - | https://example.com/es/ | 200 |
|
|
112
|
+
| fr | FR | https://example.com/fr/ | 200 |
|
|
113
|
+
| x-default | - | https://example.com/ | 200 |
|
|
114
|
+
|
|
115
|
+
## Reciprocity Matrix
|
|
116
|
+
|
|
117
|
+
| Page | → en | → es | → fr | → x-default |
|
|
118
|
+
|------|------|------|------|-------------|
|
|
119
|
+
| /en/ | self | yes | yes | yes |
|
|
120
|
+
| /es/ | yes | self | NO | yes |
|
|
121
|
+
| /fr/ | yes | yes | self | yes |
|
|
122
|
+
|
|
123
|
+
## Issues Found
|
|
124
|
+
|
|
125
|
+
[Detailed findings]
|
|
126
|
+
|
|
127
|
+
## Hreflang Score: X/100
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
133
|
+
## Compact Summary
|
|
134
|
+
|
|
135
|
+
**Command**: `/agileflow:seo:hreflang` - Multi-language SEO validation
|
|
136
|
+
|
|
137
|
+
**Checks**: hreflang tags, reciprocity, language codes, x-default, canonical consistency
|
|
138
|
+
|
|
139
|
+
**Usage**: `/agileflow:seo:hreflang URL`
|
|
140
|
+
<!-- COMPACT_SUMMARY_END -->
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Image optimization analysis - alt text quality, sizing for CLS, WebP/AVIF format detection, lazy loading, and responsive images
|
|
3
|
+
argument-hint: "URL"
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: medium
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:seo:images - Image optimization analysis"
|
|
8
|
+
- "Deploy seo-analyzer-images for comprehensive image audit"
|
|
9
|
+
- "Check alt text, sizing, formats, lazy loading, LCP priority, responsive srcset"
|
|
10
|
+
state_fields:
|
|
11
|
+
- target_url
|
|
12
|
+
- image_count
|
|
13
|
+
- issues_found
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# /agileflow:seo:images
|
|
17
|
+
|
|
18
|
+
Analyze image optimization on a page: alt text quality, explicit sizing for CLS prevention, modern formats (WebP/AVIF), lazy loading, LCP image priority, and responsive images.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Quick Reference
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
/agileflow:seo:images https://example.com # Image audit for homepage
|
|
26
|
+
/agileflow:seo:images https://example.com/products/item # Product page images
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Arguments
|
|
32
|
+
|
|
33
|
+
| Argument | Values | Default | Description |
|
|
34
|
+
|----------|--------|---------|-------------|
|
|
35
|
+
| URL | Any valid URL | Required | Page to analyze |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Process
|
|
40
|
+
|
|
41
|
+
### STEP 1: Deploy Image Analyzer
|
|
42
|
+
|
|
43
|
+
```xml
|
|
44
|
+
<invoke name="Task">
|
|
45
|
+
<parameter name="description">Image optimization analysis</parameter>
|
|
46
|
+
<parameter name="prompt">TASK: Perform comprehensive image optimization analysis.
|
|
47
|
+
|
|
48
|
+
TARGET URL: {url}
|
|
49
|
+
|
|
50
|
+
For every image on the page, check:
|
|
51
|
+
1. Alt text: Present, descriptive (10-125 chars), not filename-based, not keyword-stuffed
|
|
52
|
+
2. Sizing: width and height attributes present (CLS prevention)
|
|
53
|
+
3. Format: WebP/AVIF (modern) vs JPEG/PNG (legacy) vs BMP/TIFF (never)
|
|
54
|
+
4. Lazy loading: Below-fold images have loading="lazy"
|
|
55
|
+
5. LCP priority: Hero/above-fold image has fetchpriority="high"
|
|
56
|
+
6. Responsive: srcset and sizes for responsive delivery
|
|
57
|
+
7. Decorative: Decorative images correctly use alt=""
|
|
58
|
+
|
|
59
|
+
Also check for:
|
|
60
|
+
- CSS background images (can't have alt text)
|
|
61
|
+
- <picture> elements with format fallbacks
|
|
62
|
+
- Missing <link rel="preload"> for LCP image
|
|
63
|
+
|
|
64
|
+
OUTPUT: Image Optimization Score X/100 with per-image findings.</parameter>
|
|
65
|
+
<parameter name="subagent_type">seo-analyzer-images</parameter>
|
|
66
|
+
</invoke>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### STEP 2: Present Results
|
|
70
|
+
|
|
71
|
+
Show image-by-image findings table and prioritized fixes.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## What Gets Checked
|
|
76
|
+
|
|
77
|
+
| Aspect | Weight | Impact |
|
|
78
|
+
|--------|--------|--------|
|
|
79
|
+
| Alt text quality | 30% | Accessibility + image search rankings |
|
|
80
|
+
| Sizing (CLS) | 20% | Core Web Vitals - layout stability |
|
|
81
|
+
| Modern formats | 15% | Page speed + LCP |
|
|
82
|
+
| Lazy loading | 15% | Page speed |
|
|
83
|
+
| LCP optimization | 10% | Core Web Vitals - largest paint |
|
|
84
|
+
| Responsive images | 10% | Mobile performance |
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
89
|
+
## Compact Summary
|
|
90
|
+
|
|
91
|
+
**Command**: `/agileflow:seo:images` - Image optimization analysis
|
|
92
|
+
|
|
93
|
+
**Checks**: Alt text, sizing/CLS, WebP/AVIF, lazy loading, LCP priority, responsive srcset
|
|
94
|
+
|
|
95
|
+
**Usage**: `/agileflow:seo:images URL`
|
|
96
|
+
<!-- COMPACT_SUMMARY_END -->
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Deep single-page SEO analysis across 6 dimensions - on-page, content, technical, schema, images, and performance
|
|
3
|
+
argument-hint: "URL [FOCUS=all|on-page|content|technical|schema|images|performance]"
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: medium
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:seo:page - Single page SEO analysis"
|
|
8
|
+
- "Fetch the page with WebFetch, then analyze across 6 dimensions"
|
|
9
|
+
- "FOCUS parameter narrows analysis to specific dimension"
|
|
10
|
+
- "Output a scored report card per dimension"
|
|
11
|
+
state_fields:
|
|
12
|
+
- target_url
|
|
13
|
+
- focus
|
|
14
|
+
- page_scores
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# /agileflow:seo:page
|
|
18
|
+
|
|
19
|
+
Deep analysis of a single page across 6 SEO dimensions. More thorough than the full-site audit for individual pages.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Quick Reference
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
/agileflow:seo:page https://example.com/about # Full 6-dimension analysis
|
|
27
|
+
/agileflow:seo:page https://example.com/blog/post FOCUS=content # Content quality only
|
|
28
|
+
/agileflow:seo:page https://example.com/product FOCUS=schema # Schema markup only
|
|
29
|
+
/agileflow:seo:page https://example.com FOCUS=on-page # On-page SEO elements
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Arguments
|
|
35
|
+
|
|
36
|
+
| Argument | Values | Default | Description |
|
|
37
|
+
|----------|--------|---------|-------------|
|
|
38
|
+
| URL | Any valid page URL | Required | Page to analyze |
|
|
39
|
+
| FOCUS | all, on-page, content, technical, schema, images, performance | all | Which dimension(s) to analyze |
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Analysis Dimensions
|
|
44
|
+
|
|
45
|
+
### 1. On-Page SEO
|
|
46
|
+
|
|
47
|
+
Analyze the fundamental on-page elements:
|
|
48
|
+
|
|
49
|
+
| Element | Check | Good | Issue |
|
|
50
|
+
|---------|-------|------|-------|
|
|
51
|
+
| **Title tag** | Present, 30-60 chars, keyword-forward | Unique, relevant | Missing, duplicate, wrong length |
|
|
52
|
+
| **Meta description** | Present, 120-160 chars, has CTA | Compelling, keyword-rich | Missing, duplicate, wrong length |
|
|
53
|
+
| **H1** | Exactly 1, contains target keyword | Clear, descriptive | Missing, multiple, keyword-stuffed |
|
|
54
|
+
| **H2-H6** | Logical hierarchy, no skipped levels | Organized structure | Skipped levels, flat structure |
|
|
55
|
+
| **Internal links** | 2-10 per page, descriptive anchors | Relevant, contextual | None, generic "click here" |
|
|
56
|
+
| **External links** | Authoritative sources | Relevant citations | Broken, spammy |
|
|
57
|
+
| **URL** | Clean, short, keyword-relevant | Descriptive path | Parameters, long, irrelevant |
|
|
58
|
+
| **Canonical** | Self-referencing or correct target | Present, valid | Missing, pointing wrong |
|
|
59
|
+
| **Open Graph** | og:title, og:description, og:image | All present | Missing key tags |
|
|
60
|
+
|
|
61
|
+
### 2. Content Quality
|
|
62
|
+
|
|
63
|
+
Assess using E-E-A-T framework (see eeat-framework.md reference):
|
|
64
|
+
- Word count vs page type minimum
|
|
65
|
+
- Content uniqueness (not boilerplate)
|
|
66
|
+
- Readability level
|
|
67
|
+
- Author attribution
|
|
68
|
+
- E-E-A-T signals present
|
|
69
|
+
- AI citation readiness (134-167 word blocks)
|
|
70
|
+
|
|
71
|
+
### 3. Technical
|
|
72
|
+
|
|
73
|
+
Page-level technical checks:
|
|
74
|
+
- HTTP status code
|
|
75
|
+
- Response time / TTFB
|
|
76
|
+
- HTTPS
|
|
77
|
+
- Mobile viewport
|
|
78
|
+
- Canonical tag correctness
|
|
79
|
+
- Robots directives (index/noindex)
|
|
80
|
+
- Structured data presence
|
|
81
|
+
- Language declaration
|
|
82
|
+
|
|
83
|
+
### 4. Schema
|
|
84
|
+
|
|
85
|
+
Structured data on this specific page:
|
|
86
|
+
- What JSON-LD/Microdata is present
|
|
87
|
+
- Validation of existing schema
|
|
88
|
+
- Missing schema opportunities for this page type
|
|
89
|
+
- Rich result eligibility
|
|
90
|
+
|
|
91
|
+
### 5. Images
|
|
92
|
+
|
|
93
|
+
All images on the page:
|
|
94
|
+
- Alt text quality
|
|
95
|
+
- Width/height attributes
|
|
96
|
+
- Format (WebP/AVIF vs legacy)
|
|
97
|
+
- Lazy loading
|
|
98
|
+
- LCP image optimization
|
|
99
|
+
|
|
100
|
+
### 6. Performance
|
|
101
|
+
|
|
102
|
+
Page-level performance indicators:
|
|
103
|
+
- Render-blocking resources
|
|
104
|
+
- Script loading (async/defer)
|
|
105
|
+
- Image optimization
|
|
106
|
+
- Third-party resources
|
|
107
|
+
- Font loading
|
|
108
|
+
- Estimated CWV impact
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Process
|
|
113
|
+
|
|
114
|
+
### STEP 1: Fetch the Page
|
|
115
|
+
|
|
116
|
+
Use WebFetch to retrieve the target URL. Extract full HTML content.
|
|
117
|
+
|
|
118
|
+
### STEP 2: Analyze Per Focus
|
|
119
|
+
|
|
120
|
+
If `FOCUS=all`, analyze all 6 dimensions. Otherwise, analyze only the specified dimension.
|
|
121
|
+
|
|
122
|
+
For each dimension, produce a score out of 100 and a findings list.
|
|
123
|
+
|
|
124
|
+
### STEP 3: Generate Report Card
|
|
125
|
+
|
|
126
|
+
Output a report card:
|
|
127
|
+
|
|
128
|
+
```markdown
|
|
129
|
+
# Page SEO Report: {URL}
|
|
130
|
+
|
|
131
|
+
## Report Card
|
|
132
|
+
|
|
133
|
+
| Dimension | Score | Key Finding |
|
|
134
|
+
|-----------|-------|-------------|
|
|
135
|
+
| On-Page SEO | {X}/100 | {top issue or "All good"} |
|
|
136
|
+
| Content Quality | {X}/100 | {top issue or "All good"} |
|
|
137
|
+
| Technical | {X}/100 | {top issue or "All good"} |
|
|
138
|
+
| Schema | {X}/100 | {top issue or "All good"} |
|
|
139
|
+
| Images | {X}/100 | {top issue or "All good"} |
|
|
140
|
+
| Performance | {X}/100 | {top issue or "All good"} |
|
|
141
|
+
|
|
142
|
+
**Page Score: {average}/100**
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Detailed Findings
|
|
147
|
+
|
|
148
|
+
### On-Page SEO ({X}/100)
|
|
149
|
+
|
|
150
|
+
| Element | Status | Details |
|
|
151
|
+
|---------|--------|---------|
|
|
152
|
+
| Title | {pass/fail} | "{actual title}" ({length} chars) |
|
|
153
|
+
| Meta Description | {pass/fail} | "{actual}" ({length} chars) |
|
|
154
|
+
| H1 | {pass/fail} | "{actual H1}" |
|
|
155
|
+
| ...
|
|
156
|
+
|
|
157
|
+
[Findings for each dimension]
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Quick Fixes
|
|
162
|
+
|
|
163
|
+
1. {Highest impact, easiest fix}
|
|
164
|
+
2. {Next priority}
|
|
165
|
+
3. {Next priority}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### STEP 4: Offer Next Steps
|
|
169
|
+
|
|
170
|
+
```xml
|
|
171
|
+
<invoke name="AskUserQuestion">
|
|
172
|
+
<parameter name="questions">[{
|
|
173
|
+
"question": "Page analysis complete: {URL} scored {X}/100. Lowest dimension: {dim} ({score}/100).",
|
|
174
|
+
"header": "Next steps",
|
|
175
|
+
"multiSelect": false,
|
|
176
|
+
"options": [
|
|
177
|
+
{"label": "Fix {top_issue} (Recommended)", "description": "{specific fix description}"},
|
|
178
|
+
{"label": "Generate schema markup", "description": "Create JSON-LD for this page type"},
|
|
179
|
+
{"label": "Run full site audit", "description": "/agileflow:seo:audit {domain}"},
|
|
180
|
+
{"label": "Analyze another page", "description": "Run /agileflow:seo:page on a different URL"}
|
|
181
|
+
]
|
|
182
|
+
}]</parameter>
|
|
183
|
+
</invoke>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
189
|
+
## Compact Summary
|
|
190
|
+
|
|
191
|
+
**Command**: `/agileflow:seo:page` - Single page SEO analysis across 6 dimensions
|
|
192
|
+
|
|
193
|
+
**Dimensions**: On-Page, Content, Technical, Schema, Images, Performance
|
|
194
|
+
|
|
195
|
+
**Usage**: `/agileflow:seo:page URL [FOCUS=dimension]`
|
|
196
|
+
|
|
197
|
+
**Output**: Scored report card per dimension + prioritized fixes
|
|
198
|
+
<!-- COMPACT_SUMMARY_END -->
|