skill
rikdom
Portable, local-first wealth portfolio schema + storage toolkit.
Set up
Skills are installed by placing their folder where your agent loads skills.
The download comes from github.com/ricardocabral/rikdom itself, not from our server, so what you get is exactly what its author published.
Install instructions come from the README
README
synced Oct 25, 2026rikdom
Portable, local-first wealth portfolio schema + storage toolkit.
rikdom is designed so your portfolio data can last for years as plain JSON files, independent of any broker app or SaaS dashboard.
Why The Name "rikdom"
rikdom is a Norwegian word meaning "wealth" (or "riches").
The name reflects the project goal: treat wealth data as durable, long-lived information, not a locked product database.
Why Now
With coding agents and LLMs, it is much easier to build your own asset management software and adapt it to your needs over time.
rikdom focuses on the durable layer beneath that iteration: a solid foundation for storing and evolving financial data, plus a plugin system you can extend with coding agents and enrich with reusable open-source plugins.
What It Solves
- Define a portfolio for a person or company.
- Track holdings across stocks, REITs, funds, real estate, cash equivalents, digital assets and cryptocurrencies.
- Model recurring operations (monthly/yearly tasks) and keep an auditable "last done" history.
- Extend asset types with country-specific classes, metadata, and typed instrument attributes.
- Persist data in simple disk files (
JSON+JSONL). - Archive or transfer data with checksum-verified
rikdom-exportbundles. - Generate static dashboard and deep-dive reports for allocation and progress over time.
- Ingest provider statements through community plugins.
- Query external market data through optional connector plugins, with provider rules and authentication handled by each adapter.
Core Principles
- Local-first: data stays in your folder.
- Durable formats: JSON schema and line-delimited snapshots.
- Extensible by design:
metadataandextensionsfields. - Agent-friendly: explicit schema + instructions for Codex/Claude.
How rikdom differs from Ghostfolio and Wealthfolio
rikdom is not trying to be another full investment app.
It is a schema + CLI + plugin foundation focused on durability, portability, and auditable local files.
| Project | Primary shape | Storage model | Core focus |
|---|---|---|---|
| rikdom | Python CLI toolkit + JSON schema + plugin engine | Plain JSON + append-only JSONL in your repo/workspace | Long-term, local-first data durability and machine-readable portfolio workflows |
| Ghostfolio | Full web app (Angular + NestJS) for portfolio tracking | Server stack (PostgreSQL + Redis) with optional cloud offering | Operational wealth dashboard with rich UI, analytics, and continuous app runtime |
| Wealthfolio | Desktop investment tracker (Tauri + React + Rust) | Local SQLite database | Beautiful local desktop experience with performance analytics and addon ecosystem |
Practical difference:
- Choose
rikdomwhen you want open contracts and file-level control first. - Choose Ghostfolio/Wealthfolio when you want a ready-made end-user app experience first.
- Combine them when needed: keep
rikdomas your canonical data layer and export/sync to other tools via plugins.
Information Flow
flowchart TD
U["User input"] --> C["CLI commands"]
S["Provider statements"] --> P["Plugins"]
P --> C
D["External data services"] --> DC["Connector plugins"]
C -->|Explicit connector query| DC
DC --> Q["JSON with acquisition provenance"]
C --> V["Schema validation"]
V --> E["Event ledger activities"]
E --> T["Current state portfolio"]
E --> R["Projections"]
T --> R
R --> Z["Visualization dashboard"]
E --> L["LLM reasoning"]
R --> L
T --> L
Q -->|User or agent supplies external context| L
L --> A["Insights planning and next actions"]
Connector JSON gives users, scripts, and coding agents external evidence with the connector plugin identity and retrieval time. The LLM reasoning step represents analysis performed by an external agent; Rikdom does not invoke an LLM or feed query results into portfolio calculations automatically.
Repository Structure
schema/JSON schemas and default asset typesdata/local workspace files (portfolio.json,snapshots.jsonl,fx_rates.jsonl,import_log.jsonl), gitignoreddata/portfolio_registry.jsonoptional multi-portfolio registry (main,paper,retirement, etc.)data/portfolios/<name>/per-portfolio isolated data files when registry mode is useddata-sample/tracked starter templates for workspace bootstrapping (see storage layout)src/rikdom/Python package (CLI, validation, import pipeline, visualization)docs/schema, storage, plugin docs, and execution plansplugins/local plugin implementations and manifestsscripts/helper automation scripts (e.g., GitHub issue publishing)tests/unit and integration testsout/generated artifacts (e.g., dashboard/report output).codex/Codex instruction files.claude/Claude instruction filesROADMAP.mdphased roadmap and execution priorities
Quick Start
-
Install
uv. -
Sync dependencies and bootstrap a sample workspace:
make sync make bootstrap -
Validate, snapshot, and visualize:
make validate make snapshot make vizOpen
out/dashboard.htmlin a browser.
For a guided walkthrough see the first portfolio tutorial.
External data connectors
Use an external/connector plugin to query market data independently of your
portfolio files. Each plugin owns its provider operations, authentication,
and REST or Model Context Protocol (MCP) client. Queries return JSON with
acquisition provenance without importing transactions or updating holdings.
The brapi plugin is one example; its capabilities,
configuration, and usage are documented in its own directory.
See query external data for the workflow and connector architecture for the boundary between acquisition and planned normalized enrichment.
Documentation
Full documentation is organized along the Diataxis framework at docs/index.md:
- Tutorials — your first portfolio, author your first plugin.
- How-to guides — import a statement, query external data, run a migration, compute performance, and more.
- Reference — CLI, schemas, plugin manifest & hooks, export bundle format.
- Explanation — schema design, plugin architecture, calculation trust, storage durability.
Common Dev Tasks
make lint
uv run python -m unittest tests.test_cli_reconcile -v
Run focused tests locally and use the pull request's CI run for the full suite. See Contributing for testing guidance.
Community plugin showcase
| Use case | Plugin | Description |
|---|---|---|
| Importing statements | csv-generic | Imports holdings and activities from a generic CSV statement. |
| Importing statements | ghostfolio_export_json | Imports holdings and activities from Ghostfolio JSON export files. |
| Importing statements | ibkr_flex_xml | Imports activities from Interactive Brokers Flex XML statements. |
| Importing statements | charles-schwab | Imports account metadata, holdings, cash balances, and activities from Charles Schwab CSV statement exports. |
| Importing statements | b3-consolidado-mensal | Imports holdings from B3 consolidated monthly XLSX reports. |
| Asset type enrichment | asset-types-br-catalog | Brazilian asset-type catalog for FIIs, public/private debt, BDRs, COEs, and special funds. |
| External market data | brapi | Example external data connector. |
| Storage sync / analytics | duckdb-storage | Mirrors rikdom canonical JSON data into DuckDB for local analytics workflows. |
| Reporting / visualization | quarto-portfolio-report | Renders portfolio graphics and reports through Quarto. |
Plugin quick commands:
make plugins-list
make import-sample
make viz
make storage-sync
Portfolio view plugin (quarto-portfolio-report) preview:
Trust, source boundaries, and manual corrections
Imports preview changes, history coverage, and quality findings before writing.
Add --reconcile to a successful import for JSON/Markdown trust artifacts.
Manual events and immutable corrections
work through validated local JSON. Correction-bearing portfolios use schema 2.0.0;
uncorrected 1.x remains readable. Older raw-ledger calculators are not supported
for corrected data.
Core calculations require an explicit reporting currency and consume normalized
source facts. Plugins own provider operations, regional identifiers and catalog
rules, parsing conventions, and report presentation. Cached FX is the default;
acquisition requires an explicitly selected connector, for example
rikdom snapshot --fx-provider frankfurter.
AI Agent Skills
.codex/SKILL.md.codex/skills/rikdom-portfolio-analyst/SKILL.md.codex/skills/rikdom-extensibility-engineer/SKILL.md.claude/CLAUDE.md
These files guide coding agents to safely analyze and evolve your data model.
Contributing
See CONTRIBUTING.md for development setup, testing expectations, and pull request guidelines.
Project roadmap: ROADMAP.md
License
MIT (see LICENSE).