Excel Workbook Editor
TokenRhythm/opensquilla
Inspects, edits in place or creates Microsoft Excel .xlsx workbooks with openpyxl, treating each cell as a typed number, string, datetime or formula value.
Create, read, and edit Excel (.xlsx) spreadsheets programmatically with openpyxl — cell values, formulas, styling (fonts/fills/borders/alignment/number formats), merged cells, multiple sheets…
$ npx skills add open-octo/octo-agent --skill office-xlsx -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install open-octo/octo-agent office-xlsx --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/internal/skills/defaults/office-xlsx .claude/skills/office-xlsx && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "office-xlsx" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/office-xlsx into .claude/skills/office-xlsx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "office-xlsx", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/office-xlsxType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add open-octo/octo-agent --skill office-xlsx -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install open-octo/octo-agent office-xlsx --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .agents/skills && cp -r skills-src/internal/skills/defaults/office-xlsx .agents/skills/office-xlsx && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "office-xlsx" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/office-xlsx into .agents/skills/office-xlsx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "office-xlsx", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add open-octo/octo-agent --skill office-xlsx -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install open-octo/octo-agent office-xlsx --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/internal/skills/defaults/office-xlsx .cursor/skills/office-xlsx && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "office-xlsx" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/office-xlsx into .cursor/skills/office-xlsx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "office-xlsx", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/open-octo/octo-agent.git --path internal/skills/defaults/office-xlsx--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add open-octo/octo-agent --skill office-xlsx -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install open-octo/octo-agent office-xlsx --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/internal/skills/defaults/office-xlsx .gemini/skills/office-xlsx && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "office-xlsx" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/office-xlsx into .gemini/skills/office-xlsx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "office-xlsx", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install open-octo/octo-agent office-xlsxInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add open-octo/octo-agent --skill office-xlsx -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .github/skills && cp -r skills-src/internal/skills/defaults/office-xlsx .github/skills/office-xlsx && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "office-xlsx" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/office-xlsx into .github/skills/office-xlsx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "office-xlsx", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add open-octo/octo-agent --skill office-xlsx -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install open-octo/octo-agent office-xlsx --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-octo/octo-agent.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/internal/skills/defaults/office-xlsx .opencode/skills/office-xlsx && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "office-xlsx" agent skill from https://github.com/open-octo/octo-agent/tree/main/internal/skills/defaults/office-xlsx into .opencode/skills/office-xlsx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "office-xlsx", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
office-xlsxCreate, read, and edit Excel (.xlsx) spreadsheets programmatically with openpyxl — cell values, formulas, styling (fonts/fills/borders/alignment/number formats), merged cells, multiple sheets…
Office XLSX is an agent skill from open-octo/octo-agent. Create, read, and edit Excel (.xlsx) spreadsheets programmatically with openpyxl — cell values, formulas, styling (fonts/fills/borders/alignment/number formats), merged cells, multiple sheets, charts, and data validation. Use whenever the user wants a spreadsheet created, inspected, or modified, or references an .xlsx file by name or path.
Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts (for example `PROVENANCE.md`, `scripts/xlsx_edit.py` and `scripts/xlsx_inspect.py`).
It sits in Documents & Office, covering Excel spreadsheets. It works with Microsoft Excel, openpyxl and Python. The repository describes itself as: Open-source, single-binary, self-hosted AI agent — your models and data stay on your machine. A coding agent on par with Claude Code and a personal assistant lighter than… The licence is MIT.
Read from SKILL.md and the folder at commit bbae80e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
uvpipcurlshpython3From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
astral.shAlso links to:
peps.python.orgdocs.astral.shFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Office XLSX loads about 1.8k tokens when it runs. Until then it costs about 88 tokens; SKILL.md has 882 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
what's missing (`uv`, installable via `curl -LsSf https://astral.sh/uv/install.sh | sh` on macOS/Linux or the equivalenAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from open-octo/octo-agent at commit bbae80e, republished under its MIT licence (© open-octo). 882 words, ~1,772 tokens.
.claude/skills/office-xlsx/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Two scripts drive this skill, both built on openpyxl:
scripts/xlsx_inspect.py — read a workbook and print its structure (sheets, dimensions, header row, sample rows, formulas, merged cells) as JSON. Use this first on any existing file so you know what you're working with before editing it.scripts/xlsx_edit.py — create a new workbook or edit an existing one by applying a JSON list of operations (set cell values/formulas, styling, merges, column widths, new sheets, charts, data validation).Both scripts are self-contained: they declare their own dependency (openpyxl) via PEP 723 inline metadata, so uv run installs it into an ephemeral environment automatically — no project venv, no pip install step, nothing left behind on the machine.
uvLook at this session's toolchain note (or run uv --version) before the first script call:
uv present — run scripts directly: uv run <skill-dir>/scripts/xlsx_inspect.py <args>. Dependency install is automatic and silent; don't run a separate pip install openpyxl step, it isn't needed and may not even land in the environment uv run actually uses.uv absent — do not assume python3/pip are available or silently install anything. Tell the user what's missing (uv, installable via curl -LsSf https://astral.sh/uv/install.sh | sh on macOS/Linux or the equivalent on Windows — see https://docs.astral.sh/uv/getting-started/installation/) and wait for their go-ahead before installing. If they'd rather not install uv, the fallback is a manual python3 -m venv/pip install openpyxl and running the scripts with python3 instead of uv run — but only after checking with the user, and only if python3/pip are themselves confirmed present.Note: <skill-dir>/scripts/... paths are relative to this skill's own directory (its absolute path is in the location header injected when this skill is loaded) — they are not relative to the user's working directory. There is no persistent working directory across terminal calls; pass absolute paths for --input/--output/--ops.
uv run <skill-dir>/scripts/xlsx_inspect.py path/to/file.xlsxOptions:
--sheet NAME — inspect one sheet only (default: all sheets)--rows N — number of sample data rows to include per sheet (default: 5)--data-only — read cached formula results instead of formula text (only meaningful if the file was last saved by Excel/LibreOffice; openpyxl never computes formulas itself, so a file saved by openpyxl-only edits has no cached values to show)Output is JSON: for each sheet, its dimensions, header row (best-effort: first non-empty row), sample rows, every formula cell found (address + formula text), and merged cell ranges. Read this before writing any edit operations so cell addresses and sheet names are correct.
uv run <skill-dir>/scripts/xlsx_edit.py --output out.xlsx --ops ops.json
uv run <skill-dir>/scripts/xlsx_edit.py --input existing.xlsx --output out.xlsx --ops ops.json--input to start from a blank workbook. Its one default sheet is named Sheet (not Sheet1) — the first add_sheet op on a blank workbook renames that default sheet instead of leaving an empty extra tab, so give it the name you actually want as your first sheet.--input and --output may be the same path to edit in place.--ops points to a JSON file (or pass inline JSON via --ops-json '...') containing a list of operation objects, applied in order. Supported operations:op | Fields | Effect |
|---|---|---|
add_sheet | name, index (optional) | Create a new sheet |
set_cell | sheet, cell, value | Set one cell; a leading = makes it a formula |
set_row | sheet, row, values (list, appended starting at column A of that row) | Write a whole row at once |
style | sheet, range (single cell or A1:C3), font (bold/italic/size/color/name), fill (color, solid), border (true = thin box), alignment (horizontal/vertical/wrap_text), number_format | Apply formatting to a cell or range |
merge | sheet, range | Merge a cell range |
column_width | sheet, column (letter), width | Set column width |
row_height | sheet, row, height | Set row height |
freeze_panes | sheet, cell | Freeze rows/columns above/left of cell |
data_validation | sheet, range, type, formula1, formula2 (optional), allow_blank (optional) | Add a validation rule (e.g. type: "list" with formula1: '"Yes,No"') |
chart | sheet, type (bar|line|pie), data_range, categories_range, title, anchor, titles_from_data (optional, default true) | Add a chart built from a data range on the same sheet |
Ranges and cell references use normal Excel A1 notation. data_range/categories_range are parsed as Sheet!A1:B5 or, if the sheet is omitted, resolved against the chart's own sheet.
Formulas are not evaluated by openpyxl. set_cell with a =... value writes the formula text; Excel, LibreOffice, or Google Sheets will compute it on open. If a user needs computed values back out of the script (rather than just handing the file to Excel), that requires a spreadsheet engine this skill doesn't bundle — say so rather than approximating a result in Python and hardcoding it into the cell, which would silently go stale the next time an input changes.
When building anything that looks like a financial model (budgets, valuations, projections), keep the spreadsheet self-updating and readable:
=B5*(1+$B$6) rather than =B5*1.05), so a reader can find and change the assumption.style op's font.color field if the user wants this or it matches an existing template's convention.Inherited from openpyxl itself: no VBA macro execution, no live external data connections, and pivot tables/sparklines are not supported by these scripts.
© open-octo, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (scripts) in internal/skills/defaults/office-xlsx of open-octo/octo-agent.
Open the folder on GitHubat commit bbae80e
Office XLSX next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Office XLSX this skillopen-octo/octo-agent | 125 | — | ~1.8k | Automated safety check: Notes | MIT | |
| Excel Workbook EditorTokenRhythm/opensquilla | 7.1k | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Kimi XLSXthvroyal/kimi-skills | 238 | — | ~9.5k | Automated safety check: Pass | None | |
| Cc Streaming Export Safetydoccker/cc-use-exp | 1.1k | — | ~2.2k | Automated safety check: Pass | Custom licence | |
| XLSXnexus-research-lab/nexus | 151 | — | ~501 | Automated safety check: Pass | Apache-2.0 | |
| Office XLSXsingula-ai/alego | 109 | 1 repos | ~2.3k | Automated safety check: Pass | MIT |
TokenRhythm/opensquilla
Inspects, edits in place or creates Microsoft Excel .xlsx workbooks with openpyxl, treating each cell as a typed number, string, datetime or formula value.
thvroyal/kimi-skills
Specialized utility for advanced manipulation, analysis, and creation of spreadsheet files, including (but not limited to) XLSX, XLSM, CSV formats.
doccker/cc-use-exp
当实现用户驱动的大文件导出或批量序列化(Excel/CSV/JSON/JSONL/PDF,数据量未知或超过 1 万行/10 MB)时触发;普通小文件下载、静态资源下载、非导出 Writer/Report 类不触发。防止 OOM、临时文件残留、同步导出阻塞 HTTP 线程和表格公式注入。
nexus-research-lab/nexus
只要电子表格文件(.xlsx、.xlsm、旧版 .xls、.csv、.tsv)是任务的主要输入或输出,或者需要 被打开、读取、创建、修改,就使用本 Skill。也适用于公式、格式、图表、数据清洗和表格格式转换。
singula-ai/alego
Read, create, and modify Excel workbooks (.xlsx), including data, formulas, formatting, and pandas analysis.
theexperiencecompany/gaia
Generate an Excel (.xlsx) workbook or a CSV file: tables, financial models, data exports, formatted reports with charts.
open-octo/octo-agent
Acquire images as files — generate them with an AI image model (14 providers: OpenAI/gpt-image, Gemini, Qwen, Zhipu, Volcengine, Stability, FLUX, Ideogram, MiniMax, and more), search openly-licensed…
open-octo/octo-agent
Design guidance for any HTML/Markdown file shown in octo's Artifacts panel — reports, dashboards, architecture/system diagrams, generated UIs, slide-style pages, 3D scenes.
open-octo/octo-agent
Review local code changes. An agent skill from open-octo/octo-agent.
open-octo/octo-agent
AI-driven multi-format SVG content generation system. An agent skill from open-octo/octo-agent.
open-octo/octo-agent
Configure octo's global settings through guided conversation — set up AI model endpoints (providers, API keys, models), adjust agent defaults (reasoning effort, permission mode, coauthor, workspace…
open-octo/octo-agent
审阅合同条款、识别风险点、给出修改建议。Use when 用户贴出或上传合同文本要求审查, 或提到"合同审查""帮我看看这份合同""这条款有没有问题""重大不利条款""合同风险" "review this contract"等。覆盖服务协议、劳动合同、保密协议(NDA)、采购合同、 租赁合同等常见合同类型,风险条款库为中英双语。仅做通俗的条款风险提示,…
Works with
Categories
Create, read, and edit Excel (.xlsx) spreadsheets programmatically with openpyxl — cell values, formulas, styling (fonts/fills/borders/alignment/number formats), merged cells, multiple sheets…. Office XLSX is an agent skill from open-octo/octo-agent.xlsx) spreadsheets programmatically with openpyxl — cell values, formulas, styling (fonts/fills/borders/alignment/number formats), merged cells, multiple sheets, charts, and data validation.
Office XLSX fits situations like: the user wants a spreadsheet created; references an .xlsx file by name.
Run `npx skills add open-octo/octo-agent --skill office-xlsx -a claude-code`. Or copy the skill folder (internal/skills/defaults/office-xlsx in open-octo/octo-agent) into .claude/skills/office-xlsx in your project. Claude Code loads it when a task matches its description.
Run `npx skills add open-octo/octo-agent --skill office-xlsx -a codex`. Or copy the skill folder (internal/skills/defaults/office-xlsx in open-octo/octo-agent) into .agents/skills/office-xlsx in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add open-octo/octo-agent --skill office-xlsx -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/office-xlsx, .gemini/skills/office-xlsx, .github/skills/office-xlsx and .opencode/skills/office-xlsx in your project.
Going by SKILL.md and its folder, Office XLSX needs Python for the scripts in its folder and the command-line tools its instructions call (uv, pip, curl, sh and python3). Our summary lists: Python 3.
SKILL.md names 3 domains. In commands or code: astral.sh; the agent is likely to contact it when it follows the instructions. As links in the text: peps.python.org and docs.astral.sh. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pipes a well-known installer script into a shell), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Office XLSX is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Office XLSX: Excel Workbook Editor (TokenRhythm/opensquilla, 7.1k stars), Kimi XLSX (thvroyal/kimi-skills, 238 stars), Cc Streaming Export Safety (doccker/cc-use-exp, 1.1k stars) and XLSX (nexus-research-lab/nexus, 151 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
open-octo (a GitHub organization) maintains it in open-octo/octo-agent, which has 125 GitHub stars. The repository holds 40 skills in this directory. The repository was last updated on October 10, 2026.
Source: open-octo/octo-agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.