Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Docx Repair

ASecurity

Use to REPAIR a .docx damaged by a Google Docs or Word Online round-trip — the package/XML wiring, the footnote markup, leftover content controls, and heading styling. Triggers: 'Word won't open the docx / says it's corrupt', 'Google Docs export broken', 'fix the customXML error', 'recover unreadable content', 'phantom blank page', 'repair this docx'; AND 'footnotes broken after Google Docs', 'supra notes wrong after coauthor edits', 'cross-references point to the wrong footnote', 'bio footno...

21 stars
0 votes
0 copies
0 views
Added 9/19/2026
documentationpythongoawsdebuggingapi

Works with

cliapi

Security Analysis

A100/100

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add edwinhu/workflows --skill docx-repair --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Docx Repair?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Docx Repair
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/edwinhu-docx-repair/badge)](https://www.skillsdirectory.com/skills/edwinhu-docx-repair)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: docx-repair
description: "Use to REPAIR a .docx damaged by a Google Docs or Word Online round-trip — the package/XML wiring, the footnote markup, leftover content controls, and heading styling. Triggers: 'Word won't open the docx / says it's corrupt', 'Google Docs export broken', 'fix the customXML error', 'recover unreadable content', 'phantom blank page', 'repair this docx'; AND 'footnotes broken after Google Docs', 'supra notes wrong after coauthor edits', 'cross-references point to the wrong footnote', 'bio footnotes show numbers instead of symbols (*, †, ‡)', 'author note shows 1 2 3 not star dagger', 'footnote numbering starts at the wrong number', 'separator line missing', 'doubled footnote marks (**, ††)'; AND 'boxes around text after Google Docs', 'content controls / doubled boxes around paragraphs', 'remove the boxes Word draws around headings', 'heading text isn't styled as a heading', 'headings look different / inconsistent heading formatting', 'blank/empty heading lines'; AND 'clean up Google Docs XML cruft', 'strip redundant run formatting', 'de-bloat docx after Google Docs', 'remove rsid bloat / no-op shading / explicit black' — or converting hardcoded 'supra note N' cross-references to auto-updating NOTEREF fields. Any OOXML-level repair on a .docx edited in a cloud editor, even if the user never says 'OOXML'. NOT for building a docx from markdown (law-review-docx) or exporting to PDF (docx-render)."
user-invocable: false
---

# DOCX Repair (Google Docs / Word Online damage)

**What this skill carries** — grep `references/` for any subject the names below miss:
!`d=${CLAUDE_SKILL_DIR}; command -v skill-toc >/dev/null 2>&1 && exec skill-toc "$d"; s=$HOME/.claude/skills/plugin-utils/bin/skill-toc; [ -x "$s" ] && exec "$s" "$d"; echo "(skill-toc unavailable: references and scripts are NOT listed here — install the plugin-utils plugin, or start a new session so its bin/ reaches PATH)"`

Cloud editors damage a `.docx` in **independent ways**. This skill is the front door for all of them; run only the track(s) you need.

| Damage class | Symptom | Fix |
|---|---|---|
| **A. Package / OOXML wiring** | Word pops "recover unreadable content?" or refuses to open; LibreOffice won't load; phantom blank page | `${CLAUDE_PLUGIN_ROOT}/scripts/docx_repair.py` (plugin root) — [references/package-repair.md](${CLAUDE_PLUGIN_ROOT}/skills/docx-repair/references/package-repair.md) |
| **B. Footnote & cross-reference markup** | Bios show `1,2,3` not `*,†,‡`; numbering starts wrong; "supra note N" points to the wrong footnote; missing separator line | the footnote scripts — [references/footnote-procedure.md](${CLAUDE_PLUGIN_ROOT}/skills/docx-repair/references/footnote-procedure.md) |
| **B1. Cross-references aimed at the wrong source** | `Lin, supra note 130` where note 130 is a different work; `Rebuttal Report, supra note 22` where 22 defines the deposition; a short form surviving a renumber that moved its target | `check_crossrefs.py <file.docx>` — read-only, exit 1 on any problem |
| **C. Document content (boxes + headings + cruft)** | Visible **boxes** around freshly-edited text; heading-looking lines not styled as headings; same-style headings rendering differently; blank heading lines; bloated XML full of all-zero rsids, no-op shading, explicit `b=0`/`i=0`/`u=none`, redundant black color & default fonts | `fix_footnotes.py`'s document.xml passes — [references/content-cleanup.md](${CLAUDE_PLUGIN_ROOT}/skills/docx-repair/references/content-cleanup.md) |
| **D. Presentation hygiene** | A footnote renders blue/underlined in the PDF but looks normal in Word; a URL prints one address and navigates to another; heading gaps uneven page to page; tracking params (`?utm_source=…`) behind a clean-looking link | `docx_links.py`, `docx_spacers.py` — [references/presentation-hygiene.md](${CLAUDE_PLUGIN_ROOT}/skills/docx-repair/references/presentation-hygiene.md) |

They are decoupled: package repair fixes the **part wiring** (never touches content); footnote repair fixes the **footnote markup**; content cleanup strips Google-Docs leftover content controls and normalizes headings. A file can need any, all, or none. If you don't know which, run the package check first (it's a no-op on a clean package), then the footnote pass (it carries the content cleanup).

