Create, edit, inspect, analyze, recalculate, render, and validate standalone spreadsheet files in .xlsx, .xls, .csv, and .tsv formats. Use whenever the requested input or deliverable is a workspace spreadsheet, including formula-driven workbooks, native charts, formatted tables, data cleanup, workbook questions, legacy XLS conversion, Chinese or bilingual workbooks, and visual spreadsheet QA. Do not use for Google Sheets, macro-enabled .xlsm files, or live control of Microsoft Excel.
80
100%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Work with standalone spreadsheet files through a reproducible JavaScript .mjs builder and the bundled spreadsheet.sh workflow. Preserve source files, keep calculations auditable, recalculate formulas, and verify both workbook structure and rendered pages before delivery.
openpyxl, xlsxwriter, pandas.ExcelWriter, Google Sheets APIs, or Codex-private runtime paths.requirements.json for every non-trivial workbook and require coverage.status=passed.deliver to seal the final XLSX. Do not manually copy an unaudited candidate to the final path.build, audit, or deliver means the workbook is not deliverable. Do not copy a raw/debug workbook, remove requested features, append || true, or claim success after a gate fails.warningDispositions entry with a concrete rationale. Undisposed warnings block deliver.Resolve the directory containing this file as SPREADSHEET_SKILL_ROOT, then run:
SHEET="$SPREADSHEET_SKILL_ROOT/scripts/spreadsheet.sh"
bash "$SHEET" check || bash "$SHEET" fixUse the turn-scoped PilotDeck work directory for every intermediate. The host sets PILOTDECK_WORK_DIR; the fallback keeps manual runs internal to the project:
WORKSPACE="${PILOTDECK_WORK_DIR:-$PWD/.pilotdeck/work/manual/<task-slug>}/spreadsheets"
mkdir -p "$WORKSPACE/tmp" "$WORKSPACE/qa"Keep builders, converted inputs, source notes, inspections, candidates, renders, recalculation files, and QA reports in WORKSPACE. Put only requested deliverables in the project or user-selected output directory. Never create .pilotdeck_build.mjs, QA directories, or other intermediates beside the user's files.
Choose one route:
.xlsx.Do not accept .xlsm, Google Sheets, or a live Excel session through this skill. Never rename .xls to .xlsx.
Convert a legacy workbook without modifying the source:
bash "$SHEET" convert-legacy \
--input "$INPUT_XLS" \
--out "$WORKSPACE/tmp/converted.xlsx"Get a compact workbook overview:
bash "$SHEET" inspect \
--input "$INPUT" \
--out "$WORKSPACE/tmp/inspection.json"Inspect exact ranges and styles when needed:
bash "$SHEET" inspect \
--input "$INPUT" \
--sheet "Summary" \
--range "A1:H30" \
--styles \
--out "$WORKSPACE/tmp/summary.json"For an existing XLSX, review package.unsafeForRoundTrip and package.roundTripRisks. If either reports risky objects, stop before editing and follow charts-and-compatibility.md.
Render an existing XLSX before changing its visual layout:
bash "$SHEET" render \
--input "$INPUT" \
--out-dir "$WORKSPACE/tmp/source-render"Create requirements and one executable builder:
bash "$SHEET" scaffold \
--out "$WORKSPACE/tmp/workbook.mjs" \
--requirements-out "$WORKSPACE/tmp/requirements.json"Write $WORKSPACE/tmp/requirements.json from the user's requested sheets, formulas, native charts, validations, conditional formatting, expected cells/ranges, and print-page constraints. A sheet list plus a formula count is not sufficient coverage.
For a task based on input files:
sourceBacked: true, record every input in sourceFiles with its pre-build SHA-256, and list output data sheets in sourceBackedSheets.expectedRanges for complete user-critical tables such as KPI history, source rows, action items, owners, and deadlines. Use expectedCells for important totals and derived checkpoints.Patch and rerun that builder instead of creating duplicate scripts. Build a net-new workbook:
bash "$SHEET" build \
--builder "$WORKSPACE/tmp/workbook.mjs" \
--requirements "$WORKSPACE/tmp/requirements.json" \
--out "$WORKSPACE/tmp/candidate.xlsx"Edit an existing safe workbook:
bash "$SHEET" build \
--builder "$WORKSPACE/tmp/workbook.mjs" \
--input "$INPUT_XLSX" \
--requirements "$WORKSPACE/tmp/requirements.json" \
--out "$WORKSPACE/tmp/candidate.xlsx"build preserves the input, validates builder structures and requirements, blocks unsafe round trips, recalculates formula-driven XLSX files, and performs a compact formula audit. It stages output and updates the requested candidate only after audit passes, so a failed build must be fixed and rerun. Fix the reported stage, worksheet, range, and field instead of disabling requested features or switching to a second builder. Never add --allow-risky-roundtrip unless the user has explicitly accepted the listed compatibility risks.
'Revenue Model'!B6.=. See formulas-and-data.md.Run the final structural audit:
bash "$SHEET" audit \
--input "$WORKSPACE/tmp/candidate.xlsx" \
--requirements "$WORKSPACE/tmp/requirements.json" \
--out "$WORKSPACE/qa/audit.json"Render the final workbook:
bash "$SHEET" render \
--input "$WORKSPACE/tmp/candidate.xlsx" \
--out-dir "$WORKSPACE/qa/render" \
--montage "$WORKSPACE/qa/montage.png" \
--per-sheetInspect every page-N.png at full resolution. Revise the builder, rebuild, and rerun audit/render until hard failures are gone and every warning is fixed or explicitly dispositioned in requirements.json. Stop after the workbook is correct, legible, and usable; do not spend extra loops on decorative polish.
After modifying this skill or its runtime, run:
bash "$SHEET" self-test --out "$WORKSPACE/self-test"Seal an XLSX only after inspecting the candidate pages:
bash "$SHEET" deliver \
--input "$WORKSPACE/tmp/candidate.xlsx" \
--out "$FINAL_XLSX" \
--qa-dir "$WORKSPACE/qa/final-render" \
--requirements "$WORKSPACE/tmp/requirements.json" \
--report "$WORKSPACE/qa/delivery.json"Return the final .xlsx, .csv, or .tsv and a concise summary grounded in the delivery report. Mention deliberate compatibility limitations. Do not claim a native chart when package inspection reports zero charts. Describe coverage as only the checks actually declared; never turn a shallow structural pass into “100% task coverage.” Do not deliver builders, requirements JSON, PDFs, renders, runtime files, or QA reports unless the user requests them.
c88d7d1
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.