Skill Tracer
Skills › Financial Services › audit-xls

audit-xls

skill · 156 lines · Apache-2.0 · plugins/vertical-plugins/financial-analysis/skills/audit-xls/SKILL.md

The facts

Its description

Audit a spreadsheet for formula accuracy, errors, and common mistakes. Scopes to a selected range, a single sheet, or the entire model (including financial-model integrity checks like BS balance, cash tie-out, and logic sanity). Triggers on "audit this sheet", "check my formulas", "find formula errors", "QA this spreadsheet", "sanity check this", "debug model", "model check", "model won't balance", "something's off in my model", "model review".

The description the agent reads to decide when to use it.

From its settingsline 3

When it starts

A person working in a spreadsheet asks the agent to check formulas or hunt down errors, or reports that a model won't balance or that something seems off. The agent picks it up for spreadsheet QA, formula debugging, and financial-model integrity checks.

Things a person might say (the model's guesses)

  • “Can you audit this sheet before I send it to the client?”
  • “My model won't balance — can you figure out why?”
  • “Something's off in my model, can you sanity check the formulas?”

A model's summary of when it is used.

A model's reading

What leads to it

Other skills that hand off to this one, call it, require it or offer it instead, as a model read them.

A model's reading

Licence

Apache-2.0, from LICENSE

The terms its author shares it under, which let it be shown here.

From the repositorylicence text

The text

Open on GitHub
1---
2name: audit-xls
3description: Audit a spreadsheet for formula accuracy, errors, and common mistakes. Scopes to a selected range, a single sheet, or the entire model (including financial-model integrity checks like BS balance, cash tie-out, and logic sanity). Triggers on "audit this sheet", "check my formulas", "find formula errors", "QA this spreadsheet", "sanity check this", "debug model", "model check", "model won't balance", "something's off in my model", "model review".
4---
5
6# Audit Spreadsheet
7
8Audit formulas and data for accuracy and mistakes. Scope determines depth — from quick formula checks on a selection up to full financial-model integrity audits.
9

Audit Spreadsheet

Audit formulas and data for accuracy and mistakes. Scope determines depth — from quick formula checks on a selection up to full financial-model integrity audits.

Raw lines 1 to 9
10## Step 1: Determine scope
12If the user already gave a scope, use it. Otherwise **ask them**:
14> What scope do you want me to audit?
15> - **selection** — just the currently selected range
16> - **sheet** — the current active sheet only
17> - **model** — the whole workbook, including financial-model integrity checks (BS balance, cash tie-out, roll-forwards, logic sanity)
19The **model** scope is the deepest — use it for DCF, LBO, 3-statement, merger, comps, or any integrated financial model before sending to a client or IC.
21---

Step 1: Determine scope

If the user already gave a scope, use it. Otherwise ask them:

What scope do you want me to audit? - selection — just the currently selected range - sheet — the current active sheet only - model — the whole workbook, including financial-model integrity checks (BS balance, cash tie-out, roll-forwards, logic sanity)

The model scope is the deepest — use it for DCF, LBO, 3-statement, merger, comps, or any integrated financial model before sending to a client or IC.


Raw lines 10 to 22
23## Step 2: Formula-level checks (ALL scopes)
25Run these regardless of scope:
27| Check | What to look for |
28|---|---|
29| Formula errors | `#REF!`, `#VALUE!`, `#N/A`, `#DIV/0!`, `#NAME?` |
30| Hardcodes inside formulas | `=A1*1.05` — the `1.05` should be a cell reference |
31| Inconsistent formulas | A formula that breaks the pattern of its neighbors in a row/column |
32| Off-by-one ranges | `SUM`/`AVERAGE` that misses the first or last row |
33| Pasted-over formulas | Cell that looks like a formula but is actually a hardcoded value |
34| Circular references | Intentional or accidental |
35| Broken cross-sheet links | References to cells that moved or were deleted |
36| Unit/scale mismatches | Thousands mixed with millions, % stored as whole numbers |
37| Hidden rows/tabs | Could contain overrides or stale calculations |
39---

Step 2: Formula-level checks (ALL scopes)

Run these regardless of scope:

CheckWhat to look for
Formula errors#REF!, #VALUE!, #N/A, #DIV/0!, #NAME?
Hardcodes inside formulas=A1*1.05 — the 1.05 should be a cell reference
Inconsistent formulasA formula that breaks the pattern of its neighbors in a row/column
Off-by-one rangesSUM/AVERAGE that misses the first or last row
Pasted-over formulasCell that looks like a formula but is actually a hardcoded value
Circular referencesIntentional or accidental
Broken cross-sheet linksReferences to cells that moved or were deleted
Unit/scale mismatchesThousands mixed with millions, % stored as whole numbers
Hidden rows/tabsCould contain overrides or stale calculations

Raw lines 23 to 40
41## Step 3: Model-integrity checks (MODEL scope only)
43If scope is **model**, identify the model type (DCF / LBO / 3-statement / merger / comps / custom) and run the appropriate integrity checks below.

Step 3: Model-integrity checks (MODEL scope only)

If scope is model, identify the model type (DCF / LBO / 3-statement / merger / comps / custom) and run the appropriate integrity checks below.

Raw lines 41 to 44
45### 3a. Structural review
47| Check | What to look for |
48|---|---|
49| Input/formula separation | Are inputs clearly separated from calculations? |
50| Color convention | Blue=input, black=formula, green=link — or whatever the model uses, applied consistently? |
51| Tab flow | Logical order (Assumptions → IS → BS → CF → Valuation)? |
52| Date headers | Consistent across all tabs? |
53| Units | Consistent (thousands vs millions vs actuals)? |

3a. Structural review

CheckWhat to look for
Input/formula separationAre inputs clearly separated from calculations?
Color conventionBlue=input, black=formula, green=link — or whatever the model uses, applied consistently?
Tab flowLogical order (Assumptions → IS → BS → CF → Valuation)?
Date headersConsistent across all tabs?
UnitsConsistent (thousands vs millions vs actuals)?
Raw lines 45 to 54
55### 3b. Balance Sheet
57| Check | Test |
58|---|---|
59| BS balances | Total Assets = Total Liabilities + Equity (every period) |
60| RE rollforward | Prior RE + Net Income − Dividends = Current RE |
61| Goodwill/intangibles | Flow from acquisition assumptions (if M&A) |
63If BS doesn't balance, **quantify the gap per period and trace where it breaks** — nothing else matters until this is fixed.

3b. Balance Sheet

CheckTest
BS balancesTotal Assets = Total Liabilities + Equity (every period)
RE rollforwardPrior RE + Net Income − Dividends = Current RE
Goodwill/intangiblesFlow from acquisition assumptions (if M&A)

If BS doesn't balance, quantify the gap per period and trace where it breaks — nothing else matters until this is fixed.

Raw lines 55 to 64
65### 3c. Cash Flow Statement
67| Check | Test |
68|---|---|
69| Cash tie-out | CF Ending Cash = BS Cash (every period) |
70| CF sums | CFO + CFI + CFF = Δ Cash |
71| D&A match | D&A on CF = D&A on IS |
72| CapEx match | CapEx on CF matches PP&E rollforward on BS |
73| WC changes | Signs match BS movements (ΔAR, ΔAP, ΔInventory) |

3c. Cash Flow Statement

CheckTest
Cash tie-outCF Ending Cash = BS Cash (every period)
CF sumsCFO + CFI + CFF = Δ Cash
D&A matchD&A on CF = D&A on IS
CapEx matchCapEx on CF matches PP&E rollforward on BS
WC changesSigns match BS movements (ΔAR, ΔAP, ΔInventory)
Raw lines 65 to 74
75### 3d. Income Statement
77| Check | Test |
78|---|---|
79| Revenue build | Ties to segment/product detail |
80| Tax | Tax expense = Pre-tax income × tax rate (allow for deferred tax adj) |
81| Share count | Ties to dilution schedule (options, converts, buybacks) |

3d. Income Statement

CheckTest
Revenue buildTies to segment/product detail
TaxTax expense = Pre-tax income × tax rate (allow for deferred tax adj)
Share countTies to dilution schedule (options, converts, buybacks)
Raw lines 75 to 82
83### 3e. Circular references
85- Interest → debt balance → cash → interest is a common intentional circ in LBO/3-stmt models
86- If intentional: verify iteration toggle exists and works
87- If unintentional: trace the loop and flag how to break it

3e. Circular references

  • Interest → debt balance → cash → interest is a common intentional circ in LBO/3-stmt models
  • If intentional: verify iteration toggle exists and works
  • If unintentional: trace the loop and flag how to break it
Raw lines 83 to 88
89### 3f. Logic & reasonableness
91| Check | Flag if |
92|---|---|
93| Growth rates | >100% revenue growth without explanation |
94| Margins | Outside industry norms |
95| Terminal value dominance | TV > ~75% of DCF EV (yellow flag) |
96| Hockey-stick | Projections ramp unrealistically in out-years |
97| Compounding | EBITDA compounds to absurd $ by Year 10 |
98| Edge cases | Model breaks at 0% or negative growth, negative EBITDA, leverage goes negative |

3f. Logic & reasonableness

CheckFlag if
Growth rates>100% revenue growth without explanation
MarginsOutside industry norms
Terminal value dominanceTV > ~75% of DCF EV (yellow flag)
Hockey-stickProjections ramp unrealistically in out-years
CompoundingEBITDA compounds to absurd $ by Year 10
Edge casesModel breaks at 0% or negative growth, negative EBITDA, leverage goes negative
Raw lines 89 to 99
100### 3g. Model-type-specific bugs
102**DCF:**
103- Discount rate applied to wrong period (mid-year vs end-of-year)
104- Terminal value not discounted back
105- WACC uses book values instead of market values
106- FCF includes interest expense (should be unlevered)
107- Tax shield double-counted
109**LBO:**
110- Debt paydown doesn't match cash sweep mechanics
111- PIK interest not accruing to principal
112- Management rollover not reflected in returns
113- Exit multiple applied to wrong EBITDA (LTM vs NTM)
114- Fees/expenses not deducted from Day 1 equity
116**Merger:**
117- Accretion/dilution uses wrong share count (pre- vs post-deal)
118- Synergies not phased in
119- Purchase price allocation doesn't balance
120- Foregone interest on cash not included
121- Transaction fees not in sources & uses
123**3-statement:**
124- Working capital changes have wrong sign
125- Depreciation doesn't match PP&E schedule
126- Debt maturity schedule doesn't match principal payments
127- Dividends exceed net income without explanation
129---

3g. Model-type-specific bugs

DCF:

  • Discount rate applied to wrong period (mid-year vs end-of-year)
  • Terminal value not discounted back
  • WACC uses book values instead of market values
  • FCF includes interest expense (should be unlevered)
  • Tax shield double-counted

LBO:

  • Debt paydown doesn't match cash sweep mechanics
  • PIK interest not accruing to principal
  • Management rollover not reflected in returns
  • Exit multiple applied to wrong EBITDA (LTM vs NTM)
  • Fees/expenses not deducted from Day 1 equity

Merger:

  • Accretion/dilution uses wrong share count (pre- vs post-deal)
  • Synergies not phased in
  • Purchase price allocation doesn't balance
  • Foregone interest on cash not included
  • Transaction fees not in sources & uses

3-statement:

  • Working capital changes have wrong sign
  • Depreciation doesn't match PP&E schedule
  • Debt maturity schedule doesn't match principal payments
  • Dividends exceed net income without explanation

Raw lines 100 to 130
131## Step 4: Report
133Output a findings table:
135| # | Sheet | Cell/Range | Severity | Category | Issue | Suggested Fix |
136|---|---|---|---|---|---|---|
138**Severity:**
139- **Critical** — wrong output (BS doesn't balance, formula broken, cash doesn't tie)
140- **Warning** — risky (hardcodes, inconsistent formulas, edge-case failures)
141- **Info** — style/best-practice (color coding, layout, naming)
143For **model** scope, prepend a summary line:
145> Model type: [DCF/LBO/3-stmt/...] — Overall: [Clean / Minor Issues / Major Issues] — [N] critical, [N] warnings, [N] info
147**Don't change anything without asking** — report first, fix on request.
149---

Step 4: Report

Output a findings table:

#SheetCell/RangeSeverityCategoryIssueSuggested Fix

Severity:

  • Critical — wrong output (BS doesn't balance, formula broken, cash doesn't tie)
  • Warning — risky (hardcodes, inconsistent formulas, edge-case failures)
  • Info — style/best-practice (color coding, layout, naming)

For model scope, prepend a summary line:

Model type: [DCF/LBO/3-stmt/...] — Overall: [Clean / Minor Issues / Major Issues] — [N] critical, [N] warnings, [N] info

Don't change anything without asking — report first, fix on request.


Raw lines 131 to 150
151## Notes
153- **BS balance first** — if it doesn't balance, everything downstream is suspect
154- **Hardcoded overrides are the #1 source of silent bugs** — search aggressively
155- **Sign convention errors** (positive vs negative for cash outflows) are extremely common
156- If the model uses VBA macros, note any macro-driven calculations that can't be audited from formulas alone

Notes

  • BS balance first — if it doesn't balance, everything downstream is suspect
  • Hardcoded overrides are the #1 source of silent bugs — search aggressively
  • Sign convention errors (positive vs negative for cash outflows) are extremely common
  • If the model uses VBA macros, note any macro-driven calculations that can't be audited from formulas alone
Raw lines 151 to 156

From anthropics/financial-services at 6056506, 2026-10-28. Skills read by DeepSeek V4.1 Flash on 2026-11-04. Summary and techniques by Claude Opus 5.5 on 2026-11-06.