> Heads-up: `docx-render`'s Word path already composes `docx_repair.py` as a preflight, so a Google export "just renders" without a manual Track A. Run Track A manually when you need the *repaired file itself* (to hand back, edit, or footnote-fix), not just a PDF.

---

## Reference index — read the file for the track you are running

All procedural detail lives in `references/`. Read only what the job needs.

- [references/package-repair.md](${CLAUDE_PLUGIN_ROOT}/skills/docx-repair/references/package-repair.md)
  — **Track A.** The two concrete Google Docs export defects (case-mismatched
  `customXML`/`customXml` OPC part references; leftover `<w:evenAndOddHeaders/>`),
  and the CLI + Python API for `${CLAUDE_PLUGIN_ROOT}/scripts/docx_repair.py`.
  **Read when** Word calls the file corrupt, refuses to open it, or shows a
  phantom blank page — or before handing back a repaired file rather than a PDF.

- [references/footnote-procedure.md](${CLAUDE_PLUGIN_ROOT}/skills/docx-repair/references/footnote-procedure.md)
  — **Track B, the canonical procedure.** The exact four-step order for a Google
  Docs round-trip (accept changes → `fix_footnotes.py` → `create_crossrefs.py
  --baseline` → render with Word), what to verify in the render, the
  incident-grounded procedure facts (why step 3 must follow step 2, why
  `--baseline` is not optional, why LibreOffice lies), the list of symptoms
  footnote repair applies to, and the quick-start "which script do I want?"
  routing. **Read when** running any footnote repair — start here.

- [references/footnote-scripts.md](${CLAUDE_PLUGIN_ROOT}/skills/docx-repair/references/footnote-scripts.md)
  — **Track B, script detail.** Per-script behaviour and every flag for
  `fix_footnotes.py`, `create_crossrefs.py` (including how `--baseline` remaps
  stale numbers) and `refresh_noteref_caches.py` (why the naive approaches fail,
  its requirements and intentional scope), plus the footnote numbering-offset fix
  (`numRestart`). **Read when** you need a specific flag, or the exact semantics
  of one of the three scripts.

- [references/footnotes-reference.md](${CLAUDE_PLUGIN_ROOT}/skills/docx-repair/references/footnotes-reference.md)
  — **Track B, OOXML technical reference.** (1) Run-level editing gotchas (NBSP,
  cross-run matching, `xml:space`); (2) cloud editor damage patterns — what gets
  destroyed and why; (3) direct ZIP surgery patterns that bypass Document
  libraries; (4) the numbering-restart details and the critical rule that
  `numRestart` goes in `settings.xml` ONLY. **Read when** hand-editing footnote
  XML or debugging behaviour the scripts do not cover.

