Skip to content

Contributing

Contributions are welcome. Please open an issue first to discuss what you’d like to change.

Terminal window
git clone https://github.com/agentwilson/wilson.git
cd wilson
bun install
cp env.example .env # set at least one LLM provider key
Terminal window
bun start # interactive mode
bun run dev # watch mode
Terminal window
bun test # all tests
bun test src/__tests__/ofx-parser.test.ts # single test file
Terminal window
bun run typecheck # tsc --noEmit

GitHub Actions runs bun run typecheck and bun test on push/PR to main.

  • TypeScript everywhere — Bun’s built-in TS for the CLI
  • ESM modules"type": "module" in package.json
  • Path alias@/* maps to cli/src/*
  • Amount convention — Negative = expense, positive = income/credit
  • Bun test runner — Test files in src/__tests__/

Create a new parser in src/tools/import/parsers/:

  1. Export a parse function that returns ParsedTransaction[]
  2. Add header detection logic to detect-bank.ts
  3. Add tests in src/__tests__/

Write a SKILL.md and submit it:

  1. Follow the format in Custom Skills
  2. Place in src/skills/your-skill/SKILL.md
  3. Test with real transaction data
  4. Submit a PR

The category taxonomy is in src/categories/pfc-taxonomy.ts. Improvements to category mapping and AI categorization prompts are welcome.

Provider adapters live in src/model/providers/. If the provider supports the OpenAI-compatible API, it can share the existing adapter — just add the prefix mapping in src/providers.ts.

Use the issue templates for bug reports and feature requests.

MIT