Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
iofficeai avatar

Officecli Financial Model

  • 26 installs
  • 25.5k repo stars
  • Updated August 4, 2026
  • iofficeai/officecli

Build formula-driven Excel financial models: 3-statement models, DCF valuation, cap tables, and scenario analysis from text assumptions.

About

Builds formula-driven multi-sheet financial models from scratch in Excel, including 3-statement models, DCF valuation, cap tables, and scenario analysis. A developer uses it to generate interconnected financial statements and projections as a single .xlsx.

  • Formula-driven 3-statement models, DCF valuation, cap tables, and scenario analysis
  • Every statement number is a formula referencing the Assumptions sheet

Officecli Financial Model by the numbers

  • 26 all-time installs (skills.sh)
  • +5 installs in the week ending Aug 2, 2026 (Skillselion tracking)
  • Ranked #687 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/iofficeai/officecli --skill officecli-financial-model

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs26
repo stars25.5k
Last updatedAugust 4, 2026
Repositoryiofficeai/officecli

What it does

Build formula-driven Excel financial models: 3-statement models, DCF valuation, cap tables, and scenario analysis from text assumptions.

Files

SKILL.mdMarkdownGitHub ↗

Financial Model Skill

Build formula-driven, multi-sheet financial models from scratch in Excel. Every number on every statement sheet is a formula referencing the Assumptions sheet. Output is a single .xlsx file with interconnected sheets -- Income Statement, Balance Sheet, Cash Flow Statement, and optional valuation or scenario analysis sheets.

---

BEFORE YOU START (CRITICAL)

If `officecli` is not installed:

macOS / Linux

if ! command -v officecli >/dev/null 2>&1; then
    curl -fsSL https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.sh | bash
fi

Windows (PowerShell)

if (-not (Get-Command officecli -ErrorAction SilentlyContinue)) {
    irm https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.ps1 | iex
}

Verify: officecli --version

If officecli is still not found after first install, open a new terminal and run the verify command again.

---

Use When

  • User provides assumptions and asks for financial projections or a financial model
  • User asks for an "income statement", "balance sheet", or "cash flow statement"
  • User asks for DCF valuation, WACC calculation, or discounted cash flow analysis
  • User asks for a cap table, waterfall analysis, or fundraising model
  • User asks for scenario analysis, sensitivity table, debt schedule, or break-even model

Do NOT Use When

User RequestCorrect Skill
CSV data to dashboard / chartsofficecli-data-dashboard
Edit/modify an existing .xlsxofficecli-xlsx (editing.md)
KPI dashboard or metrics summaryofficecli-data-dashboard
1-2 sheet visualization from existing dataofficecli-data-dashboard
Word document or PowerPointofficecli-docx / officecli-pitch-deck

---

What This Skill Produces

A single .xlsx file with 4-10 interconnected sheets:

Sheet TypePurposeKey Characteristic
AssumptionsAll hardcoded inputs in one placeBlue font (0000FF) on every input cell
Income StatementRevenue through Net IncomeAll rows are formulas referencing Assumptions
Balance SheetAssets, Liabilities, EquityMust balance every period; includes check row
Cash Flow StatementOperating, Investing, FinancingEnding Cash must equal BS Cash
DCF / ValuationWACC, FCF, Terminal Value, Equity ValueNamed ranges for key inputs
Sensitivity Table2-variable grid of implied valuesEach cell is a self-contained formula
ScenariosDropdown-driven Base/Bull/BearIF/INDEX formulas reference dropdown
Error ChecksBalance, cash reconciliation, ISERROR scan"ALL CLEAR" or "ERRORS FOUND" summary
Dashboard / ChartsVisual summary of model outputsCharts use cell range references

ALL values on statement sheets are formulas. The only hardcoded numbers are on the Assumptions sheet.

---

Core Concepts

  • Assumptions-First Architecture -- ALL hardcoded inputs go on the Assumptions sheet. Every other sheet references Assumptions. Changing one assumption recalculates the entire model.
  • Financial Color Coding -- font.color=0000FF (blue) for inputs, font.color=000000 (black) for formulas, font.color=008000 (green) for cross-sheet references. Non-negotiable convention.
  • Formula Chain Integrity -- Every derived value traces back to the Assumptions sheet through an unbroken chain of formula references.
  • Error Checking -- Balance checks (Assets = Liabilities + Equity), cash reconciliation (CF ending cash = BS cash), and ISERROR scans on every sheet.
  • Batch-First Workflow -- Use heredoc batch for ALL multi-cell operations, especially cross-sheet formulas. Verify after each batch.

