Install skills

Install the Office skills (Word, Excel, PowerPoint and PDF) on Windows, Ubuntu and macOS.

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.

With CoDev Hub installed, one command replaces the whole download-and-run routine:

npm i -g codev-ai
codevhub skill office
OptionEffect
--download-onlyFetch the script + bundle and print the run command, without installing
--platform ubuntu|macos|windowsFetch 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_64Which 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-verifyPassed to the setup script: skip the end-to-end test documents
--force-skillsPassed 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:

  1. Run the following command in any PowerShell window to open an elevated ("Run as administrator") PowerShell:

    Start-Process powershell -Verb RunAs

    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.

    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.

  2. Copy the two commands codevhub printed and run them in that window — a cd into the download folder, then the install command:

    cd "C:\Users\Public\Downloads\codev-office"
    powershell -ExecutionPolicy Bypass -File .\codev-office-windows-setup.ps1

    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. Add -TargetUser to 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). -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.

  3. Wait for the green codev-office setup complete closing 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.md

Additional notes:

  • CoDev Code accepts both skill/ and skills/ 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.md

OpenCode 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.md

Claude 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.md

Invocation: 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 = false

Note: 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.md

Cursor 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.

Download codev-office-windows-setup.ps1Download codev-office-windows.zip (~1.4 GB)

The script extracts the zip automatically, then installs everything in one run. Inside codev-office-windows.zip:

File / folderPackageRequired?Purpose
minimax-docx-skill.zipThe Word (docx) skill✅ RequiredUnzipped into CoDev Code's skills folder
minimax-xlsx-skill.zipThe Excel (xlsx) skill✅ RequiredUnzipped into CoDev Code's skills folder
pptx-generator-skill.zipThe PowerPoint (pptx) skill✅ RequiredUnzipped into CoDev Code's skills folder
minimax-pdf-skill.zipThe PDF skill✅ RequiredUnzipped into CoDev Code's skills folder
dotnet-sdk-8.0.423-win-x64.exe.NET SDK 8.0.423 (x64)✅ RequiredRuns/builds the docx skill's CLI
nuget-offline-feed\6 NuGet packages (.nupkg)✅ RequiredOpenXML libraries for dotnet restore
python-3.14.6-amd64.exePython 3.14.6 (x64)✅ RequiredRuns the xlsx skill's scripts
python-wheels\pandas + numpy + openpyxl, markitdown[pptx], and reportlab + pypdf + matplotlib wheels (CPython 3.10–3.14)✅ Requiredxlsx 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.msiNode.js 24 LTS (x64)⚪ OptionalRuns PptxGenJS (pptx decks) and Playwright (pdf covers)
pptxgenjs-node-modules.zipPptxGenJS, prebuilt module tree⚪ Optionalpptx create-from-scratch path — installed as-is, no npm or internet needed
playwright-node-modules.zipPlaywright, prebuilt module tree⚪ Optionalpdf cover rendering — installed as-is, no npm or internet needed
ms-playwright-chromium.zipPlaywright's Chromium build (win64)⚪ OptionalHeadless browser for pdf cover rendering — unpacked into Playwright's cache
Git-2.55.0.3-64-bit.exeGit for Windows 2.55✅ Strongly recommendedProvides Git Bash to run the docx skill's .sh scripts
pandoc-3.10.1-windows-x86_64.msipandoc 3.10.1⚪ OptionalPreview docx content (docx_preview.sh)
LibreOffice_26.2.5_Win_x86-64.msiLibreOffice 26.2.5⚪ OptionalConvert 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:

  1. Run the following command in any PowerShell window to open an elevated ("Run as administrator") PowerShell:

    Start-Process powershell -Verb RunAs
  2. cd into 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
  3. Wait for the green codev-office setup complete closing 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.