- [references/content-cleanup.md](${CLAUDE_PLUGIN_ROOT}/skills/docx-repair/references/content-cleanup.md)
  — **Track C.** The four content passes `fix_footnotes.py` carries: stripping
  `goog_rdk` content controls (the "boxes", default on), heading normalization
  (`--normalize-headings`), the OOXML hygiene / de-cruft rules (default on, with
  the exact strip/keep lists), body-indent normalization
  (`--normalize-body-indent`), and applying the template's body styles
  (`--restyle-body`), plus the content-cleanup incident facts. **Read when**
  boxes, inconsistent headings, stray indents or XML bloat are the complaint, or
  before passing any of those flags.

- [references/presentation-hygiene.md](${CLAUDE_PLUGIN_ROOT}/skills/docx-repair/references/presentation-hygiene.md)
  — **Track D.** `docx_links.py` (tracking-param stripping, SSRN canonicalization,
  footnote hyperlink unwrapping — and why display text and relationship `Target`
  must both be rewritten) and `docx_spacers.py` (manual spacer removal, why a
  text-empty paragraph may not be empty, the title-page collapse hazard), plus why
  both edit bytes rather than the ElementTree tree. **Read when** the PDF shows
  blue/underlined footnotes, a link that navigates elsewhere, or uneven heading
  gaps.

---

## Related (document skill group)

This skill owns the **REPAIR** stage — package wiring (Track A), footnote
markup (Track B), and document-content cleanup (Track C) — for a `.docx` damaged
by a cloud editor. Adjacent stages:

- **Build** a styled `.docx` from markdown → `law-review-docx` (its `build_docx.py`
  chains this skill's footnote repair + NOTEREF conversion after the pandoc build).
- **Render** to PDF/PNG → `docx-render` / `${CLAUDE_PLUGIN_ROOT}/scripts/doc_render.py` (Word path composes
  Track A's `docx_repair.py` as a preflight automatically).
- **Check cross-references before believing them.** `check_crossrefs.py` is the only
  pass that READS the target note: it verifies the short form names a source the
  target actually contains, on top of existence and direction. `create_crossrefs.py
  --dry-run` proves only that note N exists and will report "25 targets, 25 valid"
  over a document whose cites point at the wrong documents — it is a conversion
  preflight, not an audit. Run `check_crossrefs.py` on any draft returned by a
  coauthor, and after every renumber. It name-matches loosely (any capitalised word
  in the short form appearing in the target), so it catches a cite aimed at the wrong
  source, never a wrong pincite.
- **Footnote repair lives only here.** `fix_footnotes.py` is the single canonical
  Google-Docs / Word-Online footnote fixer; there is no second copy. (Bluebook's
  `create_crossrefs.py` + `audit_crossref_targets.py` remain a deliberate,
  actively-used *cross-reference* fork with their own retargeting strategy — a
  different concern, not a footnote-fix duplicate.)

See the full [document skill group](../../references/document-skills.md).

Attribution

edwinhuedwinhu
View sourceMore from edwinhu →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

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 (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Context Fundamentals

Understand the components, mechanics, and constraints of context in agent systems. Use when designing agent architectures, debugging context-related failures, or optimizing context usage.

179001 votes

release-notes

Draft release notes and changelog entries from git history or merged PRs between two refs (tags/SHAs/branches), including breaking changes, migrations, and upgrade steps. Use when the user asks for release notes, changelog updates, or a GitHub Release draft.

1301 votes

docs-style-guide

Documentation style guide enforcer by @planetabhi. Applies and reviews the writing style guide when authoring or editing product documentation and tutorials. Use to check prose for voice, tense, word choice, inclusive language, formatting, code block, UI, Markdown, and number/date conventions.

11 votes

Caveman Help

Quick-reference card for all caveman modes, skills, and commands. One-shot display, not a persistent mode. Trigger: /caveman-help, "caveman help", "what caveman commands", "how do I use caveman".

1023330 votes

How It Works

Explain how claude-mem captures observations, when memory injection kicks in, and where data lives. Use when the user asks "how does claude-mem work?" or "what is this thing doing?".

929660 votes
View all in documentation →