Skip to content
Conduit

skill

personal-finance-skill

AI-powered personal finance skill — 75 tools across 7 extensions for banking (Plaid), trading (Alpaca), portfolio monitoring (IBKR), tax optimization, market intelligence, and social sentiment. Built

6missedcalls/personal-finance-skillcommunitylistedunreviewednot running here yet

Set up

Skills are installed by placing their folder where your agent loads skills.

Install instructions come from the README

Skills do not use an MCP config. Follow the steps in the README below; one-click install arrives with accounts.

README

synced Oct 14, 2026

personal-finance-skill

Your AI-Powered Personal CFO

75 tools across 7 extensions for banking, investing, tax optimization, market intelligence, social sentiment, and financial analysis — built for the Agent Skills Protocol.

License: MIT Agent Skills Tools Tests TypeScript Node.js


Connect your bank accounts • Monitor your portfolio • Trade stocks • Optimize taxes • Track market intel • Detect anomalies

All through natural language, with deterministic calculations, policy guardrails, and approval gates.

Install • Architecture • Tools • Workflows • Docs


Why This Skill?

Most AI finance tools hallucinate numbers. This one doesn't.

  • Deterministic math — Tax liability, P/L, net worth always computed by tools, never by LLM arithmetic
  • Policy engine — Every trade, transfer, and tax move passes finance_policy_check before execution
  • Multi-provider — Plaid (banking) + Alpaca (trading) + IBKR (portfolio) + IRS tax forms + Finnhub/SEC/FRED/BLS (market data) + StockTwits/X (sentiment) in one unified model
  • Approval gates — No live trades without explicit human confirmation, ever
  • Canonical data model — All providers normalize into shared types (Account, Transaction, Position, Liability)
  • Works with 40+ AI agents — Claude Code, Cursor, Codex, OpenClaw, Windsurf, and more via the Agent Skills Protocol

Install

npx skills add <owner>/personal-finance-skill

Or install for specific agents:

npx skills add <owner>/personal-finance-skill -a claude-code -a cursor -a codex

Architecture

+---------------------------------------------------+
|              Intelligence Layer                     |
|  tax-engine (23)  market-intel (10)                |
|  social-sentiment (6)                              |
+---------------------------------------------------+
|            Data Source Adapters                      |
|  plaid-connect (8)  |  alpaca-trading (10)         |
|  ibkr-portfolio (9) |                              |
+---------------------------------------------------+
|              Foundation Layer                        |
|  finance-core (9 tools)                             |
|  Canonical models, storage, normalization,          |
|  policy checks, anomaly detection, briefs           |
+---------------------------------------------------+

Data flow: Adapters fetch provider data → finance-core normalizes & stores → intelligence layer analyzes → policy engine gates actions.

Extensions at a Glance

ExtensionToolsWhat It Does
finance-core9Canonical data models, snapshot storage, normalization, policy engine, anomaly detection, financial briefs
plaid-connect8Plaid Link flow, bank accounts, transactions, investments, liabilities, recurring charges, webhooks
alpaca-trading10Brokerage account, positions, orders, market data, trading with safety limits
ibkr-portfolio9IBKR Client Portal, portfolio allocation, performance, market snapshots, session management
tax-engine2315 form parsers (1040, Schedules A-E/SE, 8949, 6251, W-2, 1099-B/DIV/INT, K-1, state returns) + 8 calculators (liability, TLH, wash sales, lots, quarterly, Schedule D, state tax, AMT)
market-intel10Company news, SEC filings, economic data (FRED, BLS), analyst recommendations, news sentiment via Finnhub, SEC EDGAR, FRED, BLS, Alpha Vantage
social-sentiment6Social media sentiment via StockTwits, X/Twitter, congressional trading via Quiver Quantitative

Tool Catalog

finance-core

ToolDescriptionRisk
finance_upsert_snapshotStore normalized financial data snapshot (idempotent)LOW
finance_get_stateGet current financial state (accounts, positions, etc.)READ
finance_get_transactionsQuery transactions with filters and paginationREAD
finance_get_net_worthCalculate net worth breakdown by category/accountREAD
finance_detect_anomaliesScan for unusual transactions, balance drops, fee spikesREAD
finance_cash_flow_summaryIncome vs expenses by category with savings rateREAD
finance_subscription_trackerIdentify recurring charges and subscription patternsREAD
finance_generate_briefCreate structured financial summary with action itemsREAD
finance_policy_checkValidate proposed action against policy rulesREAD

plaid-connect

ToolDescriptionRisk
plaid_create_link_tokenInitialize Plaid Link for account connectionLOW
plaid_exchange_tokenExchange public token for permanent accessMED
plaid_get_accountsList connected accounts with balancesREAD
plaid_get_transactionsFetch transactions via cursor-based syncREAD
plaid_get_investmentsFetch holdings, securities, investment transactionsREAD
plaid_get_liabilitiesFetch credit, student loan, and mortgage dataREAD
plaid_get_recurringIdentify recurring inflow/outflow streamsREAD
plaid_webhook_handlerProcess incoming Plaid webhook eventsLOW

