skills/financial-statement-analyzer/SKILL.md
Reads and normalizes a company's financial statements to extract clean valuation inputs. Performs accounting adjustments including R&D capitalization, operating lease conversion to debt, stock-based compensation treatment, and one-time item normalization. Computes FCFF, FCFE, and key financial ratios. Use when preparing financials for valuation, cleaning accounting data, computing free cash flows, analyzing financial ratios, or when user mentions financial statements, FCFF, FCFE, ROIC, R&D capitalization, or operating lease adjustment.
npx skillsauth add lyndonkl/claude financial-statement-analyzerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Scenario: Technology company -- $2B revenue, $500M R&D, $100M annual operating lease payments
Raw financials (as reported):
Adjustment 1 -- R&D capitalization (5-year asset life):
| Year | R&D Spend | Amortization (1/5) | |------|-----------|-------------------| | Current | $500M | $100M | | Year -1 | $450M | $90M | | Year -2 | $400M | $80M | | Year -3 | $350M | $70M | | Year -4 | $300M | $60M |
Adjustment 2 -- Operating lease conversion:
Adjusted financials:
Ratio dashboard:
| Ratio | Reported | Adjusted | |-------|----------|----------| | Operating margin | 30.0% | 35.7% | | ROIC | 12.9% | 10.6% | | Debt-to-capital | 20.0% | 28.5% | | Reinvestment rate | 14.9% | 28.0% |
The adjustments reveal that the company reinvests more heavily than reported figures suggest (R&D is investment, not expense) and carries more leverage once lease obligations are recognized as debt.
Copy this checklist and track progress:
Financial Statement Analysis Progress:
- [ ] Step 1: Collect raw financial statements
- [ ] Step 2: Identify and apply accounting adjustments
- [ ] Step 3: Compute free cash flows (FCFF and FCFE)
- [ ] Step 4: Calculate key financial ratios
- [ ] Step 5: Compare to industry benchmarks
- [ ] Step 6: Validate and document
Step 1: Collect raw financial statements
Gather the three statements: income statement, balance sheet, and cash flow statement. Record at least two years for trend analysis. See resources/template.md for data input fields.
Step 2: Identify and apply accounting adjustments
Determine which adjustments apply based on company characteristics. See resources/methodology.md for step-by-step procedures for each adjustment type.
See resources/template.md for adjustment documentation format.
Step 3: Compute free cash flows
Calculate both FCFF and FCFE from adjusted figures. Verify they reconcile. See resources/methodology.md for detailed formulas and reconciliation.
Step 4: Calculate key financial ratios
Compute ratios from adjusted financials for a consistent picture. See resources/template.md for the full ratio dashboard.
Step 5: Compare to industry benchmarks
Place the company's adjusted ratios in context. See Quick Reference for benchmark ranges by sector.
Step 6: Validate and document
Review completeness and consistency. Validate using resources/evaluators/rubric_financial_statement_analyzer.json. Minimum standard: average score of 3.5 or above.
Pattern 1: Tech Company (Heavy R&D)
Pattern 2: Capital-Heavy Company (Leases and CapEx)
Pattern 3: Financial Services Company
special-situations-valuation skill handles this in depth.Pattern 4: Cyclical Company (Earnings Normalization)
R&D capitalization asset life: Use industry-appropriate asset lives. Software and internet: 2-3 years. Consumer products: 5-7 years. Pharmaceuticals: 8-10 years. Using the wrong life distorts both the research asset and adjusted income.
Operating lease discount rate: Discount future lease commitments at the pre-tax cost of debt, not WACC. The lease obligation is debt-like, so the discount rate should reflect the company's borrowing cost.
Separate operating from non-operating items: Cash and marketable securities are non-operating assets. Minority interests and cross-holdings need separate treatment. Do not mix operating and financial assets when computing invested capital.
Tax rate selection: Use marginal tax rate for FCFF computation (forward-looking). Use effective tax rate for historical ratio analysis. If the two diverge significantly, investigate why (tax loss carryforwards, foreign income, tax credits).
FCFF and FCFE reconciliation: FCFE should equal FCFF minus after-tax interest expense plus net debt issuance. If the two do not reconcile, there is an error in the computation. Check for missed items.
Stock-based compensation is a real cost: SBC reduces the value of existing shares through dilution. Do not add it back to compute "adjusted" earnings or cash flow. Treat it as an operating expense in the income statement.
Recurring "non-recurring" items: If a company reports restructuring charges in three of the past five years, these are not genuinely one-time. Normalize by averaging rather than excluding. Truly non-recurring items include asset write-downs from specific events, litigation settlements, and natural disaster impacts.
Document every adjustment: Each adjustment should include the pre-adjustment value, the post-adjustment value, and the rationale. This makes the analysis reproducible and allows others to disagree with specific adjustments without discarding the entire analysis.
Key formulas:
FCFF = After-tax Operating Income - (CapEx - Depreciation) - Change in Non-cash WC
FCFE = Net Income - (CapEx - Depreciation) - Change in WC - (Debt Repaid - Debt Issued)
Reinvestment Rate = (Net CapEx + Change in WC) / After-tax Operating Income
ROIC = After-tax Operating Income / Invested Capital
ROE = Net Income / Book Value of Equity
Debt-to-Capital = Total Debt / (Total Debt + Market Value of Equity)
Interest Coverage = EBIT / Interest Expense
Sales-to-Capital = Revenue / Invested Capital
R&D Capitalization:
Research Asset = Sum of unamortized R&D from past N years
Adjusted Operating Income = Reported OI + Current R&D - Total Amortization
Operating Lease Conversion:
Lease Debt = PV of future lease commitments at pre-tax cost of debt
Adjusted EBIT = Reported EBIT + Lease Expense - Depreciation of Lease Asset
Ratio benchmarks by sector (approximate medians):
| Metric | Tech | Industrial | Consumer | Healthcare | |--------|------|-----------|----------|------------| | Operating margin | 20-25% | 10-15% | 8-12% | 15-20% | | ROIC | 15-25% | 10-15% | 12-18% | 12-20% | | Debt-to-capital | 10-20% | 25-35% | 20-30% | 15-25% | | Reinvestment rate | 40-60% | 30-50% | 25-40% | 35-55% | | Sales-to-capital | 1.5-2.5 | 1.0-1.5 | 1.5-2.0 | 1.0-1.5 |
Key resources:
Inputs required:
Outputs produced:
testing
Cluster a conference's event records into a small set of coarse themes with finer sub-clusters, an explicit outlier bucket, and soft (multi-membership) affinities — using the hybrid embed-then-label pipeline (embed abstracts, reduce, density-cluster, then LLM-label the clusters) when embedding libraries are available, and an LLM-reasoned hierarchical fallback when they are not. Embeddings do the grouping; the LLM only names the groups. Conference-agnostic. Use when turning structured event records into a navigable theme map for preference elicitation and scheduling, when you need 6-8 reasonable themes rather than 20 muddy ones, or when overlapping talks must belong to more than one theme. Trigger keywords - theme clustering, cluster talks, embed then label, soft membership, outlier talks, conference themes, topic map.
development
Build a personal conference schedule as a constraint-optimization problem — hard constraints (no time overlap, room-to-room travel time, capacity/registration, the attendee's own must-attends and blackouts) plus a user-owned weighted objective trading interest against breadth, pacing (maximize contiguous free time), and serendipity. Surfaces unbreakable conflicts (two high-value overlapping talks the model cannot rank) as decisions for the human rather than silently picking, and reports what each choice traded away. Conference-agnostic. Use to turn a preference profile plus a theme map into a day-by-day plan, to resolve overlapping sessions, or to balance a packed vs paced schedule. Trigger keywords - schedule optimization, conference schedule, constraint optimization, overlapping talks, contiguous free time, conflict surfacing, packed vs paced.
development
Parse a heterogeneous conference program (markdown, HTML, PDF-derived text, or JSON) into normalized event records with per-field confidence scores and independent classification axes (topic, depth, format, prerequisites, recorded, capacity). Detects the program's format before extracting, treats every inferred field as uncertain (present vs inferred vs missing), and flags thin or missing abstracts so downstream enrichment can target them. Conference-agnostic. Use when ingesting a conference or event schedule into a structured store, normalizing a talk/session list, or extracting per-session metadata with calibrated confidence. Trigger keywords - program ingestion, parse schedule, session extraction, event records, conference program, talk metadata, per-field confidence.
development
Build a personalized preference profile from a small number of well-chosen, cluster-grounded questions instead of a long survey. Represents the person's interests as an uncertainty region over the theme map, picks the single highest-information-gain choice-based question (contrasting real talks from different clusters), balances exploiting known interests against exploring uncertain ones, deliberately injects outlier probes to fight selection bias, and stops as soon as the schedule would be stable. Also elicits the user-owned objective weights and hard constraints. Interactive — runs where it can actually ask the person. Conference-agnostic. Use to turn a theme map into a preference profile, to decide what to ask a conference attendee, or to elicit scheduling priorities. Trigger keywords - preference elicitation, ask few questions, information gain, choice-based questions, selection bias probe, objective weights, attendee preferences.