opencode-skills-antigravity 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/bundled-skills/ad-creative/SKILL.md +371 -0
  2. package/bundled-skills/ad-creative/evals/evals.json +90 -0
  3. package/bundled-skills/ad-creative/references/generative-tools.md +637 -0
  4. package/bundled-skills/ad-creative/references/platform-specs.md +213 -0
  5. package/bundled-skills/ai-seo/SKILL.md +407 -0
  6. package/bundled-skills/ai-seo/evals/evals.json +90 -0
  7. package/bundled-skills/ai-seo/references/content-patterns.md +285 -0
  8. package/bundled-skills/ai-seo/references/platform-ranking-factors.md +152 -0
  9. package/bundled-skills/backend-dev-guidelines/SKILL.md +1 -1
  10. package/bundled-skills/cc-skill-security-review/SKILL.md +1 -1
  11. package/bundled-skills/churn-prevention/SKILL.md +433 -0
  12. package/bundled-skills/churn-prevention/evals/evals.json +93 -0
  13. package/bundled-skills/churn-prevention/references/cancel-flow-patterns.md +316 -0
  14. package/bundled-skills/churn-prevention/references/dunning-playbook.md +408 -0
  15. package/bundled-skills/claude-api/LICENSE.txt +202 -0
  16. package/bundled-skills/claude-api/SKILL.md +252 -0
  17. package/bundled-skills/claude-api/csharp/claude-api.md +70 -0
  18. package/bundled-skills/claude-api/curl/examples.md +164 -0
  19. package/bundled-skills/claude-api/go/claude-api.md +146 -0
  20. package/bundled-skills/claude-api/java/claude-api.md +128 -0
  21. package/bundled-skills/claude-api/php/claude-api.md +88 -0
  22. package/bundled-skills/claude-api/python/agent-sdk/README.md +269 -0
  23. package/bundled-skills/claude-api/python/agent-sdk/patterns.md +319 -0
  24. package/bundled-skills/claude-api/python/claude-api/README.md +404 -0
  25. package/bundled-skills/claude-api/python/claude-api/batches.md +182 -0
  26. package/bundled-skills/claude-api/python/claude-api/files-api.md +162 -0
  27. package/bundled-skills/claude-api/python/claude-api/streaming.md +162 -0
  28. package/bundled-skills/claude-api/python/claude-api/tool-use.md +587 -0
  29. package/bundled-skills/claude-api/ruby/claude-api.md +87 -0
  30. package/bundled-skills/claude-api/shared/error-codes.md +205 -0
  31. package/bundled-skills/claude-api/shared/live-sources.md +121 -0
  32. package/bundled-skills/claude-api/shared/models.md +68 -0
  33. package/bundled-skills/claude-api/shared/tool-use-concepts.md +305 -0
  34. package/bundled-skills/claude-api/typescript/agent-sdk/README.md +220 -0
  35. package/bundled-skills/claude-api/typescript/agent-sdk/patterns.md +150 -0
  36. package/bundled-skills/claude-api/typescript/claude-api/README.md +313 -0
  37. package/bundled-skills/claude-api/typescript/claude-api/batches.md +106 -0
  38. package/bundled-skills/claude-api/typescript/claude-api/files-api.md +98 -0
  39. package/bundled-skills/claude-api/typescript/claude-api/streaming.md +178 -0
  40. package/bundled-skills/claude-api/typescript/claude-api/tool-use.md +477 -0
  41. package/bundled-skills/codex-review/SKILL.md +1 -1
  42. package/bundled-skills/cold-email/SKILL.md +167 -0
  43. package/bundled-skills/cold-email/evals/evals.json +94 -0
  44. package/bundled-skills/cold-email/references/benchmarks.md +83 -0
  45. package/bundled-skills/cold-email/references/follow-up-sequences.md +81 -0
  46. package/bundled-skills/cold-email/references/frameworks.md +90 -0
  47. package/bundled-skills/cold-email/references/personalization.md +79 -0
  48. package/bundled-skills/cold-email/references/subject-lines.md +53 -0
  49. package/bundled-skills/content-strategy/SKILL.md +374 -0
  50. package/bundled-skills/content-strategy/evals/evals.json +90 -0
  51. package/bundled-skills/content-strategy/references/headless-cms.md +194 -0
  52. package/bundled-skills/context7-auto-research/SKILL.md +1 -1
  53. package/bundled-skills/dbos-golang/SKILL.md +1 -1
  54. package/bundled-skills/dbos-python/SKILL.md +1 -1
  55. package/bundled-skills/dbos-typescript/SKILL.md +1 -1
  56. package/bundled-skills/debug-buttercup/SKILL.md +1 -1
  57. package/bundled-skills/defuddle/SKILL.md +50 -0
  58. package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
  59. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
  60. package/bundled-skills/docs/integrations/jetski-gemini-loader/package.json +1 -0
  61. package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
  62. package/bundled-skills/docs/maintainers/skills-import-2026-03-21.md +81 -0
  63. package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
  64. package/bundled-skills/docs/users/bundles.md +1 -1
  65. package/bundled-skills/docs/users/claude-code-skills.md +1 -1
  66. package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
  67. package/bundled-skills/docs/users/getting-started.md +1 -1
  68. package/bundled-skills/docs/users/kiro-integration.md +1 -1
  69. package/bundled-skills/docs/users/usage.md +4 -4
  70. package/bundled-skills/docs/users/visual-guide.md +4 -4
  71. package/bundled-skills/evaluation/SKILL.md +1 -1
  72. package/bundled-skills/exa-search/SKILL.md +1 -1
  73. package/bundled-skills/firecrawl-scraper/SKILL.md +1 -1
  74. package/bundled-skills/frontend-dev-guidelines/SKILL.md +1 -1
  75. package/bundled-skills/gha-security-review/SKILL.md +2 -1
  76. package/bundled-skills/git-pushing/SKILL.md +1 -1
  77. package/bundled-skills/internal-comms/LICENSE.txt +202 -0
  78. package/bundled-skills/internal-comms/SKILL.md +35 -0
  79. package/bundled-skills/internal-comms/examples/3p-updates.md +47 -0
  80. package/bundled-skills/internal-comms/examples/company-newsletter.md +65 -0
  81. package/bundled-skills/internal-comms/examples/faq-answers.md +30 -0
  82. package/bundled-skills/internal-comms/examples/general-comms.md +16 -0
  83. package/bundled-skills/json-canvas/SKILL.md +253 -0
  84. package/bundled-skills/json-canvas/references/EXAMPLES.md +329 -0
  85. package/bundled-skills/lead-magnets/SKILL.md +319 -0
  86. package/bundled-skills/lead-magnets/references/benchmarks.md +129 -0
  87. package/bundled-skills/lead-magnets/references/format-guide.md +196 -0
  88. package/bundled-skills/memory-systems/SKILL.md +1 -1
  89. package/bundled-skills/obsidian-bases/SKILL.md +506 -0
  90. package/bundled-skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md +173 -0
  91. package/bundled-skills/obsidian-cli/SKILL.md +115 -0
  92. package/bundled-skills/obsidian-markdown/SKILL.md +205 -0
  93. package/bundled-skills/obsidian-markdown/references/CALLOUTS.md +58 -0
  94. package/bundled-skills/obsidian-markdown/references/EMBEDS.md +63 -0
  95. package/bundled-skills/obsidian-markdown/references/PROPERTIES.md +61 -0
  96. package/bundled-skills/product-marketing-context/SKILL.md +250 -0
  97. package/bundled-skills/product-marketing-context/evals/evals.json +85 -0
  98. package/bundled-skills/react-best-practices/SKILL.md +1 -1
  99. package/bundled-skills/revops/SKILL.md +352 -0
  100. package/bundled-skills/revops/evals/evals.json +91 -0
  101. package/bundled-skills/revops/references/automation-playbooks.md +290 -0
  102. package/bundled-skills/revops/references/lifecycle-definitions.md +278 -0
  103. package/bundled-skills/revops/references/routing-rules.md +203 -0
  104. package/bundled-skills/revops/references/scoring-models.md +247 -0
  105. package/bundled-skills/sales-enablement/SKILL.md +358 -0
  106. package/bundled-skills/sales-enablement/evals/evals.json +91 -0
  107. package/bundled-skills/sales-enablement/references/deck-frameworks.md +263 -0
  108. package/bundled-skills/sales-enablement/references/demo-scripts.md +355 -0
  109. package/bundled-skills/sales-enablement/references/objection-library.md +270 -0
  110. package/bundled-skills/sales-enablement/references/one-pager-templates.md +208 -0
  111. package/bundled-skills/seo/SKILL.md +139 -0
  112. package/bundled-skills/seo/references/cwv-thresholds.md +108 -0
  113. package/bundled-skills/seo/references/eeat-framework.md +214 -0
  114. package/bundled-skills/seo/references/quality-gates.md +155 -0
  115. package/bundled-skills/seo/references/schema-types.md +118 -0
  116. package/bundled-skills/seo-competitor-pages/SKILL.md +229 -0
  117. package/bundled-skills/seo-content/SKILL.md +186 -0
  118. package/bundled-skills/seo-dataforseo/SKILL.md +395 -0
  119. package/bundled-skills/seo-geo/SKILL.md +254 -0
  120. package/bundled-skills/seo-hreflang/SKILL.md +209 -0
  121. package/bundled-skills/seo-image-gen/SKILL.md +183 -0
  122. package/bundled-skills/seo-images/SKILL.md +193 -0
  123. package/bundled-skills/seo-page/SKILL.md +103 -0
  124. package/bundled-skills/seo-plan/SKILL.md +136 -0
  125. package/bundled-skills/seo-plan/assets/agency.md +175 -0
  126. package/bundled-skills/seo-plan/assets/ecommerce.md +167 -0
  127. package/bundled-skills/seo-plan/assets/generic.md +144 -0
  128. package/bundled-skills/seo-plan/assets/local-service.md +160 -0
  129. package/bundled-skills/seo-plan/assets/publisher.md +153 -0
  130. package/bundled-skills/seo-plan/assets/saas.md +135 -0
  131. package/bundled-skills/seo-programmatic/SKILL.md +184 -0
  132. package/bundled-skills/seo-schema/SKILL.md +178 -0
  133. package/bundled-skills/seo-sitemap/SKILL.md +129 -0
  134. package/bundled-skills/seo-technical/SKILL.md +175 -0
  135. package/bundled-skills/site-architecture/SKILL.md +366 -0
  136. package/bundled-skills/site-architecture/evals/evals.json +88 -0
  137. package/bundled-skills/site-architecture/references/mermaid-templates.md +216 -0
  138. package/bundled-skills/site-architecture/references/navigation-patterns.md +305 -0
  139. package/bundled-skills/site-architecture/references/site-type-templates.md +293 -0
  140. package/bundled-skills/skill-improver/SKILL.md +1 -1
  141. package/bundled-skills/tavily-web/SKILL.md +1 -1
  142. package/bundled-skills/test-fixing/SKILL.md +1 -1
  143. package/bundled-skills/tool-design/SKILL.md +1 -1
  144. package/bundled-skills/ui-ux-pro-max/SKILL.md +1 -1
  145. package/bundled-skills/verification-before-completion/SKILL.md +1 -1
  146. package/bundled-skills/wiki-changelog/SKILL.md +1 -1
  147. package/bundled-skills/wiki-onboarding/SKILL.md +1 -1
  148. package/bundled-skills/wiki-qa/SKILL.md +1 -1
  149. package/bundled-skills/wiki-researcher/SKILL.md +1 -1
  150. package/bundled-skills/wiki-vitepress/SKILL.md +1 -1
  151. package/package.json +1 -1