alpaca-trading

ToolDescriptionRisk
alpaca_get_accountGet account balances, buying power, statusREAD
alpaca_list_positionsList all open positionsREAD
alpaca_get_positionGet single position by symbolREAD
alpaca_list_ordersList orders with status/date filtersREAD
alpaca_create_orderSubmit buy/sell order with safety checksHIGH
alpaca_cancel_orderCancel a pending orderMED
alpaca_portfolio_historyHistorical equity and P/L over timeREAD
alpaca_get_assetsSearch tradable assets by class/exchangeREAD
alpaca_market_dataGet snapshots, bars, or quotes for symbolsREAD
alpaca_clockCheck if market is open, next open/closeREAD

ibkr-portfolio

ToolDescriptionRisk
ibkr_auth_statusCheck gateway authentication statusREAD
ibkr_tickleKeep gateway session alive (~1 min interval)LOW
ibkr_list_accountsList accounts (must call first)READ
ibkr_get_positionsGet positions for an account (paginated)READ
ibkr_portfolio_allocationAllocation by asset class, sector, groupREAD
ibkr_portfolio_performanceNAV time series and returnsREAD
ibkr_search_contractsSearch contracts by symbol/name/typeREAD
ibkr_market_snapshotReal-time market data for contractsREAD
ibkr_get_ordersGet current live ordersREAD

tax-engine

ToolDescriptionRisk
tax_parse_1099bParse 1099-B (proceeds, cost basis, wash sales)READ
tax_parse_1099divParse 1099-DIV (dividends, capital gains)READ
tax_parse_1099intParse 1099-INT (interest, bond premiums)READ
tax_parse_w2Parse W-2 (wages, withholding, SS/Medicare)READ
tax_parse_k1Parse Schedule K-1 (partnership pass-through)READ
tax_parse_1040Parse Form 1040 (main individual return)READ
tax_parse_schedule_aParse Schedule A (itemized deductions, SALT cap)READ
tax_parse_schedule_bParse Schedule B (interest/dividends, foreign accounts)READ
tax_parse_schedule_cParse Schedule C (self-employment, 23 expense categories)READ
tax_parse_schedule_dParse Schedule D (capital gains netting)READ
tax_parse_schedule_eParse Schedule E (rental/partnership income)READ
tax_parse_schedule_seParse Schedule SE (self-employment tax)READ
tax_parse_form_8949Parse Form 8949 (capital asset dispositions)READ
tax_parse_state_returnParse generic state income tax returnREAD
tax_parse_form_6251Parse Form 6251 (AMT)READ
tax_estimate_liabilityCalculate federal/state tax with bracketsREAD
tax_find_tlh_candidatesIdentify tax-loss harvesting opportunitiesREAD
tax_check_wash_salesValidate wash sale rule compliance (61-day window)READ
tax_lot_selectionCompare FIFO/LIFO/specific ID for a proposed saleREAD
tax_quarterly_estimateQuarterly estimated payments with safe harborREAD
tax_compute_schedule_dSchedule D computation with $3K loss cap and carryoverREAD
tax_compute_state_taxState income tax (8 states: CA, NY, NJ, IL, PA, MA, TX, FL)READ
tax_compute_amtAlternative Minimum Tax with 2025 parametersREAD

market-intel

ToolDescriptionRisk
intel_company_newsCompany-specific news articles by ticker (Finnhub)READ
intel_market_newsGeneral/forex/crypto/merger market news (Finnhub)READ
intel_stock_fundamentalsFinancial statements, annual/quarterly (Finnhub)READ
intel_analyst_recommendationsAnalyst buy/hold/sell recommendations (Finnhub)READ
intel_sec_filingsSEC filing history by company CIK (SEC EDGAR)READ
intel_sec_searchFull-text search of SEC filings (SEC EDGAR)READ
intel_fred_seriesEconomic data series observations (FRED)READ
intel_fred_searchSearch for economic data series (FRED)READ
intel_bls_dataBureau of Labor Statistics time series (BLS)READ
intel_news_sentimentNews sentiment analysis by ticker/topic (Alpha Vantage)READ

social-sentiment

ToolDescriptionRisk
social_stocktwits_sentimentSentiment aggregation (bullish/bearish) for a tickerREAD
social_stocktwits_trendingTrending symbols on StockTwitsREAD
social_x_searchSearch recent tweets with financial queryREAD
social_x_user_timelineFetch a user's recent tweetsREAD
social_x_cashtagCashtag search ($AAPL) with basic sentimentREAD
social_quiver_congressCongressional stock trading activity (Quiver Quantitative)READ

