excel-spreadsheets

SKILL.md

Excel Spreadsheets

When to Use

Tool Use When
create_excel_spreadsheet User asks to create/generate a NEW spreadsheet
modify_excel_spreadsheet User asks to edit/update an EXISTING spreadsheet
list_my_excel_spreadsheets User asks what spreadsheets are available
read_excel_spreadsheet User wants to download or read spreadsheet contents
preview_excel_sheets Check actual sheet appearance when editing

Workflow

  1. Before modifying: call preview_excel_sheets to check current layout.
  2. After creation/modification: call preview_excel_sheets to verify.
  3. Run tools sequentially (never parallel) to prevent file race conditions.

Professional Formatting

  • Font: Arial for all cells unless an existing template specifies otherwise.
  • Negative numbers: parentheses format (1,234) — not minus -1,234.
  • Currency: $#,##0 format. Specify units in headers (e.g., "Revenue ($mm)").
  • Percentages: 0.0% (one decimal place).
  • Years: format as text ("2024" not "2,024").
  • Zeros: display as "-" using a custom number format.
# Example: professional number formatting
from openpyxl.styles import numbers
ws['B2'].number_format = '$#,##0'          # Currency
ws['C2'].number_format = '0.0%'            # Percentage
ws['D2'].number_format = '#,##0;(#,##0)'   # Negative in parentheses
ws['E2'].number_format = '@'               # Year as text
ws['F2'].number_format = '#,##0;(#,##0);"-"'  # Zeros as dash

Financial Model Color Coding

When building financial models, apply these conventions:

Color Hex Usage
Blue text 0000FF Hardcoded inputs and assumptions
Black text 000000 All formulas and calculations
Green text 008000 Links pulling from other worksheets
Yellow background FFFF00 Key assumptions needing attention
from openpyxl.styles import Font, PatternFill
ws['B2'].font = Font(name='Arial', color='0000FF')       # Blue: input
ws['B3'].font = Font(name='Arial', color='000000')       # Black: formula
ws['B4'].font = Font(name='Arial', color='008000')       # Green: cross-sheet link
ws['B5'].fill = PatternFill('solid', fgColor='FFFF00')   # Yellow bg: key assumption

Images

from openpyxl.drawing.image import Image
ws.add_image(Image('file.png'), 'E1')

Code Rules

  • Workbook is pre-initialized as wb = Workbook(), active sheet as ws = wb.active (create), or loaded as wb (modify). Do NOT include Workbook() or wb.save().
  • Available libraries: openpyxl, matplotlib, pandas, numpy (seaborn NOT available)
  • ALWAYS use Excel formulas, NEVER hardcode calculated values.
    • Wrong: ws['B10'] = total
    • Right: ws['B10'] = '=SUM(B2:B9)'
  • Place assumptions in separate cells, reference them in formulas (e.g., =B5*(1+$B$6) not =B5*1.05).
  • Avoid circular references.
  • Filenames: letters, numbers, hyphens only.

Tool Reference

create_excel_spreadsheet

Create a new Excel spreadsheet using openpyxl code.

Parameter Type Required Description
python_code str Yes Python code using openpyxl (see Code Rules above)
spreadsheet_name str Yes Filename without extension (letters, numbers, hyphens only)

Example tool_input:

{
  "python_code": "ws.title = 'Sales'\nws['A1'] = 'Quarter'\nws['B1'] = 'Revenue'\nfor i, (q, r) in enumerate(zip(['Q1','Q2','Q3','Q4'], [100,150,130,180]), start=2):\n    ws[f'A{i}'] = q\n    ws[f'B{i}'] = r",
  "spreadsheet_name": "quarterly-sales"
}

WARNING: Parameter is spreadsheet_name, NOT filename or name.

modify_excel_spreadsheet

Modify an existing spreadsheet and save with a new name.

Parameter Type Required Description
source_name str Yes Existing spreadsheet name (without .xlsx)
output_name str Yes New output name (MUST differ from source)
python_code str Yes Python code to modify the spreadsheet

Example tool_input:

{
  "source_name": "quarterly-sales",
  "output_name": "quarterly-sales-v2",
  "python_code": "ws = wb.active\nws['B6'] = '=SUM(B2:B5)'"
}

list_my_excel_spreadsheets

List all spreadsheets in workspace. No parameters needed.

read_excel_spreadsheet

Retrieve a specific spreadsheet for download.

Parameter Type Required
spreadsheet_name str Yes

preview_excel_sheets

Get sheet screenshots for visual inspection before editing.

Parameter Type Required Description
spreadsheet_name str Yes Spreadsheet name without extension
sheet_names list[str] Yes Sheet names to preview (empty list [] for all sheets)
Weekly Installs
16
GitHub Stars
112
First Seen
Mar 1, 2026
Installed on
github-copilot16
codex16
kimi-cli16
gemini-cli16
cursor16
amp16