Install
$ agentstack add skill-viryazheng-recomby-geo-geo-review-html ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
geo-review-html — interactive client-review HTML
The Markdown briefs/drafts are right for the GEO operator; they are awkward for the client side. This skill renders a companion HTML alongside the Markdown so non-technical reviewers can work in the browser. Battle-tested in the SEA-CICSIC 9-draft batch (see issue #1).
Division of labour (do not blur this):
- Interaction logic is fixed —
templates/review.htmlowns localStorage
auto-save, JSON export, the progress counter, comment toggles, and the approve/return state machine. It is correct as written; do not regenerate it per run.
- Visual layer is the template's CSS — that is where the vendored
frontend-design skill applies. When a client wants a branded or more distinctive look, restyle the ` block of templates/review.html using frontend-design principles. --accent is already overridable per client via brand_context` (see below); deeper restyling edits the CSS.
render_html.pyonly parses Markdown + meta into a payload and injects it.
When to use
04-content-briefStep 7 — emitbriefs/.html(fill-form) next to the.md.04-content-briefStep 9 — ingest the reviewer's returned*.feedback.json.05-productionStep 7 — emitdrafts/.html(review form) next to the.md.- Whenever a client folder's
briefs/index.htmlentry page needs (re)building.
Usage
SK=plugins/recomby-geo/skills/geo-review-html
# Flavor A — fill-form HTML for a brief with REQUIRED-FILL slots
python3 $SK/scripts/render_html.py --mode brief \
--md clients//briefs/.md \
--meta clients//briefs/.meta.json \
--brand clients//brand_context.json \
--out clients//briefs/.html
# Flavor B — review HTML for a publish-ready draft (section comments + approve)
python3 $SK/scripts/render_html.py --mode draft \
--md clients//drafts/.md \
--meta clients//drafts/.meta.json \
--brand clients//brand_context.json \
--out clients//drafts/.html
# Entry page — one card per brief/draft, live progress, status tags
python3 $SK/scripts/render_html.py --mode index \
--client-dir clients/ \
--brand clients//brand_context.json \
--out clients//briefs/index.html
Pure standard library — no install step. Output is a single self-contained .html (CSS + JS inlined) safe to email to a client; they double-click it.
How it maps the inputs
- brief mode splits the brief Markdown on
REQUIRED-FILL · ·
blockquote blocks. Each becomes a yellow textarea with a ` dropdown (what / why / bad example / good example). Everything else becomes a green "already-filled" prose block with its own 💬 comment toggle. The authoritative slot list is meta.json's slots[]`.
- draft mode splits on
##headings so every section gets a comment
toggle; the prose is rendered read-only with an ✓ Approve as-is action.
- index mode scans
briefs/anddrafts/for*.meta.json, reading
format, status, word_count, and slot fill counts. Live per-brief progress is read from each brief's localStorage when the page is opened.
--brandis optional.brand_namesets the client label;brand.primary_color
(or brand_color) overrides the --accent CSS variable for light branding.
Returned feedback contract
Each HTML exports a JSON file matching schemas/review_feedback.schema.json:
{
"brief_id": "free-cash-prize",
"filled_at": "2026-06-07T14:30:00Z",
"filled_by": "Jane Doe",
"answers": { "data-1": "...", "quote-1": "..." },
"comments": { "overall": "...", "filled-headline-finding": "..." },
"status": "reviewed-with-comments"
}
status ∈ reviewed-with-comments | approved-as-is | partial-fill. The GEO operator feeds answers into the matching slots during 04-content-brief Step 9 (NEVER auto-filled by AI — the slots are the moat).
Hard rules
- Never auto-fill
answers— the JSON carries the human's real input;
that is the whole point. AI assembles, humans supply.
- Keep the interaction JS fixed — restyle CSS freely (frontend-design),
but don't rewrite the localStorage/export/state-machine logic per run.
- Output stays self-contained — one file, no external CSS/JS, so a
non-technical reviewer can open it from an email attachment.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ViryaZheng
- Source: ViryaZheng/recomby-geo
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.