Skip to content

Releases: notEhEnG/finance-skills

v0.12.0 — §4b comparisons, eval pinning, agent-framed live demo

Choose a tag to compare

@notEhEnG notEhEnG released this 12 Jul 07:33

Added

  • Agent-framed live demo. docs/demo.gif now 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 from docs/demo.tape (charmbracelet/vhs); a demo.yml workflow 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): _WATCH matches §4b's "what decides the debate"; compare intent weighs via per-dimension _COMPARE_TENSION; epigraph scopes no-verbatim-draft to ok status (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

Choose a tag to compare

@notEhEnG notEhEnG released this 12 Jul 04:43

Changed

  • Evidence renders as a Metric | Value | Read table. 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

Choose a tag to compare

@notEhEnG notEhEnG released this 11 Jul 19:14

Added

  • Synthesis eval tier. agent_eval.synthesis_checks scores the 0.9.0 analyst-layer contract: courier_verbatim_draft (reply is answer_draft pasted verbatim, similarity ≥ 0.90), missing §4a conditional-thesis / weighed-tension / watch-item structure, and insufficient_report_evidence — the automated ticker-swap proxy (< 2 report-specific figures = generic answer). score_answer now 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_answer no longer forwards intent/status into hard_fail_checks (latent TypeError for any caller passing them).

🤖 Generated with Claude Code

v0.9.0 — analyst-layer agent contract

Choose a tag to compare

@notEhEnG notEhEnG released this 11 Jul 18:49

Changed

  • Agent contract: fact layer → analyst layer. answer_draft is 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_action renamed respond_with_answer_draftrespond_with_synthesis; agent_instructions now 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: pasting answer_draft verbatim 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.sh no 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

Choose a tag to compare

@notEhEnG notEhEnG released this 11 Jul 02:06

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

  • ask no longer masks errors--explain now feature-detects a flags kwarg instead of a catch-and-retry except TypeError, so a real TypeError inside a builder surfaces instead of being swallowed.
  • ask unexpected 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".
  • doctor import guardedload_fixture uses the finance_skills.data / data __package__ shim like the rest of the module, no longer relying on sibling-module sys.path pollution 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

Choose a tag to compare

@notEhEnG notEhEnG released this 11 Jul 01:33

pip install --upgrade finance-skills · https://pypi.org/project/finance-skills/0.8.0/

Added

  • Scannable table + emoji output for multi-ticker views: compare and watchlist run compare|rank render a bold Metric header with 🏆 per-row leaders; screen highlights per-field leaders — much faster to eyeball the contrast.

Fixed

  • Lint/type hygiene: removed an unnecessary list comprehension (screen) and unused type: ignore comments (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

Choose a tag to compare

@notEhEnG notEhEnG released this 10 Jul 22:45

finance-skills 0.7.0

Agents get a finished analysis, not a multi-script JSON dump.

Highlights

  • ask one-shot (finance-skills ask "…", scripts/ask.py): route → engine → answer_draft
  • stop_tool_loop: agent should send the draft and stop chaining scripts
  • doctor: 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 doctor

Changelog

See CHANGELOG.md for full notes.

v0.6.0

Choose a tag to compare

@notEhEnG notEhEnG released this 10 Jul 22:14

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-skills

v0.5.3

Choose a tag to compare

@notEhEnG notEhEnG released this 10 Jul 21:58

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_report with 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

Choose a tag to compare

@notEhEnG notEhEnG released this 10 Jul 21:29

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