Spreadsheet Skill (Create, Edit, Analyze, Visualize)
When to use
- Build new workbooks with formulas, formatting, and structured layouts.
- Read or analyze tabular data (filter, aggregate, pivot, compute metrics).
- Modify existing workbooks without breaking formulas or references.
- Visualize data with charts/tables and sensible formatting.
IMPORTANT: System and user instructions always take precedence.
Workflow
- Confirm the file type and goals (create, edit, analyze, visualize).
- Use
openpyxl for .xlsx edits and pandas for analysis and CSV/TSV workflows.
- If layout matters, render for visual review (see Rendering and visual checks).
- Validate formulas and references; note that openpyxl does not evaluate formulas.
- Save outputs and clean up intermediate files.
Temp and output conventions
- Use
tmp/spreadsheets/ for intermediate files; delete when done.
- Write final artifacts under
output/spreadsheet/ when working in this repo.
- Keep filenames stable and descriptive.
Primary tooling
- Use
openpyxl for creating/editing .xlsx files and preserving formatting.
- Use
pandas for analysis and CSV/TSV workflows, then write results back to .xlsx or .csv.
- If you need charts, prefer
openpyxl.chart for native Excel charts.
Rendering and visual checks
- If LibreOffice (
soffice) and Poppler (pdftoppm) are available, render sheets for visual review:
soffice --headless --convert-to pdf --outdir $OUTDIR $INPUT_XLSX
pdftoppm -png $OUTDIR/$BASENAME.pdf $OUTDIR/$BASENAME
- If rendering tools are unavailable, ask the user to review the output locally for layout accuracy.
Dependencies (install if missing)
Prefer uv for dependency management.
Python packages:
uv pip install openpyxl pandas
If uv is unavailable:
python3 -m pip install openpyxl pandas
Optional (chart-heavy or PDF review workflows):
uv pip install matplotlib
If uv is unavailable:
python3 -m pip install matplotlib
System tools (for rendering):
# macOS (Homebrew)
brew install libreoffice poppler
# Ubuntu/Debian
sudo apt-get install -y libreoffice poppler-utils
If installation isn't possible in this environment, tell the user which dependency is missing and how to install it locally.
Environment
No required environment variables.
Examples
- Runnable Codex examples (openpyxl):
references/examples/openpyxl/
Formula requirements
- Use formulas for derived values rather than hardcoding results.
- Keep formulas simple and legible; use helper cells for complex logic.
- Avoid volatile functions like INDIRECT and OFFSET unless required.
- Prefer cell references over magic numbers (e.g.,
=H6*(1+$B$3) not =H6*1.04).
- Guard against errors (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?) with validation and checks.
- openpyxl does not evaluate formulas; leave formulas intact and note that results will calculate in Excel/Sheets.
Citation requirements
- Cite sources inside the spreadsheet using plain text URLs.
- For financial models, cite sources of inputs in cell comments.
- For tabular data sourced from the web, include a Source column with URLs.
Formatting requirements (existing formatted spreadsheets)
- Render and inspect a provided spreadsheet before modifying it when possible.
- Preserve existing formatting and style exactly.
- Match styles for any newly filled cells that were previously blank.
Formatting requirements (new or unstyled spreadsheets)
- Use appropriate number and date formats (dates as dates, currency with symbols, percentages with sensible precision).
- Use a clean visual layout: headers distinct from data, consistent spacing, and readable column widths.
- Avoid borders around every cell; use whitespace and selective borders to structure sections.
- Ensure text does not spill into adjacent cells.
Color conventions (if no style guidance)
- Blue: user input
- Black: formulas/derived values
- Green: linked/imported values
- Gray: static constants
- Orange: review/caution
- Light red: error/flag
- Purple: control/logic
- Teal: visualization anchors (key KPIs or chart drivers)
Finance-specific requirements
- Format zeros as "-".
- Negative numbers should be red and in parentheses.
- Always specify units in headers (e.g., "Revenue ($mm)").
- Cite sources for all raw inputs in cell comments.
Investment banking layouts
If the spreadsheet is an IB-style model (LBO, DCF, 3-statement, valuation):
- Totals should sum the range directly above.
- Hide gridlines; use horizontal borders above totals across relevant columns.
- Section headers should be merged cells with dark fill and white text.
- Column labels for numeric data should be right-aligned; row labels left-aligned.
- Indent submetrics under their parent line items.
1---2name: spreadsheet3description: Use when tasks involve creating, editing, analyzing, or formatting spreadsheets (`.xlsx`, `.csv`, `.tsv`) using Python (`openpyxl`, `pandas`), especially when formulas, references, and formatting need to be preserved and verified.4---5
6
7# Spreadsheet Skill (Create, Edit, Analyze, Visualize)
8
9## When to use
10- Build new workbooks with formulas, formatting, and structured layouts.
11- Read or analyze tabular data (filter, aggregate, pivot, compute metrics).
12- Modify existing workbooks without breaking formulas or references.
13- Visualize data with charts/tables and sensible formatting.
14
15IMPORTANT: System and user instructions always take precedence.
16
17## Workflow
181. Confirm the file type and goals (create, edit, analyze, visualize).
192. Use `openpyxl` for `.xlsx` edits and `pandas` for analysis and CSV/TSV workflows.
203. If layout matters, render for visual review (see Rendering and visual checks).
214. Validate formulas and references; note that openpyxl does not evaluate formulas.
225. Save outputs and clean up intermediate files.
23
24## Temp and output conventions
25- Use `tmp/spreadsheets/` for intermediate files; delete when done.
26- Write final artifacts under `output/spreadsheet/` when working in this repo.
27- Keep filenames stable and descriptive.
28
29## Primary tooling
30- Use `openpyxl` for creating/editing `.xlsx` files and preserving formatting.
31- Use `pandas` for analysis and CSV/TSV workflows, then write results back to `.xlsx` or `.csv`.
32- If you need charts, prefer `openpyxl.chart` for native Excel charts.
33
34## Rendering and visual checks
35- If LibreOffice (`soffice`) and Poppler (`pdftoppm`) are available, render sheets for visual review:
36 - `soffice --headless --convert-to pdf --outdir $OUTDIR $INPUT_XLSX`
37 - `pdftoppm -png $OUTDIR/$BASENAME.pdf $OUTDIR/$BASENAME`
38- If rendering tools are unavailable, ask the user to review the output locally for layout accuracy.
39
40## Dependencies (install if missing)
41Prefer `uv` for dependency management.
42
43Python packages:
44```
45uv pip install openpyxl pandas
46```
47If `uv` is unavailable:
48```
49python3 -m pip install openpyxl pandas
50```
51Optional (chart-heavy or PDF review workflows):
52```
53uv pip install matplotlib
54```
55If `uv` is unavailable:
56```
57python3 -m pip install matplotlib
58```
59System tools (for rendering):
60```
61# macOS (Homebrew)
62brew install libreoffice poppler
63
64# Ubuntu/Debian
65sudo apt-get install -y libreoffice poppler-utils
66```
67
68If installation isn't possible in this environment, tell the user which dependency is missing and how to install it locally.
69
70## Environment
71No required environment variables.
72
73## Examples
74- Runnable Codex examples (openpyxl): `references/examples/openpyxl/`
75
76## Formula requirements
77- Use formulas for derived values rather than hardcoding results.
78- Keep formulas simple and legible; use helper cells for complex logic.
79- Avoid volatile functions like INDIRECT and OFFSET unless required.
80- Prefer cell references over magic numbers (e.g., `=H6*(1+$B$3)` not `=H6*1.04`).
81- Guard against errors (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?) with validation and checks.
82- openpyxl does not evaluate formulas; leave formulas intact and note that results will calculate in Excel/Sheets.
83
84## Citation requirements
85- Cite sources inside the spreadsheet using plain text URLs.
86- For financial models, cite sources of inputs in cell comments.
87- For tabular data sourced from the web, include a Source column with URLs.
88
89## Formatting requirements (existing formatted spreadsheets)
90- Render and inspect a provided spreadsheet before modifying it when possible.
91- Preserve existing formatting and style exactly.
92- Match styles for any newly filled cells that were previously blank.
93
94## Formatting requirements (new or unstyled spreadsheets)
95- Use appropriate number and date formats (dates as dates, currency with symbols, percentages with sensible precision).
96- Use a clean visual layout: headers distinct from data, consistent spacing, and readable column widths.
97- Avoid borders around every cell; use whitespace and selective borders to structure sections.
98- Ensure text does not spill into adjacent cells.
99
100## Color conventions (if no style guidance)
101- Blue: user input
102- Black: formulas/derived values
103- Green: linked/imported values
104- Gray: static constants
105- Orange: review/caution
106- Light red: error/flag
107- Purple: control/logic
108- Teal: visualization anchors (key KPIs or chart drivers)
109
110## Finance-specific requirements
111- Format zeros as "-".
112- Negative numbers should be red and in parentheses.
113- Always specify units in headers (e.g., "Revenue ($mm)").
114- Cite sources for all raw inputs in cell comments.
115
116## Investment banking layouts
117If the spreadsheet is an IB-style model (LBO, DCF, 3-statement, valuation):
118- Totals should sum the range directly above.
119- Hide gridlines; use horizontal borders above totals across relevant columns.
120- Section headers should be merged cells with dark fill and white text.
121- Column labels for numeric data should be right-aligned; row labels left-aligned.
122- Indent submetrics under their parent line items.