用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Tzeusy/butlers --skill anomaly-triage命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Guide for discovering, analyzing, and pruning the Butlers test suite. Use when working on test condensation beads (Phase 1 epic bu-rhztl and Phase 2 epic bu-hg8rl both CLOSED; Phase 3 maintenance cycle underway 2026-06-21), assessing test bloat, identifying pruning targets, or rewriting tests to be contract-driven. Triggers on test reduction, test pruning, test consolidation, or condensation tasks for this project. Also use when a fresh session needs to assess test health, create new condensation beads, or resume in-progress condensation work.
Generate a weekly home energy digest with trends, top consumers, and recommendations.
Orchestrate a UX redesign of a Butlers dashboard page (or sub-page set) using /project-direction as the spec+beads engine, with redesign-specific upfront phases for vision capture, asset ingestion, impact analysis, backend-contract derivation, LLM-cost feasibility, manifesto/identity preservation, and a th-design design-bar audit. The binding design language is the Dispatch spec (openspec/specs/dashboard-design-language/spec.md); bundles live under pr/overview/ and resolve via references/bundle-registry.md. Use when asked to redesign a dashboard page, with or without a Claude Design bundle. Triggers on "redesign the X page", "plan the Y redesign", "integrate the redesign bundle", "what would it take to ship the SLUG redesign", "design language integration for AREA".
基于 SOC 职业分类
正在显示 SKILL.md
| name | anomaly-triage |
| description | Interactive workflow for reviewing, investigating, and resolving spending anomalies |
| version | 1.0.0 |
This skill provides a structured, interactive workflow for reviewing detected spending anomalies, investigating their root cause, and resolving them — either by marking them as expected, flagging them for follow-up, or identifying fraudulent charges.
Help the owner quickly triage unusual spending activity detected by the anomaly engine. The goal is to close open anomalies with appropriate context: is this expected? Is this a problem? Does it require immediate action? The workflow reduces noise and surfaces the anomalies that actually matter.
Use this skill when:
Before starting the triage, gather context:
anomaly_scan(days_back=7, sensitivity="medium") to surface recent anomaliesFollow this structured flow. Work through anomalies in order of severity (highest first).
anomalies = anomaly_scan(days_back=7, sensitivity="medium")
If the result is empty or status="insufficient_data", say: "No anomalies detected in the
past 7 days. Your spending looks normal." and exit.
Present anomalies sorted by severity descending:
Anomaly Review — past 7 days ([N] flagged)
🔴 HIGH SEVERITY ([N])
1. [Merchant]: $[amount] on [date]
Type: [anomaly_type]
Why flagged: [explanation]
🟠 MEDIUM SEVERITY ([N])
2. [Merchant]: $[amount] on [date]
Type: [anomaly_type]
Why flagged: [explanation]
🟡 LOW SEVERITY ([N])
3. [Merchant]: $[amount] on [date]
Type: [anomaly_type]
Why flagged: [explanation]
Anomaly types:
amount_spike: Transaction amount significantly higher than merchant/category baselinenew_merchant: Charge from a merchant not seen in transaction historyvelocity_spike: Category spending rate is unusually high for this point in the cycleduplicate_suspected: Same merchant, same amount, on same or adjacent daysWork through anomalies from highest severity first. For each anomaly:
Bot: "Let's look at [Merchant] — $[amount] on [date]. [Why flagged explanation].
What would you like to do?"
Options:
- ✅ Expected — Mark as normal (e.g., planned purchase, annual fee)
- 🔍 Investigate — Show recent transactions for this merchant
- 🚨 Dispute — Flag as potentially fraudulent
- ⏭️ Skip — Move on without acting
If the owner confirms the transaction is expected:
memory_store_fact(
subject=<merchant_name>,
predicate="expected_anomaly",
content="$[amount] on [date] — owner confirmed expected: [reason if provided]",
permanence="volatile",
importance=4.0,
tags=["anomaly", "resolved", "expected"]
)
Confirm: "Got it. Marked as expected."
Note: If this is a recurring pattern (e.g., annual subscription charge), offer to update the baseline by tracking it as a subscription: "Is this an annual charge? Should I track it as a subscription so it doesn't flag again next year?"
Show recent transaction history for this merchant:
list_transactions(merchant=<merchant_name>, limit=10)
Present the last 10 transactions for context:
Recent transactions — [Merchant]:
1. $[amount] on [date] — [category]
2. $[amount] on [date] — [category]
...
After showing history, re-prompt for a decision (Expected / Dispute / Skip).
If the owner flags the transaction as potentially fraudulent:
memory_store_fact(
subject=<merchant_name>,
predicate="disputed_charge",
content="$[amount] on [date] — owner flagged as potentially fraudulent. Source: [transaction_id if available]",
permanence="stable",
importance=9.0,
tags=["anomaly", "dispute", "fraud-suspected"]
)
Confirm and surface action guidance:
🚨 Charge flagged: [Merchant] $[amount] on [date].
Recommended next steps:
1. Check your bank or card issuer's app for the charge details
2. Contact your card issuer to dispute the charge if unauthorized
3. Ask your bank to block or replace the card if multiple unauthorized charges exist
I've recorded this for your reference.
Important scope note: Do not initiate card blocks, disputes, or contact banks on behalf of the owner. Surface the information and recommend external action.
Note the skip without storing anything. Move to the next anomaly.
After all anomalies are reviewed (or the owner says they're done), present a summary:
Anomaly Triage Complete
Reviewed: [N] anomalies
- ✅ Marked expected: [N]
- 🚨 Disputes flagged: [N]
- ⏭️ Skipped: [N]
[If disputes:] Remember to contact your card issuer about the flagged charge(s).
[If expected annual charges:] Consider tracking them as subscriptions to avoid future alerts.
If the owner felt that too many or too few anomalies were flagged, offer to adjust sensitivity:
Bot: "The scan ran at 'medium' sensitivity. Would you like to adjust it?
- Low: Only flag extreme outliers
- Medium: Current setting (balanced)
- High: Flag anything slightly unusual"
Store the preference if the owner wants to change it:
memory_store_fact(
subject="user",
predicate="anomaly_sensitivity_preference",
content="prefers [low/medium/high] sensitivity for anomaly detection",
permanence="stable",
importance=6.0,
tags=["anomaly", "preference", "sensitivity"]
)
For quick daily triage (after anomaly-digest alert):
For weekly review:
For deep investigation:
list_transactionsdetect_duplicates(days_back=30)anomaly_scan returns status="insufficient_data": "Not enough transaction history for
anomaly detection. Check back after more transactions are recorded."anomaly_scan returns no anomalies: "No anomalies detected. Your spending looks normal."list_transactions returns no history for a merchant: "No prior history found for
[Merchant] — this is the first recorded charge."