finance-skills
Auditable public-company research for AI coding agents. One skill, 10 focused workflows, 29 deterministic detector rules, and a fail-closed financial evidence engine.
Quick start: install the skill, install its live-data dependency, then run
/finance screen NVDA(or$finance screen NVDAin Codex).
curl -fsSL https://raw.githubusercontent.com/notEhEnG/finance-skills/v0.14.3/install.sh | bash -s -- claude
python -m pip install "yfinance>=0.2"
The engine computes and labels the numbers. Your agent interprets the evidence. Neither is allowed to silently do the other's job.
Why finance-skills?
Company-analysis agents tend to fail in two ways: they invent plausible numbers, or they return a data dump without an argument. finance-skills separates those jobs and tests the boundary.
- Deterministic fact layer. Revenue growth, margins, cash conversion, Rule of 40, net debt, and valuation multiples come from Python—not model arithmetic.
- Fail-closed evidence. Missing debt is not zero. Period and currency mismatches block affected calculations. Disabled analyses stay visible.
- Analyst layer with a point of view. The agent must weigh conflicting evidence, state the assumption doing the most work, and explain what would change the conclusion.
- Auditable provenance. Material values preserve company, period, currency, source, confidence, data mode, formula, and evidence paths.
- Read-only boundary. No brokerage integrations, trade execution, position sizing, guaranteed returns, or personalized buy/sell instructions.
See it in action
Claude Code answering “Is NVDA overvalued?” with live data:
Watch the full-quality video or the engine-only terminal demo.
What's included
The skill: finance
All research flows use one skill and one evidence contract:
| Command | What it does |
|---|---|
/finance init |
Create non-sensitive project research context |
/finance screen <ticker> |
Fast, evidence-grounded company assessment |
/finance underwrite <ticker> |
Full conditional thesis with specialist perspectives |
/finance audit <ticker> |
Accounting-quality, provenance, and detector review |
/finance compare <tickers> |
Period- and currency-compatible peer comparison |
/finance challenge <ticker> |
Red-team the current thesis and its core assumption |
/finance stress <ticker> |
Explicit operating and valuation scenarios |
/finance track <ticker> |
Save an immutable research snapshot and watchpoints |
/finance refresh <ticker> |
Compare current evidence with saved research |
/finance explain <topic> |
Explain a financial concept without company advice |
Use $finance ... in Codex. A ticker by itself, or a generic “analyze” request,
routes to screen.
Usage examples
/finance screen NVDA
/finance underwrite CRWV
/finance audit PLTR
/finance compare AMD NVDA
/finance stress NBIS
/finance explain free cash flow
Ask thesis questions naturally. “Is CRWV a buy?” becomes a conditional screen, not a recommendation: what the evidence supports, what could break the thesis, and which metrics decide the next update.
Deterministic runtime
The default install contains the focused SKILL.md, workflow references,
specialist prompts, Codex metadata, and the 14-module runtime needed by the
current /finance workflows. Repository media, development tooling, and legacy
policy documents are not copied into the runtime skill.
Installation
Agent skill (recommended)
Run the installer from the project where you want the skill:
# Choose: claude | codex | cursor | gemini | antigravity | all
curl -fsSL https://raw.githubusercontent.com/notEhEnG/finance-skills/v0.14.3/install.sh | bash -s -- codex
# Required only for live market-data retrieval
python -m pip install "yfinance>=0.2"
The installer is version-pinned, copies an allowlisted payload, and refuses to
overwrite a non-empty skill directory. Add --legacy-alias only if you still
need the older /finance-skills namespace.
| Runtime | Default project path | Invocation |
|---|---|---|
| Claude Code | .claude/skills/finance/ |
/finance ... |
| Codex | .codex/skills/finance/ or CODEX_SKILLS_DIR |
$finance ... |
| Cursor | .cursor/skills/finance/ |
/finance ... |
| Gemini CLI | .gemini/skills/finance/ |
/finance ... |
| Antigravity | .antigravity/skills/finance/ |
/finance ... |
Standalone Python CLI
python -m pip install finance-skills==0.14.3
finance screen --ticker NVDA --format json
finance compare --tickers AMD NVDA --format json
finance explain --topic "free cash flow" --format json
Use --fixture for explicit offline samples. Fixture output is always labelled
as sample data and never substitutes for a failed live request.
How it works
User request
│
▼
finance skill ── route to exactly one workflow reference
│
▼
workflow_cli.py ── provider orchestration + normalization
│
▼
evidence report ── observations + formulas + 29 detector results
│
▼
agent synthesis ── conclusion + tension + limitations + what to watch
The engine owns calculation and provenance. The agent owns interpretation. A number presented as finance-skills output must exist in the current report; external filing facts must be separately sourced and never blended into engine metrics.
The canonical skill router is skill/SKILL.src.md.
Focused workflows live in skill/reference/. The evidence
and state contracts are documented in
docs/redesign-contract.md.
Evidence and safety contract
| Allowed | Blocked |
|---|---|
| Report observations and engine calculations | Numbers recalled or inferred by the model |
| Explicit user assumptions, clearly labelled | Silent estimates or repaired missing values |
| Separately attributed primary-filing facts | External values mixed into engine calculations |
| Conditional valuation language with a stated basis | Unconditional “cheap”, “expensive”, buy, sell, or hold |
| Visible fixture, cache, and partial-data limits | Presenting sample or stale data as live |
Automatic company DCF remains disabled unless every required assumption is explicit. Educational output is not investment advice.
Data sources and limits
- Market data: yfinance, with provider state and retrieval metadata exposed.
- Filings: optional SEC Company Facts reconciliation when
FINANCE_SEC_USER_AGENTcontains a compliant contact string. - Company IR: explicit project-local observations; never scraped or inferred silently.
- Estimates: opt-in and kept separate from reported historical evidence.
- Fixtures: deterministic CRWV/NBIS samples for demos and offline tests.
Market-data providers can be delayed, incomplete, or definitionally inconsistent. Verify material revenue, cash flow, debt, cash, shares, and capex claims against the latest 10-K or 10-Q.
Persistent research
/finance init creates RESEARCH.md and .finance/config.json without
overwriting existing files. track creates immutable company snapshots.
refresh produces a deterministic diff and a reviewable thesis-update proposal
instead of silently rewriting prior research.
Only init, track, and refresh write project state. State paths are confined
to the project and use exclusive or append-only writes.
Evaluation
The public checker evaluates three layers:
| Tier | Examples of what it catches |
|---|---|
| Safe | Unrecognized numbers, recommendation language, hidden disabled analyses |
| Useful | Raw JSON dumps, caveat walls, answers with no analytical substance |
| Synthesized | Draft copying, missing thesis structure, ticker-swappable prose |
See docs/eval.md for the protocol and limitations. It checks
contract adherence, not investment accuracy.
Development
python -m pip install -e ".[dev]"
python -m pytest tests -q --cov=scripts
ruff check scripts tests
mypy scripts
- Contributing:
CONTRIBUTING.md - Security:
SECURITY.md - Releases:
CHANGELOG.md - Engine-report schema:
docs/engine-report.schema.json
License
MIT · Read-only research · Not investment advice
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file finance_skills-0.14.3.tar.gz.
File metadata
- Download URL: finance_skills-0.14.3.tar.gz
- Upload date:
- Size: 160.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07f5f755f83b016235b71cb25cf96159937fe7302ddd2c0c981614e4d9e82b61
|
|
| MD5 |
431fcf48dec78eb170e456c0dcdff7ef
|
|
| BLAKE2b-256 |
05a60392e3801cfe075859dfb8fe04ecaaa674eef7025c3e14b90e280b1ce04d
|
File details
Details for the file finance_skills-0.14.3-py3-none-any.whl.
File metadata
- Download URL: finance_skills-0.14.3-py3-none-any.whl
- Upload date:
- Size: 147.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
757760c1164e39a73b08e94f744ca62027c14f8a3652df5349e889ff2b4a451a
|
|
| MD5 |
172a7a431e5d347e78cd73edaf80db79
|
|
| BLAKE2b-256 |
ff2f3bc155a7edae4dd4c521865f285ba26e3859cbc9a30e9633c3614f739774
|