Performance monitor skill
Use when the user asks to "generate an SEO report", "出月报", "set SEO alerts", or "排名掉了提醒我".
by aaron-he-zhu·Apache-2.0 license·★ 2,858 Stars on the repo·GitHub ↗
npx degit aaron-he-zhu/aaron-marketing-skills/seo-geo/evaluate/performance-monitor#main ~/.claude/skills/performance-monitor-aaron-he-zhuChecked ·commit main
Files of Performance monitor
Show the full text164 lines
Performance Monitor
One monitor skill, two modes. report builds a stakeholder-facing multi-metric snapshot of what already happened (traffic, rankings, GEO/AI, authority, backlinks, content) and turns period-over-period deltas into prioritized recommendations. alert configures forward-looking threshold and anomaly notifications so a drop in rankings, traffic, technical health, backlinks, competitor position, or AI citations fires before someone eyeballs it. Pick the mode from intent: past-tense reporting → report; future-tense "tell me when" → alert.
Mode set: report (multi-metric snapshot) · alert (forward thresholds/anomalies). Default when unstated: infer from verb tense (see Decision Gates).
Scope guard — what this skill does NOT do: it does not compute the CORE-EEAT content score or run its vetoes (T04/C01/R10) — that gate is content-quality-auditor; it does not compute the CITE domain score or run its vetoes (T03/T05/T09) — that gate is domain-authority-auditor. This skill reports those scores when a gate has already produced them and watches them for change; it never scores. Raw position-by-position ranking deltas belong to rank-tracker.
Quick Start
# report mode
Create an SEO performance report for [domain] for [time period]
Generate an executive summary of SEO performance for [month/quarter]
Create a GEO visibility report for [domain]
# alert mode
Set up SEO monitoring alerts for [domain]
Create ranking drop alerts for my top 20 keywords
Alert me when AI citations for [domain] drop
Shortest valid invocation: performance-monitor <domain> (mode inferred). Output: report returns a metric-table → what-changed → why → next-action dashboard with every figure source-tagged; alert returns an alert-config summary with named triggers, thresholds, priorities, and delivery routing. Both emit a handoff summary ready for memory/monitoring/.
Skill Contract
Expected output: mode report → a delta-based multi-metric report/dashboard plus per-change Cycle Retro; mode alert → an alert configuration summary that opens a bound readback rather than declaring an instant outcome. Both include exact page/change/measurement bindings, evidence refs, and the standard handoff summary for memory/monitoring/.
- Reads: prior baselines and current performance data.
reportreads current + prior-period metrics across traffic/rankings/authority/content, report audience, and date range.alertreads baselines, critical keywords/metrics to watch, normal volatility, and delivery preferences. Plus any user-provided or tool data. - Writes: a user-facing monitoring deliverable plus a reusable summary storable under
memory/monitoring/. - Promotes: significant changes, confirmed anomalies, durable thresholds, and follow-up actions; pending decisions go to
memory/open-loops.md(never directly todecisions.md). - Done when:
report: each in-scope section (traffic, rankings, GEO, authority, backlinks, content) is present or marked "Not yet evaluated"; every metric is source-, time-, window-, and target-bound and compared to the prior period/control; each changed page records the current page/content/change and measurement-contract refs/hashes; recommendations carry owner, priority, and expected impact.alert: each chosen alert category has a named trigger, threshold, and priority; a Critical/High/Medium/Low response plan and delivery routing are defined; thresholds are tuned to the metric's stated normal volatility.
- Primary next skill: see Next Best Skill — the two modes hand off to each other.
Handoff Summary
Emit the standard shape from skill-contract.md §Handoff Summary Format. Name the active mode (
report/alert) in the Objective line.
Data Sources
All integrations optional (see CONNECTORS.md). Tier 1 (keyless) works for both modes; keyed tools are opt-in Tier 2/3.
- report: with tools connected, aggregates traffic from ~~analytics, search data from ~~search console, rankings/backlinks from ~~SEO tool, and AI visibility from ~~AI monitor. Without tools, ask the user for analytics exports, Search Console data, ranking data, and KPIs.
- alert: with tools, monitor real-time feeds from ~~SEO tool, ~~search console, and ~~web crawler. Without tools, ask for baselines, critical keywords, delivery preferences, and historical data.
Zero-dependency measurement loop (both modes): every reported change or fired alert should come from a computed delta, not an eyeballed estimate. Store each period's KPIs and let the ledger compute movement: python3 "${CLAUDE_PLUGIN_ROOT}/scripts/connectors/ledger.py" record <domain> --source monitor --data '{"sessions": ..., "clicks": ..., ...}', then ledger.py diff <domain> --source monitor for the period delta and ledger.py trend <domain> --source monitor --field <kpi> for the trend line. Label every figure Measured / User-provided / Estimated, and attribute outcome movement against a control rather than to the latest change — see references/measurement-protocol.md. See scripts/connectors/README.md.
Decision Gates
Stop and ask the user when:
- Mode ambiguous — the request fits neither past-tense ("report on last month") nor future-tense ("tell me when X drops"). Offer: (1)
reporta snapshot now, (2)alertfor ongoing monitoring, (3) both. - report: no reporting period or comparison period can be determined and none is in context — offer (1) last 30 days vs prior 30, (2) last calendar month vs prior month, (3) a custom range. A period comparison is required, not optional.
- alert: no baseline or normal-volatility reference exists for the metrics to watch — thresholds would be arbitrary. Offer (1) supply recent baseline data, (2) use the Alert Threshold Quick Reference defaults and label them Estimated, (3) cancel.
Continue silently (never stop for):
- A report section's source data is missing — mark that section "Not yet evaluated" and proceed; do not fabricate the metric.
- Audience not stated (report) — default to the executive template and note the assumption.
- Delivery channel not stated (alert) — default to the channel in context (or email) and note it.
- An alert category the user did not mention — leave it unconfigured; do not add alerts they did not request.
Instructions
Step 0 — Select mode. Read --mode if given. Otherwise infer: past-tense / "how did we do" / "月报" → report; future-tense / "tell me when" / "预警" → alert. If neither fits, use the mode-ambiguous gate above.
Mode: report
Use Report Output Templates and cover:
- Define Report Parameters — domain, period, comparison period, report type, audience, focus areas, data freshness.
- Executive Summary — overall rating, wins, watch areas, required actions, metrics-at-a-glance (traffic, rankings, conversions, DA/authority, AI citations), and SEO ROI; tag each metric Measured / User-provided / Estimated.
- Organic Traffic — sessions, users, pageviews, engagement/bounce, trend, source/device split, top pages, each figure source-tagged.
- Keyword Rankings — position ranges, distribution change, top improvements/declines, SERP features. For raw position-by-position deltas, defer to rank-tracker rather than recomputing here.
- GEO / AI Performance — AI citation overview, citations by topic, GEO wins, optimization opportunities.
- Domain Authority (CITE) — include CITE dimension scores and veto status when a gate has already produced them; otherwise mark "Not yet evaluated." Do not compute CITE here.
- Content Quality (CORE-EEAT) — include average scores and trends when already produced; otherwise mark "Not yet evaluated." Do not compute CORE-EEAT here.
- Backlinks — link-profile summary, acquisition trend, notable links, competitive position.
- Content Performance — publishing summary, top content, content needing attention, content ROI.
- Recommendations — immediate/short-term/long-term actions with priority, owner, expected impact, next-period goals.
- Compile Full Report — table of contents, appendix, data sources, methodology, glossary.
Mode: alert
Use Alert Configuration Templates and:
- Define Alert Categories — choose from rankings, traffic, technical, backlinks, competitors, GEO / AI, and brand.
- Configure Alert Rules by Category — define trigger condition, threshold, alert name, and priority for each relevant rule; tie each threshold to a stated baseline and label that baseline Measured / User-provided / Estimated.
- Define Alert Response Plans — map Critical / High / Medium / Low to response time and next actions.
- Set Up Alert Delivery — channels, routing, cooldowns, maintenance windows, escalation paths.
- Create Alert Summary — output category counts, the critical playbook, and a weekly review checklist as the deliverable.
Shared discipline (both modes)
Label every metric Measured (tool/export), User-provided, or Estimated (model inference); never present an estimate as measured; if a required metric is unavailable, mark it N/A — do not invent it. Separate an observed change from a plausible explanation (corroborate before stating a cause), an optimization opportunity, and follow-up needing crawl/SERP/rank/audit — never report an unverified explanation as a confirmed cause.
Alert Threshold Quick Reference
| Metric | Warning | Critical | Frequency |
|---|---|---|---|
| Organic traffic | -15% WoW | -30% WoW | Daily |
| Keyword positions | >3 position drop | >5 position drop | Daily |
| Pages indexed | -5% change | -20% change | Weekly |
| Crawl errors | >10 new/day | >50 new/day | Daily |
| Core Web Vitals | "Needs Improvement" | "Poor" | Weekly |
| Backlinks lost | >5% in 1 week | >15% in 1 week | Weekly |
| AI citation loss | Any key query | >20% queries | Weekly |
| Security issues | Any detected | Any detected | Daily |
Steep-decline trigger (always on): if organic traffic OR aggregate keyword rank falls >30% below its trailing baseline (default: prior 28-day median for the same weekday band), fire a Critical alert regardless of category. Use a trailing median, not a single prior day, so one noisy data point does not trip it. Label the baseline Measured / User-provided / Estimated.
Reading Deltas Against a Control
A reported delta or a fired alert is only evidence if it beats a control over a fixed readback window set before the change — a raw before/after on a confounded outcome is a story, not proof. Attach the decision protocol from references/measurement-protocol.md §Cross-discipline decision protocol:
First apply the SEO/GEO Evidence and Cycle Control Profile. The readback must bind the current non-forked page/content/change head and exact measurement-contract hash. A later edit supersedes the old binding and starts a new window; a post-hoc window is explicitly reconstructed.
- Readback window — pick the window for the change type up front (content refresh 7/14/28/56 days; new content 14/28/56/90; technical fix daily ×7 then 28; AEO/GEO surfacing weekly) and do not react to noise inside it. A fired alert opens a readback window, not an instant verdict — confirm the drop holds before declaring an incident.
- Required readback fields — record: page/content/change refs + hashes · current head · measurement contract ref/hash · owner · baseline/candidate/control windows · evidence refs · primary + secondary metric · decision · caveats · next patch · next-readback date · applicable index receipt.
- Decision — mark each change Promote (beats control on the primary metric past the bar), Keep-testing (trending, not yet significant), Rollback (loses by the same bar), or Unproven (everything else). Report delta-vs-control, not raw delta.
Example
- report: an executive summary with overall status, metrics-at-a-glance for traffic/rankings/conversions/authority/AI citations, SEO ROI, and immediate/month/quarter actions with owners and dates.
- alert: a keyword alert matrix with Critical vs High thresholds, a response plan for drops, and notification routing to email + Slack.
Save Results
Ask "Save these results?" If yes, write to memory/monitoring/ using filename YYYY-MM-DD-<topic>.md — see skill-contract.md §Save Results Template. This is a non-auditor skill: ask before writing memory and hand off veto-like risks to the relevant auditor gate rather than appending veto markers itself.
Reference Materials
- Report Output Templates — compact starter blocks for all 11 report sections (report mode)
- KPI Definitions — SEO/GEO metric definitions with benchmarks, thresholds, trend analysis, attribution guidance
- Report Templates by Audience — copy-ready templates for executive, marketing, technical, and client audiences
- Alert Configuration Templates — full category tables, thresholds, response-plan templates (alert mode)
- Alert Threshold Guide — threshold setting, fatigue prevention, escalation paths, response playbooks
- Measurement & Attribution Protocol — readback windows, required fields, and the promote / keep-testing / rollback / unproven decision rule
- SEO/GEO Evidence and Cycle Control Profile — search/page bindings, index receipts, freshness, and Cycle Retro fields
Next Best Skill
Mode-conditional, then terminal:
- After report — a change needs ongoing monitoring → run this skill in
alertmode. A section marked "Not yet evaluated" for authority → domain-authority-auditor; for content quality → content-quality-auditor. One-off report with no action → Terminal. - After alert — a reporting cadence is requested → run this skill in
reportmode. Standalone alert setup → Terminal.
Termination: the visited-set and max-depth: 3 rules from skill-contract.md §Termination rules apply. Do not re-enter a mode already run in this chain (report→alert→report is a visited-set stop); if routing is ambiguous, present the options and stop instead of auto-following.
| 1 | |
| 2 | name performance-monitor |
| 3 | slug performance-monitor |
| 4 | displayName "Performance Monitor · SEO报告" |
| 5 | summary "SEO报告/绩效仪表盘/SEO预警/排名监控" |
| 6 | description 'Use when the user asks to "generate an SEO report", "出月报", "set SEO alerts", or "排名掉了提醒我"; two modes — report builds multi-metric traffic/ranking/authority/content dashboards, and alert configures threshold notifications for future ranking, traffic, technical, backlink, competitor, and AI-visibility changes. Not for raw position-by-position deltas — use rank-tracker. SEO报告/绩效仪表盘/SEO预警/排名监控' |
| 7 | version "20.1.0" |
| 8 | license Apache-2.0 |
| 9 | compatibility "Claude Code and compatible agent-skill hosts" |
| 10 | homepage "https://github.com/aaron-he-zhu/aaron-marketing-skills" |
| 11 | when_to_use "Use when generating multi-metric SEO/GEO performance reports, traffic summaries, stakeholder dashboards, SEO报告, 流量报告, 月报, 周报, 汇报给老板 (mode: report), OR when setting up monitoring alerts for rankings, traffic, backlinks, technical issues, competitor moves, or AI visibility changes, SEO预警, 排名监控 (mode: alert). Not for raw position-by-position ranking deltas — use rank-tracker." |
| 12 | argument-hint "<domain> [--mode report|alert] [date range | metric]" |
| 13 | metadata {"author": "aaron-he-zhu", "version": "20.1.0", "discipline": "seo-geo", "phase": "evaluate", "geo-relevance": "medium", "hermes": {"tags": ["marketing", "seo-geo", "evaluate"], "category": "seo-geo"}, "openclaw": {"emoji": "🔍", "homepage": "https://github.com/aaron-he-zhu/aaron-marketing-skills"}} |
| 14 | |
| 15 | |
| 16 | # Performance Monitor |
| 17 | |
| 18 | One monitor skill, two modes. **`report`** builds a stakeholder-facing multi-metric snapshot of what already happened (traffic, rankings, GEO/AI, authority, backlinks, content) and turns period-over-period deltas into prioritized recommendations. **`alert`** configures forward-looking threshold and anomaly notifications so a drop in rankings, traffic, technical health, backlinks, competitor position, or AI citations fires before someone eyeballs it. Pick the mode from intent: past-tense reporting → `report`; future-tense "tell me when" → `alert`. |
| 19 | |
| 20 | **Mode set:** `report` (multi-metric snapshot) · `alert` (forward thresholds/anomalies). Default when unstated: infer from verb tense (see Decision Gates). |
| 21 | |
| 22 | **Scope guard — what this skill does NOT do:** it does not compute the CORE-EEAT content score or run its vetoes (T04/C01/R10) — that gate is [content-quality-auditor]; it does not compute the CITE domain score or run its vetoes (T03/T05/T09) — that gate is [domain-authority-auditor]. This skill *reports* those scores when a gate has already produced them and *watches* them for change; it never scores. Raw position-by-position ranking deltas belong to [rank-tracker]. |
| 23 | |
| 24 | ## Quick Start |
| 25 | |
| 26 | |
| 27 | # report mode |
| 28 | Create an SEO performance report for [domain] for [time period] |
| 29 | Generate an executive summary of SEO performance for [month/quarter] |
| 30 | Create a GEO visibility report for [domain] |
| 31 | |
| 32 | # alert mode |
| 33 | Set up SEO monitoring alerts for [domain] |
| 34 | Create ranking drop alerts for my top 20 keywords |
| 35 | Alert me when AI citations for [domain] drop |
| 36 | |
| 37 | |
| 38 | Shortest valid invocation: `performance-monitor <domain>` (mode inferred). Output: **report** returns a metric-table → what-changed → why → next-action dashboard with every figure source-tagged; **alert** returns an alert-config summary with named triggers, thresholds, priorities, and delivery routing. Both emit a handoff summary ready for `memory/monitoring/`. |
| 39 | |
| 40 | ## Skill Contract |
| 41 | |
| 42 | **Expected output**: mode `report` → a delta-based multi-metric report/dashboard plus per-change Cycle Retro; mode `alert` → an alert configuration summary that opens a bound readback rather than declaring an instant outcome. Both include exact page/change/measurement bindings, evidence refs, and the standard handoff summary for `memory/monitoring/`. |
| 43 | |
| 44 | **Reads**: prior baselines and current performance data. `report` reads current + prior-period metrics across traffic/rankings/authority/content, report audience, and date range. `alert` reads baselines, critical keywords/metrics to watch, normal volatility, and delivery preferences. Plus any user-provided or tool data. |
| 45 | **Writes**: a user-facing monitoring deliverable plus a reusable summary storable under `memory/monitoring/`. |
| 46 | **Promotes**: significant changes, confirmed anomalies, durable thresholds, and follow-up actions; pending decisions go to `memory/open-loops.md` (never directly to `decisions.md`). |
| 47 | **Done when**: |
| 48 | `report`: each in-scope section (traffic, rankings, GEO, authority, backlinks, content) is present or marked "Not yet evaluated"; every metric is source-, time-, window-, and target-bound and compared to the prior period/control; each changed page records the current page/content/change and measurement-contract refs/hashes; recommendations carry owner, priority, and expected impact. |
| 49 | `alert`: each chosen alert category has a named trigger, threshold, and priority; a Critical/High/Medium/Low response plan and delivery routing are defined; thresholds are tuned to the metric's stated normal volatility. |
| 50 | **Primary next skill**: see [Next Best Skill] — the two modes hand off to each other. |
| 51 | |
| 52 | ### Handoff Summary |
| 53 | |
| 54 | > Emit the standard shape from [skill-contract.md §Handoff Summary Format]. Name the active mode (`report` / `alert`) in the Objective line. |
| 55 | |
| 56 | ## Data Sources |
| 57 | |
| 58 | All integrations optional (see [CONNECTORS.md]). Tier 1 (keyless) works for both modes; keyed tools are opt-in Tier 2/3. |
| 59 | |
| 60 | **report**: with tools connected, aggregates traffic from ~~analytics, search data from ~~search console, rankings/backlinks from ~~SEO tool, and AI visibility from ~~AI monitor. Without tools, ask the user for analytics exports, Search Console data, ranking data, and KPIs. |
| 61 | **alert**: with tools, monitor real-time feeds from ~~SEO tool, ~~search console, and ~~web crawler. Without tools, ask for baselines, critical keywords, delivery preferences, and historical data. |
| 62 | |
| 63 | **Zero-dependency measurement loop** (both modes): every reported change or fired alert should come from a computed delta, not an eyeballed estimate. Store each period's KPIs and let the ledger compute movement: `python3 "${CLAUDE_PLUGIN_ROOT}/scripts/connectors/ledger.py" record <domain> --source monitor --data '{"sessions": ..., "clicks": ..., ...}'`, then `ledger.py diff <domain> --source monitor` for the period delta and `ledger.py trend <domain> --source monitor --field <kpi>` for the trend line. Label every figure Measured / User-provided / Estimated, and attribute outcome movement against a control rather than to the latest change — see [references/measurement-protocol.md]. See [scripts/connectors/README.md]. |
| 64 | |
| 65 | ## Decision Gates |
| 66 | |
| 67 | **Stop and ask the user when:** |
| 68 | **Mode ambiguous** — the request fits neither past-tense ("report on last month") nor future-tense ("tell me when X drops"). Offer: (1) `report` a snapshot now, (2) `alert` for ongoing monitoring, (3) both. |
| 69 | **report**: no reporting period or comparison period can be determined and none is in context — offer (1) last 30 days vs prior 30, (2) last calendar month vs prior month, (3) a custom range. A period comparison is required, not optional. |
| 70 | **alert**: no baseline or normal-volatility reference exists for the metrics to watch — thresholds would be arbitrary. Offer (1) supply recent baseline data, (2) use the Alert Threshold Quick Reference defaults and label them Estimated, (3) cancel. |
| 71 | |
| 72 | **Continue silently (never stop for):** |
| 73 | A report section's source data is missing — mark that section "Not yet evaluated" and proceed; do not fabricate the metric. |
| 74 | Audience not stated (report) — default to the executive template and note the assumption. |
| 75 | Delivery channel not stated (alert) — default to the channel in context (or email) and note it. |
| 76 | An alert category the user did not mention — leave it unconfigured; do not add alerts they did not request. |
| 77 | |
| 78 | ## Instructions |
| 79 | |
| 80 | **Step 0 — Select mode.** Read `--mode` if given. Otherwise infer: past-tense / "how did we do" / "月报" → `report`; future-tense / "tell me when" / "预警" → `alert`. If neither fits, use the mode-ambiguous gate above. |
| 81 | |
| 82 | ### Mode: report |
| 83 | |
| 84 | Use [Report Output Templates] and cover: |
| 85 | |
| 86 | **Define Report Parameters** — domain, period, comparison period, report type, audience, focus areas, data freshness. |
| 87 | **Executive Summary** — overall rating, wins, watch areas, required actions, metrics-at-a-glance (traffic, rankings, conversions, DA/authority, AI citations), and SEO ROI; tag each metric Measured / User-provided / Estimated. |
| 88 | **Organic Traffic** — sessions, users, pageviews, engagement/bounce, trend, source/device split, top pages, each figure source-tagged. |
| 89 | **Keyword Rankings** — position ranges, distribution change, top improvements/declines, SERP features. For raw position-by-position deltas, defer to [rank-tracker] rather than recomputing here. |
| 90 | **GEO / AI Performance** — AI citation overview, citations by topic, GEO wins, optimization opportunities. |
| 91 | **Domain Authority (CITE)** — include CITE dimension scores and veto status **when a gate has already produced them**; otherwise mark "Not yet evaluated." Do not compute CITE here. |
| 92 | **Content Quality (CORE-EEAT)** — include average scores and trends **when already produced**; otherwise mark "Not yet evaluated." Do not compute CORE-EEAT here. |
| 93 | **Backlinks** — link-profile summary, acquisition trend, notable links, competitive position. |
| 94 | **Content Performance** — publishing summary, top content, content needing attention, content ROI. |
| 95 | **Recommendations** — immediate/short-term/long-term actions with priority, owner, expected impact, next-period goals. |
| 96 | **Compile Full Report** — table of contents, appendix, data sources, methodology, glossary. |
| 97 | |
| 98 | ### Mode: alert |
| 99 | |
| 100 | Use [Alert Configuration Templates] and: |
| 101 | |
| 102 | **Define Alert Categories** — choose from rankings, traffic, technical, backlinks, competitors, GEO / AI, and brand. |
| 103 | **Configure Alert Rules by Category** — define trigger condition, threshold, alert name, and priority for each relevant rule; tie each threshold to a stated baseline and label that baseline Measured / User-provided / Estimated. |
| 104 | **Define Alert Response Plans** — map Critical / High / Medium / Low to response time and next actions. |
| 105 | **Set Up Alert Delivery** — channels, routing, cooldowns, maintenance windows, escalation paths. |
| 106 | **Create Alert Summary** — output category counts, the critical playbook, and a weekly review checklist as the deliverable. |
| 107 | |
| 108 | ### Shared discipline (both modes) |
| 109 | |
| 110 | Label every metric **Measured** (tool/export), **User-provided**, or **Estimated** (model inference); never present an estimate as measured; if a required metric is unavailable, mark it N/A — do not invent it. Separate an **observed change** from a **plausible explanation** (corroborate before stating a cause), an **optimization opportunity**, and **follow-up** needing crawl/SERP/rank/audit — never report an unverified explanation as a confirmed cause. |
| 111 | |
| 112 | ## Alert Threshold Quick Reference |
| 113 | |
| 114 | | Metric | Warning | Critical | Frequency | |
| 115 | |--------|---------|----------|-----------| |
| 116 | | Organic traffic | -15% WoW | -30% WoW | Daily | |
| 117 | | Keyword positions | >3 position drop | >5 position drop | Daily | |
| 118 | | Pages indexed | -5% change | -20% change | Weekly | |
| 119 | | Crawl errors | >10 new/day | >50 new/day | Daily | |
| 120 | | Core Web Vitals | "Needs Improvement" | "Poor" | Weekly | |
| 121 | | Backlinks lost | >5% in 1 week | >15% in 1 week | Weekly | |
| 122 | | AI citation loss | Any key query | >20% queries | Weekly | |
| 123 | | Security issues | Any detected | Any detected | Daily | |
| 124 | |
| 125 | **Steep-decline trigger (always on):** if organic traffic OR aggregate keyword rank falls **>30%** below its trailing baseline (default: prior 28-day median for the same weekday band), fire a Critical alert regardless of category. Use a trailing median, not a single prior day, so one noisy data point does not trip it. Label the baseline Measured / User-provided / Estimated. |
| 126 | |
| 127 | ## Reading Deltas Against a Control |
| 128 | |
| 129 | A reported delta or a fired alert is only evidence if it beats a control over a **fixed readback window** set before the change — a raw before/after on a confounded outcome is a story, not proof. Attach the decision protocol from [references/measurement-protocol.md §Cross-discipline decision protocol]: |
| 130 | |
| 131 | First apply the [SEO/GEO Evidence and Cycle Control Profile]. The readback must bind the current non-forked page/content/change head and exact measurement-contract hash. A later edit supersedes the old binding and starts a new window; a post-hoc window is explicitly `reconstructed`. |
| 132 | |
| 133 | **Readback window** — pick the window for the change type up front (content refresh 7/14/28/56 days; new content 14/28/56/90; technical fix daily ×7 then 28; AEO/GEO surfacing weekly) and do not react to noise inside it. A fired alert opens a readback window, not an instant verdict — confirm the drop holds before declaring an incident. |
| 134 | **Required readback fields** — record: page/content/change refs + hashes · current head · measurement contract ref/hash · owner · baseline/candidate/control windows · evidence refs · primary + secondary metric · decision · caveats · next patch · next-readback date · applicable index receipt. |
| 135 | **Decision** — mark each change **Promote** (beats control on the primary metric past the bar), **Keep-testing** (trending, not yet significant), **Rollback** (loses by the same bar), or **Unproven** (everything else). Report delta-vs-control, not raw delta. |
| 136 | |
| 137 | ## Example |
| 138 | |
| 139 | **report**: an executive summary with overall status, metrics-at-a-glance for traffic/rankings/conversions/authority/AI citations, SEO ROI, and immediate/month/quarter actions with owners and dates. |
| 140 | **alert**: a keyword alert matrix with Critical vs High thresholds, a response plan for drops, and notification routing to email + Slack. |
| 141 | |
| 142 | ## Save Results |
| 143 | |
| 144 | Ask "Save these results?" If yes, write to `memory/monitoring/` using filename `YYYY-MM-DD-<topic>.md` — see [skill-contract.md §Save Results Template]. This is a non-auditor skill: ask before writing memory and hand off veto-like risks to the relevant auditor gate rather than appending veto markers itself. |
| 145 | |
| 146 | ## Reference Materials |
| 147 | |
| 148 | [Report Output Templates] — compact starter blocks for all 11 report sections (report mode) |
| 149 | [KPI Definitions] — SEO/GEO metric definitions with benchmarks, thresholds, trend analysis, attribution guidance |
| 150 | [Report Templates by Audience] — copy-ready templates for executive, marketing, technical, and client audiences |
| 151 | [Alert Configuration Templates] — full category tables, thresholds, response-plan templates (alert mode) |
| 152 | [Alert Threshold Guide] — threshold setting, fatigue prevention, escalation paths, response playbooks |
| 153 | [Measurement & Attribution Protocol] — readback windows, required fields, and the promote / keep-testing / rollback / unproven decision rule |
| 154 | [SEO/GEO Evidence and Cycle Control Profile] — search/page bindings, index receipts, freshness, and Cycle Retro fields |
| 155 | |
| 156 | ## Next Best Skill |
| 157 | |
| 158 | Mode-conditional, then terminal: |
| 159 | |
| 160 | After **report** — a change needs ongoing monitoring → run this skill in `alert` mode. A section marked "Not yet evaluated" for authority → [domain-authority-auditor]; for content quality → [content-quality-auditor]. One-off report with no action → Terminal. |
| 161 | After **alert** — a reporting cadence is requested → run this skill in `report` mode. Standalone alert setup → Terminal. |
| 162 | |
| 163 | Termination: the visited-set and `max-depth: 3` rules from [skill-contract.md §Termination rules] apply. Do not re-enter a mode already run in this chain (report→alert→report is a visited-set stop); if routing is ambiguous, present the options and stop instead of auto-following. |
| 164 |
Discussion
Alternatives
Browse more free Claude skills or everything in Marketing.