Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/CODE-SAURABH/OpenSkillsnpx agentmods add skills/code-saurabh/openskills/xlsxWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/code-saurabh/openskills/xlsx)<a href="https://agentmods.dev/skills/code-saurabh/openskills/xlsx"><img src="https://agentmods.dev/badge/skills/code-saurabh/openskills/xlsx/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/code-saurabh/openskills/xlsx"><img src="https://agentmods.dev/badge/skills/code-saurabh/openskills/xlsx.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00113 | $0.03677 |
| Opus 5.5 | $0.00045 | $0.01471 |
| Sonnet 5.5 | $0.00023 | $0.00735 |
| Haiku 4.5 | $0.00011 | $0.00368 |
Grade A, and why
xlsx scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
result = subprocess.run(["markitdown", "file.xlsx"], capture_output=True, text=True) How it starts
The opening of the file, as written. The whole thing — 365 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Excel / XLSX Spreadsheets
A .xlsx file is a ZIP archive of XML. Work with it programmatically using openpyxl (formulas + formatting) or pandas (bulk data). Choose the right tool for the job and apply it precisely.
| Task | Tool |
|---|---|
| Create or edit with formulas and formatting | openpyxl |
| Bulk data in/out, pivot analysis | pandas (read_excel, to_excel) |
| Quick read of content | markitdown file.xlsx |
| Reading both formulas AND cached values | Two load_workbook passes — see gotchas |
openpyxl,pandas, andmarkitdownare typically pre-installed. Import directly. Only runpip installif an import fails.
Non-Negotiable Standards
Every spreadsheet delivered must meet these standards:
- Professional font throughout. Arial or Calibri for data, Times New Roman for formal reports. No default Calibri 11 unless that is the existing convention.
- Zero formula errors. Never ship while
recalcshows errors. A#DIV/0!,#REF!, or#NAME?in a delivered file is a failure. - Use formulas, not hardcoded results. Write
=SUM(B2:B9), not the Python-computed value. The sheet must recalculate when inputs change. - Follow the user's spec literally. Exact tab names, exact column headers, exact formula logic. Never redesign what was asked.
- Document every assumption. Hardcoded numbers need a cell comment or adjacent label with the source. "Source: Company 10-K, FY2024, Page 45" is correct. Unexplained magic numbers are not.
- Input cells need a legend. If you create a template for someone to fill in, add a legend naming which cells to edit and include one example row showing expected format.
- Editing existing files: match conventions exactly. Find the designated input cells (usually distinguished by font color or fill). Write only there. Leave all existing formulas untouched.
Reading a Spreadsheet
import subprocess
# Quick content read (no cell coordinates — use for overview only)
result = subprocess.run(["markitdown", "file.xlsx"], capture_output=True, text=True)
print(result.stdout)
# Read into pandas (values only, no formulas)
import pandas as pd
df = pd.read_excel("file.xlsx", sheet_name="Sheet1")
print(df.head())
print(df.dtypes)
# Read formulas (openpyxl — formulas as strings, no cached values)
import openpyxl
wb = openpyxl.load_workbook("file.xlsx")
ws = wb["Sheet1"]
print(ws["B10"].value) # prints the formula string e.g. "=SUM(B2:B9)"
# Read cached values (openpyxl data_only — values only, no formulas)
# WARNING: data_only=True is destructive if you save — loses all formulas
wb_vals = openpyxl.load_workbook("file.xlsx", data_only=True)
ws_vals = wb_vals["Sheet1"]
print(ws_vals["B10"].value) # prints the last-saved calculated value
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 365 lines · 113 tokens per session scan A 31fb339076b3
xlsx is a skill published in the GitHub repository CODE-SAURABH/OpenSkills (3 stars, last pushed 2mo ago), licensed MIT. It adds 113 tokens to every session and 3,677 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
fill-template
Use when the user wants to "fill in this letter for each person", "mail merge", "generate letters for this list", "turn this filled letter into a template", or hands over a template plus a list. Bulk-fills ONE master template — a Word (.docx) letter/form or an Excel (.xlsx) form — from a data table, one filled file…
people-enrichment
Use when the user has a list of names or companies and wants their job, employer, work history, LinkedIn URLs or company profiles looked up, or wants to find people or companies matching criteria — trigger on phrases like "enrich these contacts", "find their LinkedIn", "look up these people", "who works at X", "find…
spreadsheet-analysis
Inspect, profile, clean, reconcile, analyze, visualize, and verify spreadsheet data while preserving formulas, formatting, types, and source files. Use when working with .xlsx, .xlsm, .xls, .ods, .csv, or .tsv files; answering questions from a workbook; auditing formulas or data quality; comparing sheets or versions…
format-data-to-copy-paste-tables
Convert unstructured text, emails, or receipts into consistent CSV or TSV rows for a spreadsheet.
income-tax-hometax
A Korean workflow for comprehensive income-tax filing through Hometax, South Korea's online tax service. It covers income checks, expense methods, deductions, spreadsheet reconciliation, and final review before submission.
receipt-classify-kr
A tool for classifying receipts, card payments, and cash expenses for businesses in South Korea. It suggests accounting categories and identifies possible VAT and income-tax treatment.