Releases: notEhEnG/finance-skills
Release list
v0.12.0 — §4b comparisons, eval pinning, agent-framed live demo
Added
- Agent-framed live demo.
docs/demo.gifnow shows three real agent sessions —[Claude Code] ❯ Is NBIS a buy?,[Codex] ❯ compare AMD and NVDA,[Antigravity] ❯ should I sell everything…(refused) — against live yfinance data, with the python plumbing hidden. Rendered deterministically fromdocs/demo.tape(charmbracelet/vhs); ademo.ymlworkflow re-renders on tape/renderer changes so the README demo can never drift from the code. - Contract↔eval pinning tests. Synthetic §4a/§4b-shaped answers must score clean through
synthesis_checks, so SKILL.md phrasing and the eval regexes can no longer drift apart silently.
Changed
- §4a leads with the bottom line (direct conditional view before the evidence table); new §4b comparison shape: bottom line → side-by-side table → interpretation by dimension → winner by category (never a universal winner beyond the evidence) → what decides the debate; new Tone section — no hype, no caveat walls, prefer "cannot conclude" over fake precision; SKILL.md opens with the epigraph: "The engine calculates. You think."
Fixed
- Code-review findings #1–#5 (eval/contract drift):
_WATCHmatches §4b's "what decides the debate"; compare intent weighs via per-dimension_COMPARE_TENSION; epigraph scopes no-verbatim-draft tookstatus (never restyle a refusal); §4b ordering clarified; §4a setup re-anchored to report regime/metrics.
🤖 Generated with Claude Code
v0.11.0 — numbers live in tables, argument lives in prose
Changed
- Evidence renders as a
Metric | Value | Readtable. Single-ticker draft evidence is now a scannable markdown table (flags stay as bullets beneath); the evidence block joins with single newlines so tables survive the draft's paragraph join. Comparisons keep the side-by-side 🏆 per-ticker table. - New formatting rule in the agent contract (SKILL.md §4a + agent-policy): numbers live in tables, argument lives in prose — the agent must keep the evidence table in its synthesis rather than dissolving it into paragraphs.
- README rewritten around the differentiators: five-strength section, fact-layer → analyst-layer architecture diagram, shipped/next/later roadmap ("depth in verticals where invented numbers are most dangerous, before breadth").
- gitignore hygiene:
.codex/, OS/editor noise,node_modules/,.env*.
🤖 Generated with Claude Code
v0.10.0 — synthesis eval tier: safe → useful → synthesized
Added
- Synthesis eval tier.
agent_eval.synthesis_checksscores the 0.9.0 analyst-layer contract:courier_verbatim_draft(reply isanswer_draftpasted verbatim, similarity ≥ 0.90), missing §4a conditional-thesis / weighed-tension / watch-item structure, andinsufficient_report_evidence— the automated ticker-swap proxy (< 2 report-specific figures = generic answer).score_answernow grades three axes: safe → useful → synthesized. docs/eval.md: synthesis-tier table, the manual ticker-swap protocol, and a per-agent publishing template (Claude Code / Codex / Antigravity).- README: competitor-class comparison — prompt-only skills, web-search analysts, and API wrappers vs. this skill's fact-layer + analyst-layer split.
Fixed
agent_eval.score_answerno longer forwardsintent/statusintohard_fail_checks(latentTypeErrorfor any caller passing them).
🤖 Generated with Claude Code
v0.9.0 — analyst-layer agent contract
Changed
- Agent contract: fact layer → analyst layer.
answer_draftis now the evidence floor, not the final reply: agents write their own synthesis on top of the engine report — weigh conflicting signals, connect flags to consequences, state what would change the picture — with every number still traceable to the report.SKILL.md§0 rewritten; new §4a conditional-thesis shape for "is X a buy?" questions (setup → bull case → bear case → conditional screen → what to watch → boundary), including the ticker-swap self-check. next_actionrenamedrespond_with_answer_draft→respond_with_synthesis;agent_instructionsnow mandates analyst synthesis instead of paste-with-polish. Guardrails unchanged: no invented numbers, no unconditional buy/sell/hold, fixture/disabled disclosures must survive.docs/agent-policy.md: pastinganswer_draftverbatim is now an explicit failure mode ("courier behavior, not analysis").- README: new positioning — deterministic engine for the numbers, your agent (Claude Code / Codex / Antigravity) for the argument.
Fixed
install.shno longer recursively copies prior installs —.claude/.antigravity/.codex,dist,build,*.egg-info, and venvs are excluded from the skill payload.
🤖 Generated with Claude Code
v0.8.1 — robust ask/doctor error handling
pip install --upgrade finance-skills · https://pypi.org/project/finance-skills/0.8.1/
Robustness fixes from a HIGH-effort code review of the routing/answer path (all deterministic, no LLM):
Fixed
askno longer masks errors —--explainnow feature-detects aflagskwarg instead of a catch-and-retryexcept TypeError, so a realTypeErrorinside a builder surfaces instead of being swallowed.askunexpected exceptions are debuggable — the catch-all prints a traceback to stderr and tags the draft with the exception type, so a code bug is distinguishable from a legitimate "data unavailable".doctorimport guarded —load_fixtureuses thefinance_skills.data/data__package__shim like the rest of the module, no longer relying on sibling-modulesys.pathpollution when installed.
Gates: ruff + mypy clean, 216 tests (52 subtests). Verified on a wheel install: doctor + ask one-shot work, --explain still reaches valuation.
Read-only research; not investment advice.
v0.8.0 — scannable table + emoji output
pip install --upgrade finance-skills · https://pypi.org/project/finance-skills/0.8.0/
Added
- Scannable table + emoji output for multi-ticker views:
compareandwatchlist run compare|rankrender a bold Metric header with 🏆 per-row leaders;screenhighlights per-field leaders — much faster to eyeball the contrast.
Fixed
- Lint/type hygiene: removed an unnecessary list comprehension (
screen) and unusedtype: ignorecomments (ask); the.antigravity/skill-install copy is now gitignored.
Gates: ruff + mypy clean, 216 tests (52 subtests). Clean-venv wheel install verified across every verb including export and watchlist.
Read-only research; not investment advice.
v0.7.0 — ask + answer_draft
finance-skills 0.7.0
Agents get a finished analysis, not a multi-script JSON dump.
Highlights
askone-shot (finance-skills ask "…",scripts/ask.py): route → engine →answer_draftstop_tool_loop: agent should send the draft and stop chaining scriptsdoctor: detects stale site-packages vs skill scripts- SKILL.md happy path rewritten around one command
- Usefulness checks so empty caveat walls fail soft quality
- Lowercase tickers (
is nbis a buy?→ NBIS) without false clarification
Install
# Skill (agent)
curl -fsSL https://raw.githubusercontent.com/notEhEnG/finance-skills/main/install.sh | bash -s -- claude
# CLI
pip install -U finance-skills
finance-skills ask "is CRWV a buy?" --fixture
finance-skills doctorChangelog
See CHANGELOG.md for full notes.
v0.6.0
finance-skills 0.6.0
Solid agent-middleware release (not another positioning patch).
Highlights
- Hard gate: no financial numbers without `route --json` + engine `--json` this turn
- `engine_report` on brief, valuation, redflags, health, company, analyze JSON
- Public eval (docs/eval.md) — 20 bare-vs-skill prompts
- Transcript hard-fail tests — invent number / buy language / hide disabled DCF / fixture-as-live
- Demo GIF — route → fixture → no-buy answer
- README: yfinance/10-K data quality first; MCP = not shipped; audience = agent builders
pip install -U finance-skillsv0.5.3
finance-skills 0.5.3
Agent middleware release (P0–P2): close the skill-layer gap so agents cannot casually invent numbers or give personal buy/sell advice.
Added
- Strict SKILL.md + docs/agent-policy.md (activation MUST/MUST NOT, sole-source numbers, response order, refuse personal advice, untrusted data)
route_request()/route --json— deterministic intent + tickers (learn,refuse, secondary risk on compare)- EngineReport envelope on
brief --json(engine_reportwith disabled analyses, response_guidance, fixture state) - 40+ routing tests + schema tests
Install
pip install -U finance-skills
# or skill install — see README
python3 scripts/router.py route --json "Is CRWV a buy?"Not investment advice. Read-only.
v0.5.2
finance-skills 0.5.2
Positioning release: README rewritten as an AI agent financial skill.
- Problem-first hero: stop agents inventing stock numbers
- Deterministic engine + fail-closed missing data
- vs ChatGPT / vs raw MCP tables
- Aimed at Claude Code, Codex, Cursor, AI engineers
pip install -U finance-skills