From 8cb13fcf2c93c4009375e03ea03ba40a31debbdd Mon Sep 17 00:00:00 2001 From: kikimor Date: Tue, 24 Feb 2026 00:13:56 +0200 Subject: [PATCH] expose on kikimor.com --- .claude/agents/docx-document-filler.md | 116 + .claude/settings.local.json | 4 +- .claude/skills/docx/LICENSE.txt | 30 + .claude/skills/docx/SKILL.md | 481 ++ .claude/skills/docx/scripts/accept_changes.py | 135 + .claude/skills/docx/scripts/comment.py | 318 ++ .../docx/scripts/office/helpers/merge_runs.py | 199 + .../office/helpers/simplify_redlines.py | 197 + .claude/skills/docx/scripts/office/pack.py | 159 + .../schemas/ISO-IEC29500-4_2016/dml-chart.xsd | 1499 ++++++ .../ISO-IEC29500-4_2016/dml-chartDrawing.xsd | 146 + .../ISO-IEC29500-4_2016/dml-diagram.xsd | 1085 ++++ .../ISO-IEC29500-4_2016/dml-lockedCanvas.xsd | 11 + .../schemas/ISO-IEC29500-4_2016/dml-main.xsd | 3081 ++++++++++++ .../ISO-IEC29500-4_2016/dml-picture.xsd | 23 + .../dml-spreadsheetDrawing.xsd | 185 + .../dml-wordprocessingDrawing.xsd | 287 ++ .../schemas/ISO-IEC29500-4_2016/pml.xsd | 1676 +++++++ .../shared-additionalCharacteristics.xsd | 28 + .../shared-bibliography.xsd | 144 + .../shared-commonSimpleTypes.xsd | 174 + .../shared-customXmlDataProperties.xsd | 25 + .../shared-customXmlSchemaProperties.xsd | 18 + .../shared-documentPropertiesCustom.xsd | 59 + .../shared-documentPropertiesExtended.xsd | 56 + .../shared-documentPropertiesVariantTypes.xsd | 195 + .../ISO-IEC29500-4_2016/shared-math.xsd | 582 +++ .../shared-relationshipReference.xsd | 25 + .../schemas/ISO-IEC29500-4_2016/sml.xsd | 4439 +++++++++++++++++ .../schemas/ISO-IEC29500-4_2016/vml-main.xsd | 570 +++ .../ISO-IEC29500-4_2016/vml-officeDrawing.xsd | 509 ++ .../vml-presentationDrawing.xsd | 12 + .../vml-spreadsheetDrawing.xsd | 108 + .../vml-wordprocessingDrawing.xsd | 96 + .../schemas/ISO-IEC29500-4_2016/wml.xsd | 3646 ++++++++++++++ .../schemas/ISO-IEC29500-4_2016/xml.xsd | 116 + .../ecma/fouth-edition/opc-contentTypes.xsd | 42 + .../ecma/fouth-edition/opc-coreProperties.xsd | 50 + .../schemas/ecma/fouth-edition/opc-digSig.xsd | 49 + .../ecma/fouth-edition/opc-relationships.xsd | 33 + .../docx/scripts/office/schemas/mce/mc.xsd | 75 + .../office/schemas/microsoft/wml-2010.xsd | 560 +++ .../office/schemas/microsoft/wml-2012.xsd | 67 + .../office/schemas/microsoft/wml-2018.xsd | 14 + .../office/schemas/microsoft/wml-cex-2018.xsd | 20 + .../office/schemas/microsoft/wml-cid-2016.xsd | 13 + .../microsoft/wml-sdtdatahash-2020.xsd | 4 + .../schemas/microsoft/wml-symex-2015.xsd | 8 + .claude/skills/docx/scripts/office/soffice.py | 183 + .claude/skills/docx/scripts/office/unpack.py | 132 + .../skills/docx/scripts/office/validate.py | 111 + .../docx/scripts/office/validators/base.py | 847 ++++ .../docx/scripts/office/validators/docx.py | 446 ++ .../docx/scripts/office/validators/pptx.py | 275 + .../scripts/office/validators/redlining.py | 247 + .../docx/scripts/templates/comments.xml | 3 + .../scripts/templates/commentsExtended.xml | 3 + .../scripts/templates/commentsExtensible.xml | 3 + .../docx/scripts/templates/commentsIds.xml | 3 + .../skills/docx/scripts/templates/people.xml | 3 + Project-Assignment.docx | Bin 158082 -> 158487 bytes Project-Assignment.filled.docx | Bin 0 -> 269279 bytes skills-lock.json | 10 + ~$oject-Assignment.filled.docx | Bin 0 -> 162 bytes ~WRL0003.tmp | Bin 0 -> 158082 bytes 65 files changed, 23634 insertions(+), 1 deletion(-) create mode 100644 .claude/agents/docx-document-filler.md create mode 100644 .claude/skills/docx/LICENSE.txt create mode 100644 .claude/skills/docx/SKILL.md create mode 100644 .claude/skills/docx/scripts/accept_changes.py create mode 100644 .claude/skills/docx/scripts/comment.py create mode 100644 .claude/skills/docx/scripts/office/helpers/merge_runs.py create mode 100644 .claude/skills/docx/scripts/office/helpers/simplify_redlines.py create mode 100644 .claude/skills/docx/scripts/office/pack.py create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/mce/mc.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd create mode 100644 .claude/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd create mode 100644 .claude/skills/docx/scripts/office/soffice.py create mode 100644 .claude/skills/docx/scripts/office/unpack.py create mode 100644 .claude/skills/docx/scripts/office/validate.py create mode 100644 .claude/skills/docx/scripts/office/validators/base.py create mode 100644 .claude/skills/docx/scripts/office/validators/docx.py create mode 100644 .claude/skills/docx/scripts/office/validators/pptx.py create mode 100644 .claude/skills/docx/scripts/office/validators/redlining.py create mode 100644 .claude/skills/docx/scripts/templates/comments.xml create mode 100644 .claude/skills/docx/scripts/templates/commentsExtended.xml create mode 100644 .claude/skills/docx/scripts/templates/commentsExtensible.xml create mode 100644 .claude/skills/docx/scripts/templates/commentsIds.xml create mode 100644 .claude/skills/docx/scripts/templates/people.xml create mode 100644 Project-Assignment.filled.docx create mode 100644 skills-lock.json create mode 100644 ~$oject-Assignment.filled.docx create mode 100644 ~WRL0003.tmp diff --git a/.claude/agents/docx-document-filler.md b/.claude/agents/docx-document-filler.md new file mode 100644 index 0000000..4124894 --- /dev/null +++ b/.claude/agents/docx-document-filler.md @@ -0,0 +1,116 @@ +--- +name: docx-document-filler +description: "Use this agent when you need to fill, generate, or populate Word documents (.docx) with data from the ScalesApp system — such as weighing reports, vehicle records, or operational summaries. This agent understands the project's data models, nomenclature system, and report structures.\\n\\n\\nContext: The user wants to generate a weighing report document for a specific vehicle entry.\\nuser: \"Generate a Word document report for vehicle #1042 with its tare, gross, and cargo data\"\\nassistant: \"I'll use the docx-document-filler agent to handle this.\"\\n\\nThe user wants a .docx file populated with vehicle weighing data. Use the Task tool to launch the docx-document-filler agent.\\n\\n\\n\\n\\nContext: The user wants to fill a template document with multiple vehicle records.\\nuser: \"Fill out the daily weighing log template with today's vehicle entries\"\\nassistant: \"Let me launch the docx-document-filler agent to read the template and populate it with today's data.\"\\n\\nThis requires reading a .docx template and writing structured data into it. Use the Task tool to launch the docx-document-filler agent.\\n\\n\\n\\n\\nContext: The user wants to export nomenclature-enriched vehicle data to a document.\\nuser: \"Create a Word document summary of all vehicles weighed this week, including their cargo types\"\\nassistant: \"I'll use the docx-document-filler agent to generate this document.\"\\n\\nThis involves fetching data from the ScalesApp backend (vehicles + VehicleExtra nomenclature fields) and writing it into a .docx. Use the Task tool to launch the docx-document-filler agent.\\n\\n" +model: inherit +color: cyan +memory: project +--- + +You are an expert document automation specialist with deep knowledge of the ScalesApp system — a three-tier weighing scale management platform. You specialize in reading, generating, and populating Microsoft Word (.docx) documents with data from this system. + +## Your Core Competencies + +**ScalesApp Domain Knowledge:** +- You understand the full system architecture: Django backend (port 8000), React frontend (port 3000), and Serial Bridge (port 5000) +- You know the key data models: `Vehicle` (vehicle_number, tare, gross, timestamps, user tracking), `VehicleExtra` (JSONField with dynamic nomenclature data), `Nomenclature` / `NomenclatureField` / `NomenclatureEntry` (dynamic schema system), `Report` (JSONField storing element definitions) +- You understand the report element hierarchy: TextElement, DBTextElement, FrameElement, HorizontalLineElement, VerticalLineElement, SymbolElement, BandElement +- You know the band types: header, footer, detail, subdetail, summary +- You understand the 80×66 character grid system used in the report editor +- You are familiar with the JWT auth flow, user roles (employee/viewer/is_admin), and API endpoint patterns + +**Document Skills (python-docx):** +- Read existing .docx templates and extract structure, tables, placeholders, and content +- Write and populate .docx documents with dynamic data +- Create tables, apply styles, insert text runs, manage paragraphs +- Handle merge fields and placeholder replacement patterns (e.g., `{{field_name}}`) +- Preserve document formatting when filling templates + +## Workflow + +Before creating or filling any document: +1. **Clarify the target**: Identify what document template to use (or create from scratch) and what data source to pull from (API endpoint, provided data, or file) +2. **Identify placeholders**: Scan the template for placeholders or define the structure needed +3. **Map data to fields**: Match ScalesApp data fields to document placeholders — respect the nomenclature system's dynamic fields stored in `vehicle.extra.data` +4. **Execute with precision**: Use python-docx to read/write, replacing only what's needed +5. **Verify output**: Confirm all placeholders were filled, no data is missing, and formatting is intact + +## Data Mapping Reference + +When working with vehicle data, the key fields are: +- `vehicle_number` — vehicle identifier +- `tare` — tare weight (set by employee with timestamp + user) +- `gross` — gross weight (set by employee with timestamp + user) +- `net` — calculated as gross - tare +- `extra.data` — JSONField containing nomenclature values (e.g., `{"CARGO_TYPE": 3}` where 3 is a NomenclatureEntry ID) + +When resolving nomenclature values, look up `NomenclatureEntry` by ID to get human-readable labels. + +## Coding Standards + +Follow the project's established patterns: +- **Simplicity first**: Write the minimum code that solves the problem. No speculative features. +- **Surgical changes**: Only touch what is needed for the document task. +- **Explicit assumptions**: If a template structure or data format is ambiguous, state your assumption before proceeding. +- **No over-engineering**: Avoid creating abstractions for one-off document tasks. + +## Output Format + +When generating code to fill a document: +1. Show a brief plan: template → data source → output file +2. Write clean, minimal python-docx code +3. Include only necessary imports +4. Save output to a sensible filename (e.g., `vehicle_report_1042.docx`, `daily_log_2026-02-23.docx`) + +When filling a document interactively: +- Confirm the filled fields and their values +- Note any placeholders that could not be resolved and why +- Report the output file path + +## Edge Cases + +- If a nomenclature entry ID cannot be resolved, use the raw ID with a note rather than failing +- If tare or gross is null (not yet set), represent as empty string or "—" in the document +- If a template placeholder has no matching data, leave it blank and report it — do not invent data +- If asked to create a document from scratch (no template), propose a minimal structure first and confirm before generating + +**Update your agent memory** as you discover document templates, placeholder conventions, recurring report structures, and data mapping patterns used in this project. This builds institutional knowledge for faster future document generation. + +Examples of what to record: +- Template file locations and their placeholder formats +- Common field mappings between ScalesApp models and document fields +- Naming conventions for output files +- Any custom styles or formatting requirements discovered + +# Persistent Agent Memory + +You have a persistent Persistent Agent Memory directory at `C:\dev_projects\ScalesApp\.claude\agent-memory\docx-document-filler\`. Its contents persist across conversations. + +As you work, consult your memory files to build on previous experience. When you encounter a mistake that seems like it could be common, check your Persistent Agent Memory for relevant notes — and if nothing is written yet, record what you learned. + +Guidelines: +- `MEMORY.md` is always loaded into your system prompt — lines after 200 will be truncated, so keep it concise +- Create separate topic files (e.g., `debugging.md`, `patterns.md`) for detailed notes and link to them from MEMORY.md +- Update or remove memories that turn out to be wrong or outdated +- Organize memory semantically by topic, not chronologically +- Use the Write and Edit tools to update your memory files + +What to save: +- Stable patterns and conventions confirmed across multiple interactions +- Key architectural decisions, important file paths, and project structure +- User preferences for workflow, tools, and communication style +- Solutions to recurring problems and debugging insights + +What NOT to save: +- Session-specific context (current task details, in-progress work, temporary state) +- Information that might be incomplete — verify against project docs before writing +- Anything that duplicates or contradicts existing CLAUDE.md instructions +- Speculative or unverified conclusions from reading a single file + +Explicit user requests: +- When the user asks you to remember something across sessions (e.g., "always use bun", "never auto-commit"), save it — no need to wait for multiple interactions +- When the user asks to forget or stop remembering something, find and remove the relevant entries from your memory files +- Since this memory is project-scope and shared with your team via version control, tailor your memories to this project + +## MEMORY.md + +Your MEMORY.md is currently empty. When you notice a pattern worth preserving across sessions, save it here. Anything in MEMORY.md will be included in your system prompt next time. diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 82673f9..2b6cec6 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -12,7 +12,9 @@ "Bash(cat:*)", "Bash(netstat:*)", "Bash(taskkill:*)", - "Bash(DJANGO_SETTINGS_MODULE=scalesapp.settings python:*)" + "Bash(DJANGO_SETTINGS_MODULE=scalesapp.settings python:*)", + "Bash(cd:*)", + "Bash(python - << 'PYEOF'\nfrom pathlib import Path\n\npath = Path\\(\"C:/dev_projects/ScalesApp/Project-Assignment-unpacked/word/document.xml\"\\)\ntext = path.read_text\\(encoding=\"utf-8\"\\)\n\n# Unique start and end markers\nSTART = ' \n Module 1: Serial Bridge \\(Flask + pyserial\\)\n \n \n Approach & reasoning: \n The scale outputs weight data as ASCII strings over RS-232. A dedicated Flask process was chosen instead of integrating with Django so the COM connection stays alive independently of backend restarts. SSE was selected as the transport because the browser’s native EventSource API handles reconnection automatically without extra client code.\n \n \n Step-by-step workflow: \n Asked Claude Code to generate the SerialPortReader threading class and background queue, then the Flask /events SSE endpoint, then the Windows system-tray icon via pystray, and finally the PyInstaller spec for a single-file executable.\n \n \n Testing strategy: \n Used com0com to create a virtual COM port pair and a test_writer.py script that emits simulated weight readings at a configurable interval, enabling end-to-end testing without physical hardware.\n \n \n AI tool choice: \n Claude Code — it maintained context across all four source files simultaneously and produced the threading/queue pattern correctly in one pass.\n \n \n Key prompts: \n “Create a SerialPortReader class that reads lines from a COM port in a background thread and pushes them to a thread-safe queue”; “Write a Flask SSE endpoint that drains the queue and sends keep-alive heartbeat comments”; “Generate a PyInstaller spec that bundles app.py with the .env file into a single Windows executable with a hidden console window”.\n \n \n Module 2: Django REST API Backend\n \n \n Approach & reasoning: \n Standard DRF ModelViewSet pattern for all resources, with custom @action decorators for domain operations \\(set_tare, set_gross\\). An ASGI server \\(uvicorn\\) was required once the async SSE broadcast endpoint was introduced.\n \n \n Step-by-step workflow: \n Scaffolded three Django apps \\(api, vehicles, nomenclatures\\), then for each app generated models → serializers → viewsets → URL registration. Added sse_broadcast_update calls to every mutation, then migrated from WSGI runserver to uvicorn/ASGI.\n \n \n Testing strategy: \n Django’s built-in test client for CRUD endpoints; Postman for manual JWT token-flow and weight-setting action tests.\n \n \n AI tool choice: \n Claude Code — handles Django’s repetitive boilerplate and tracks the relationships between models, serializers, viewsets, and URL patterns across multiple files without losing consistency.\n \n \n Key prompts: \n “Create a Vehicle ModelViewSet with set_tare and set_gross @action endpoints that record the current user and timestamp, then call sse_broadcast_update”; “Write an async ASGI SSE handler that authenticates via a JWT query parameter and replays up to 100 missed events using the Last-Event-ID header”.\n \n \n Module 3: React SPA Frontend\n \n \n Approach & reasoning: \n State is split into focused Contexts: AuthContext owns the JWT lifecycle, NomenclatureContext owns all server data and the live SSE subscription. Components receive only what they need through context hooks, keeping the main view component \\(Main.jsx\\) free of data-fetching logic.\n \n \n Step-by-step workflow: \n Built AuthContext with axios interceptors and the refresh-queue pattern first; then NomenclatureContext with SSE subscription and live state updates; then Main.jsx with the split-panel layout \\(vehicle list left, live weight top, detail panel right\\).\n \n \n Testing strategy: \n Manual browser testing. SSE reconnection was validated by restarting the uvicorn server mid-session and confirming the UI recovered without a page reload.\n \n \n AI tool choice: \n Claude Code — generated complete, functional JSX components and custom hooks in a single pass while keeping multi-file context coherent \\(e.g., knowing which context a new component should consume\\).\n \n \n Key prompts: \n “Write a React Context that opens an EventSource, handles insert and update events, and maintains a sorted vehicle array in state”; “Create an axios interceptor that catches 401 responses, queues concurrent requests, refreshes the token once, then replays all queued requests with the new token”.\n \n \n Module 4: Nomenclature / Dynamic Field System\n \n \n Approach & reasoning: \n Field schemas are stored in three related models \\(Nomenclature, NomenclatureField, NomenclatureEntry\\) and values are saved as a JSON blob on VehicleExtra. Validation is enforced in the serializer rather than by DB constraints, so the schema can be modified at runtime without any migration.\n \n \n Step-by-step workflow: \n Designed the three models together with Claude Code, then wrote the VehicleExtraSerializer validate method with the dynamic type-checking loop, then implemented the frontend rendering logic that maps each NomenclatureField type to the appropriate React input component.\n \n \n Testing strategy: \n Created test nomenclatures in Django admin \\(cargo type as a lookup dropdown, driver name as free text, axle count as a number\\) and confirmed the frontend rendered the correct controls and rejected out-of-range values.\n \n \n AI tool choice: \n Claude Code — generated the serializer validation loop that iterates over active NomenclatureFields and applies type-specific checks on the submitted JSON, which would have been tedious to write by hand.\n \n \n Key prompts: \n “Write a DRF serializer validate method that reads active NomenclatureField definitions and enforces text/number/bool/choice type constraints on a JSONField”; “Render a list of nomenclature field definitions in React, switching the input component based on the kind and field_type values”.\n \n \n Module 5: Authentication & Authorisation Layer\n \n \n Approach & reasoning: \n djangorestframework-simplejwt issues short-lived access tokens \\(15 min\\) and long-lived refresh tokens \\(7 days\\). Role-based access is enforced via DRF permission classes on each viewset so viewers cannot trigger any write operations.\n \n \n Step-by-step workflow: \n Configured simplejwt settings and a custom TokenObtainPairSerializer that embeds role and is_admin into the payload. Wrote AuthContext with a 14-minute refresh interval and a promise queue that pauses concurrent requests during a refresh cycle. Added permission classes to viewsets.\n \n \n Testing strategy: \n Temporarily reduced the access token lifetime to 30 seconds in development settings and confirmed the frontend refreshed silently and continued working without any user-visible interruption.\n \n \n AI tool choice: \n Claude Code — produced the promise-queue interceptor pattern \\(non-trivial async code that must handle race conditions correctly\\) and the custom simplejwt serializer in a single interaction.\n \n \n Key prompts: \n “Write an axios interceptor that catches 401 errors, queues all concurrent requests, refreshes the token once, then replays every queued request with the new access token”; “Add a custom TokenObtainPairSerializer that includes the user’s role and is_admin fields in the JWT payload”.\n \n \n Module 6: Report Builder\n \n \n Approach & reasoning: \n A character-grid coordinate system \\(80×66 cells\\) was chosen to avoid pixel-rounding issues and map naturally to fixed-width print output. Element types are modelled as a JS class hierarchy with a shared base class and serialised to plain JSON for storage in the Django Report model.\n \n \n Step-by-step workflow: \n Built the Element class hierarchy \\(TextElement, DBTextElement, FrameElement, BandElement, etc.\\) first, then EditorCanvas with drag-drop and resize-handle logic, then ObjectInspector for property editing. Band elements \\(header/detail/footer/summary\\) and BandContext for preview iteration were added last.\n \n \n Testing strategy: \n Visual testing — designed a sample vehicle weighing report, saved it to Django, reloaded the editor, and verified the layout was restored identically. Preview mode was tested against the live vehicles API endpoint to confirm data-bound fields rendered correct values.\n \n \n AI tool choice: \n Claude Code — provided the coordinate math for grid-snapping and multi-element drag, and generated the BandContext provider/consumer pattern correctly in one pass.\n \n \n Key prompts: \n “Calculate the snapped grid position from a mouse drag event on a character-grid canvas, accounting for scroll offset and the element’s grab origin”; “Write a React Context that iterates over an array of data rows and exposes the current row to child DBTextElements during print preview”; “Add multi-select with a rubber-band selection rectangle and group drag on the editor canvas”.\n \n'''\n\nnew_text = text[:start_idx] + REPLACEMENT + text[end_idx:]\npath.write_text\\(new_text, encoding=\"utf-8\"\\)\nprint\\(\"Done. Replaced\", len\\(text\\), \"->\", len\\(new_text\\), \"chars\"\\)\nPYEOF)" ] } } diff --git a/.claude/skills/docx/LICENSE.txt b/.claude/skills/docx/LICENSE.txt new file mode 100644 index 0000000..c55ab42 --- /dev/null +++ b/.claude/skills/docx/LICENSE.txt @@ -0,0 +1,30 @@ +© 2025 Anthropic, PBC. All rights reserved. + +LICENSE: Use of these materials (including all code, prompts, assets, files, +and other components of this Skill) is governed by your agreement with +Anthropic regarding use of Anthropic's services. If no separate agreement +exists, use is governed by Anthropic's Consumer Terms of Service or +Commercial Terms of Service, as applicable: +https://www.anthropic.com/legal/consumer-terms +https://www.anthropic.com/legal/commercial-terms +Your applicable agreement is referred to as the "Agreement." "Services" are +as defined in the Agreement. + +ADDITIONAL RESTRICTIONS: Notwithstanding anything in the Agreement to the +contrary, users may not: + +- Extract these materials from the Services or retain copies of these + materials outside the Services +- Reproduce or copy these materials, except for temporary copies created + automatically during authorized use of the Services +- Create derivative works based on these materials +- Distribute, sublicense, or transfer these materials to any third party +- Make, offer to sell, sell, or import any inventions embodied in these + materials +- Reverse engineer, decompile, or disassemble these materials + +The receipt, viewing, or possession of these materials does not convey or +imply any license or right beyond those expressly granted above. + +Anthropic retains all right, title, and interest in these materials, +including all copyrights, patents, and other intellectual property rights. diff --git a/.claude/skills/docx/SKILL.md b/.claude/skills/docx/SKILL.md new file mode 100644 index 0000000..ad2e175 --- /dev/null +++ b/.claude/skills/docx/SKILL.md @@ -0,0 +1,481 @@ +--- +name: docx +description: "Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of \"Word doc\", \"word document\", \".docx\", or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a \"report\", \"memo\", \"letter\", \"template\", or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation." +license: Proprietary. LICENSE.txt has complete terms +--- + +# DOCX creation, editing, and analysis + +## Overview + +A .docx file is a ZIP archive containing XML files. + +## Quick Reference + +| Task | Approach | +|------|----------| +| Read/analyze content | `pandoc` or unpack for raw XML | +| Create new document | Use `docx-js` - see Creating New Documents below | +| Edit existing document | Unpack → edit XML → repack - see Editing Existing Documents below | + +### Converting .doc to .docx + +Legacy `.doc` files must be converted before editing: + +```bash +python scripts/office/soffice.py --headless --convert-to docx document.doc +``` + +### Reading Content + +```bash +# Text extraction with tracked changes +pandoc --track-changes=all document.docx -o output.md + +# Raw XML access +python scripts/office/unpack.py document.docx unpacked/ +``` + +### Converting to Images + +```bash +python scripts/office/soffice.py --headless --convert-to pdf document.docx +pdftoppm -jpeg -r 150 document.pdf page +``` + +### Accepting Tracked Changes + +To produce a clean document with all tracked changes accepted (requires LibreOffice): + +```bash +python scripts/accept_changes.py input.docx output.docx +``` + +--- + +## Creating New Documents + +Generate .docx files with JavaScript, then validate. Install: `npm install -g docx` + +### Setup +```javascript +const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, ImageRun, + Header, Footer, AlignmentType, PageOrientation, LevelFormat, ExternalHyperlink, + TableOfContents, HeadingLevel, BorderStyle, WidthType, ShadingType, + VerticalAlign, PageNumber, PageBreak } = require('docx'); + +const doc = new Document({ sections: [{ children: [/* content */] }] }); +Packer.toBuffer(doc).then(buffer => fs.writeFileSync("doc.docx", buffer)); +``` + +### Validation +After creating the file, validate it. If validation fails, unpack, fix the XML, and repack. +```bash +python scripts/office/validate.py doc.docx +``` + +### Page Size + +```javascript +// CRITICAL: docx-js defaults to A4, not US Letter +// Always set page size explicitly for consistent results +sections: [{ + properties: { + page: { + size: { + width: 12240, // 8.5 inches in DXA + height: 15840 // 11 inches in DXA + }, + margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } // 1 inch margins + } + }, + children: [/* content */] +}] +``` + +**Common page sizes (DXA units, 1440 DXA = 1 inch):** + +| Paper | Width | Height | Content Width (1" margins) | +|-------|-------|--------|---------------------------| +| US Letter | 12,240 | 15,840 | 9,360 | +| A4 (default) | 11,906 | 16,838 | 9,026 | + +**Landscape orientation:** docx-js swaps width/height internally, so pass portrait dimensions and let it handle the swap: +```javascript +size: { + width: 12240, // Pass SHORT edge as width + height: 15840, // Pass LONG edge as height + orientation: PageOrientation.LANDSCAPE // docx-js swaps them in the XML +}, +// Content width = 15840 - left margin - right margin (uses the long edge) +``` + +### Styles (Override Built-in Headings) + +Use Arial as the default font (universally supported). Keep titles black for readability. + +```javascript +const doc = new Document({ + styles: { + default: { document: { run: { font: "Arial", size: 24 } } }, // 12pt default + paragraphStyles: [ + // IMPORTANT: Use exact IDs to override built-in styles + { id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true, + run: { size: 32, bold: true, font: "Arial" }, + paragraph: { spacing: { before: 240, after: 240 }, outlineLevel: 0 } }, // outlineLevel required for TOC + { id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true, + run: { size: 28, bold: true, font: "Arial" }, + paragraph: { spacing: { before: 180, after: 180 }, outlineLevel: 1 } }, + ] + }, + sections: [{ + children: [ + new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("Title")] }), + ] + }] +}); +``` + +### Lists (NEVER use unicode bullets) + +```javascript +// ❌ WRONG - never manually insert bullet characters +new Paragraph({ children: [new TextRun("• Item")] }) // BAD +new Paragraph({ children: [new TextRun("\u2022 Item")] }) // BAD + +// ✅ CORRECT - use numbering config with LevelFormat.BULLET +const doc = new Document({ + numbering: { + config: [ + { reference: "bullets", + levels: [{ level: 0, format: LevelFormat.BULLET, text: "•", alignment: AlignmentType.LEFT, + style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] }, + { reference: "numbers", + levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT, + style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] }, + ] + }, + sections: [{ + children: [ + new Paragraph({ numbering: { reference: "bullets", level: 0 }, + children: [new TextRun("Bullet item")] }), + new Paragraph({ numbering: { reference: "numbers", level: 0 }, + children: [new TextRun("Numbered item")] }), + ] + }] +}); + +// ⚠️ Each reference creates INDEPENDENT numbering +// Same reference = continues (1,2,3 then 4,5,6) +// Different reference = restarts (1,2,3 then 1,2,3) +``` + +### Tables + +**CRITICAL: Tables need dual widths** - set both `columnWidths` on the table AND `width` on each cell. Without both, tables render incorrectly on some platforms. + +```javascript +// CRITICAL: Always set table width for consistent rendering +// CRITICAL: Use ShadingType.CLEAR (not SOLID) to prevent black backgrounds +const border = { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" }; +const borders = { top: border, bottom: border, left: border, right: border }; + +new Table({ + width: { size: 9360, type: WidthType.DXA }, // Always use DXA (percentages break in Google Docs) + columnWidths: [4680, 4680], // Must sum to table width (DXA: 1440 = 1 inch) + rows: [ + new TableRow({ + children: [ + new TableCell({ + borders, + width: { size: 4680, type: WidthType.DXA }, // Also set on each cell + shading: { fill: "D5E8F0", type: ShadingType.CLEAR }, // CLEAR not SOLID + margins: { top: 80, bottom: 80, left: 120, right: 120 }, // Cell padding (internal, not added to width) + children: [new Paragraph({ children: [new TextRun("Cell")] })] + }) + ] + }) + ] +}) +``` + +**Table width calculation:** + +Always use `WidthType.DXA` — `WidthType.PERCENTAGE` breaks in Google Docs. + +```javascript +// Table width = sum of columnWidths = content width +// US Letter with 1" margins: 12240 - 2880 = 9360 DXA +width: { size: 9360, type: WidthType.DXA }, +columnWidths: [7000, 2360] // Must sum to table width +``` + +**Width rules:** +- **Always use `WidthType.DXA`** — never `WidthType.PERCENTAGE` (incompatible with Google Docs) +- Table width must equal the sum of `columnWidths` +- Cell `width` must match corresponding `columnWidth` +- Cell `margins` are internal padding - they reduce content area, not add to cell width +- For full-width tables: use content width (page width minus left and right margins) + +### Images + +```javascript +// CRITICAL: type parameter is REQUIRED +new Paragraph({ + children: [new ImageRun({ + type: "png", // Required: png, jpg, jpeg, gif, bmp, svg + data: fs.readFileSync("image.png"), + transformation: { width: 200, height: 150 }, + altText: { title: "Title", description: "Desc", name: "Name" } // All three required + })] +}) +``` + +### Page Breaks + +```javascript +// CRITICAL: PageBreak must be inside a Paragraph +new Paragraph({ children: [new PageBreak()] }) + +// Or use pageBreakBefore +new Paragraph({ pageBreakBefore: true, children: [new TextRun("New page")] }) +``` + +### Table of Contents + +```javascript +// CRITICAL: Headings must use HeadingLevel ONLY - no custom styles +new TableOfContents("Table of Contents", { hyperlink: true, headingStyleRange: "1-3" }) +``` + +### Headers/Footers + +```javascript +sections: [{ + properties: { + page: { margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } } // 1440 = 1 inch + }, + headers: { + default: new Header({ children: [new Paragraph({ children: [new TextRun("Header")] })] }) + }, + footers: { + default: new Footer({ children: [new Paragraph({ + children: [new TextRun("Page "), new TextRun({ children: [PageNumber.CURRENT] })] + })] }) + }, + children: [/* content */] +}] +``` + +### Critical Rules for docx-js + +- **Set page size explicitly** - docx-js defaults to A4; use US Letter (12240 x 15840 DXA) for US documents +- **Landscape: pass portrait dimensions** - docx-js swaps width/height internally; pass short edge as `width`, long edge as `height`, and set `orientation: PageOrientation.LANDSCAPE` +- **Never use `\n`** - use separate Paragraph elements +- **Never use unicode bullets** - use `LevelFormat.BULLET` with numbering config +- **PageBreak must be in Paragraph** - standalone creates invalid XML +- **ImageRun requires `type`** - always specify png/jpg/etc +- **Always set table `width` with DXA** - never use `WidthType.PERCENTAGE` (breaks in Google Docs) +- **Tables need dual widths** - `columnWidths` array AND cell `width`, both must match +- **Table width = sum of columnWidths** - for DXA, ensure they add up exactly +- **Always add cell margins** - use `margins: { top: 80, bottom: 80, left: 120, right: 120 }` for readable padding +- **Use `ShadingType.CLEAR`** - never SOLID for table shading +- **TOC requires HeadingLevel only** - no custom styles on heading paragraphs +- **Override built-in styles** - use exact IDs: "Heading1", "Heading2", etc. +- **Include `outlineLevel`** - required for TOC (0 for H1, 1 for H2, etc.) + +--- + +## Editing Existing Documents + +**Follow all 3 steps in order.** + +### Step 1: Unpack +```bash +python scripts/office/unpack.py document.docx unpacked/ +``` +Extracts XML, pretty-prints, merges adjacent runs, and converts smart quotes to XML entities (`“` etc.) so they survive editing. Use `--merge-runs false` to skip run merging. + +### Step 2: Edit XML + +Edit files in `unpacked/word/`. See XML Reference below for patterns. + +**Use "Claude" as the author** for tracked changes and comments, unless the user explicitly requests use of a different name. + +**Use the Edit tool directly for string replacement. Do not write Python scripts.** Scripts introduce unnecessary complexity. The Edit tool shows exactly what is being replaced. + +**CRITICAL: Use smart quotes for new content.** When adding text with apostrophes or quotes, use XML entities to produce smart quotes: +```xml + +Here’s a quote: “Hello” +``` +| Entity | Character | +|--------|-----------| +| `‘` | ‘ (left single) | +| `’` | ’ (right single / apostrophe) | +| `“` | “ (left double) | +| `”` | ” (right double) | + +**Adding comments:** Use `comment.py` to handle boilerplate across multiple XML files (text must be pre-escaped XML): +```bash +python scripts/comment.py unpacked/ 0 "Comment text with & and ’" +python scripts/comment.py unpacked/ 1 "Reply text" --parent 0 # reply to comment 0 +python scripts/comment.py unpacked/ 0 "Text" --author "Custom Author" # custom author name +``` +Then add markers to document.xml (see Comments in XML Reference). + +### Step 3: Pack +```bash +python scripts/office/pack.py unpacked/ output.docx --original document.docx +``` +Validates with auto-repair, condenses XML, and creates DOCX. Use `--validate false` to skip. + +**Auto-repair will fix:** +- `durableId` >= 0x7FFFFFFF (regenerates valid ID) +- Missing `xml:space="preserve"` on `` with whitespace + +**Auto-repair won't fix:** +- Malformed XML, invalid element nesting, missing relationships, schema violations + +### Common Pitfalls + +- **Replace entire `` elements**: When adding tracked changes, replace the whole `...` block with `......` as siblings. Don't inject tracked change tags inside a run. +- **Preserve `` formatting**: Copy the original run's `` block into your tracked change runs to maintain bold, font size, etc. + +--- + +## XML Reference + +### Schema Compliance + +- **Element order in ``**: ``, ``, ``, ``, ``, `` last +- **Whitespace**: Add `xml:space="preserve"` to `` with leading/trailing spaces +- **RSIDs**: Must be 8-digit hex (e.g., `00AB1234`) + +### Tracked Changes + +**Insertion:** +```xml + + inserted text + +``` + +**Deletion:** +```xml + + deleted text + +``` + +**Inside ``**: Use `` instead of ``, and `` instead of ``. + +**Minimal edits** - only mark what changes: +```xml + +The term is + + 30 + + + 60 + + days. +``` + +**Deleting entire paragraphs/list items** - when removing ALL content from a paragraph, also mark the paragraph mark as deleted so it merges with the next paragraph. Add `` inside ``: +```xml + + + ... + + + + + + Entire paragraph content being deleted... + + +``` +Without the `` in ``, accepting changes leaves an empty paragraph/list item. + +**Rejecting another author's insertion** - nest deletion inside their insertion: +```xml + + + their inserted text + + +``` + +**Restoring another author's deletion** - add insertion after (don't modify their deletion): +```xml + + deleted text + + + deleted text + +``` + +### Comments + +After running `comment.py` (see Step 2), add markers to document.xml. For replies, use `--parent` flag and nest markers inside the parent's. + +**CRITICAL: `` and `` are siblings of ``, never inside ``.** + +```xml + + + + deleted + + more text + + + + + + + text + + + + +``` + +### Images + +1. Add image file to `word/media/` +2. Add relationship to `word/_rels/document.xml.rels`: +```xml + +``` +3. Add content type to `[Content_Types].xml`: +```xml + +``` +4. Reference in document.xml: +```xml + + + + + + + + + + + + +``` + +--- + +## Dependencies + +- **pandoc**: Text extraction +- **docx**: `npm install -g docx` (new documents) +- **LibreOffice**: PDF conversion (auto-configured for sandboxed environments via `scripts/office/soffice.py`) +- **Poppler**: `pdftoppm` for images diff --git a/.claude/skills/docx/scripts/accept_changes.py b/.claude/skills/docx/scripts/accept_changes.py new file mode 100644 index 0000000..8e36316 --- /dev/null +++ b/.claude/skills/docx/scripts/accept_changes.py @@ -0,0 +1,135 @@ +"""Accept all tracked changes in a DOCX file using LibreOffice. + +Requires LibreOffice (soffice) to be installed. +""" + +import argparse +import logging +import shutil +import subprocess +from pathlib import Path + +from office.soffice import get_soffice_env + +logger = logging.getLogger(__name__) + +LIBREOFFICE_PROFILE = "/tmp/libreoffice_docx_profile" +MACRO_DIR = f"{LIBREOFFICE_PROFILE}/user/basic/Standard" + +ACCEPT_CHANGES_MACRO = """ + + + Sub AcceptAllTrackedChanges() + Dim document As Object + Dim dispatcher As Object + + document = ThisComponent.CurrentController.Frame + dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") + + dispatcher.executeDispatch(document, ".uno:AcceptAllTrackedChanges", "", 0, Array()) + ThisComponent.store() + ThisComponent.close(True) + End Sub +""" + + +def accept_changes( + input_file: str, + output_file: str, +) -> tuple[None, str]: + input_path = Path(input_file) + output_path = Path(output_file) + + if not input_path.exists(): + return None, f"Error: Input file not found: {input_file}" + + if not input_path.suffix.lower() == ".docx": + return None, f"Error: Input file is not a DOCX file: {input_file}" + + try: + output_path.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(input_path, output_path) + except Exception as e: + return None, f"Error: Failed to copy input file to output location: {e}" + + if not _setup_libreoffice_macro(): + return None, "Error: Failed to setup LibreOffice macro" + + cmd = [ + "soffice", + "--headless", + f"-env:UserInstallation=file://{LIBREOFFICE_PROFILE}", + "--norestore", + "vnd.sun.star.script:Standard.Module1.AcceptAllTrackedChanges?language=Basic&location=application", + str(output_path.absolute()), + ] + + try: + result = subprocess.run( + cmd, + capture_output=True, + text=True, + timeout=30, + check=False, + env=get_soffice_env(), + ) + except subprocess.TimeoutExpired: + return ( + None, + f"Successfully accepted all tracked changes: {input_file} -> {output_file}", + ) + + if result.returncode != 0: + return None, f"Error: LibreOffice failed: {result.stderr}" + + return ( + None, + f"Successfully accepted all tracked changes: {input_file} -> {output_file}", + ) + + +def _setup_libreoffice_macro() -> bool: + macro_dir = Path(MACRO_DIR) + macro_file = macro_dir / "Module1.xba" + + if macro_file.exists() and "AcceptAllTrackedChanges" in macro_file.read_text(): + return True + + if not macro_dir.exists(): + subprocess.run( + [ + "soffice", + "--headless", + f"-env:UserInstallation=file://{LIBREOFFICE_PROFILE}", + "--terminate_after_init", + ], + capture_output=True, + timeout=10, + check=False, + env=get_soffice_env(), + ) + macro_dir.mkdir(parents=True, exist_ok=True) + + try: + macro_file.write_text(ACCEPT_CHANGES_MACRO) + return True + except Exception as e: + logger.warning(f"Failed to setup LibreOffice macro: {e}") + return False + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Accept all tracked changes in a DOCX file" + ) + parser.add_argument("input_file", help="Input DOCX file with tracked changes") + parser.add_argument( + "output_file", help="Output DOCX file (clean, no tracked changes)" + ) + args = parser.parse_args() + + _, message = accept_changes(args.input_file, args.output_file) + print(message) + + if "Error" in message: + raise SystemExit(1) diff --git a/.claude/skills/docx/scripts/comment.py b/.claude/skills/docx/scripts/comment.py new file mode 100644 index 0000000..36e1c93 --- /dev/null +++ b/.claude/skills/docx/scripts/comment.py @@ -0,0 +1,318 @@ +"""Add comments to DOCX documents. + +Usage: + python comment.py unpacked/ 0 "Comment text" + python comment.py unpacked/ 1 "Reply text" --parent 0 + +Text should be pre-escaped XML (e.g., & for &, ’ for smart quotes). + +After running, add markers to document.xml: + + ... commented content ... + + +""" + +import argparse +import random +import shutil +import sys +from datetime import datetime, timezone +from pathlib import Path + +import defusedxml.minidom + +TEMPLATE_DIR = Path(__file__).parent / "templates" +NS = { + "w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main", + "w14": "http://schemas.microsoft.com/office/word/2010/wordml", + "w15": "http://schemas.microsoft.com/office/word/2012/wordml", + "w16cid": "http://schemas.microsoft.com/office/word/2016/wordml/cid", + "w16cex": "http://schemas.microsoft.com/office/word/2018/wordml/cex", +} + +COMMENT_XML = """\ + + + + + + + + + + + + + {text} + + +""" + +COMMENT_MARKER_TEMPLATE = """ +Add to document.xml (markers must be direct children of w:p, never inside w:r): + + ... + + """ + +REPLY_MARKER_TEMPLATE = """ +Nest markers inside parent {pid}'s markers (markers must be direct children of w:p, never inside w:r): + + ... + + + """ + + +def _generate_hex_id() -> str: + return f"{random.randint(0, 0x7FFFFFFE):08X}" + + +SMART_QUOTE_ENTITIES = { + "\u201c": "“", + "\u201d": "”", + "\u2018": "‘", + "\u2019": "’", +} + + +def _encode_smart_quotes(text: str) -> str: + for char, entity in SMART_QUOTE_ENTITIES.items(): + text = text.replace(char, entity) + return text + + +def _append_xml(xml_path: Path, root_tag: str, content: str) -> None: + dom = defusedxml.minidom.parseString(xml_path.read_text(encoding="utf-8")) + root = dom.getElementsByTagName(root_tag)[0] + ns_attrs = " ".join(f'xmlns:{k}="{v}"' for k, v in NS.items()) + wrapper_dom = defusedxml.minidom.parseString(f"{content}") + for child in wrapper_dom.documentElement.childNodes: + if child.nodeType == child.ELEMENT_NODE: + root.appendChild(dom.importNode(child, True)) + output = _encode_smart_quotes(dom.toxml(encoding="UTF-8").decode("utf-8")) + xml_path.write_text(output, encoding="utf-8") + + +def _find_para_id(comments_path: Path, comment_id: int) -> str | None: + dom = defusedxml.minidom.parseString(comments_path.read_text(encoding="utf-8")) + for c in dom.getElementsByTagName("w:comment"): + if c.getAttribute("w:id") == str(comment_id): + for p in c.getElementsByTagName("w:p"): + if pid := p.getAttribute("w14:paraId"): + return pid + return None + + +def _get_next_rid(rels_path: Path) -> int: + dom = defusedxml.minidom.parseString(rels_path.read_text(encoding="utf-8")) + max_rid = 0 + for rel in dom.getElementsByTagName("Relationship"): + rid = rel.getAttribute("Id") + if rid and rid.startswith("rId"): + try: + max_rid = max(max_rid, int(rid[3:])) + except ValueError: + pass + return max_rid + 1 + + +def _has_relationship(rels_path: Path, target: str) -> bool: + dom = defusedxml.minidom.parseString(rels_path.read_text(encoding="utf-8")) + for rel in dom.getElementsByTagName("Relationship"): + if rel.getAttribute("Target") == target: + return True + return False + + +def _has_content_type(ct_path: Path, part_name: str) -> bool: + dom = defusedxml.minidom.parseString(ct_path.read_text(encoding="utf-8")) + for override in dom.getElementsByTagName("Override"): + if override.getAttribute("PartName") == part_name: + return True + return False + + +def _ensure_comment_relationships(unpacked_dir: Path) -> None: + rels_path = unpacked_dir / "word" / "_rels" / "document.xml.rels" + if not rels_path.exists(): + return + + if _has_relationship(rels_path, "comments.xml"): + return + + dom = defusedxml.minidom.parseString(rels_path.read_text(encoding="utf-8")) + root = dom.documentElement + next_rid = _get_next_rid(rels_path) + + rels = [ + ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments", + "comments.xml", + ), + ( + "http://schemas.microsoft.com/office/2011/relationships/commentsExtended", + "commentsExtended.xml", + ), + ( + "http://schemas.microsoft.com/office/2016/09/relationships/commentsIds", + "commentsIds.xml", + ), + ( + "http://schemas.microsoft.com/office/2018/08/relationships/commentsExtensible", + "commentsExtensible.xml", + ), + ] + + for rel_type, target in rels: + rel = dom.createElement("Relationship") + rel.setAttribute("Id", f"rId{next_rid}") + rel.setAttribute("Type", rel_type) + rel.setAttribute("Target", target) + root.appendChild(rel) + next_rid += 1 + + rels_path.write_bytes(dom.toxml(encoding="UTF-8")) + + +def _ensure_comment_content_types(unpacked_dir: Path) -> None: + ct_path = unpacked_dir / "[Content_Types].xml" + if not ct_path.exists(): + return + + if _has_content_type(ct_path, "/word/comments.xml"): + return + + dom = defusedxml.minidom.parseString(ct_path.read_text(encoding="utf-8")) + root = dom.documentElement + + overrides = [ + ( + "/word/comments.xml", + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml", + ), + ( + "/word/commentsExtended.xml", + "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtended+xml", + ), + ( + "/word/commentsIds.xml", + "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsIds+xml", + ), + ( + "/word/commentsExtensible.xml", + "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtensible+xml", + ), + ] + + for part_name, content_type in overrides: + override = dom.createElement("Override") + override.setAttribute("PartName", part_name) + override.setAttribute("ContentType", content_type) + root.appendChild(override) + + ct_path.write_bytes(dom.toxml(encoding="UTF-8")) + + +def add_comment( + unpacked_dir: str, + comment_id: int, + text: str, + author: str = "Claude", + initials: str = "C", + parent_id: int | None = None, +) -> tuple[str, str]: + word = Path(unpacked_dir) / "word" + if not word.exists(): + return "", f"Error: {word} not found" + + para_id, durable_id = _generate_hex_id(), _generate_hex_id() + ts = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") + + comments = word / "comments.xml" + first_comment = not comments.exists() + if first_comment: + shutil.copy(TEMPLATE_DIR / "comments.xml", comments) + _ensure_comment_relationships(Path(unpacked_dir)) + _ensure_comment_content_types(Path(unpacked_dir)) + _append_xml( + comments, + "w:comments", + COMMENT_XML.format( + id=comment_id, + author=author, + date=ts, + initials=initials, + para_id=para_id, + text=text, + ), + ) + + ext = word / "commentsExtended.xml" + if not ext.exists(): + shutil.copy(TEMPLATE_DIR / "commentsExtended.xml", ext) + if parent_id is not None: + parent_para = _find_para_id(comments, parent_id) + if not parent_para: + return "", f"Error: Parent comment {parent_id} not found" + _append_xml( + ext, + "w15:commentsEx", + f'', + ) + else: + _append_xml( + ext, + "w15:commentsEx", + f'', + ) + + ids = word / "commentsIds.xml" + if not ids.exists(): + shutil.copy(TEMPLATE_DIR / "commentsIds.xml", ids) + _append_xml( + ids, + "w16cid:commentsIds", + f'', + ) + + extensible = word / "commentsExtensible.xml" + if not extensible.exists(): + shutil.copy(TEMPLATE_DIR / "commentsExtensible.xml", extensible) + _append_xml( + extensible, + "w16cex:commentsExtensible", + f'', + ) + + action = "reply" if parent_id is not None else "comment" + return para_id, f"Added {action} {comment_id} (para_id={para_id})" + + +if __name__ == "__main__": + p = argparse.ArgumentParser(description="Add comments to DOCX documents") + p.add_argument("unpacked_dir", help="Unpacked DOCX directory") + p.add_argument("comment_id", type=int, help="Comment ID (must be unique)") + p.add_argument("text", help="Comment text") + p.add_argument("--author", default="Claude", help="Author name") + p.add_argument("--initials", default="C", help="Author initials") + p.add_argument("--parent", type=int, help="Parent comment ID (for replies)") + args = p.parse_args() + + para_id, msg = add_comment( + args.unpacked_dir, + args.comment_id, + args.text, + args.author, + args.initials, + args.parent, + ) + print(msg) + if "Error" in msg: + sys.exit(1) + cid = args.comment_id + if args.parent is not None: + print(REPLY_MARKER_TEMPLATE.format(pid=args.parent, cid=cid)) + else: + print(COMMENT_MARKER_TEMPLATE.format(cid=cid)) diff --git a/.claude/skills/docx/scripts/office/helpers/merge_runs.py b/.claude/skills/docx/scripts/office/helpers/merge_runs.py new file mode 100644 index 0000000..ad7c25e --- /dev/null +++ b/.claude/skills/docx/scripts/office/helpers/merge_runs.py @@ -0,0 +1,199 @@ +"""Merge adjacent runs with identical formatting in DOCX. + +Merges adjacent elements that have identical properties. +Works on runs in paragraphs and inside tracked changes (, ). + +Also: +- Removes rsid attributes from runs (revision metadata that doesn't affect rendering) +- Removes proofErr elements (spell/grammar markers that block merging) +""" + +from pathlib import Path + +import defusedxml.minidom + + +def merge_runs(input_dir: str) -> tuple[int, str]: + doc_xml = Path(input_dir) / "word" / "document.xml" + + if not doc_xml.exists(): + return 0, f"Error: {doc_xml} not found" + + try: + dom = defusedxml.minidom.parseString(doc_xml.read_text(encoding="utf-8")) + root = dom.documentElement + + _remove_elements(root, "proofErr") + _strip_run_rsid_attrs(root) + + containers = {run.parentNode for run in _find_elements(root, "r")} + + merge_count = 0 + for container in containers: + merge_count += _merge_runs_in(container) + + doc_xml.write_bytes(dom.toxml(encoding="UTF-8")) + return merge_count, f"Merged {merge_count} runs" + + except Exception as e: + return 0, f"Error: {e}" + + + + +def _find_elements(root, tag: str) -> list: + results = [] + + def traverse(node): + if node.nodeType == node.ELEMENT_NODE: + name = node.localName or node.tagName + if name == tag or name.endswith(f":{tag}"): + results.append(node) + for child in node.childNodes: + traverse(child) + + traverse(root) + return results + + +def _get_child(parent, tag: str): + for child in parent.childNodes: + if child.nodeType == child.ELEMENT_NODE: + name = child.localName or child.tagName + if name == tag or name.endswith(f":{tag}"): + return child + return None + + +def _get_children(parent, tag: str) -> list: + results = [] + for child in parent.childNodes: + if child.nodeType == child.ELEMENT_NODE: + name = child.localName or child.tagName + if name == tag or name.endswith(f":{tag}"): + results.append(child) + return results + + +def _is_adjacent(elem1, elem2) -> bool: + node = elem1.nextSibling + while node: + if node == elem2: + return True + if node.nodeType == node.ELEMENT_NODE: + return False + if node.nodeType == node.TEXT_NODE and node.data.strip(): + return False + node = node.nextSibling + return False + + + + +def _remove_elements(root, tag: str): + for elem in _find_elements(root, tag): + if elem.parentNode: + elem.parentNode.removeChild(elem) + + +def _strip_run_rsid_attrs(root): + for run in _find_elements(root, "r"): + for attr in list(run.attributes.values()): + if "rsid" in attr.name.lower(): + run.removeAttribute(attr.name) + + + + +def _merge_runs_in(container) -> int: + merge_count = 0 + run = _first_child_run(container) + + while run: + while True: + next_elem = _next_element_sibling(run) + if next_elem and _is_run(next_elem) and _can_merge(run, next_elem): + _merge_run_content(run, next_elem) + container.removeChild(next_elem) + merge_count += 1 + else: + break + + _consolidate_text(run) + run = _next_sibling_run(run) + + return merge_count + + +def _first_child_run(container): + for child in container.childNodes: + if child.nodeType == child.ELEMENT_NODE and _is_run(child): + return child + return None + + +def _next_element_sibling(node): + sibling = node.nextSibling + while sibling: + if sibling.nodeType == sibling.ELEMENT_NODE: + return sibling + sibling = sibling.nextSibling + return None + + +def _next_sibling_run(node): + sibling = node.nextSibling + while sibling: + if sibling.nodeType == sibling.ELEMENT_NODE: + if _is_run(sibling): + return sibling + sibling = sibling.nextSibling + return None + + +def _is_run(node) -> bool: + name = node.localName or node.tagName + return name == "r" or name.endswith(":r") + + +def _can_merge(run1, run2) -> bool: + rpr1 = _get_child(run1, "rPr") + rpr2 = _get_child(run2, "rPr") + + if (rpr1 is None) != (rpr2 is None): + return False + if rpr1 is None: + return True + return rpr1.toxml() == rpr2.toxml() + + +def _merge_run_content(target, source): + for child in list(source.childNodes): + if child.nodeType == child.ELEMENT_NODE: + name = child.localName or child.tagName + if name != "rPr" and not name.endswith(":rPr"): + target.appendChild(child) + + +def _consolidate_text(run): + t_elements = _get_children(run, "t") + + for i in range(len(t_elements) - 1, 0, -1): + curr, prev = t_elements[i], t_elements[i - 1] + + if _is_adjacent(prev, curr): + prev_text = prev.firstChild.data if prev.firstChild else "" + curr_text = curr.firstChild.data if curr.firstChild else "" + merged = prev_text + curr_text + + if prev.firstChild: + prev.firstChild.data = merged + else: + prev.appendChild(run.ownerDocument.createTextNode(merged)) + + if merged.startswith(" ") or merged.endswith(" "): + prev.setAttribute("xml:space", "preserve") + elif prev.hasAttribute("xml:space"): + prev.removeAttribute("xml:space") + + run.removeChild(curr) diff --git a/.claude/skills/docx/scripts/office/helpers/simplify_redlines.py b/.claude/skills/docx/scripts/office/helpers/simplify_redlines.py new file mode 100644 index 0000000..db963bb --- /dev/null +++ b/.claude/skills/docx/scripts/office/helpers/simplify_redlines.py @@ -0,0 +1,197 @@ +"""Simplify tracked changes by merging adjacent w:ins or w:del elements. + +Merges adjacent elements from the same author into a single element. +Same for elements. This makes heavily-redlined documents easier to +work with by reducing the number of tracked change wrappers. + +Rules: +- Only merges w:ins with w:ins, w:del with w:del (same element type) +- Only merges if same author (ignores timestamp differences) +- Only merges if truly adjacent (only whitespace between them) +""" + +import xml.etree.ElementTree as ET +import zipfile +from pathlib import Path + +import defusedxml.minidom + +WORD_NS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + + +def simplify_redlines(input_dir: str) -> tuple[int, str]: + doc_xml = Path(input_dir) / "word" / "document.xml" + + if not doc_xml.exists(): + return 0, f"Error: {doc_xml} not found" + + try: + dom = defusedxml.minidom.parseString(doc_xml.read_text(encoding="utf-8")) + root = dom.documentElement + + merge_count = 0 + + containers = _find_elements(root, "p") + _find_elements(root, "tc") + + for container in containers: + merge_count += _merge_tracked_changes_in(container, "ins") + merge_count += _merge_tracked_changes_in(container, "del") + + doc_xml.write_bytes(dom.toxml(encoding="UTF-8")) + return merge_count, f"Simplified {merge_count} tracked changes" + + except Exception as e: + return 0, f"Error: {e}" + + +def _merge_tracked_changes_in(container, tag: str) -> int: + merge_count = 0 + + tracked = [ + child + for child in container.childNodes + if child.nodeType == child.ELEMENT_NODE and _is_element(child, tag) + ] + + if len(tracked) < 2: + return 0 + + i = 0 + while i < len(tracked) - 1: + curr = tracked[i] + next_elem = tracked[i + 1] + + if _can_merge_tracked(curr, next_elem): + _merge_tracked_content(curr, next_elem) + container.removeChild(next_elem) + tracked.pop(i + 1) + merge_count += 1 + else: + i += 1 + + return merge_count + + +def _is_element(node, tag: str) -> bool: + name = node.localName or node.tagName + return name == tag or name.endswith(f":{tag}") + + +def _get_author(elem) -> str: + author = elem.getAttribute("w:author") + if not author: + for attr in elem.attributes.values(): + if attr.localName == "author" or attr.name.endswith(":author"): + return attr.value + return author + + +def _can_merge_tracked(elem1, elem2) -> bool: + if _get_author(elem1) != _get_author(elem2): + return False + + node = elem1.nextSibling + while node and node != elem2: + if node.nodeType == node.ELEMENT_NODE: + return False + if node.nodeType == node.TEXT_NODE and node.data.strip(): + return False + node = node.nextSibling + + return True + + +def _merge_tracked_content(target, source): + while source.firstChild: + child = source.firstChild + source.removeChild(child) + target.appendChild(child) + + +def _find_elements(root, tag: str) -> list: + results = [] + + def traverse(node): + if node.nodeType == node.ELEMENT_NODE: + name = node.localName or node.tagName + if name == tag or name.endswith(f":{tag}"): + results.append(node) + for child in node.childNodes: + traverse(child) + + traverse(root) + return results + + +def get_tracked_change_authors(doc_xml_path: Path) -> dict[str, int]: + if not doc_xml_path.exists(): + return {} + + try: + tree = ET.parse(doc_xml_path) + root = tree.getroot() + except ET.ParseError: + return {} + + namespaces = {"w": WORD_NS} + author_attr = f"{{{WORD_NS}}}author" + + authors: dict[str, int] = {} + for tag in ["ins", "del"]: + for elem in root.findall(f".//w:{tag}", namespaces): + author = elem.get(author_attr) + if author: + authors[author] = authors.get(author, 0) + 1 + + return authors + + +def _get_authors_from_docx(docx_path: Path) -> dict[str, int]: + try: + with zipfile.ZipFile(docx_path, "r") as zf: + if "word/document.xml" not in zf.namelist(): + return {} + with zf.open("word/document.xml") as f: + tree = ET.parse(f) + root = tree.getroot() + + namespaces = {"w": WORD_NS} + author_attr = f"{{{WORD_NS}}}author" + + authors: dict[str, int] = {} + for tag in ["ins", "del"]: + for elem in root.findall(f".//w:{tag}", namespaces): + author = elem.get(author_attr) + if author: + authors[author] = authors.get(author, 0) + 1 + return authors + except (zipfile.BadZipFile, ET.ParseError): + return {} + + +def infer_author(modified_dir: Path, original_docx: Path, default: str = "Claude") -> str: + modified_xml = modified_dir / "word" / "document.xml" + modified_authors = get_tracked_change_authors(modified_xml) + + if not modified_authors: + return default + + original_authors = _get_authors_from_docx(original_docx) + + new_changes: dict[str, int] = {} + for author, count in modified_authors.items(): + original_count = original_authors.get(author, 0) + diff = count - original_count + if diff > 0: + new_changes[author] = diff + + if not new_changes: + return default + + if len(new_changes) == 1: + return next(iter(new_changes)) + + raise ValueError( + f"Multiple authors added new changes: {new_changes}. " + "Cannot infer which author to validate." + ) diff --git a/.claude/skills/docx/scripts/office/pack.py b/.claude/skills/docx/scripts/office/pack.py new file mode 100644 index 0000000..db29ed8 --- /dev/null +++ b/.claude/skills/docx/scripts/office/pack.py @@ -0,0 +1,159 @@ +"""Pack a directory into a DOCX, PPTX, or XLSX file. + +Validates with auto-repair, condenses XML formatting, and creates the Office file. + +Usage: + python pack.py [--original ] [--validate true|false] + +Examples: + python pack.py unpacked/ output.docx --original input.docx + python pack.py unpacked/ output.pptx --validate false +""" + +import argparse +import sys +import shutil +import tempfile +import zipfile +from pathlib import Path + +import defusedxml.minidom + +from validators import DOCXSchemaValidator, PPTXSchemaValidator, RedliningValidator + +def pack( + input_directory: str, + output_file: str, + original_file: str | None = None, + validate: bool = True, + infer_author_func=None, +) -> tuple[None, str]: + input_dir = Path(input_directory) + output_path = Path(output_file) + suffix = output_path.suffix.lower() + + if not input_dir.is_dir(): + return None, f"Error: {input_dir} is not a directory" + + if suffix not in {".docx", ".pptx", ".xlsx"}: + return None, f"Error: {output_file} must be a .docx, .pptx, or .xlsx file" + + if validate and original_file: + original_path = Path(original_file) + if original_path.exists(): + success, output = _run_validation( + input_dir, original_path, suffix, infer_author_func + ) + if output: + print(output) + if not success: + return None, f"Error: Validation failed for {input_dir}" + + with tempfile.TemporaryDirectory() as temp_dir: + temp_content_dir = Path(temp_dir) / "content" + shutil.copytree(input_dir, temp_content_dir) + + for pattern in ["*.xml", "*.rels"]: + for xml_file in temp_content_dir.rglob(pattern): + _condense_xml(xml_file) + + output_path.parent.mkdir(parents=True, exist_ok=True) + with zipfile.ZipFile(output_path, "w", zipfile.ZIP_DEFLATED) as zf: + for f in temp_content_dir.rglob("*"): + if f.is_file(): + zf.write(f, f.relative_to(temp_content_dir)) + + return None, f"Successfully packed {input_dir} to {output_file}" + + +def _run_validation( + unpacked_dir: Path, + original_file: Path, + suffix: str, + infer_author_func=None, +) -> tuple[bool, str | None]: + output_lines = [] + validators = [] + + if suffix == ".docx": + author = "Claude" + if infer_author_func: + try: + author = infer_author_func(unpacked_dir, original_file) + except ValueError as e: + print(f"Warning: {e} Using default author 'Claude'.", file=sys.stderr) + + validators = [ + DOCXSchemaValidator(unpacked_dir, original_file), + RedliningValidator(unpacked_dir, original_file, author=author), + ] + elif suffix == ".pptx": + validators = [PPTXSchemaValidator(unpacked_dir, original_file)] + + if not validators: + return True, None + + total_repairs = sum(v.repair() for v in validators) + if total_repairs: + output_lines.append(f"Auto-repaired {total_repairs} issue(s)") + + success = all(v.validate() for v in validators) + + if success: + output_lines.append("All validations PASSED!") + + return success, "\n".join(output_lines) if output_lines else None + + +def _condense_xml(xml_file: Path) -> None: + try: + with open(xml_file, encoding="utf-8") as f: + dom = defusedxml.minidom.parse(f) + + for element in dom.getElementsByTagName("*"): + if element.tagName.endswith(":t"): + continue + + for child in list(element.childNodes): + if ( + child.nodeType == child.TEXT_NODE + and child.nodeValue + and child.nodeValue.strip() == "" + ) or child.nodeType == child.COMMENT_NODE: + element.removeChild(child) + + xml_file.write_bytes(dom.toxml(encoding="UTF-8")) + except Exception as e: + print(f"ERROR: Failed to parse {xml_file.name}: {e}", file=sys.stderr) + raise + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Pack a directory into a DOCX, PPTX, or XLSX file" + ) + parser.add_argument("input_directory", help="Unpacked Office document directory") + parser.add_argument("output_file", help="Output Office file (.docx/.pptx/.xlsx)") + parser.add_argument( + "--original", + help="Original file for validation comparison", + ) + parser.add_argument( + "--validate", + type=lambda x: x.lower() == "true", + default=True, + metavar="true|false", + help="Run validation with auto-repair (default: true)", + ) + args = parser.parse_args() + + _, message = pack( + args.input_directory, + args.output_file, + original_file=args.original, + validate=args.validate, + ) + print(message) + + if "Error" in message: + sys.exit(1) diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd new file mode 100644 index 0000000..6454ef9 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd @@ -0,0 +1,1499 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd new file mode 100644 index 0000000..afa4f46 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd new file mode 100644 index 0000000..64e66b8 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd @@ -0,0 +1,1085 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd new file mode 100644 index 0000000..687eea8 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd @@ -0,0 +1,11 @@ + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd new file mode 100644 index 0000000..6ac81b0 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd @@ -0,0 +1,3081 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd new file mode 100644 index 0000000..1dbf051 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd new file mode 100644 index 0000000..f1af17d --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd new file mode 100644 index 0000000..0a185ab --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd new file mode 100644 index 0000000..14ef488 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd @@ -0,0 +1,1676 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd new file mode 100644 index 0000000..c20f3bf --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd new file mode 100644 index 0000000..ac60252 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd new file mode 100644 index 0000000..424b8ba --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd new file mode 100644 index 0000000..2bddce2 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd new file mode 100644 index 0000000..8a8c18b --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd new file mode 100644 index 0000000..5c42706 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd new file mode 100644 index 0000000..853c341 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd new file mode 100644 index 0000000..da835ee --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd new file mode 100644 index 0000000..87ad265 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd @@ -0,0 +1,582 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd new file mode 100644 index 0000000..9e86f1b --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd new file mode 100644 index 0000000..d0be42e --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd @@ -0,0 +1,4439 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd new file mode 100644 index 0000000..8821dd1 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd @@ -0,0 +1,570 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd new file mode 100644 index 0000000..ca2575c --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd @@ -0,0 +1,509 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd new file mode 100644 index 0000000..dd079e6 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd new file mode 100644 index 0000000..3dd6cf6 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd new file mode 100644 index 0000000..f1041e3 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd new file mode 100644 index 0000000..9c5b7a6 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd @@ -0,0 +1,3646 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd new file mode 100644 index 0000000..0f13678 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd @@ -0,0 +1,116 @@ + + + + + + See http://www.w3.org/XML/1998/namespace.html and + http://www.w3.org/TR/REC-xml for information about this namespace. + + This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father + + + + + This schema defines attributes and an attribute group + suitable for use by + schemas wishing to allow xml:base, xml:lang or xml:space attributes + on elements they define. + + To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/03/xml.xsd"/> + + Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> + + will define a type which will schema-validate an instance + element with any of those attributes + + + + In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + http://www.w3.org/2001/03/xml.xsd. + At the date of issue it can also be found at + http://www.w3.org/2001/xml.xsd. + The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML Schema + itself. In other words, if the XML Schema namespace changes, the version + of this document at + http://www.w3.org/2001/xml.xsd will change + accordingly; the version at + http://www.w3.org/2001/03/xml.xsd will not change. + + + + + + In due course, we should install the relevant ISO 2- and 3-letter + codes as the enumerated possible values . . . + + + + + + + + + + + + + + + See http://www.w3.org/TR/xmlbase/ for + information about this attribute. + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd b/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd new file mode 100644 index 0000000..a6de9d2 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd b/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd new file mode 100644 index 0000000..10e978b --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd b/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd new file mode 100644 index 0000000..4248bf7 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd b/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd new file mode 100644 index 0000000..5649746 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/mce/mc.xsd b/.claude/skills/docx/scripts/office/schemas/mce/mc.xsd new file mode 100644 index 0000000..ef72545 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/mce/mc.xsd @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd new file mode 100644 index 0000000..f65f777 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd @@ -0,0 +1,560 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd new file mode 100644 index 0000000..6b00755 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd new file mode 100644 index 0000000..f321d33 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd new file mode 100644 index 0000000..364c6a9 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd new file mode 100644 index 0000000..fed9d15 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd new file mode 100644 index 0000000..680cf15 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd @@ -0,0 +1,4 @@ + + + + diff --git a/.claude/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd new file mode 100644 index 0000000..89ada90 --- /dev/null +++ b/.claude/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/.claude/skills/docx/scripts/office/soffice.py b/.claude/skills/docx/scripts/office/soffice.py new file mode 100644 index 0000000..c7f7e32 --- /dev/null +++ b/.claude/skills/docx/scripts/office/soffice.py @@ -0,0 +1,183 @@ +""" +Helper for running LibreOffice (soffice) in environments where AF_UNIX +sockets may be blocked (e.g., sandboxed VMs). Detects the restriction +at runtime and applies an LD_PRELOAD shim if needed. + +Usage: + from office.soffice import run_soffice, get_soffice_env + + # Option 1 – run soffice directly + result = run_soffice(["--headless", "--convert-to", "pdf", "input.docx"]) + + # Option 2 – get env dict for your own subprocess calls + env = get_soffice_env() + subprocess.run(["soffice", ...], env=env) +""" + +import os +import socket +import subprocess +import tempfile +from pathlib import Path + + +def get_soffice_env() -> dict: + env = os.environ.copy() + env["SAL_USE_VCLPLUGIN"] = "svp" + + if _needs_shim(): + shim = _ensure_shim() + env["LD_PRELOAD"] = str(shim) + + return env + + +def run_soffice(args: list[str], **kwargs) -> subprocess.CompletedProcess: + env = get_soffice_env() + return subprocess.run(["soffice"] + args, env=env, **kwargs) + + + +_SHIM_SO = Path(tempfile.gettempdir()) / "lo_socket_shim.so" + + +def _needs_shim() -> bool: + try: + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.close() + return False + except OSError: + return True + + +def _ensure_shim() -> Path: + if _SHIM_SO.exists(): + return _SHIM_SO + + src = Path(tempfile.gettempdir()) / "lo_socket_shim.c" + src.write_text(_SHIM_SOURCE) + subprocess.run( + ["gcc", "-shared", "-fPIC", "-o", str(_SHIM_SO), str(src), "-ldl"], + check=True, + capture_output=True, + ) + src.unlink() + return _SHIM_SO + + + +_SHIM_SOURCE = r""" +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include + +static int (*real_socket)(int, int, int); +static int (*real_socketpair)(int, int, int, int[2]); +static int (*real_listen)(int, int); +static int (*real_accept)(int, struct sockaddr *, socklen_t *); +static int (*real_close)(int); +static int (*real_read)(int, void *, size_t); + +/* Per-FD bookkeeping (FDs >= 1024 are passed through unshimmed). */ +static int is_shimmed[1024]; +static int peer_of[1024]; +static int wake_r[1024]; /* accept() blocks reading this */ +static int wake_w[1024]; /* close() writes to this */ +static int listener_fd = -1; /* FD that received listen() */ + +__attribute__((constructor)) +static void init(void) { + real_socket = dlsym(RTLD_NEXT, "socket"); + real_socketpair = dlsym(RTLD_NEXT, "socketpair"); + real_listen = dlsym(RTLD_NEXT, "listen"); + real_accept = dlsym(RTLD_NEXT, "accept"); + real_close = dlsym(RTLD_NEXT, "close"); + real_read = dlsym(RTLD_NEXT, "read"); + for (int i = 0; i < 1024; i++) { + peer_of[i] = -1; + wake_r[i] = -1; + wake_w[i] = -1; + } +} + +/* ---- socket ---------------------------------------------------------- */ +int socket(int domain, int type, int protocol) { + if (domain == AF_UNIX) { + int fd = real_socket(domain, type, protocol); + if (fd >= 0) return fd; + /* socket(AF_UNIX) blocked – fall back to socketpair(). */ + int sv[2]; + if (real_socketpair(domain, type, protocol, sv) == 0) { + if (sv[0] >= 0 && sv[0] < 1024) { + is_shimmed[sv[0]] = 1; + peer_of[sv[0]] = sv[1]; + int wp[2]; + if (pipe(wp) == 0) { + wake_r[sv[0]] = wp[0]; + wake_w[sv[0]] = wp[1]; + } + } + return sv[0]; + } + errno = EPERM; + return -1; + } + return real_socket(domain, type, protocol); +} + +/* ---- listen ---------------------------------------------------------- */ +int listen(int sockfd, int backlog) { + if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { + listener_fd = sockfd; + return 0; + } + return real_listen(sockfd, backlog); +} + +/* ---- accept ---------------------------------------------------------- */ +int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) { + if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { + /* Block until close() writes to the wake pipe. */ + if (wake_r[sockfd] >= 0) { + char buf; + real_read(wake_r[sockfd], &buf, 1); + } + errno = ECONNABORTED; + return -1; + } + return real_accept(sockfd, addr, addrlen); +} + +/* ---- close ----------------------------------------------------------- */ +int close(int fd) { + if (fd >= 0 && fd < 1024 && is_shimmed[fd]) { + int was_listener = (fd == listener_fd); + is_shimmed[fd] = 0; + + if (wake_w[fd] >= 0) { /* unblock accept() */ + char c = 0; + write(wake_w[fd], &c, 1); + real_close(wake_w[fd]); + wake_w[fd] = -1; + } + if (wake_r[fd] >= 0) { real_close(wake_r[fd]); wake_r[fd] = -1; } + if (peer_of[fd] >= 0) { real_close(peer_of[fd]); peer_of[fd] = -1; } + + if (was_listener) + _exit(0); /* conversion done – exit */ + } + return real_close(fd); +} +""" + + + +if __name__ == "__main__": + import sys + result = run_soffice(sys.argv[1:]) + sys.exit(result.returncode) diff --git a/.claude/skills/docx/scripts/office/unpack.py b/.claude/skills/docx/scripts/office/unpack.py new file mode 100644 index 0000000..0015253 --- /dev/null +++ b/.claude/skills/docx/scripts/office/unpack.py @@ -0,0 +1,132 @@ +"""Unpack Office files (DOCX, PPTX, XLSX) for editing. + +Extracts the ZIP archive, pretty-prints XML files, and optionally: +- Merges adjacent runs with identical formatting (DOCX only) +- Simplifies adjacent tracked changes from same author (DOCX only) + +Usage: + python unpack.py [options] + +Examples: + python unpack.py document.docx unpacked/ + python unpack.py presentation.pptx unpacked/ + python unpack.py document.docx unpacked/ --merge-runs false +""" + +import argparse +import sys +import zipfile +from pathlib import Path + +import defusedxml.minidom + +from helpers.merge_runs import merge_runs as do_merge_runs +from helpers.simplify_redlines import simplify_redlines as do_simplify_redlines + +SMART_QUOTE_REPLACEMENTS = { + "\u201c": "“", + "\u201d": "”", + "\u2018": "‘", + "\u2019": "’", +} + + +def unpack( + input_file: str, + output_directory: str, + merge_runs: bool = True, + simplify_redlines: bool = True, +) -> tuple[None, str]: + input_path = Path(input_file) + output_path = Path(output_directory) + suffix = input_path.suffix.lower() + + if not input_path.exists(): + return None, f"Error: {input_file} does not exist" + + if suffix not in {".docx", ".pptx", ".xlsx"}: + return None, f"Error: {input_file} must be a .docx, .pptx, or .xlsx file" + + try: + output_path.mkdir(parents=True, exist_ok=True) + + with zipfile.ZipFile(input_path, "r") as zf: + zf.extractall(output_path) + + xml_files = list(output_path.rglob("*.xml")) + list(output_path.rglob("*.rels")) + for xml_file in xml_files: + _pretty_print_xml(xml_file) + + message = f"Unpacked {input_file} ({len(xml_files)} XML files)" + + if suffix == ".docx": + if simplify_redlines: + simplify_count, _ = do_simplify_redlines(str(output_path)) + message += f", simplified {simplify_count} tracked changes" + + if merge_runs: + merge_count, _ = do_merge_runs(str(output_path)) + message += f", merged {merge_count} runs" + + for xml_file in xml_files: + _escape_smart_quotes(xml_file) + + return None, message + + except zipfile.BadZipFile: + return None, f"Error: {input_file} is not a valid Office file" + except Exception as e: + return None, f"Error unpacking: {e}" + + +def _pretty_print_xml(xml_file: Path) -> None: + try: + content = xml_file.read_text(encoding="utf-8") + dom = defusedxml.minidom.parseString(content) + xml_file.write_bytes(dom.toprettyxml(indent=" ", encoding="utf-8")) + except Exception: + pass + + +def _escape_smart_quotes(xml_file: Path) -> None: + try: + content = xml_file.read_text(encoding="utf-8") + for char, entity in SMART_QUOTE_REPLACEMENTS.items(): + content = content.replace(char, entity) + xml_file.write_text(content, encoding="utf-8") + except Exception: + pass + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="Unpack an Office file (DOCX, PPTX, XLSX) for editing" + ) + parser.add_argument("input_file", help="Office file to unpack") + parser.add_argument("output_directory", help="Output directory") + parser.add_argument( + "--merge-runs", + type=lambda x: x.lower() == "true", + default=True, + metavar="true|false", + help="Merge adjacent runs with identical formatting (DOCX only, default: true)", + ) + parser.add_argument( + "--simplify-redlines", + type=lambda x: x.lower() == "true", + default=True, + metavar="true|false", + help="Merge adjacent tracked changes from same author (DOCX only, default: true)", + ) + args = parser.parse_args() + + _, message = unpack( + args.input_file, + args.output_directory, + merge_runs=args.merge_runs, + simplify_redlines=args.simplify_redlines, + ) + print(message) + + if "Error" in message: + sys.exit(1) diff --git a/.claude/skills/docx/scripts/office/validate.py b/.claude/skills/docx/scripts/office/validate.py new file mode 100644 index 0000000..03b01f6 --- /dev/null +++ b/.claude/skills/docx/scripts/office/validate.py @@ -0,0 +1,111 @@ +""" +Command line tool to validate Office document XML files against XSD schemas and tracked changes. + +Usage: + python validate.py [--original ] [--auto-repair] [--author NAME] + +The first argument can be either: +- An unpacked directory containing the Office document XML files +- A packed Office file (.docx/.pptx/.xlsx) which will be unpacked to a temp directory + +Auto-repair fixes: +- paraId/durableId values that exceed OOXML limits +- Missing xml:space="preserve" on w:t elements with whitespace +""" + +import argparse +import sys +import tempfile +import zipfile +from pathlib import Path + +from validators import DOCXSchemaValidator, PPTXSchemaValidator, RedliningValidator + + +def main(): + parser = argparse.ArgumentParser(description="Validate Office document XML files") + parser.add_argument( + "path", + help="Path to unpacked directory or packed Office file (.docx/.pptx/.xlsx)", + ) + parser.add_argument( + "--original", + required=False, + default=None, + help="Path to original file (.docx/.pptx/.xlsx). If omitted, all XSD errors are reported and redlining validation is skipped.", + ) + parser.add_argument( + "-v", + "--verbose", + action="store_true", + help="Enable verbose output", + ) + parser.add_argument( + "--auto-repair", + action="store_true", + help="Automatically repair common issues (hex IDs, whitespace preservation)", + ) + parser.add_argument( + "--author", + default="Claude", + help="Author name for redlining validation (default: Claude)", + ) + args = parser.parse_args() + + path = Path(args.path) + assert path.exists(), f"Error: {path} does not exist" + + original_file = None + if args.original: + original_file = Path(args.original) + assert original_file.is_file(), f"Error: {original_file} is not a file" + assert original_file.suffix.lower() in [".docx", ".pptx", ".xlsx"], ( + f"Error: {original_file} must be a .docx, .pptx, or .xlsx file" + ) + + file_extension = (original_file or path).suffix.lower() + assert file_extension in [".docx", ".pptx", ".xlsx"], ( + f"Error: Cannot determine file type from {path}. Use --original or provide a .docx/.pptx/.xlsx file." + ) + + if path.is_file() and path.suffix.lower() in [".docx", ".pptx", ".xlsx"]: + temp_dir = tempfile.mkdtemp() + with zipfile.ZipFile(path, "r") as zf: + zf.extractall(temp_dir) + unpacked_dir = Path(temp_dir) + else: + assert path.is_dir(), f"Error: {path} is not a directory or Office file" + unpacked_dir = path + + match file_extension: + case ".docx": + validators = [ + DOCXSchemaValidator(unpacked_dir, original_file, verbose=args.verbose), + ] + if original_file: + validators.append( + RedliningValidator(unpacked_dir, original_file, verbose=args.verbose, author=args.author) + ) + case ".pptx": + validators = [ + PPTXSchemaValidator(unpacked_dir, original_file, verbose=args.verbose), + ] + case _: + print(f"Error: Validation not supported for file type {file_extension}") + sys.exit(1) + + if args.auto_repair: + total_repairs = sum(v.repair() for v in validators) + if total_repairs: + print(f"Auto-repaired {total_repairs} issue(s)") + + success = all(v.validate() for v in validators) + + if success: + print("All validations PASSED!") + + sys.exit(0 if success else 1) + + +if __name__ == "__main__": + main() diff --git a/.claude/skills/docx/scripts/office/validators/base.py b/.claude/skills/docx/scripts/office/validators/base.py new file mode 100644 index 0000000..db4a06a --- /dev/null +++ b/.claude/skills/docx/scripts/office/validators/base.py @@ -0,0 +1,847 @@ +""" +Base validator with common validation logic for document files. +""" + +import re +from pathlib import Path + +import defusedxml.minidom +import lxml.etree + + +class BaseSchemaValidator: + + IGNORED_VALIDATION_ERRORS = [ + "hyphenationZone", + "purl.org/dc/terms", + ] + + UNIQUE_ID_REQUIREMENTS = { + "comment": ("id", "file"), + "commentrangestart": ("id", "file"), + "commentrangeend": ("id", "file"), + "bookmarkstart": ("id", "file"), + "bookmarkend": ("id", "file"), + "sldid": ("id", "file"), + "sldmasterid": ("id", "global"), + "sldlayoutid": ("id", "global"), + "cm": ("authorid", "file"), + "sheet": ("sheetid", "file"), + "definedname": ("id", "file"), + "cxnsp": ("id", "file"), + "sp": ("id", "file"), + "pic": ("id", "file"), + "grpsp": ("id", "file"), + } + + EXCLUDED_ID_CONTAINERS = { + "sectionlst", + } + + ELEMENT_RELATIONSHIP_TYPES = {} + + SCHEMA_MAPPINGS = { + "word": "ISO-IEC29500-4_2016/wml.xsd", + "ppt": "ISO-IEC29500-4_2016/pml.xsd", + "xl": "ISO-IEC29500-4_2016/sml.xsd", + "[Content_Types].xml": "ecma/fouth-edition/opc-contentTypes.xsd", + "app.xml": "ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd", + "core.xml": "ecma/fouth-edition/opc-coreProperties.xsd", + "custom.xml": "ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd", + ".rels": "ecma/fouth-edition/opc-relationships.xsd", + "people.xml": "microsoft/wml-2012.xsd", + "commentsIds.xml": "microsoft/wml-cid-2016.xsd", + "commentsExtensible.xml": "microsoft/wml-cex-2018.xsd", + "commentsExtended.xml": "microsoft/wml-2012.xsd", + "chart": "ISO-IEC29500-4_2016/dml-chart.xsd", + "theme": "ISO-IEC29500-4_2016/dml-main.xsd", + "drawing": "ISO-IEC29500-4_2016/dml-main.xsd", + } + + MC_NAMESPACE = "http://schemas.openxmlformats.org/markup-compatibility/2006" + XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace" + + PACKAGE_RELATIONSHIPS_NAMESPACE = ( + "http://schemas.openxmlformats.org/package/2006/relationships" + ) + OFFICE_RELATIONSHIPS_NAMESPACE = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships" + ) + CONTENT_TYPES_NAMESPACE = ( + "http://schemas.openxmlformats.org/package/2006/content-types" + ) + + MAIN_CONTENT_FOLDERS = {"word", "ppt", "xl"} + + OOXML_NAMESPACES = { + "http://schemas.openxmlformats.org/officeDocument/2006/math", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships", + "http://schemas.openxmlformats.org/schemaLibrary/2006/main", + "http://schemas.openxmlformats.org/drawingml/2006/main", + "http://schemas.openxmlformats.org/drawingml/2006/chart", + "http://schemas.openxmlformats.org/drawingml/2006/chartDrawing", + "http://schemas.openxmlformats.org/drawingml/2006/diagram", + "http://schemas.openxmlformats.org/drawingml/2006/picture", + "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing", + "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", + "http://schemas.openxmlformats.org/wordprocessingml/2006/main", + "http://schemas.openxmlformats.org/presentationml/2006/main", + "http://schemas.openxmlformats.org/spreadsheetml/2006/main", + "http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes", + "http://www.w3.org/XML/1998/namespace", + } + + def __init__(self, unpacked_dir, original_file=None, verbose=False): + self.unpacked_dir = Path(unpacked_dir).resolve() + self.original_file = Path(original_file) if original_file else None + self.verbose = verbose + + self.schemas_dir = Path(__file__).parent.parent / "schemas" + + patterns = ["*.xml", "*.rels"] + self.xml_files = [ + f for pattern in patterns for f in self.unpacked_dir.rglob(pattern) + ] + + if not self.xml_files: + print(f"Warning: No XML files found in {self.unpacked_dir}") + + def validate(self): + raise NotImplementedError("Subclasses must implement the validate method") + + def repair(self) -> int: + return self.repair_whitespace_preservation() + + def repair_whitespace_preservation(self) -> int: + repairs = 0 + + for xml_file in self.xml_files: + try: + content = xml_file.read_text(encoding="utf-8") + dom = defusedxml.minidom.parseString(content) + modified = False + + for elem in dom.getElementsByTagName("*"): + if elem.tagName.endswith(":t") and elem.firstChild: + text = elem.firstChild.nodeValue + if text and (text.startswith((' ', '\t')) or text.endswith((' ', '\t'))): + if elem.getAttribute("xml:space") != "preserve": + elem.setAttribute("xml:space", "preserve") + text_preview = repr(text[:30]) + "..." if len(text) > 30 else repr(text) + print(f" Repaired: {xml_file.name}: Added xml:space='preserve' to {elem.tagName}: {text_preview}") + repairs += 1 + modified = True + + if modified: + xml_file.write_bytes(dom.toxml(encoding="UTF-8")) + + except Exception: + pass + + return repairs + + def validate_xml(self): + errors = [] + + for xml_file in self.xml_files: + try: + lxml.etree.parse(str(xml_file)) + except lxml.etree.XMLSyntaxError as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {e.lineno}: {e.msg}" + ) + except Exception as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Unexpected error: {str(e)}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} XML violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All XML files are well-formed") + return True + + def validate_namespaces(self): + errors = [] + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + declared = set(root.nsmap.keys()) - {None} + + for attr_val in [ + v for k, v in root.attrib.items() if k.endswith("Ignorable") + ]: + undeclared = set(attr_val.split()) - declared + errors.extend( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Namespace '{ns}' in Ignorable but not declared" + for ns in undeclared + ) + except lxml.etree.XMLSyntaxError: + continue + + if errors: + print(f"FAILED - {len(errors)} namespace issues:") + for error in errors: + print(error) + return False + if self.verbose: + print("PASSED - All namespace prefixes properly declared") + return True + + def validate_unique_ids(self): + errors = [] + global_ids = {} + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + file_ids = {} + + mc_elements = root.xpath( + ".//mc:AlternateContent", namespaces={"mc": self.MC_NAMESPACE} + ) + for elem in mc_elements: + elem.getparent().remove(elem) + + for elem in root.iter(): + tag = ( + elem.tag.split("}")[-1].lower() + if "}" in elem.tag + else elem.tag.lower() + ) + + if tag in self.UNIQUE_ID_REQUIREMENTS: + in_excluded_container = any( + ancestor.tag.split("}")[-1].lower() in self.EXCLUDED_ID_CONTAINERS + for ancestor in elem.iterancestors() + ) + if in_excluded_container: + continue + + attr_name, scope = self.UNIQUE_ID_REQUIREMENTS[tag] + + id_value = None + for attr, value in elem.attrib.items(): + attr_local = ( + attr.split("}")[-1].lower() + if "}" in attr + else attr.lower() + ) + if attr_local == attr_name: + id_value = value + break + + if id_value is not None: + if scope == "global": + if id_value in global_ids: + prev_file, prev_line, prev_tag = global_ids[ + id_value + ] + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: Global ID '{id_value}' in <{tag}> " + f"already used in {prev_file} at line {prev_line} in <{prev_tag}>" + ) + else: + global_ids[id_value] = ( + xml_file.relative_to(self.unpacked_dir), + elem.sourceline, + tag, + ) + elif scope == "file": + key = (tag, attr_name) + if key not in file_ids: + file_ids[key] = {} + + if id_value in file_ids[key]: + prev_line = file_ids[key][id_value] + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: Duplicate {attr_name}='{id_value}' in <{tag}> " + f"(first occurrence at line {prev_line})" + ) + else: + file_ids[key][id_value] = elem.sourceline + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} ID uniqueness violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All required IDs are unique") + return True + + def validate_file_references(self): + errors = [] + + rels_files = list(self.unpacked_dir.rglob("*.rels")) + + if not rels_files: + if self.verbose: + print("PASSED - No .rels files found") + return True + + all_files = [] + for file_path in self.unpacked_dir.rglob("*"): + if ( + file_path.is_file() + and file_path.name != "[Content_Types].xml" + and not file_path.name.endswith(".rels") + ): + all_files.append(file_path.resolve()) + + all_referenced_files = set() + + if self.verbose: + print( + f"Found {len(rels_files)} .rels files and {len(all_files)} target files" + ) + + for rels_file in rels_files: + try: + rels_root = lxml.etree.parse(str(rels_file)).getroot() + + rels_dir = rels_file.parent + + referenced_files = set() + broken_refs = [] + + for rel in rels_root.findall( + ".//ns:Relationship", + namespaces={"ns": self.PACKAGE_RELATIONSHIPS_NAMESPACE}, + ): + target = rel.get("Target") + if target and not target.startswith( + ("http", "mailto:") + ): + if target.startswith("/"): + target_path = self.unpacked_dir / target.lstrip("/") + elif rels_file.name == ".rels": + target_path = self.unpacked_dir / target + else: + base_dir = rels_dir.parent + target_path = base_dir / target + + try: + target_path = target_path.resolve() + if target_path.exists() and target_path.is_file(): + referenced_files.add(target_path) + all_referenced_files.add(target_path) + else: + broken_refs.append((target, rel.sourceline)) + except (OSError, ValueError): + broken_refs.append((target, rel.sourceline)) + + if broken_refs: + rel_path = rels_file.relative_to(self.unpacked_dir) + for broken_ref, line_num in broken_refs: + errors.append( + f" {rel_path}: Line {line_num}: Broken reference to {broken_ref}" + ) + + except Exception as e: + rel_path = rels_file.relative_to(self.unpacked_dir) + errors.append(f" Error parsing {rel_path}: {e}") + + unreferenced_files = set(all_files) - all_referenced_files + + if unreferenced_files: + for unref_file in sorted(unreferenced_files): + unref_rel_path = unref_file.relative_to(self.unpacked_dir) + errors.append(f" Unreferenced file: {unref_rel_path}") + + if errors: + print(f"FAILED - Found {len(errors)} relationship validation errors:") + for error in errors: + print(error) + print( + "CRITICAL: These errors will cause the document to appear corrupt. " + + "Broken references MUST be fixed, " + + "and unreferenced files MUST be referenced or removed." + ) + return False + else: + if self.verbose: + print( + "PASSED - All references are valid and all files are properly referenced" + ) + return True + + def validate_all_relationship_ids(self): + import lxml.etree + + errors = [] + + for xml_file in self.xml_files: + if xml_file.suffix == ".rels": + continue + + rels_dir = xml_file.parent / "_rels" + rels_file = rels_dir / f"{xml_file.name}.rels" + + if not rels_file.exists(): + continue + + try: + rels_root = lxml.etree.parse(str(rels_file)).getroot() + rid_to_type = {} + + for rel in rels_root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rid = rel.get("Id") + rel_type = rel.get("Type", "") + if rid: + if rid in rid_to_type: + rels_rel_path = rels_file.relative_to(self.unpacked_dir) + errors.append( + f" {rels_rel_path}: Line {rel.sourceline}: " + f"Duplicate relationship ID '{rid}' (IDs must be unique)" + ) + type_name = ( + rel_type.split("/")[-1] if "/" in rel_type else rel_type + ) + rid_to_type[rid] = type_name + + xml_root = lxml.etree.parse(str(xml_file)).getroot() + + r_ns = self.OFFICE_RELATIONSHIPS_NAMESPACE + rid_attrs_to_check = ["id", "embed", "link"] + for elem in xml_root.iter(): + for attr_name in rid_attrs_to_check: + rid_attr = elem.get(f"{{{r_ns}}}{attr_name}") + if not rid_attr: + continue + xml_rel_path = xml_file.relative_to(self.unpacked_dir) + elem_name = ( + elem.tag.split("}")[-1] if "}" in elem.tag else elem.tag + ) + + if rid_attr not in rid_to_type: + errors.append( + f" {xml_rel_path}: Line {elem.sourceline}: " + f"<{elem_name}> r:{attr_name} references non-existent relationship '{rid_attr}' " + f"(valid IDs: {', '.join(sorted(rid_to_type.keys())[:5])}{'...' if len(rid_to_type) > 5 else ''})" + ) + elif attr_name == "id" and self.ELEMENT_RELATIONSHIP_TYPES: + expected_type = self._get_expected_relationship_type( + elem_name + ) + if expected_type: + actual_type = rid_to_type[rid_attr] + if expected_type not in actual_type.lower(): + errors.append( + f" {xml_rel_path}: Line {elem.sourceline}: " + f"<{elem_name}> references '{rid_attr}' which points to '{actual_type}' " + f"but should point to a '{expected_type}' relationship" + ) + + except Exception as e: + xml_rel_path = xml_file.relative_to(self.unpacked_dir) + errors.append(f" Error processing {xml_rel_path}: {e}") + + if errors: + print(f"FAILED - Found {len(errors)} relationship ID reference errors:") + for error in errors: + print(error) + print("\nThese ID mismatches will cause the document to appear corrupt!") + return False + else: + if self.verbose: + print("PASSED - All relationship ID references are valid") + return True + + def _get_expected_relationship_type(self, element_name): + elem_lower = element_name.lower() + + if elem_lower in self.ELEMENT_RELATIONSHIP_TYPES: + return self.ELEMENT_RELATIONSHIP_TYPES[elem_lower] + + if elem_lower.endswith("id") and len(elem_lower) > 2: + prefix = elem_lower[:-2] + if prefix.endswith("master"): + return prefix.lower() + elif prefix.endswith("layout"): + return prefix.lower() + else: + if prefix == "sld": + return "slide" + return prefix.lower() + + if elem_lower.endswith("reference") and len(elem_lower) > 9: + prefix = elem_lower[:-9] + return prefix.lower() + + return None + + def validate_content_types(self): + errors = [] + + content_types_file = self.unpacked_dir / "[Content_Types].xml" + if not content_types_file.exists(): + print("FAILED - [Content_Types].xml file not found") + return False + + try: + root = lxml.etree.parse(str(content_types_file)).getroot() + declared_parts = set() + declared_extensions = set() + + for override in root.findall( + f".//{{{self.CONTENT_TYPES_NAMESPACE}}}Override" + ): + part_name = override.get("PartName") + if part_name is not None: + declared_parts.add(part_name.lstrip("/")) + + for default in root.findall( + f".//{{{self.CONTENT_TYPES_NAMESPACE}}}Default" + ): + extension = default.get("Extension") + if extension is not None: + declared_extensions.add(extension.lower()) + + declarable_roots = { + "sld", + "sldLayout", + "sldMaster", + "presentation", + "document", + "workbook", + "worksheet", + "theme", + } + + media_extensions = { + "png": "image/png", + "jpg": "image/jpeg", + "jpeg": "image/jpeg", + "gif": "image/gif", + "bmp": "image/bmp", + "tiff": "image/tiff", + "wmf": "image/x-wmf", + "emf": "image/x-emf", + } + + all_files = list(self.unpacked_dir.rglob("*")) + all_files = [f for f in all_files if f.is_file()] + + for xml_file in self.xml_files: + path_str = str(xml_file.relative_to(self.unpacked_dir)).replace( + "\\", "/" + ) + + if any( + skip in path_str + for skip in [".rels", "[Content_Types]", "docProps/", "_rels/"] + ): + continue + + try: + root_tag = lxml.etree.parse(str(xml_file)).getroot().tag + root_name = root_tag.split("}")[-1] if "}" in root_tag else root_tag + + if root_name in declarable_roots and path_str not in declared_parts: + errors.append( + f" {path_str}: File with <{root_name}> root not declared in [Content_Types].xml" + ) + + except Exception: + continue + + for file_path in all_files: + if file_path.suffix.lower() in {".xml", ".rels"}: + continue + if file_path.name == "[Content_Types].xml": + continue + if "_rels" in file_path.parts or "docProps" in file_path.parts: + continue + + extension = file_path.suffix.lstrip(".").lower() + if extension and extension not in declared_extensions: + if extension in media_extensions: + relative_path = file_path.relative_to(self.unpacked_dir) + errors.append( + f' {relative_path}: File with extension \'{extension}\' not declared in [Content_Types].xml - should add: ' + ) + + except Exception as e: + errors.append(f" Error parsing [Content_Types].xml: {e}") + + if errors: + print(f"FAILED - Found {len(errors)} content type declaration errors:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print( + "PASSED - All content files are properly declared in [Content_Types].xml" + ) + return True + + def validate_file_against_xsd(self, xml_file, verbose=False): + xml_file = Path(xml_file).resolve() + unpacked_dir = self.unpacked_dir.resolve() + + is_valid, current_errors = self._validate_single_file_xsd( + xml_file, unpacked_dir + ) + + if is_valid is None: + return None, set() + elif is_valid: + return True, set() + + original_errors = self._get_original_file_errors(xml_file) + + assert current_errors is not None + new_errors = current_errors - original_errors + + new_errors = { + e for e in new_errors + if not any(pattern in e for pattern in self.IGNORED_VALIDATION_ERRORS) + } + + if new_errors: + if verbose: + relative_path = xml_file.relative_to(unpacked_dir) + print(f"FAILED - {relative_path}: {len(new_errors)} new error(s)") + for error in list(new_errors)[:3]: + truncated = error[:250] + "..." if len(error) > 250 else error + print(f" - {truncated}") + return False, new_errors + else: + if verbose: + print( + f"PASSED - No new errors (original had {len(current_errors)} errors)" + ) + return True, set() + + def validate_against_xsd(self): + new_errors = [] + original_error_count = 0 + valid_count = 0 + skipped_count = 0 + + for xml_file in self.xml_files: + relative_path = str(xml_file.relative_to(self.unpacked_dir)) + is_valid, new_file_errors = self.validate_file_against_xsd( + xml_file, verbose=False + ) + + if is_valid is None: + skipped_count += 1 + continue + elif is_valid and not new_file_errors: + valid_count += 1 + continue + elif is_valid: + original_error_count += 1 + valid_count += 1 + continue + + new_errors.append(f" {relative_path}: {len(new_file_errors)} new error(s)") + for error in list(new_file_errors)[:3]: + new_errors.append( + f" - {error[:250]}..." if len(error) > 250 else f" - {error}" + ) + + if self.verbose: + print(f"Validated {len(self.xml_files)} files:") + print(f" - Valid: {valid_count}") + print(f" - Skipped (no schema): {skipped_count}") + if original_error_count: + print(f" - With original errors (ignored): {original_error_count}") + print( + f" - With NEW errors: {len(new_errors) > 0 and len([e for e in new_errors if not e.startswith(' ')]) or 0}" + ) + + if new_errors: + print("\nFAILED - Found NEW validation errors:") + for error in new_errors: + print(error) + return False + else: + if self.verbose: + print("\nPASSED - No new XSD validation errors introduced") + return True + + def _get_schema_path(self, xml_file): + if xml_file.name in self.SCHEMA_MAPPINGS: + return self.schemas_dir / self.SCHEMA_MAPPINGS[xml_file.name] + + if xml_file.suffix == ".rels": + return self.schemas_dir / self.SCHEMA_MAPPINGS[".rels"] + + if "charts/" in str(xml_file) and xml_file.name.startswith("chart"): + return self.schemas_dir / self.SCHEMA_MAPPINGS["chart"] + + if "theme/" in str(xml_file) and xml_file.name.startswith("theme"): + return self.schemas_dir / self.SCHEMA_MAPPINGS["theme"] + + if xml_file.parent.name in self.MAIN_CONTENT_FOLDERS: + return self.schemas_dir / self.SCHEMA_MAPPINGS[xml_file.parent.name] + + return None + + def _clean_ignorable_namespaces(self, xml_doc): + xml_string = lxml.etree.tostring(xml_doc, encoding="unicode") + xml_copy = lxml.etree.fromstring(xml_string) + + for elem in xml_copy.iter(): + attrs_to_remove = [] + + for attr in elem.attrib: + if "{" in attr: + ns = attr.split("}")[0][1:] + if ns not in self.OOXML_NAMESPACES: + attrs_to_remove.append(attr) + + for attr in attrs_to_remove: + del elem.attrib[attr] + + self._remove_ignorable_elements(xml_copy) + + return lxml.etree.ElementTree(xml_copy) + + def _remove_ignorable_elements(self, root): + elements_to_remove = [] + + for elem in list(root): + if not hasattr(elem, "tag") or callable(elem.tag): + continue + + tag_str = str(elem.tag) + if tag_str.startswith("{"): + ns = tag_str.split("}")[0][1:] + if ns not in self.OOXML_NAMESPACES: + elements_to_remove.append(elem) + continue + + self._remove_ignorable_elements(elem) + + for elem in elements_to_remove: + root.remove(elem) + + def _preprocess_for_mc_ignorable(self, xml_doc): + root = xml_doc.getroot() + + if f"{{{self.MC_NAMESPACE}}}Ignorable" in root.attrib: + del root.attrib[f"{{{self.MC_NAMESPACE}}}Ignorable"] + + return xml_doc + + def _validate_single_file_xsd(self, xml_file, base_path): + schema_path = self._get_schema_path(xml_file) + if not schema_path: + return None, None + + try: + with open(schema_path, "rb") as xsd_file: + parser = lxml.etree.XMLParser() + xsd_doc = lxml.etree.parse( + xsd_file, parser=parser, base_url=str(schema_path) + ) + schema = lxml.etree.XMLSchema(xsd_doc) + + with open(xml_file, "r") as f: + xml_doc = lxml.etree.parse(f) + + xml_doc, _ = self._remove_template_tags_from_text_nodes(xml_doc) + xml_doc = self._preprocess_for_mc_ignorable(xml_doc) + + relative_path = xml_file.relative_to(base_path) + if ( + relative_path.parts + and relative_path.parts[0] in self.MAIN_CONTENT_FOLDERS + ): + xml_doc = self._clean_ignorable_namespaces(xml_doc) + + if schema.validate(xml_doc): + return True, set() + else: + errors = set() + for error in schema.error_log: + errors.add(error.message) + return False, errors + + except Exception as e: + return False, {str(e)} + + def _get_original_file_errors(self, xml_file): + if self.original_file is None: + return set() + + import tempfile + import zipfile + + xml_file = Path(xml_file).resolve() + unpacked_dir = self.unpacked_dir.resolve() + relative_path = xml_file.relative_to(unpacked_dir) + + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + with zipfile.ZipFile(self.original_file, "r") as zip_ref: + zip_ref.extractall(temp_path) + + original_xml_file = temp_path / relative_path + + if not original_xml_file.exists(): + return set() + + is_valid, errors = self._validate_single_file_xsd( + original_xml_file, temp_path + ) + return errors if errors else set() + + def _remove_template_tags_from_text_nodes(self, xml_doc): + warnings = [] + template_pattern = re.compile(r"\{\{[^}]*\}\}") + + xml_string = lxml.etree.tostring(xml_doc, encoding="unicode") + xml_copy = lxml.etree.fromstring(xml_string) + + def process_text_content(text, content_type): + if not text: + return text + matches = list(template_pattern.finditer(text)) + if matches: + for match in matches: + warnings.append( + f"Found template tag in {content_type}: {match.group()}" + ) + return template_pattern.sub("", text) + return text + + for elem in xml_copy.iter(): + if not hasattr(elem, "tag") or callable(elem.tag): + continue + tag_str = str(elem.tag) + if tag_str.endswith("}t") or tag_str == "t": + continue + + elem.text = process_text_content(elem.text, "text content") + elem.tail = process_text_content(elem.tail, "tail content") + + return lxml.etree.ElementTree(xml_copy), warnings + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/.claude/skills/docx/scripts/office/validators/docx.py b/.claude/skills/docx/scripts/office/validators/docx.py new file mode 100644 index 0000000..fec405e --- /dev/null +++ b/.claude/skills/docx/scripts/office/validators/docx.py @@ -0,0 +1,446 @@ +""" +Validator for Word document XML files against XSD schemas. +""" + +import random +import re +import tempfile +import zipfile + +import defusedxml.minidom +import lxml.etree + +from .base import BaseSchemaValidator + + +class DOCXSchemaValidator(BaseSchemaValidator): + + WORD_2006_NAMESPACE = "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + W14_NAMESPACE = "http://schemas.microsoft.com/office/word/2010/wordml" + W16CID_NAMESPACE = "http://schemas.microsoft.com/office/word/2016/wordml/cid" + + ELEMENT_RELATIONSHIP_TYPES = {} + + def validate(self): + if not self.validate_xml(): + return False + + all_valid = True + if not self.validate_namespaces(): + all_valid = False + + if not self.validate_unique_ids(): + all_valid = False + + if not self.validate_file_references(): + all_valid = False + + if not self.validate_content_types(): + all_valid = False + + if not self.validate_against_xsd(): + all_valid = False + + if not self.validate_whitespace_preservation(): + all_valid = False + + if not self.validate_deletions(): + all_valid = False + + if not self.validate_insertions(): + all_valid = False + + if not self.validate_all_relationship_ids(): + all_valid = False + + if not self.validate_id_constraints(): + all_valid = False + + if not self.validate_comment_markers(): + all_valid = False + + self.compare_paragraph_counts() + + return all_valid + + def validate_whitespace_preservation(self): + errors = [] + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + + for elem in root.iter(f"{{{self.WORD_2006_NAMESPACE}}}t"): + if elem.text: + text = elem.text + if re.search(r"^[ \t\n\r]", text) or re.search( + r"[ \t\n\r]$", text + ): + xml_space_attr = f"{{{self.XML_NAMESPACE}}}space" + if ( + xml_space_attr not in elem.attrib + or elem.attrib[xml_space_attr] != "preserve" + ): + text_preview = ( + repr(text)[:50] + "..." + if len(repr(text)) > 50 + else repr(text) + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: w:t element with whitespace missing xml:space='preserve': {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} whitespace preservation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All whitespace is properly preserved") + return True + + def validate_deletions(self): + errors = [] + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + namespaces = {"w": self.WORD_2006_NAMESPACE} + + for t_elem in root.xpath(".//w:del//w:t", namespaces=namespaces): + if t_elem.text: + text_preview = ( + repr(t_elem.text)[:50] + "..." + if len(repr(t_elem.text)) > 50 + else repr(t_elem.text) + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {t_elem.sourceline}: found within : {text_preview}" + ) + + for instr_elem in root.xpath( + ".//w:del//w:instrText", namespaces=namespaces + ): + text_preview = ( + repr(instr_elem.text or "")[:50] + "..." + if len(repr(instr_elem.text or "")) > 50 + else repr(instr_elem.text or "") + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {instr_elem.sourceline}: found within (use ): {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} deletion validation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - No w:t elements found within w:del elements") + return True + + def count_paragraphs_in_unpacked(self): + count = 0 + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + paragraphs = root.findall(f".//{{{self.WORD_2006_NAMESPACE}}}p") + count = len(paragraphs) + except Exception as e: + print(f"Error counting paragraphs in unpacked document: {e}") + + return count + + def count_paragraphs_in_original(self): + original = self.original_file + if original is None: + return 0 + + count = 0 + + try: + with tempfile.TemporaryDirectory() as temp_dir: + with zipfile.ZipFile(original, "r") as zip_ref: + zip_ref.extractall(temp_dir) + + doc_xml_path = temp_dir + "/word/document.xml" + root = lxml.etree.parse(doc_xml_path).getroot() + + paragraphs = root.findall(f".//{{{self.WORD_2006_NAMESPACE}}}p") + count = len(paragraphs) + + except Exception as e: + print(f"Error counting paragraphs in original document: {e}") + + return count + + def validate_insertions(self): + errors = [] + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + namespaces = {"w": self.WORD_2006_NAMESPACE} + + invalid_elements = root.xpath( + ".//w:ins//w:delText[not(ancestor::w:del)]", namespaces=namespaces + ) + + for elem in invalid_elements: + text_preview = ( + repr(elem.text or "")[:50] + "..." + if len(repr(elem.text or "")) > 50 + else repr(elem.text or "") + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: within : {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} insertion validation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - No w:delText elements within w:ins elements") + return True + + def compare_paragraph_counts(self): + original_count = self.count_paragraphs_in_original() + new_count = self.count_paragraphs_in_unpacked() + + diff = new_count - original_count + diff_str = f"+{diff}" if diff > 0 else str(diff) + print(f"\nParagraphs: {original_count} → {new_count} ({diff_str})") + + def _parse_id_value(self, val: str, base: int = 16) -> int: + return int(val, base) + + def validate_id_constraints(self): + errors = [] + para_id_attr = f"{{{self.W14_NAMESPACE}}}paraId" + durable_id_attr = f"{{{self.W16CID_NAMESPACE}}}durableId" + + for xml_file in self.xml_files: + try: + for elem in lxml.etree.parse(str(xml_file)).iter(): + if val := elem.get(para_id_attr): + if self._parse_id_value(val, base=16) >= 0x80000000: + errors.append( + f" {xml_file.name}:{elem.sourceline}: paraId={val} >= 0x80000000" + ) + + if val := elem.get(durable_id_attr): + if xml_file.name == "numbering.xml": + try: + if self._parse_id_value(val, base=10) >= 0x7FFFFFFF: + errors.append( + f" {xml_file.name}:{elem.sourceline}: " + f"durableId={val} >= 0x7FFFFFFF" + ) + except ValueError: + errors.append( + f" {xml_file.name}:{elem.sourceline}: " + f"durableId={val} must be decimal in numbering.xml" + ) + else: + if self._parse_id_value(val, base=16) >= 0x7FFFFFFF: + errors.append( + f" {xml_file.name}:{elem.sourceline}: " + f"durableId={val} >= 0x7FFFFFFF" + ) + except Exception: + pass + + if errors: + print(f"FAILED - {len(errors)} ID constraint violations:") + for e in errors: + print(e) + elif self.verbose: + print("PASSED - All paraId/durableId values within constraints") + return not errors + + def validate_comment_markers(self): + errors = [] + + document_xml = None + comments_xml = None + for xml_file in self.xml_files: + if xml_file.name == "document.xml" and "word" in str(xml_file): + document_xml = xml_file + elif xml_file.name == "comments.xml": + comments_xml = xml_file + + if not document_xml: + if self.verbose: + print("PASSED - No document.xml found (skipping comment validation)") + return True + + try: + doc_root = lxml.etree.parse(str(document_xml)).getroot() + namespaces = {"w": self.WORD_2006_NAMESPACE} + + range_starts = { + elem.get(f"{{{self.WORD_2006_NAMESPACE}}}id") + for elem in doc_root.xpath( + ".//w:commentRangeStart", namespaces=namespaces + ) + } + range_ends = { + elem.get(f"{{{self.WORD_2006_NAMESPACE}}}id") + for elem in doc_root.xpath( + ".//w:commentRangeEnd", namespaces=namespaces + ) + } + references = { + elem.get(f"{{{self.WORD_2006_NAMESPACE}}}id") + for elem in doc_root.xpath( + ".//w:commentReference", namespaces=namespaces + ) + } + + orphaned_ends = range_ends - range_starts + for comment_id in sorted( + orphaned_ends, key=lambda x: int(x) if x and x.isdigit() else 0 + ): + errors.append( + f' document.xml: commentRangeEnd id="{comment_id}" has no matching commentRangeStart' + ) + + orphaned_starts = range_starts - range_ends + for comment_id in sorted( + orphaned_starts, key=lambda x: int(x) if x and x.isdigit() else 0 + ): + errors.append( + f' document.xml: commentRangeStart id="{comment_id}" has no matching commentRangeEnd' + ) + + comment_ids = set() + if comments_xml and comments_xml.exists(): + comments_root = lxml.etree.parse(str(comments_xml)).getroot() + comment_ids = { + elem.get(f"{{{self.WORD_2006_NAMESPACE}}}id") + for elem in comments_root.xpath( + ".//w:comment", namespaces=namespaces + ) + } + + marker_ids = range_starts | range_ends | references + invalid_refs = marker_ids - comment_ids + for comment_id in sorted( + invalid_refs, key=lambda x: int(x) if x and x.isdigit() else 0 + ): + if comment_id: + errors.append( + f' document.xml: marker id="{comment_id}" references non-existent comment' + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append(f" Error parsing XML: {e}") + + if errors: + print(f"FAILED - {len(errors)} comment marker violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All comment markers properly paired") + return True + + def repair(self) -> int: + repairs = super().repair() + repairs += self.repair_durableId() + return repairs + + def repair_durableId(self) -> int: + repairs = 0 + + for xml_file in self.xml_files: + try: + content = xml_file.read_text(encoding="utf-8") + dom = defusedxml.minidom.parseString(content) + modified = False + + for elem in dom.getElementsByTagName("*"): + if not elem.hasAttribute("w16cid:durableId"): + continue + + durable_id = elem.getAttribute("w16cid:durableId") + needs_repair = False + + if xml_file.name == "numbering.xml": + try: + needs_repair = ( + self._parse_id_value(durable_id, base=10) >= 0x7FFFFFFF + ) + except ValueError: + needs_repair = True + else: + try: + needs_repair = ( + self._parse_id_value(durable_id, base=16) >= 0x7FFFFFFF + ) + except ValueError: + needs_repair = True + + if needs_repair: + value = random.randint(1, 0x7FFFFFFE) + if xml_file.name == "numbering.xml": + new_id = str(value) + else: + new_id = f"{value:08X}" + + elem.setAttribute("w16cid:durableId", new_id) + print( + f" Repaired: {xml_file.name}: durableId {durable_id} → {new_id}" + ) + repairs += 1 + modified = True + + if modified: + xml_file.write_bytes(dom.toxml(encoding="UTF-8")) + + except Exception: + pass + + return repairs + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/.claude/skills/docx/scripts/office/validators/pptx.py b/.claude/skills/docx/scripts/office/validators/pptx.py new file mode 100644 index 0000000..09842aa --- /dev/null +++ b/.claude/skills/docx/scripts/office/validators/pptx.py @@ -0,0 +1,275 @@ +""" +Validator for PowerPoint presentation XML files against XSD schemas. +""" + +import re + +from .base import BaseSchemaValidator + + +class PPTXSchemaValidator(BaseSchemaValidator): + + PRESENTATIONML_NAMESPACE = ( + "http://schemas.openxmlformats.org/presentationml/2006/main" + ) + + ELEMENT_RELATIONSHIP_TYPES = { + "sldid": "slide", + "sldmasterid": "slidemaster", + "notesmasterid": "notesmaster", + "sldlayoutid": "slidelayout", + "themeid": "theme", + "tablestyleid": "tablestyles", + } + + def validate(self): + if not self.validate_xml(): + return False + + all_valid = True + if not self.validate_namespaces(): + all_valid = False + + if not self.validate_unique_ids(): + all_valid = False + + if not self.validate_uuid_ids(): + all_valid = False + + if not self.validate_file_references(): + all_valid = False + + if not self.validate_slide_layout_ids(): + all_valid = False + + if not self.validate_content_types(): + all_valid = False + + if not self.validate_against_xsd(): + all_valid = False + + if not self.validate_notes_slide_references(): + all_valid = False + + if not self.validate_all_relationship_ids(): + all_valid = False + + if not self.validate_no_duplicate_slide_layouts(): + all_valid = False + + return all_valid + + def validate_uuid_ids(self): + import lxml.etree + + errors = [] + uuid_pattern = re.compile( + r"^[\{\(]?[0-9A-Fa-f]{8}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{12}[\}\)]?$" + ) + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + + for elem in root.iter(): + for attr, value in elem.attrib.items(): + attr_name = attr.split("}")[-1].lower() + if attr_name == "id" or attr_name.endswith("id"): + if self._looks_like_uuid(value): + if not uuid_pattern.match(value): + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: ID '{value}' appears to be a UUID but contains invalid hex characters" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} UUID ID validation errors:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All UUID-like IDs contain valid hex values") + return True + + def _looks_like_uuid(self, value): + clean_value = value.strip("{}()").replace("-", "") + return len(clean_value) == 32 and all(c.isalnum() for c in clean_value) + + def validate_slide_layout_ids(self): + import lxml.etree + + errors = [] + + slide_masters = list(self.unpacked_dir.glob("ppt/slideMasters/*.xml")) + + if not slide_masters: + if self.verbose: + print("PASSED - No slide masters found") + return True + + for slide_master in slide_masters: + try: + root = lxml.etree.parse(str(slide_master)).getroot() + + rels_file = slide_master.parent / "_rels" / f"{slide_master.name}.rels" + + if not rels_file.exists(): + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: " + f"Missing relationships file: {rels_file.relative_to(self.unpacked_dir)}" + ) + continue + + rels_root = lxml.etree.parse(str(rels_file)).getroot() + + valid_layout_rids = set() + for rel in rels_root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rel_type = rel.get("Type", "") + if "slideLayout" in rel_type: + valid_layout_rids.add(rel.get("Id")) + + for sld_layout_id in root.findall( + f".//{{{self.PRESENTATIONML_NAMESPACE}}}sldLayoutId" + ): + r_id = sld_layout_id.get( + f"{{{self.OFFICE_RELATIONSHIPS_NAMESPACE}}}id" + ) + layout_id = sld_layout_id.get("id") + + if r_id and r_id not in valid_layout_rids: + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: " + f"Line {sld_layout_id.sourceline}: sldLayoutId with id='{layout_id}' " + f"references r:id='{r_id}' which is not found in slide layout relationships" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} slide layout ID validation errors:") + for error in errors: + print(error) + print( + "Remove invalid references or add missing slide layouts to the relationships file." + ) + return False + else: + if self.verbose: + print("PASSED - All slide layout IDs reference valid slide layouts") + return True + + def validate_no_duplicate_slide_layouts(self): + import lxml.etree + + errors = [] + slide_rels_files = list(self.unpacked_dir.glob("ppt/slides/_rels/*.xml.rels")) + + for rels_file in slide_rels_files: + try: + root = lxml.etree.parse(str(rels_file)).getroot() + + layout_rels = [ + rel + for rel in root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ) + if "slideLayout" in rel.get("Type", "") + ] + + if len(layout_rels) > 1: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: has {len(layout_rels)} slideLayout references" + ) + + except Exception as e: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print("FAILED - Found slides with duplicate slideLayout references:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All slides have exactly one slideLayout reference") + return True + + def validate_notes_slide_references(self): + import lxml.etree + + errors = [] + notes_slide_references = {} + + slide_rels_files = list(self.unpacked_dir.glob("ppt/slides/_rels/*.xml.rels")) + + if not slide_rels_files: + if self.verbose: + print("PASSED - No slide relationship files found") + return True + + for rels_file in slide_rels_files: + try: + root = lxml.etree.parse(str(rels_file)).getroot() + + for rel in root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rel_type = rel.get("Type", "") + if "notesSlide" in rel_type: + target = rel.get("Target", "") + if target: + normalized_target = target.replace("../", "") + + slide_name = rels_file.stem.replace( + ".xml", "" + ) + + if normalized_target not in notes_slide_references: + notes_slide_references[normalized_target] = [] + notes_slide_references[normalized_target].append( + (slide_name, rels_file) + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + for target, references in notes_slide_references.items(): + if len(references) > 1: + slide_names = [ref[0] for ref in references] + errors.append( + f" Notes slide '{target}' is referenced by multiple slides: {', '.join(slide_names)}" + ) + for slide_name, rels_file in references: + errors.append(f" - {rels_file.relative_to(self.unpacked_dir)}") + + if errors: + print( + f"FAILED - Found {len([e for e in errors if not e.startswith(' ')])} notes slide reference validation errors:" + ) + for error in errors: + print(error) + print("Each slide may optionally have its own slide file.") + return False + else: + if self.verbose: + print("PASSED - All notes slide references are unique") + return True + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/.claude/skills/docx/scripts/office/validators/redlining.py b/.claude/skills/docx/scripts/office/validators/redlining.py new file mode 100644 index 0000000..71c81b6 --- /dev/null +++ b/.claude/skills/docx/scripts/office/validators/redlining.py @@ -0,0 +1,247 @@ +""" +Validator for tracked changes in Word documents. +""" + +import subprocess +import tempfile +import zipfile +from pathlib import Path + + +class RedliningValidator: + + def __init__(self, unpacked_dir, original_docx, verbose=False, author="Claude"): + self.unpacked_dir = Path(unpacked_dir) + self.original_docx = Path(original_docx) + self.verbose = verbose + self.author = author + self.namespaces = { + "w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + } + + def repair(self) -> int: + return 0 + + def validate(self): + modified_file = self.unpacked_dir / "word" / "document.xml" + if not modified_file.exists(): + print(f"FAILED - Modified document.xml not found at {modified_file}") + return False + + try: + import xml.etree.ElementTree as ET + + tree = ET.parse(modified_file) + root = tree.getroot() + + del_elements = root.findall(".//w:del", self.namespaces) + ins_elements = root.findall(".//w:ins", self.namespaces) + + author_del_elements = [ + elem + for elem in del_elements + if elem.get(f"{{{self.namespaces['w']}}}author") == self.author + ] + author_ins_elements = [ + elem + for elem in ins_elements + if elem.get(f"{{{self.namespaces['w']}}}author") == self.author + ] + + if not author_del_elements and not author_ins_elements: + if self.verbose: + print(f"PASSED - No tracked changes by {self.author} found.") + return True + + except Exception: + pass + + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + try: + with zipfile.ZipFile(self.original_docx, "r") as zip_ref: + zip_ref.extractall(temp_path) + except Exception as e: + print(f"FAILED - Error unpacking original docx: {e}") + return False + + original_file = temp_path / "word" / "document.xml" + if not original_file.exists(): + print( + f"FAILED - Original document.xml not found in {self.original_docx}" + ) + return False + + try: + import xml.etree.ElementTree as ET + + modified_tree = ET.parse(modified_file) + modified_root = modified_tree.getroot() + original_tree = ET.parse(original_file) + original_root = original_tree.getroot() + except ET.ParseError as e: + print(f"FAILED - Error parsing XML files: {e}") + return False + + self._remove_author_tracked_changes(original_root) + self._remove_author_tracked_changes(modified_root) + + modified_text = self._extract_text_content(modified_root) + original_text = self._extract_text_content(original_root) + + if modified_text != original_text: + error_message = self._generate_detailed_diff( + original_text, modified_text + ) + print(error_message) + return False + + if self.verbose: + print(f"PASSED - All changes by {self.author} are properly tracked") + return True + + def _generate_detailed_diff(self, original_text, modified_text): + error_parts = [ + f"FAILED - Document text doesn't match after removing {self.author}'s tracked changes", + "", + "Likely causes:", + " 1. Modified text inside another author's or tags", + " 2. Made edits without proper tracked changes", + " 3. Didn't nest inside when deleting another's insertion", + "", + "For pre-redlined documents, use correct patterns:", + " - To reject another's INSERTION: Nest inside their ", + " - To restore another's DELETION: Add new AFTER their ", + "", + ] + + git_diff = self._get_git_word_diff(original_text, modified_text) + if git_diff: + error_parts.extend(["Differences:", "============", git_diff]) + else: + error_parts.append("Unable to generate word diff (git not available)") + + return "\n".join(error_parts) + + def _get_git_word_diff(self, original_text, modified_text): + try: + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + original_file = temp_path / "original.txt" + modified_file = temp_path / "modified.txt" + + original_file.write_text(original_text, encoding="utf-8") + modified_file.write_text(modified_text, encoding="utf-8") + + result = subprocess.run( + [ + "git", + "diff", + "--word-diff=plain", + "--word-diff-regex=.", + "-U0", + "--no-index", + str(original_file), + str(modified_file), + ], + capture_output=True, + text=True, + ) + + if result.stdout.strip(): + lines = result.stdout.split("\n") + content_lines = [] + in_content = False + for line in lines: + if line.startswith("@@"): + in_content = True + continue + if in_content and line.strip(): + content_lines.append(line) + + if content_lines: + return "\n".join(content_lines) + + result = subprocess.run( + [ + "git", + "diff", + "--word-diff=plain", + "-U0", + "--no-index", + str(original_file), + str(modified_file), + ], + capture_output=True, + text=True, + ) + + if result.stdout.strip(): + lines = result.stdout.split("\n") + content_lines = [] + in_content = False + for line in lines: + if line.startswith("@@"): + in_content = True + continue + if in_content and line.strip(): + content_lines.append(line) + return "\n".join(content_lines) + + except (subprocess.CalledProcessError, FileNotFoundError, Exception): + pass + + return None + + def _remove_author_tracked_changes(self, root): + ins_tag = f"{{{self.namespaces['w']}}}ins" + del_tag = f"{{{self.namespaces['w']}}}del" + author_attr = f"{{{self.namespaces['w']}}}author" + + for parent in root.iter(): + to_remove = [] + for child in parent: + if child.tag == ins_tag and child.get(author_attr) == self.author: + to_remove.append(child) + for elem in to_remove: + parent.remove(elem) + + deltext_tag = f"{{{self.namespaces['w']}}}delText" + t_tag = f"{{{self.namespaces['w']}}}t" + + for parent in root.iter(): + to_process = [] + for child in parent: + if child.tag == del_tag and child.get(author_attr) == self.author: + to_process.append((child, list(parent).index(child))) + + for del_elem, del_index in reversed(to_process): + for elem in del_elem.iter(): + if elem.tag == deltext_tag: + elem.tag = t_tag + + for child in reversed(list(del_elem)): + parent.insert(del_index, child) + parent.remove(del_elem) + + def _extract_text_content(self, root): + p_tag = f"{{{self.namespaces['w']}}}p" + t_tag = f"{{{self.namespaces['w']}}}t" + + paragraphs = [] + for p_elem in root.findall(f".//{p_tag}"): + text_parts = [] + for t_elem in p_elem.findall(f".//{t_tag}"): + if t_elem.text: + text_parts.append(t_elem.text) + paragraph_text = "".join(text_parts) + if paragraph_text: + paragraphs.append(paragraph_text) + + return "\n".join(paragraphs) + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/.claude/skills/docx/scripts/templates/comments.xml b/.claude/skills/docx/scripts/templates/comments.xml new file mode 100644 index 0000000..cd01a7d --- /dev/null +++ b/.claude/skills/docx/scripts/templates/comments.xml @@ -0,0 +1,3 @@ + + + diff --git a/.claude/skills/docx/scripts/templates/commentsExtended.xml b/.claude/skills/docx/scripts/templates/commentsExtended.xml new file mode 100644 index 0000000..411003c --- /dev/null +++ b/.claude/skills/docx/scripts/templates/commentsExtended.xml @@ -0,0 +1,3 @@ + + + diff --git a/.claude/skills/docx/scripts/templates/commentsExtensible.xml b/.claude/skills/docx/scripts/templates/commentsExtensible.xml new file mode 100644 index 0000000..f5572d7 --- /dev/null +++ b/.claude/skills/docx/scripts/templates/commentsExtensible.xml @@ -0,0 +1,3 @@ + + + diff --git a/.claude/skills/docx/scripts/templates/commentsIds.xml b/.claude/skills/docx/scripts/templates/commentsIds.xml new file mode 100644 index 0000000..32f1629 --- /dev/null +++ b/.claude/skills/docx/scripts/templates/commentsIds.xml @@ -0,0 +1,3 @@ + + + diff --git a/.claude/skills/docx/scripts/templates/people.xml b/.claude/skills/docx/scripts/templates/people.xml new file mode 100644 index 0000000..3803d2d --- /dev/null +++ b/.claude/skills/docx/scripts/templates/people.xml @@ -0,0 +1,3 @@ + + + diff --git a/Project-Assignment.docx b/Project-Assignment.docx index 3512a337f88ccf398095e26e7b7831630cda3c47..261c5b28333a66339b977f3efed0ed1279d203c2 100644 GIT binary patch delta 30602 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 M8rTFAu)2o$KNjtq`Tzg` delta 30246 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 z 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 ZwV2YQ?=wsQfED~T22Rz7U<&}?{{Z7-JJtXI literal 0 HcmV?d00001 diff --git a/skills-lock.json b/skills-lock.json new file mode 100644 index 0000000..2d1af6a --- /dev/null +++ b/skills-lock.json @@ -0,0 +1,10 @@ +{ + "version": 1, + "skills": { + "docx": { + "source": "anthropics/skills", + "sourceType": "github", + "computedHash": "e77d0c8eb87b9bffe4234d8bdbd805f5be1da6f054bfa4fecfc006e054f59d66" + } + } +} diff --git a/~$oject-Assignment.filled.docx b/~$oject-Assignment.filled.docx new file mode 100644 index 0000000000000000000000000000000000000000..b0ab4029454a2c80f03c527321a4e219ac5b2e09 GIT binary patch literal 162 zcmZSg&dkot%`ajg39vJGGh{Mk192`xJ_AUzZ}e?O28IU}=Z|g$@?i9RX%-Z7nV>wF jxSq*fr?X4$Fb1_eyXF=Nl-&N!2gJY712O064EHDiOZy>- literal 0 HcmV?d00001 diff --git a/~WRL0003.tmp b/~WRL0003.tmp new file mode 100644 index 0000000000000000000000000000000000000000..3512a337f88ccf398095e26e7b7831630cda3c47 GIT binary patch literal 158082 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

i0CW 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 Mk