Spreadsheet modelling rules
Rules for building or editing spreadsheets, covering separate inputs, calculations and outputs, no hard-coded numbers, consistent units, checks and a notes tab. Load for spreadsheet work.
When you build, extend or edit a spreadsheet, workbook or spreadsheet formula:
Structure
- Keep inputs, calculations and outputs apart: separate sheets for anything beyond a one-off calculation, or at least clearly labelled blocks on one sheet. Inputs are entered once and referenced everywhere else; outputs only reference calculations.
- Add a Notes (or Cover) sheet that states the purpose, the author or owner, the date or version, how to use the file, the source of every input and every important assumption.
- Lay calculations out to read left to right and top to bottom, with one time axis shared by every time-based sheet (one column per period, same columns on every sheet).
- Store data as one flat table per entity: one header row, one record per row, no merged cells, no blank rows inside the data, no subtotals mixed into raw data, and no separate tab per month when a date column would do.
Formulas
- Never type a number inside a formula except 0, 1, and fixed unit conversions such as 12 months, 7 days or 100 for percentages. Every rate, price, threshold or assumption goes in an input cell with a label and unit, preferably as a named range (for example
inp_vat_rate). - Use one formula per row (or per column) and copy it across the whole range unchanged. If a period needs a different calculation, drive it with a flag row (1 or 0) rather than a different formula.
- Prefer simple, readable formulas: helper columns or
LETover deep nesting,SUMIFS,XLOOKUPorINDEX/MATCHoverVLOOKUPwith a hard-coded column number, exact-match lookups unless an approximate match is deliberate and documented. - Reference whole tables, structured references or named ranges instead of fixed ranges that stop short of the data.
- Avoid volatile and fragile functions (
INDIRECT,OFFSET, whole-column array formulas over large sheets) unless there is no reasonable alternative, and say why when you use them. - Never use
IFERRORto hide errors you have not understood; handle the specific expected case (for example a missing lookup key) and let unexpected errors show. - Avoid circular references. If one is genuinely needed (for example interest on an average balance), isolate it, add an on/off switch and document it on the Notes sheet.
Units and formats
- Put the unit in every label or header (currency, thousands, %, per month, per year) and keep one unit per row or column. Convert explicitly in a labelled step rather than inside another formula.
- Keep rates and periods consistent: never mix monthly and annual rates without a visible conversion.
- Store dates as real dates and numbers as numbers, never as text.
- Format inputs so they are visibly different from calculations (for example a fill colour), but never let colour be the only signal: label input cells too.
Checks
- Add checks wherever numbers must agree: totals across and down, balance sheet balancing, sums of parts equal to the whole, row counts before and after a transformation, and opening plus flows equals closing.
- Each check returns a difference that should be 0 (with a small tolerance for rounding), and a master check cell on the Notes or output sheet shows OK or ERROR.
- Add sign and range checks where they protect the answer (no negative stock, probabilities between 0 and 1).
Working with an existing file
- Follow the conventions already in the file unless they break these rules; when they do, point it out and ask before restructuring someone else's workbook.
- Do not delete or overwrite data, sheets or formulas you were not asked to change. Suggest keeping a copy before any bulk edit.
- When you give a formula, say which cell it goes in, whether to fill it down or across, and one quick way to verify it.
- Never invent input values. Mark unknown inputs as needed, and label any illustrative value as a placeholder.
details
- kind
- Rule: standing instructions for everything the assistant does
- domain
- Data analysis
- category
- Spreadsheets
- level
- Intermediate
- made for
- Data analyst, Business analyst, Financial analyst, Operations
- risk
- read-only
- version
- v1.0.1 · incubating
- reviewed
- 2026-10-02
- works in
- Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Antigravity, OpenCode, Windsurf, Zed, Continue, AGENTS.md, ChatGPT, claude.ai
use in
npx @hermes-hq/hodios install spreadsheet-modeling-rules --target claude-codenpx skills add hermes-hq/hodios-dist --skill spreadsheet-modeling-rules -a claude-codeRules are always-on instructions, so they are not in the plugins: add the skill, or paste the text into CLAUDE.md.
pairs well with
All of SpreadsheetsDesign a spreadsheet model
Designs a spreadsheet model for a business calculation with separate inputs, calculations, outputs, checks and named ranges. Use before building a pricing, capacity or unit-economics model.
design-spreadsheet-modelAudit a spreadsheet model
Audits a spreadsheet model for hard-coded values, broken ranges, inconsistent formulas, circularity, unit mistakes and missing checks, ranked by impact. Use before relying on someone else's sheet.
audit-spreadsheet-modelWrite a spreadsheet formula
Builds an Excel or Google Sheets formula from a plain-language goal and the sheet layout, explains how it works and flags edge cases. Use when you know the result you want but not the formula.
write-spreadsheet-formulaSpreadsheet expert
Spreadsheet expert who builds clean, auditable Excel and Google Sheets workbooks, prefers simple formulas over clever ones and explains each step. Use as a standing spreadsheet helper.
spreadsheet-expertClean a messy spreadsheet
Cleans messy tabular data (headers, types, duplicates, inconsistent categories, stray totals) and logs every change it makes. Use before analysing an export or a hand-maintained sheet.
clean-messy-spreadsheetBuild a pivot analysis
Designs a pivot table that answers one specific business question and gives exact click-by-click setup steps for Excel or Google Sheets. Use when you have a flat table and a question about it.
build-pivot-analysis