Agent Smith
An intelligent financial management skill for Claude Code that transforms PocketSmith from a passive tracking tool into an active financial intelligence system.
Core Capabilities
1. Hybrid Rule Engine
- Platform Rules: Simple keyword patterns synced to PocketSmith API
- Local Rules: Advanced regex, multi-condition logic, confidence scoring
- Intelligence Modes: Conservative (manual approval), Smart (auto-apply ≥90%), Aggressive (auto-apply ≥80%)
- Performance Tracking: Rule accuracy, matches, user overrides
2. 3-Tier Tax Intelligence (Australian ATO)
- Level 1 (Reference): ATO category mappings, basic tax reports, GST tracking
- Level 2 (Smart): Deduction detection, CGT tracking, confidence scoring, expense splitting
- Level 3 (Full): BAS preparation, compliance checks, scenario planning, audit-ready documentation
3. Transaction Categorization
- Batch Processing: Categorize uncategorized transactions with AI assistance
- Merchant Intelligence: Automatic payee normalization and variation detection
- AI Fallback: LLM-powered categorization when rules don't match
- Dry-Run Mode: Preview categorization before applying
4. Financial Analysis & Reporting
- Spending Analysis: By category, merchant, time period
- Trend Detection: Increasing/decreasing categories, anomaly detection
- Multi-Format Reports: Markdown, CSV/JSON, HTML dashboards, Excel
- Comparative Analysis: YoY, QoQ, MoM comparisons
5. Scenario Analysis
- Historical: What-if replays ("What if I cut dining by 30% last year?")
- Projections: Spending forecasts, affordability analysis, goal modeling
- Optimization: Subscription analysis, expense rationalization, tax optimization
- Tax Planning: Purchase timing, income deferral, CGT scenarios
6. Health Check System
- 6 Health Dimensions: Data Quality, Category Structure, Rule Engine, Tax Readiness, Automation, Budget Alignment
- Automated Monitoring: Weekly checks, EOFY prep, post-operation validation
- Prioritized Recommendations: Top 3 highest-impact improvements
7. Advanced Features
- Smart Alerts: Budget overruns, tax thresholds, pattern detection
- Document Tracking: Receipt requirements ($300 ATO threshold)
- Multi-User: Shared expense tracking and settlement
- Audit Trail: Complete activity log with undo capability
Quick Start
First-Time Setup
Prerequisites:
- PocketSmith account with API access
- Developer API key from PocketSmith (Settings > Security)
- Python 3.9+ with uv package manager
Configuration:
- Copy
.env.sampleto.env - Add
POCKETSMITH_API_KEY=<your_key> - Set
TAX_INTELLIGENCE_LEVEL=smart(reference|smart|full) - Set
DEFAULT_INTELLIGENCE_MODE=smart(conservative|smart|aggressive)
- Copy
Installation:
# From the skill directory uv syncGuided Onboarding:
# Launch integrated onboarding (8 stages) /agent-smith:install
The onboarding process will:
- Discover your PocketSmith account structure
- Recommend and apply a rule template
- Help customize rules for your needs
- Configure intelligence modes
- Incrementally categorize transactions
- Show measurable improvement with health scores
- Provide ongoing usage guidance
- Generate intelligent suggestions
Time required: 30-60 minutes for first-time setup
Daily Usage
Two Usage Modes:
Guided Journey Mode - When you start Claude Code, Agent Smith displays a status dashboard with:
- Your health score
- Uncategorized transaction count
- Conflicts awaiting review
- Suggested next steps with both natural language and command options
Power User Mode - Use slash commands directly for specific operations.
Slash Commands (7 specialized commands):
/smith:install- Installation and onboarding wizard/smith:categorize [--mode] [--period]- Transaction categorization/smith:review-conflicts- Review transactions flagged for review/smith:health [--full|--quick]- Health check and recommendations/smith:insights <spending|trends|scenario|report>- Financial analysis and reports/smith:tax <deductions|cgt|bas|eofy>- Tax intelligence (ATO)/smith:schedule [--setup|--status|--remove]- Automated categorization scheduling
Python Scripts
All Python scripts are in scripts/ directory. Always run with uv run python -u for proper dependency resolution and unbuffered output.
Core Operations
# Categorize transactions
uv run python -u scripts/operations/batch_categorize.py --mode=smart --period=2025-11
# Run health check
uv run python -u scripts/health/check.py --full
# Generate spending report
uv run python -u scripts/reporting/generate.py --period=2025 --format=all
# Tax deduction analysis
uv run python -u scripts/tax/deduction_detector.py --period=2024-25
Script Organization
scripts/core/- API client, rule engine, unified rulesscripts/operations/- Categorization, batch processing, transaction updatesscripts/analysis/- Spending analysis, trend detectionscripts/reporting/- Multi-format report generationscripts/tax/- ATO mappings, deductions, CGT, BAS preparationscripts/scenarios/- Historical, projections, optimization, tax scenariosscripts/status/- Status dashboard for SessionStart hookscripts/scheduled/- Automated scheduled tasks (cron/launchd)scripts/health/- Health check engine, recommendations, monitoringscripts/workflows/- Interactive categorization workflowsscripts/utils/- Backup, validation, logging, merchant normalization
Unified Rule System
Agent Smith uses a YAML-based unified rule system for transaction categorization and labeling.
Quick Start with Rules
# 1. Choose a template for your household type
uv run python scripts/setup/template_selector.py
# 2. Customize rules in data/rules.yaml
# 3. Test with dry run
uv run python scripts/operations/batch_categorize.py --mode=dry_run --period=2025-11
# 4. Apply to transactions
uv run python scripts/operations/batch_categorize.py --mode=apply --period=2025-11
Example Rule
rules:
# Category rule - categorize transactions
- type: category
name: WOOLWORTHS → Groceries
patterns: [WOOLWORTHS, COLES, ALDI]
category: Food & Dining > Groceries
confidence: 95
# Label rule - apply labels based on context
- type: label
name: Shared Groceries
when:
categories: [Groceries]
accounts: [Shared Bills]
labels: [Shared Expense, Essential]
Key Features
- Two-phase execution: Categories first, then labels
- Pattern matching: Regex patterns with exclusions
- Confidence scoring: 0-100% for auto-apply logic
- LLM fallback: AI categorization when rules don't match
- Intelligence modes: Conservative/Smart/Aggressive
- Template system: Pre-built rules for common household types
- Operational modes: DRY_RUN/VALIDATE/APPLY for safe testing
See references/unified-rules-guide.md for complete documentation.
Tax Intelligence
ATO Compliance (Australian Tax Office)
Three Levels:
Reference (Level 1):
- ATO category mappings
- Basic tax reports
- GST tracking
- Resource links
Smart (Level 2) - Recommended:
- Deduction detection (14 pattern-based rules)
- CGT tracking with FIFO matching
- Confidence scoring
- Substantiation threshold checking ($300, $75 taxi/Uber)
- Time-based commuting detection
- Instant asset write-off tracking
Full (Level 3) - Power Users:
- BAS preparation with GST calculations
- Compliance checks
- Scenario planning
- Audit-ready documentation
- Professional advice disclaimers
Configure Tax Level:
# In .env file
TAX_INTELLIGENCE_LEVEL=smart # reference|smart|full
TAX_JURISDICTION=AU
FINANCIAL_YEAR_END=06-30
Deduction Detection Example
from scripts.tax.deduction_detector import DeductionDetector
detector = DeductionDetector()
result = detector.detect_deduction(transaction)
# Returns: {"is_deductible": True, "confidence": "high",
# "reason": "Office supplies", "substantiation_required": True}
CGT Tracking Example
from scripts.tax.cgt_tracker import CGTTracker, AssetType
from decimal import Decimal
from datetime import date
tracker = CGTTracker()
tracker.track_purchase(
asset_type=AssetType.SHARES,
name="BHP Group",
quantity=Decimal("100"),
purchase_date=date(2023, 1, 1),
purchase_price=Decimal("45.50"),
fees=Decimal("19.95")
)
event = tracker.track_sale(
asset_type=AssetType.SHARES,
name="BHP Group",
quantity=Decimal("100"),
sale_date=date(2024, 6, 1),
sale_price=Decimal("52.00"),
fees=Decimal("19.95")
)
# Returns CGTEvent with capital_gain, discount_eligible, holding_period_days
Scenario Analysis
Historical Analysis
from scripts.scenarios.historical import calculate_what_if_spending
scenario = calculate_what_if_spending(
transactions=transactions,
category_name="Dining",
adjustment_percent=-30.0, # 30% reduction
start_date="2025-01-01",
end_date="2025-12-31"
)
print(f"Savings: ${scenario['savings']:.2f}")
Spending Forecast
from scripts.scenarios.projections import forecast_spending
forecast = forecast_spending(
transactions=transactions,
category_name="Groceries",
months_forward=6,
inflation_rate=3.0
)
Optimization Suggestions
from scripts.scenarios.optimization import suggest_optimizations
optimizations = suggest_optimizations(transactions=transactions)
print(f"Potential savings: ${optimizations['potential_annual_savings']:.2f}")
Command Architecture Patterns
All Agent Smith commands follow consistent patterns for reliability and maintainability.
1. Deterministic Python Scripts
Commands delegate to git-tracked Python scripts in scripts/ for all operations:
User Request → Slash Command → Python Script → PocketSmith API
(UX) (Guidance) (Logic) (Data)
Why this matters:
- Same inputs always produce same outputs
- All logic is testable and auditable
- No hidden state or side effects
2. Subagent Delegation Pattern
Commands use subagents to preserve main conversation context:
**IMPORTANT: Delegate ALL work to a subagent to preserve main context window.**
Use the Task tool with `subagent_type: "general-purpose"` to execute...
When to use subagents:
- Batch operations (>50 transactions)
- Multi-step workflows with verbose output
- Operations that could pollute context
3. Guided Workflow Pattern
Every command follows this structure:
- Goal - What will this accomplish?
- Why This Matters - Business context
- Execution Steps - Numbered steps with scripts
- Next Steps - What to do after completion
4. Visual Style Guidelines
| Element | Usage |
|---|---|
| Emojis | Status: ✅ success, ⏳ processing, ⚠️ warning, ❌ error |
| Progress | [23/100] Processing... |
| Tables | Results summaries |
| ASCII bars | Health dimensions: ████████░░ 80% |
5. Subagent Orchestration
Agent Smith uses intelligent subagent orchestration for complex operations:
When to delegate to subagents:
- Transaction count > 100
- Estimated tokens > 5000
- Bulk processing or deep analysis
- Multi-period operations
- Parallelization opportunities
Subagent types:
general-purpose- Most operations (categorization, analysis, reporting)- Purpose-built agents for specialized workflows
Context preservation: Main skill maintains user preferences, session state, and high-level decisions while subagents handle heavy processing.
Health Check System
# Run comprehensive health check
uv run python scripts/health/check.py --full
6 Health Dimensions (scored 0-100):
- Data Quality (25%) - Uncategorized rate, duplicates, gaps
- Category Structure (20%) - Depth, unused categories, distribution
- Rule Engine (15%) - Coverage, efficiency, conflicts
- Tax Readiness (15%) - Tax categorization, compliance
- Automation (10%) - Savings automation, bill scheduling
- Budget Alignment (15%) - Variance, overspending
Output includes:
- Overall score with status (Poor/Fair/Good/Excellent)
- Individual dimension scores
- Top 3 prioritized recommendations
- Projected score after improvements
Automated monitoring:
- Weekly quick health checks
- Monthly full health analysis
- Pre-EOFY comprehensive check
- Post-major-operation validation
Configuration Files
.env (Required)
# PocketSmith API
POCKETSMITH_API_KEY=<Your Developer API Key>
# Agent Smith Configuration
TAX_INTELLIGENCE_LEVEL=smart # reference|smart|full
DEFAULT_INTELLIGENCE_MODE=smart # conservative|smart|aggressive
AUTO_BACKUP=true
AUTO_ARCHIVE=true
ALERT_NOTIFICATIONS=true
# Tax Configuration (Australia)
TAX_JURISDICTION=AU
FINANCIAL_YEAR_END=06-30 # June 30
GST_REGISTERED=false
# Reporting Preferences
DEFAULT_REPORT_FORMAT=all # markdown|csv|json|html|excel|all
CURRENCY=AUD
# Advanced
API_RATE_LIMIT_DELAY=100 # ms between calls
CACHE_TTL_DAYS=7
SUBAGENT_MAX_PARALLEL=5
data/config.json (User Preferences)
{
"user_id": 217031,
"tax_level": "smart",
"intelligence_mode": "smart",
"alerts_enabled": true,
"backup_before_mutations": true,
"auto_archive": true,
"default_report_formats": ["markdown", "csv", "html"]
}
data/rules.yaml (Unified Rules)
See references/unified-rules-guide.md for complete schema and examples.
Directory Structure
agent-smith/
├── SKILL.md # This file
├── .env # API configuration (not committed)
├── .env.sample # Configuration template
├── data/ # Working data and state
│ ├── config.json # User preferences
│ ├── rules.yaml # Unified categorization rules
│ ├── templates/ # Pre-built rule templates
│ └── [other runtime data]
├── scripts/ # Python code
│ ├── core/ # API client, rule engine, utilities
│ ├── operations/ # Categorization, batch processing
│ ├── analysis/ # Spending analysis, trends
│ ├── reporting/ # Multi-format reports
│ ├── tax/ # Tax intelligence (3-tier)
│ ├── scenarios/ # Scenario analysis
│ ├── orchestration/ # Subagent conductor
│ ├── workflows/ # Interactive workflows
│ ├── features/ # Advanced features
│ ├── health/ # Health check system
│ └── utils/ # Utilities
├── references/ # Documentation
│ ├── pocketsmith-api.md # PocketSmith API reference
│ ├── unified-rules-guide.md # Complete rules documentation
│ ├── onboarding-guide.md # First-time setup guide
│ └── health-check-guide.md # Health check documentation
├── backups/ # Timestamped backups (30-day retention)
├── logs/ # Execution logs (14-day retention)
└── reports/ # Generated reports (90-day retention)
Critical Operating Rules
NEVER create custom one-off scripts for core Agent Smith operations.
Agent Smith has a complete architecture with:
- Slash commands (
/smith:categorize,/smith:analyze, etc.) - Python workflows in
scripts/workflows/ - Core operations in
scripts/operations/ - Proper API client with correct endpoints in
scripts/core/api_client.py
If you find yourself writing a new Python script to:
- Categorize transactions
- Analyze spending
- Generate reports
- Update PocketSmith data
- Run health checks
STOP. You are reinventing the wheel.
Instead:
- Check if a slash command exists (
/smith:*) - Check if a workflow exists in
scripts/workflows/ - Check if a core operation exists in
scripts/operations/ - Use the existing code that has been tested and uses correct API endpoints
Why this matters:
- Custom scripts may use wrong API endpoints (e.g.,
/users/{id}/transactions/{id}instead of/transactions/{id}) - Custom scripts bypass rule engine, validation, backup, and audit systems
- Custom scripts duplicate functionality that already exists
- Custom scripts won't benefit from future improvements
Exception: Only create new scripts when building NEW features not yet in the design, and always place them in the correct scripts/ subdirectory.
Best Practices
Transaction Categorization
- Always use
/smith:categorize- Never create custom categorization scripts - Start with a rule template matching your household type
- Use dry-run mode to preview categorization
- Review and adjust rules based on results
- Monitor rule performance metrics
- Let AI handle edge cases (LLM fallback)
Tax Compliance
- Configure appropriate tax level for your needs
- Track all deductible expenses as they occur
- Maintain receipt documentation (>$300 ATO requirement)
- Review tax reports before EOFY (June 30)
- Consult registered tax agent for complex situations
Financial Health
- Run health checks monthly
- Address high-priority recommendations first
- Maintain 95%+ categorization rate
- Review and clean up unused categories
- Set up automated alerts for budget overruns
Backup and Safety
- Always backup before bulk operations (automatic)
- Use dry-run mode for untested operations
- Review audit trail for unexpected changes
- Maintain 30 days of recent backups
- Export tax reports for 7-year ATO retention
References
For detailed documentation, see the references/ directory:
- PocketSmith API - Complete API reference
- Unified Rules Guide - Rule system documentation
- Onboarding Guide - First-time setup walkthrough
- Health Check Guide - Health system details
- Design Document - Complete system architecture
Support
Version: 1.6.0
Documentation: See references/ directory for comprehensive guides
Issues: For questions or issues, refer to the design documentation or create an issue in the repository.
Note: Agent Smith is designed for Australian tax compliance (ATO). Adapting for other jurisdictions requires updating tax intelligence modules and reference documentation.