---

Workflow Overview

Phase 1: Understand -- Identify model type (3-statement, DCF, cap table, scenario). Determine which sheets are needed and the formula dependency chain.

Phase 2: Plan -- Map sheet structure, column layout (labels + year columns), and cross-sheet formula dependencies. Define the build order.

Phase 3: Build -- Follow the mandatory 10-step build sequence in creating.md Section A.7. Build in layers: structure, assumptions, formulas (IS then BS then CF), formatting, charts, protection, raw-set, validate.

Phase 4: QA -- Run the QA checklist: validate, formula error scan, cross-sheet verification, balance check, cash reconciliation, chart data check.

Phase 5: Deliver -- Deliver the .xlsx file. Note that formulas recalculate on open (fullCalcOnLoad is set).

---

Quick Reference: Key Warnings

WarningDetail
Sheet names with spaces in CLI paths (REQUIRED)When using officecli get or officecli set with a sheet name that contains spaces (e.g., "Cash Flow", "ARR Waterfall"), the sheet name portion of the path MUST be wrapped in single quotes: officecli get model.xlsx "'/Cash Flow/A1'". Without single quotes, the command fails with Err:509. In JSON batch paths, no extra quoting is needed (the JSON string already handles it).
Cross-sheet ! escapingUse heredoc batch for ALL cross-sheet formulas. Verify with officecli get after each batch.
Batch size limit15-20 ops per batch in resident mode (recommended). 8-12 ops without resident mode.
Batch JSON valuesALL values must be strings: "true" not true, "24" not 24
fullCalcOnLoad + iterateMANDATORY. Use officecli set model.xlsx / --prop calc.fullCalcOnLoad=true --prop calc.iterate=true. Do NOT use raw-set (creates duplicates).
Blue inputs / black formulasfont.color=0000FF on Assumptions inputs, font.color=000000 on all formula cells
Header row background color (REQUIRED)All section header rows MUST have fill set. Use "fill":"1F3864","font.color":"FFFFFF" (dark navy + white text). Header rows without fill fail the Quality Bar check (Q2).
Header row fill MUST cover ALL columns (A:D or A:G)Section header rows (REVENUE, ASSETS, etc.) must apply the dark fill to ALL columns in that row, not just the A-column label cell. If only A is filled, B/C/D columns on that row show black text on a white background — extremely poor readability against the dark header. Correct: {"command":"set","path":"/P&L/A5:D5","props":{"shd":"1F3864","color":"FFFFFF","bold":true}}. Wrong: set only /P&L/A5.
Balance sheet must balanceExplicit check formula: =TotalAssets - TotalLiabilities - TotalEquity must equal 0
Cash reconciliationCF ending cash must equal BS cash for every period
No Excel Data TablesSensitivity tables must be manual formula grids. Each cell is an explicit self-contained formula.
Number format $ quotingUse heredoc batch or single quotes to prevent shell expansion of $
Named ranges requiredDefine for all key assumptions (WACC, growth rates, tax rate). Required for auditability.
Column widthsNo auto-fit. Set explicitly: labels=22-28, numbers=14-18, year headers=12-14
formulacf no font.boldUse fill + font.color only. font.bold causes validation errors.
raw-set orderingactiveTab raw-set MUST be the last command. calcPr uses high-level set / --prop calc.* instead of raw-set.
BS Cash = CF Ending CashBS Cash ALWAYS equals =Cash Flow!B19, including Year 1. Never use cash-as-plug or reference Assumptions directly.
Chart title $ in shellUse heredoc batch for chart titles containing $ to prevent shell expansion.
Freeze panes (REQUIRED on every data sheet)Every sheet with column headers must have freeze panes set (freeze=B2 or freeze=B3). Missing freeze panes is a Hard Rule violation. Apply in Step 8e of build sequence.
Formula cells black font (REQUIRED)All formula cells on statement sheets must have font.color=000000. Omitting this makes the Blue=Input / Black=Formula color convention invisible. Apply in Step 8f of build sequence. Step 8f applies to EVERY formula cell on EVERY statement sheet — Income Statement, Balance Sheet, Cash Flow, Assumptions (roll-forward/output rows), and all auxiliary sheets. Apply by row range for each sheet; do NOT apply to only one sheet or one section.
H8: Summary or Dashboard sheet (REQUIRED)Every financial model output MUST include a Summary or Dashboard sheet containing at least 4 KPI values sourced from the statement sheets (e.g., Revenue, EBITDA, Net Income, Ending Cash, or equivalent). A model delivered without a Summary/Dashboard sheet fails this Hard Rule. Specialized single-purpose models (ARR Waterfall, DCF-only) satisfy this with a dedicated Summary tab. Tab color: 70AD47 (green).

