Skip to main content

Excel Spreadsheets (profy-xlsx)

Create, edit, and analyse spreadsheets. In direct opposition to “let the model compute the number and paste it in”, the governing constraint here is that the deliverable must be a live spreadsheet: formulas stay in the cells, so changing a source value updates everything downstream.

Activation

profy-xlsx is user_selectable: falseautomatically available, nothing to tick. It does not appear in the plugin panel because it has no decision for you to make.
Its contracts declares only skills: ["skills/"] and no tools. The expert is not calling some “generate Excel” tool; it runs Python (openpyxl / pandas) via bash in the sandbox, and the skill document governs how it does so. The trigger is that a spreadsheet file is the primary input or output: .xlsx, .xlsm, .csv, .tsv. If the final deliverable is a Word document, an HTML report, or a standalone script, this path is not taken even when tabular data is involved along the way.

Quick start

First principle: formulas, not hardcoded values

This is the most repeated rule in the skill and it is worth understanding why.
The difference is not which is faster to write; it is what kind of artifact you hand over. Hardcoding produces a snapshot of numbers — change one input and everything else is silently wrong, with no indication. Leaving formulas produces a model — it can be used, audited, and reused. The rule applies to all computation: totals, percentages, ratios, differences, without exception.

Mandatory step: recalculate and validate

A freshly written workbook stores formulas as text with empty cached values. Delivered as-is, the recipient opens it to blanks or stale numbers. So one step is non-optional:
The script recalculates via LibreOffice (sandboxed environments where Unix sockets are restricted are handled automatically by scripts/office/soffice.py) and returns JSON:

The five error types that must be zero

The delivery bar is zero formula errors, not “mostly computes”.

Financial model conventions

For financial models the skill applies industry-standard conventions so that anyone who has seen a financial model can read it immediately.

Colour coding

The point of this palette is that you can tell at a glance which numbers are safe to edit and which are derived. Overwriting a black cell breaks the model, and colour is the cheapest possible guard rail against that.

Number formatting

Formula construction

  • Centralise assumptions: growth rates, margins, multiples all live in dedicated assumption cells
  • Reference, do not embed: write =B5*(1+$B$6), never =B5*1.05
  • Keep projection formulas consistent across all periods, otherwise one year quietly computes differently
  • Document every hardcode with Source: [System/Document], [Date], [Specific Reference], [URL], e.g. Source: Company 10-K, FY2024, Page 45, Revenue Note
  • Check for off-by-one range errors and unintended circular references before delivering
That last documentation rule is easy to skip and determines whether the model is still trustworthy six months later. An undocumented hardcoded number is an assertion nobody can verify.

Editing existing files: the template wins

An existing file’s conventions always override every guideline above. When modifying someone else’s workbook, study its existing format, style, and conventions and match them exactly. Do not impose standardised formatting.
The reasoning is concrete: you do not know what downstream depends on that format. A sheet parsed by a downstream script on column position breaks entirely the moment you “helpfully” normalise the column order.

Tool selection

The standard workflow is: choose tool → create or load → modify → save → recalculate → verify and fix.

Boundaries and failure modes

  • Recalculation depends on LibreOffice. It is preinstalled in the sandbox; in a local Desktop environment without it, recalc.py fails and formulas keep no cached values.
  • Macros in .xlsm are not executed. File structure can be read and written, but macro logic does not participate in calculation.
  • Charts come from openpyxl and are stylistically limited. Complex visualisation is better served by the visualization capability producing web charts.
  • Very large sheets hit memory limits. Beyond a few hundred thousand rows, aggregate with pandas first and write the result, rather than loading everything into openpyxl.

Troubleshooting

Verify your output

  1. Open the file and change any input cell — downstream numbers should move. If they do not, something is hardcoded.
  2. Search the whole workbook for #; none of the five error types should appear.
  3. For financial models, check the colours again: blue should appear only in the input block, black should cover every calculation.

Office documents overview

How the four document capabilities differ and when to use each

Data visualization

The alternative path when you need interactive charts
Verified 2026-08-11. Sources: services/agent-runtime/src/plugins/builtin/xlsx/plugin.json, skills/SKILL.md, skills/scripts/recalc.py, skills/scripts/office/soffice.py.