计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
performance-monitor【效率与协作】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 — …
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
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.
# 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/.
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/.
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.memory/monitoring/.memory/open-loops.md (never directly to decisions.md).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.Emit the standard shape from skill-contract.md §Handoff Summary Format. Name the active mode (
report/alert) in the Objective line.
All integrations optional (see CONNECTORS.md). Tier 1 (keyless) works for both modes; keyed tools are opt-in Tier 2/3.
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.
Stop and ask the user when:
report a snapshot now, (2) alert for ongoing monitoring, (3) both.Continue silently (never stop for):
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.
Use Report Output Templates and cover:
Use Alert Configuration Templates and:
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.
| 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.
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.
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.
Mode-conditional, then terminal:
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.report mode. 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.