Post-merge sync of v2.7.3 (#679 already in dev). Three things in one commit: ## 1. /update-docs pipeline (Steps 1-7) Cross-platform sync verified clean across 3 platforms (.codex 305 / .gemini 355 / .hermes 305 — aeo + security-guidance present in all three indexes). 401 → 403 MkDocs pages generated. **Files refreshed to v2.7.3 / 313 / 46+ / 60+ counts:** - `.claude-plugin/marketplace.json` — top-level description + metadata description + metadata.version (was 2.7.0). - `CLAUDE.md` — Current Scope line, new v2.7.3 Highlights section, footer (Last Updated + Version + Status). - `README.md` — tagline, badges, Skills Overview row counts (Engineering POWERFUL 44 → 45, Marketing 44 → 45 w/ 8 pods), Python Tools count, FAQ counts. Hermes footnote ticked v2.7.2 → v2.7.3. - `docs/index.md` — title, meta description, hero subtitle, grid card. - `docs/getting-started.md` — meta description, FAQ count. - `mkdocs.yml` — site_description + 3 nav entries (skill + agent + cmd). - `marketing-skill/.claude-plugin/plugin.json` — 44 → 45 skills, 7 → 8 pods, v2.2.3 → v2.7.3. - `marketing-skill/CLAUDE.md` — 43 → 45 skill count, 32 → 58 Python tools, 7 → 8 pods. Added AEO skill to skill map. ## 2. /plugin-audit on both new skills (full 8-phase pipeline) **aeo (marketing-skill/skills/aeo/)** — PASS WITH WARNINGS: - Phase 2 Structure: 86.4/GOOD (after auto-fix of YAML frontmatter parse error — colon in description value needed quote-wrapping) - Phase 3 Quality: 52.4/D (validator expects legacy fields v2.7 skills don't use — repo-wide pattern, not a defect) - Phase 4 Scripts: 3/3 PASS - Phase 5 Security: 2 HIGH NET-EXFIL findings on urllib.request — same known false-positive as sister seo-audit skill (URL fetch is core functionality for content-audit-by-URL tools, not exfiltration) - Phase 6 Marketplace: plugin.json valid (v2.7.3, all required fields) - Phase 7 Ecosystem: indexed in all 3 platforms - Phase 8 Code Review: 22 workflow sections, refs cite 8/17/37 sources (≥7 floor met), 0 broken links, attribution present **security-guidance (engineering/security-guidance/)** — PASS WITH WARNINGS: - Phase 2/3/4: low scores due to hook-plugin layout mismatch with script-plugin validators (hook plugins use `hooks/` not `scripts/` per Claude Code spec — fundamental structural mismatch, not a defect) - Phase 5: 6 CRITICAL + 4 HIGH findings are all recursive false- positives — auditor detects the hook's OWN pattern-detection strings (`"exec("`, `"eval("`, `"yaml.load("` are substring literals used as detection rules, NOT actual calls). Verified zero real exec/eval calls in the file. - Phase 6/7: clean (plugin.json valid, hooks.json valid, indexed in all 3 platforms, mkdocs nav entry added) - Phase 8: 291 LOC, syntax valid, clear exit-code contract (0=clean, 2=block per Claude Code hook spec), session-state caching @ lines 158-191, 30-day cleanup @ line 163, attribution full, live smoke test (`eval(input())` in Write → exit 2 + warning) PASS - **Real defects: 0.** ## 3. Layout fix (Phase 7 audit catch) The /plugin-audit Phase 7 caught a real layout bug: cs-aeo.md placed at `marketing-skill/agents/cs-aeo.md` and `marketing-skill/commands/ cs-aeo.md` was unreachable by `scripts/generate-docs.py` (which only walks root `agents/<domain>/` and root `commands/`). Result: docs/ pages for cs-aeo agent + /cs:aeo command were never generated. **Moved to repo-canonical locations:** - `marketing-skill/agents/cs-aeo.md` → `agents/marketing/cs-aeo.md` - `marketing-skill/commands/cs-aeo.md` → `commands/cs-aeo.md` Cleaned empty `marketing-skill/agents/` + `marketing-skill/commands/` directories. Re-ran `scripts/generate-docs.py`: 401 → 403 pages (73 agents + 34 commands — both new entries present). ## CHANGELOG.md Added [2.7.3] - 2026-05-17 entry with full Added / Changed / Layout fix / Cross-platform sync / Honest audit results / PRs / Verification sections. Audit results documented verbatim including the known false-positives — no claims of clean security where the auditor flagged patterns it can't disambiguate. https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
6 KiB
| name | description |
|---|---|
| cs-aeo | /cs:aeo — Answer Engine Optimization workflow. Audit content for E-E-A-T + structure signals that drive LLM citation (ChatGPT, Perplexity, Claude, Gemini, Mistral). Optimize content in 3 modes (conservative/balanced/aggressive). Track which LLMs cite which pages via local ledger. Industry-aware thresholds (8 industries with YMYL calibration). Distinct from SEO — refuses to optimize one at expense of the other. |
/cs:aeo — Answer Engine Optimization
Command: /cs:aeo [action] [args]
The cs-aeo command is the entry point for AEO workflows: audit → optimize → publish → track citations.
Distinct From /cs:seo-audit
These share a foundation (E-E-A-T) but optimize for different conversion events:
/cs:seo-audit— optimizes for ranking + click-through in Google/Bing search results/cs:aeo(this command) — optimizes for being cited as authoritative source by LLMs
They can run on the same content. The cs-aeo agent will surface this and recommend running both for high-leverage pages.
When To Run
- Auditing existing content for AI-search readiness (E-E-A-T + structure signals)
- Optimizing a page for LLM citation before publishing
- Tracking which LLMs cite which pages over time (citation ledger)
- Researching whether AEO investment is worth it for a given content piece
- Benchmarking against competitor citation rates
When NOT To Run
- Pure click-through SEO without AI-citation intent → use
/cs:seo-audit - Brand-voice content with no factual claims (citations require facts)
- Time-sensitive news (LLM training lag means citation comes months later)
- Topics where LLMs already have strong training (e.g., elementary math)
Actions
audit — Score content for AEO readiness
/cs:aeo audit --input post.md --industry saas
/cs:aeo audit --url https://example.com/blog/post --industry healthcare
/cs:aeo audit --sample
Returns composite 0-100 with per-dimension breakdown (E-E-A-T + Structure) and top 5 fixes in priority order.
optimize — Generate AEO-improved variant
/cs:aeo optimize --input post.md --mode balanced --output post-aeo.md
/cs:aeo optimize --input post.md --mode aggressive --industry finance
Three modes:
conservative— touch <10% of words (schema + corrections footer only)balanced— touch <30% (citation markers + heading restructure + schema + footer)aggressive— full restructure + fact-first lede + maximum citation density
track — Log a citation you observed in an LLM response
/cs:aeo track --url https://example.com/post --llm perplexity --query "what is AEO" --date 2026-05-17
Maintains a local ledger at ~/.aeo-data/citations.json. No telemetry.
report — Aggregate citation report for a URL
/cs:aeo report --url https://example.com/post
Returns total citations, LLM coverage, velocity, top queries, verdict (EARLY / EMERGING / STRONG).
export — Emit citation ledger as CSV
/cs:aeo export --output citations.csv
For reporting to clients / stakeholders.
Minimal Intake (3 Questions)
| Q | Asks | When |
|---|---|---|
| Q1 | What action — audit / optimize / track / report? | Always |
| Q2 | Industry (saas / healthcare / finance / legal / ecommerce / b2b / media / education) | Always (calibrates thresholds) |
| Q3 | For optimize: mode (conservative / balanced / aggressive)? |
Only when action=optimize |
Most invocations exit intake after Q2.
Workflow
# Phase 1: Audit
python3 marketing-skill/skills/aeo/scripts/aeo_audit.py --input <file> --industry <industry>
# → composite score 0-100 + top fixes
# Phase 2: Optimize (if audit < industry threshold)
python3 marketing-skill/skills/aeo/scripts/aeo_optimizer.py \
--input <file> --mode <mode> --industry <industry> --output <file>-aeo.md
# → optimized variant + changelog
# Phase 3: Publish (manual step — review the optimized variant, then deploy)
# Phase 4: Track (over 4-12 weeks)
python3 marketing-skill/skills/aeo/scripts/citation_tracker.py \
--action add --url <url> --llm <llm> --query <query> --date <YYYY-MM-DD>
# → ledger updated
# Phase 5: Report (monthly)
python3 marketing-skill/skills/aeo/scripts/citation_tracker.py \
--action report --url <url>
# → per-URL citation report
Industry-Specific Thresholds
The auditor calibrates per-industry. YMYL ("Your Money or Your Life") topics use stricter thresholds:
| Industry | Min Composite | Why |
|---|---|---|
| Healthcare | 85 | Direct health implications |
| Finance | 85 | Real financial decisions |
| Legal | 85 | Legal jeopardy if misapplied |
| Education | 75 | Learning outcomes |
| SaaS, B2B, Media | 70 | Business decisions, moderate stakes |
| E-commerce | 65 | Product reviews, lower individual risk |
Content for YMYL topics scoring below threshold is unlikely to be cited regardless of other signals — the cs-aeo agent will flag this and refuse aggressive optimization until the foundational dimensions improve.
Anti-Patterns Rejected
- LLM-generated AEO content with no human review (RAG retrieval deprioritizes generic LLM output)
- Fabricated credentials in author bylines (LLMs cross-reference via LinkedIn/Wikipedia)
- Schema spam (false structured-data markup gets filtered)
- Authority laundering (linking out doesn't confer authority)
- Per-LLM optimization tunnel-vision (73% cross-LLM citation correlation — optimize for shared signals)
- Optimizing AEO at expense of SEO (and vice versa) — they complement, don't substitute
Trigger Phrases
- "AEO audit"
- "optimize for ChatGPT / Perplexity / Claude / Gemini"
- "get cited by [LLM]"
- "LLM citation strategy"
- "answer engine optimization"
- "E-E-A-T audit"
- "content for AI search"
- "track AI citations"
- "schema for AI"
Related
- Agent:
cs-aeo - Skill:
aeo - Companion:
/cs:seo-audit(SEO + AEO often run together) - Source: ported from
alirezarezvani/aeo-box
Version: 2.7.3 License: MIT