---

Pre-Delivery Checklist

Before delivering the .xlsx file, verify all items:

#CheckHow to Verify
1Freeze panes on every data sheetofficecli get model.xlsx "/Sheet" — confirm freeze property is set
2Formula cells have black font (000000)No CLI command can reliably detect font color. officecli view text does NOT output font color information — any grep-based check against color values is a false negative and always returns 0 lines regardless of actual color. Must verify visually: run officecli view model.xlsx html > preview.html and open in browser, or take a screenshot, and confirm formula cells appear in black. Apply Step 8f to ALL sheets before verifying.
3Input cells have blue font (0000FF)Assumptions sheet cells B:D must be blue
4Header rows fill covers ALL columns (A:D or wider)Screenshot check — no white-background cells in header rows
5Balance Check = TRUE every periodofficecli get model.xlsx "/Balance Sheet/B18" --json
6Cash Reconciliation = TRUE every periodofficecli get model.xlsx "/Cash Flow/B21" --json
7No \! in cross-sheet formulasofficecli get model.xlsx "/Income Statement/B3" — no backslash
8fullCalcOnLoad + iterate setofficecli validate model.xlsx passes
9Year 2+ Beginning ARR = Prior Year Ending ARRNo independent "Opening ARR" input in Assumptions for Year 2+
10Opening Equity = Opening Assets - Opening LiabilitiesBalance Check Year 1 = TRUE (not hardcoded equity value)

---

Known Issues

IssueWorkaround
! escaping in cross-sheet formulasAlways use heredoc batch. Verify with officecli get.
Batch failure at scaleUse resident mode + 15-20 ops per batch. If failure persists, reduce to 8-12. Retry individually as last resort.
Cannot rename sheetsPlan sheet names upfront before creation.
Sensitivity tables are manualEach cell needs an explicit formula. No Excel DATA TABLE support.
Chart series fixed at creationCannot add series later. Plan all series before add.
Formula cached values blankview text shows blank for formula cells. This is normal. Set fullCalcOnLoad.
Waterfall chart totalsCannot mark bars as totals programmatically. Use color convention.
Circular referencesUse <calcPr iterate="1" ...>. Design model to avoid unnecessary circularity.
Chart title $ strippingShell expands $ in --prop title. Use heredoc batch for chart titles with $, or omit $ from titles.
AP formula sign errorAP (Accounts Payable) must be a positive number. If COGS is stored as a negative value, AP formula must negate it: =-COGS*DPO/365. Wrong sign causes NWC overstatement and incorrect Cash Flow direction. See creating.md C.6 WARNING.
#NAME? not detectable by query/validateofficecli query and validate cannot detect runtime #NAME? errors from unquoted sheet names (e.g., P&L!B3). Run screenshot check (creating.md E.8 Step 10) when any sheet name contains &, spaces, or parentheses.

---

Adjustments After Creation

When the user requests changes after the model is built:

RequestCommand
Swap two sheetsofficecli swap model.xlsx '/Sheet1' '/Sheet2'
Move a sheet after anotherofficecli move model.xlsx '/Scenarios' --after '/Assumptions'
Edit a cell valueofficecli set model.xlsx '/SheetName/A1' --prop value="..."
Find & replace textofficecli set model.xlsx / --prop find=OldText --prop replace=NewText
Remove a rowofficecli remove model.xlsx '/SheetName/row[N]'

---

Full Guide

Read creating.md and follow it step by step. It contains setup conventions, core financial statement patterns, advanced patterns (DCF, sensitivity, scenarios), chart recipes, QA checklist, and known issues with workarounds.

References

  • creating.md -- Complete financial model creation guide
  • xlsx SKILL.md -- General xlsx reading, editing, and QA reference
  • data-dashboard creating.md -- Batch syntax, chart presets, and CF basics

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.