본문으로 건너뛰기
cccskills
무료GitHub에 공개

spreadsheet-model-auditor

Audits business spreadsheet models (.xlsx, .xlsm, or Google Sheets exported to .xlsx) for structural integrity errors and explains each fix -- budgets, forecasts, pricing models, commission calculators, FP&A packs, ops trackers, not only banking models. A bundled openpyxl script finds hardcoded numbers inside formulas, typed values pasted over formulas, inconsistent formulas across a row or column,

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Google SheetsExcel
설치 방법 보기

포함된 파일(7)

  • SKILL.md7.6 KB
  • examples/worked-example.md7.2 KB
  • references/error-catalog.md13.1 KB
  • references/google-sheets.md3.1 KB
  • scripts/audit_xlsx.py51.2 KB
  • tests/build_fixtures.py8.7 KB
  • tests/run_tests.py4.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Spreadsheet Model Auditor

Models look right when you read them cell by cell. Structural errors -- a SUM that stopped one row short, a formula overwritten with a typed number in month 7, a rate hardcoded in one copy of a formula -- are invisible to eyeballing and are exactly what gets people fired over a board number. Do not audit by reading the grid. Run the script, which reads every formula, then spend human judgment on what a script cannot know: whether the assumptions are sane.

Workflow

1. Get an .xlsx

  • Excel file: use it directly (.xlsx or .xlsm). Legacy .xls: convert first with soffice --headless --convert-to xlsx file.xls.
  • Google Sheets: File > Download > Microsoft Excel (.xlsx). Read references/google-sheets.md for which Sheets functions survive export and what to check manually.
  • CSV is not a model. It has no formulas; there is nothing structural to audit. Ask for the workbook.

2. Run the script

python3 scripts/audit_xlsx.py model.xlsx --json audit.json --md audit.md

Add --recalc when the report says cached values: NO. That happens when the file was written by a script, a BI export, or any tool that does not calculate: openpyxl can read formulas from any file, but stored results exist only if Excel (or LibreOffice) calculated and saved it. --recalc runs soffice --headless --convert-to xlsx on a copy so error, footing, and stale-value checks can run. Without LibreOffice the script still runs every formula-based check and says which value checks it skipped -- never report "no errors" for a check that was skipped.

Needs only openpyxl (pip install openpyxl). It handles 50k-formula workbooks in a few seconds.

3. Triage the findings

Read audit.md. Findings are ranked critical > high > medium > low > info, each with the cell, the formula, why it matters, and the fix. Before presenting:

  • Open the cited cells yourself (the JSON has the formula). Confirm each critical and high finding is real in context; drop or downgrade what is clearly intentional (a labeled override row, a deliberate plug with a note).
  • Collapse repeats. Twelve sum_range_omission findings across B11:M11 are one problem: "Total opex omits the Software row in every month."
  • Trace the dollar impact of the top findings where you can: "Total opex is understated by 1,200/month, 14,400/year, so operating income is overstated by the same."
  • error_value lists root causes only; propagated errors clear when the root is fixed.

The full list of checks, with examples and fixes, is in references/error-catalog.md. Read it when a finding type is unfamiliar or the user asks what a check means.

4. Review what the script cannot judge

Structural integrity is necessary, not sufficient. A perfectly built model with a 40% monthly growth rate is still wrong. Always do this pass and label it as judgment, not detection:

  • Assumptions. List every input on the inputs sheet (or every typed number feeding formulas). For each: is it plausible for this business, sourced, and dated? Flag growth rates that compound to absurd annual numbers (3%/month is 43%/year), churn and conversion rates outside normal ranges, prices that disagree with the stated price list.
  • Units and periods. Monthly vs annual rates mixed (an annual salary divided by 12 in one row and not another), thousands vs units, percentages typed as whole numbers, fiscal vs calendar periods, a 13th month or a missing one.
  • Sign conventions. Costs positive-and-subtracted or negative-and-added, consistently. Check that every total's arithmetic matches the convention.
  • Timing. Does cash follow the stated terms (net-30 revenue should not land the same month)? Do annual costs hit the right month?
  • Sensitivity of the top 3 drivers. Identify the three inputs that move the headline output most (usually volume, price, and the largest cost). State the output at +/-10% on each, computed from the model's own structure. If the conclusion flips inside that range, say so -- that is the most useful sentence in the audit.
  • Does it answer the question? A forecast with no cash line, a commission calc that ignores clawbacks, a pricing model with no volume discount: note what is missing.

