Finance & Investment Banking financial-modelingthree-statement-modelexcelopenpyxlcn-gaapifrsus-gaapequity-researchqc-validationrevenue-forecasting

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.

FollowSkills review · FSRS-2.0
Use with care
55/ 100 5-point scale 2.8 / 5
1 2 3 4 5 6
1Trust15 / 25 · 3.0/5

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.

2Reliability10 / 20 · 2.5/5

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.

3Adaptability11 / 15 · 3.7/5

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.

4Convention9 / 15 · 3.0/5

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.

5Effectiveness6 / 15 · 2.0/5

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.

6Verifiability4 / 10 · 2.0/5

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.

Evidence confidence:Low Reviewed Sep 10, 2026 Reviewed revision 4afeacd6469e
Before you use it
  • 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.
See the full review method →

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.

  1. 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
  2. Investment banking professionals preparing prospectus or roadshow materials that need auditable, formula-linked forecasts
  3. Analysts with only annual-report PDFs or a NotebookLM notebook who want to build incrementally across sessions without losing state
  4. CN GAAP companies with line items (other operating income, impairment losses) absent from IFRS/US GAAP, needing the native template and R8 plug
  5. Multi-segment companies requiring volume × price revenue builds strictly wired into the income statement (R12)
  6. 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?

Pros
  • 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
Limitations
  • 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.

FAQ

Can I use this without NotebookLM?
Yes. NotebookLM is optional. Without it the skill falls back to web data (Sina / Yahoo Finance), or you can upload a structured Excel with 3–5 years of historical IS/BS/CF — the README's recommended first-choice source with the lowest token cost.
Will I lose progress if I close the chat mid-build?
No. Every executed code block writes a progress marker; state lives in state., _model_log.md, and _pending_links.. Each session's startup protocol locates the last completed step and resumes from there.
Is it normal that BS CHECK ≠ 0 after Session C?
Yes, by design. BS Cash is a placeholder (0) until Session D back-fills it from CF Ending Cash. Do not force-balance the balance sheet in Session C.
Could context compaction corrupt the model?
That is the skill's primary defended failure mode. The recommended mitigation is pasting the README's Compaction Recovery Protocol into your custom instructions, which forces re-reading SKILL.md, state., the log, and pending links after compaction, with H1/H2 hooks blocking hardcodes and stale row numbers.

Related skills