Sets up weekly AEO citation tracking for a brand across ChatGPT, Perplexity, Gemini, and Claude using the proprietary Optise 3-KPI rubric (Citation Rate, Prominence, Competitor Delta). Generates CSV column spec, week-1 instructions, weekly cadence checklist, and scoring formulas. Analyzes tracking data after 4+ weeks to surface working prompts, dead prompts, and recommend refreshes. Use when the user wants to track AI search citations, set up AEO measurement, analyze tracker data, or understand which prompts are converting in AI engines. Never invents historical citation data — tracking is forward-looking only. Authored by Optise + Helix GTM Consulting.
How this skill is triggered — by the user, by Claude, or both
Slash command
/optise-helix-aeo-toolkit:optise-helix-aeo-trackerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A skill that sets up weekly AEO citation tracking for a brand across 4 AI engines (ChatGPT, Perplexity, Gemini, Claude) using the Optise 3-KPI rubric and analyzes tracking data to surface working vs dead prompts.
A skill that sets up weekly AEO citation tracking for a brand across 4 AI engines (ChatGPT, Perplexity, Gemini, Claude) using the Optise 3-KPI rubric and analyzes tracking data to surface working vs dead prompts.
This skill closes the AEO loop. Without measurement, the prompt pack and audit work is faith-based. The tracker turns AEO from a project into a discipline.
The 3 KPIs (Citation Rate, Prominence, Competitor Delta) come from the Optise EU AEO Playbook, Section 8. The skill never invents historical data — AEO tracking is forward-looking from the moment it's set up.
This skill operates under TWO mandatory reference files that together define all operating rules. Read both files first, before executing any workflow step in this SKILL.md. The rules in both files are non-negotiable and override any conflicting instruction in this SKILL.md body.
../../references/operating-principles.md — the shared core: 7 universal rules (rigor, challenge-assumptions, no-harmful-output, fact-check with 4-tier source hierarchy, no-LLMisms, HILT discipline with Question Budget, zero-assumption flagging) that apply to every skill in this plugin and every plugin using this pattern. This file is byte-identical across all plugins that use the shared-core pattern.
../../references/plugin-specific-rules.md — the plugin-specific tail: additional operational rules tailored to the skills in THIS plugin. Read this file AFTER the shared core, not instead of it. If this plugin currently has no plugin-specific rules, the file will be a stub explaining the architecture.
These are the highest-frequency rules from the two files above. Reading the full files is still mandatory — these reminders are a quick-reference, not a substitute.
"[user] acquired [competitor]", "[competitor] acquired by", "[competitor] Crunchbase acquisition", "[user] vs [competitor]". Any positive ownership hit is a HARD STOP — invoke Rule 3's no-harmful-output protection.web_fetch before marking them [EXISTS]. Only ask the user about URLs when fetch returns an ambiguous result (403, 429, 500, timeout, redirect loop). Do not ask the user about every URL; that is endless interrogation, not verification.Assumption: flags in the output.Assumption: prefix in the output so users can correct anything the skill got wrong. Use the [User to add: <description>] placeholder convention for any field where the user must supply specific information.If a domain rule in Section 7 of this SKILL.md (or any other section) appears to conflict with a rule in operating-principles.md or plugin-specific-rules.md, the operating principles win. Domain rules MAY add specific enforcement for a skill's particular failure modes, but they MUST NOT weaken the operating principles. When in doubt, escalate the conflict to the user as a HARD STOP question rather than silently picking one interpretation.
Track only forward from the setup date. Never invent historical AI engine citation data, never claim a benchmark you can't show with sources, and never recommend tracking more than 3 KPIs because that produces dashboards no one acts on.
Detect persona using references/personas.md. Adapt output:
| Persona | Output adaptation |
|---|---|
| CEO / Founder | Output the 3 KPIs as a single sentence each. Skip the formulas. Close with "review weekly for 4 weeks, then run analysis mode for the verdict." |
| Marketing / Growth Lead (default) | Full template: CSV columns, week-1 instructions, weekly checklist, formulas, the diagnostic. |
| Web Team | JSON schema instead of CSV. Add "what to log in your data warehouse" section if user has one. |
| RevOps / Sales Ops | Add CRM trigger column. Explain how to map AI engine citations to lead source attribution. Suggest the "AI assisted research" CRM field. |
| Security / Privacy / Legal | Filter to compliance-prompt tracking only (Cat 4 from prompt-pack-builder). Add a "did procurement reach our Trust Centre via AI" measurement column. |
Detection signals: see references/personas.md. Default = Marketing/Growth Lead.
Platform mode:
Urgency: "Quick" → minimal 5-column CSV template only, no rubric explanation, time-stamped.
When setting up tracking for a new pack, allocate columns in this order:
Tie-breakers:
When analyzing tracking data (mode 2), prioritize:
For setup mode:
For analysis mode:
Failure mode: If setup mode and no prompt pack → recommend optise-helix-prompt-pack-builder first. Don't generate trackers for unknown prompts.
Use references/personas.md. Default Marketing if ambiguous. Skip in manual mode.
Build:
Use references/tracker-rubric.md for the 3 KPI formulas. Use references/prompt-categories.md to assign each prompt a category column value.
Tracker ID convention: When in manual / API mode, generate a tracker_id as <brand-slug>-<YYYY-MM-DD> where brand-slug is the lowercase brand name with non-alphanumerics replaced by hyphens (e.g., "freshworks" or "the-london-tea-co"), and date is the setup date in ISO format. This makes trackers identifiable across multiple invocations and forms a stable handoff key for memory storage.
For each prompt in the user's data:
Output: Top 5 working prompts, top 5 dead prompts, top 3 declining prompts, and a one-line verdict on overall AEO health.
Walk through the 6-step diagnostic from references/tracker-rubric.md. Ask the user to confirm each step. Identify the most likely root cause.
optise-helix-prompt-pack-builder refresh mode to swap dead prompts.optise-helix-fitq-audit on the target pages of the losing prompts.optise-helix-bluf-writer to rewrite the BLUFs of buried prompts.optise-helix-fitq-audit and optise-helix-race-audit.**Built for:** [persona]
**Brand:** [name]
**Tracking start date:** [today]
**Measurement cadence:** weekly
## Tracking template
### CSV column spec
[column list with types and example values]
### Example row
[1 example row of valid data]
### Week-1 instructions
[step-by-step]
### Weekly checklist (every Monday)
[checklist]
### The 3 KPI formulas
[from rubric]
### Healthy benchmarks
[A/B/C/D/F bands]
## Suggested next step
[Hand off]
Built for: Marketing / Growth Lead Brand: Freshworks Competitors tracked: ServiceNow, Zendesk Tracking start date: 2026-04-12 Measurement cadence: Weekly (every Monday)
Tracking template
CSV column spec
Column Type Example Notes week date 2026-04-12 Always Monday engine enum ChatGPT / Perplexity / Gemini / Claude All 4 mandatory per row group prompt string "best service desk software for German Mittelstand" Verbatim from pack category enum Shortlist / Pricing / Implementation / EU Privacy / Integration / Role-based Optise 6 categories mentioned bool TRUE Did the answer name your brand? cited_with_link bool TRUE Did the answer link to your domain? prominence int 2 1=first, 2=top-3, 3=late, 4=buried, blank if not mentioned competitor_1_mentioned bool TRUE ServiceNow competitor_2_mentioned bool FALSE Zendesk target_page string /alternatives/servicenow From prompt pack notes string "Cited as #2 of 5 options" Optional context Example row
2026-04-12,ChatGPT,"best service desk software for German Mittelstand",Shortlist,TRUE,TRUE,2,TRUE,FALSE,/alternatives/servicenow,"Cited as #2 of 5 options"Week-1 instructions
- Open a fresh tab in each AI engine (logged-out where possible to avoid personalization).
- Type each prompt verbatim — exactly as written in the pack. Don't paraphrase.
- Read the answer carefully for: (a) brand name mentions (you and competitors), (b) order of mention, (c) whether your domain is linked.
- Record one row per (prompt × engine) combination. 25 prompts × 4 engines = 100 rows for week 1.
- Save with the filename
aeo-tracker-2026-04-12.csv. Same filename pattern weekly.Time investment: 60-90 minutes for the first run, dropping to 30-45 once you build muscle memory.
Weekly checklist (every Monday)
- Pull last week's CSV from the prior file
- Add a new "week" column block for this Monday
- Run all 25 prompts × 4 engines (or batch — see batching tips below)
- Calculate the 3 KPIs (formulas below)
- Compare against last week — flag any prompts that gained or lost prominence
- Update your team's AEO dashboard with the 3 KPIs only — never the 100-row raw table
The 3 KPI formulas
Citation Rate:
(count of rows where mentioned=TRUE) / (total rows for the week) × 100Prominence Score:
sum of prominence values / count of mentioned rows (lower is better; target <2.0)Competitor Delta:
(your citation count) - (avg of competitor 1 and competitor 2 citation counts) (positive = winning; zero = parity; negative = losing)Healthy benchmarks
- A grade: Citation Rate >40% — you're winning AEO
- B grade: 20-40% — defensible, expected with a working Trust Centre
- C grade: 10-20% — improving from FITq audits will move you here
- D grade: 5-10% — sporadic, needs structural fixes
- F grade: <5% — functionally invisible
Batching tips
- Run by engine, not by prompt. Open ChatGPT, run all 25 prompts, then move to Perplexity. Faster than switching engines per prompt.
- Use a separate browser profile for tracking so your normal usage doesn't pollute the personalization layer.
- Don't multi-task. AI engine answers update mid-session — you'll get inconsistent data if you have 4 tabs open simultaneously asking the same question.
Suggested next step
Run the tracker for 4 weeks. After week 4, run this skill again in analysis mode with your accumulated data. I'll surface working prompts, dead prompts, and what to do next.
You don't have a prompt pack yet, and the tracker is built around tracking specific prompts that buyers actually ask. Without a pack, I'd be tracking guesses — which defeats the purpose.
What to do first: Run
optise-helix-prompt-pack-builderto generate your 25 prompts. That takes ~5 minutes and gives you the input this skill needs.Then come back here and I'll set up the tracker.
Analysis of your 4-week tracking data
Current AEO health: Citation Rate 18.4% — Grade C. You're occasionally cited, improving from a fixable position.
3-KPI snapshot:
KPI Week 1 Week 4 Trend Citation Rate 12.0% 18.4% ↑ +6.4 pts Prominence Score 2.8 2.4 ↑ improving Competitor Delta -3 +1 ↑ now winning Top 5 working prompts (highest citation × prominence)
- "Freshservice EU data residency" — cited in 7/8 weeks across all 4 engines, prominence 1.4 (first or near-first). Don't break this. This is your Trust Centre paying off.
- "best service desk for German Mittelstand" — cited in 5/8 across all 4 engines, prominence 2.0. 3-5. [other working prompts]
Top 5 dead prompts (0% citation after 4 weeks)
- "Freshworks customer reviews 2026" — 0/16 measurements. Recommend swap. This is generic and probably outranked by G2 directly.
- "Freshworks history and founders" — 0/16. Recommend swap. Wrong intent (buyers don't ask about company history). 3-5. [other dead prompts]
Top 3 declining prompts
- "Zendesk vs Freshworks" — was citing in week 1-2, now down to 1/8 in week 4. Recommend FITq audit on
/compare/zendesk. Likely Zendesk shipped a comparison page that displaced you.Suggested next steps
- Swap the 5 dead prompts via
optise-helix-prompt-pack-builderrefresh mode. Pick 5 new prompts in the same categories.- Run
optise-helix-fitq-auditon/compare/zendeskto find what's letting Zendesk's page outrank yours.- Re-run this analysis after 4 more weeks to verify the swap and audit fixes worked.
Input:
{
"mode": "setup",
"brand": "Freshworks",
"competitors": ["ServiceNow", "Zendesk"],
"prompts": [
{"text": "best service desk for German Mittelstand", "category": "shortlist"},
{"text": "is Freshworks GDPR compliant", "category": "eu_privacy"}
]
}
Output:
{
"tracker_id": "freshworks-2026-04-12",
"csv_columns": [
{"name": "week", "type": "date"},
{"name": "engine", "type": "enum", "values": ["ChatGPT", "Perplexity", "Gemini", "Claude"]},
{"name": "prompt", "type": "string"},
{"name": "category", "type": "enum", "values": ["shortlist", "pricing", "implementation", "eu_privacy", "integration", "role_based"]},
{"name": "mentioned", "type": "bool"},
{"name": "cited_with_link", "type": "bool"},
{"name": "prominence", "type": "int", "range": [1, 4], "nullable": true},
{"name": "competitor_1_mentioned", "type": "bool"},
{"name": "competitor_2_mentioned", "type": "bool"},
{"name": "target_page", "type": "string"},
{"name": "notes", "type": "string", "optional": true}
],
"kpi_formulas": {
"citation_rate": "(rows where mentioned=true) / (total rows) * 100",
"prominence_score": "sum(prominence) / count(mentioned=true rows); lower is better; target <2.0",
"competitor_delta": "(your citations) - avg(competitor citations)"
},
"weekly_cadence": "Every Monday",
"minimum_runs_before_analysis": 4,
"generated_at": "2026-04-12T13:25:00Z"
}
optise-helix-prompt-pack-builder.optise-helix-prompt-pack-builder new mode.optise-helix-prompt-pack-builder (new mode) AND optise-helix-fitq-audit (on the Trust Centre URL).All 9 base rules from references/anti-hallucination-base.md apply. Additionally:
Domain rule 1: Never invent historical citation data. AEO tracking is forward-looking from setup date. If a user asks "which prompts cited me last month," explain that AI engine citation history is not retroactively available for individual brands.
Domain rule 2: Never invent benchmarks. The A/B/C/D/F bands in references/tracker-rubric.md come from Optise customer data and are the only defensible benchmarks. Don't make up "industry average" numbers.
Domain rule 3: Never recommend tracking more than 3 KPIs. The 3-KPI rule is the discipline. Adding "engagement", "sentiment", "share of voice", "competitive intent" produces dashboards no one acts on.
Domain rule 4: Never claim a prompt is "working" or "dead" before 4 weeks of data. The minimum sample is 4 weeks × 4 engines = 16 measurements per prompt for any classification.
Domain rule 5: Never invent prominence values. If the user's data has missing prominence for a Mentioned=Y row, flag it: "row [X] has mentioned=true but no prominence — please re-measure."
Domain rule 6: Never recommend swapping a prompt without checking the source category. Dead prompts get replaced in the SAME category — never replaced with prompts from a different category, because that breaks the pack's category balance.
optise-helix-prompt-pack-builder and asks "what next"optise-helix-prompt-pack-builderoptise-helix-fitq-auditoptise-helix-prompt-pack-builder refresh modeoptise-helix-fitq-audit on target pagesoptise-helix-bluf-writer for new BLUFsoptise-helix-fitq-audit and optise-helix-race-auditProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub shashwatgtm/optise-helix-aeo-skills --plugin optise-helix-aeo-toolkit