5. Report

Use this shape. Lead with the verdict, not the method.

## Verdict
<Trustworthy / Usable after fixes / Do not use>, in one or two sentences with the
dollar impact of the worst problem.

## Must fix (critical + high)
1. <Sheet!Cell> -- <what is wrong in plain words> -- <impact> -- <exact fix>

## Should fix (medium)
## Worth knowing (low / info, grouped)

## Assumption review (judgment, not detected)
<table: input, value, concern, suggested range or question for the owner>

## Sensitivity
<top 3 drivers, output at -10% / base / +10%>

## Not checked
<anything skipped: no cached values, INDIRECT targets, macros, pivot tables>

Offer to fix the workbook when the user wants it: make the changes with openpyxl on a copy (never overwrite the original), re-run the audit on the copy, and show the before/after finding counts.

What the script cannot catch

Say these limits out loud when relevant instead of implying a clean bill of health:

  • Wrong logic that is internally consistent (the wrong formula copied correctly across all 12 months).
  • Wrong assumptions, wrong units, wrong source data.
  • Targets of INDIRECT and OFFSET (they are flagged, but their precedents are invisible), macros/VBA, Power Query, pivot table sources, data validation, conditional formatting logic.
  • Values when the file has no cached results and LibreOffice is unavailable.
  • LibreOffice recalculation is close to Excel but not identical for newer functions (LAMBDA, some dynamic arrays); treat value-based findings on those cells with care.

Rules

  • Cite every finding by Sheet!Cell. A finding without an address cannot be fixed.
  • Never call a model "correct". The strongest claim is "no structural errors found by these checks", plus the assumption review.
  • Separate detected (script) from judged (you). Readers weigh them differently.
  • Business-neutral language: explain why it matters in terms of the decision the model drives (budget approval, price change, payout), not spreadsheet jargon.
  • Do not modify the user's file unless asked, and then only a copy.

Files

  • scripts/audit_xlsx.py -- the auditor (JSON + markdown output).
  • references/error-catalog.md -- every check: example, why it matters, fix, false-positive notes.
  • references/google-sheets.md -- exporting from Sheets and Sheets-only functions.
  • examples/worked-example.md -- a full run on a broken operating model, from script output to final report.
  • tests/build_fixtures.py, tests/run_tests.py -- planted-error fixtures and the regression test.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Audit websites for accessibility issues and WCAG compliance. Use when checking accessibility, fixing a11y issues, or ensuring WCAG compliance.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OneWave-AI/claude-skills3612026년 10월 20일 업데이트

Deploy a 2-layer parallel agent hierarchy for large, parallelizable work — big refactors, multi-file migrations, codebase-wide audits, bulk generation. A top-tier commander (Fable or Opus) orchestrates the swarms; the user picks a power level (Max Power / Heavy / Balanced / Economy) that sets the Opus/Sonnet/Haiku model mix per layer. Layer 1 is 3-50+ specialist agents, each with its own full context window; Layer 2 is 2+ sub-agents per member. Includes git safety, tiered sizing, a pre-deploy gate, phantom-completion checks, and multi-wave follow-up.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OneWave-AI/claude-skills3612026년 10월 20일 업데이트

Use to test whether an AI agent, prompt, or skill actually works before or after it ships — build a small eval set, score runs, and catch regressions when the prompt or model changes. Trigger when the user asks whether a prompt is good, wants to compare models or versions, sees inconsistent agent output, or is about to put an agent in front of customers.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OneWave-AI/claude-skills3612026년 10월 20일 업데이트

Deploys swarms of sub-agents for massive parallel data processing tasks. Unlike agent-army (which is for code changes), this is for DATA tasks -- processing 1000 documents, analyzing datasets, bulk content generation. Configurable swarm size, task distribution, result aggregation, progress tracking, and error recovery.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OneWave-AI/claude-skills3612026년 10월 20일 업데이트

Designs and deploys custom agent teams for specific business workflows. Interactive discovery of business processes, then generates complete team configurations with specialized agent roles, tool access, communication protocols, and handoff rules.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OneWave-AI/claude-skills3612026년 10월 20일 업데이트

Agent-to-Agent (A2A) communication protocol. Connect two or more Claude agents that pass messages, share context, delegate tasks, and collaborate. Implements structured handoffs, shared memory, and multi-agent conversations.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

OneWave-AI/claude-skills3612026년 10월 20일 업데이트

OneWave-AI의 스킬 모두 보기

이 스킬의 문제 신고