Key Workflows

1. Onboarding — Connect Accounts

plaid_create_link_token(products: ["transactions", "investments", "liabilities"])
  -> User completes Plaid Link
  -> plaid_exchange_token(publicToken)
  -> plaid_get_accounts -> finance_upsert_snapshot(source: "plaid")
  -> plaid_get_transactions -> finance_upsert_snapshot
  -> plaid_get_investments -> finance_upsert_snapshot
  -> finance_get_net_worth -> present baseline to user

2. Daily Anomaly Scan

plaid_get_transactions(cursor) -> finance_upsert_snapshot
alpaca_list_positions -> finance_upsert_snapshot(source: "alpaca")
ibkr_auth_status -> ibkr_get_positions -> finance_upsert_snapshot(source: "ibkr")
  -> finance_detect_anomalies(lookbackDays: 7)
  -> Alert on medium/high severity findings

3. Tax-Loss Harvesting

finance_get_state(include: ["positions"])
  -> tax_find_tlh_candidates(positions, marginalRate)
  -> tax_check_wash_sales(proposedSales, recentPurchases)
  -> tax_lot_selection(symbol, qty, lots)
  -> finance_policy_check(actionType: "tax_move")
  -> [If approved] alpaca_create_order(side: "sell", ...)

4. Quarterly Tax Review

tax_parse_w2 + tax_parse_1099b + tax_parse_1099div + tax_parse_1099int
  + tax_parse_1040 + tax_parse_schedule_c + tax_parse_schedule_se
  -> tax_estimate_liability(filingStatus, income)
  -> tax_compute_state_tax(stateCode, taxableIncome, filingStatus)
  -> tax_compute_amt(amtInput)  [if ISO/high-income]
  -> tax_quarterly_estimate(projectedIncome, priorYearTax, paymentsMade)
  -> finance_generate_brief(period: "quarterly")

5. Portfolio Monitoring

alpaca_list_positions + ibkr_get_positions
  -> finance_upsert_snapshot (both sources)
  -> ibkr_portfolio_allocation (check drift)
  -> alpaca_portfolio_history (performance trend)
  -> finance_detect_anomalies
  -> finance_generate_brief(period: "weekly")

Quick Start

Prerequisites

  • Node.js 18+ and npm
  • TypeScript 5+
  • API credentials for at least one provider (see below)

1. Clone & Onboard

The onboard script builds all extensions, registers them as OpenClaw plugins, and installs the skill:

git clone https://github.com/6missedcalls/personal-finance-skill.git
cd personal-finance-skill

# Build, symlink plugins, and install skill in one command
./scripts/onboard.sh

The script will:

  1. Install deps and build all 7 extensions
  2. Register each as an OpenClaw plugin (dev-linked via openclaw plugins install -l)
  3. Symlink the skill into ~/.openclaw/skills/
  4. Verify everything is reachable

Options: --copy to copy instead of symlink, --uninstall to remove everything.

2. Configure API Credentials

