3-Statements-Ultra — IPO / Equity Research-Grade Financial Modeling
Builds an institutional-grade three-statement model (IS/BS/CF) in Excel from scratch — full formula linkage, zero hardcoded cells, multi-gate QC.
Evidence shows all computation happens locally via Excel/openpyxl with no hidden data exfiltration; the NotebookLM OAuth path is optional and clearly explained; MARKET_GATE forces explicit user confirmation of listing venue; hooks are self-gated to this skill's context only. Deducted for: reliance on unofficial third-party notebooklm-py (undocumented Google APIs) and yfinance/Sina web scraping with no rollback/failure guidance; unknown license metadata; unverified publisher (not itself a deduction, but attribution chain incomplete). Full marks not awarded because data-flow disclosure and recovery mechanisms are incomplete.
Evidence shows internally consistent design: Rule Zero, session startup protocol, _State/JSON sidecar persistence, four self-gated hooks, per-session gates, and concrete diagnosable failure messages (e.g., granularity guard stderr with fix commands). Deducted for: static ceiling of 10; core scripts (qc_suite.py, preflight_check.py, per_session_gate.py, state_io.py) are not present in the evidence so key paths cannot be confirmed; gate-spec.md admits QC-1/3/4/5/6 etc. are unimplemented stubs; no committed test suite or CI evidence.
Evidence shows clear bilingual trigger words, an explicit non-fit boundary (template-filling redirected to financial-analysis:3-statements), US/A-share/HK coverage with three accounting standards, and user confirmation of granularity. Deducted for: NLM path depends on Google OAuth possibly unreachable from mainland China (Excel/web fallback exists, so not fatal); SKILL.md is truncated in evidence, and some boundary behavior depends on reference files not provided.
Evidence shows well-layered docs (SKILL.md → references/), versioning (v6.0), changelog, FAQ, pitfall index, install instructions and symlink-based update path. Deducted for: unknown license; the scripts/ directory promised by README is not in evidence so deliverable naming cannot be confirmed; maintenance responsibility rests solely on a personal repo with no explicit governance statement.
Evidence shows a clearly specified output (formula-linked 3-statement Excel) and concrete comparative arguments vs the official skill (no Cash plug, per-segment revenue, CN GAAP R8, NCI roll-forward), supporting real marginal value. Deducted for: static ceiling of 7; no executed reproduction or representative output verifiable; the claimed 38/39 PASS on a representative model is author-asserted; the 5-session, 1-2 hour cost is proportionally high and unproven.
Evidence shows auditable hook source code, QC schema, and pitfall index with reasonable fact/design separation. Deducted for: static ceiling of 5; all execution claims (38/39 PASS, QC pass rates, hook hit rates) lack third-party or CI corroboration; missing core scripts make conclusions not independently reproducible.
- Static review only: no code was executed; reliability conclusions rest on source reading with low confidence.
- Core scripts referenced by README/SKILL.md (qc_suite.py, preflight_check.py, per_session_gate.py, state_io.py) are not present in the evidence; verify their existence and usability after install.
- gate-spec.md explicitly admits several QC items are unimplemented stubs — do not assume all 19 QCs are functional.
- The NotebookLM path depends on Google OAuth and the unofficial notebooklm-py package (undocumented APIs); likely unreachable from mainland-China networks — prefer the Excel upload path.
- License metadata is unknown; confirm terms before commercial use.
- The skill instructs users to modify global CLAUDE.md/preferences to inject a recovery protocol; do so knowingly.
What does this skill do, and when should you use it?
This is an Agent Skill built for serious financial work: it constructs a complete three-statement model across roughly 5 independent sessions (1–2 hours total). Its core constraint is 'Rule Zero': every forecast cell must be an Excel formula string, never a hardcoded number. It supports CN GAAP, IFRS, and US GAAP, with quarterly columns forced for US/A-share names and semi-annual for HK names. Since v5.0 it ships a 19-check QC suite, 4 preventive hooks, and per-session gate markers; v6.0 adds segment-level Revenue_Build. State persists via three sidecar files (state., _model_log.md, _pending_links.), enabling precise recovery after interruptions or context compaction.
The skill ingests user-supplied data sources (a structured Excel of historical IS/BS/CF, a NotebookLM notebook, or web data from Sina/Yahoo Finance) and uses openpyxl to build Excel tabs one section at a time: Raw_Info (historical extraction), Assumptions (forecast drivers), optional Revenue_Build (volume × price), the IS/BS/CF statements, Returns (ROE/ROA/ROIC/DuPont), Cross_Check, Summary, and a _Registry data-lineage sheet. Historical cells link via =Raw_Info! references; forecast cells reference the Assumptions tab or same-sheet ↳ mirror rows. BS Cash stays a placeholder through Session C and is back-filled from CF Ending Cash in Session D. Each code block is capped at 400 lines and executed immediately, with key results checkpointed to _model_log.md for cross-session validation. Each session ends with per_session_gate.py, which writes a durable GATE marker only when its QC subset has zero BLOCKERs.
- Sell-side or buy-side analysts building a three-statement model for a US, A-share, or HK-listed company destined for an IC memo or initiating-coverage note
- Investment banking professionals preparing prospectus or roadshow materials that need auditable, formula-linked forecasts
- Analysts with only annual-report PDFs or a NotebookLM notebook who want to build incrementally across sessions without losing state
- CN GAAP companies with line items (other operating income, impairment losses) absent from IFRS/US GAAP, needing the native template and R8 plug
- Multi-segment companies requiring volume × price revenue builds strictly wired into the income statement (R12)
- Quick back-of-envelope models — for which the official financial-analysis:3-statements skill is the better fit
What are this skill's strengths and limitations?
- Rule Zero hardcode ban plus preventive hooks means changing any assumption recalculates the whole model
- 19 QC checks with BLOCKER/WARNING severity tiers and per-session gates — the model cannot be marked complete while failing
- Native CN GAAP support including the R8 plug reconciling 营业利润
- Three sidecar files plus durable GATE markers give reliable cross-session and cross-compaction recovery
- Mandatory market-granularity gate (US/A-share quarterly, HK semi-annual) prevents the most common structural mistake
- Built-in _Registry data lineage — every number traces to a source and formula
- High build cost: ~1–2 hours across 5–6 sessions; unsuitable for quick rough-cut models
- NotebookLM integration relies on the unofficial notebooklm-py client against undocumented Google APIs that may break without notice
- No license declared in the repository — confirm terms before commercial use
- Preventive hooks are Claude Code-only (PreToolUse hooks); other clients get only the detective QC layer
- Uploading full annual-report PDFs is extremely token-hungry, a real pain point for Claude Pro users
- No independent test suite or third-party validation in the source material — quality claims come from the project's own docs
How do you install this skill?
Requires Python 3.9+. Install dependencies: pip install openpyxl yfinance pandas (plus pip install "notebooklm-py[browser]" && playwright install chromium if using NotebookLM as a data source). Recommended Claude Code install via symlink: git clone https://github.com/willpowerju-lgtm/3-statement-ultra-for-finance.git, then ln -s "$PWD/3-statements-ultra" ~/.claude/skills/3-statements-ultra (Windows PowerShell needs admin or Developer Mode, using New-Item -ItemType SymbolicLink). Alternatively copy the 3-statements-ultra folder into ~/.claude/skills/, or install the bundled 3-statements-ultra-public.skill zip in Cowork via Settings → Skills → Install from file. The repo declares no license.
How do you use this skill?
After installing, first paste the README's 'Compaction Recovery Protocol' into ~/.claude/CLAUDE.md or your client's custom instructions to prevent state loss on compaction. Then trigger with phrases like "build a 3-statement model for Tencent (0700.HK)" or 「建个三表模型」. The skill first runs MARKET_GATE, asking the listing venue (US / A-share / HK / dual-listed) to lock report granularity; then it guides you through choosing a data source (ideally a 3–5 year structured historical IS/BS/CF Excel, or a configured NotebookLM notebook). The build runs across 5 sessions (A data extraction + assumptions, B income statement, C balance sheet, D cash flow + back-fill, E returns + summary), each independent and resumable — state. and the checkpoint log auto-restore the last completed step. If using NotebookLM, do the one-time OAuth flow up front (~5 minutes; session lasts ~7 days).
How does this skill compare with similar options?
The README contrasts this skill with the official financial-analysis:3-statements skill: the official one is fast (single session, good for populating existing templates) but plugs Cash as a BS residual, treats revenue as a single line, permits hardcoded forecast cells, has no CN GAAP handling, and has no QC gate. This skill instead enforces Cash = CF Ending Cash, per-segment drivers, 100% formulas, native CN GAAP, and 19 QC checks — at the cost of 5 sessions and ~1–2 hours. The author's guidance: use the official skill for a 20-minute rough model; use this one when the numbers will actually be scrutinized.