OptionEffect
-SkipVerifySkip 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)
-ForceSkillsReplace 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):

  1. Installs the .NET SDK 8 (required), Git for Windows, pandoc and LibreOffice — and puts LibreOffice's soffice on the PATH for doc_to_docx.sh (machine PATH when elevated, user PATH otherwise).
  2. 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-wheels folder (fully offline).
  3. 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 the NODE_PATH variable pointing at it — machine-wide when elevated, user scope otherwise — so require() resolves them from any folder; and unpacks Playwright's Chromium build into a shared %PUBLIC%\codev-office\ms-playwright cache, pointing the PLAYWRIGHT_BROWSERS_PATH variable at it (same scope rules) for pdf covers.
  4. Copies nuget-offline-feed to the shared %PUBLIC%\codev-office\nuget-offline-feed and writes %APPDATA%\NuGet\NuGet.Config pointing 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 to NuGet.Config.bak; re-runs detect the offline feed and leave both untouched).
  5. Unzips minimax-docx-skill.zip, minimax-xlsx-skill.zip, pptx-generator-skill.zip and minimax-pdf-skill.zip into the skills folder and builds the docx skill's CLI offline.
  6. 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.

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:

  1. Run dotnet-sdk-8.0.423-win-x64.exe (bundle root) and click Install (needs Admin rights).
  2. Open a new Command Prompt (it must be new to pick up PATH) and check:
dotnet --list-sdks

The list must include an 8.0.x entry.

Handled by codev-office-windows-setup.ps1 — manual equivalent:

  1. Run Git-2.55.0.3-64-bit.exe (bundle root), keep every default option, Next all the way.
  2. 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.

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:

  1. Unzip minimax-docx-skill.zip to %USERPROFILE%\.claude\skills\minimax-docx and minimax-xlsx-skill.zip to %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.

  2. Copy the nuget-offline-feed folder to a stable machine-wide path, e.g. C:\nuget-offline-feed. On Windows the feed carries 6 packages — the 4 above plus documentformat.openxml.3.2.0.nupkg and documentformat.openxml.framework.3.2.0.nupkg, the version the skill's C# scripting scaffold (SKILL.md) pins.

  3. 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.

  1. Build the skill's CLI (Command Prompt or Git Bash, from the skill folder). First create a global.json in scripts\dotnet pinning 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-restore

Both 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.

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:

  1. Run LibreOffice_26.2.5_Win_x86-64.msi (bundle root) → choose Typical.
  2. The skill's doc_to_docx.sh finds LibreOffice only via soffice on PATH, so add it:
    • Open Settings → System → About → Advanced system settings → Environment Variables
    • Edit the Path variable (User or System) and add: C:\Program Files\LibreOffice\program
  3. Check in a new terminal: soffice --version.

Step 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:

  1. Check for a real Python with the py launcher — not bare python: with LibreOffice installed (Step 5), its folder on PATH ships its own python.exe (3.12) that masquerades as a system Python, and the Microsoft Store stub is another impostor — the py launcher exists only for real python.org installs. If py --version is missing or outside 3.10–3.14, run python-3.14.6-amd64.exe (bundle root) and tick Add python.exe to PATH.
  2. Install the packages offline from the bundle's python-wheels folder:
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')"

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:

  1. If node --version is missing (or below v18), run node-v24.15.0-x64.msi (bundle root), Next all the way.
  2. Extract pptxgenjs-node-modules.zip and playwright-node-modules.zip and merge both node_modules contents into C:\Users\Public\codev-office\node_modules, then point the user NODE_PATH environment variable at that folder (Settings → System → About → Advanced system settings → Environment Variables → New under "User variables").
  3. Extract ms-playwright-chromium.zip into %LOCALAPPDATA%\ms-playwright (the browser Playwright launches for pdf covers).
  4. Check in a new terminal:
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.sh

Expected 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.

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 (via npm 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 systemVerification command
Windowscertutil -hashfile <file> SHA256
Ubuntusha256sum -c SHA256SUMS.txt
macOSshasum -a 256 -c SHA256SUMS.txt