Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Entry point + orchestrator for the recomby-geo GEO (Generative Engine Optimization) workflow on OpenAI Codex CLI. Use when the user wants to run any stage of the GEO pipeline on a client folder — intake, visibility audit, content-gap analysis, content brief, draft production, distribution, or monthly re-audit — or asks to "run GEO", "audit AI search visibility", or "GEO this client". Codex has no bare slash commands, so this skill is how the 7 stages (that Claude Code runs as /01-intake … /07-re
.claude/skills/viryazheng-geo-pipeline/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 251% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -38% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 42% | 0% |
On Claude Code each stage is a bare slash command (/01-intake … /07-reaudit). Codex CLI has no bare custom commands, so this skill is the Codex entry point: it carries the orchestration rules and routes to the per-stage specification files, which are the single source of truth shared with the Claude Code side. Do not duplicate stage logic here — read the stage file and follow it.
Per-stage specs (read the one you're running): commands/01-intake.md, commands/02-audit.md, commands/03-gap.md, commands/04-content-brief.md, commands/05-production.md, commands/06-distribution.md, commands/07-reaudit.md (relative to this plugin's root). Full directory convention + dependency graph: orchestrator/run.md.
clients/<slug>/ and the stage the user wants.commands/0X-*.md and execute its Procedure verbatim.moving on (Codex has no built-in schema validation — run it explicitly):
bash python3 - <<'PY' import json, jsonschema pairs = { "brand_context.json": "brand_context.schema.json", "visibility_baseline.json": "visibility_baseline.schema.json", "content_priorities.json": "content_priorities.schema.json", } # see schemas/ for the full set incl. attribution_diff + review_feedback # jsonschema.Draft202012Validator(json.load(open("plugins/recomby-geo/schemas/<file>"))).validate(json.load(open("clients/<slug>/<artifact>"))) print("validate each artifact against plugins/recomby-geo/schemas/*.schema.json") PY
inputs/ → 01-intake → brand_context.json
→ 02-audit → visibility_baseline.json
→ 03-gap → content_priorities.json
→ 04-content-brief → briefs/<id>.md (+ .html, REQUIRED-FILL slots)
[EXPERT FILLS THE SLOTS — not the AI]
04 Step 9 verifies fills → status: ready-for-production
→ 05-production → drafts/<id>.md (+ review .html)
→ 06-distribution → distribution/<id>.json + publish-bundle.md
[PUBLISH + WAIT 7+ days]
→ 07-reaudit (monthly) → reaudit/round-N.json → feeds next 03-gap02 needs 01; 03 needs 01+02; 04 needs 01+03; 05 needs 04 (filled); 06 needs 05; 07 needs a prior 02.
05-production refuses to rununless briefs/<id>.meta.json status is ready-for-production. Never auto-fill REQUIRED-FILL slots; pause the pipeline if the expert is unavailable. This human-in-loop checkpoint is the entire moat.
before moving on. Schemas: schemas/*.schema.json.
clients/<slug>/folders or factor out "common" context.
Stages 04 and 05 produce interactive HTML for the client via the geo-review-html skill (also in this plugin). On Codex this works the same as on Claude Code — the stage spec already calls render_html.py.
The capability skills' scripts (e.g. seo-geo-optimizer, geo-review-html) need python3 on PATH; the schema validation step needs jsonschema (pip install jsonschema). These are the same dependencies as the Claude Code side.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-08 | pass→pass | 11,455 | 3,568 | -69% | 1 | 1 | 0% | 1,877 | 1,579 | -16% | 0 | 0 | — |
case-01 | fail→fail | 17,555 | 4,282 | -76% | 1 | 1 | 0% | 2,775 | 1,237 | -55% | 0 | 0 | — |
case-02 | fail→fail | 27,137 | 4,843 | -82% | 1 | 1 | 0% | 5,593 | 1,312 | -77% | 0 | 0 | — |
case-03 | fail→fail | 13,312 | 5,373 | -60% | 1 | 1 | 0% | 2,043 | 1,285 | -37% | 0 | 0 | — |
case-04 | fail→pass | 3,671 | 5,085 | +39% | 1 | 1 | 0% | 544 | 1,909 | +251% | 0 | 0 | — |
case-05 | fail→pass | 10,045 | 3,268 | -67% | 1 | 1 | 0% | 1,527 | 1,562 | +2% | 0 | 0 | — |
case-06 | fail→pass | 14,416 | 3,625 | -75% | 1 | 1 | 0% | 2,718 | 1,698 | -38% | 0 | 0 | — |
case-07 | fail→pass | 12,616 | 4,676 | -63% | 1 | 1 | 0% | 2,194 | 1,926 | -12% | 0 | 0 | — |
case-09 | fail→pass | 7,430 | 3,429 | -54% | 1 | 1 | 0% | 1,177 | 1,675 | +42% | 0 | 0 | — |
case-10 | fail→pass | 6,098 | 5,318 | -13% | 1 | 1 | 0% | 842 | 2,037 | +142% | 0 | 0 | — |
case-11 | fail→pass | 8,327 | 2,677 | -68% | 1 | 1 | 0% | 1,281 | 1,463 | +14% | 0 | 0 | — |
case-12 | fail→pass | 11,777 | 2,282 | -81% | 1 | 1 | 0% | 1,917 | 1,475 | -23% | 0 | 0 | — |
case-21 | pass→pass | 12,576 | 10,652 | -15% | 1 | 1 | 0% | 2,229 | 2,922 | +31% | 0 | 0 | — |
case-13 | fail→pass | 9,086 | 4,042 | -56% | 1 | 1 | 0% | 1,446 | 1,730 | +20% | 0 | 0 | — |
case-14 | fail→pass | 4,914 | 2,492 | -49% | 1 | 1 | 0% | 766 | 1,418 | +85% | 0 | 0 | — |
case-15 | fail→pass | 6,527 | 4,234 | -35% | 1 | 1 | 0% | 956 | 1,660 | +74% | 0 | 0 | — |
case-16 | fail→pass | 33,548 | 7,968 | -76% | 1 | 1 | 0% | 2,691 | 2,423 | -10% | 0 | 0 | — |
case-17 | fail→pass | 3,478 | 3,317 | -5% | 1 | 1 | 0% | 498 | 1,594 | +220% | 0 | 0 | — |
case-18 | fail→pass | 7,958 | 1,890 | -76% | 1 | 1 | 0% | 1,305 | 1,326 | +2% | 0 | 0 | — |
case-19 | fail→pass | 7,926 | 2,119 | -73% | 1 | 1 | 0% | 1,334 | 1,397 | +5% | 0 | 0 | — |
case-20 | pass→pass | 12,324 | 6,624 | -46% | 1 | 1 | 0% | 2,182 | 2,179 | -0% | 0 | 0 | — |
case-22 | pass→pass | 5,784 | 5,519 | -5% | 1 | 1 | 0% | 1,000 | 1,943 | +94% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +68 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.