microsoft-office
Skill0 starsChanged 10 days agoMITView on GitHub
Create, read, and edit Word, PowerPoint, and Excel files.
- Deletes or force-pushes
- Installs packages
1 other project uses a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- NousResearch/hermes-agentedited, first seen Nov 1, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 1
- NousResearch/hermes-agent★ 262k100% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository57 other files it gives its agents.
- agent/AGENTS.mdAGENTS.md
- AGENTS.mdAGENTS.md
- cron/AGENTS.mdAGENTS.md
- gateway/AGENTS.mdAGENTS.md
- hermes_cli/AGENTS.mdAGENTS.md
- hermes_platform/AGENTS.mdAGENTS.md
- plugins/AGENTS.mdAGENTS.md
- pm/AGENTS.mdAGENTS.md
- skills/AGENTS.mdAGENTS.md
- tests/AGENTS.mdAGENTS.md
- tools/AGENTS.mdAGENTS.md
- tui_gateway/AGENTS.mdAGENTS.md
- web/AGENTS.mdAGENTS.md
- apple-notesSkill
- apple-remindersSkill
- findmySkill
- imessageSkill
- claude-codeSkill
- codexSkill
- computer-useSkill
- hermes-agentSkill
- architecture-diagramSkill
- ascii-videoSkill
- baoyu-infographicSkill
- claude-designSkill
- humanizerSkill
- local-pngSkill
- manim-videoSkill
- p5jsSkill
- popular-web-designsSkill
- songwriting-and-ai-musicSkill
- sdlc-reviewSkill
- email-inbox-triageSkill
- himalayaSkill
- youtube-contentSkill
- obsidianSkill
- document-to-action-itemsSkill
- google-workspaceSkill
- mapsSkill
- meeting-action-itemsSkill
- pdfSkill
- product-price-monitorSkill
- teams-meeting-pipelineSkill
- weekly-review-planningSkill
- arxivSkill
- competitor-news-monitorSkill
- grounded-citationsSkill
- xurlSkill
- codebase-inspectionSkill
- dogfoodSkill
- githubSkill
- requesting-code-reviewSkill
- simplify-codeSkill
- spikeSkill
- systematic-debuggingSkill
- test-driven-developmentSkill
- blocked-page-recoverySkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 4 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 17
Create, read, edit, and template Word (.docx), PowerPoint (.pptx), and Excel (.xlsx, .csv) files offline with small Python CLIs built on …
- Very specific: line 36
Not for .doc/.ppt/.xls: convert first with soffice --headless --convert-to docx|pptx|xlsx old-file when LibreOffice is installed.
- Very specific: line 38
Not for .odt/.odp/.ods, or WYSIWYG layout work.
- Very specific: line 79
Run every helper with "$PY".
- Very specific: line 82
Never pip install into the interpreter that runs Hermes or into the hermes pm environment one.
- Very specific: line 90
Every helper lives in scripts/, is an argparse CLI with --help, prints JSON to stdout, and exits non-zero on failure.
- Distinctive: line 118
Create, edit, or read with that format's helpers.
- Distinctive: line 120
Verify the result as the reference's Verification section says, then give the user the exact output path.
- Distinctive: line 125
When LibreOffice is installed, convert headlessly:
- Very specific: line 132
Check first with command -v soffice || command -v libreoffice.
- Distinctive: line 148
Encoding: Write specs as UTF-8; the helpers read UTF-8 explicitly.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Microsoft Office Skill
Create, read, edit, and template Word (.docx), PowerPoint (.pptx), and
Excel (.xlsx, .csv) files offline with small Python CLIs built on
python-docx, python-pptx, and openpyxl. Office itself is never needed. It does
not open legacy binary formats (.doc, .ppt, .xls) and does not render
pages without LibreOffice.
When to Use
Pick the format, then read its reference with skill_view before working:
| File | Reference | Typical asks |
.docx | references/word.md | reports, letters, contracts, {{token}} templates, tracked changes, comments |
.pptx | references/powerpoint.md | pitch decks, brand-template decks, chart refreshes, speaker notes, slide PNGs |
.xlsx, .csv | references/excel.md | styled multi-sheet workbooks, formulas, charts, CSV conversion, row/column restructures |
Deeper notes: references/revisions-and-comments.md (Word review markup) and
references/restructuring.md (Excel reference shifting).
- Not for
.doc/.ppt/.xls: convert first withsoffice --headless --convert-to docx|pptx|xlsx old-filewhen LibreOffice is installed. - Not for
.odt/.odp/.ods, or WYSIWYG layout work.
Prerequisites
- Python 3.10+ with
python-docx,python-pptx, andopenpyxl(import namesdocx,pptx,openpyxl). Pick the interpreter with
terminal. Usepythonwhen it already imports the libraries (the Hermes Docker image ships them). Otherwise, whenhermesis on PATH, let Hermes build its shared, pinned documents environment under the Hermes home: it survives container restarts, never touches the Hermes install itself, and is safe to run from several agents at once. When it is not (the terminal runs in a Docker sandbox, which has no Hermes), the block builds a venv in the sandbox home with the same pinned versions. Use this exact block in every document skill so they all share one environment:python -c "import docx, pptx, openpyxl" 2>/dev/null && PY=python || if command -v hermes >/dev/null 2>&1; then PY="$(hermes pm environment documents --extra documents --extra documents-pdf)" else PY="$HOME/.cache/hermes-docs-venv/bin/python" "$PY" -c "import docx, openpyxl, pptx, reportlab, pypdf, pdfplumber, pypdfium2" 2>/dev/null || ( # Safe to run from several agents at once: each caller builds a private venv, # a symlink publishes the first finished one atomically, the others delete theirs; # a published build is replaced and deleted only while it still fails to import. mkdir -p "$HOME/.cache" && cd "$HOME/.cache" && stage="$(mktemp -d hermes-docs-venv.XXXXXX)" || exit 1 old="$(readlink hermes-docs-venv)" # the published build, if any (another agent may have just published it) python3 -m venv "$stage" && "$stage/bin/python" -m pip install -q --disable-pip-version-check python-docx==1.2.0 openpyxl==3.1.5 python-pptx==1.0.2 reportlab==5.1.0 pypdf==6.21.2 pdfplumber==0.11.10 pypdfium2==5.14.0 && "$stage/bin/python" -c "import docx, openpyxl, pptx, reportlab, pypdf, pdfplumber, pypdfium2" && if [ -z "$old" ]; then python3 -c 'import os, sys; os.symlink(*sys.argv[1:])' "$stage" hermes-docs-venv elif [ "$(readlink hermes-docs-venv)" = "$old" ] && ! "$old/bin/python" -c "import docx, openpyxl, pptx, reportlab, pypdf, pdfplumber, pypdfium2" 2>/dev/null; then ln -s "$stage" "$stage.lnk" && python3 -c 'import os, sys; os.replace(*sys.argv[1:])' "$stage.lnk" hermes-docs-venv && case "$old" in hermes-docs-venv.??????) rm -rf "$old" ;; esac fi 2>/dev/null [ "$(readlink hermes-docs-venv)" = "$stage" ] || rm -rf "$stage" "$stage.lnk" ) fi export PY "$PY" scripts/docx_create.py --helpRun every helper with
"$PY". In PowerShell (Hermes runs on that host, so it is on PATH):$env:PY = hermes pm environment documents --extra documents --extra documents-pdf. Neverpip installinto the interpreter that runs Hermes or into thehermes pm environmentone; Hermes owns both.- Optional: LibreOffice (
soffice) for PDF export, Excel recalculation, and slide rendering, plus poppler (pdftoppmorpdftocairo) for slide PNGs. The helpers that need them report what is missing and exit 0.
How to Run
Every helper lives in scripts/, is an argparse CLI with --help, prints
JSON to stdout, and exits non-zero on failure. Run them with terminal from
the skill directory. Author JSON specs with write_file; read results with
read_file or straight from stdout.
"$PY" scripts/docx_create.py spec.json out.docx
"$PY" scripts/pptx_create.py deck.json out.pptx
"$PY" scripts/xlsx_create.py spec.json report.xlsxQuick Reference
| Task | Word | PowerPoint | Excel |
| Create from JSON spec | docx_create.py | pptx_create.py | xlsx_create.py, csv_to_xlsx.py |
| Read back | docx_read.py --text/--structure | pptx_read.py --outline | xlsx_read.py --sheets/--json |
| Edit | docx_edit.py | pptx_edit.py | xlsx_edit.py, xlsx_restructure.py |
| Fill a template | docx_template.py | pptx_from_template.py | — |
| Review / check | docx_revisions.py, docx_comments.py, docx_validate.py | pptx_render.py (slide PNGs) | xlsx_recalc.py, xlsx_to_csv.py |
The per-format reference has the full flag table.
Procedure
- Identify the format from the file extension or the ask, and load its
reference (
skill_viewwithfile_path=references/<format>.md). - Set
PYwith the Prerequisites block once per session. - Create, edit, or read with that format's helpers; pass an output path to keep the original whenever the helper supports one.
- Verify the result as the reference's Verification section says, then give the user the exact output path.
Converting to PDF
When LibreOffice is installed, convert headlessly:
soffice --headless --convert-to pdf --outdir out/ file.docx # also .pptx, .xlsx
soffice --headless --convert-to csv --outdir out/ report.xlsx # first sheet onlyCheck first with command -v soffice || command -v libreoffice. Fonts not on
the host are substituted, so render-check decks before shipping. There is no
pure-Python path to PDF for any of these formats: if soffice is missing, say
so rather than approximating. For other sheets use
xlsx_to_csv.py --sheet NAME.
Pitfalls
- Never unzip-and-edit the XML. These files are zip packages; raw text
substitution corrupts them. Edit through the helpers (or the libraries) and
use
patch/write_fileonly for JSON inputs. - Text is split into runs. Word and PowerPoint fragment text at edit boundaries; the replace helpers merge equal-format runs first, but a match across differently formatted runs takes the first run's formatting.
- Nothing computes fields or formulas. Word TOC/page fields and Excel
formulas are filled in by the office app on open (or by
xlsx_recalc.py). - Encoding. Write specs as UTF-8; the helpers read UTF-8 explicitly.
- Format-specific traps are in each reference.
Verification
- Re-read every output with the format's read helper and check the expected content is there and the old content is gone.
- Word:
docx_validate.py out.docxexits 0 after revision, comment, or field surgery. - PowerPoint: render with
pptx_render.pyand check each PNG withvision_analyzewhen the render tools exist. - Excel:
xlsx_read.py --formulaslists written formulas; runxlsx_recalc.pywhen cached values matter. - The bundled tests are the full contract:
"$PY" -m pytest tests/ -q(needs pytest in that interpreter).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

