Geo Fundamentals
wasp-lang/wasp
Generative Engine Optimization for AI search engines (ChatGPT, Claude, Perplexity).
Run one bounded eGEOagents loop iteration over a workspace domain - read the charter and fresh collector data, do ONE unit of work, write substrate artifacts, append one Timeline entry and one LOG…
$ npx skills add mverab/eGEOagents --skill geo-loop -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mverab/eGEOagents geo-loop --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/mverab/eGEOagents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/geo-loop .claude/skills/geo-loop && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "geo-loop" agent skill from https://github.com/mverab/eGEOagents/tree/main/.claude/skills/geo-loop into .claude/skills/geo-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "geo-loop", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/mverab/eGEOagents/tree/main/.claude/skills/geo-loopType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add mverab/eGEOagents --skill geo-loop -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mverab/eGEOagents geo-loop --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mverab/eGEOagents.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/geo-loop .agents/skills/geo-loop && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "geo-loop" agent skill from https://github.com/mverab/eGEOagents/tree/main/.claude/skills/geo-loop into .agents/skills/geo-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "geo-loop", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mverab/eGEOagents --skill geo-loop -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mverab/eGEOagents geo-loop --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mverab/eGEOagents.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/geo-loop .cursor/skills/geo-loop && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "geo-loop" agent skill from https://github.com/mverab/eGEOagents/tree/main/.claude/skills/geo-loop into .cursor/skills/geo-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "geo-loop", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/mverab/eGEOagents.git --path .claude/skills/geo-loop--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add mverab/eGEOagents --skill geo-loop -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mverab/eGEOagents geo-loop --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mverab/eGEOagents.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/geo-loop .gemini/skills/geo-loop && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "geo-loop" agent skill from https://github.com/mverab/eGEOagents/tree/main/.claude/skills/geo-loop into .gemini/skills/geo-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "geo-loop", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install mverab/eGEOagents geo-loopInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add mverab/eGEOagents --skill geo-loop -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mverab/eGEOagents.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/geo-loop .github/skills/geo-loop && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "geo-loop" agent skill from https://github.com/mverab/eGEOagents/tree/main/.claude/skills/geo-loop into .github/skills/geo-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "geo-loop", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mverab/eGEOagents --skill geo-loop -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mverab/eGEOagents geo-loop --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mverab/eGEOagents.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/geo-loop .opencode/skills/geo-loop && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "geo-loop" agent skill from https://github.com/mverab/eGEOagents/tree/main/.claude/skills/geo-loop into .opencode/skills/geo-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "geo-loop", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
geo-loopRun one bounded eGEOagents loop iteration over a workspace domain - read the charter and fresh collector data, do ONE unit of work, write substrate artifacts, append one Timeline entry and one LOG…
Geo Loop is an agent skill from mverab/eGEOagents. Run one bounded eGEOagents loop iteration over a workspace domain - read the charter and fresh collector data, do ONE unit of work, write substrate artifacts, append one Timeline entry and one LOG line. Use for loop mode, /geo:loop, scheduled GEO runs, or continuous monitoring.
Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Marketing & SEO, covering AI search optimization. The repository describes itself as: Open-source Generative Engine Optimization (GEO) & Answer Engine Optimization (AEO) toolkit — optimize content to rank in ChatGPT, Perplexity, Gemini & Claude. AI SEO / LLM SEO… The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 58ee654. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
BRAVE_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Geo Loop loads about 1.5k tokens when it runs. Until then it costs about 72 tokens; SKILL.md has 736 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from mverab/eGEOagents at commit 58ee654, republished under its MIT licence (© mverab). 736 words, ~1,543 tokens.
.claude/skills/geo-loop/SKILL.md (or your agent's skills folder).One wake-up = one bounded unit of work. This skill governs loop mode only;
one-shot /geo <url> is unchanged and needs no workspace.
$EGEO_HOME (default ~/.egeo/).## Current focus, or the
first Backlog item if focus is already satisfied. Do not batch.data/ or from a tool call in this session. A claim you cannot
cite is confidence: low with the uncertainty stated in the body.egeo loop run <domain> --dry-runThis is the source of truth for the run: it prints the charter's current focus,
the backlog, collector records added since the last Timeline entry, and
candidate signals. It writes nothing. Use --json when you want to parse it.
If it exits non-zero, stop and report — the workspace or the domain charter is
not in a runnable state (egeo loop doctor explains why).
$EGEO_HOME/domains/<domain>/README.md — charter, cadence, focus, backlog,
Timeline (the last entry tells you where the previous run stopped).$EGEO_HOME/project.yaml — when present, the validated project identity,
canonical domain, tracked queries/pages, and anti-spam/canibalization
guardrails. egeo loop doctor is the source of truth for its validity.$EGEO_HOME/data/<collector>/*.jsonl — fresh ground truth.$EGEO_HOME/signals/ and $EGEO_HOME/docs/ — what is already known, so you
dedupe instead of duplicating.$EGEO_HOME/config.yaml — models, budgets, reflect.auto_apply.$EGEO_HOME/data/outcomes/ledger.jsonl — append-only decision outcomes when egeo loop decide has run.Pick the single unit of work and execute it with the existing GEO capability —
the content-scoring, competitive-analysis, and schema-generator skills and
the geo-* agents all apply unchanged. Typical units:
| Situation in the plan | Unit of work |
|---|---|
| A target URL moved ≥3 positions | Write/update a signal explaining the move |
| Target absent from top 10 repeatedly | Signal + a doc proposing the fix |
A tracked page's content_hash changed | Signal describing what changed |
| A tracked page has no JSON-LD | Doc with copy-paste JSON-LD for that page |
| No fresh data at all | Outcome no-op — do not invent work |
Ranking positions from data/serp/ are ground truth. Any simulated ranking
you produce yourself is confidence: low and must say so in the body.
SUBSTRATE.md in the repo root is the binding contract. In short:
signals/<slug>.md — evidence. docs/<slug>.md — durable knowledge.
Kebab-case filenames, English content, kind decides the folder.kind, domains (existing dirs under domains/),
created, updated, confidence, sources, plus frequency on signals.
sources may be empty only when confidence: low.frequency, set updated to today, and append one
dated Timeline entry.## Timeline = what is true now (rewrite freely).
## Timeline = append-only, newest at the bottom.data/serp/example-com.jsonl#L42).Append to $EGEO_HOME/domains/<domain>/README.md, at the very bottom:
### 2026-07-24 run
Checked serp deltas for example.com; pricing page dropped 3 → 7 for
"best geo tool". Wrote signals/example-com-pricing-drop.md.
Outcome: successOutcome: is the last line and one of success, partial, failure, no-op.
Then append exactly one line to $EGEO_HOME/LOG.md:
2026-07-24T18:20Z [example-com] run: wrote signals/example-com-pricing-drop.md, outcome=successGrammar (SUBSTRATE.md §7): <YYYY-MM-DDTHH:MMZ> [<domain>] <event>: <summary>,
UTC minute precision, appended at the bottom, summary ending in
outcome=<class>.
Keep ## Current focus accurate: if the focus item is done, promote the next
Backlog item and remove it from the Backlog.
python -m egeo.substrate_lint # defaults to $EGEO_HOME
egeo loop doctorRe-read the domain README and the tail of LOG.md to confirm your two
appends landed exactly once. Fix violations before exiting; a run that leaves
the substrate invalid is Outcome: failure.
Report to the user in three lines: unit of work, artifacts written, outcome.
Collectors are deterministic and LLM-free; run them before a loop run when the plan shows no fresh data:
egeo loop collect serp --query "best geo tool" --target-domain example.com
egeo loop collect page --url https://example.com/pricingserp needs BRAVE_API_KEY; both honour the daily budgets in config.yaml and
fail loudly rather than writing partial records. See collectors/README.md for
the contract.
prompts/, geo-output/, or signals/ instead of
$EGEO_HOME — loop state never lives in the repo.frequency).data/serp/ line to cite.© mverab, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/geo-loop of mverab/eGEOagents.
Open the folder on GitHubat commit 58ee654
Geo Loop next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Geo Loop this skillmverab/eGEOagents | 197 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Geo Fundamentalswasp-lang/wasp | 19k | 9 repos | ~861 | Automated safety check: Pass | MIT | |
| SEO GeoReScienceLab/opc-skills | 1.8k | 4 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| GEO-First SEO Audit Toolzubair-trabzada/geo-seo-claude | 11k | — | ~2.8k | Automated safety check: Notes | MIT | |
| GEO Monthly Delta Reportzubair-trabzada/geo-seo-claude | 11k | — | ~2.4k | Automated safety check: Notes | MIT | |
| SEO DataforseoAgriciDaniel/codex-seo | 791 | 2 repos | ~4.6k | Automated safety check: Pass | MIT |
wasp-lang/wasp
Generative Engine Optimization for AI search engines (ChatGPT, Claude, Perplexity).
ReScienceLab/opc-skills
SEO & GEO (Generative Engine Optimization) for websites. An agent skill from ReScienceLab/opc-skills.
zubair-trabzada/geo-seo-claude
Audits a website for AI search visibility across ChatGPT, Claude, Perplexity and Google AI Overviews while checking traditional SEO, schema and E-E-A-T content quality.
zubair-trabzada/geo-seo-claude
Compares a baseline and a current GEO audit for a client, calculates score changes and action item progress, and writes a monthly progress report.
AgriciDaniel/codex-seo
Live SEO data via DataForSEO MCP server. An agent skill from AgriciDaniel/codex-seo.
leopard627/fire-your-seo-agency
SEO·AEO·GEO·LLMO·NEO(네이버) 다섯 레인을 진단하고 직접 구현하며, 인용되는 콘텐츠를 계속 생산하는 서브 블로그·콘텐츠 운영 파이프라인까지 세팅하는 스킬.
mverab/eGEOagents
Analyze AI-search competitors for a query and recommend ranking strategy.
mverab/eGEOagents
Score content against the 10 GEO criteria with evidence and prioritized fixes.
mverab/eGEOagents
Generate JSON-LD schema markup for pages and content types with an implementation checklist.
mverab/eGEOagents
Check Brave Search and Chrome DevTools MCP availability and provide exact setup snippets.
Categories
Run one bounded eGEOagents loop iteration over a workspace domain - read the charter and fresh collector data, do ONE unit of work, write substrate artifacts, append one Timeline entry and one LOG…. Geo Loop is an agent skill from mverab/eGEOagents. Run one bounded eGEOagents loop iteration over a workspace domain - read the charter and fresh collector data, do ONE unit of work, write substrate artifacts, append one Timeline entry and one LOG line.
Geo Loop fits situations like: scheduled GEO runs; continuous monitoring.
Run `npx skills add mverab/eGEOagents --skill geo-loop -a claude-code`. Or copy the skill folder (.claude/skills/geo-loop in mverab/eGEOagents) into .claude/skills/geo-loop in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mverab/eGEOagents --skill geo-loop -a codex`. Or copy the skill folder (.claude/skills/geo-loop in mverab/eGEOagents) into .agents/skills/geo-loop in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mverab/eGEOagents --skill geo-loop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/geo-loop, .gemini/skills/geo-loop, .github/skills/geo-loop and .opencode/skills/geo-loop in your project.
Going by SKILL.md and its folder, Geo Loop needs the command-line tools its instructions call (python) and credentials named BRAVE_API_KEY. Our summary lists: Python 3; A credential in BRAVE_API_KEY.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Geo Loop is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.5k tokens (SKILL.md is roughly 6.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Geo Loop: Geo Fundamentals (wasp-lang/wasp, 19k stars), SEO Geo (ReScienceLab/opc-skills, 1.8k stars), GEO-First SEO Audit Tool (zubair-trabzada/geo-seo-claude, 11k stars) and GEO Monthly Delta Report (zubair-trabzada/geo-seo-claude, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mverab (a GitHub user) maintains it in mverab/eGEOagents, which has 197 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.
Source: mverab/eGEOagents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.