@@ -0,0 +1,209 @@
1
+ ---
2
+ name: seo-hreflang
3
+ description: >
4
+ Hreflang and international SEO audit, validation, and generation. Detects
5
+ common mistakes, validates language/region codes, and generates correct
6
+ hreflang implementations. Use when user says "hreflang", "i18n SEO",
7
+ "international SEO", "multi-language", "multi-region", or "language tags".
8
+ risk: unknown
9
+ source: "https://github.com/AgriciDaniel/claude-seo"
10
+ date_added: "2026-03-21"
11
+ user-invokable: true
12
+ argument-hint: "[url]"
13
+ allowed-tools:
14
+ - Read
15
+ - Grep
16
+ - Glob
17
+ - Bash
18
+ - WebFetch
19
+ ---
20
+
21
+ # Hreflang & International SEO
22
+
23
+ ## When to Use
24
+
25
+ - Use when validating or generating hreflang for multilingual or multiregional sites.
26
+ - Use when the user mentions international SEO, language tags, x-default, or hreflang issues.
27
+ - Use when auditing locale alternates across HTML, headers, or sitemap implementations.
28
+
29
+ Validate existing hreflang implementations or generate correct hreflang tags
30
+ for multi-language and multi-region sites. Supports HTML, HTTP header, and
31
+ XML sitemap implementations.
32
+
33
+ ## Validation Checks
34
+
35
+ ### 1. Self-Referencing Tags
36
+ - Every page must include an hreflang tag pointing to itself
37
+ - The self-referencing URL must exactly match the page's canonical URL
38
+ - Missing self-referencing tags cause Google to ignore the entire hreflang set
39
+
40
+ ### 2. Return Tags
41
+ - If page A links to page B with hreflang, page B must link back to page A
42
+ - Every hreflang relationship must be bidirectional (A→B and B→A)
43
+ - Missing return tags invalidate the hreflang signal for both pages
44
+ - Check all language versions reference each other (full mesh)
45
+
46
+ ### 3. x-default Tag
47
+ - Required: designates the fallback page for unmatched languages/regions
48
+ - Typically points to the language selector page or English version
49
+ - Only one x-default per set of alternates
50
+ - Must also have return tags from all other language versions
51
+
52
+ ### 4. Language Code Validation
53
+ - Must use ISO 639-1 two-letter codes (e.g., `en`, `fr`, `de`, `ja`)
54
+ - Common errors:
55
+ - `eng` instead of `en` (ISO 639-2, not valid for hreflang)
56
+ - `jp` instead of `ja` (incorrect code for Japanese)
57
+ - `zh` without region qualifier (ambiguous; use `zh-Hans` or `zh-Hant`)
58
+
59
+ ### 5. Region Code Validation
60
+ - Optional region qualifier uses ISO 3166-1 Alpha-2 (e.g., `en-US`, `en-GB`, `pt-BR`)
61
+ - Format: `language-REGION` (lowercase language, uppercase region)
62
+ - Common errors:
63
+ - `en-uk` instead of `en-GB` (UK is not a valid ISO 3166-1 code)
64
+ - `es-LA` (Latin America is not a country; use specific countries)
65
+ - Region without language prefix
66
+
67
+ ### 6. Canonical URL Alignment
68
+ - Hreflang tags must only appear on canonical URLs
69
+ - If a page has `rel=canonical` pointing elsewhere, hreflang on that page is ignored
70
+ - The canonical URL and hreflang URL must match exactly (including trailing slashes)
71
+ - Non-canonical pages should not be in any hreflang set
72
+
73
+ ### 7. Protocol Consistency
74
+ - All URLs in an hreflang set must use the same protocol (HTTPS or HTTP)
75
+ - Mixed HTTP/HTTPS in hreflang sets causes validation failures
76
+ - After HTTPS migration, update all hreflang tags to HTTPS
77
+
78
+ ### 8. Cross-Domain Support
79
+ - Hreflang works across different domains (e.g., example.com and example.de)
80
+ - Cross-domain hreflang requires return tags on both domains
81
+ - Verify both domains are verified in Google Search Console
82
+ - Sitemap-based implementation recommended for cross-domain setups
83
+
84
+ ## Common Mistakes
85
+
86
+ | Issue | Severity | Fix |
87
+ |-------|----------|-----|
88
+ | Missing self-referencing tag | Critical | Add hreflang pointing to same page URL |
89
+ | Missing return tags (A→B but no B→A) | Critical | Add matching return tags on all alternates |
90
+ | Missing x-default | High | Add x-default pointing to fallback/selector page |
91
+ | Invalid language code (e.g., `eng`) | High | Use ISO 639-1 two-letter codes |
92
+ | Invalid region code (e.g., `en-uk`) | High | Use ISO 3166-1 Alpha-2 codes |
93
+ | Hreflang on non-canonical URL | High | Move hreflang to canonical URL only |
94
+ | HTTP/HTTPS mismatch in URLs | Medium | Standardize all URLs to HTTPS |
95
+ | Trailing slash inconsistency | Medium | Match canonical URL format exactly |
96
+ | Hreflang in both HTML and sitemap | Low | Choose one method (sitemap preferred for large sites) |
97
+ | Language without region when needed | Low | Add region qualifier for geo-targeted content |
98
+
99
+ ## Implementation Methods
100
+
101
+ ### Method 1: HTML Link Tags
102
+ Best for: Sites with <50 language/region variants per page.
103
+
104
+ ```html
105
+ <link rel="alternate" hreflang="en-US" href="https://example.com/page" />
106
+ <link rel="alternate" hreflang="en-GB" href="https://example.co.uk/page" />
107
+ <link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
108
+ <link rel="alternate" hreflang="x-default" href="https://example.com/page" />
109
+ ```
110
+
111
+ Place in `<head>` section. Every page must include all alternates including itself.
112
+
113
+ ### Method 2: HTTP Headers
114
+ Best for: Non-HTML files (PDFs, documents).
115
+
116
+ ```
117
+ Link: <https://example.com/page>; rel="alternate"; hreflang="en-US",
118
+ <https://example.com/fr/page>; rel="alternate"; hreflang="fr",
119
+ <https://example.com/page>; rel="alternate"; hreflang="x-default"
120
+ ```
121
+
122
+ Set via server configuration or CDN rules.
123
+
124
+ ### Method 3: XML Sitemap (Recommended for large sites)
125
+ Best for: Sites with many language variants, cross-domain setups, or 50+ pages.
126
+
127
+ See Hreflang Sitemap Generation section below.
128
+
129
+ ### Method Comparison
130
+ | Method | Best For | Pros | Cons |
131
+ |--------|----------|------|------|
132
+ | HTML link tags | Small sites (<50 variants) | Easy to implement, visible in source | Bloats `<head>`, hard to maintain at scale |
133
+ | HTTP headers | Non-HTML files | Works for PDFs, images | Complex server config, not visible in HTML |
134
+ | XML sitemap | Large sites, cross-domain | Scalable, centralized management | Not visible on page, requires sitemap maintenance |
135
+
136
+ ## Hreflang Generation
137
+
138
+ ### Process
139
+ 1. **Detect languages**: Scan site for language indicators (URL path, subdomain, TLD, HTML lang attribute)
140
+ 2. **Map page equivalents**: Match corresponding pages across languages/regions
141
+ 3. **Validate language codes**: Verify all codes against ISO 639-1 and ISO 3166-1
142
+ 4. **Generate tags**: Create hreflang tags for each page including self-referencing
143
+ 5. **Verify return tags**: Confirm all relationships are bidirectional
144
+ 6. **Add x-default**: Set fallback for each page set
145
+ 7. **Output**: Generate implementation code (HTML, HTTP headers, or sitemap XML)
146
+
147
+ ## Hreflang Sitemap Generation
148
+
149
+ ### Sitemap with Hreflang
150
+ ```xml
151
+ <?xml version="1.0" encoding="UTF-8"?>
152
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
153
+ xmlns:xhtml="http://www.w3.org/1999/xhtml">
154
+ <url>
155
+ <loc>https://example.com/page</loc>
156
+ <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" />
157
+ <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
158
+ <xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" />
159
+ <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
160
+ </url>
161
+ <url>
162
+ <loc>https://example.com/fr/page</loc>
163
+ <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" />
164
+ <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
165
+ <xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" />
166
+ <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
167
+ </url>
168
+ </urlset>
169
+ ```
170
+
171
+ Key rules:
172
+ - Include the `xmlns:xhtml` namespace declaration
173
+ - Every `<url>` entry must include ALL language alternates (including itself)
174
+ - Each alternate must appear as a separate `<url>` entry with its own full set
175
+ - Split at 50,000 URLs per sitemap file
176
+
177
+ ## Output
178
+
179
+ ### Hreflang Validation Report
180
+
181
+ #### Summary
182
+ - Total pages scanned: XX
183
+ - Language variants detected: XX
184
+ - Issues found: XX (Critical: X, High: X, Medium: X, Low: X)
185
+
186
+ #### Validation Results
187
+ | Language | URL | Self-Ref | Return Tags | x-default | Status |
188
+ |----------|-----|----------|-------------|-----------|--------|
189
+ | en-US | https://... | ✅ | ✅ | ✅ | ✅ |
190
+ | fr | https://... | ❌ | ⚠️ | ✅ | ❌ |
191
+ | de | https://... | ✅ | ❌ | ✅ | ❌ |
192
+
193
+ ### Generated Hreflang Tags
194
+ - HTML `<link>` tags (if HTML method chosen)
195
+ - HTTP header values (if header method chosen)
196
+ - `hreflang-sitemap.xml` (if sitemap method chosen)
197
+
198
+ ### Recommendations
199
+ - Missing implementations to add
200
+ - Incorrect codes to fix
201
+ - Method migration suggestions (e.g., HTML to sitemap for scale)
202
+
203
+ ## Error Handling
204
+
205
+ | Scenario | Action |
206
+ |----------|--------|
207
+ | URL unreachable (DNS failure, connection refused) | Report the error clearly. Do not guess site structure. Suggest the user verify the URL and try again. |
208
+ | No hreflang tags found | Report the absence. Check for other internationalization signals (subdirectories, subdomains, ccTLDs) and recommend the appropriate hreflang implementation method. |
209
+ | Invalid language/region codes detected | List each invalid code with the correct replacement. Provide a corrected hreflang tag set ready to implement. |
@@ -0,0 +1,183 @@
1
+ ---
2
+ name: seo-image-gen
3
+ description: "Generate SEO-focused images such as OG cards, hero images, schema assets, product visuals, and infographics. Use when image generation is part of an SEO workflow or content publishing task."
4
+ risk: unknown
5
+ source: "https://github.com/AgriciDaniel/claude-seo"
6
+ date_added: "2026-03-21"
7
+ argument-hint: "[og|hero|product|infographic|custom|batch] <description>"
8
+ user-invokable: true
9
+ allowed-tools:
10
+ - Read
11
+ - Grep
12
+ - Glob
13
+ - Bash
14
+ - WebFetch
15
+ - Write
16
+ ---
17
+
18
+ # SEO Image Gen: AI Image Generation for SEO Assets (Extension)
19
+
20
+ Generate production-ready images for SEO use cases using Gemini's image generation
21
+ via the banana Creative Director pipeline. Maps SEO needs to optimized domain modes,
22
+ aspect ratios, and resolution defaults.
23
+
24
+ ## When to Use
25
+
26
+ - Use when generating OG images, hero images, schema visuals, infographics, or similar SEO assets.
27
+ - Use when image generation is part of a broader SEO or publishing workflow.
28
+ - Use only when the required image-generation extension is available.
29
+
30
+ ## Architecture Note
31
+
32
+ This skill has two components with distinct roles:
33
+ - **SKILL.md** (this file): Handles interactive `/seo image-gen` commands for generating images
34
+ - **Agent** (`agents/seo-image-gen.md`): Audit-only analyst spawned during `/seo audit` to assess existing OG/social images and produce a generation plan (never auto-generates)
35
+
36
+ ## Prerequisites
37
+
38
+ This skill requires the banana extension to be installed:
39
+ ```bash
40
+ ./extensions/banana/install.sh
41
+ ```
42
+
43
+ **Check availability:** Before using any image generation tool, verify the MCP server
44
+ is connected by checking if `gemini_generate_image` or `set_aspect_ratio` tools are
45
+ available. If tools are not available, inform the user the extension is not installed
46
+ and provide install instructions.
47
+
48
+ ## Quick Reference
49
+
50
+ | Command | What it does |
51
+ |---------|-------------|
52
+ | `/seo image-gen og <description>` | Generate OG/social preview image (1200x630 feel) |
53
+ | `/seo image-gen hero <description>` | Blog hero image (widescreen, dramatic) |
54
+ | `/seo image-gen product <description>` | Product photography (clean, white BG) |
55
+ | `/seo image-gen infographic <description>` | Infographic visual (vertical, data-heavy) |
56
+ | `/seo image-gen custom <description>` | Custom image with full Creative Director pipeline |
57
+ | `/seo image-gen batch <description> [N]` | Generate N variations (default: 3) |
58
+
59
+ ## SEO Image Use Cases
60
+
61
+ Each use case maps to pre-configured banana parameters:
62
+
63
+ | Use Case | Aspect Ratio | Resolution | Domain Mode | Notes |
64
+ |----------|-------------|------------|-------------|-------|
65
+ | **OG/Social Preview** | `16:9` | `1K` | Product or UI/Web | Clean, professional, text-friendly |
66
+ | **Blog Hero** | `16:9` | `2K` | Cinema or Editorial | Dramatic, atmospheric, editorial quality |
67
+ | **Schema Image** | `4:3` | `1K` | Product | Clean, descriptive, schema ImageObject |
68
+ | **Social Square** | `1:1` | `1K` | UI/Web | Platform-optimized square |
69
+ | **Product Photo** | `4:3` | `2K` | Product | White background, studio lighting |
70
+ | **Infographic** | `2:3` | `4K` | Infographic | Data-heavy, vertical layout |
71
+ | **Favicon/Icon** | `1:1` | `512` | Logo | Minimal, scalable, recognizable |
72
+ | **Pinterest Pin** | `2:3` | `2K` | Editorial | Tall vertical card |
73
+
74
+ ## Generation Pipeline
75
+
76
+ For every generation request:
77
+
78
+ 1. **Identify use case** from command or context (og, hero, product, etc.)
79
+ 2. **Apply SEO defaults** from the use cases table above
80
+ 3. **Set aspect ratio** via `set_aspect_ratio` MCP tool
81
+ 4. **Construct Reasoning Brief** using the banana Creative Director pipeline:
82
+ - Load `references/prompt-engineering.md` for the 6-component system
83
+ - Apply domain mode emphasis (Subject 30%, Style 25%, Context 15%, etc.)
84
+ - Be SPECIFIC and VISCERAL: describe what the camera sees
85
+ 5. **Generate** via `gemini_generate_image` MCP tool
86
+ 6. **Post-generation SEO checklist** (see below)
87
+
88
+ ### Check for Presets
89
+
90
+ If the user mentions a brand or has SEO presets configured:
91
+ ```bash
92
+ python3 ~/.claude/skills/seo-image-gen/scripts/presets.py list
93
+ ```
94
+ Load matching preset and apply as defaults. Also check `references/seo-image-presets.md`
95
+ for SEO-specific preset templates.
96
+
97
+ ## Post-Generation SEO Checklist
98
+
99
+ After every successful generation, guide the user on:
100
+
101
+ 1. **Alt text**:Write descriptive, keyword-rich alt text for the generated image
102
+ 2. **File naming**:Rename to SEO-friendly format: `keyword-description-widthxheight.webp`
103
+ 3. **WebP conversion**:Convert to WebP for optimal page speed:
104
+ ```bash
105
+ magick output.png -quality 85 output.webp
106
+ ```
107
+ 4. **File size**:Target under 200KB for hero images, under 100KB for thumbnails
108
+ 5. **Schema markup**:Suggest `ImageObject` schema for the generated image:
109
+ ```json
110
+ {
111
+ "@type": "ImageObject",
112
+ "url": "https://example.com/images/keyword-description.webp",
113
+ "width": 1200,
114
+ "height": 630,
115
+ "caption": "Descriptive caption with target keyword"
116
+ }
117
+ ```
118
+ 6. **OG meta tags**:For social preview images, remind about:
119
+ ```html
120
+ <meta property="og:image" content="https://example.com/images/og-image.webp" />
121
+ <meta property="og:image:width" content="1200" />
122
+ <meta property="og:image:height" content="630" />
123
+ <meta property="og:image:alt" content="Descriptive alt text" />
124
+ ```
125
+
126
+ ## Cost Awareness
127
+
128
+ Image generation costs money. Be transparent:
129
+ - Show estimated cost before generating (especially for batch)
130
+ - Log every generation: `python3 ~/.claude/skills/seo-image-gen/scripts/cost_tracker.py log --model MODEL --resolution RES --prompt "brief"`
131
+ - Run `cost_tracker.py summary` if user asks about usage
132
+
133
+ Approximate costs (gemini-3.1-flash):
134
+ - 512: ~$0.02/image
135
+ - 1K resolution: ~$0.04/image
136
+ - 2K resolution: ~$0.08/image
137
+ - 4K resolution: ~$0.16/image
138
+
139
+ ## Model Routing
140
+
141
+ | Scenario | Model | Why |
142
+ |----------|-------|-----|
143
+ | OG images, social previews | `gemini-3.1-flash-image-preview` @ 1K | Fast, cost-effective |
144
+ | Hero images, product photos | `gemini-3.1-flash-image-preview` @ 2K | Quality + detail |
145
+ | Infographics with text | `gemini-3.1-flash-image-preview` @ 2K, thinking: high | Better text rendering |
146
+ | Quick drafts | `gemini-2.5-flash-image` @ 512 | Rapid iteration |
147
+
148
+ ## Error Handling
149
+
150
+ | Error | Resolution |
151
+ |-------|-----------|
152
+ | MCP not configured | Run `./extensions/banana/install.sh` |
153
+ | API key invalid | New key at https://aistudio.google.com/apikey |
154
+ | Rate limited (429) | Wait 60s, retry. Free tier: ~10 RPM / ~500 RPD |
155
+ | `IMAGE_SAFETY` | Rephrase prompt - see `references/prompt-engineering.md` Safety section |
156
+ | MCP unavailable | Fall back: `python3 ~/.claude/skills/seo-image-gen/scripts/generate.py --prompt "..." --aspect-ratio "16:9"` |
157
+ | Extension not installed | Show install instructions: `./extensions/banana/install.sh` |
158
+
159
+ ## Cross-Skill Integration
160
+
161
+ - **seo-images** (analysis) feeds into **seo-image-gen** (generation): audit results from `/seo images` identify missing or low-quality images; use those findings to drive `/seo image-gen` commands
162
+ - **seo-audit** spawns the seo-image-gen **agent** (not this skill) to analyze OG/social images across the site and produce a prioritized generation plan
163
+ - **seo-schema** can consume generated images: after generation, suggest `ImageObject` schema markup pointing to the new assets
164
+
165
+ ## Reference Documentation
166
+
167
+ Load on-demand. Do NOT load all at startup:
168
+ - `references/prompt-engineering.md`:6-component system, domain modes, templates
169
+ - `references/gemini-models.md`:Model specs, rate limits, capabilities
170
+ - `references/mcp-tools.md`:MCP tool parameters and responses
171
+ - `references/post-processing.md`:ImageMagick/FFmpeg pipeline recipes
172
+ - `references/cost-tracking.md`:Pricing, usage tracking
173
+ - `references/presets.md`:Brand preset management
174
+ - `references/seo-image-presets.md`:SEO-specific preset templates
175
+
176
+ ## Response Format
177
+
178
+ After generating, always provide:
179
+ 1. **Image path**:where it was saved
180
+ 2. **Crafted prompt**:show what was sent to the API (educational)
181
+ 3. **Settings**:model, aspect ratio, resolution
182
+ 4. **SEO checklist**:alt text suggestion, file naming, WebP conversion
183
+ 5. **Schema snippet**:ImageObject or og:image markup if applicable
@@ -0,0 +1,193 @@
1
+ ---
2
+ name: seo-images
3
+ description: >
4
+ Image optimization analysis for SEO and performance. Checks alt text, file
5
+ sizes, formats, responsive images, lazy loading, and CLS prevention. Use when
6
+ user says "image optimization", "alt text", "image SEO", "image size",
7
+ or "image audit".
8
+ risk: unknown
9
+ source: "https://github.com/AgriciDaniel/claude-seo"
10
+ date_added: "2026-03-21"
11
+ user-invokable: true
12
+ argument-hint: "[url]"
13
+ allowed-tools:
14
+ - Read
15
+ - Grep
16
+ - Glob
17
+ - Bash
18
+ - WebFetch
19
+ ---
20
+
21
+ # Image Optimization Analysis
22
+
23
+ ## When to Use
24
+
25
+ - Use when auditing image SEO, alt text, file sizes, formats, or lazy loading.
26
+ - Use when the user wants image-specific performance recommendations.
27
+ - Use when checking media quality signals that affect both SEO and Core Web Vitals.
28
+
29
+ ## Checks
30
+
31
+ ### Alt Text
32
+ - Present on all `<img>` elements (except decorative: `role="presentation"`)
33
+ - Descriptive: describes the image content, not "image.jpg" or "photo"
34
+ - Includes relevant keywords where natural, not keyword-stuffed
35
+ - Length: 10-125 characters
36
+
37
+ **Good examples:**
38
+ - "Professional plumber repairing kitchen sink faucet"
39
+ - "Red 2024 Toyota Camry sedan front view"
40
+ - "Team meeting in modern office conference room"
41
+
42
+ **Bad examples:**
43
+ - "image.jpg" (filename, not description)
44
+ - "plumber plumbing plumber services" (keyword stuffing)
45
+ - "Click here" (not descriptive)
46
+
47
+ ### File Size
48
+
49
+ **Tiered thresholds by image category:**
50
+
51
+ | Image Category | Target | Warning | Critical |
52
+ |----------------|--------|---------|----------|
53
+ | Thumbnails | < 50KB | > 100KB | > 200KB |
54
+ | Content images | < 100KB | > 200KB | > 500KB |
55
+ | Hero/banner images | < 200KB | > 300KB | > 700KB |
56
+
57
+ Recommend compression to target thresholds where possible without quality loss.
58
+
59
+ ### Format
60
+ | Format | Browser Support | Use Case |
61
+ |--------|-----------------|----------|
62
+ | WebP | 97%+ | Default recommendation |
63
+ | AVIF | 92%+ | Best compression, newer |
64
+ | JPEG | 100% | Fallback for photos |
65
+ | PNG | 100% | Graphics with transparency |
66
+ | SVG | 100% | Icons, logos, illustrations |
67
+
68
+ Recommend WebP/AVIF over JPEG/PNG. Check for `<picture>` element with format fallbacks.
69
+
70
+ #### Recommended `<picture>` Element Pattern
71
+
72
+ Use progressive enhancement with the most efficient format first:
73
+
74
+ ```html
75
+ <picture>
76
+ <source srcset="image.avif" type="image/avif">
77
+ <source srcset="image.webp" type="image/webp">
78
+ <img src="image.jpg" alt="Descriptive alt text" width="800" height="600" loading="lazy" decoding="async">
79
+ </picture>
80
+ ```
81
+
82
+ The browser will use the first supported format. Current browser support: AVIF 93.8%, WebP 95.3%.
83
+
84
+ #### JPEG XL: Emerging Format
85
+
86
+ In November 2025, Google's Chromium team reversed its 2022 decision and announced it will restore JPEG XL support in Chrome using a Rust-based decoder. The implementation is feature-complete but not yet in Chrome stable. JPEG XL offers lossless JPEG recompression (~20% savings with zero quality loss) and competitive lossy compression. Not yet practical for web deployment, but worth monitoring for future adoption.
87
+
88
+ ### Responsive Images
89
+ - `srcset` attribute for multiple sizes
90
+ - `sizes` attribute matching layout breakpoints
91
+ - Appropriate resolution for device pixel ratios
92
+
93
+ ```html
94
+ <img
95
+ src="image-800.jpg"
96
+ srcset="image-400.jpg 400w, image-800.jpg 800w, image-1200.jpg 1200w"
97
+ sizes="(max-width: 600px) 400px, (max-width: 1200px) 800px, 1200px"
98
+ alt="Description"
99
+ >
100
+ ```
101
+
102
+ ### Lazy Loading
103
+ - `loading="lazy"` on below-fold images
104
+ - Do NOT lazy-load above-fold/hero images (hurts LCP)
105
+ - Check for native vs JavaScript-based lazy loading
106
+
107
+ ```html
108
+ <!-- Below fold - lazy load -->
109
+ <img src="photo.jpg" loading="lazy" alt="Description">
110
+
111
+ <!-- Above fold - eager load (default) -->
112
+ <img src="hero.jpg" alt="Hero image">
113
+ ```
114
+
115
+ ### `fetchpriority="high"` for LCP Images
116
+
117
+ Add `fetchpriority="high"` to your hero/LCP image to prioritize its download in the browser's network queue:
118
+
119
+ ```html
120
+ <img src="hero.webp" fetchpriority="high" alt="Hero image description" width="1200" height="630">
121
+ ```
122
+
123
+ **Critical:** Do NOT lazy-load above-the-fold/LCP images. Using `loading="lazy"` on LCP images directly harms LCP scores. Reserve `loading="lazy"` for below-the-fold images only.
124
+
125
+ ### `decoding="async"` for Non-LCP Images
126
+
127
+ Add `decoding="async"` to non-LCP images to prevent image decoding from blocking the main thread:
128
+
129
+ ```html
130
+ <img src="photo.webp" alt="Description" width="600" height="400" loading="lazy" decoding="async">
131
+ ```
132
+
133
+ ### CLS Prevention
134
+ - `width` and `height` attributes set on all `<img>` elements
135
+ - `aspect-ratio` CSS as alternative
136
+ - Flag images without dimensions
137
+
138
+ ```html
139
+ <!-- Good - dimensions set -->
140
+ <img src="photo.jpg" width="800" height="600" alt="Description">
141
+
142
+ <!-- Good - CSS aspect ratio -->
143
+ <img src="photo.jpg" style="aspect-ratio: 4/3" alt="Description">
144
+
145
+ <!-- Bad - no dimensions -->
146
+ <img src="photo.jpg" alt="Description">
147
+ ```
148
+
149
+ ### File Names
150
+ - Descriptive: `blue-running-shoes.webp` not `IMG_1234.jpg`
151
+ - Hyphenated, lowercase, no special characters
152
+ - Include relevant keywords
153
+
154
+ ### CDN Usage
155
+ - Check if images served from CDN (different domain, CDN headers)
156
+ - Recommend CDN for image-heavy sites
157
+ - Check for edge caching headers
158
+
159
+ ## Output
160
+
161
+ ### Image Audit Summary
162
+
163
+ | Metric | Status | Count |
164
+ |--------|--------|-------|
165
+ | Total Images | - | XX |
166
+ | Missing Alt Text | ❌ | XX |
167
+ | Oversized (>200KB) | ⚠️ | XX |
168
+ | Wrong Format | ⚠️ | XX |
169
+ | No Dimensions | ⚠️ | XX |
170
+ | Not Lazy Loaded | ⚠️ | XX |
171
+
172
+ ### Prioritized Optimization List
173
+
174
+ Sorted by file size impact (largest savings first):
175
+
176
+ | Image | Current Size | Format | Issues | Est. Savings |
177
+ |-------|--------------|--------|--------|--------------|
178
+ | ... | ... | ... | ... | ... |
179
+
180
+ ### Recommendations
181
+ 1. Convert X images to WebP format (est. XX KB savings)
182
+ 2. Add alt text to X images
183
+ 3. Add dimensions to X images
184
+ 4. Enable lazy loading on X below-fold images
185
+ 5. Compress X oversized images
186
+
187
+ ## Error Handling
188
+
189
+ | Scenario | Action |
190
+ |----------|--------|
191
+ | URL unreachable | Report connection error with status code. Suggest verifying URL and checking if site requires authentication. |
192
+ | No images found on page | Report that no `<img>` elements were detected. Suggest checking if images are loaded via JavaScript or CSS background-image. |
193
+ | Images behind CDN or authentication | Note that image files could not be directly accessed for size analysis. Report available metadata (alt text, dimensions, format from markup) and flag inaccessible resources. |
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: seo-page
3
+ description: >
4
+ Deep single-page SEO analysis covering on-page elements, content quality,
5
+ technical meta tags, schema, images, and performance. Use when user says
6
+ "analyze this page", "check page SEO", or provides a single URL for review.
7
+ risk: unknown
8
+ source: "https://github.com/AgriciDaniel/claude-seo"
9
+ date_added: "2026-03-21"
10
+ user-invokable: true
11
+ argument-hint: "[url]"
12
+ allowed-tools:
13
+ - Read
14
+ - Grep
15
+ - Glob
16
+ - Bash
17
+ - WebFetch
18
+ ---
19
+
20
+ # Single Page Analysis
21
+
22
+ ## When to Use
23
+
24
+ - Use when the user provides a single URL for detailed on-page SEO review.
25
+ - Use when auditing one page rather than an entire site.
26
+ - Use when checking metadata, content, schema, images, and page-level technical signals together.
27
+
28
+ ## What to Analyze
29
+
30
+ ### On-Page SEO
31
+ - Title tag: 50-60 characters, includes primary keyword, unique
32
+ - Meta description: 150-160 characters, compelling, includes keyword
33
+ - H1: exactly one, matches page intent, includes keyword
34
+ - H2-H6: logical hierarchy (no skipped levels), descriptive
35
+ - URL: short, descriptive, hyphenated, no parameters
36
+ - Internal links: sufficient, relevant anchor text, no orphan pages
37
+ - External links: to authoritative sources, reasonable count
38
+
39
+ ### Content Quality
40
+ - Word count vs page type minimums (see quality-gates.md)
41
+ - Readability: Flesch Reading Ease score, grade level
42
+ - Keyword density: natural (1-3%), semantic variations present
43
+ - E-E-A-T signals: author bio, credentials, first-hand experience markers
44
+ - Content freshness: publication date, last updated date
45
+
46
+ ### Technical Elements
47
+ - Canonical tag: present, self-referencing or correct
48
+ - Meta robots: index/follow unless intentionally blocked
49
+ - Open Graph: og:title, og:description, og:image, og:url
50
+ - Twitter Card: twitter:card, twitter:title, twitter:description
51
+ - Hreflang: if multi-language, correct implementation
52
+
53
+ ### Schema Markup
54
+ - Detect all types (JSON-LD preferred)
55
+ - Validate required properties
56
+ - Identify missing opportunities
57
+ - NEVER recommend HowTo (deprecated) or FAQ (restricted to gov/health)
58
+
59
+ ### Images
60
+ - Alt text: present, descriptive, includes keywords where natural
61
+ - File size: flag >200KB (warning), >500KB (critical)
62
+ - Format: recommend WebP/AVIF over JPEG/PNG
63
+ - Dimensions: width/height set for CLS prevention
64
+ - Lazy loading: loading="lazy" on below-fold images
65
+
66
+ ### Core Web Vitals (reference only, not measurable from HTML alone)
67
+ - Flag potential LCP issues (huge hero images, render-blocking resources)
68
+ - Flag potential INP issues (heavy JS, no async/defer)
69
+ - Flag potential CLS issues (missing image dimensions, injected content)
70
+
71
+ ## Output
72
+
73
+ ### Page Score Card
74
+ ```
75
+ Overall Score: XX/100
76
+
77
+ On-Page SEO: XX/100 ████████░░
78
+ Content Quality: XX/100 ██████████
79
+ Technical: XX/100 ███████░░░
80
+ Schema: XX/100 █████░░░░░
81
+ Images: XX/100 ████████░░
82
+ ```
83
+
84
+ ### Issues Found
85
+ Organized by priority: Critical -> High -> Medium -> Low
86
+
87
+ ### Recommendations
88
+ Specific, actionable improvements with expected impact
89
+
90
+ ### Schema Suggestions
91
+ Ready-to-use JSON-LD code for detected opportunities
92
+
93
+ ## DataForSEO Integration (Optional)
94
+
95
+ If DataForSEO MCP tools are available, use `serp_organic_live_advanced` for real SERP positions and `backlinks_summary` for backlink data and spam scores.
96
+
97
+ ## Error Handling
98
+
99
+ | Scenario | Action |
100
+ |----------|--------|
101
+ | URL unreachable (DNS failure, connection refused) | Report the error clearly. Do not guess page content. Suggest the user verify the URL and try again. |
102
+ | Page requires authentication (401/403) | Report that the page is behind authentication. Suggest the user provide the rendered HTML directly or a publicly accessible URL. |
103
+ | JavaScript-rendered content (empty body in HTML) | Note that key content may be rendered client-side. Analyze the available HTML and flag that results may be incomplete. Suggest using a browser-rendered snapshot if available. |