Install skills
This bundle targets Windows 10/11 64-bit, Ubuntu 20.04/22.04/24.04 64-bit (also usable on Debian and WSL Ubuntu) and macOS 12+ (the pptx skill's markitdown stack needs macOS 13+), and installs the full Office skill set — currently the Word (docx), Excel (xlsx), PowerPoint (pptx) and PDF skills — plus everything the skills need: the .NET SDK and offline NuGet feed for docx, Python wheels (pandas/openpyxl for xlsx, markitdown for pptx, reportlab/pypdf/matplotlib for pdf), Node.js with prebuilt PptxGenJS and Playwright module trees plus a Chromium build for pdf covers, and one shared LibreOffice 26.2.5.
Install with CoDev Hub (recommended)
With CoDev Hub installed, one command replaces the whole download-and-run routine:
npm i -g codev-ai
codevhub skill office| Option | Effect |
|---|---|
--download-only | Fetch the script + bundle and print the run command, without installing |
--platform ubuntu|macos|windows | Fetch another OS's bundle — when it differs from this machine, the installer is never run here (useful for staging the files for a different machine) |
--arch arm64|x86_64 | Which Mac chip's bundle to fetch. Only needed with --platform macos from a non-Mac — on a Mac the chip is detected for you (including through Rosetta) |
--dir <path> | Download folder (default: C:\Users\Public\Downloads\codev-office on Windows, ~/.codev-hub/office on Ubuntu/macOS) |
--skip-verify | Passed to the setup script: skip the end-to-end test documents |
--force-skills | Passed to the setup script: replace already-installed skills with the bundled versions |
On Windows, codevhub skill office does not launch the installer itself —
corporate endpoint protection (e.g. Kaspersky) is known to block installers
started any other way. Instead, the command downloads everything into
C:\Users\Public\Downloads\codev-office — the same path for every account,
so the files are never hidden under a different user's profile — and prints
the exact install command. Then:
-
Run the following command in any PowerShell window to open an elevated ("Run as administrator") PowerShell:
Start-Process powershell -Verb RunAsIn the UAC dialog
Always click More choices → Use a different account, then enter the admin username and password. The account UAC offers by default is often the current (non-admin) user, whose password cannot approve the prompt.
If no UAC dialog appears and a new window simply opens, check its title bar: an elevated one reads Administrator: Windows PowerShell. Without that word you are still your ordinary account, and step 2 needs a different command — that case and the already-installed one are covered in the boxes directly below it.
-
Copy the two commands codevhub printed and run them in that window — a
cdinto the download folder, then the install command:cd "C:\Users\Public\Downloads\codev-office" powershell -ExecutionPolicy Bypass -File .\codev-office-windows-setup.ps1When "Run as administrator" is not available
On some managed machines
Start-Process powershell -Verb RunAsshows no UAC dialog and opens a new PowerShell window straight away — still running as your ordinary account, not elevated. The way round it is to sign out and sign back in as an admin account, and install from there. Add-TargetUserto the command above, naming the account that will actually use the skills:cd "C:\Users\Public\Downloads\codev-office" powershell -ExecutionPolicy Bypass -File .\codev-office-windows-setup.ps1 -TargetUser <your-username>Run that from an elevated PowerShell inside the admin session (right-click PowerShell → Run as administrator).
-TargetUseris refused without elevation, because thePATH,NODE_PATHandLANGsettings would otherwise be written for the admin rather than for you — leaving an install that reports success and still does not work.Forget the flag and the script asks before it starts, listing the accounts on the machine. If it was already installed without the flag, see below.
Already installed into the wrong account?
When a machine was set up from an admin session without
-TargetUser, the skills,NuGet.Configand — if that PowerShell was not elevated — thePATH,NODE_PATHandLANGsettings all sit in the admin's profile. Sign in as the admin again, then run these two commands:codevhub skill office --uninstall --skills-only --yes codevhub skill office --target-user <their-username>Run the first, paste what it prints into an elevated PowerShell, and wait for
codev-office uninstall finished. Then run the second, paste that, and wait forcodev-office setup complete.The re-run will not fix
LANG: it finds the value the first run left on the admin account and leaves it alone. Set it machine-wide by hand, in the same elevated window:[Environment]::SetEnvironmentVariable("LANG","en_US.UTF-8","Machine") [Environment]::SetEnvironmentVariable("LANG",$null,"User")Then reboot, sign in as the real user, and confirm the four skills are in their own
C:\Users\<their-name>\.claude\skillsbefore starting CoDev Code. -
Wait for the green
codev-office setup completeclosing message.
The command detects your OS and downloads the matching setup script and bundle zip into the download folder above. On Ubuntu and macOS it then hands the terminal to the setup script directly; on Windows you run the same script yourself as shown above — either way it is the one described in Install with one script below, so everything there applies: the post-install reboot on Windows and the built-in verification step.
The bundles are large (~1.2 GB Ubuntu, ~1.4 GB Windows, ~1.6 GB macOS), so the download may take a while. An interrupted download resumes where it left off, and a re-run reuses an already-downloaded bundle after checking with the server that it is still the published version.
macOS has one bundle per chip — Apple Silicon and Intel each get ~1.6 GB.
codevhub skill office picks yours automatically.
Install the skills into an agent
CoDev Hub, the one-script install and Step 3 of the manual path below all place the four skills in CoDev Code's global folder — a standard CoDev Code setup needs nothing more. This section covers pointing other agents at the skills, plus CoDev Code's non-default layouts.
Don't have the skill folders yet? Take the bundle zip from
Download the files below and extract it — inside are
minimax-docx-skill.zip, minimax-xlsx-skill.zip, pptx-generator-skill.zip
and minimax-pdf-skill.zip. Unzip each one to get the four skill folders the
paths below refer to; no other file in the bundle is needed just to place the
skills.
The examples below show minimax-docx; minimax-xlsx, pptx-generator and
minimax-pdf install the same way. The
folder name must match the name in the skill's SKILL.md — a mismatch raises a
name-mismatch error.
💡 One install for every agent: all four agents below (CoDev Code, OpenCode, Codex, Cursor) scan the shared
.agents/skills/(project) and~/.agents/skills/(global) directories. Install the skills there once and every agent sees them.
CoDev Code
Locations CoDev Code scans:
# Project scope (CoDev scans from the working directory up to the repo root):
<project>/.codev/skills/minimax-docx/SKILL.md
# Global (all projects) — where the setup script installs:
~/.claude/skills/minimax-docx/SKILL.mdAdditional notes:
- CoDev Code accepts both
skill/andskills/directory names inside.codev/. - Skills placed under
.claude/skills/and~/.claude/skills/(Claude Code layout) or.agents/skills/are picked up automatically as well — one skill set can serve multiple agents without copying. - To point at skill folders anywhere else (e.g. an internal network share), declare
them in
codev.json:
{ "skills": { "paths": ["~/team-skills", "/mnt/share/skills"] } }The agent discovers the skill through the native skill tool and loads the full
content on demand when a task matches the description.
Optional permission control in codev.json / codev.jsonc:
{ "permission": { "skill": { "minimax-docx": "allow" } } }OpenCode
Copy the whole skill folder into one of the locations OpenCode scans:
# Project scope:
<project>/.opencode/skills/minimax-docx/SKILL.md
# Global (all projects):
~/.config/opencode/skills/minimax-docx/SKILL.mdOpenCode also picks up skills placed under .claude/skills/ and .agents/skills/
(same layout). The agent discovers it through the native skill tool and loads the
full content on demand when a task matches the description.
Optional permission control in opencode.json:
{ "permission": { "skill": { "minimax-docx": "allow" } } }Claude Code
# Project scope:
<project>/.claude/skills/minimax-docx/SKILL.md
# Global:
~/.claude/skills/minimax-docx/SKILL.mdClaude Code loads the skill automatically when your request matches its
description/triggers, or invoke it explicitly with /minimax-docx <request>.
Codex (OpenAI)
Codex (CLI and IDE extension) scans skills in this order:
# Repository scope (scanned from the current directory up to the repo root):
<project>/.agents/skills/minimax-docx/SKILL.md
# Global:
~/.agents/skills/minimax-docx/SKILL.md
# System-wide (admin-provisioned for all users — useful for internal IT rollouts):
/etc/codex/skills/minimax-docx/SKILL.mdInvocation: type $minimax-docx in Codex to invoke explicitly, or let Codex
select the skill implicitly when your task matches its description.
Disable/enable without deleting — add to ~/.codex/config.toml:
[[skills.config]]
path = "/path/to/minimax-docx/SKILL.md"
enabled = falseNote: an optional agents/openai.yaml inside the skill folder controls UI display,
and allow_implicit_invocation: false restricts it to explicit $ invocation only.
Cursor
Cursor (since 2.4) scans skills at:
# Project scope (shared via Git):
<project>/.cursor/skills/minimax-docx/SKILL.md
<project>/.agents/skills/minimax-docx/SKILL.md
# Global (personal, all projects):
~/.cursor/skills/minimax-docx/SKILL.md
~/.agents/skills/minimax-docx/SKILL.mdCursor also reads the legacy locations .claude/skills/ and .codex/skills/
(plus their home-directory equivalents) — skills installed for Claude Code/Codex
are reused as-is.
Invocation: the agent applies the skill automatically when the context matches its
description, or type / in Agent chat and search for the skill name.
Cursor-specific optional frontmatter: paths (scope the skill to file globs) and
disable-model-invocation: true (manual invocation only, like a slash command).
Other agents
Any agent supporting the Agent Skills convention (SKILL.md with name/description
frontmatter) works. If an agent lacks native support, the minimal approach is to point
it at SKILL.md in the system prompt / at session start and make sure it can run
terminal commands.
Post-install check
Tell the agent:
"Check whether the minimax-docx skill is ready"
The agent must run bash scripts/env_check.sh and report READY — the same check
Step 8 below runs by hand. The first run takes longer (NuGet restore + build); later
runs take seconds.
Download the files
Skipping CoDev Hub? Each operating system needs two files — the setup script and the bundle zip. Download both into the same folder.
The script extracts the zip automatically, then installs everything in one run.
Inside codev-office-windows.zip:
| File / folder | Package | Required? | Purpose |
|---|---|---|---|
minimax-docx-skill.zip | The Word (docx) skill | ✅ Required | Unzipped into CoDev Code's skills folder |
minimax-xlsx-skill.zip | The Excel (xlsx) skill | ✅ Required | Unzipped into CoDev Code's skills folder |
pptx-generator-skill.zip | The PowerPoint (pptx) skill | ✅ Required | Unzipped into CoDev Code's skills folder |
minimax-pdf-skill.zip | The PDF skill | ✅ Required | Unzipped into CoDev Code's skills folder |
dotnet-sdk-8.0.423-win-x64.exe | .NET SDK 8.0.423 (x64) | ✅ Required | Runs/builds the docx skill's CLI |
nuget-offline-feed\ | 6 NuGet packages (.nupkg) | ✅ Required | OpenXML libraries for dotnet restore |
python-3.14.6-amd64.exe | Python 3.14.6 (x64) | ✅ Required | Runs the xlsx skill's scripts |
python-wheels\ | pandas + numpy + openpyxl, markitdown[pptx], and reportlab + pypdf + matplotlib wheels (CPython 3.10–3.14) | ✅ Required | xlsx READ/analysis, the pptx read/edit/required-QA paths (markitdown + its defusedxml dependency), and pdf generation (installed offline via pip) |
node-v24.15.0-x64.msi | Node.js 24 LTS (x64) | ⚪ Optional | Runs PptxGenJS (pptx decks) and Playwright (pdf covers) |
pptxgenjs-node-modules.zip | PptxGenJS, prebuilt module tree | ⚪ Optional | pptx create-from-scratch path — installed as-is, no npm or internet needed |
playwright-node-modules.zip | Playwright, prebuilt module tree | ⚪ Optional | pdf cover rendering — installed as-is, no npm or internet needed |
ms-playwright-chromium.zip | Playwright's Chromium build (win64) | ⚪ Optional | Headless browser for pdf cover rendering — unpacked into Playwright's cache |
Git-2.55.0.3-64-bit.exe | Git for Windows 2.55 | ✅ Strongly recommended | Provides Git Bash to run the docx skill's .sh scripts |
pandoc-3.10.1-windows-x86_64.msi | pandoc 3.10.1 | ⚪ Optional | Preview docx content (docx_preview.sh) |
LibreOffice_26.2.5_Win_x86-64.msi | LibreOffice 26.2.5 | ⚪ Optional | Convert legacy .doc → .docx (doc_to_docx.sh); recalculate xlsx formulas (libreoffice_recalc.py) |
The script extracts the zip automatically, then installs everything in one run.
Inside codev-office-ubuntu.zip:
| File / folder | Package | Required? | Purpose |
|---|---|---|---|
minimax-docx-skill.zip | The Word (docx) skill | ✅ Required | Unzipped into CoDev Code's skills folder |
minimax-xlsx-skill.zip | The Excel (xlsx) skill | ✅ Required | Unzipped into CoDev Code's skills folder |
pptx-generator-skill.zip | The PowerPoint (pptx) skill | ✅ Required | Unzipped into CoDev Code's skills folder |
minimax-pdf-skill.zip | The PDF skill | ✅ Required | Unzipped into CoDev Code's skills folder |
dotnet-sdk-8.0.423-linux-x64.tar.gz | .NET SDK 8.0.423 (linux-x64) | ✅ Required | Runs/builds the docx skill's CLI |
nuget-offline-feed/ | 6 NuGet packages (.nupkg) | ✅ Required | OpenXML libraries for dotnet restore |
python-wheels/ | pandas + numpy + openpyxl, markitdown[pptx], and reportlab + pypdf + matplotlib wheels (CPython 3.10–3.14) | ✅ Required | xlsx READ/analysis, the pptx read/edit/required-QA paths (markitdown + its defusedxml dependency), and pdf generation (installed offline via pip; Ubuntu already ships python3) |
node-v24.15.0-linux-x64.tar.gz | Node.js 24 LTS (linux-x64) | ⚪ Optional | Runs PptxGenJS (pptx decks) and Playwright (pdf covers) |
pptxgenjs-node-modules.zip | PptxGenJS, prebuilt module tree | ⚪ Optional | pptx create-from-scratch path — installed as-is, no npm or internet needed |
playwright-node-modules.zip | Playwright, prebuilt module tree | ⚪ Optional | pdf cover rendering — installed as-is, no npm or internet needed |
ms-playwright-chromium.zip | Playwright's Chromium build (linux-x64) | ⚪ Optional | Headless browser for pdf cover rendering — unpacked into Playwright's cache |
pandoc-3.10.1-1-amd64.deb | pandoc 3.10.1 | ⚪ Optional | Preview docx content (docx_preview.sh) |
LibreOffice_26.2.5_Linux_x86-64_deb.tar.gz | LibreOffice 26.2.5 (.deb set) | ⚪ Optional | Convert legacy .doc → .docx (doc_to_docx.sh); recalculate xlsx formulas (libreoffice_recalc.py) |
There is one bundle per chip — download the one matching yours. Check via
menu → About This Mac, or run uname -m in Terminal: arm64 means
Apple Silicon (M1/M2/M3/M4), x86_64 means Intel.
One setup script serves both chips: it reads uname -m and uses whichever
bundle is next to it, so there is nothing to choose beyond the zip above.
The script extracts the zip automatically. Each bundle carries only its own chip's builds — the file names below show both, but you will see just yours:
| File / folder | Package | Required? | Purpose |
|---|---|---|---|
minimax-docx-skill.zip | The Word (docx) skill | ✅ Required | Unzipped into CoDev Code's skills folder |
minimax-xlsx-skill.zip | The Excel (xlsx) skill | ✅ Required | Unzipped into CoDev Code's skills folder |
pptx-generator-skill.zip | The PowerPoint (pptx) skill | ✅ Required | Unzipped into CoDev Code's skills folder |
minimax-pdf-skill.zip | The PDF skill | ✅ Required | Unzipped into CoDev Code's skills folder |
dotnet-sdk-8.0.423-osx-arm64.pkg or …-osx-x64.pkg | .NET SDK 8.0.423 (your chip's build) | ✅ Required | Runs/builds the docx skill's CLI |
nuget-offline-feed/ | 6 NuGet packages (.nupkg) | ✅ Required | OpenXML libraries for dotnet restore |
python-3.14.6-macos11.pkg (Apple Silicon) or python-3.13.14-macos11.pkg (Intel) | Python 3.14.6 or 3.13.14 | ✅ Required | Runs the xlsx and pptx skills' Python side. The version differs by chip on purpose: onnxruntime, the native runtime behind markitdown, added Python 3.14 support in the same release that dropped Intel-mac wheels |
python-wheels/ | pandas + numpy + openpyxl, markitdown[pptx], and reportlab + pypdf + matplotlib wheels for your chip (CPython 3.10–3.14; 3.10–3.13 on Intel) | ✅ Required | xlsx READ/analysis, the pptx read/edit/required-QA paths (markitdown + its defusedxml dependency), and pdf generation (installed offline via pip) |
node-v24.15.0.pkg | Node.js 24 LTS (universal — both chips) | ⚪ Optional | Runs PptxGenJS (pptx decks) and Playwright (pdf covers) |
pptxgenjs-node-modules.zip | PptxGenJS, prebuilt module tree | ⚪ Optional | pptx create-from-scratch path — installed as-is, no npm or internet needed |
playwright-node-modules.zip | Playwright, prebuilt module tree | ⚪ Optional | pdf cover rendering — installed as-is, no npm or internet needed |
ms-playwright-chromium.zip | Playwright's Chromium build for your chip | ⚪ Optional | Headless browser for pdf cover rendering — unpacked into Playwright's cache. Needs macOS 14+ (Playwright ships no Chromium below it) |
pandoc-3.10.1-arm64-macOS.pkg or …-x86_64-macOS.pkg | pandoc 3.10.1 (your chip's build) | ⚪ Optional | Preview docx content (docx_preview.sh) |
LibreOffice_26.2.5_MacOS_aarch64.dmg or …_x86-64.dmg | LibreOffice 26.2.5 (your chip's build) | ⚪ Optional | Convert legacy .doc → .docx (doc_to_docx.sh); recalculate xlsx formulas (libreoffice_recalc.py) |
Install with one script
Every bundle installs with a single script — pick your operating system's tab.
(codevhub skill office downloads this same script for you — and runs it on
Ubuntu/macOS, or prints the command to run on Windows; this section is for the
by-hand route, and for understanding what the install actually does.)
The numbered steps further down are the full manual fallback.
Everything in the Windows table above is installed by one script, which first
extracts codev-office-windows.zip on its own. Then:
-
Run the following command in any PowerShell window to open an elevated ("Run as administrator") PowerShell:
Start-Process powershell -Verb RunAs -
cdinto the folder holding the script and the zip, then run the install command:cd "<download-folder>" powershell -ExecutionPolicy Bypass -File .\codev-office-windows-setup.ps1 -
Wait for the green
codev-office setup completeclosing message.
In the UAC dialog
Always click More choices → Use a different account, then enter the admin username and password. The account UAC offers by default is often the current (non-admin) user, whose password cannot approve the prompt.
Running non-elevated also works — the script continues, but each installer pops its own UAC prompt (a declined prompt skips that component; that is fatal only for the .NET SDK).
When "Run as administrator" is not available
On some managed machines Start-Process powershell -Verb RunAs shows no UAC
dialog and opens a new PowerShell window straight away — still running as your
ordinary account, not elevated. The way round it is to sign out and sign back in
as an admin account, and install from there. Name the real account
explicitly:
powershell -ExecutionPolicy Bypass -File .\codev-office-windows-setup.ps1 -TargetUser <your-username>Run that from an elevated PowerShell inside the admin session (right-click
PowerShell → Run as administrator). -TargetUser is refused without
elevation, because the PATH, NODE_PATH and LANG settings would otherwise be
written for the admin rather than for you — leaving an install that reports
success and still does not work.
Forget the flag and the script asks before it starts, listing the accounts on the machine. If it was already installed without the flag, see below.
Already installed into the wrong account?
When a machine was set up from an admin session without -TargetUser, the
skills, NuGet.Config and — if that PowerShell was not elevated — the PATH,
NODE_PATH and LANG settings all sit in the admin's profile. Sign in as
the admin again, then run these two commands:
codevhub skill office --uninstall --skills-only --yes
codevhub skill office --target-user <their-username>Run the first, paste what it prints into an elevated PowerShell, and wait
for codev-office uninstall finished. Then run the second, paste that, and wait
for codev-office setup complete.
The re-run will not fix LANG: it finds the value the first run left on the
admin account and leaves it alone. Set it machine-wide by hand, in the same
elevated window:
[Environment]::SetEnvironmentVariable("LANG","en_US.UTF-8","Machine")
[Environment]::SetEnvironmentVariable("LANG",$null,"User")Then reboot, sign in as the real user, and confirm the four skills are in their
own C:\Users\<their-name>\.claude\skills before starting CoDev Code.
| Option | Effect |
|---|---|
-SkipVerify | Skip the end-to-end test documents |
-TargetUser <name> | The account that will use the skills, for when you are signed in as an admin account rather than theirs (see the caution above). Requires an elevated shell |
-SkillsRoot <path> | Where to install the skills (default: the signed-in user's .claude\skills — detected automatically even when the shell is elevated as a different admin account; the global skills folder read by Claude Code and CoDev Code, so the skills work in every project) |
-ModulesDir <path> | Where to install the PptxGenJS/Playwright module tree (default: %PUBLIC%\codev-office\node_modules) |
-ForceSkills | Replace already-installed skills with the bundled versions (default: existing skill folders are left untouched) |
What the script does (after extracting codev-office-windows.zip on first run —
re-runs reuse the extracted folder while it still matches the zip):
- Installs the .NET SDK 8 (required), Git for Windows, pandoc and LibreOffice —
and puts LibreOffice's
sofficeon the PATH fordoc_to_docx.sh(machine PATH when elevated, user PATH otherwise). - Installs Python 3.14.6 when no Python 3.10–3.14 is on PATH, then pip-installs
pandas + openpyxl, markitdown[pptx] and reportlab + pypdf + matplotlib from
the bundled
python-wheelsfolder (fully offline). - Installs Node.js when none ≥ v18 is present, unpacks the prebuilt PptxGenJS
and Playwright module trees into one shared
%PUBLIC%\codev-office\node_modules(identical for every account) with theNODE_PATHvariable pointing at it — machine-wide when elevated, user scope otherwise — sorequire()resolves them from any folder; and unpacks Playwright's Chromium build into a shared%PUBLIC%\codev-office\ms-playwrightcache, pointing thePLAYWRIGHT_BROWSERS_PATHvariable at it (same scope rules) for pdf covers. - Copies
nuget-offline-feedto the shared%PUBLIC%\codev-office\nuget-offline-feedand writes%APPDATA%\NuGet\NuGet.Configpointing only at it — for the account the script runs as and, when elevated as a different admin account, for the signed-in user too (an existing config is backed up toNuGet.Config.bak; re-runs detect the offline feed and leave both untouched). - Unzips
minimax-docx-skill.zip,minimax-xlsx-skill.zip,pptx-generator-skill.zipandminimax-pdf-skill.zipinto the skills folder and builds the docx skill's CLI offline. - Verifies the install by generating a test Word document, by packing and
validating a test spreadsheet, by compiling a one-slide test deck with
PptxGenJS, and by probing the pdf skill's Python/Playwright dependencies;
on success it prints
codev-office setup complete - the skills are ready.
When the script finishes, reboot the computer — the installers update the
system PATH, and some of their changes only take full effect after a restart.
After rebooting, Windows is done — CoDev Code picks up the skills
(optionally run the Step 8 check). The Windows tabs in Steps 1–8 below are the
full manual fallback: use them if the script fails partway or you prefer to
install by hand — first unzip codev-office-windows.zip yourself; the steps use the
files inside it. The manual steps produce exactly the same result as the script.
Everything in the Ubuntu table above is installed by one script, which first
extracts codev-office-ubuntu.zip on its own. From the folder holding the script
and the zip, run:
bash codev-office-ubuntu-setup.shNo root is needed for the required parts — the .NET SDK installs per-user into
~/.dotnet (one optional sudo prompt symlinks it machine-wide; declining keeps a
terminal-only install). The optional pandoc/LibreOffice .deb packages use sudo
too (a declined password prompt skips that component). The script needs unzip (to
unpack the bundle zip and the skill) and checks for it up front (usually
preinstalled; else sudo apt install unzip).
| Option | Effect |
|---|---|
--skip-verify | Skip the end-to-end test documents |
--skills-root <path> | Where to install the skills (default: ~/.claude/skills — the global skills folder read by Claude Code and CoDev Code, so the skills work in every project) |
--force-skills | Replace already-installed skills with the bundled versions (default: existing skill folders are left untouched) |
What the script does (after extracting codev-office-ubuntu.zip on first run —
re-runs reuse the extracted folder while it still matches the zip):
- Extracts the .NET SDK 8 to
~/.dotnet, addsDOTNET_ROOT/PATHexports to~/.bashrc, and symlinks/usr/local/bin/dotnet(one sudo prompt) so non-interactive shells find it too — CoDev Code's shell tool runs/bin/sh, which never reads~/.bashrc. Iflibicuis missing (minimal server images) it enablesDOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1instead. - Installs the optional pandoc and LibreOffice
.debsets — and symlinks/usr/local/bin/soffice(the debs only create a versionedlibreofficeX.Ylink, never plainsoffice). - Checks for a Python 3.10–3.14
python3(Ubuntu ships one), then pip-installs pandas + openpyxl, markitdown[pptx] and reportlab + pypdf + matplotlib from the bundledpython-wheelsfolder (fully offline, with a PEP 668--break-system-packagesfallback on Ubuntu 23.04+). - Extracts Node.js to
~/.node(adding it to~/.bashrcand symlinking/usr/local/bin/node, like dotnet), unpacks the prebuilt PptxGenJS and Playwright module trees into one shared~/.codev-office/node_modules, linked as~/.node_modules— one of Node's globalrequire()fallback folders, sorequire()resolves them from any directory withoutNODE_PATH— and unpacks Playwright's Chromium build into~/.cache/ms-playwrightfor pdf covers. - Copies
nuget-offline-feedto~/nuget-offline-feedand writes NuGet's user-global~/.nuget/NuGet/NuGet.Configpointing only at it (an existing config is backed up toNuGet.Config.bak; re-runs detect the offline feed and leave both untouched). - Unzips
minimax-docx-skill.zip,minimax-xlsx-skill.zip,pptx-generator-skill.zipandminimax-pdf-skill.zipinto the skills folder and builds the docx skill's CLI offline. - Verifies the install by generating a test Word document, by packing and
validating a test spreadsheet, by compiling a one-slide test deck with
PptxGenJS, and by running the pdf skill's
make.sh check; on success it printsVerification passed - codev-office skills are ready.
When the script finishes, Ubuntu is done — restart CoDev Code to pick up the
skills (optionally run the Step 8 check). The Ubuntu tabs in Steps 1–8 below are the
full manual fallback: use them if the script fails partway or you prefer to
install by hand — first unzip codev-office-ubuntu.zip yourself; the steps use the
files inside it.
Everything in the macOS table above is installed by one script — it auto-detects
your chip (uname -m), picks up whichever of the two bundles is next to it and
extracts it on its own, so there is nothing to choose. From the folder holding
the script and the zip, run:
bash codev-office-macos-setup.shThe .NET SDK and pandoc .pkg installers use sudo — enter your admin password
when prompted. A declined prompt skips that component; that is fatal only for the
.NET SDK (it has no non-admin installer). LibreOffice installs by copying the app
bundle, no admin needed.
| Option | Effect |
|---|---|
--skip-verify | Skip the end-to-end test documents |
--skills-root <path> | Where to install the skills (default: ~/.claude/skills — the global skills folder read by Claude Code and CoDev Code, so the skills work in every project) |
--force-skills | Replace already-installed skills with the bundled versions (default: existing skill folders are left untouched) |
What the script does (after extracting codev-office-macos-arm64.zip or
codev-office-macos-x86_64.zip on first run — it reads uname -m to know which
one to expect, and re-runs reuse the extracted folder while it still matches the
zip):
- Installs the .NET SDK 8
.pkgfrom the bundle, then symlinks/usr/local/bin/dotnet— the pkg only puts dotnet on PATH for login shells (via/etc/paths.d), and CoDev Code's shell tool runs/bin/shnon-interactively. - Installs pandoc, and LibreOffice from the
.dmg— clearing the app's quarantine flag (Gatekeeper otherwise blocks the skill's headlesssofficeruns) and symlinking/usr/local/bin/sofficefordoc_to_docx.sh. - Installs Python from the bundled universal2
.pkgwhen no suitable python3 is present (sudo prompt) — 3.14.6 on Apple Silicon (accepts an existing 3.10–3.14), 3.13.14 on Intel (accepts 3.10–3.13: onnxruntime, the native runtime behind markitdown, ships no Intel-mac wheels for Python 3.14) — then pip-installs pandas + openpyxl, markitdown[pptx] and reportlab + pypdf + matplotlib from the bundledpython-wheelsfolder (fully offline). - Installs Node.js from the universal
.pkgwhen none ≥ v18 is present (sudo prompt), unpacks the prebuilt PptxGenJS and Playwright module trees into one shared~/.codev-office/node_modules, linked as~/.node_modules— one of Node's globalrequire()fallback folders, sorequire()resolves them from any directory withoutNODE_PATH— and unpacks Playwright's Chromium build into~/Library/Caches/ms-playwrightfor pdf covers. - Copies
nuget-offline-feedto~/nuget-offline-feedand writes NuGet's user-global~/.nuget/NuGet/NuGet.Configpointing only at it (an existing config is backed up toNuGet.Config.bak; re-runs detect the offline feed and leave both untouched). - Unzips
minimax-docx-skill.zip,minimax-xlsx-skill.zip,pptx-generator-skill.zipandminimax-pdf-skill.zipinto the skills folder and builds the docx skill's CLI offline. - Verifies the install by generating a test Word document, by packing and
validating a test spreadsheet, by compiling a one-slide test deck with
PptxGenJS, and by running the pdf skill's
make.sh check; on success it printsVerification passed - codev-office skills are ready.
When the script finishes, macOS is done — restart CoDev Code to pick up the skills (optionally run the Step 8 check). The macOS tabs in Steps 1–8 below are the full manual fallback: use them if the script fails partway or you prefer to install by hand — first unzip your chip's bundle yourself; the steps use the files inside it, and only your chip's builds are present.
Step 1 — Install .NET SDK 8.0 (required)
Install SDK 8 even if a newer .NET SDK is already on the machine — SDKs
install side-by-side, and only SDK 8 carries the net8.0 targeting packs the
offline build needs (a newer SDK tries to restore them from NuGet, which the
offline feed does not carry — NU1101 errors). dotnet --version prints the
newest SDK, so check with dotnet --list-sdks that an 8.0.x entry exists.
Handled by codev-office-windows-setup.ps1 — manual equivalent:
- Run
dotnet-sdk-8.0.423-win-x64.exe(bundle root) and click Install (needs Admin rights). - Open a new Command Prompt (it must be new to pick up PATH) and check:
dotnet --list-sdksThe list must include an 8.0.x entry.
Handled by codev-office-ubuntu-setup.sh — manual equivalent:
The tar.gz build needs no root — extract and run:
mkdir -p $HOME/.dotnet
tar -xzf dotnet-sdk-8.0.423-linux-x64.tar.gz -C $HOME/.dotnet
# Add to PATH permanently
echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$HOME/.dotnet:$PATH' >> ~/.bashrc
source ~/.bashrc
# ~/.bashrc only applies to interactive bash — CoDev Code's shell tool runs
# /bin/sh non-interactively and never reads it, so also symlink dotnet
# machine-wide (it resolves its install root through the symlink):
sudo ln -sf "$HOME/.dotnet/dotnet" /usr/local/bin/dotnet
# Check
dotnet --list-sdks # must list an 8.0.x entry.NET needs a few system libraries (libicu, libssl, zlib…) — a standard Ubuntu
desktop/server already has them. If dotnet --version reports a missing library,
install it via apt:
sudo apt install libicu-dev libssl3 zlib1g — or, for a missing libicu only, set
export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 as codev-office-ubuntu-setup.sh does.
Handled by codev-office-macos-setup.sh — manual equivalent:
- Identify your chip — it decides which bundle you download, and the
file names inside it. Check via menu → About This Mac, or run
uname -min Terminal:
uname -m result | Chip | Bundle | Files marked |
|---|---|---|---|
arm64 | Apple Silicon (M1/M2/M3/M4) | codev-office-macos-arm64.zip | arm64 / aarch64 |
x86_64 | Intel | codev-office-macos-x86_64.zip | x64 / x86_64 / x86-64 |
- Open the .NET SDK
.pkgin the bundle root — only your chip's build is there:- Apple Silicon:
dotnet-sdk-8.0.423-osx-arm64.pkg - Intel:
dotnet-sdk-8.0.423-osx-x64.pkg
- Apple Silicon:
- Install via the wizard (an admin password is required).
- The pkg only puts dotnet on PATH for login shells (via
/etc/paths.d) — CoDev Code's shell tool runs/bin/shnon-interactively, so also symlink it machine-wide:
sudo ln -sf /usr/local/share/dotnet/dotnet /usr/local/bin/dotnet- Open a new Terminal and check:
dotnet --list-sdks # must list an 8.0.x entryStep 2 — Install Git (strongly recommended)
Handled by codev-office-windows-setup.ps1 — manual equivalent:
- Run
Git-2.55.0.3-64-bit.exe(bundle root), keep every default option, Next all the way. - After installing, right-click in any folder → Open Git Bash here to open Git Bash.
Why it's needed: the skill's operational scripts (env_check.sh, docx_preview.sh,
doc_to_docx.sh) are bash scripts, and Windows needs Git Bash (or WSL) to run them —
CoDev Code's shell tool finds bash.exe relative to git on PATH.
Not needed — Ubuntu already ships bash. Skip this step.
Not needed — macOS already ships bash. Skip this step.
Step 3 — Configure offline NuGet (required)
The skill needs 4 NuGet packages on its first build (documentformat.openxml.3.5.1.nupkg,
documentformat.openxml.framework.3.5.1.nupkg, system.io.packaging.8.0.1.nupkg,
system.commandline.2.0.5.nupkg). Point NuGet at the bundled local folder:
Handled by codev-office-windows-setup.ps1 — manual equivalent:
-
Unzip
minimax-docx-skill.zipto%USERPROFILE%\.claude\skills\minimax-docxandminimax-xlsx-skill.zipto%USERPROFILE%\.claude\skills\minimax-xlsx— the global skills folder, so the skills are available in every project. Both Claude Code and CoDev Code read skills from%USERPROFILE%\.claude\skills\<name>\SKILL.md. A project-scoped install (<project>\.claude\skills\) also works, but this guide installs globally. -
Copy the
nuget-offline-feedfolder to a stable machine-wide path, e.g.C:\nuget-offline-feed. On Windows the feed carries 6 packages — the 4 above plusdocumentformat.openxml.3.2.0.nupkganddocumentformat.openxml.framework.3.2.0.nupkg, the version the skill's C# scripting scaffold (SKILL.md) pins. -
Create
%APPDATA%\NuGet\NuGet.Config(back up any existing file first) containing:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="offline" value="C:\nuget-offline-feed" />
</packageSources>
</configuration>%APPDATA%\NuGet\NuGet.Config is NuGet's user-global config, so the offline feed
resolves no matter which folder a build runs from — required here, because the skill
lives in the global skills folder rather than inside any project. Note <clear />
disables nuget.org for every build under this user account until the original config
is restored.
- Build the skill's CLI (Command Prompt or Git Bash, from the skill folder).
First create a
global.jsoninscripts\dotnetpinning the build to SDK 8 — without it, a newer SDK on the machine wins the version pick and tries to fetch the net8.0 targeting packs from NuGet (NU1101). File content:
{ "sdk": { "version": "8.0.100", "rollForward": "latestFeature" } }cd %USERPROFILE%\.claude\skills\minimax-docx\scripts\dotnet
dotnet restore MiniMaxAIDocx.Cli\MiniMaxAIDocx.Cli.csproj
dotnet build MiniMaxAIDocx.Cli\MiniMaxAIDocx.Cli.csproj --no-restoreBoth commands must finish without errors.
Handled by codev-office-ubuntu-setup.sh — manual equivalent:
- Unzip
minimax-docx-skill.zipandminimax-xlsx-skill.zipto~/.claude/skills/— the global skills folder, so the skills are available in every project. Both Claude Code and CoDev Code read skills from~/.claude/skills/<name>/SKILL.md. A project-scoped install (<project>/.claude/skills/) also works, but this guide installs globally.
mkdir -p ~/.claude/skills
unzip minimax-docx-skill.zip -d /tmp/skills-unzip
unzip minimax-xlsx-skill.zip -d /tmp/skills-unzip
mv /tmp/skills-unzip/minimax-docx ~/.claude/skills/minimax-docx
mv /tmp/skills-unzip/minimax-xlsx ~/.claude/skills/minimax-xlsx-
Copy the
nuget-offline-feedfolder to a stable path, e.g.~/nuget-offline-feed. The feed carries 6 packages — the 4 above plusdocumentformat.openxml.3.2.0.nupkganddocumentformat.openxml.framework.3.2.0.nupkg, the version the skill's C# scripting scaffold (SKILL.md) pins. -
Create
~/.nuget/NuGet/NuGet.Config(back up any existing file first) — this is NuGet's user-global config, so the offline feed resolves no matter which folder a build runs from. Use an absolute path:~is not expanded.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="offline" value="/home/YOUR_USER/nuget-offline-feed" />
</packageSources>
</configuration>Note <clear /> disables nuget.org for every build under this user account until
the original config is restored.
- Build the skill's CLI. First create a
global.jsoninscripts/dotnetpinning the build to SDK 8 — without it, a newer SDK on the machine wins the version pick and tries to fetch the net8.0 targeting packs from NuGet (NU1101):
cd ~/.claude/skills/minimax-docx/scripts/dotnet
printf '%s\n' '{ "sdk": { "version": "8.0.100", "rollForward": "latestFeature" } }' > global.json
dotnet restore MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj
dotnet build MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj --no-restoreBoth commands must finish without errors.
Handled by codev-office-macos-setup.sh — manual equivalent:
- Unzip
minimax-docx-skill.zipandminimax-xlsx-skill.zipto~/.claude/skills/— the global skills folder, so the skills are available in every project. Both Claude Code and CoDev Code read skills from~/.claude/skills/<name>/SKILL.md. A project-scoped install (<project>/.claude/skills/) also works, but this guide installs globally.
mkdir -p ~/.claude/skills
unzip minimax-docx-skill.zip -d /tmp/skills-unzip
unzip minimax-xlsx-skill.zip -d /tmp/skills-unzip
mv /tmp/skills-unzip/minimax-docx ~/.claude/skills/minimax-docx
mv /tmp/skills-unzip/minimax-xlsx ~/.claude/skills/minimax-xlsx-
Copy the
nuget-offline-feedfolder to a stable path, e.g.~/nuget-offline-feed. The feed carries 6 packages — the 4 above plusdocumentformat.openxml.3.2.0.nupkganddocumentformat.openxml.framework.3.2.0.nupkg, the version the skill's C# scripting scaffold (SKILL.md) pins. -
Create
~/.nuget/NuGet/NuGet.Config(back up any existing file first) — this is NuGet's user-global config, so the offline feed resolves no matter which folder a build runs from. Use an absolute path:~is not expanded.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="offline" value="/Users/YOUR_USER/nuget-offline-feed" />
</packageSources>
</configuration>Note <clear /> disables nuget.org for every build under this user account until
the original config is restored.
- Build the skill's CLI. First create a
global.jsoninscripts/dotnetpinning the build to SDK 8 — without it, a newer SDK on the machine wins the version pick and tries to fetch the net8.0 targeting packs from NuGet (NU1101):
cd ~/.claude/skills/minimax-docx/scripts/dotnet
printf '%s\n' '{ "sdk": { "version": "8.0.100", "rollForward": "latestFeature" } }' > global.json
dotnet restore MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj
dotnet build MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj --no-restoreBoth commands must finish without errors.
Restore the .csproj directly, as shown above — do not run dotnet restore on
the scripts/dotnet folder. That folder's MiniMaxAIDocx.slnx solution file is not
understood by .NET SDK 8, so the folder (or solution) form fails with an
MSB1003 error. The .csproj build pulls in the MiniMaxAIDocx.Core project
automatically.
Step 4 — Install pandoc (optional)
Handled by codev-office-windows-setup.ps1 — manual equivalent:
Run pandoc-3.10.1-windows-x86_64.msi (bundle root), Next all the way.
Check in a new terminal: pandoc --version.
Handled by codev-office-ubuntu-setup.sh — manual equivalent:
sudo dpkg -i pandoc-3.10.1-1-amd64.deb
pandoc --versionHandled by codev-office-macos-setup.sh — manual equivalent:
Open the .pkg matching your chip (bundle root) and install via the wizard:
- Apple Silicon:
pandoc-3.10.1-arm64-macOS.pkg - Intel:
pandoc-3.10.1-x86_64-macOS.pkg
Check: pandoc --version
Step 5 — Install LibreOffice (optional — legacy .doc files and xlsx recalculation)
LibreOffice serves multiple skills: doc_to_docx.sh (docx) converts legacy .doc
files, and libreoffice_recalc.py (xlsx) recalculates spreadsheet formulas —
without it the xlsx skill still validates formulas statically.
Handled by codev-office-windows-setup.ps1 (including the PATH step) — manual equivalent:
- Run
LibreOffice_26.2.5_Win_x86-64.msi(bundle root) → choose Typical. - The skill's
doc_to_docx.shfinds LibreOffice only viasofficeon PATH, so add it:- Open Settings → System → About → Advanced system settings → Environment Variables
- Edit the
Pathvariable (User or System) and add:C:\Program Files\LibreOffice\program
- Check in a new terminal:
soffice --version.
Handled by codev-office-ubuntu-setup.sh (including the symlink) — manual equivalent:
LibreOffice's official .deb set is fully bundled — no dependencies to download:
tar -xzf LibreOffice_26.2.5_Linux_x86-64_deb.tar.gz
cd LibreOffice_26.2.5*_Linux_x86-64_deb/DEBS
sudo dpkg -i *.deb
# The debs only create a versioned `libreoffice26.2` link, but the skill's
# doc_to_docx.sh finds LibreOffice only via `soffice` on PATH — create a symlink:
sudo ln -sf /opt/libreoffice26.2/program/soffice /usr/local/bin/soffice
soffice --versionHandled by codev-office-macos-setup.sh (including the quarantine and symlink steps) —
manual equivalent:
- Open the
.dmgmatching your chip (bundle root):- Apple Silicon:
LibreOffice_26.2.5_MacOS_aarch64.dmg - Intel:
LibreOffice_26.2.5_MacOS_x86-64.dmg
- Apple Silicon:
- Drag LibreOffice into the Applications folder.
- Clear the quarantine flag — Gatekeeper otherwise blocks the skill's headless
sofficeruns, since the app was downloaded outside the App Store and is never launched in the GUI (right-clicking the app → Open once also works):
xattr -dr com.apple.quarantine /Applications/LibreOffice.app- The skill's
doc_to_docx.shfinds LibreOffice only viasofficeon PATH — create a symlink:
sudo mkdir -p /usr/local/bin
sudo ln -sf /Applications/LibreOffice.app/Contents/MacOS/soffice /usr/local/bin/soffice
soffice --versionStep 6 — Install Python + Python packages
The xlsx skill runs on Python 3.10–3.14 (64-bit). Its core pipeline
(create/edit/validate spreadsheets) needs only the Python standard library; the
bundled pandas/openpyxl wheels add the READ/analysis path. The same wheels
folder carries markitdown[pptx] (the pptx skill's text-extraction and
required QA path — its defusedxml dependency also powers the pptx EDIT
path's XML parsing) and reportlab + pypdf + matplotlib (the pdf skill's
core and its chart/math blocks).
Handled by codev-office-windows-setup.ps1 — manual equivalent:
- Check for a real Python with the
pylauncher — not barepython: with LibreOffice installed (Step 5), its folder on PATH ships its ownpython.exe(3.12) that masquerades as a system Python, and the Microsoft Store stub is another impostor — thepylauncher exists only for real python.org installs. Ifpy --versionis missing or outside 3.10–3.14, runpython-3.14.6-amd64.exe(bundle root) and tick Add python.exe to PATH. - Install the packages offline from the bundle's
python-wheelsfolder:
py -m pip install --no-index --find-links .\python-wheels pandas openpyxl "markitdown[pptx]" reportlab pypdf matplotlib
py -c "import pandas, openpyxl, markitdown, reportlab, pypdf; print('OK')"Handled by codev-office-ubuntu-setup.sh — manual equivalent:
Ubuntu ships python3 (20.04 = 3.8 is too old — upgrade it first;
22.04 = 3.10 and 24.04 = 3.12 are fine). Install the packages offline:
python3 -m pip install --user --no-index --find-links ./python-wheels pandas openpyxl 'markitdown[pptx]' reportlab pypdf matplotlib
# Ubuntu 23.04+ (PEP 668) refuses installs into the system Python — add:
# --break-system-packages
python3 -c "import pandas, openpyxl, markitdown, reportlab, pypdf; print('OK')"If pip itself is missing, install python3-pip via apt.
Handled by codev-office-macos-setup.sh — manual equivalent:
- If
python3 --versionis missing or outside the supported range — 3.10–3.14 on Apple Silicon, 3.10–3.13 on Intel (Intel Macs have no markitdown/onnxruntime support on 3.14) — open the.pkgmatching your chip (bundle root, both universal2): Apple Siliconpython-3.14.6-macos11.pkg, Intelpython-3.13.14-macos11.pkg, and install via the wizard. - Install the packages offline from the bundle's
python-wheelsfolder:
python3 -m pip install --user --no-index --find-links ./python-wheels pandas openpyxl 'markitdown[pptx]' reportlab pypdf matplotlib
python3 -c "import pandas, openpyxl, markitdown, reportlab, pypdf; print('OK')"Step 7 — Install Node.js + JS modules (optional — pptx creation, pdf covers)
The pptx and pdf skills read and edit documents with Python alone; Node.js is
only needed to create pptx decks (PptxGenJS) and to render pdf covers
(Playwright + Chromium). Both modules ship in the bundle as prebuilt, pure-JS
node_modules trees (pptxgenjs-node-modules.zip,
playwright-node-modules.zip) that merge into one shared tree, and Chromium
ships as ms-playwright-chromium.zip — nothing is fetched from npm.
Handled by codev-office-windows-setup.ps1 — manual equivalent:
- If
node --versionis missing (or below v18), runnode-v24.15.0-x64.msi(bundle root), Next all the way. - Extract
pptxgenjs-node-modules.zipandplaywright-node-modules.zipand merge bothnode_modulescontents intoC:\Users\Public\codev-office\node_modules, then point the userNODE_PATHenvironment variable at that folder (Settings → System → About → Advanced system settings → Environment Variables → New under "User variables"). - Extract
ms-playwright-chromium.zipinto%LOCALAPPDATA%\ms-playwright(the browser Playwright launches for pdf covers). - Check in a new terminal:
node -e "console.log(require('pptxgenjs') && require('playwright') ? 'OK' : 'FAIL')"Handled by codev-office-ubuntu-setup.sh — manual equivalent:
# Node.js, per-user (no root):
mkdir -p ~/.node
tar -xzf node-v24.15.0-linux-x64.tar.gz -C ~/.node --strip-components=1
echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# CoDev Code's shell tool never reads ~/.bashrc — symlink node machine-wide:
sudo ln -sf "$HOME/.node/bin/node" /usr/local/bin/node
# PptxGenJS + Playwright, prebuilt — merged into one tree linked as
# ~/.node_modules, one of Node's global require() fallback folders, so
# require() works from any directory without NODE_PATH:
mkdir -p ~/.codev-office/node_modules /tmp/js-modules/pptx /tmp/js-modules/pw
unzip -q pptxgenjs-node-modules.zip -d /tmp/js-modules/pptx
unzip -q playwright-node-modules.zip -d /tmp/js-modules/pw
cp -R /tmp/js-modules/pptx/node_modules/. ~/.codev-office/node_modules/
cp -R /tmp/js-modules/pw/node_modules/. ~/.codev-office/node_modules/
ln -sfn ~/.codev-office/node_modules ~/.node_modules
# Chromium for Playwright (pdf cover rendering):
mkdir -p ~/.cache/ms-playwright
unzip -q ms-playwright-chromium.zip -d ~/.cache/ms-playwright
# Check:
node -e "console.log(require('pptxgenjs') && require('playwright') ? 'OK' : 'FAIL')"Handled by codev-office-macos-setup.sh — manual equivalent:
- If
node --versionis missing (or below v18), opennode-v24.15.0.pkg(bundle root — one universal build for both chips) and install via the wizard (admin password required). The pkg installs to/usr/local/bin, which non-interactive shells already have on PATH. - Install the prebuilt module trees and Chromium:
mkdir -p ~/.codev-office/node_modules /tmp/js-modules/pptx /tmp/js-modules/pw
unzip -q pptxgenjs-node-modules.zip -d /tmp/js-modules/pptx
unzip -q playwright-node-modules.zip -d /tmp/js-modules/pw
cp -R /tmp/js-modules/pptx/node_modules/. ~/.codev-office/node_modules/
cp -R /tmp/js-modules/pw/node_modules/. ~/.codev-office/node_modules/
ln -sfn ~/.codev-office/node_modules ~/.node_modules
# Chromium for Playwright (pdf cover rendering):
mkdir -p ~/Library/Caches/ms-playwright
unzip -q ms-playwright-chromium.zip -d ~/Library/Caches/ms-playwright
# Check:
node -e "console.log(require('pptxgenjs') && require('playwright') ? 'OK' : 'FAIL')"Step 8 — Overall check
After a manual install, first reboot the computer — the installers update the system PATH, and some of their changes only take full effect after a restart.
If you used codev-office-windows-setup.ps1, the skill is already built and verified — this
check is an optional extra. Open Git Bash, cd into the skill folder and run:
cd ~/.claude/skills/minimax-docx
bash scripts/env_check.shExpected result: [OK] lines for dotnet and project and a final READY.
If it says NOT READY: review Step 1 and Step 3 (the most common cause is NuGet not
pointing at the offline folder, or the CLI not yet built — the check's automatic
rebuild uses the folder form of dotnet restore, which fails on SDK 8, so run the
Step 3 build commands first).
For a manual end-to-end test — the same thing the script's verification step does — generate a document:
cd ~/.claude/skills/minimax-docx/scripts/dotnet
dotnet run --project MiniMaxAIDocx.Cli -- create --type report --output "$TEMP/offline-test.docx" --title "Offline Test"And for the xlsx skill (pack the bundled template, then validate it — pure Python stdlib, exit code 0 means PASS):
cd ~/.claude/skills/minimax-xlsx
py scripts/xlsx_pack.py templates/minimal_xlsx "$TEMP/offline-test.xlsx"
py scripts/formula_check.py "$TEMP/offline-test.xlsx"And for the pptx skill (compile a one-slide deck — needs Node.js + PptxGenJS
from Step 7; open a new terminal so NODE_PATH is set):
PPTX_OUT="$TEMP/offline-test.pptx" node -e 'const P=require("pptxgenjs");const p=new P();p.layout="LAYOUT_16x9";p.addSlide().addText("Offline Test",{x:1,y:1,w:8,h:1});p.writeFile({fileName:process.env.PPTX_OUT});'And for the pdf skill (its own dependency doctor — every line should be ✓):
bash ~/.claude/skills/minimax-pdf/scripts/make.sh check(py is the Python launcher — unlike bare python, it can never resolve to
LibreOffice's bundled interpreter.)
If the xlsx check fails with UnicodeEncodeError, the installed skill predates
the console-encoding fix — run export PYTHONUTF8=1 in the same Git Bash
session and retry, or re-run the setup script with -ForceSkills to update the
skill to the current bundle.
Both commands must finish without errors and create the files.
If you used codev-office-ubuntu-setup.sh, the skill is already built and verified — this
check is an optional extra:
cd ~/.claude/skills/minimax-docx
bash scripts/env_check.shExpected result: [OK] for dotnet and project and a final status of READY.
If it says NOT READY: the most common cause is NuGet not pointing at the offline
folder (Step 3), dotnet missing from PATH (open a new terminal or run
source ~/.bashrc), or the CLI not yet built — the check's automatic rebuild uses
the folder form of dotnet restore, which fails on SDK 8, so run the Step 3 build
commands first.
For a manual end-to-end test — the same thing the script's verification step does — generate a document:
cd ~/.claude/skills/minimax-docx/scripts/dotnet
dotnet run --project MiniMaxAIDocx.Cli -- create --type report --output /tmp/offline-test.docx --title "Offline Test"And for the xlsx skill (pack the bundled template, then validate it — pure Python stdlib, exit code 0 means PASS):
cd ~/.claude/skills/minimax-xlsx
python3 scripts/xlsx_pack.py templates/minimal_xlsx /tmp/offline-test.xlsx
python3 scripts/formula_check.py /tmp/offline-test.xlsxAnd for the pptx skill (compile a one-slide deck — needs Node.js + PptxGenJS from Step 7):
PPTX_OUT=/tmp/offline-test.pptx node -e 'const P=require("pptxgenjs");const p=new P();p.layout="LAYOUT_16x9";p.addSlide().addText("Offline Test",{x:1,y:1,w:8,h:1});p.writeFile({fileName:process.env.PPTX_OUT});'And for the pdf skill (its own dependency doctor — every line should be ✓):
bash ~/.claude/skills/minimax-pdf/scripts/make.sh checkBoth commands must finish without errors and create the files.
If you used codev-office-macos-setup.sh, the skill is already built and verified — this
check is an optional extra (macOS already ships bash/zip/unzip, so run it directly):
cd ~/.claude/skills/minimax-docx
bash scripts/env_check.shExpected result: [OK] for dotnet and project and a final status of READY.
If it says NOT READY: the most common cause is NuGet not pointing at the offline
folder (Step 3), or the CLI not yet built — the check's automatic rebuild uses the
folder form of dotnet restore, which fails on SDK 8, so run the Step 3 build
commands first.
For a manual end-to-end test — the same thing the script's verification step does — generate a document:
cd ~/.claude/skills/minimax-docx/scripts/dotnet
dotnet run --project MiniMaxAIDocx.Cli -- create --type report --output /tmp/offline-test.docx --title "Offline Test"And for the xlsx skill (pack the bundled template, then validate it — pure Python stdlib, exit code 0 means PASS):
cd ~/.claude/skills/minimax-xlsx
python3 scripts/xlsx_pack.py templates/minimal_xlsx /tmp/offline-test.xlsx
python3 scripts/formula_check.py /tmp/offline-test.xlsxAnd for the pptx skill (compile a one-slide deck — needs Node.js + PptxGenJS from Step 7):
PPTX_OUT=/tmp/offline-test.pptx node -e 'const P=require("pptxgenjs");const p=new P();p.layout="LAYOUT_16x9";p.addSlide().addText("Offline Test",{x:1,y:1,w:8,h:1});p.writeFile({fileName:process.env.PPTX_OUT});'And for the pdf skill (its own dependency doctor — every line should be ✓):
bash ~/.claude/skills/minimax-pdf/scripts/make.sh checkBoth commands must finish without errors and create the files.
Security / checksum notes
Files downloaded from official sources on 2026-07-31 (the OpenXml 3.2.0 packages in the offline NuGet feeds on 2026-08-03; LibreOffice 26.2.5, Python and the Python wheels on 2026-08-04; Node.js, the PptxGenJS/Playwright module trees, the Chromium build and the markitdown/reportlab/pypdf/matplotlib wheels on 2026-08-05):
- .NET SDK:
builds.dotnet.microsoft.com(Microsoft) - NuGet:
api.nuget.org - pandoc:
github.com/jgm/pandoc(release 3.10.1) - LibreOffice: official TDF mirror (stable branch 26.2.5)
- Python:
python.org(releases 3.14.6 and 3.13.14) - Python wheels (pandas/numpy/openpyxl, markitdown, reportlab/pypdf/matplotlib + deps):
pypi.org - Node.js:
nodejs.org(24 LTS) - PptxGenJS / Playwright module trees:
registry.npmjs.org(vianpm install) - Playwright Chromium: Playwright's browser CDN (via
npx playwright install chromium) - Git:
github.com/git-for-windows(Windows bundle only)
Each bundle zip carries a SHA256SUMS.txt at the root of its extracted folder with
the checksum of every file — verify before distributing if needed:
| Operating system | Verification command |
|---|---|
| Windows | certutil -hashfile <file> SHA256 |
| Ubuntu | sha256sum -c SHA256SUMS.txt |
| macOS | shasum -a 256 -c SHA256SUMS.txt |