Skill metadata
Reference: full SKILL.md
The following is the complete skill definition that Mibyan loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.
excel-author
Produce an .xlsx file on disk usingopenpyxl. Follow the banker-grade conventions below so the model is auditable, flexible, and reviewable by someone other than the person who built it.
Adapted from Anthropic’s xlsx-author and audit-xls skills in the anthropics/financial-services repo. The MCP / Office-JS / Cowork-specific branches of the originals are dropped — this skill assumes headless Python.
Output contract
- Write to
./out/<name>.xlsx. Create./out/if it does not exist. - Return the relative path in your final message so downstream tools can pick it up.
- One logical model per file. Do not append to an existing workbook unless explicitly asked.
Setup
Core conventions (non-negotiable)
Blue / black / green cell color
- Blue (
Font(color="0000FF")) — hardcoded input a human entered. Revenue drivers, WACC inputs, terminal growth, market data. - Black (default) — formula. Every derived cell is a live Excel formula.
- Green (
Font(color="006100")) — link to another sheet or external file.
Formulas over hardcodes
Every calculation cell MUST be a formula string, never a number computed in Python and pasted as a value.- Raw historical inputs (actual revenues, reported EBITDA, etc.)
- Assumption drivers the user is meant to flex (growth rates, WACC inputs, terminal g)
- Current market data (share price, debt balance) — with a cell comment documenting source + date
Named ranges for cross-sheet references
Use named ranges for any figure referenced from another sheet, a deck, or a memo.Balance checks tab
Include aChecks tab that ties everything and surfaces TRUE/FALSE:
- Balance sheet balances (assets = liabilities + equity)
- Cash flow ties to period-over-period cash change on the BS
- Sum-of-parts ties to consolidated totals
- No rogue hardcodes inside calc ranges
Cell comments on every hardcoded input
Add the comment AS you create the cell, not later.Source: [System/Document], [Date], [Reference], [URL if applicable].
Never defer sourcing. Never write TODO: add source.
Skeleton: typical financial model
Section headers with merged cells
openpyxl quirk: when you merge, set the value on the top-left cell and style the full range separately.Sensitivity tables
Build with loops, not hardcoded formulas per cell. Rules:- Odd number of rows/cols (5×5 or 7×7) — guarantees a true center cell.
- Center cell = base case. The middle row/col header must equal the model’s actual WACC and terminal g so the center output equals the base-case implied share price. That’s the sanity check.
- Highlight the center cell with medium-blue fill (
"BDD7EE") and bold. - Populate every cell with a full recalculation formula — never an approximation.
Recalculating before delivery
openpyxl writes formula strings but does not compute them. Excel recalculates on open, but downstream consumers (auto-check scripts, CI) need computed values. Run LibreOffice or a dedicated recalc step before delivery:scripts/recalc.py in this skill).
Model layout planning
Before writing any formula:- Define ALL section row positions
- Write ALL headers and labels
- Write ALL section dividers and blank rows
- THEN write formulas using the locked row positions
Verify step-by-step with the user
For large models (DCFs, 3-statement, LBO), stop and show the user intermediate artifacts before continuing. Catching a wrong margin assumption before you’ve built downstream sensitivity tables saves an hour. Checkpoint pattern:- After Inputs block → show raw inputs, confirm before projecting
- After Revenue projections → confirm top line + growth
- After FCF build → confirm the full schedule
- After WACC → confirm inputs
- After valuation → confirm the equity bridge
- THEN build sensitivity tables
When NOT to use this skill
- Users in a live Excel session with an Office MCP available — drive their live workbook instead.
- Pure tabular data export with no formulas —
csvorpandas.to_excelis simpler. - Dashboards / charts with heavy interactivity — use a real BI tool.

