From thinking-frameworks-skills
Scans transactions for fraud signals: duplicates within 48h, >3σ anomalies from merchant avg, first high-dollar new merchants, unusual geo/time. Outputs severity-tagged alerts with tx ID, evidence, actions.
npx claudepluginhub lyndonkl/claude --plugin thinking-frameworks-skillsThis skill uses the workspace's default tool permissions.
- [Overview](#overview)
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Fraud detection on a household budget is a different problem from fraud detection at a bank. The bank already runs sophisticated rules; this skill exists to catch what the bank misses — small recurring fraud below their threshold, unfamiliar merchant patterns, and post-hoc audit of charges the user has not yet noticed.
It runs five complementary detectors, each producing severity-tagged alerts.
The caller provides:
transactions_new — transactions added by the most recent drop.transactions_history — last 12 months of confirmed transactions.accounts — for context (account type, owner, geography).today — ISO date.thresholds — optional overrides:
{
"duplicate_window_hours": 48,
"anomaly_sigma": 3.0,
"first_merchant_high_dollar_cents": 50000,
"geo_radius_miles": 1000
}
Two transactions on the same account_id with the same merchant and the same amount_cents posted within duplicate_window_hours of each other.
medium for amounts < $200, high for amounts ≥ $200.food.coffee, food.restaurants, transportation.gas from this rule when amount is below $30.For each (merchant, account_id) pair with ≥ 6 historical occurrences, compute mean and stddev. Flag any new transaction where |amount − mean| > anomaly_sigma × stddev AND |amount − mean| ≥ $50.
medium baseline, high if > 5σ or amount > 4× mean.food.restaurants and transportation.rideshare.A transaction with a merchant that has zero prior occurrences in transactions_history AND |amount| ≥ first_merchant_high_dollar_cents.
medium for $500–$2,000, high for ≥ $2,000.category_override or user-confirmed plan exists.If description_raw includes a location string (state code, country code) and the inferred location differs by more than geo_radius_miles from the household's home location AND no travel context is set, flag.
If a transaction posts at an unusual time (between 2am–5am local) AND the merchant category is unusual for that hour (not gas station, not 24-hour pharmacy), flag.
medium.Any transaction with category: financial.fees is captured. Tag with fee_type (overdraft, foreign-transaction, monthly-maintenance, ATM, late-payment).
low for fees < $10, medium for fees $10–$50, high for overdraft fees and late-payment fees regardless of amount.Anomaly Scan Progress:
- [ ] Step 1: Build merchant statistics from transactions_history
- [ ] Step 2: Run Rule 1 (duplicate within 48h)
- [ ] Step 3: Run Rule 2 (statistical anomaly)
- [ ] Step 4: Run Rule 3 (first-merchant high-dollar)
- [ ] Step 5: Run Rule 4 (geography/time)
- [ ] Step 6: Run Rule 5 (fees)
- [ ] Step 7: Deduplicate alerts (one tx may trigger multiple rules)
- [ ] Step 8: Rank by severity then dollar impact
- [ ] Step 9: Attach recommended actions
A single transaction may legitimately trigger multiple rules (e.g., a $5,000 charge at a brand-new merchant in another state — Rules 3 and 4). Combine into a single alert with triggered_rules: [...] and the highest severity.
Each alert carries one of:
call_bank_fraud_line — for high severity charges that the user does not recognize.freeze_card — for confirmed fraud or before calling the bank if multiple charges fired within hours.dispute_charge — for known-merchant overcharges or duplicate post-and-pending issues.negotiate_fee — for financial.fees (overdraft, monthly maintenance) that have a known negotiation playbook.monitor — for medium/low alerts where the user should confirm but no action is required if it's legitimate.Always include a one-line evidence describing what triggered the rule, with concrete numbers.
{
"scanned": {
"transactions_new": 142,
"transactions_history": 1820,
"merchants_with_stats": 218
},
"alerts": [
{
"id": "alert_20260424_001",
"severity": "high",
"triggered_rules": ["first_merchant_high_dollar"],
"tx_ids": ["tx_20260424_011"],
"merchant": "TECH-SHOP-ONLINE",
"amount_cents": -245000,
"account_id": "acc_cc_001",
"evidence": "First charge ever from TECH-SHOP-ONLINE; amount $2,450 exceeds new-merchant high-dollar threshold of $500.",
"suggested_action": "call_bank_fraud_line",
"expected_user_response": "Confirm whether this purchase is yours; if not, freeze card and dispute."
},
{
"id": "alert_20260424_002",
"severity": "medium",
"triggered_rules": ["statistical_anomaly"],
"tx_ids": ["tx_20260424_023"],
"merchant": "Whole Foods",
"amount_cents": -38420,
"evidence": "12-month avg $84.50, stddev $22.30; this charge ($384.20) is 13.4σ above mean.",
"suggested_action": "monitor",
"expected_user_response": "If you bought groceries for a party, ignore. Otherwise, check the receipt."
},
{
"id": "alert_20260424_003",
"severity": "high",
"triggered_rules": ["fee_overdraft"],
"tx_ids": ["tx_20260423_004"],
"merchant": "Bank Name",
"amount_cents": -3500,
"evidence": "Overdraft fee of $35 charged on 2026-04-23. Account balance was negative for 2 days.",
"suggested_action": "negotiate_fee",
"expected_user_response": "Call the bank's customer line; first overdraft fees are typically waived on request."
}
],
"summary": {
"alerts_total": 3,
"high_severity": 2,
"medium_severity": 1,
"low_severity": 0
}
}
high for truly unusual.reports/alerts/. False positives feed back into the threshold tuning.