
Office Remediation
- 174 installs
- 381 repo stars
- Updated August 4, 2026
- community-access/accessibility-agents
Repair Word, PowerPoint, Excel, and PDF exports for headings, tables, alt text, reading order, and color contrast before distribution to employees or customers.
About
Skill for remediating Microsoft Office and exported PDF accessibility: headings, lists, tables, alt text, links, and reading order. Helps teams publish inclusive documents that screen readers and keyboard users can navigate without manual rework after export.
- Heading styles and logical outline
- Table headers and merged-cell fixes
- Image alt text in slides and docs
- Reading order in PDF export
- Contrast-safe theme adjustments
Office Remediation by the numbers
- 174 all-time installs (skills.sh)
- Ranked #271 of 688 Office & Documents skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/community-access/accessibility-agents --skill office-remediationAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 174 |
|---|---|
| repo stars | ★ 381 |
| Last updated | August 4, 2026 |
| Repository | community-access/accessibility-agents ↗ |
What it does
Repair Word, PowerPoint, Excel, and PDF exports for headings, tables, alt text, reading order, and color contrast before distribution to employees or customers.
Files
<!-- CANONICAL SOURCE: .github/skills/office-remediation/SKILL.md -- Edit the canonical source; sync to Gemini via scripts/check-gemini-sync.ps1 -->
Office Remediation Patterns
API reference and code patterns for programmatically fixing accessibility issues in Microsoft Office documents.
python-docx Patterns (Word .docx)
| Operation | Code |
|---|---|
| Set document title | doc.core_properties.title = "Title" |
| Set document language | Set <w:lang w:val="en-US"/> on <w:rPr> via lxml |
| Fix table headers | row.cells[0]._tc → set <w:tblHeader/> on first row <w:trPr> |
| Add alt text to images | Set descr attribute on <wp:docPr> via lxml |
| Fix heading levels | Reassign paragraph.style to correct Heading N |
| Set list structure | Apply List Bullet / List Number styles |
openpyxl Patterns (Excel .xlsx)
| Operation | Code |
|---|---|
| Set workbook title | wb.properties.title = "Title" |
| Set print titles | ws.print_title_rows = '1:1' for header row repeat |
| Rename generic sheets | ws.title = "Descriptive Name" |
| Detect merged cells | ws.merged_cells.ranges — flag width > 1 |
python-pptx Patterns (PowerPoint .pptx)
| Operation | Code |
|---|---|
| Set presentation title | prs.core_properties.title = "Title" |
| Add slide titles | Add PP_PLACEHOLDER.TITLE placeholder with text |
| Add alt text to shapes | shape._element.set(qn('p:nvSpPr/p:cNvPr'), ...) → set descr |
| Fix reading order | Reorder <p:spTree> children by visual position |
| Add table headers | Set first row cells as header via <a:tblPr firstRow="1"> |
PowerShell COM Automation
# Word
$word = New-Object -ComObject Word.Application
$doc = $word.Documents.Open("C:\path\file.docx")
$doc.BuiltInDocumentProperties("Title").Value = "Title"
$doc.Save(); $doc.Close(); $word.Quit()
# Excel
$excel = New-Object -ComObject Excel.Application
$wb = $excel.Workbooks.Open("C:\path\file.xlsx")
$wb.BuiltInDocumentProperties("Title").Value = "Title"
$wb.Save(); $wb.Close(); $excel.Quit()
# PowerPoint
$ppt = New-Object -ComObject PowerPoint.Application
$prs = $ppt.Presentations.Open("C:\path\file.pptx")
$prs.BuiltInDocumentProperties("Title").Value = "Title"
$prs.Save(); $prs.Close(); $ppt.Quit()Key OOXML Paths
| Format | ZIP Path | XML Element |
|---|---|---|
| DOCX | docProps/core.xml | <dc:title> |
| DOCX | word/document.xml | <w:lang>, <w:tblHeader/> |
| XLSX | docProps/core.xml | <dc:title> |
| XLSX | xl/workbook.xml | <sheet name=""> |
| PPTX | docProps/core.xml | <dc:title> |
| PPTX | ppt/slides/slideN.xml | <p:spTree> ordering |