Skip to content
Back to skills

Ooxml Editing Skill

ASecurity

Surgical OOXML edits — unpack DOCX/PPTX/XLSX to XML, edit elements, validate, repack ('fix typo on slide 4'); houses the html2pptx escape hatch. Not template slide generation.

  • 6 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 20, 2026
toolspythongobashnode

Security analysis

A100/100

Pro scans all 8 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add darellchua2/opencode-config-template --skill ooxml-editing-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ooxml Editing Skill?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ooxml Editing Skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/darellchua2-ooxml-editing-skill/badge)](https://www.skillsdirectory.com/skills/darellchua2-ooxml-editing-skill)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ooxml-editing-skill
description: >-
  Surgical OOXML edits — unpack DOCX/PPTX/XLSX to XML, edit elements, validate,
  repack ('fix typo on slide 4'); houses the html2pptx escape hatch. Not
  template slide generation.
license: Apache-2.0
compatibility: opencode
category: Office Utilities
---

## What I do

I provide **surgical OOXML editing** for any Office file (`.docx`, `.pptx`, `.xlsx`). Rather than regenerating an entire document, I unpack the zip, edit specific XML elements, validate the structure, and repack — preserving everything else exactly.

- **Unpack** any Office file to its XML parts (`unpack.py`)
- **Edit** individual XML elements (slide XML, document XML, workbook XML)
- **Validate** structural integrity before repacking (`validate.py` + `validators/`)
- **Clean** unreferenced files from unpacked dirs (`clean.py`)
- **Pack** the edited XML back into a valid Office file (`pack.py`)

I also house the **html2pptx escape hatch** — explicit "convert HTML to PPTX" requests only. This path is undocumented in the orchestrator's default routing and is surfaced only when the user explicitly says "convert HTML to PowerPoint".

## When to use me

Use this skill when the user wants:
- "Fix typo on slide 4" / "change this specific text" — surgical edits
- "Update this chart's data" — targeted XML modification
- "Remove slide 3" — structural edit
- "Change this shape's fill color" — property edit
- "Convert HTML to PPTX" (explicit escape hatch — follows the hidden-JSON approach: html2pptx → generate-template → generate-slide)

Do NOT use me for:
- Template-based slide generation → `pptx-generate-slide-skill`
- Template extraction/embedding → `pptx-generate-template-skill`
- Template extension (cloning layouts) → `pptx-template-modifier-skill`
- Visual analysis / thumbnails → `office-thumbnail-skill`

## Prerequisites

- **Python 3.9+** with `defusedxml` for secure XML parsing
- **LibreOffice** (`soffice`) — only needed by some validators for render-checking; not required for basic unpack/pack
- For the html2pptx escape hatch only: **Node.js** + `pptxgenjs` + `playwright` + `sharp` (not needed for pure OOXML editing)

## Workflow

1. **Unpack** the Office file to a working directory:
   ```bash
   python scripts/unpack.py presentation.pptx unpacked/
   ```

2. **Edit** the XML files in `unpacked/` (primarily `ppt/slides/slide{N}.xml`, `word/document.xml`, or `xl/worksheets/sheet{N}.xml`)

3. **Validate** after each edit:
   ```bash
   python scripts/validate.py unpacked/ --original presentation.pptx
   ```

4. **Clean** unreferenced files (optional):
   ```bash
   python scripts/clean.py unpacked/
   ```

5. **Pack** back to an Office file:
   ```bash
   python scripts/pack.py unpacked/ new_presentation.pptx
   ```

## Scripts

| Script | Purpose |
|--------|---------|
| `unpack.py` | Extract Office zip → pretty-printed XML files |
| `pack.py` | Validate + condense XML → create Office zip |
| `validate.py` | Validate XML structure against OOXML rules |
| `clean.py` | Remove unreferenced files from unpacked dir |
| `validators/base.py` | Shared validation logic |
| `validators/pptx.py` | PPTX-specific OOXML rules |

## html2pptx Escape Hatch

For explicit "convert HTML to PPTX" requests only. The Node-based html2pptx toolchain (`pptxgenjs` + `playwright`) produces a basic PPTX from HTML slides. Per BT-142, this output then flows through `pptx-generate-template-skill` (extract + embed hidden JSON) → `pptx-generate-slide-skill` (final render against Slide Master) to ensure the hidden-JSON-template approach is followed.

This path is intentionally undocumented in the orchestrator's default routing — it's surfaced only when the user explicitly says "convert HTML to PowerPoint" or similar.

Files in this skill

  • SKILL.md3.7 KB
  • scripts/clean.py9.9 KB
  • scripts/pack.py4.9 KB
  • scripts/unpack.py3.9 KB
  • scripts/validate.py3.7 KB
  • scripts/validators/__init__.py338 B
  • scripts/validators/base.py19.7 KB
  • scripts/validators/pptx.py1018 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…