Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
b515767
Add GEO + SEO rule for advocacy websites
stuckvgn Mar 28, 2026
6f544d2
Add geo-seo-audit skill for advocacy websites
stuckvgn Mar 28, 2026
3ae21d5
Update skills README to include geo-seo-audit
stuckvgn Mar 28, 2026
d3877f4
Update README file count for geo-seo additions
stuckvgn Mar 28, 2026
73eb0db
Add GEO + SEO instructions to cursor
stuckvgn Mar 28, 2026
fde7b05
Add GEO + SEO instructions to github-copilot
stuckvgn Mar 28, 2026
301c5ef
Add GEO + SEO instructions to windsurf
stuckvgn Mar 28, 2026
c1091f8
Add GEO + SEO instructions to kilo-code
stuckvgn Mar 28, 2026
15bf7d4
Add GEO + SEO instructions to roo-code
stuckvgn Mar 28, 2026
1f8271b
Add GEO + SEO instructions to augment-code
stuckvgn Mar 28, 2026
7cfe374
Add GEO + SEO instructions to github-copilot
stuckvgn Mar 28, 2026
db067c3
Add GEO + SEO instructions to github-copilot
stuckvgn Mar 28, 2026
b1ee8b0
Add GEO + SEO instructions to aider
stuckvgn Mar 28, 2026
c7cd5a9
Add GEO + SEO instructions to gemini-cli
stuckvgn Mar 28, 2026
9d27f05
Add GEO + SEO instructions to jetbrains-junie
stuckvgn Mar 28, 2026
a0c4d35
Add GEO + SEO instructions to agents-md
stuckvgn Mar 28, 2026
99c0622
Expand geo-seo rule with research: Wikipedia/Wikidata, semantic writi…
stuckvgn Mar 28, 2026
afe3f26
Expand geo-seo-audit skill: Wikipedia/Wikidata audit, semantic writin…
stuckvgn Mar 28, 2026
6d70799
Update GEO + SEO content in cursor with research on Wikipedia/Wikidat…
stuckvgn Mar 28, 2026
2f9ffb0
Update GEO + SEO content in cursor with research on Wikipedia/Wikidat…
stuckvgn Mar 28, 2026
f0bd019
Update GEO + SEO content in github-copilot with research on Wikipedia…
stuckvgn Mar 28, 2026
42a3579
Update GEO + SEO content in windsurf with research on Wikipedia/Wikid…
stuckvgn Mar 28, 2026
b0e92a5
Update GEO + SEO content in kilo-code with research on Wikipedia/Wiki…
stuckvgn Mar 28, 2026
10d1c5c
Update GEO + SEO content in roo-code with research on Wikipedia/Wikid…
stuckvgn Mar 28, 2026
b676219
Update GEO + SEO content in augment-code with research on Wikipedia/W…
stuckvgn Mar 28, 2026
58e975b
Update GEO + SEO content in github-copilot with research on Wikipedia…
stuckvgn Mar 28, 2026
a97a7bc
Update GEO + SEO content in aider with research on Wikipedia/Wikidata…
stuckvgn Mar 28, 2026
3e7c658
Update GEO + SEO content in gemini-cli with research on Wikipedia/Wik…
stuckvgn Mar 28, 2026
8a8aa89
Update GEO + SEO content in jetbrains-junie with research on Wikipedi…
stuckvgn Mar 28, 2026
6c77e35
Update GEO + SEO content in agents-md with research on Wikipedia/Wiki…
stuckvgn Mar 28, 2026
ec91941
Expand SEO+GEO rule: CWV 2026 thresholds, E-E-A-T, Helpful Content Sy…
stuckvgn Mar 28, 2026
64fe9e0
Expand skill to 17 steps: CWV updated thresholds, content intent, E-E…
stuckvgn Mar 28, 2026
457194d
Update SEO+GEO content in cursor: CWV 2026 thresholds, E-E-A-T, inten…
stuckvgn Mar 28, 2026
8a24428
Update SEO+GEO content in github-copilot: CWV 2026 thresholds, E-E-A-…
stuckvgn Mar 28, 2026
83fe32a
Update SEO+GEO content in windsurf: CWV 2026 thresholds, E-E-A-T, int…
stuckvgn Mar 28, 2026
e492d4f
Update SEO+GEO content in kilo-code: CWV 2026 thresholds, E-E-A-T, in…
stuckvgn Mar 28, 2026
3d59d39
Update SEO+GEO content in roo-code: CWV 2026 thresholds, E-E-A-T, int…
stuckvgn Mar 28, 2026
5b5570e
Update SEO+GEO content in augment-code: CWV 2026 thresholds, E-E-A-T,…
stuckvgn Mar 28, 2026
aa9c921
Update SEO+GEO content in github-copilot: CWV 2026 thresholds, E-E-A-…
stuckvgn Mar 28, 2026
ca74cf8
Update SEO+GEO content in aider: CWV 2026 thresholds, E-E-A-T, intent…
stuckvgn Mar 28, 2026
bf8ba03
Update SEO+GEO content in gemini-cli: CWV 2026 thresholds, E-E-A-T, i…
stuckvgn Mar 28, 2026
a5d5edf
Update SEO+GEO content in jetbrains-junie: CWV 2026 thresholds, E-E-A…
stuckvgn Mar 28, 2026
0d10f52
Update SEO+GEO content in agents-md: CWV 2026 thresholds, E-E-A-T, in…
stuckvgn Mar 28, 2026
d02038f
Fix MD022: add blank line after When to Use heading
stuckvgn Mar 28, 2026
04a691a
Expand copilot prompt: add Wikipedia/Wikidata step, defensive review …
stuckvgn Mar 28, 2026
df5f862
Condense GEO+SEO section in GEMINI.md to reduce instruction budget (G…
stuckvgn Mar 28, 2026
2ca9341
feat(geo-seo): add CRO, analytics, i18n sections; fix LCP threshold t…
stuckvgn Mar 28, 2026
98340e0
feat(geo-seo): add CRO, analytics, i18n sections; fix LCP threshold t…
stuckvgn Mar 28, 2026
b49b2a4
feat(geo-seo): add CRO, analytics, i18n sections; fix LCP threshold t…
stuckvgn Mar 28, 2026
476841f
feat(geo-seo): add CRO, analytics, i18n sections; fix LCP threshold t…
stuckvgn Mar 28, 2026
08a2b02
feat(geo-seo): add CRO, analytics, i18n sections; fix LCP threshold t…
stuckvgn Mar 28, 2026
798a980
feat(geo-seo): fix LCP threshold to 2.5s in copilot prompt
stuckvgn Mar 28, 2026
4055488
feat(geo-seo): add CRO, analytics, i18n sections; fix LCP threshold t…
stuckvgn Mar 28, 2026
b5397c3
feat(geo-seo): add CRO, analytics, i18n sections; fix LCP threshold t…
stuckvgn Mar 28, 2026
cca8793
feat(geo-seo): add CRO, analytics, i18n sections; fix LCP threshold t…
stuckvgn Mar 28, 2026
397e645
feat(geo-seo): add CRO, analytics, i18n sections; fix LCP threshold t…
stuckvgn Mar 28, 2026
4d08277
feat(geo-seo): update single-file tools with CRO, analytics, i18n; fi…
stuckvgn Mar 28, 2026
c66e2d6
feat(geo-seo): update single-file tools with CRO, analytics, i18n; fi…
stuckvgn Mar 28, 2026
e4b8fe9
feat(geo-seo): update single-file tools with CRO, analytics, i18n; fi…
stuckvgn Mar 28, 2026
b726ccf
feat(geo-seo): update single-file tools with CRO, analytics, i18n; fi…
stuckvgn Mar 28, 2026
e7f8a74
fix: add blank line between HTML comment and heading in windsurf rule…
stuckvgn Mar 28, 2026
3acfe94
fix: correct malformed HTML comment in windsurf rule file
stuckvgn Mar 28, 2026
7b19975
Fix CodeRabbit comments in windsurf geo-seo rules
stuckvgn Mar 29, 2026
f3b433b
Fix phrasing: 'position drops of 0.8 places' → 'average ranking drop …
stuckvgn Mar 29, 2026
4c1b6be
Fix CodeRabbit full review findings
stuckvgn Mar 29, 2026
715973c
Fix remaining CodeRabbit comments
stuckvgn Mar 29, 2026
fd10bfc
Apply consistent geo-seo fixes across all 8 remaining tool files
stuckvgn Mar 29, 2026
90e6312
Fix step numbering in SKILL.md files: 17 numbered steps + unnumbered …
stuckvgn Mar 29, 2026
2ecfef9
Fix: append SKILL.md canonical reference to geo-seo-audit README entry
stuckvgn Mar 29, 2026
8b6933f
Fix 3 more CodeRabbit issues
stuckvgn Mar 29, 2026
b5cc0a6
Fix schema.org validator URLs and README copilot skill count
stuckvgn Mar 29, 2026
5de9b40
Fix 4 CodeRabbit comments: file counts, COI guardrails, glob patterns…
stuckvgn Mar 29, 2026
08f09e4
Add Wikipedia COI guardrails across all 12 tool files + citation sources
stuckvgn Mar 29, 2026
0f9d1c5
Fix prompt step mapping: remove Step 15 from omitted list (Step 9 cov…
stuckvgn Mar 29, 2026
9e938b5
Fix schema.org validator URLs and add cursor frontmatter sync fields
stuckvgn Mar 29, 2026
901c8c1
Fix crawler lists, tighten applyTo glob, add COI/training-block/Unico…
stuckvgn Mar 29, 2026
3073a2c
Add source citations to quantitative claims; fix cursor source frontm…
stuckvgn Mar 29, 2026
eeab5b2
Add Permissions-Policy and COOP to security headers in canonical rule…
stuckvgn Mar 29, 2026
9340bef
Add Permissions-Policy and COOP to cursor rules security headers
stuckvgn Mar 29, 2026
0b5238e
Add frontmatter to augment/roo rules; add Perm-Policy+COOP to augment…
stuckvgn Mar 29, 2026
cc6f9e4
Add source citations to all remaining geo-seo files; fix CSS logical …
stuckvgn Mar 29, 2026
e6f6b11
Add frontmatter and Permissions-Policy+COOP headers to kilo-code and …
stuckvgn Mar 29, 2026
fa74b6e
Fix CodeRabbit feedback: autocomplete attr, utility class wording, se…
stuckvgn Mar 31, 2026
10510d9
Fix README process skills count: add missing geo-seo-audit entry to list
stuckvgn Mar 31, 2026
f481a4b
Add geo-seo-audit skill to kilo-code; update skill counts to 7 in README
stuckvgn Mar 31, 2026
3dcc08d
Update kilo-code skills index; fix repetitive 'Is' phrasing in geo-se…
stuckvgn Mar 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ cp agents-md/AGENTS.md your-project/

| Tool | Directory | Files | Format Notes |
|------|-----------|------:|--------------|
| Claude Code | `claude-code/` | 15 | CLAUDE.md + 7 scoped rules + 6 skills + hooks template |
| Claude Code | `claude-code/` | 17 | CLAUDE.md + 8 scoped rules + 7 skills + hooks template |
| Cursor | `cursor/` | 14 | .cursorrules + 13 .mdc files with 4 activation modes |
| GitHub Copilot | `github-copilot/` | 22 | copilot-instructions.md + 7 instructions + 6 prompts + 2 chat modes + 6 skills |
| Windsurf | `windsurf/` | 14 | 14 .md files in .windsurf/rules/ with 4 trigger types, within 6K/12K char limits |
Expand Down
285 changes: 285 additions & 0 deletions claude-code/.claude/rules/geo-seo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,285 @@
---
paths:
- "**/*.html"
- "**/robots.txt"
- "**/sitemap.xml"
- "**/llms.txt"
- "**/head/**"
- "**/seo/**"
- "**/meta/**"
- "**/schema/**"
- "**/structured-data/**"
- "**/layout.*"
- "**/Layout.*"
- "**/BaseHead.*"
- "**/Head.*"
---
Comment on lines +1 to +16
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider automating propagation from this canonical rules file.

Given this file is the source of truth, a lightweight generator script (canonical → tool-specific outputs) would reduce drift and manual sync overhead across the 12 tool formats.

I can draft a small read-only generation plan (inputs, mappings, and output targets) if you want to track it as a follow-up issue.
Based on learnings: the canonical source is claude-code/.claude/rules/geo-seo.md, duplication across tool files is intentional, and a build script is a valid future improvement.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@claude-code/.claude/rules/geo-seo.md` around lines 1 - 16, The canonical
rules list in claude-code/.claude/rules/geo-seo.md is being duplicated across 12
tool-specific formats; add a small read-only generator (e.g.,
scripts/generate-geo-seo-rules) that reads claude-code/.claude/rules/geo-seo.md
and emits the tool-specific rule outputs (map the YAML paths block to each
target format), update CI to run the generator in a dry-run mode for
verification, and replace the duplicated files with generated artifacts or a
note pointing to the canonical source so future edits are made only in
geo-seo.md.

# GEO + SEO Rules for Animal Advocacy Websites

Websites built for animal advocacy serve two discovery channels: traditional search engines and AI answer systems (ChatGPT, Perplexity, Google AI Overviews, Claude, Gemini, Bing Copilot). Approximately 60% of searches now end without a click — AI systems are the fastest-growing discovery channel and have distinct citation requirements. Follow these rules when building or modifying any public-facing advocacy website.

## HTML Structure

Every page needs exactly one `<h1>` tag. Use a logical heading hierarchy (`h1 > h2 > h3`), never skipping levels. Phrase `<h2>` headings as questions when the section answers something — question-based headings produce 7× more AI citations for smaller sites. The first paragraph after any heading must directly answer that question in 40-60 words. AI systems pull from the first 30% of content 44% of the time — lead with the answer.

Keep paragraphs to 2-4 sentences (40-60 words). Structure content as self-contained 120-180 word modules — this modular pattern generates 70% more ChatGPT citations than unstructured prose.

Use semantic HTML correctly: `<article>`, `<section>`, `<nav>`, `<aside>`, `<header>`, `<footer>`, `<main>`. Add `lang` attribute to `<html>`. Every `<img>` must have a descriptive `alt` attribute. Every `<a>` must have meaningful anchor text — never "click here".

Use `<table>` for comparison data (32.5% of AI-cited content contains tables). Use `<ol>` and `<ul>` for lists (78% of AI answers include list formats). Use `<blockquote cite="...">` for expert quotations (28-40% AI visibility boost). Use `<time datetime="YYYY-MM-DD">` for dates. Use `<dfn>` for term definitions. Use `<abbr title="full term">` on first use. Add `id` attributes to all `<h2>` and `<h3>` elements.

## Do Not

- Do NOT hide content behind JavaScript-only rendering — AI crawlers often cannot execute JS. All critical content must be in the initial HTML response (SSR or pre-rendered).
- Do NOT use `display:none` or `visibility:hidden` on content to be indexed.
- Do NOT rely on infinite scroll — use paginated `<a>` links.
- Do NOT use iframes for primary content.
- Do NOT keyword-stuff — stuffing decreases AI visibility by 10%.

## Structured Data (JSON-LD)

Implement JSON-LD schema in the `<head>` of every page. Sites with structured data achieve 41% AI citation rates vs 15% without. Only 12.4% of websites implement it — this is the single highest-leverage GEO action.

### Organization + WebSite schema (every page)

```html
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://yoursite.com/#organization",
"name": "Organization Name",
"url": "https://yoursite.com",
"logo": { "@type": "ImageObject", "url": "https://yoursite.com/logo.png" },
"sameAs": [
"https://www.linkedin.com/company/your-org",
"https://twitter.com/your-org",
"https://github.com/your-org"
],
"description": "One-sentence description"
},
{
"@type": "WebSite",
"@id": "https://yoursite.com/#website",
"url": "https://yoursite.com",
"name": "Site Name",
"publisher": { "@id": "https://yoursite.com/#organization" }
}
]
}
</script>
```

### Article schema (every content page)

```html
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Page title",
"author": {
"@type": "Person",
"name": "Author Name",
"url": "https://yoursite.com/team/author-name",
"jobTitle": "Their role"
},
"publisher": { "@id": "https://yoursite.com/#organization" },
"datePublished": "2026-01-15T08:00:00Z",
"dateModified": "2026-03-20T10:30:00Z",
"image": "https://yoursite.com/images/article-image.jpg",
"description": "150-160 char meta description"
}
</script>
```

### FAQPage schema (pages with Q&A content)

```html
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is the question?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Direct, complete answer in 40-80 words."
}
}
]
}
</script>
```

Also implement when applicable: **HowTo**, **BreadcrumbList**, **SoftwareApplication**, **Event**, **Dataset**, **Person**.

Schema rules: always use JSON-LD (not Microdata). Use `@id` references to connect entities across pages. Keep `dateModified` accurate. Validate at schema.org/validator.

## Meta Tags

```html
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Primary Keyword — Brand Name</title><!-- 50-60 chars, keywords first -->
<meta name="description" content="150-160 chars. Direct answer + one statistic.">
<link rel="canonical" href="https://yoursite.com/this-page">
<meta property="og:title" content="Page Title">
<meta property="og:description" content="Description">
<meta property="og:type" content="article">
<meta property="og:url" content="https://yoursite.com/this-page">
<meta property="og:image" content="https://yoursite.com/images/og-image.jpg">
<meta property="og:site_name" content="Site Name">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Page Title">
<meta name="twitter:description" content="Description">
<meta name="twitter:image" content="https://yoursite.com/images/twitter-image.jpg">
<meta property="article:published_time" content="2026-01-15T08:00:00Z">
<meta property="article:modified_time" content="2026-03-20T10:30:00Z">
</head>
```

Meta description rules: 150-160 chars, direct factual answer to the primary query, one specific statistic, never duplicated across pages.

## Robots.txt

```
# Standard search engines
User-agent: Googlebot
Allow: /

