Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Audit Microsoft Excel (.xlsx) workbooks for formula density, external references, named ranges, hidden sheets, and data validation. Use when reviewing a financial model, sharing a workbook externally, or checking for data leakage.
.claude/skills/borghei-xlsx-toolkit/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 85% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-19 | ✗→✓ | ▲ Improved | -4% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 1% | 0% |
Audit .xlsx files using the standard library only — no openpyxl required. Reads OOXML directly via zipfile + xml.etree.
xlsx, Excel, spreadsheet, workbook, financial model, formula audit, hidden sheets, external references, named ranges, data validation
Before running the audit, confirm these inputs. If any is unknown or vague, ASK — do not assume:
Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
bashpython scripts/xlsx_auditor.py model.xlsx
Outputs: sheet count and names, hidden-sheet count, cell count per sheet, formula count per sheet, external link count, named range count, data validation rule count.
Goal: Catch the issues that embarrass the sender — leftover hidden sheets, broken external links, unused named ranges, formulas referencing local file paths.
Steps:
Time Estimate: 5-10 minutes per workbook.
Goal: Quantify the rough complexity of a financial model before reading cell-by-cell.
Steps:
references/financial_model_audit_guide.mdTime Estimate: 30-60 minutes per model audit (audit + targeted reading).
Goal: Ensure a workbook handed off to another team or partner won't break on their machine.
Steps:
.xlsx extension expected; convert if recipient cannot run macrosTime Estimate: 10-20 minutes per workbook.
Reads a .xlsx file as a ZIP archive and parses OOXML directly.
bashpython scripts/xlsx_auditor.py model.xlsx python scripts/xlsx_auditor.py model.xlsx --json
Reports:
Limits:
references/financial_model_audit_guide.md — Patterns for auditing financial models; common error categories; defensive structure tipsassets/workbook_handoff_checklist.md — Pre-send xlsx sign-off checklist'C:\Users\you\Desktop\old-model.xlsx' is the workbook equivalent of leaving your laptop name in the document author field.Inputs!B7 mean nothing. Named ranges like WACC and RevenueGrowth survive structural changes.finance/ skills for financial-model reviewc-level-advisor/cfo-advisor for board-pack workbook reviewdata-analytics/ for ad-hoc analytics handoff| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-16 | pass→pass | 11,022 | 10,839 | -2% | 1 | 1 | 0% | 1,711 | 2,855 | +67% | 0 | 0 | — |
case-01 | fail→fail | 12,422 | 9,144 | -26% | 1 | 1 | 0% | 1,935 | 1,907 | -1% | 0 | 0 | — |
case-02 | fail→pass | 22,763 | 31,870 | +40% | 1 | 1 | 0% | 3,940 | 7,284 | +85% | 0 | 0 | — |
case-03 | fail→fail | 16,112 | 19,986 | +24% | 1 | 1 | 0% | 2,502 | 4,076 | +63% | 0 | 0 | — |
case-04 | pass→pass | 10,442 | 9,995 | -4% | 1 | 1 | 0% | 2,011 | 3,149 | +57% | 0 | 0 | — |
case-05 | pass→pass | 13,836 | 14,977 | +8% | 1 | 1 | 0% | 2,705 | 4,037 | +49% | 0 | 0 | — |
case-17 | pass→pass | 15,765 | 10,224 | -35% | 1 | 1 | 0% | 2,309 | 2,726 | +18% | 0 | 0 | — |
case-06 | pass→pass | 5,820 | 8,317 | +43% | 1 | 1 | 0% | 1,075 | 2,717 | +153% | 0 | 0 | — |
case-07 | pass→pass | 21,355 | 27,174 | +27% | 1 | 1 | 0% | 4,084 | 6,826 | +67% | 0 | 0 | — |
case-08 | fail→pass | 12,494 | 10,171 | -19% | 1 | 1 | 0% | 1,954 | 2,781 | +42% | 0 | 0 | — |
case-09 | pass→pass | 9,166 | 4,070 | -56% | 1 | 1 | 0% | 1,350 | 1,890 | +40% | 0 | 0 | — |
case-10 | fail→fail | 12,823 | 7,659 | -40% | 1 | 1 | 0% | 1,967 | 2,400 | +22% | 0 | 0 | — |
case-11 | pass→pass | 18,189 | 6,492 | -64% | 1 | 1 | 0% | 1,475 | 2,225 | +51% | 0 | 0 | — |
case-12 | fail→pass | 13,162 | 9,907 | -25% | 1 | 1 | 0% | 2,153 | 2,795 | +30% | 0 | 0 | — |
case-13 | pass→pass | 10,282 | 3,282 | -68% | 1 | 1 | 0% | 1,673 | 1,755 | +5% | 0 | 0 | — |
case-14 | pass→pass | 13,334 | 11,868 | -11% | 1 | 1 | 0% | 2,225 | 3,119 | +40% | 0 | 0 | — |
case-15 | pass→pass | 13,244 | 11,455 | -14% | 1 | 1 | 0% | 2,177 | 2,985 | +37% | 0 | 0 | — |
case-18 | pass→pass | 10,812 | 10,161 | -6% | 1 | 1 | 0% | 1,704 | 2,724 | +60% | 0 | 0 | — |
case-19 | fail→pass | 8,609 | 1,398 | -84% | 1 | 1 | 0% | 1,482 | 1,425 | -4% | 0 | 0 | — |
case-20 | fail→pass | 9,932 | 1,898 | -81% | 1 | 1 | 0% | 1,497 | 1,519 | +1% | 0 | 0 | — |
case-21 | fail→pass | 14,164 | 14,002 | -1% | 1 | 1 | 0% | 2,246 | 3,502 | +56% | 0 | 0 | — |
case-22 | pass→pass | 11,770 | 13,781 | +17% | 1 | 1 | 0% | 1,973 | 3,411 | +73% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +27 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.