以下为本文档的中文说明这是一个全面的办公文档处理技能支持 PDF、WordDOCX、ExcelXLSX/XLSM和 PowerPointPPTX四种常见办公文档格式的读取和编辑操作。它不依赖于 Microsoft Office 或 WPS 等商业软件而是通过开源 Python 库和直接 OOXML 解析来实现文档处理。核心工作流程严格遵循先读后改的原则首先通过 check_env.mjs 预检脚本检查环境是否满足特定操作所需的依赖然后使用 read_document.py 读取文档内容编辑时通过 JSON 操作文件指定要执行的操作序列最后重新读取输出文件验证变更是否正确。支持的编辑操作非常丰富DOCX 支持文本替换、追加段落和添加表格XLSX 支持单元格赋值、公式设置、追加行、添加/重命名工作表以及样式设置PPTX 支持文本替换、指定形状文本设置和文本框添加PDF 支持页面旋转、页面提取、页面删除、文件合并和元数据设置。使用场景包括自动化办公流程中的数据提取、批量生成报告、合同模板填充、数据分析结果导出等。该技能特别注重安全性——所有的编辑操作都保存到新文件而非覆盖原文件文档处理通过确定性脚本而非 AI 猜测操作确保了结果的可重复性和可靠性。Office DocumentsUse this skill for document files, not for building an Office viewer. The goal is to let the agent understand and safely modify files through deterministic scripts.Supported formats:PDF:.pdfWord:.docxExcel:.xlsx,.xlsmPowerPoint:.pptxDo not use Anthropic/Claude document skills as source material. This skill is independently written and relies on permissive open-source libraries or direct OOXML parsing. Seereferences/licenses.mdbefore changing dependencies.Core WorkflowIdentify the file type from the extension and the user’s requested outcome.Read first, edit second. Always inspect the source file before modifying it.Runscripts/check_env.mjsfor the exact capability before any Python worker script.For reading, runscripts/read_document.py.For edits, write a small JSON operations file and run the matching edit script.Save edits to a new output file unless the user explicitly asks to overwrite.Read the output file again withscripts/read_document.pyand verify the requested change.If the requested operation is outside the supported surface, say so clearly and stop.Environment PreflightRun the bundled Node preflight before invoking Python:nodeskills2set/office-documents/scripts/check_env.mjs--capabilityread-docxnodeskills2set/office-documents/scripts/check_env.mjs--capabilityread-pdfnodeskills2set/office-documents/scripts/check_env.mjs--capabilityedit-xlsxBehavior:The preflight itself is JavaScript and uses only Node built-ins.It finds Python throughHANA_OFFICE_PYTHON,python3,python, or Windowspy -3.It requires Python 3.10 because the bundled worker scripts use modern Python syntax.It checks only the packages needed for the requested capability.If it returnsok: false, stop and show the user themessageandinstallGuidance. Do not auto-install dependencies.Capabilities:TaskPreflight capabilityRead DOCXread-docxRead XLSX / XLSMread-xlsxRead PPTXread-pptxRead PDFread-pdfRequire MarkItDown specificallyenhanced-readDOCXreplace_textedit-docx-basicDOCXappend_paragraph/add_tableedit-docx-richXLSX / XLSM editsedit-xlsxPPTXreplace_textedit-pptx-basicPPTXset_shape_text/add_textboxedit-pptx-richPDF structural editsedit-pdfReadingUseread_document.pyfor every supported format:python3 skills2set/office-documents/scripts/read_document.py input.docx--formatmarkdown python3 skills2set/office-documents/scripts/read_document.py input.xlsx--formatjson--outputsummary.json python3 skills2set/office-documents/scripts/read_document.py input.pdf --max-chars120000Behavior:It tries MarkItDown first when available.If MarkItDown is unavailable, it uses direct OOXML readers for DOCX, XLSX, and PPTX.For PDF text extraction it tries pdfplumber, then pypdf.It returns clear JSON errors when required PDF libraries are unavailable or the file is unsupported.For large documents, read enough to understand structure first, then narrow by sheet, slide, page, heading, or searched text.EditingUse JSON operations. Keep each operation explicit and small enough to verify.DOCXpython3 skills2set/office-documents/scripts/edit_docx.py input.docx output.docx--opsops.jsonSupported operations:[{op:replace_text,find:old text,replace:new text},{op:append_paragraph,text:New paragraph},{op:add_table,rows:[[Name,Value],[A,10]]}]Usereplace_textfor safe text updates.append_paragraphandadd_tablerequirepython-docx.XLSXpython3 skills2set/office-documents/scripts/edit_xlsx.py input.xlsx output.xlsx--opsops.jsonSupported operations:[{op:set_cell,sheet:Sheet1,cell:B2,value:Approved},{op:set_formula,sheet:Sheet1,cell:C10, formula: SUM(C2:C9)},{op:append_row,sheet:Sheet1,values:[Total,1200]},{op:add_sheet,name:Summary},{op:rename_sheet,sheet:Sheet1,name:Data},{op:set_style,sheet:Data,cell:A1,bold:true,font_color:FFFFFF,fill_color:1F4E79}]XLSX editing requiresopenpyxl. Preserve formulas unless the user asks to replace them.PPTXpython3 skills2set/office-documents/scripts/edit_pptx.py input.pptx output.pptx--opsops.jsonSupported operations:[{op:replace_text,find:Q1,replace:Q2},{op:set_shape_text,slide:1,shape_index:2,text:Updated title},{op:add_textbox,slide:3,text:Speaker note,left:1,top:1,width:8,height:1}]Usereplace_textfor direct OOXML text updates. Shape targeting and text boxes requirepython-pptx.PDFpython3 skills2set/office-documents/scripts/edit_pdf.py input.pdf output.pdf--opsops.jsonSupported operations:[{op:rotate_pages,pages:1,3-4,degrees:90},{op:extract_pages,pages:1-2,5},{op:delete_pages,pages:7},{op:merge,inputs:[a.pdf,b.pdf]},{op:set_metadata,metadata:{/Title:Updated document}}]PDF editing requirespypdf. Do not claim support for arbitrary PDF text replacement. PDF text is drawing instructions, not normal document text.VerificationAfter any edit:Confirm the output file exists and is non-empty.Read the output withread_document.py.Check that requested content changed and unrelated content still appears intact.Report any limitation, dependency failure, or partial edit.For XLSX formulas, openpyxl preserves formulas but does not calculate them. If calculated values matter and no recalculation engine is available, say that formulas were written but not recalculated locally.Unsupported Or Caution CasesBe explicit when the requested task needs a real Office renderer or advanced document engine:Pixel-perfect layout repair.Scanned PDF OCR when no OCR engine or model is available.PDF arbitrary text replacement.Macros, VBA, encrypted files, password-protected files.Complex PowerPoint animations, transitions, SmartArt, embedded media, OLE objects.Excel pivot table authoring, slicers, external links, macros.Redline or track-changes fidelity matching Microsoft Word.If the user needs one of these, explain the specific limitation and suggest the smallest safe alternative.ReferencesRead only the relevant reference file when needed:references/docx.mdfor Word details.references/xlsx.mdfor spreadsheet details.references/pptx.mdfor PowerPoint details.references/pdf.mdfor PDF details.references/licenses.mdfor licensing and dependency constraints.