xlsx
Create and edit Excel .xlsx workbooks (sheets, cells, formulas, formatting) via Python `openpyxl`. Use to generate spreadsheets or write/update cells. Reading is via os.fs.read_document.
git clone --depth 1 https://github.com/AtomicBot-ai/atomic-agent /tmp/xlsx && cp -r /tmp/xlsx/starter-skills/xlsx ~/.claude/skills/xlsxSKILL.md
# xlsx
Create and modify `.xlsx` workbooks with the `openpyxl` Python library.
**Reading** an existing spreadsheet to plain text is best done with the built-in
`os.fs.read_document` tool (no install). Use the scripts below to **write**:
new workbooks, cell values, formulas, and basic formatting.
The pattern is `python3 -c "<inline script>"` (or `python3 script.py` for longer
logic). Keep scripts short and idempotent; always write to a fresh output path.
## Setup health check (run first, every session)
Verify with **one solo step**:
```
[{ "tool": "os.shell.run", "args": { "cmd": "python3", "args": ["-c", "import openpyxl; print(openpyxl.__version__)"] } }]
```
Outcome map:
- `exit 0` + version → ready, proceed.
- `ModuleNotFoundError: openpyxl` → enter **Setup playbook → "openpyxl missing"**.
- `command not found: python3` → reply that Python 3 is required and stop.
## Setup playbook (when prerequisites are missing)
### openpyxl missing
Reply (solo `reply` step):
> "The `openpyxl` library is not installed. I can install it: `python3 -m pip install --user openpyxl`. Install it?"
On yes:
```
[{ "tool": "os.shell.run", "args": { "cmd": "python3", "args": ["-m", "pip", "install", "--user", "openpyxl"] } }]
```
If `pip` is externally managed (PEP 668), use `pipx run --spec openpyxl python` or
a venv; ask the user which they prefer.
## When to use
- "Create an Excel file with these rows", "build a budget spreadsheet".
- "Add a column / formula", "update cell B2", "add a second sheet".
- Generating reports/exports as `.xlsx`.
## When NOT to use
- Reading an `.xlsx` to summarise — use `os.fs.read_document`.
- CSV-only work — prefer plain `os.fs.write` with comma-separated text.
- Charts / pivot tables / macros — out of scope on v1.
## Common operations
Create a workbook with a header row and two data rows:
```
[{ "tool": "os.shell.run", "args": { "cmd": "python3", "args": ["-c", "import openpyxl; wb=openpyxl.Workbook(); ws=wb.active; ws.title='Report'; ws.append(['Name','Amount']); ws.append(['Coffee',4.5]); ws.append(['Tea',3]); ws['B4']='=SUM(B2:B3)'; wb.save('report.xlsx'); print('wrote report.xlsx')"] } }]
```
Append rows to an existing workbook:
```
[{ "tool": "os.shell.run", "args": { "cmd": "python3", "args": ["-c", "import openpyxl; wb=openpyxl.load_workbook('report.xlsx'); ws=wb.active; ws.append(['Juice',5]); wb.save('report.xlsx'); print('appended')"] } }]
```
For anything longer than a couple of statements, write a `.py` file with
`os.fs.write` first, then run it with `python3 script.py`.
## Rules
1. Always `wb.save(<new path>)` and report the path; never silently overwrite.
2. Formulas go in as strings starting with `=` (e.g. `'=SUM(A1:A9)'`).
3. Quote numbers as numbers, not strings, so Excel treats them numerically.
4. For reads, defer to `os.fs.read_document` — do not reinvent parsing.Read macOS Calendar events via the `icalBuddy` CLI and create events via AppleScript (osascript). Use to check the user's calendar, agenda, upcoming events, or add an event on macOS.
Manage Apple Notes via the `memo` CLI on macOS — create, view, search, edit, export.
Manage Apple Reminders via the `remindctl` CLI on macOS — list, add, complete, delete, manage lists.
Transcribe speech from audio files (mp3, m4a, wav, ogg, flac, webm) to text using the local `whisper` CLI — no API key. Use whenever a task hinges on the spoken content of an audio attachment.
Currency exchange rates and conversion via the Frankfurter API (no key). Use for FX rates, "convert X to Y", or historical/time-series rates.
Manage Docker containers, images, volumes, and Compose stacks via the `docker` CLI — list, inspect, logs, run, build, stop, remove, compose up/down. Use for local container ops.
Process audio and video with the `ffmpeg` / `ffprobe` CLIs — convert, trim, extract audio, resize, change format, make GIFs, inspect media. Use for any audio/video transformation.
Drive GitHub via the official `gh` CLI — repos, issues, pull requests, releases, gists, Actions runs, and raw REST through `gh api`. Use when the user asks to inspect or manage GitHub.