Set credentials for the providers you plan to use (you don't need all of them):

# Plaid — https://dashboard.plaid.com
export PLAID_CLIENT_ID="your-client-id"
export PLAID_SECRET="your-secret"
export PLAID_ENV="sandbox"              # sandbox | development | production

# Alpaca — https://app.alpaca.markets
export ALPACA_API_KEY="your-key"
export ALPACA_API_SECRET="your-secret"
export ALPACA_ENV="paper"               # paper | live

# IBKR — https://www.interactivebrokers.com
export IBKR_BASE_URL="https://localhost:5000/v1/api"

# Market Intelligence
export FINNHUB_API_KEY="your-key"       # https://finnhub.io
export FRED_API_KEY="your-key"          # https://fred.stlouisfed.org
export BLS_API_KEY="your-key"           # https://data.bls.gov
export ALPHA_VANTAGE_API_KEY="your-key" # https://www.alphavantage.co

# Social Sentiment
export X_API_BEARER_TOKEN="your-token"  # https://developer.x.com
export QUIVER_API_KEY="your-key"        # https://www.quiverquant.com

3. Restart & Verify

openclaw gateway restart
openclaw plugins list        # should show all 7 extensions

4. Run Tests

for ext in extensions/*/; do
  echo "Testing $ext..."
  (cd "$ext" && npm test)
done

612 tests across 55+ test files, all passing.


Project Structure

personal-finance-skill/
  SKILL.md                              # Agent Skills Protocol entry point
  README.md                             # This file
  LICENSE                               # MIT
  scripts/
    onboard.sh                          # Build + register + verify (one command)
  extensions/
    finance-core/                       # Foundation: models, storage, policy
    plaid-connect/                      # Adapter: Plaid banking API
    alpaca-trading/                     # Adapter: Alpaca brokerage API
    ibkr-portfolio/                     # Adapter: IBKR Client Portal API
    tax-engine/                         # Intelligence: tax parsing + strategy (23 tools)
    market-intel/                       # Intelligence: news, filings, economic data (10 tools)
    social-sentiment/                   # Intelligence: social sentiment (6 tools)
  references/
    ext-finance-core.md                 # 9 tool schemas + storage layer
    ext-plaid-connect.md                # 8 tool schemas + Link flow
    ext-alpaca-trading.md               # 10 tool schemas + order lifecycle
    ext-ibkr-portfolio.md               # 9 tool schemas + session mgmt
    ext-tax-engine.md                   # 23 tool schemas + calculators
    ext-market-intel.md                 # 10 tool schemas (Finnhub, SEC, FRED, BLS, Alpha Vantage)
    ext-social-sentiment.md             # 6 tool schemas (StockTwits, X, Quiver)
    data-models-and-schemas.md          # Canonical types + enums
    risk-and-policy-guardrails.md       # Policy engine + approval tiers
    api-plaid.md                        # Plaid API reference
    api-alpaca-trading.md               # Alpaca API reference
    api-ibkr-client-portal.md           # IBKR API reference
    api-openclaw-framework.md           # OpenClaw architecture
    api-openclaw-extension-patterns.md  # Extension patterns
    api-irs-tax-forms.md                # IRS form schemas

Automation Examples

Set up recurring scans with your agent runtime:

openclaw cron add \
  --name "Finance Weekly Brief" \
  --cron "0 8 * * 1" \
  --tz "America/Los_Angeles" \
  --session isolated \
  --message "Sync all providers, compute net worth delta, top spend changes, upcoming bills, tax posture, portfolio drift. Send concise brief with action queue."
openclaw cron add \
  --name "Finance Daily Anomaly" \
  --cron "15 7 * * *" \
  --tz "America/Los_Angeles" \
  --session isolated \
  --message "Sync latest transactions, run finance_detect_anomalies. Alert on medium/high/critical findings only."
openclaw cron add \
  --name "Quarterly Tax Review" \
  --cron "0 9 1 1,4,6,9 *" \
  --tz "America/Los_Angeles" \
  --session isolated \
  --message "Estimate liability, check withholding gap, find TLH opportunities, assess quarterly payment risk."
openclaw cron add \
  --name "Portfolio Drift Monitor" \
  --cron "*/30 13-21 * * 1-5" \
  --tz "America/New_York" \
  --session isolated \
  --message "Check portfolio allocation vs target bands. Alert if drift exceeds threshold for 2 consecutive scans."

Safety & Guardrails

These rules are enforced for all AI agents using this skill:

#Rule
1Always run finance_policy_check before any trade, transfer, or tax move
2Never bypass approval requirements — halt and request confirmation
3Deterministic math only — never use LLM arithmetic for money
4State data freshness — every recommendation includes when data was last synced
5Never expose credentials — no API keys or tokens in outputs
6No auto-execution — live trades always require explicit human confirmation
7Include disclaimers — investment outputs state "not financial advice"
8Flag stale data — warn before advising on outdated information

Key Concepts

ConceptDescription
Canonical ModelsAll provider data normalizes into shared types: Account, Transaction, Position, Liability
Snapshot StorageAppend-only, content-hashed, idempotent storage with point-in-time queries
Policy EngineConfigurable rules with approval tiers (none / user / advisor) gate all side effects
Deterministic CalculatorsTax, P/L, net worth computed by tools — zero LLM math
Progressive DisclosureSKILL.md has the overview, references/ has full schemas, api-*.md has upstream docs

Documentation

AudienceStart Here
AI agentsSKILL.md — tool catalog, workflows, guardrails
DevelopersCLAUDE.md — build instructions, architecture, rules
Tool schemasreferences/ext-*.md — full input/output schemas per extension
Data modelsreferences/data-models-and-schemas.md
Policy rulesreferences/risk-and-policy-guardrails.md

Agent Compatibility

This skill follows the Agent Skills Protocol and works with 40+ AI coding agents including:

Claude Code • Cursor • Codex • OpenClaw • Windsurf • Cline • Roo Code • Goose • Continue • Kilo • Amp • and more


Contributing

Contributions are welcome! Please:

  1. Fork the repo
  2. Create a feature branch (git checkout -b feat/my-feature)
  3. Write tests first (TDD)
  4. Ensure all 612 tests pass
  5. Submit a PR

See CLAUDE.md for coding conventions and architecture guidelines.


Disclaimer

This software is for informational and educational purposes only. It is not financial advice. Always consult a qualified financial advisor before making investment or tax decisions. The authors assume no liability for financial losses incurred through the use of this software.


License

MIT

↑↓ navigate openesc close