User-agent: Bingbot
Allow: /

# AI search and citation crawlers — allow these for AI visibility
User-agent: OAI-SearchBot
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: Applebot
Allow: /

User-agent: Amazonbot
Allow: /

# AI training crawlers — block if not consenting to training use
# Remove blocks below if maximum AI visibility is the goal
User-agent: GPTBot
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: Google-Extended
Disallow: /

# Block scraper bots
User-agent: AhrefsBot
Disallow: /

User-agent: SemrushBot
Disallow: /

Sitemap: https://yoursite.com/sitemap.xml
```

Critical: blocking `Googlebot` blocks both Google Search AND AI Overviews — there is no way to allow one without the other. Review quarterly as new crawlers emerge.

## XML Sitemap

Include only canonical, indexable URLs. `<lastmod>` must reflect actual content update date — never fake it. Reference in robots.txt. Submit to Google Search Console and Bing Webmaster Tools. Regenerate automatically when content changes. Maximum 50,000 URLs per file.

```xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://yoursite.com/</loc>
<lastmod>2026-03-28</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
</urlset>
```

## Site Architecture

URL rules: descriptive hyphenated lowercase, under 75 characters, include primary keyword, max 3 levels deep. Implement canonical tags on every page. Use 301 redirects for URL changes.

Internal linking: no important page more than 3 clicks from homepage. Use hub-and-spoke topic cluster model:
- **Pillar page**: 2,000-4,000 words on a broad topic
- **Cluster pages**: 8-15 detailed pages on specific subtopics
- **Bidirectional links**: every cluster page links to pillar, pillar links to every cluster page

This architecture increases AI citation rates from 12% to 41%.

Content freshness: display "Last Updated: [date]" visibly on every page. Keep `dateModified` synchronized. 76% of the most-cited AI content was updated within 30 days.

## Performance

AI crawlers timeout at 1-5 seconds. Targets:
- TTFB < 200ms
- LCP < 2.5s
- CLS < 0.1
- Page weight < 1MB (18% of pages over 1MB are abandoned by AI crawlers)

Require SSR or SSG — AI crawlers often cannot execute JavaScript. Implement gzip or brotli. Use modern image formats (WebP/AVIF) with `<picture>` fallbacks. Enforce HTTPS.

## Content Patterns That Earn AI Citations

### Citable paragraph pattern

```
[Direct statement of fact]. [Specific statistic with attribution].
[Brief elaboration]. [Source: Named Organization, Date]
```

### FAQ block pattern

Every FAQ section uses `<h2>` or `<h3>` with the exact question, a 40-60 word direct answer immediately after, and FAQPage schema wrapping the section.

### Definition block pattern

```html
<section id="what-is-term">
<h2>What is [Term]?</h2>
<p><dfn>[Term]</dfn> is [direct 1-sentence definition]. [Elaboration]. [Attribution].</p>
</section>
```

### Author attribution

Every content page needs a visible author name, credentials, link to an author profile page, and Person schema on that profile. Content with proper author metadata gets cited 40% more.

## Key Statistics

| Signal | Impact |
|--------|--------|
| Adding statistics to claims | +41% AI visibility |
| Citing credible sources inline | +30-40% AI visibility |
| Expert quotations | +28-40% AI visibility |
| Keyword stuffing | -10% AI visibility |
| FAQ schema | 41% citation rate vs 15% without |
| Question-based headings | 7× citation impact for smaller sites |
| 120-180 word modular sections | 70% more ChatGPT citations |
| Content over 2,900 words | 59% more likely to be cited |
| Original or proprietary data | 4.31× more citations per URL |
| Author metadata | +40% citations |
| Topic cluster architecture | Citation rate 12% → 41% |
| Fresh content (updated within 30 days) | 76% of most-cited content |
| Structured data (schema) | 73% higher AI selection rate |
1 change: 1 addition & 0 deletions claude-code/.claude/skills/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@ Skills are invoked on demand -- they are not loaded automatically into every con
| `plan-first-development/` | plan-first-development | Read-plan-code-verify workflow with spec writing, subtask decomposition, comprehension checks, and context management |
| `advocacy-code-review/` | advocacy-code-review | Five-layer review pipeline: automated checks, AI-assisted first pass, Ousterhout red flags, AI failure patterns, advocacy-specific concerns |
| `security-audit/` | security-audit | Ten-step audit: dependency verification, API retention, storage encryption, input validation, instruction file integrity, MCP servers, device seizure, ag-gag exposure, coalition boundaries, findings report |
| `geo-seo-audit/` | geo-seo-audit | Eleven-step GEO + SEO audit: HTML structure, structured data (JSON-LD schema), meta tags, robots.txt, sitemap, IndexNow, topic cluster architecture, performance, AI citation content patterns, llms.txt, findings report |
Loading
Loading