Sheet happens
Skill Felixx1502/sheet-happens
A Claude skill for everyone who inherited an Excel model and got told "the guy who built it left". type /sheet-happens in any chat, or simply say 'map this Excel model and get one interactive HTML: how every sheet, block and line item connects, plus an audit of hardcodes, error cells and circular refs. Runs 100% on your machine.
npx -y skills add Felixx1502/sheet-happensAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 21 days oldThe repository was created 21 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Map any Excel financial model (.xlsx/.xlsm) into a single self-contained interactive HTML dependency graph with three zoom levels (sheets → functional blocks → line items), data-flow arrows, click-through formula navigation, and a built-in audit (hardcoded constants, error cells, circular references, unmapped refs). ALWAYS trigger when the user wants to: understand/visualize how an Excel model works, map model structure or dependencies, trace precedents/dependents across sheets, audit a financial model for hardcodes, "model map", "model x-ray", "dependency graph of my spreadsheet", or asks how sheets/tabs in a workbook link together. Input is an Excel file; output is one HTML file that opens offline in any browser.
SKILL.md
3.4 KB, 671 tokens by cl100k_base, as published. Nobody here has run it
sheet-happens
Turn an Excel financial model into an interactive dependency map.
Workflow
-
Locate the model file (.xlsx or .xlsm). Confirm with the user if multiple candidates exist.
-
Run the pipeline (pure Python; needs
lxml, plusopenpyxlonly for tests/demo):python map_model.py "MODEL.xlsx" -o "MODEL - Model Map.html" --title "Client model"Useful flags:
--anonymize— strips all labels/formulas, pseudonymises sheet names. Use whenever the output may be shared outside the model's owner.--blocks-override blocks.json— pin block boundaries per sheet ({"Sheet": [[1, "Revenue"], [40, "COGS"]]}) when auto-detection misses the model's real structure.--max-blocks N/--min-block-rows N— tune auto-detection.
Sandbox tips: if a stale bytecode cache interferes, set
PYTHONPYCACHEPREFIX=/tmp/pyc. Very large workbooks (100MB+) parse in seconds — the extractor switches to text-scan mode for oversized sheets automatically — but keep shell timeouts in mind. -
Read the run summary printed by the CLI (block/link counts, hardcode rows, error cells, circular groups, unresolved names). Report the audit headlines to the user alongside the file.
-
Review block quality: open the map's Blocks view mentally via the data — if auto-detected blocks look wrong for key sheets (generic names, giant blocks), write a
blocks_override.jsonfor those sheets from their row labels and re-run. One iteration is usually enough. -
Deliver the HTML. Always tell the user:
- the map embeds labels and formulas from the model → same confidentiality
as the model itself; use
--anonymizefor anything shared publicly; - known accuracy limits (in the map's About panel): dynamic refs (INDIRECT/OFFSET) aren't traceable, item-level range links point to the range's head row, row-level "circular groups" are often legitimate roll-forwards.
- the map embeds labels and formulas from the model → same confidentiality
as the model itself; use
What the output contains
Single HTML file, offline, no upload anywhere: sheet-level flow graph laid out in calculation order → auto-detected functional blocks → row/item drill-down with per-formula navigation; search, weight filters, upstream/downstream tracing; Audit panel (hardcodes, error cells, cycles, unmapped external/table refs, defined-name health).
Repo layout
map_model.py (CLI) · xlmap/ (refs, extract, blocks, graph, render) ·
template/app.html (UI) · assets/cytoscape.min.js (MIT, vendored) ·
tests/test_refs.py (parser unit tests) · tests/make_demo.py (synthetic
DemoCo model) · demo/ (generated demo map).
Gives 0 of the 12 instructions most pdf office docs skills give in 671 tokens
Counted across 635 of the 690 authors here whose files we hold, read 2026-08-06
- extract text using pdfplumberin 92 of 635, across 25 files
- create PDFs using reportlabin 83 of 635, across 16 files
- read FORMS.md to fill out PDF formsin 80 of 635, across 13 files
- OCR scanned PDFs using pytesseractin 77 of 635, across 10 files
- merge or split PDFs using qpdfin 70 of 635, across 3 files
- use Excel formulas instead of hardcoded calculated valuesin 68 of 635, across 12 files
- unpack edit xml and repack existing documentsin 63 of 635, across 8 files
- document sources for hardcoded valuesin 61 of 635, across 9 files
- write minimal python code without unnecessary commentsin 59 of 635, across 7 files
- run the recalculation script after adding or modifying formulasin 58 of 635, across 6 files
- fix all identified formula errors and recalculatein 58 of 635, across 6 files
- format years as text stringsin 57 of 635, across 5 files
Said here and by no other author read
- confirm multiple candidate input files with the user
- run map_model.py on the input file
- use the anonymize flag for publicly shared output
- report audit headlines alongside the generated file
- review auto-detected block quality
- write a blocks override file for inaccurate key sheets
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.