Install
openclaw skills install spend-pulseProactive spending alerts via Plaid. Track credit card spending against a monthly budget with pace-based alerts.
openclaw skills install spend-pulseProactive spending alerts via Plaid. Track credit card spending against a monthly budget with pace-based alerts.
# Install globally
npm install -g spend-pulse
# Or from source
git clone https://github.com/jbornhorst1524/spend-pulse.git
cd spend-pulse
npm install && npm run build && npm link
Verify installation:
spend-pulse --version
Run the interactive setup wizard:
spend-pulse setup
This will:
For Sandbox testing, use these Plaid test credentials when the bank login appears:
user_goodpass_goodAfter setup, run initial sync:
spend-pulse sync
spend-pulse check — Primary CommandReturns alert decision with full context. This is the main command to use.
should_alert: true
reasons:
- 3 new transactions
- end of month approaching
month: "2026-01"
budget: 8000
spent: 6801.29
remaining: 1198.71
day_of_month: 30
days_in_month: 31
days_remaining: 1
expected_spend: 7200.00
pace: under
pace_delta: -398.71
pace_percent: -6
pace_source: last_month
oneline: "Jan: $6.8k of $8k (85%) | $1.2k left | 1 days | > On track"
new_transactions: 3
new_items:
- merchant: Whole Foods
amount: 47.50
category: Groceries
- merchant: Amazon
amount: 125.00
category: Shopping
Alert triggers (should_alert: true when any apply):
spend-pulse syncPull latest transactions from Plaid. Run before check for fresh data.
synced: 16
new: 3
account: "Amex Gold (...1234)"
total_this_month: 6801.29
spend-pulse status [--oneline]Full spending summary, or quick one-liner:
spend-pulse status --oneline
# Jan: $6.8k of $8k (85%) | $1.2k left | 1 days | > On track
spend-pulse recent [--days N] [--count N]Recent transactions (default: last 5 days).
spend-pulse config [key] [value]View or modify settings:
spend-pulse config # show all
spend-pulse config target 8000 # set monthly budget
spend-pulse config timezone America/Chicago
spend-pulse link [--status] [--remove <id>]Manage linked bank accounts:
spend-pulse link --status # show linked accounts
spend-pulse link # add another account
spend-pulse link --remove <item_id>
spend-pulse chart [-o <path>]Generate a cumulative spending chart as a PNG image showing:
spend-pulse chart # Writes to ~/.spend-pulse/chart.png
spend-pulse chart -o /tmp/chart.png # Custom output path
Outputs the file path to stdout so you can capture it and attach to messages.
spend-pulse check --chartGenerate a chart alongside the alert check. Adds chart_path to the YAML output:
should_alert: true
chart_path: /Users/you/.spend-pulse/chart.png
# ... rest of check output
# 1. Sync latest transactions
spend-pulse sync
# 2. Check if alert needed, generate chart
spend-pulse check --chart
If should_alert: true: Compose a brief, friendly spending update using the data. Attach the chart image from chart_path — it shows current vs. last month spending at a glance.
If should_alert: false: Stay quiet unless the user asks about spending.
Use the oneline field as the core message, then add context. Always attach the chart image when available — it communicates pace visually better than any text can.
Under pace (positive):
"Quick spending pulse: Jan at $6.8k of $8k, $1.2k left with 1 day to go. Under pace by 12% — nice work!" [attach chart.png]
On track:
"January update: $5.5k of $8k (69%) with 10 days left. Right on pace. Recent: $125 Amazon, $47 Whole Foods." [attach chart.png]
Over pace (heads up):
"Heads up — January's at $7.2k of $8k with 5 days to go. About 10% over pace. The travel charges added up." [attach chart.png]
Over budget:
"January budget: $8.5k spent, about $500 over the $8k target. Something to keep in mind for February." [attach chart.png]
Guidelines:
new_items if interestingreasons array for contextSpend Pulse paces against last month's actual cumulative spend curve when available, falling back to a linear budget ramp when no prior month data exists.
expected_spend: Where you were at this point last month (or linear ramp fallback)spent: Actual spendingpace_delta: Difference (negative = under, positive = over)pace: under | on_track | overpace_source: last_month (curve-based) or linear (ramp fallback)This means early-month bills (rent, subscriptions) won't trigger false "over pace" alerts if you had similar bills last month.
Example: Day 15, last month you'd spent $4.2k by this point → expected ~$4.2k.
After testing with Sandbox, upgrade to Development mode for real transactions:
spend-pulse setup --upgrade
This clears sandbox data and connects your real bank account.
"Plaid credentials not found": Run spend-pulse setup to configure.
"Access token not found": Run spend-pulse setup to re-authenticate.
"No accounts found": Check spend-pulse link --status and add account if needed.
Stale data: Run spend-pulse sync to refresh from Plaid.