[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KVTCPR9FR419243Y0DPREN":3,"skill-same:01M6KVTCPR9FR419243Y0DPREN":334},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":15,"sourceHtmlUrl":16,"categories":17,"keywords":34,"publishedAt":55,"linkOnly":56,"markdownContent":57,"markdownBody":58,"frontMatter":59,"refName":69,"commitSha":70,"skillDirectory":71,"forksCount":72,"repositoryHtmlUrl":73,"repositoryHomepageUrl":74,"ownerHtmlUrl":75,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":76,"install":77,"resources":90},"01M6KVTCPR9FR419243Y0DPREN","docx",null,"Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). For CREATING new documents (report, memo, letter, résumé, contract from scratch), call the built-in tool `renderDocx` instead — it renders Markdown to .docx in milliseconds without forking Node.js. This skill remains authoritative for EDITING existing .docx (unpack\u002Fedit XML\u002Fpack), tracked changes, comments, image manipulation, find-and-replace, and conversions. Triggers include: \"Word doc\", \"word document\", \".docx\", or requests to edit\u002Fextract\u002Frestructure existing Word files. Do NOT use for PDFs, spreadsheets, or general coding tasks unrelated to document generation.","mateaix\u002Fmateclaw","mateaix","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F57164338?v=4","01M6KVQ3JXJP7M6D3BKS2BAMFF","01M6KVQ3Q8YG7DT57AY22TBXGG",1194,"LicenseRef-Proprietary","https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002FSKILL.md",[18,23,26,31],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",{"categoryNo":32,"categoryName":33,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000037","律师与法务",[5,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],"read","scratch","letter","for","word documents","document generation","triggers","do","general","files","edit","python3","coding","tool","create","spreadsheets","documents","windows","macos","image","2026-11-09 23:53:37",false,"---\nname: docx\nversion: \"1.1.0\"\ndescription: \"Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). For CREATING new documents (report, memo, letter, résumé, contract from scratch), call the built-in tool `renderDocx` instead — it renders Markdown to .docx in milliseconds without forking Node.js. This skill remains authoritative for EDITING existing .docx (unpack\u002Fedit XML\u002Fpack), tracked changes, comments, image manipulation, find-and-replace, and conversions. Triggers include: \\\"Word doc\\\", \\\"word document\\\", \\\".docx\\\", or requests to edit\u002Fextract\u002Frestructure existing Word files. Do NOT use for PDFs, spreadsheets, or general coding tasks unrelated to document generation.\"\ndependencies:\n  commands:\n    - python3\n    - node\n  tools:\n    - skillScriptTool\n    - skillFileTool\nplatforms:\n  - macos\n  - linux\n  - windows\n---\n\n> **Important:** All `scripts\u002F` paths are relative to this skill directory.\n> Use `run_skill_script` tool to execute scripts, or run with: `cd {this_skill_dir} && python scripts\u002F...`\n\n# DOCX creation, editing, and analysis\n\n## Quick Start — Pick the Right Tool\n\n| Task | Recommended Tool |\n|------|------------------|\n| **Create** a new document (report \u002F résumé \u002F contract \u002F memo) | `renderDocx()` — millisecond render, no subprocess |\n| **Edit** an existing .docx (content \u002F formatting) | unpack → edit XML → pack workflow below |\n| Add tracked changes \u002F comments | unpack → edit XML → pack workflow below |\n| GB\u002FT 9704 official document | `writeGongwen()` (BmacClaw only) |\n\n### Create a new document (recommended path)\n\nCall the in-process Java tool — no Node.js install, no fork, no disk round-trip:\n\n```\nrenderDocx(\n  markdown=\"# Title\\n\\nBody paragraph...\",\n  filename=\"monthly-report\",\n  pageSize=\"A4\"\n)\n```\n\nReturns a clickable link of the form\n`[monthly-report.docx](\u002Fapi\u002Fv1\u002Ffiles\u002Fgenerated\u002F\u003Cuuid>)` valid for 10 minutes.\nThe user clicks it to download — no follow-up Agent step needed.\n\n`renderDocx` supports headings (`#` `##` `###`), bold (`**text**`), bullet\nlists (`- item`), numbered lists (`1. item`), pipe-style tables, and plain\nparagraphs. For images, headers\u002Ffooters, or precise OOXML control, fall back\nto the docx-js workflow below.\n\n## Prerequisites\n\n- **python-docx** (`pip install python-docx`): direct structure reading and light editing (paragraphs, styles, tables)\n- **docx** (`npm install -g docx`): new document creation\n- **LibreOffice** (`soffice`): `.doc` -> `.docx` conversion, tracked-changes acceptance, and PDF export\n- **pandoc**: text extraction\n- **pdftoppm** (poppler-utils): document-to-image workflows\n- If `pdftoppm` is unavailable, a Python fallback path may use `pdf2image`.\n- On Windows, dependencies must be installed and available in `PATH`; if missing, report the dependency issue and stop (do not keep retrying).\n\n## Overview\n\nA .docx file is a ZIP archive containing XML files.\n\n## Quick Reference\n\n| Task | Approach |\n|------|----------|\n| Read\u002Fanalyze content | `pandoc` or unpack for raw XML |\n| Create new document | Use `docx-js` - see Creating New Documents below |\n| Edit existing document | Unpack → edit XML → repack - see Editing Existing Documents below |\n\n### Converting .doc to .docx\n\nLegacy `.doc` files must be converted before editing:\n\n```bash\npython scripts\u002Foffice\u002Fsoffice.py --headless --convert-to docx document.doc\n```\n\n### Reading Content\n\n**Option A: python-docx (recommended for structured access)**\n\nInstall: `pip install python-docx`. Gives direct access to paragraphs, styles, tables, and metadata without unpacking ZIP.\n\n```python\nfrom docx import Document\n\ndoc = Document(\"document.docx\")\n\n# Paragraphs with styles\nfor para in doc.paragraphs:\n    print(f\"[{para.style.name}] {para.text}\")\n\n# Tables\nfor i, table in enumerate(doc.tables):\n    print(f\"Table {i+1}:\")\n    for row in table.rows:\n        print([cell.text for cell in row.cells])\n\n# Inline styles within a paragraph\nfor para in doc.paragraphs:\n    for run in para.runs:\n        print(f\"  run: bold={run.bold} italic={run.italic} text={run.text!r}\")\n```\n\nUse python-docx when you need to read or lightly modify content. Fall back to the unpack\u002FXML workflow for complex structural changes.\n\n**Option B: pandoc (plain text extraction)**\n```bash\n# Text extraction with tracked changes\npandoc --track-changes=all document.docx -o output.md\n\n# Raw XML access\npython scripts\u002Foffice\u002Funpack.py document.docx unpacked\u002F\n```\n\n### Converting to Images\n\n```bash\npython scripts\u002Foffice\u002Fsoffice.py --headless --convert-to pdf document.docx\npdftoppm -jpeg -r 150 document.pdf page\n```\n\n### Accepting Tracked Changes\n\nTo produce a clean document with all tracked changes accepted (requires LibreOffice):\n\n```bash\npython scripts\u002Faccept_changes.py input.docx output.docx\n```\n\n---\n\n## Creating New Documents\n\nGenerate .docx files with JavaScript, then validate. Install: `npm install -g docx`\n\n### Setup\n```javascript\nconst { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, ImageRun,\n        Header, Footer, AlignmentType, PageOrientation, LevelFormat, ExternalHyperlink,\n        TableOfContents, HeadingLevel, BorderStyle, WidthType, ShadingType,\n        VerticalAlign, PageNumber, PageBreak } = require('docx');\n\nconst doc = new Document({ sections: [{ children: [\u002F* content *\u002F] }] });\nPacker.toBuffer(doc).then(buffer => fs.writeFileSync(\"doc.docx\", buffer));\n```\n\n### Validation\nAfter creating the file, validate it. If validation fails, unpack, fix the XML, and repack.\n```bash\npython scripts\u002Foffice\u002Fvalidate.py doc.docx\n```\n\n### Page Size\n\n```javascript\n\u002F\u002F CRITICAL: docx-js defaults to A4, not US Letter\n\u002F\u002F Always set page size explicitly for consistent results\nsections: [{\n  properties: {\n    page: {\n      size: {\n        width: 12240,   \u002F\u002F 8.5 inches in DXA\n        height: 15840   \u002F\u002F 11 inches in DXA\n      },\n      margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } \u002F\u002F 1 inch margins\n    }\n  },\n  children: [\u002F* content *\u002F]\n}]\n```\n\n**Common page sizes (DXA units, 1440 DXA = 1 inch):**\n\n| Paper | Width | Height | Content Width (1\" margins) |\n|-------|-------|--------|---------------------------|\n| US Letter | 12,240 | 15,840 | 9,360 |\n| A4 (default) | 11,906 | 16,838 | 9,026 |\n\n**Landscape orientation:** docx-js swaps width\u002Fheight internally, so pass portrait dimensions and let it handle the swap:\n```javascript\nsize: {\n  width: 12240,   \u002F\u002F Pass SHORT edge as width\n  height: 15840,  \u002F\u002F Pass LONG edge as height\n  orientation: PageOrientation.LANDSCAPE  \u002F\u002F docx-js swaps them in the XML\n},\n\u002F\u002F Content width = 15840 - left margin - right margin (uses the long edge)\n```\n\n### Styles (Override Built-in Headings)\n\nUse Arial as the default font (universally supported). Keep titles black for readability.\n\n```javascript\nconst doc = new Document({\n  styles: {\n    default: { document: { run: { font: \"Arial\", size: 24 } } }, \u002F\u002F 12pt default\n    paragraphStyles: [\n      \u002F\u002F IMPORTANT: Use exact IDs to override built-in styles\n      { id: \"Heading1\", name: \"Heading 1\", basedOn: \"Normal\", next: \"Normal\", quickFormat: true,\n        run: { size: 32, bold: true, font: \"Arial\" },\n        paragraph: { spacing: { before: 240, after: 240 }, outlineLevel: 0 } }, \u002F\u002F outlineLevel required for TOC\n      { id: \"Heading2\", name: \"Heading 2\", basedOn: \"Normal\", next: \"Normal\", quickFormat: true,\n        run: { size: 28, bold: true, font: \"Arial\" },\n        paragraph: { spacing: { before: 180, after: 180 }, outlineLevel: 1 } },\n    ]\n  },\n  sections: [{\n    children: [\n      new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun(\"Title\")] }),\n    ]\n  }]\n});\n```\n\n### Lists (NEVER use unicode bullets)\n\n```javascript\n\u002F\u002F CORRECT - use numbering config with LevelFormat.BULLET\nconst doc = new Document({\n  numbering: {\n    config: [\n      { reference: \"bullets\",\n        levels: [{ level: 0, format: LevelFormat.BULLET, text: \"\\u2022\", alignment: AlignmentType.LEFT,\n          style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },\n      { reference: \"numbers\",\n        levels: [{ level: 0, format: LevelFormat.DECIMAL, text: \"%1.\", alignment: AlignmentType.LEFT,\n          style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },\n    ]\n  },\n  sections: [{\n    children: [\n      new Paragraph({ numbering: { reference: \"bullets\", level: 0 },\n        children: [new TextRun(\"Bullet item\")] }),\n      new Paragraph({ numbering: { reference: \"numbers\", level: 0 },\n        children: [new TextRun(\"Numbered item\")] }),\n    ]\n  }]\n});\n\n\u002F\u002F Each reference creates INDEPENDENT numbering\n\u002F\u002F Same reference = continues (1,2,3 then 4,5,6)\n\u002F\u002F Different reference = restarts (1,2,3 then 1,2,3)\n```\n\n### Tables\n\n**CRITICAL: Tables need dual widths** - set both `columnWidths` on the table AND `width` on each cell.\n\n```javascript\n\u002F\u002F CRITICAL: Use ShadingType.CLEAR (not SOLID) to prevent black backgrounds\nconst border = { style: BorderStyle.SINGLE, size: 1, color: \"CCCCCC\" };\nconst borders = { top: border, bottom: border, left: border, right: border };\n\nnew Table({\n  width: { size: 9360, type: WidthType.DXA }, \u002F\u002F Always use DXA\n  columnWidths: [4680, 4680], \u002F\u002F Must sum to table width (DXA: 1440 = 1 inch)\n  rows: [\n    new TableRow({\n      children: [\n        new TableCell({\n          borders,\n          width: { size: 4680, type: WidthType.DXA }, \u002F\u002F Also set on each cell\n          shading: { fill: \"D5E8F0\", type: ShadingType.CLEAR }, \u002F\u002F CLEAR not SOLID\n          margins: { top: 80, bottom: 80, left: 120, right: 120 },\n          children: [new Paragraph({ children: [new TextRun(\"Cell\")] })]\n        })\n      ]\n    })\n  ]\n})\n```\n\n**Width rules:**\n- **Always use `WidthType.DXA`** - never `WidthType.PERCENTAGE`\n- Table width must equal the sum of `columnWidths`\n- Cell `width` must match corresponding `columnWidth`\n\n### Images\n\n```javascript\n\u002F\u002F CRITICAL: type parameter is REQUIRED\nnew Paragraph({\n  children: [new ImageRun({\n    type: \"png\", \u002F\u002F Required: png, jpg, jpeg, gif, bmp, svg\n    data: fs.readFileSync(\"image.png\"),\n    transformation: { width: 200, height: 150 },\n    altText: { title: \"Title\", description: \"Desc\", name: \"Name\" } \u002F\u002F All three required\n  })]\n})\n```\n\n### Page Breaks\n\n```javascript\n\u002F\u002F PageBreak must be inside a Paragraph\nnew Paragraph({ children: [new PageBreak()] })\n```\n\n### Table of Contents\n\n```javascript\n\u002F\u002F Headings must use HeadingLevel ONLY - no custom styles\nnew TableOfContents(\"Table of Contents\", { hyperlink: true, headingStyleRange: \"1-3\" })\n```\n\n### Headers\u002FFooters\n\n```javascript\nsections: [{\n  properties: {\n    page: { margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } }\n  },\n  headers: {\n    default: new Header({ children: [new Paragraph({ children: [new TextRun(\"Header\")] })] })\n  },\n  footers: {\n    default: new Footer({ children: [new Paragraph({\n      children: [new TextRun(\"Page \"), new TextRun({ children: [PageNumber.CURRENT] })]\n    })] })\n  },\n  children: [\u002F* content *\u002F]\n}]\n```\n\n### Critical Rules for docx-js\n\n- **Set page size explicitly** - docx-js defaults to A4\n- **Landscape: pass portrait dimensions** - docx-js swaps width\u002Fheight internally\n- **Never use `\\n`** - use separate Paragraph elements\n- **Never use unicode bullets** - use `LevelFormat.BULLET` with numbering config\n- **PageBreak must be in Paragraph**\n- **ImageRun requires `type`**\n- **Always set table `width` with DXA** - never use `WidthType.PERCENTAGE`\n- **Tables need dual widths** - `columnWidths` array AND cell `width`\n- **Use `ShadingType.CLEAR`** - never SOLID for table shading\n- **TOC requires HeadingLevel only**\n- **Override built-in styles** - use exact IDs: \"Heading1\", \"Heading2\", etc.\n- **Include `outlineLevel`** - required for TOC (0 for H1, 1 for H2, etc.)\n\n---\n\n## Editing Existing Documents\n\n**Follow all 3 steps in order.**\n\n### Step 1: Unpack\n```bash\npython scripts\u002Foffice\u002Funpack.py document.docx unpacked\u002F\n```\nExtracts XML, pretty-prints, merges adjacent runs, and converts smart quotes to XML entities. Use `--merge-runs false` to skip run merging.\n\n### Step 2: Edit XML\n\nEdit files in `unpacked\u002Fword\u002F`. See XML Reference below for patterns.\n\n**Use \"MateClaw\" as the author** for tracked changes and comments, unless the user explicitly requests a different name.\n\n**CRITICAL: Use smart quotes for new content:**\n```xml\n\u003Cw:t>Here&#x2019;s a quote: &#x201C;Hello&#x201D;\u003C\u002Fw:t>\n```\n| Entity | Character |\n|--------|-----------|\n| `&#x2018;` | ' (left single) |\n| `&#x2019;` | ' (right single \u002F apostrophe) |\n| `&#x201C;` | \" (left double) |\n| `&#x201D;` | \" (right double) |\n\n**Adding comments:** Use `comment.py` to handle boilerplate:\n```bash\npython scripts\u002Fcomment.py unpacked\u002F 0 \"Comment text with &amp; and &#x2019;\"\npython scripts\u002Fcomment.py unpacked\u002F 1 \"Reply text\" --parent 0  # reply to comment 0\npython scripts\u002Fcomment.py unpacked\u002F 0 \"Text\" --author \"Custom Author\"\n```\nThen add markers to document.xml (see Comments in XML Reference).\n\n### Step 3: Pack\n```bash\npython scripts\u002Foffice\u002Fpack.py unpacked\u002F output.docx --original document.docx\n```\nValidates with auto-repair, condenses XML, and creates DOCX. Use `--validate false` to skip.\n\n**Auto-repair will fix:**\n- `durableId` >= 0x7FFFFFFF (regenerates valid ID)\n- Missing `xml:space=\"preserve\"` on `\u003Cw:t>` with whitespace\n\n### Common Pitfalls\n\n- **Replace entire `\u003Cw:r>` elements**: When adding tracked changes, replace the whole `\u003Cw:r>...\u003C\u002Fw:r>` block.\n- **Preserve `\u003Cw:rPr>` formatting**: Copy the original run's `\u003Cw:rPr>` block into your tracked change runs.\n\n---\n\n## XML Reference\n\n### Schema Compliance\n\n- **Element order in `\u003Cw:pPr>`**: `\u003Cw:pStyle>`, `\u003Cw:numPr>`, `\u003Cw:spacing>`, `\u003Cw:ind>`, `\u003Cw:jc>`, `\u003Cw:rPr>` last\n- **Whitespace**: Add `xml:space=\"preserve\"` to `\u003Cw:t>` with leading\u002Ftrailing spaces\n- **RSIDs**: Must be 8-digit hex (e.g., `00AB1234`)\n\n### Tracked Changes\n\n**Insertion:**\n```xml\n\u003Cw:ins w:id=\"1\" w:author=\"MateClaw\" w:date=\"2025-01-01T00:00:00Z\">\n  \u003Cw:r>\u003Cw:t>inserted text\u003C\u002Fw:t>\u003C\u002Fw:r>\n\u003C\u002Fw:ins>\n```\n\n**Deletion:**\n```xml\n\u003Cw:del w:id=\"2\" w:author=\"MateClaw\" w:date=\"2025-01-01T00:00:00Z\">\n  \u003Cw:r>\u003Cw:delText>deleted text\u003C\u002Fw:delText>\u003C\u002Fw:r>\n\u003C\u002Fw:del>\n```\n\n**Inside `\u003Cw:del>`**: Use `\u003Cw:delText>` instead of `\u003Cw:t>`, and `\u003Cw:delInstrText>` instead of `\u003Cw:instrText>`.\n\n**Minimal edits** - only mark what changes:\n```xml\n\u003C!-- Change \"30 days\" to \"60 days\" -->\n\u003Cw:r>\u003Cw:t>The term is \u003C\u002Fw:t>\u003C\u002Fw:r>\n\u003Cw:del w:id=\"1\" w:author=\"MateClaw\" w:date=\"...\">\n  \u003Cw:r>\u003Cw:delText>30\u003C\u002Fw:delText>\u003C\u002Fw:r>\n\u003C\u002Fw:del>\n\u003Cw:ins w:id=\"2\" w:author=\"MateClaw\" w:date=\"...\">\n  \u003Cw:r>\u003Cw:t>60\u003C\u002Fw:t>\u003C\u002Fw:r>\n\u003C\u002Fw:ins>\n\u003Cw:r>\u003Cw:t> days.\u003C\u002Fw:t>\u003C\u002Fw:r>\n```\n\n**Deleting entire paragraphs** - mark the paragraph mark as deleted:\n```xml\n\u003Cw:p>\n  \u003Cw:pPr>\n    \u003Cw:rPr>\n      \u003Cw:del w:id=\"1\" w:author=\"MateClaw\" w:date=\"2025-01-01T00:00:00Z\"\u002F>\n    \u003C\u002Fw:rPr>\n  \u003C\u002Fw:pPr>\n  \u003Cw:del w:id=\"2\" w:author=\"MateClaw\" w:date=\"2025-01-01T00:00:00Z\">\n    \u003Cw:r>\u003Cw:delText>Entire paragraph content being deleted...\u003C\u002Fw:delText>\u003C\u002Fw:r>\n  \u003C\u002Fw:del>\n\u003C\u002Fw:p>\n```\n\n**Rejecting another author's insertion:**\n```xml\n\u003Cw:ins w:author=\"Jane\" w:id=\"5\">\n  \u003Cw:del w:author=\"MateClaw\" w:id=\"10\">\n    \u003Cw:r>\u003Cw:delText>their inserted text\u003C\u002Fw:delText>\u003C\u002Fw:r>\n  \u003C\u002Fw:del>\n\u003C\u002Fw:ins>\n```\n\n**Restoring another author's deletion:**\n```xml\n\u003Cw:del w:author=\"Jane\" w:id=\"5\">\n  \u003Cw:r>\u003Cw:delText>deleted text\u003C\u002Fw:delText>\u003C\u002Fw:r>\n\u003C\u002Fw:del>\n\u003Cw:ins w:author=\"MateClaw\" w:id=\"10\">\n  \u003Cw:r>\u003Cw:t>deleted text\u003C\u002Fw:t>\u003C\u002Fw:r>\n\u003C\u002Fw:ins>\n```\n\n### Comments\n\nAfter running `comment.py`, add markers to document.xml:\n\n**CRITICAL: `\u003Cw:commentRangeStart>` and `\u003Cw:commentRangeEnd>` are siblings of `\u003Cw:r>`, never inside `\u003Cw:r>`.**\n\n```xml\n\u003Cw:commentRangeStart w:id=\"0\"\u002F>\n\u003Cw:r>\u003Cw:t>commented text\u003C\u002Fw:t>\u003C\u002Fw:r>\n\u003Cw:commentRangeEnd w:id=\"0\"\u002F>\n\u003Cw:r>\u003Cw:rPr>\u003Cw:rStyle w:val=\"CommentReference\"\u002F>\u003C\u002Fw:rPr>\u003Cw:commentReference w:id=\"0\"\u002F>\u003C\u002Fw:r>\n```\n\n### Images\n\n1. Add image file to `word\u002Fmedia\u002F`\n2. Add relationship to `word\u002F_rels\u002Fdocument.xml.rels`:\n```xml\n\u003CRelationship Id=\"rId5\" Type=\"...\u002Fimage\" Target=\"media\u002Fimage1.png\"\u002F>\n```\n3. Add content type to `[Content_Types].xml`:\n```xml\n\u003CDefault Extension=\"png\" ContentType=\"image\u002Fpng\"\u002F>\n```\n4. Reference in document.xml:\n```xml\n\u003Cw:drawing>\n  \u003Cwp:inline>\n    \u003Cwp:extent cx=\"914400\" cy=\"914400\"\u002F>  \u003C!-- EMUs: 914400 = 1 inch -->\n    \u003Ca:graphic>\n      \u003Ca:graphicData uri=\"...\u002Fpicture\">\n        \u003Cpic:pic>\n          \u003Cpic:blipFill>\u003Ca:blip r:embed=\"rId5\"\u002F>\u003C\u002Fpic:blipFill>\n        \u003C\u002Fpic:pic>\n      \u003C\u002Fa:graphicData>\n    \u003C\u002Fa:graphic>\n  \u003C\u002Fwp:inline>\n\u003C\u002Fw:drawing>\n```\n","> **Important:** All `scripts\u002F` paths are relative to this skill directory.\n> Use `run_skill_script` tool to execute scripts, or run with: `cd {this_skill_dir} && python scripts\u002F...`\n\n# DOCX creation, editing, and analysis\n\n## Quick Start — Pick the Right Tool\n\n| Task | Recommended Tool |\n|------|------------------|\n| **Create** a new document (report \u002F résumé \u002F contract \u002F memo) | `renderDocx()` — millisecond render, no subprocess |\n| **Edit** an existing .docx (content \u002F formatting) | unpack → edit XML → pack workflow below |\n| Add tracked changes \u002F comments | unpack → edit XML → pack workflow below |\n| GB\u002FT 9704 official document | `writeGongwen()` (BmacClaw only) |\n\n### Create a new document (recommended path)\n\nCall the in-process Java tool — no Node.js install, no fork, no disk round-trip:\n\n```\nrenderDocx(\n  markdown=\"# Title\\n\\nBody paragraph...\",\n  filename=\"monthly-report\",\n  pageSize=\"A4\"\n)\n```\n\nReturns a clickable link of the form\n`[monthly-report.docx](\u002Fapi\u002Fv1\u002Ffiles\u002Fgenerated\u002F\u003Cuuid>)` valid for 10 minutes.\nThe user clicks it to download — no follow-up Agent step needed.\n\n`renderDocx` supports headings (`#` `##` `###`), bold (`**text**`), bullet\nlists (`- item`), numbered lists (`1. item`), pipe-style tables, and plain\nparagraphs. For images, headers\u002Ffooters, or precise OOXML control, fall back\nto the docx-js workflow below.\n\n## Prerequisites\n\n- **python-docx** (`pip install python-docx`): direct structure reading and light editing (paragraphs, styles, tables)\n- **docx** (`npm install -g docx`): new document creation\n- **LibreOffice** (`soffice`): `.doc` -> `.docx` conversion, tracked-changes acceptance, and PDF export\n- **pandoc**: text extraction\n- **pdftoppm** (poppler-utils): document-to-image workflows\n- If `pdftoppm` is unavailable, a Python fallback path may use `pdf2image`.\n- On Windows, dependencies must be installed and available in `PATH`; if missing, report the dependency issue and stop (do not keep retrying).\n\n## Overview\n\nA .docx file is a ZIP archive containing XML files.\n\n## Quick Reference\n\n| Task | Approach |\n|------|----------|\n| Read\u002Fanalyze content | `pandoc` or unpack for raw XML |\n| Create new document | Use `docx-js` - see Creating New Documents below |\n| Edit existing document | Unpack → edit XML → repack - see Editing Existing Documents below |\n\n### Converting .doc to .docx\n\nLegacy `.doc` files must be converted before editing:\n\n```bash\npython scripts\u002Foffice\u002Fsoffice.py --headless --convert-to docx document.doc\n```\n\n### Reading Content\n\n**Option A: python-docx (recommended for structured access)**\n\nInstall: `pip install python-docx`. Gives direct access to paragraphs, styles, tables, and metadata without unpacking ZIP.\n\n```python\nfrom docx import Document\n\ndoc = Document(\"document.docx\")\n\n# Paragraphs with styles\nfor para in doc.paragraphs:\n    print(f\"[{para.style.name}] {para.text}\")\n\n# Tables\nfor i, table in enumerate(doc.tables):\n    print(f\"Table {i+1}:\")\n    for row in table.rows:\n        print([cell.text for cell in row.cells])\n\n# Inline styles within a paragraph\nfor para in doc.paragraphs:\n    for run in para.runs:\n        print(f\"  run: bold={run.bold} italic={run.italic} text={run.text!r}\")\n```\n\nUse python-docx when you need to read or lightly modify content. Fall back to the unpack\u002FXML workflow for complex structural changes.\n\n**Option B: pandoc (plain text extraction)**\n```bash\n# Text extraction with tracked changes\npandoc --track-changes=all document.docx -o output.md\n\n# Raw XML access\npython scripts\u002Foffice\u002Funpack.py document.docx unpacked\u002F\n```\n\n### Converting to Images\n\n```bash\npython scripts\u002Foffice\u002Fsoffice.py --headless --convert-to pdf document.docx\npdftoppm -jpeg -r 150 document.pdf page\n```\n\n### Accepting Tracked Changes\n\nTo produce a clean document with all tracked changes accepted (requires LibreOffice):\n\n```bash\npython scripts\u002Faccept_changes.py input.docx output.docx\n```\n\n---\n\n## Creating New Documents\n\nGenerate .docx files with JavaScript, then validate. Install: `npm install -g docx`\n\n### Setup\n```javascript\nconst { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, ImageRun,\n        Header, Footer, AlignmentType, PageOrientation, LevelFormat, ExternalHyperlink,\n        TableOfContents, HeadingLevel, BorderStyle, WidthType, ShadingType,\n        VerticalAlign, PageNumber, PageBreak } = require('docx');\n\nconst doc = new Document({ sections: [{ children: [\u002F* content *\u002F] }] });\nPacker.toBuffer(doc).then(buffer => fs.writeFileSync(\"doc.docx\", buffer));\n```\n\n### Validation\nAfter creating the file, validate it. If validation fails, unpack, fix the XML, and repack.\n```bash\npython scripts\u002Foffice\u002Fvalidate.py doc.docx\n```\n\n### Page Size\n\n```javascript\n\u002F\u002F CRITICAL: docx-js defaults to A4, not US Letter\n\u002F\u002F Always set page size explicitly for consistent results\nsections: [{\n  properties: {\n    page: {\n      size: {\n        width: 12240,   \u002F\u002F 8.5 inches in DXA\n        height: 15840   \u002F\u002F 11 inches in DXA\n      },\n      margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } \u002F\u002F 1 inch margins\n    }\n  },\n  children: [\u002F* content *\u002F]\n}]\n```\n\n**Common page sizes (DXA units, 1440 DXA = 1 inch):**\n\n| Paper | Width | Height | Content Width (1\" margins) |\n|-------|-------|--------|---------------------------|\n| US Letter | 12,240 | 15,840 | 9,360 |\n| A4 (default) | 11,906 | 16,838 | 9,026 |\n\n**Landscape orientation:** docx-js swaps width\u002Fheight internally, so pass portrait dimensions and let it handle the swap:\n```javascript\nsize: {\n  width: 12240,   \u002F\u002F Pass SHORT edge as width\n  height: 15840,  \u002F\u002F Pass LONG edge as height\n  orientation: PageOrientation.LANDSCAPE  \u002F\u002F docx-js swaps them in the XML\n},\n\u002F\u002F Content width = 15840 - left margin - right margin (uses the long edge)\n```\n\n### Styles (Override Built-in Headings)\n\nUse Arial as the default font (universally supported). Keep titles black for readability.\n\n```javascript\nconst doc = new Document({\n  styles: {\n    default: { document: { run: { font: \"Arial\", size: 24 } } }, \u002F\u002F 12pt default\n    paragraphStyles: [\n      \u002F\u002F IMPORTANT: Use exact IDs to override built-in styles\n      { id: \"Heading1\", name: \"Heading 1\", basedOn: \"Normal\", next: \"Normal\", quickFormat: true,\n        run: { size: 32, bold: true, font: \"Arial\" },\n        paragraph: { spacing: { before: 240, after: 240 }, outlineLevel: 0 } }, \u002F\u002F outlineLevel required for TOC\n      { id: \"Heading2\", name: \"Heading 2\", basedOn: \"Normal\", next: \"Normal\", quickFormat: true,\n        run: { size: 28, bold: true, font: \"Arial\" },\n        paragraph: { spacing: { before: 180, after: 180 }, outlineLevel: 1 } },\n    ]\n  },\n  sections: [{\n    children: [\n      new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun(\"Title\")] }),\n    ]\n  }]\n});\n```\n\n### Lists (NEVER use unicode bullets)\n\n```javascript\n\u002F\u002F CORRECT - use numbering config with LevelFormat.BULLET\nconst doc = new Document({\n  numbering: {\n    config: [\n      { reference: \"bullets\",\n        levels: [{ level: 0, format: LevelFormat.BULLET, text: \"\\u2022\", alignment: AlignmentType.LEFT,\n          style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },\n      { reference: \"numbers\",\n        levels: [{ level: 0, format: LevelFormat.DECIMAL, text: \"%1.\", alignment: AlignmentType.LEFT,\n          style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },\n    ]\n  },\n  sections: [{\n    children: [\n      new Paragraph({ numbering: { reference: \"bullets\", level: 0 },\n        children: [new TextRun(\"Bullet item\")] }),\n      new Paragraph({ numbering: { reference: \"numbers\", level: 0 },\n        children: [new TextRun(\"Numbered item\")] }),\n    ]\n  }]\n});\n\n\u002F\u002F Each reference creates INDEPENDENT numbering\n\u002F\u002F Same reference = continues (1,2,3 then 4,5,6)\n\u002F\u002F Different reference = restarts (1,2,3 then 1,2,3)\n```\n\n### Tables\n\n**CRITICAL: Tables need dual widths** - set both `columnWidths` on the table AND `width` on each cell.\n\n```javascript\n\u002F\u002F CRITICAL: Use ShadingType.CLEAR (not SOLID) to prevent black backgrounds\nconst border = { style: BorderStyle.SINGLE, size: 1, color: \"CCCCCC\" };\nconst borders = { top: border, bottom: border, left: border, right: border };\n\nnew Table({\n  width: { size: 9360, type: WidthType.DXA }, \u002F\u002F Always use DXA\n  columnWidths: [4680, 4680], \u002F\u002F Must sum to table width (DXA: 1440 = 1 inch)\n  rows: [\n    new TableRow({\n      children: [\n        new TableCell({\n          borders,\n          width: { size: 4680, type: WidthType.DXA }, \u002F\u002F Also set on each cell\n          shading: { fill: \"D5E8F0\", type: ShadingType.CLEAR }, \u002F\u002F CLEAR not SOLID\n          margins: { top: 80, bottom: 80, left: 120, right: 120 },\n          children: [new Paragraph({ children: [new TextRun(\"Cell\")] })]\n        })\n      ]\n    })\n  ]\n})\n```\n\n**Width rules:**\n- **Always use `WidthType.DXA`** - never `WidthType.PERCENTAGE`\n- Table width must equal the sum of `columnWidths`\n- Cell `width` must match corresponding `columnWidth`\n\n### Images\n\n```javascript\n\u002F\u002F CRITICAL: type parameter is REQUIRED\nnew Paragraph({\n  children: [new ImageRun({\n    type: \"png\", \u002F\u002F Required: png, jpg, jpeg, gif, bmp, svg\n    data: fs.readFileSync(\"image.png\"),\n    transformation: { width: 200, height: 150 },\n    altText: { title: \"Title\", description: \"Desc\", name: \"Name\" } \u002F\u002F All three required\n  })]\n})\n```\n\n### Page Breaks\n\n```javascript\n\u002F\u002F PageBreak must be inside a Paragraph\nnew Paragraph({ children: [new PageBreak()] })\n```\n\n### Table of Contents\n\n```javascript\n\u002F\u002F Headings must use HeadingLevel ONLY - no custom styles\nnew TableOfContents(\"Table of Contents\", { hyperlink: true, headingStyleRange: \"1-3\" })\n```\n\n### Headers\u002FFooters\n\n```javascript\nsections: [{\n  properties: {\n    page: { margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } }\n  },\n  headers: {\n    default: new Header({ children: [new Paragraph({ children: [new TextRun(\"Header\")] })] })\n  },\n  footers: {\n    default: new Footer({ children: [new Paragraph({\n      children: [new TextRun(\"Page \"), new TextRun({ children: [PageNumber.CURRENT] })]\n    })] })\n  },\n  children: [\u002F* content *\u002F]\n}]\n```\n\n### Critical Rules for docx-js\n\n- **Set page size explicitly** - docx-js defaults to A4\n- **Landscape: pass portrait dimensions** - docx-js swaps width\u002Fheight internally\n- **Never use `\\n`** - use separate Paragraph elements\n- **Never use unicode bullets** - use `LevelFormat.BULLET` with numbering config\n- **PageBreak must be in Paragraph**\n- **ImageRun requires `type`**\n- **Always set table `width` with DXA** - never use `WidthType.PERCENTAGE`\n- **Tables need dual widths** - `columnWidths` array AND cell `width`\n- **Use `ShadingType.CLEAR`** - never SOLID for table shading\n- **TOC requires HeadingLevel only**\n- **Override built-in styles** - use exact IDs: \"Heading1\", \"Heading2\", etc.\n- **Include `outlineLevel`** - required for TOC (0 for H1, 1 for H2, etc.)\n\n---\n\n## Editing Existing Documents\n\n**Follow all 3 steps in order.**\n\n### Step 1: Unpack\n```bash\npython scripts\u002Foffice\u002Funpack.py document.docx unpacked\u002F\n```\nExtracts XML, pretty-prints, merges adjacent runs, and converts smart quotes to XML entities. Use `--merge-runs false` to skip run merging.\n\n### Step 2: Edit XML\n\nEdit files in `unpacked\u002Fword\u002F`. See XML Reference below for patterns.\n\n**Use \"MateClaw\" as the author** for tracked changes and comments, unless the user explicitly requests a different name.\n\n**CRITICAL: Use smart quotes for new content:**\n```xml\n\u003Cw:t>Here&#x2019;s a quote: &#x201C;Hello&#x201D;\u003C\u002Fw:t>\n```\n| Entity | Character |\n|--------|-----------|\n| `&#x2018;` | ' (left single) |\n| `&#x2019;` | ' (right single \u002F apostrophe) |\n| `&#x201C;` | \" (left double) |\n| `&#x201D;` | \" (right double) |\n\n**Adding comments:** Use `comment.py` to handle boilerplate:\n```bash\npython scripts\u002Fcomment.py unpacked\u002F 0 \"Comment text with &amp; and &#x2019;\"\npython scripts\u002Fcomment.py unpacked\u002F 1 \"Reply text\" --parent 0  # reply to comment 0\npython scripts\u002Fcomment.py unpacked\u002F 0 \"Text\" --author \"Custom Author\"\n```\nThen add markers to document.xml (see Comments in XML Reference).\n\n### Step 3: Pack\n```bash\npython scripts\u002Foffice\u002Fpack.py unpacked\u002F output.docx --original document.docx\n```\nValidates with auto-repair, condenses XML, and creates DOCX. Use `--validate false` to skip.\n\n**Auto-repair will fix:**\n- `durableId` >= 0x7FFFFFFF (regenerates valid ID)\n- Missing `xml:space=\"preserve\"` on `\u003Cw:t>` with whitespace\n\n### Common Pitfalls\n\n- **Replace entire `\u003Cw:r>` elements**: When adding tracked changes, replace the whole `\u003Cw:r>...\u003C\u002Fw:r>` block.\n- **Preserve `\u003Cw:rPr>` formatting**: Copy the original run's `\u003Cw:rPr>` block into your tracked change runs.\n\n---\n\n## XML Reference\n\n### Schema Compliance\n\n- **Element order in `\u003Cw:pPr>`**: `\u003Cw:pStyle>`, `\u003Cw:numPr>`, `\u003Cw:spacing>`, `\u003Cw:ind>`, `\u003Cw:jc>`, `\u003Cw:rPr>` last\n- **Whitespace**: Add `xml:space=\"preserve\"` to `\u003Cw:t>` with leading\u002Ftrailing spaces\n- **RSIDs**: Must be 8-digit hex (e.g., `00AB1234`)\n\n### Tracked Changes\n\n**Insertion:**\n```xml\n\u003Cw:ins w:id=\"1\" w:author=\"MateClaw\" w:date=\"2025-01-01T00:00:00Z\">\n  \u003Cw:r>\u003Cw:t>inserted text\u003C\u002Fw:t>\u003C\u002Fw:r>\n\u003C\u002Fw:ins>\n```\n\n**Deletion:**\n```xml\n\u003Cw:del w:id=\"2\" w:author=\"MateClaw\" w:date=\"2025-01-01T00:00:00Z\">\n  \u003Cw:r>\u003Cw:delText>deleted text\u003C\u002Fw:delText>\u003C\u002Fw:r>\n\u003C\u002Fw:del>\n```\n\n**Inside `\u003Cw:del>`**: Use `\u003Cw:delText>` instead of `\u003Cw:t>`, and `\u003Cw:delInstrText>` instead of `\u003Cw:instrText>`.\n\n**Minimal edits** - only mark what changes:\n```xml\n\u003C!-- Change \"30 days\" to \"60 days\" -->\n\u003Cw:r>\u003Cw:t>The term is \u003C\u002Fw:t>\u003C\u002Fw:r>\n\u003Cw:del w:id=\"1\" w:author=\"MateClaw\" w:date=\"...\">\n  \u003Cw:r>\u003Cw:delText>30\u003C\u002Fw:delText>\u003C\u002Fw:r>\n\u003C\u002Fw:del>\n\u003Cw:ins w:id=\"2\" w:author=\"MateClaw\" w:date=\"...\">\n  \u003Cw:r>\u003Cw:t>60\u003C\u002Fw:t>\u003C\u002Fw:r>\n\u003C\u002Fw:ins>\n\u003Cw:r>\u003Cw:t> days.\u003C\u002Fw:t>\u003C\u002Fw:r>\n```\n\n**Deleting entire paragraphs** - mark the paragraph mark as deleted:\n```xml\n\u003Cw:p>\n  \u003Cw:pPr>\n    \u003Cw:rPr>\n      \u003Cw:del w:id=\"1\" w:author=\"MateClaw\" w:date=\"2025-01-01T00:00:00Z\"\u002F>\n    \u003C\u002Fw:rPr>\n  \u003C\u002Fw:pPr>\n  \u003Cw:del w:id=\"2\" w:author=\"MateClaw\" w:date=\"2025-01-01T00:00:00Z\">\n    \u003Cw:r>\u003Cw:delText>Entire paragraph content being deleted...\u003C\u002Fw:delText>\u003C\u002Fw:r>\n  \u003C\u002Fw:del>\n\u003C\u002Fw:p>\n```\n\n**Rejecting another author's insertion:**\n```xml\n\u003Cw:ins w:author=\"Jane\" w:id=\"5\">\n  \u003Cw:del w:author=\"MateClaw\" w:id=\"10\">\n    \u003Cw:r>\u003Cw:delText>their inserted text\u003C\u002Fw:delText>\u003C\u002Fw:r>\n  \u003C\u002Fw:del>\n\u003C\u002Fw:ins>\n```\n\n**Restoring another author's deletion:**\n```xml\n\u003Cw:del w:author=\"Jane\" w:id=\"5\">\n  \u003Cw:r>\u003Cw:delText>deleted text\u003C\u002Fw:delText>\u003C\u002Fw:r>\n\u003C\u002Fw:del>\n\u003Cw:ins w:author=\"MateClaw\" w:id=\"10\">\n  \u003Cw:r>\u003Cw:t>deleted text\u003C\u002Fw:t>\u003C\u002Fw:r>\n\u003C\u002Fw:ins>\n```\n\n### Comments\n\nAfter running `comment.py`, add markers to document.xml:\n\n**CRITICAL: `\u003Cw:commentRangeStart>` and `\u003Cw:commentRangeEnd>` are siblings of `\u003Cw:r>`, never inside `\u003Cw:r>`.**\n\n```xml\n\u003Cw:commentRangeStart w:id=\"0\"\u002F>\n\u003Cw:r>\u003Cw:t>commented text\u003C\u002Fw:t>\u003C\u002Fw:r>\n\u003Cw:commentRangeEnd w:id=\"0\"\u002F>\n\u003Cw:r>\u003Cw:rPr>\u003Cw:rStyle w:val=\"CommentReference\"\u002F>\u003C\u002Fw:rPr>\u003Cw:commentReference w:id=\"0\"\u002F>\u003C\u002Fw:r>\n```\n\n### Images\n\n1. Add image file to `word\u002Fmedia\u002F`\n2. Add relationship to `word\u002F_rels\u002Fdocument.xml.rels`:\n```xml\n\u003CRelationship Id=\"rId5\" Type=\"...\u002Fimage\" Target=\"media\u002Fimage1.png\"\u002F>\n```\n3. Add content type to `[Content_Types].xml`:\n```xml\n\u003CDefault Extension=\"png\" ContentType=\"image\u002Fpng\"\u002F>\n```\n4. Reference in document.xml:\n```xml\n\u003Cw:drawing>\n  \u003Cwp:inline>\n    \u003Cwp:extent cx=\"914400\" cy=\"914400\"\u002F>  \u003C!-- EMUs: 914400 = 1 inch -->\n    \u003Ca:graphic>\n      \u003Ca:graphicData uri=\"...\u002Fpicture\">\n        \u003Cpic:pic>\n          \u003Cpic:blipFill>\u003Ca:blip r:embed=\"rId5\"\u002F>\u003C\u002Fpic:blipFill>\n        \u003C\u002Fpic:pic>\n      \u003C\u002Fa:graphicData>\n    \u003C\u002Fa:graphic>\n  \u003C\u002Fwp:inline>\n\u003C\u002Fw:drawing>\n```\n",{"name":5,"version":60,"platforms":61,"description":7,"dependencies":63},"1.1.0",[53,62,52],"linux",{"tools":64,"commands":67},[65,66],"skillScriptTool","skillFileTool",[46,68],"node","dev","11106843d72d25b29c2cd08d7fdbbd222c21df6a","mateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx",361,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw","https:\u002F\u002Fclaw.mate.vip","https:\u002F\u002Fgithub.com\u002Fmateaix","2026-11-12 18:20:54",{"source":8,"skillName":5,"commands":78,"prompt":88,"zipAvailable":89},[79,82,85],{"tool":80,"command":81},"npx","npx skills add mateaix\u002Fmateclaw --skill docx",{"tool":83,"command":84},"bunx","bunx skills add mateaix\u002Fmateclaw --skill docx",{"tool":86,"command":87},"pnpm","pnpm dlx skills add mateaix\u002Fmateclaw --skill docx","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002FSKILL.md",true,[91,96,102,106,110,114,118,122,126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294,298,302,306,310,314,318,322,326,330],{"path":92,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":95,"sourceHtmlUrl":15},"LICENSE.txt","LICENSE","许可证",1467,{"path":97,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":100,"sourceHtmlUrl":101},"scripts\u002F__init__.py","SCRIPT","脚本",1,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002F__init__.py",{"path":103,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":104,"sourceHtmlUrl":105},"scripts\u002Faccept_changes.py",4228,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Faccept_changes.py",{"path":107,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":108,"sourceHtmlUrl":109},"scripts\u002Fcomment.py",10694,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Fcomment.py",{"path":111,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":112,"sourceHtmlUrl":113},"scripts\u002Foffice\u002Fhelpers\u002F__init__.py",0,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fhelpers\u002F__init__.py",{"path":115,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":116,"sourceHtmlUrl":117},"scripts\u002Foffice\u002Fhelpers\u002Fmerge_runs.py",5567,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fhelpers\u002Fmerge_runs.py",{"path":119,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":120,"sourceHtmlUrl":121},"scripts\u002Foffice\u002Fhelpers\u002Fsimplify_redlines.py",5754,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fhelpers\u002Fsimplify_redlines.py",{"path":123,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":124,"sourceHtmlUrl":125},"scripts\u002Foffice\u002Fpack.py",4991,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fpack.py",{"path":127,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":128,"sourceHtmlUrl":129},"scripts\u002Foffice\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-contentTypes.xsd",1963,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-contentTypes.xsd",{"path":131,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":132,"sourceHtmlUrl":133},"scripts\u002Foffice\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-coreProperties.xsd",2515,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-coreProperties.xsd",{"path":135,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":136,"sourceHtmlUrl":137},"scripts\u002Foffice\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-digSig.xsd",2856,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-digSig.xsd",{"path":139,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":140,"sourceHtmlUrl":141},"scripts\u002Foffice\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-relationships.xsd",1344,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-relationships.xsd",{"path":143,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":144,"sourceHtmlUrl":145},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-chart.xsd",74984,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-chart.xsd",{"path":147,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":148,"sourceHtmlUrl":149},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-chartDrawing.xsd",6956,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-chartDrawing.xsd",{"path":151,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":152,"sourceHtmlUrl":153},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-diagram.xsd",51302,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-diagram.xsd",{"path":155,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":156,"sourceHtmlUrl":157},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-lockedCanvas.xsd",624,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-lockedCanvas.xsd",{"path":159,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":160,"sourceHtmlUrl":161},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-main.xsd",152039,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-main.xsd",{"path":163,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":164,"sourceHtmlUrl":165},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-picture.xsd",1231,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-picture.xsd",{"path":167,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":168,"sourceHtmlUrl":169},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-spreadsheetDrawing.xsd",8862,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-spreadsheetDrawing.xsd",{"path":171,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":172,"sourceHtmlUrl":173},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-wordprocessingDrawing.xsd",14795,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-wordprocessingDrawing.xsd",{"path":175,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":176,"sourceHtmlUrl":177},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fpml.xsd",83612,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fpml.xsd",{"path":179,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":180,"sourceHtmlUrl":181},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-additionalCharacteristics.xsd",1269,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-additionalCharacteristics.xsd",{"path":183,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":184,"sourceHtmlUrl":185},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-bibliography.xsd",7328,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-bibliography.xsd",{"path":187,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":188,"sourceHtmlUrl":189},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-commonSimpleTypes.xsd",6382,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-commonSimpleTypes.xsd",{"path":191,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":192,"sourceHtmlUrl":193},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-customXmlDataProperties.xsd",1248,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-customXmlDataProperties.xsd",{"path":195,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":196,"sourceHtmlUrl":197},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-customXmlSchemaProperties.xsd",880,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-customXmlSchemaProperties.xsd",{"path":199,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":200,"sourceHtmlUrl":201},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-documentPropertiesCustom.xsd",2608,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-documentPropertiesCustom.xsd",{"path":203,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":204,"sourceHtmlUrl":205},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-documentPropertiesExtended.xsd",3507,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-documentPropertiesExtended.xsd",{"path":207,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":208,"sourceHtmlUrl":209},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-documentPropertiesVariantTypes.xsd",7507,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-documentPropertiesVariantTypes.xsd",{"path":211,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":212,"sourceHtmlUrl":213},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-math.xsd",23313,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-math.xsd",{"path":215,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":216,"sourceHtmlUrl":217},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-relationshipReference.xsd",1367,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-relationshipReference.xsd",{"path":219,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":220,"sourceHtmlUrl":221},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fsml.xsd",242277,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fsml.xsd",{"path":223,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":224,"sourceHtmlUrl":225},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-main.xsd",26148,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-main.xsd",{"path":227,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":228,"sourceHtmlUrl":229},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-officeDrawing.xsd",25279,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-officeDrawing.xsd",{"path":231,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":232,"sourceHtmlUrl":233},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-presentationDrawing.xsd",535,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-presentationDrawing.xsd",{"path":235,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":236,"sourceHtmlUrl":237},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-spreadsheetDrawing.xsd",5712,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-spreadsheetDrawing.xsd",{"path":239,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":240,"sourceHtmlUrl":241},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-wordprocessingDrawing.xsd",4010,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-wordprocessingDrawing.xsd",{"path":243,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":244,"sourceHtmlUrl":245},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fwml.xsd",171367,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fwml.xsd",{"path":247,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":248,"sourceHtmlUrl":249},"scripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fxml.xsd",4646,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fxml.xsd",{"path":251,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":252,"sourceHtmlUrl":253},"scripts\u002Foffice\u002Fschemas\u002Fmce\u002Fmc.xsd",3127,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002Fmce\u002Fmc.xsd",{"path":255,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":256,"sourceHtmlUrl":257},"scripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-2010.xsd",26549,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-2010.xsd",{"path":259,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":260,"sourceHtmlUrl":261},"scripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-2012.xsd",3745,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-2012.xsd",{"path":263,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":264,"sourceHtmlUrl":265},"scripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-2018.xsd",901,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-2018.xsd",{"path":267,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":268,"sourceHtmlUrl":269},"scripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-cex-2018.xsd",1778,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-cex-2018.xsd",{"path":271,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":272,"sourceHtmlUrl":273},"scripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-cid-2016.xsd",1002,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-cid-2016.xsd",{"path":275,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":276,"sourceHtmlUrl":277},"scripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-sdtdatahash-2020.xsd",600,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-sdtdatahash-2020.xsd",{"path":279,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":280,"sourceHtmlUrl":281},"scripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-symex-2015.xsd",745,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fschemas\u002Fmicrosoft\u002Fwml-symex-2015.xsd",{"path":283,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":284,"sourceHtmlUrl":285},"scripts\u002Foffice\u002Fsoffice.py",6772,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fsoffice.py",{"path":287,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":288,"sourceHtmlUrl":289},"scripts\u002Foffice\u002Funpack.py",4052,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Funpack.py",{"path":291,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":292,"sourceHtmlUrl":293},"scripts\u002Foffice\u002Fvalidate.py",3668,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fvalidate.py",{"path":295,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":296,"sourceHtmlUrl":297},"scripts\u002Foffice\u002Fvalidators\u002F__init__.py",336,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fvalidators\u002F__init__.py",{"path":299,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":300,"sourceHtmlUrl":301},"scripts\u002Foffice\u002Fvalidators\u002Fbase.py",32651,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fvalidators\u002Fbase.py",{"path":303,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":304,"sourceHtmlUrl":305},"scripts\u002Foffice\u002Fvalidators\u002Fdocx.py",16401,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fvalidators\u002Fdocx.py",{"path":307,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":308,"sourceHtmlUrl":309},"scripts\u002Foffice\u002Fvalidators\u002Fpptx.py",9824,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fvalidators\u002Fpptx.py",{"path":311,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":312,"sourceHtmlUrl":313},"scripts\u002Foffice\u002Fvalidators\u002Fredlining.py",8918,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Foffice\u002Fvalidators\u002Fredlining.py",{"path":315,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":316,"sourceHtmlUrl":317},"scripts\u002Ftemplates\u002Fcomments.xml",2603,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Ftemplates\u002Fcomments.xml",{"path":319,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":320,"sourceHtmlUrl":321},"scripts\u002Ftemplates\u002FcommentsExtended.xml",2611,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Ftemplates\u002FcommentsExtended.xml",{"path":323,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":324,"sourceHtmlUrl":325},"scripts\u002Ftemplates\u002FcommentsExtensible.xml",2707,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Ftemplates\u002FcommentsExtensible.xml",{"path":327,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":328,"sourceHtmlUrl":329},"scripts\u002Ftemplates\u002FcommentsIds.xml",2619,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Ftemplates\u002FcommentsIds.xml",{"path":331,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":332,"sourceHtmlUrl":333},"scripts\u002Ftemplates\u002Fpeople.xml",115,"https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fdocx\u002Fscripts\u002Ftemplates\u002Fpeople.xml",[335,347,375,400,427,446],{"skillNo":336,"name":337,"nameZh":6,"description":338,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":339,"licenseFileUrl":6,"sourceHtmlUrl":340,"categories":341,"keywords":343,"publishedAt":346},"01M6KW155AABG05Q3FR8CN3D9H","sample","Test fixture for SkillBundleMaterializer.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Ftest\u002Fresources\u002Ftest-bundles\u002Fsample\u002FSKILL.md",[342],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[337,344,38,345],"test","fixture","2026-11-10 10:12:30",{"skillNo":348,"name":349,"nameZh":6,"description":350,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":339,"licenseFileUrl":6,"sourceHtmlUrl":351,"categories":352,"keywords":356,"publishedAt":346},"01M6KW0P1T4EGBRN0HYZKJSHGB","xhs_note","小红书图文创作 \u002F 笔记 \u002F 种草文案 (xiaohongshu \u002F red note) — 端到端：成文→配图(≥3 张竖版)→去AI化→在线预览打包交付。以图为主、文字辅助：标题四件套 + 碎句正文 + 话题标签，配 3:4 竖版卡片，最少 3 张图。honors user persona & style memory.","https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fxhs_note\u002FSKILL.md",[353],{"categoryNo":354,"categoryName":355,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000036","内容创作者",[357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,62,373,52,53,374],"note","xhs note","xhs","创作","persona","memory","红书","user","red","图文","内容创作","style","小红书","笔记","xiaohongshu","去AI化","文案","文字",{"skillNo":376,"name":377,"nameZh":6,"description":378,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":339,"licenseFileUrl":6,"sourceHtmlUrl":379,"categories":380,"keywords":382,"publishedAt":346},"01M6KW0J69PPWSCVSR6JVJ0P1F","x_intel","Read X (Twitter) posts, search, timelines and user profiles via the official xurl CLI.","https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fx_intel\u002FSKILL.md",[381],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[383,384,385,386,387,388,389,390,391,392,62,35,393,394,395,396,397,398,399,53],"x intel","shell","xurl","execute","twitter","social-media","via","profiles","research","true","command","cli","social","search","official","Media","posts",{"skillNo":401,"name":402,"nameZh":6,"description":403,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":339,"licenseFileUrl":6,"sourceHtmlUrl":404,"categories":405,"keywords":414,"publishedAt":346},"01M6KW0DEPAYEF2JQ70PGN0Y8D","writing-plans","Write implementation plans: bite-sized tasks, paths, code.","https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fwriting-plans\u002FSKILL.md",[406,409,412,413],{"categoryNo":407,"categoryName":408,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":410,"categoryName":411,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":354,"categoryName":355,"taxonomyType":29,"taxonomyTypeDesc":30},[415,416,417,418,419,420,421,422,423,424,425,426],"plans","writing plans","writing","implementation","planning","paths","write","documentation","tasks","code","workflow","design",{"skillNo":428,"name":429,"nameZh":6,"description":430,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":339,"licenseFileUrl":6,"sourceHtmlUrl":431,"categories":432,"keywords":434,"publishedAt":346},"01M6KW08Q6EEN0ZSH5JRMAFH0B","webhook-subscriptions","Webhook subscriptions: event-driven agent runs.","https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Fwebhook-subscriptions\u002FSKILL.md",[433],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[435,436,437,438,439,440,441,442,443,444,445],"subscriptions","webhook subscriptions","webhook","event-driven","automation","event","integrations","push","events","notifications","driven",{"skillNo":447,"name":448,"nameZh":6,"description":449,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":339,"licenseFileUrl":6,"sourceHtmlUrl":450,"categories":451,"keywords":459,"publishedAt":346},"01M6KW04W8S4EMJHSNHY3HWAY3","test-driven-development","TDD: enforce RED-GREEN-REFACTOR, tests before code.","https:\u002F\u002Fgithub.com\u002Fmateaix\u002Fmateclaw\u002Fblob\u002Fdev\u002Fmateclaw-server\u002Fsrc\u002Fmain\u002Fresources\u002Fskills\u002Ftest-driven-development\u002FSKILL.md",[452,455,458],{"categoryNo":453,"categoryName":454,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":456,"categoryName":457,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[460,344,445,461,462,365,463,464,465,466,424,467,468,469],"development","test driven development","quality","tdd","tests","enforce","refactor","testing","red-green-refactor","green"]