Skip to content
Back to skills

Geo Pipeline

ASecurity

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...

  • 453 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 13, 2026
ai-agentspythonbash

Works with

  • claude code
  • cli

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned June 13, 2026

npx -y skills add ViryaZheng/recomby-geo --skill geo-pipeline --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Geo Pipeline?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Geo Pipeline
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/viryazheng-geo-pipeline/badge)](https://www.skillsdirectory.com/skills/viryazheng-geo-pipeline)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: geo-pipeline
description: 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-reaudit) are driven on Codex. It routes to the per-stage specs in this plugin's commands/ and enforces the orchestration rules. Does not auto-fill expert content — the human-in-loop brief checkpoint is the moat.
license: Recomby.ai — same terms as the recomby-geo plugin root LICENSE
---

# geo-pipeline — Codex orchestrator for recomby-geo

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`.

## How to run a stage on Codex

1. Identify the client folder `clients/<slug>/` and the stage the user wants.
2. Read the matching `commands/0X-*.md` and execute its Procedure verbatim.
3. Validate every JSON artifact the stage writes against its schema before
   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
   ```

4. Stop at the human-in-loop points (see rules below).

## Stage order (never run out of order)

```
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-gap
```

02 needs 01; 03 needs 01+02; 04 needs 01+03; 05 needs 04 (filled); 06 needs
05; 07 needs a prior 02.

## Hard rules (orchestration level)

1. **The expert fills briefs — not the AI.** `05-production` refuses to run
   unless `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.
2. **Schema validation is enforced.** If an artifact fails its schema, fix
   before moving on. Schemas: `schemas/*.schema.json`.
3. **One client per folder.** Don't share JSON across `clients/<slug>/`
   folders or factor out "common" context.
4. **Never run a stage out of order** (see graph above).

## Client review HTML

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`.

## Requirements

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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.