Repo geo
Skill BazingaOrg/repo-geo
Audit and optimize a code repository for AI/LLM discoverability (GEO). Use when the user asks to make a repo discoverable by AI, mentions GEO, llms.txt, AI visibility, "让 AI 搜到我的项目", "给这个仓库做 GEO", AI SEO for a project, or wants README/docs structured so ChatGPT, Claude, and Perplexity cite it accurately. Works on backend-only, frontend-only, and full-stack repos.From its SKILL.md
npx -y skills add BazingaOrg/repo-geoAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.8 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
repo-geo
Make a repository accurately findable and citable by AI search systems. Audit first, report, get confirmation, then edit.
Core principle
Every change must make it easier for a model to accurately understand what already exists. Never add content that restates information already on the page. If a proposed change does not add new information, drop it. Ranking tricks, padding, and score-chasing are out of scope and actively harmful.
Workflow
Run these phases in order. Do not skip to editing.
Phase 1 — Detect repo type
Inspect the repo root and classify into exactly one of:
- backend — no site output. Signals:
pyproject.toml,go.mod,Cargo.toml,package.jsonwithout a bundler/framework, presence ofopenapi.*/main.go/src/lib, absence ofindex.html/public/. - fullstack — both. Signals:
next.config.*,nuxt.config.*,remix.config.*, or aweb/+server/split, orpackage.jsonwith both a server framework and a UI framework. - frontend — site or client app. Signals:
index.html,public/,dist/,vite.config.*, static site generators (Hugo, Astro, Docusaurus, VitePress).
State the classification and the evidence you used before continuing. If ambiguous, ask.
Also determine: is there a published site (a domain this repo deploys to)? Site-level items only apply if yes. Read references/repo-types.md for the per-type action table.
Phase 2 — Audit (read-only)
Run the audit script:
python3 scripts/audit.py <repo-path>
For multiple repos, pass several paths — it emits a per-repo result plus a summary table.
The script emits JSON. It handles the mechanical checks (file presence, word counts, metadata fields, spec conformance). You must handle the judgment calls yourself by reading the files: whether the README opening is a genuine quotable definition, whether comparison content is substantive, whether an existing FAQ is padding. The script flags candidates; you decide.
Do not modify anything in this phase.
Phase 3 — Report
Present a table: check / status (OK, WEAK, MISSING) / where / what to do. Then a recommendation list sorted by value-to-effort, split into:
- A — this skill can do it (files in the repo)
- B — you must do it (GitHub web settings, Search Console, Bing Webmaster Tools, package registry pages)
Include a realistic expectation note (see references/evidence.md, "Expectation management"). Do not oversell.
Phase 4 — Confirm
Ask which A-items to apply. Default-select the high-value ones. Two decisions always need an explicit answer:
- Training crawlers (GPTBot, CCBot, Meta-ExternalAgent) — default is block, but this is the user's call, never yours. Blocking them does not affect AI search results; it only keeps content out of training data.
- Deletions — if the audit flagged padding (a redundant FAQ, a restated section), propose removal explicitly and get a yes.
Phase 5 — Apply
Rules:
- Never overwrite human-written prose. Augment, or generate only where the file is absent.
- One file at a time. Use templates in
templates/as a starting structure, not as literal output — fill them with facts read from the actual repo. - Facts must come from the repo (real version numbers, real install commands, real benchmarks). Never invent numbers.
- Do not touch anything in
references/dont-do.md.
Phase 6 — Verify
git diff --stat, and walk through the diff with the user.- Validate any generated
llms.txtagainst the spec: required H1, blockquote summary, H2 sections containing only link lists. - Check every generated link resolves.
- Re-read generated prose once, asking of each paragraph: does this say something not already said elsewhere? Delete it if not.
What good looks like
README opening. The first ~200 characters should be a self-contained definition a model can lift verbatim: what it is, what category, what it does. Pake is a Rust-based CLI that turns any webpage into a lightweight desktop app — not A cool little tool I built on weekends.
Specificity over generality. Pages with real data, clear definitions, and side-by-side comparison have >50% more measured influence than vague ones. Version numbers, sizes, benchmarks, explicit "unlike X, this does Y".
Length. High-citation pages average ~2000 words with 10+ headings; low-influence pages average 170 words. Target 1000–3000 words for a core doc page. But length must come from substance, never padding.
Natural-language URLs. /projects/pake tells a model what the page is before it reads a line. /page?id=47 says nothing.
English. Over 83% of global citation samples are English. An international project needs an English README, even if the primary one is Chinese.
Per-topic pages. Split a monolithic README into docs/ pages, each self-contained with a quotable summary, features, comparison, use cases, install command.
Reference files
references/crawlers.md— crawler taxonomy and robots.txt policyreferences/evidence.md— what the research supports, and expectation managementreferences/dont-do.md— hard constraints, read before editingreferences/repo-types.md— per-type action table
Templates
templates/ holds starting structures for llms.txt, llms-full.txt, robots.txt, a README skeleton, and a per-project knowledge page. Read the relevant one before generating that file.
What ships with it: 14 files
42.1 KB alongside SKILL.md, 1 of them executable
references/
- crawlers.md2.1 KB
- dont-do.md2.1 KB
- evidence.md4.3 KB
- repo-types.md3.2 KB
scripts/
- audit.pyruns16.4 KB
templates/
- llms-full.txt.tmpl1.0 KB
- llms.txt.tmpl558 B
- project-page.md.tmpl862 B
- README-skeleton.md1.4 KB
- robots.txt.tmpl1.0 KB
- .gitignore37 B
- LICENSE1.0 KB
- llms.txt2.3 KB
- README.md5.9 KB