mcpField
W
word-documents

word-documents

github.com/aws-samplesDocuments197130 installsUpdated 3w ago
Repository

About word-documents

A skill for creating, editing, reviewing, and reading Word documents with python-docx. It guides document workflows, formatting, layout checks, and comment extraction for document authors and editors.

Key features

  1. 01Create Word documents
  2. 02Modify existing documents
  3. 03Read content and comments
  4. 04Preview page appearance
  5. 05Formatting and layout guidance

Use cases

  1. 01Draft a new Word document
  2. 02Update an existing document
  3. 03Inspect comments in a document
  4. 04Check complex page layouts

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aws-samples/sample-strands-agent-with-agentcore --skill word-documents

After installing, type/word-documentsin Claude Code to confirm it loaded.

Details

From the project README

Word Documents

When to Use

ToolUse When
create_word_documentUser asks to create/generate a NEW Word document
modify_word_documentUser asks to edit/update an EXISTING document or add content
list_my_word_documentsUser asks what documents are available
read_word_documentUser wants to download a document or read its comments
preview_word_pageCheck actual page appearance (charts, images, complex layouts)

Workflow

  1. Before modifying: call preview_word_page to check current layout.
  2. After creation/modification: call preview_word_page to verify.
  3. Run tools sequentially (never parallel) to prevent file race conditions.

Page Setup

python-docx defaults to A4. For US Letter size:

from docx.shared import Inches
section = doc.sections[0]
section.page_width = Inches(8.5)
section.page_height = Inches(11)
# Set 1-inch margins
section.top_margin = Inches(1)
section.bottom_margin = Inches(1)
section.left_margin = Inches(1)
section.right_margin = Inches(1)

Professional Formatting

  • Font: Arial as default. Set via style.font.name = 'Arial'.
  • Headings: Use proper heading styles for TOC compatibility: doc.add_heading('Title', level=1) or doc.add_paragraph(style='Heading 1').
  • Bullet lists: doc.add_paragraph(style='List Bullet'). NEVER insert unicode bullet characters.
  • Numbered lists: doc.add_paragraph(style='List Number').
  • Always preserve existing styles, fonts, and colors when modifying.

Images

from docx.shared import Inches
paragraph = doc.add_paragraph()
run = paragraph.add_run()
run.add_picture('file.png', width=Inches(6))

Code Rules

  • The document is pre-initialized as doc = Document() (create) or loaded as doc (modify). Do NOT include Document() or doc.save().
  • Available libraries: python-docx, matplotlib, pandas, numpy (seaborn NOT available)
  • Use add_paragraph(style='List Bullet') for bullet lists. NEVER insert unicode bullet characters.
  • NEVER use paragraph.text = 'new text' (destroys formatting). Use runs instead.
  • Filenames: letters, numbers, hyphens only.

Tool Reference

create_word_document

Create a new Word document using python-docx code.

ParameterTypeRequiredDescription
python_codestrYesPython code using python-docx (see Code Rules above)
document_namestrYesFilename without extension (letters, numbers, hyphens only)

Example tool_input:

{
  "python_code": "doc.add_heading('Quarterly Report', 0)\ndoc.add_paragraph('This report summarizes Q4 performance.')\ndoc.add_heading('Revenue', level=1)\ndoc.add_paragraph('Total revenue: $1.2M')",
  "document_name": "quarterly-report"
}

WARNING: Parameter is document_name, NOT filename or name.

modify_word_document

Modify an existing Word document and save with a new name.

ParameterTypeRequiredDescription
source_namestrYesExisting document name (without .docx)
output_namestrYesNew output name (MUST differ from source)
python_codestrYesPython code to modify the document

Example tool_input:

{
  "source_name": "quarterly-report",
  "output_name": "quarterly-report-v2",
  "python_code": "doc.add_paragraph('Additional notes added.')"
}
list_my_word_documents

List all Word documents in workspace. No parameters needed.

read_word_document

Read document content. With include_comments=True, also shows all comments with author, date, text, and which paragraph they're attached to.

ParameterTypeRequiredDescription
document_namestrYesDocument name without extension
include_commentsboolNoIf true, extract and display comments with paragraph mapping (default: false)
preview_word_page

Get page screenshots for visual inspection before editing.

ParameterTypeRequiredDescription
document_namestrYesDocument name without extension
page_numberslist[int]Yes1-based page numbers to preview

UI Guidance (from tools-config)

Sequential Execution Required: Run modification tools sequentially, never in parallel (prevents race conditions on S3 file read/write).

When to Use:

  • create_word_document: User asks to create/generate a NEW Word document
  • modify_word_document: User asks to edit/modify/update an EXISTING document or add content to existing document
  • list_my_word_documents: User asks what documents are available
  • read_word_document: User wants to download a document
  • preview_word_page: Check actual page appearance when editing (charts, images, complex layouts)

Before Modifying: Always use preview_word_page first to see the current layout.

Page Setup:

  • python-docx defaults to A4. For US Letter: section.page_width = Inches(8.5); section.page_height = Inches(11)
  • Set 1" margins: section.top_margin = section.bottom_margin = section.left_margin = section.right_margin = Inches(1)

Professional Formatting:

  • Font: Arial as default. Set via style.font.name = 'Arial'
  • Use proper heading styles for TOC compatibility: document.add_heading('Title', level=1) or add_paragraph(style='Heading 1')
  • Lists: use add_paragraph(style='List Bullet') or add_paragraph(style='List Number'). NEVER insert unicode bullet characters manually.

Formatting Preservation:

  • ALWAYS preserve existing styles, fonts, colors
  • NEVER use paragraph.text = 'new text' (destroys formatting)
  • Use runs to modify text while preserving formatting

Filenames: Letters, numbers, hyphens only (e.g., "sales-report.docx")

Available Libraries: python-docx, matplotlib, pandas, numpy (seaborn NOT available)

Images: If workspace has relevant images: run.add_picture('file.png', width=Inches(6))

QA: Always use preview_word_page after creation to verify appearance.

Comments

Markdown supported