Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/peerjakobsen/smartspender/analyzegit clone --depth 1 https://github.com/peerjakobsen/smartspenderWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/peerjakobsen/smartspender/analyze)<a href="https://agentmods.dev/commands/peerjakobsen/smartspender/analyze"><img src="https://agentmods.dev/badge/commands/peerjakobsen/smartspender/analyze.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00007 | $0.01221 |
| Opus 5 | $0.00003 | $0.00611 |
| Sonnet 5 | $0.00001 | $0.00244 |
| Haiku 4.5 | $0.00001 | $0.00122 |
Grade A, and why
analyze scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 119 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/smartspender:analyze
Trigger
/smartspender:analyze- "Analyser mine transaktioner"
- "Kategoriser mit forbrug"
- "Analyze my spending"
Arguments
None.
Prerequisites
- Transactions synced (transactions.csv has data)
Workflow
-
Load user memory skill:
- Load
skills/user-memory/SKILL.mdfor learning detection - Read
learnings/categorization.mdfor previously learned category corrections - Read
learnings/subscriptions.mdfor subscription confirmations/denials - Read
learnings/merchants.mdfor merchant aliases
- Load
-
Read all transactions from transactions.csv
-
Read existing categorized transactions from categorized.csv (by tx_id)
-
Read merchant-overrides.csv (if it exists) — these are learned categorization rules from previous user corrections
-
Identify uncategorized transactions: tx_ids present in transactions.csv but not in categorized.csv
-
If no uncategorized transactions found, skip to step 8 (still check for new overrides to learn)
-
For each uncategorized transaction, apply categorization using
skills/categorization/SKILL.md: a. Normalize the raw_text for pattern matching b. Check merchant-overrides.csv first — if raw_text (normalized) matches araw_pattern, use that override's merchant/category/subcategory (confidence 1.0) c. If no override match, check against the merchant pattern database (exact match -> confidence 1.0) d. If no exact match, try partial pattern match (confidence 0.8) e. If no pattern match, use intelligent classification from transaction context (confidence 0.5-0.7) f. If still unmatched, assign to "Andet" category (confidence 0.0) g. Detect transaction type from description prefix (Dankort-kob, PBS, Overforsel, etc.) h. For known subscription merchants, setis_recurringto TRUE -
Append categorized rows to categorized.csv (create file with header row if it doesn't exist)
-
Learn from manual corrections: scan categorized.csv for rows where
manual_overrideis TRUE. For each, look up the originalraw_textin transactions.csv. If no correspondingraw_patternexists in merchant-overrides.csv yet, append a new override row with the corrected merchant/category/subcategory -
Run subscription detection using
skills/subscription-detection/SKILL.md: a. Group categorized transactions by merchant b. For each merchant with >=3 occurrences, check the 5 subscription criteria c. Calculate frequency and annual cost for detected subscriptions -
Read existing subscriptions from subscriptions.csv
-
For newly detected subscriptions not already in the file, append rows
-
For existing subscriptions, update
last_seendate and amount if changed -
Calculate monthly aggregations and write to monthly-summary.csv: a. Group by month (YYYY-MM) and category b. Compute total, transaction_count, avg_transaction c. Compute vs_prev_month and vs_prev_month_pct where previous month data exists
-
Append the analysis event to action-log.csv:
action_type: analyzetarget: allstatus: completeddetails: "{N} transactions categorized, {M} subscriptions detected"
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 119 lines · 7 tokens per session scan A 6f100a27470e
analyze is a command published in the GitHub repository peerjakobsen/smartspender (5 stars, last pushed 7mo ago), licensed MIT. It adds 7 tokens to every session and 1,221 once invoked, about $0.0000 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
better-auth:add-plugin
Add a better-auth plugin to an existing project. Configures server and client plugins with proper imports.
better-auth:setup
Interactive setup wizard for better-auth authentication. Guides through database, framework, OAuth providers, and plugin configuration.
bun:upgrade
Upgrade Bun runtime and project dependencies.
bun:migrate
Migrate existing Node.js/npm projects to Bun.
content
Content quality analysis (readability, keyword density, GEO scoring).
bundle
Track bundle size, detect heavy dependencies, compare to previous builds.