@prismer/runtime 2.2.55 → 2.2.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +574 -0
- package/apc/skills/releasing-test/SKILL.md +9 -0
- package/built-in-skills/agent-coordination/SKILL.md +21 -4
- package/built-in-skills/agent-meta/SKILL.md +11 -0
- package/built-in-skills/assets/SKILL.md +1 -1
- package/built-in-skills/canvas-design/SKILL.md +3 -3
- package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/InstrumentSerif-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/LICENSE-SOURCES.md +16 -0
- package/built-in-skills/claim-agent-ownership/SKILL.md +7 -3
- package/built-in-skills/claude-api/SKILL.md +1 -1
- package/built-in-skills/claude-api/python/claude-api/README.md +2 -2
- package/built-in-skills/claude-api/python/claude-api/tool-use.md +9 -5
- package/built-in-skills/claude-api/python/managed-agents/README.md +11 -1
- package/built-in-skills/claude-api/shared/error-codes.md +4 -4
- package/built-in-skills/claude-api/shared/managed-agents-client-patterns.md +4 -2
- package/built-in-skills/claude-api/shared/managed-agents-core.md +1 -2
- package/built-in-skills/claude-api/shared/managed-agents-events.md +41 -22
- package/built-in-skills/claude-api/shared/managed-agents-multiagent.md +5 -3
- package/built-in-skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +1 -1
- package/built-in-skills/claude-api/shared/managed-agents-tools.md +2 -3
- package/built-in-skills/claude-api/shared/model-migration.md +3 -3
- package/built-in-skills/claude-api/shared/models.md +1 -1
- package/built-in-skills/claude-api/typescript/claude-api/batches.md +1 -1
- package/built-in-skills/claude-api/typescript/claude-api/files-api.md +3 -1
- package/built-in-skills/claude-api/typescript/claude-api/tool-use.md +8 -2
- package/built-in-skills/claude-api/typescript/managed-agents/README.md +8 -2
- package/built-in-skills/codebase-design/SKILL.md +15 -1
- package/built-in-skills/codebase-design/references/requesting-code-review/GUIDE.md +291 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/LICENSE.superpowers +21 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/NOTICE.md +37 -0
- package/built-in-skills/codebase-design/references/sdlc-review/GUIDE.md +130 -0
- package/built-in-skills/codebase-design/references/sdlc-review/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/sdlc-review/NOTICE.md +17 -0
- package/built-in-skills/codebase-design/references/simplify-code/GUIDE.md +269 -0
- package/built-in-skills/codebase-design/references/simplify-code/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/simplify-code/NOTICE.md +37 -0
- package/built-in-skills/competitor-intelligence/LICENSE +21 -0
- package/built-in-skills/competitor-intelligence/NOTICE.md +6 -0
- package/built-in-skills/competitor-intelligence/SKILL.md +125 -0
- package/built-in-skills/competitor-intelligence/scripts/watch_state.py +160 -0
- package/built-in-skills/conversation-compaction/SKILL.md +3 -0
- package/built-in-skills/council-creator/SKILL.md +4 -3
- package/built-in-skills/diagnosing-bugs/SKILL.md +12 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/GUIDE.md +64 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/NOTICE.md +17 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/GUIDE.md +410 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/LICENSE.superpowers +21 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/NOTICE.md +37 -0
- package/built-in-skills/doc-coauthoring/SKILL.md +6 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/GUIDE.md +647 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/LICENSE +21 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/LICENSE.hermes +21 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/PROVENANCE.md +7 -0
- package/built-in-skills/document-actions/LICENSE +21 -0
- package/built-in-skills/document-actions/NOTICE.md +21 -0
- package/built-in-skills/document-actions/SKILL.md +46 -0
- package/built-in-skills/evidence-citations/LICENSE +21 -0
- package/built-in-skills/evidence-citations/NOTICE.md +21 -0
- package/built-in-skills/evidence-citations/SKILL.md +46 -0
- package/built-in-skills/evidence-citations/references/citation-formats.md +68 -0
- package/built-in-skills/evidence-citations/references/grounding-rationale.md +64 -0
- package/built-in-skills/evidence-citations/scripts/sources.py +720 -0
- package/built-in-skills/frontend-design/SKILL.md +6 -0
- package/built-in-skills/frontend-design/references/claude-design/GUIDE.md +650 -0
- package/built-in-skills/frontend-design/references/claude-design/LICENSE +21 -0
- package/built-in-skills/frontend-design/references/claude-design/LICENSE.hermes +21 -0
- package/built-in-skills/frontend-design/references/claude-design/PROVENANCE.md +7 -0
- package/built-in-skills/image-generate/SKILL.md +5 -0
- package/built-in-skills/image-generate/scripts/generate-and-deliver.mjs +24 -3
- package/built-in-skills/mcp-builder/reference/evaluation.md +11 -2
- package/built-in-skills/mcp-builder/reference/node_mcp_server.md +34 -5
- package/built-in-skills/mcp-builder/reference/python_mcp_server.md +6 -2
- package/built-in-skills/mcp-builder/scripts/connections.py +1 -1
- package/built-in-skills/mcp-builder/scripts/evaluation.py +52 -34
- package/built-in-skills/mcp-builder/scripts/requirements.txt +2 -2
- package/built-in-skills/meeting-actions/LICENSE +21 -0
- package/built-in-skills/meeting-actions/NOTICE.md +21 -0
- package/built-in-skills/meeting-actions/SKILL.md +48 -0
- package/built-in-skills/memory/SKILL.md +27 -3
- package/built-in-skills/memory/references/llm-wiki/GUIDE.md +468 -0
- package/built-in-skills/memory/references/llm-wiki/LICENSE +21 -0
- package/built-in-skills/memory/references/llm-wiki/NOTICE.md +4 -0
- package/built-in-skills/memory/references/llm-wiki/scripts/lint_wiki.py +84 -0
- package/built-in-skills/memory/references/llm-wiki/scripts/requirements.txt +1 -0
- package/built-in-skills/memory/references/llm-wiki/templates/SCHEMA.md +19 -0
- package/built-in-skills/memory/references/llm-wiki/templates/index.md +9 -0
- package/built-in-skills/memory/references/llm-wiki/templates/log.md +4 -0
- package/built-in-skills/memory-dream/SKILL.md +8 -15
- package/built-in-skills/memory-import/SKILL.md +51 -0
- package/built-in-skills/office-artifacts/NOTICE.md +15 -0
- package/built-in-skills/office-artifacts/SKILL.md +20 -0
- package/built-in-skills/office-artifacts/references/RESOURCE-LIMITS.md +44 -0
- package/built-in-skills/office-artifacts/references/docx/GUIDE.md +196 -0
- package/built-in-skills/office-artifacts/references/docx/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/docx/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/docx/references/revisions-and-comments.md +88 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_comments.py +292 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_common.py +93 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_create.py +177 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_edit.py +250 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_read.py +169 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_revisions.py +149 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_template.py +70 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_validate.py +155 -0
- package/built-in-skills/office-artifacts/references/docx/tests/test_docx_skill.py +525 -0
- package/built-in-skills/office-artifacts/references/pdf/GUIDE.md +125 -0
- package/built-in-skills/office-artifacts/references/pdf/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/pdf/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/pdf/references/forms.md +99 -0
- package/built-in-skills/office-artifacts/references/pdf/references/nano-pdf-editing.md +40 -0
- package/built-in-skills/office-artifacts/references/pdf/references/ocr-extraction.md +165 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/_raster.py +87 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/extract_marker.py +95 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/extract_pymupdf.py +107 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_create.py +153 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_fill_form.py +97 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_form_layout.py +168 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_make_form.py +145 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_merge.py +50 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_meta.py +123 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_page_image.py +101 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_read.py +153 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_secure.py +71 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_split.py +86 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_stamp.py +145 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_watermark.py +51 -0
- package/built-in-skills/office-artifacts/references/pdf/tests/test_pdf_skill.py +414 -0
- package/built-in-skills/office-artifacts/references/powerpoint/GUIDE.md +220 -0
- package/built-in-skills/office-artifacts/references/powerpoint/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/powerpoint/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_create.py +214 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_edit.py +442 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_from_template.py +88 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_read.py +131 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_render.py +104 -0
- package/built-in-skills/office-artifacts/references/powerpoint/tests/test_powerpoint_skill.py +478 -0
- package/built-in-skills/office-artifacts/references/xlsx/GUIDE.md +196 -0
- package/built-in-skills/office-artifacts/references/xlsx/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/xlsx/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/xlsx/references/restructuring.md +74 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/csv_to_xlsx.py +108 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_create.py +259 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_edit.py +269 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_read.py +160 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_recalc.py +111 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_restructure.py +418 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_to_csv.py +69 -0
- package/built-in-skills/office-artifacts/references/xlsx/tests/test_xlsx_skill.py +542 -0
- package/built-in-skills/office-artifacts/tests/test_resource_regressions.py +272 -0
- package/built-in-skills/persona-generator/SKILL.md +9 -9
- package/built-in-skills/pkf-svg/SKILL.md +5 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/GUIDE.md +148 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/LICENSE +21 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/LICENSE.hermes +21 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/PROVENANCE.md +7 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/templates/template.html +345 -0
- package/built-in-skills/pkf-writing/SKILL.md +36 -14
- package/built-in-skills/prismer-airtable/LICENSE +21 -0
- package/built-in-skills/prismer-airtable/NOTICE.md +11 -0
- package/built-in-skills/prismer-airtable/SKILL.md +248 -0
- package/built-in-skills/prismer-airtable/scripts/airtable_client.py +76 -0
- package/built-in-skills/prismer-apple-notes/LICENSE +21 -0
- package/built-in-skills/prismer-apple-notes/NOTICE.md +17 -0
- package/built-in-skills/prismer-apple-notes/SKILL.md +118 -0
- package/built-in-skills/prismer-apple-notes/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-apple-reminders/LICENSE +21 -0
- package/built-in-skills/prismer-apple-reminders/NOTICE.md +17 -0
- package/built-in-skills/prismer-apple-reminders/SKILL.md +155 -0
- package/built-in-skills/prismer-apple-reminders/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-ascii-video/LICENSE +21 -0
- package/built-in-skills/prismer-ascii-video/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-ascii-video/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-ascii-video/README.md +290 -0
- package/built-in-skills/prismer-ascii-video/SKILL.md +252 -0
- package/built-in-skills/prismer-ascii-video/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-ascii-video/references/architecture.md +807 -0
- package/built-in-skills/prismer-ascii-video/references/composition.md +900 -0
- package/built-in-skills/prismer-ascii-video/references/effects.md +1877 -0
- package/built-in-skills/prismer-ascii-video/references/inputs.md +693 -0
- package/built-in-skills/prismer-ascii-video/references/optimization.md +688 -0
- package/built-in-skills/prismer-ascii-video/references/scenes.md +1018 -0
- package/built-in-skills/prismer-ascii-video/references/shaders.md +1408 -0
- package/built-in-skills/prismer-ascii-video/references/troubleshooting.md +360 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE +21 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE.origin +21 -0
- package/built-in-skills/prismer-baoyu-infographic/PORT_NOTES.md +37 -0
- package/built-in-skills/prismer-baoyu-infographic/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-baoyu-infographic/SKILL.md +240 -0
- package/built-in-skills/prismer-baoyu-infographic/references/analysis-framework.md +182 -0
- package/built-in-skills/prismer-baoyu-infographic/references/base-prompt.md +43 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/bento-grid.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/binary-comparison.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/bridge.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/circular-flow.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/comic-strip.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/comparison-matrix.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/dashboard.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/dense-modules.md +72 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/funnel.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/hierarchical-layers.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/hub-spoke.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/iceberg.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/isometric-map.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/jigsaw.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/linear-progression.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/periodic-table.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/story-mountain.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/structural-breakdown.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/tree-branching.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/venn-diagram.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/winding-roadmap.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/structured-content-template.md +244 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/aged-academia.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/bold-graphic.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/chalkboard.md +61 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/claymation.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/corporate-memphis.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/craft-handmade.md +44 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/cyberpunk-neon.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/hand-drawn-edu.md +63 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/ikea-manual.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/kawaii.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/knolling.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/lego-brick.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/morandi-journal.md +60 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/origami.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/pixel-art.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/pop-laboratory.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/retro-pop-grid.md +47 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/storybook-watercolor.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/subway-map.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/technical-schematic.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/ui-wireframe.md +29 -0
- package/built-in-skills/prismer-blocked-page-recovery/LICENSE +21 -0
- package/built-in-skills/prismer-blocked-page-recovery/NOTICE.md +17 -0
- package/built-in-skills/prismer-blocked-page-recovery/SKILL.md +158 -0
- package/built-in-skills/prismer-blocked-page-recovery/scripts/recover_page.py +311 -0
- package/built-in-skills/prismer-box/LICENSE +21 -0
- package/built-in-skills/prismer-box/NOTICE.md +11 -0
- package/built-in-skills/prismer-box/SKILL.md +147 -0
- package/built-in-skills/prismer-box/references/bulk-operations.md +43 -0
- package/built-in-skills/prismer-box/references/cli-guide.md +133 -0
- package/built-in-skills/prismer-box/references/content-workflows.md +86 -0
- package/built-in-skills/prismer-box/references/hubs.md +77 -0
- package/built-in-skills/prismer-box/references/oauth-setup.md +92 -0
- package/built-in-skills/prismer-box/references/rest-api.md +37 -0
- package/built-in-skills/prismer-box/references/sdk-development.md +85 -0
- package/built-in-skills/prismer-box/references/search-and-ai.md +147 -0
- package/built-in-skills/prismer-box/references/troubleshooting.md +33 -0
- package/built-in-skills/prismer-box/references/webhooks-and-events.md +43 -0
- package/built-in-skills/prismer-codebase-inspection/LICENSE +21 -0
- package/built-in-skills/prismer-codebase-inspection/NOTICE.md +17 -0
- package/built-in-skills/prismer-codebase-inspection/SKILL.md +141 -0
- package/built-in-skills/prismer-computer-use/LICENSE +21 -0
- package/built-in-skills/prismer-computer-use/NOTICE.md +17 -0
- package/built-in-skills/prismer-computer-use/SKILL.md +372 -0
- package/built-in-skills/prismer-design-md/LICENSE +21 -0
- package/built-in-skills/prismer-design-md/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-design-md/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-design-md/SKILL.md +227 -0
- package/built-in-skills/prismer-design-md/templates/starter.md +99 -0
- package/built-in-skills/prismer-email-inbox-triage/LICENSE +21 -0
- package/built-in-skills/prismer-email-inbox-triage/NOTICE.md +11 -0
- package/built-in-skills/prismer-email-inbox-triage/SKILL.md +116 -0
- package/built-in-skills/prismer-findmy/LICENSE +21 -0
- package/built-in-skills/prismer-findmy/NOTICE.md +17 -0
- package/built-in-skills/prismer-findmy/SKILL.md +150 -0
- package/built-in-skills/prismer-findmy/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-gif-search/LICENSE +21 -0
- package/built-in-skills/prismer-gif-search/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-gif-search/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-gif-search/SKILL.md +97 -0
- package/built-in-skills/prismer-gif-search/scripts/tenor.py +81 -0
- package/built-in-skills/prismer-github/LICENSE +21 -0
- package/built-in-skills/prismer-github/NOTICE.md +17 -0
- package/built-in-skills/prismer-github/SKILL.md +74 -0
- package/built-in-skills/prismer-github/references/auth.md +91 -0
- package/built-in-skills/prismer-github/references/ci-troubleshooting.md +193 -0
- package/built-in-skills/prismer-github/references/code-review.md +465 -0
- package/built-in-skills/prismer-github/references/conventional-commits.md +81 -0
- package/built-in-skills/prismer-github/references/github-api-cheatsheet.md +177 -0
- package/built-in-skills/prismer-github/references/issue-to-pr.md +74 -0
- package/built-in-skills/prismer-github/references/issues.md +336 -0
- package/built-in-skills/prismer-github/references/pr-workflow.md +346 -0
- package/built-in-skills/prismer-github/references/repo-management.md +484 -0
- package/built-in-skills/prismer-github/references/review-output-template.md +84 -0
- package/built-in-skills/prismer-github/scripts/ensure-gh.py +132 -0
- package/built-in-skills/prismer-github/scripts/gh-env.sh +25 -0
- package/built-in-skills/prismer-github/scripts/git-credential-token.py +68 -0
- package/built-in-skills/prismer-github/scripts/github-api.py +71 -0
- package/built-in-skills/prismer-github/scripts/github-context.py +28 -0
- package/built-in-skills/prismer-github/templates/bug-report.md +35 -0
- package/built-in-skills/prismer-github/templates/feature-request.md +31 -0
- package/built-in-skills/prismer-github/templates/pr-body-bugfix.md +35 -0
- package/built-in-skills/prismer-github/templates/pr-body-feature.md +33 -0
- package/built-in-skills/prismer-google-workspace/LICENSE +21 -0
- package/built-in-skills/prismer-google-workspace/NOTICE.md +11 -0
- package/built-in-skills/prismer-google-workspace/SKILL.md +369 -0
- package/built-in-skills/prismer-google-workspace/references/daily-brief.md +65 -0
- package/built-in-skills/prismer-google-workspace/references/gmail-search-syntax.md +63 -0
- package/built-in-skills/prismer-google-workspace/scripts/_hermes_home.py +17 -0
- package/built-in-skills/prismer-google-workspace/scripts/_private_state.py +39 -0
- package/built-in-skills/prismer-google-workspace/scripts/google_api.py +1339 -0
- package/built-in-skills/prismer-google-workspace/scripts/gws_bridge.py +121 -0
- package/built-in-skills/prismer-google-workspace/scripts/setup.py +563 -0
- package/built-in-skills/prismer-google-workspace/tests/test_productivity_regressions.py +214 -0
- package/built-in-skills/prismer-hermes-agent/LICENSE +21 -0
- package/built-in-skills/prismer-hermes-agent/NOTICE.md +17 -0
- package/built-in-skills/prismer-hermes-agent/SKILL.md +247 -0
- package/built-in-skills/prismer-hermes-agent/references/background-systems.md +108 -0
- package/built-in-skills/prismer-hermes-agent/references/cli-reference.md +158 -0
- package/built-in-skills/prismer-hermes-agent/references/configuration.md +96 -0
- package/built-in-skills/prismer-hermes-agent/references/contributor-guide.md +151 -0
- package/built-in-skills/prismer-hermes-agent/references/delegate-task-concurrency-diagnosis.md +47 -0
- package/built-in-skills/prismer-hermes-agent/references/desktop-plugins.md +215 -0
- package/built-in-skills/prismer-hermes-agent/references/native-mcp.md +351 -0
- package/built-in-skills/prismer-hermes-agent/references/petdex.md +82 -0
- package/built-in-skills/prismer-hermes-agent/references/portal-auth-for-third-party-apps.md +135 -0
- package/built-in-skills/prismer-hermes-agent/references/project-context-files.md +55 -0
- package/built-in-skills/prismer-hermes-agent/references/providers-and-models.md +81 -0
- package/built-in-skills/prismer-hermes-agent/references/security-privacy.md +73 -0
- package/built-in-skills/prismer-hermes-agent/references/slash-commands.md +119 -0
- package/built-in-skills/prismer-hermes-agent/references/themes.md +134 -0
- package/built-in-skills/prismer-hermes-agent/references/troubleshooting.md +87 -0
- package/built-in-skills/prismer-hermes-agent/references/tui-widgets.md +144 -0
- package/built-in-skills/prismer-hermes-agent/references/webhooks.md +219 -0
- package/built-in-skills/prismer-hermes-agent/references/windows-quirks.md +64 -0
- package/built-in-skills/prismer-hermes-agent/templates/clock.mjs +51 -0
- package/built-in-skills/prismer-hermes-agent/templates/plugin.js +97 -0
- package/built-in-skills/prismer-hermes-agent/templates/skin.yaml +49 -0
- package/built-in-skills/prismer-himalaya/LICENSE +21 -0
- package/built-in-skills/prismer-himalaya/NOTICE.md +11 -0
- package/built-in-skills/prismer-himalaya/SKILL.md +340 -0
- package/built-in-skills/prismer-himalaya/references/configuration.md +227 -0
- package/built-in-skills/prismer-himalaya/references/message-composition.md +206 -0
- package/built-in-skills/prismer-himalaya/scripts/compose_draft.py +48 -0
- package/built-in-skills/prismer-im-collab/SKILL.md +1 -1
- package/built-in-skills/prismer-imessage/LICENSE +21 -0
- package/built-in-skills/prismer-imessage/NOTICE.md +17 -0
- package/built-in-skills/prismer-imessage/SKILL.md +128 -0
- package/built-in-skills/prismer-imessage/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-manim-video/LICENSE +21 -0
- package/built-in-skills/prismer-manim-video/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-manim-video/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-manim-video/README.md +23 -0
- package/built-in-skills/prismer-manim-video/SKILL.md +279 -0
- package/built-in-skills/prismer-manim-video/references/animation-design-thinking.md +161 -0
- package/built-in-skills/prismer-manim-video/references/animations.md +282 -0
- package/built-in-skills/prismer-manim-video/references/camera-and-3d.md +135 -0
- package/built-in-skills/prismer-manim-video/references/decorations.md +202 -0
- package/built-in-skills/prismer-manim-video/references/equations.md +216 -0
- package/built-in-skills/prismer-manim-video/references/graphs-and-data.md +163 -0
- package/built-in-skills/prismer-manim-video/references/mobjects.md +333 -0
- package/built-in-skills/prismer-manim-video/references/paper-explainer.md +255 -0
- package/built-in-skills/prismer-manim-video/references/production-quality.md +190 -0
- package/built-in-skills/prismer-manim-video/references/rendering.md +187 -0
- package/built-in-skills/prismer-manim-video/references/scene-planning.md +118 -0
- package/built-in-skills/prismer-manim-video/references/troubleshooting.md +135 -0
- package/built-in-skills/prismer-manim-video/references/updaters-and-trackers.md +260 -0
- package/built-in-skills/prismer-manim-video/references/visual-design.md +124 -0
- package/built-in-skills/prismer-manim-video/scripts/setup.sh +15 -0
- package/built-in-skills/prismer-maps/LICENSE +21 -0
- package/built-in-skills/prismer-maps/NOTICE.md +11 -0
- package/built-in-skills/prismer-maps/SKILL.md +240 -0
- package/built-in-skills/prismer-maps/scripts/maps_client.py +1324 -0
- package/built-in-skills/prismer-node-inspect-debugger/LICENSE +21 -0
- package/built-in-skills/prismer-node-inspect-debugger/NOTICE.md +17 -0
- package/built-in-skills/prismer-node-inspect-debugger/SKILL.md +347 -0
- package/built-in-skills/prismer-notion/LICENSE +21 -0
- package/built-in-skills/prismer-notion/NOTICE.md +11 -0
- package/built-in-skills/prismer-notion/SKILL.md +495 -0
- package/built-in-skills/prismer-notion/references/block-types.md +112 -0
- package/built-in-skills/prismer-obsidian/LICENSE +21 -0
- package/built-in-skills/prismer-obsidian/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-obsidian/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-obsidian/SKILL.md +80 -0
- package/built-in-skills/prismer-obsidian/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-obsidian/scripts/write_note.py +84 -0
- package/built-in-skills/prismer-p5js/LICENSE +21 -0
- package/built-in-skills/prismer-p5js/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-p5js/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-p5js/README.md +64 -0
- package/built-in-skills/prismer-p5js/SKILL.md +574 -0
- package/built-in-skills/prismer-p5js/references/animation.md +439 -0
- package/built-in-skills/prismer-p5js/references/color-systems.md +355 -0
- package/built-in-skills/prismer-p5js/references/core-api.md +410 -0
- package/built-in-skills/prismer-p5js/references/export-pipeline.md +534 -0
- package/built-in-skills/prismer-p5js/references/interaction.md +398 -0
- package/built-in-skills/prismer-p5js/references/shapes-and-geometry.md +300 -0
- package/built-in-skills/prismer-p5js/references/troubleshooting.md +532 -0
- package/built-in-skills/prismer-p5js/references/typography.md +302 -0
- package/built-in-skills/prismer-p5js/references/visual-effects.md +905 -0
- package/built-in-skills/prismer-p5js/references/webgl-and-3d.md +423 -0
- package/built-in-skills/prismer-p5js/scripts/export-frames.js +91 -0
- package/built-in-skills/prismer-p5js/scripts/render.sh +113 -0
- package/built-in-skills/prismer-p5js/scripts/serve.sh +25 -0
- package/built-in-skills/prismer-p5js/scripts/setup.sh +87 -0
- package/built-in-skills/prismer-p5js/templates/viewer.html +401 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE +21 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE.origin +21 -0
- package/built-in-skills/prismer-popular-web-designs/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-popular-web-designs/SKILL.md +218 -0
- package/built-in-skills/prismer-popular-web-designs/templates/airbnb.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/airtable.md +102 -0
- package/built-in-skills/prismer-popular-web-designs/templates/apple.md +326 -0
- package/built-in-skills/prismer-popular-web-designs/templates/bmw.md +193 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cal.md +272 -0
- package/built-in-skills/prismer-popular-web-designs/templates/claude.md +325 -0
- package/built-in-skills/prismer-popular-web-designs/templates/clay.md +317 -0
- package/built-in-skills/prismer-popular-web-designs/templates/clickhouse.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cohere.md +279 -0
- package/built-in-skills/prismer-popular-web-designs/templates/coinbase.md +142 -0
- package/built-in-skills/prismer-popular-web-designs/templates/composio.md +320 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cursor.md +322 -0
- package/built-in-skills/prismer-popular-web-designs/templates/elevenlabs.md +278 -0
- package/built-in-skills/prismer-popular-web-designs/templates/expo.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/figma.md +233 -0
- package/built-in-skills/prismer-popular-web-designs/templates/framer.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/hashicorp.md +291 -0
- package/built-in-skills/prismer-popular-web-designs/templates/ibm.md +345 -0
- package/built-in-skills/prismer-popular-web-designs/templates/intercom.md +159 -0
- package/built-in-skills/prismer-popular-web-designs/templates/kraken.md +138 -0
- package/built-in-skills/prismer-popular-web-designs/templates/linear.app.md +380 -0
- package/built-in-skills/prismer-popular-web-designs/templates/lovable.md +311 -0
- package/built-in-skills/prismer-popular-web-designs/templates/minimax.md +270 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mintlify.md +339 -0
- package/built-in-skills/prismer-popular-web-designs/templates/miro.md +121 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mistral.ai.md +274 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mongodb.md +279 -0
- package/built-in-skills/prismer-popular-web-designs/templates/notion.md +322 -0
- package/built-in-skills/prismer-popular-web-designs/templates/nvidia.md +306 -0
- package/built-in-skills/prismer-popular-web-designs/templates/ollama.md +280 -0
- package/built-in-skills/prismer-popular-web-designs/templates/opencode.ai.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/pinterest.md +243 -0
- package/built-in-skills/prismer-popular-web-designs/templates/posthog.md +269 -0
- package/built-in-skills/prismer-popular-web-designs/templates/raycast.md +281 -0
- package/built-in-skills/prismer-popular-web-designs/templates/replicate.md +274 -0
- package/built-in-skills/prismer-popular-web-designs/templates/resend.md +316 -0
- package/built-in-skills/prismer-popular-web-designs/templates/revolut.md +198 -0
- package/built-in-skills/prismer-popular-web-designs/templates/runwayml.md +257 -0
- package/built-in-skills/prismer-popular-web-designs/templates/sanity.md +370 -0
- package/built-in-skills/prismer-popular-web-designs/templates/sentry.md +275 -0
- package/built-in-skills/prismer-popular-web-designs/templates/spacex.md +207 -0
- package/built-in-skills/prismer-popular-web-designs/templates/spotify.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/stripe.md +335 -0
- package/built-in-skills/prismer-popular-web-designs/templates/supabase.md +268 -0
- package/built-in-skills/prismer-popular-web-designs/templates/superhuman.md +265 -0
- package/built-in-skills/prismer-popular-web-designs/templates/together.ai.md +276 -0
- package/built-in-skills/prismer-popular-web-designs/templates/uber.md +308 -0
- package/built-in-skills/prismer-popular-web-designs/templates/vercel.md +323 -0
- package/built-in-skills/prismer-popular-web-designs/templates/voltagent.md +336 -0
- package/built-in-skills/prismer-popular-web-designs/templates/warp.md +266 -0
- package/built-in-skills/prismer-popular-web-designs/templates/webflow.md +105 -0
- package/built-in-skills/prismer-popular-web-designs/templates/wise.md +186 -0
- package/built-in-skills/prismer-popular-web-designs/templates/x.ai.md +270 -0
- package/built-in-skills/prismer-popular-web-designs/templates/zapier.md +341 -0
- package/built-in-skills/prismer-product-price-monitor/LICENSE +21 -0
- package/built-in-skills/prismer-product-price-monitor/NOTICE.md +11 -0
- package/built-in-skills/prismer-product-price-monitor/SKILL.md +97 -0
- package/built-in-skills/prismer-product-price-monitor/scripts/watch_state.py +116 -0
- package/built-in-skills/prismer-python-debugpy/LICENSE +21 -0
- package/built-in-skills/prismer-python-debugpy/NOTICE.md +17 -0
- package/built-in-skills/prismer-python-debugpy/SKILL.md +377 -0
- package/built-in-skills/prismer-python-debugpy/scripts/dap_client.py +68 -0
- package/built-in-skills/prismer-songsee/LICENSE +21 -0
- package/built-in-skills/prismer-songsee/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-songsee/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-songsee/SKILL.md +91 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/LICENSE +21 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/SKILL.md +317 -0
- package/built-in-skills/prismer-spike/LICENSE +21 -0
- package/built-in-skills/prismer-spike/LICENSE.gsd +21 -0
- package/built-in-skills/prismer-spike/NOTICE.md +17 -0
- package/built-in-skills/prismer-spike/SKILL.md +212 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/LICENSE +21 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/NOTICE.md +11 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/SKILL.md +156 -0
- package/built-in-skills/prismer-xurl/LICENSE +21 -0
- package/built-in-skills/prismer-xurl/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-xurl/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-xurl/SKILL.md +444 -0
- package/built-in-skills/prismer-xurl/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-youtube-content/LICENSE +21 -0
- package/built-in-skills/prismer-youtube-content/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-youtube-content/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-youtube-content/SKILL.md +86 -0
- package/built-in-skills/prismer-youtube-content/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-youtube-content/references/output-formats.md +56 -0
- package/built-in-skills/prismer-youtube-content/scripts/fetch_transcript.py +146 -0
- package/built-in-skills/research-arxiv/LICENSE +21 -0
- package/built-in-skills/research-arxiv/NOTICE.md +4 -0
- package/built-in-skills/research-arxiv/SKILL.md +263 -0
- package/built-in-skills/research-arxiv/scripts/search_arxiv.py +111 -0
- package/built-in-skills/role-builder/SKILL.md +7 -1
- package/built-in-skills/role-builder/scripts/author-role.mjs +23 -7
- package/built-in-skills/role-builder/scripts/ingest-role.mjs +15 -117
- package/built-in-skills/role-builder/scripts/instantiate-and-run.mjs +15 -1
- package/built-in-skills/role-builder/scripts/operation-harness.mjs +6 -4
- package/built-in-skills/skill-creator/LICENSE.prismer +21 -0
- package/built-in-skills/skill-creator/NOTICE.md +18 -0
- package/built-in-skills/skill-creator/SKILL.md +20 -1
- package/built-in-skills/skill-creator/eval-viewer/generate_review.py +20 -31
- package/built-in-skills/skill-creator/eval-viewer/viewer.html +35 -23
- package/built-in-skills/skill-creator/references/hermes-agent-skill-authoring/GUIDE.md +220 -0
- package/built-in-skills/skill-creator/references/hermes-agent-skill-authoring/LICENSE +21 -0
- package/built-in-skills/{skill-authoring/SKILL.md → skill-creator/references/skill-authoring/GUIDE.md} +1 -1
- package/built-in-skills/{skill-builder/SKILL.md → skill-creator/references/skill-builder/GUIDE.md} +8 -12
- package/built-in-skills/skill-creator/references/skill-builder/scripts/ingest.mjs +93 -0
- package/built-in-skills/skill-creator/scripts/aggregate_benchmark.py +3 -2
- package/built-in-skills/skill-creator/scripts/import-library.mjs +30 -7
- package/built-in-skills/skill-creator/scripts/improve_description.py +14 -16
- package/built-in-skills/skill-creator/scripts/package_skill.py +16 -9
- package/built-in-skills/skill-creator/scripts/quick_validate.py +22 -5
- package/built-in-skills/skill-creator/scripts/run_eval.py +63 -144
- package/built-in-skills/skill-creator/scripts/run_loop.py +24 -16
- package/built-in-skills/slack-gif-creator/core/gif_builder.py +13 -2
- package/built-in-skills/slack-gif-creator/core/validators.py +17 -7
- package/built-in-skills/tasks/SKILL.md +2 -2
- package/built-in-skills/tdd/SKILL.md +7 -0
- package/built-in-skills/tdd/references/test-driven-development/GUIDE.md +356 -0
- package/built-in-skills/tdd/references/test-driven-development/LICENSE +21 -0
- package/built-in-skills/tdd/references/test-driven-development/LICENSE.superpowers +21 -0
- package/built-in-skills/tdd/references/test-driven-development/NOTICE.md +37 -0
- package/built-in-skills/team/SKILL.md +1 -1
- package/built-in-skills/web-artifacts-builder/SKILL.md +3 -3
- package/built-in-skills/web-artifacts-builder/scripts/bundle-artifact.sh +9 -7
- package/built-in-skills/web-artifacts-builder/scripts/init-artifact.sh +28 -55
- package/built-in-skills/webapp-qa/LICENSE +21 -0
- package/built-in-skills/webapp-qa/NOTICE.md +37 -0
- package/built-in-skills/webapp-qa/SKILL.md +41 -0
- package/built-in-skills/webapp-qa/references/dogfood/GUIDE.md +161 -0
- package/built-in-skills/webapp-qa/references/issue-taxonomy.md +109 -0
- package/built-in-skills/webapp-qa/templates/dogfood-report-template.md +86 -0
- package/built-in-skills/webapp-testing/SKILL.md +9 -2
- package/built-in-skills/webapp-testing/examples/console_logging.py +10 -4
- package/built-in-skills/webapp-testing/examples/element_discovery.py +11 -4
- package/built-in-skills/webapp-testing/examples/static_html_automation.py +14 -9
- package/built-in-skills/webapp-testing/scripts/with_server.py +34 -10
- package/built-in-skills/weekly-review/LICENSE +21 -0
- package/built-in-skills/weekly-review/NOTICE.md +21 -0
- package/built-in-skills/weekly-review/SKILL.md +49 -0
- package/components/eaas-pi-components.manifest.json +37 -0
- package/dist/cli.cjs +7079 -3327
- package/dist/cli.js +6706 -2936
- package/dist/index.cjs +7930 -3822
- package/dist/index.d.cts +484 -5
- package/dist/index.d.ts +484 -5
- package/dist/index.js +7181 -3064
- package/package.json +7 -2
- package/plugins/memory/prismer/__init__.py +4 -0
- package/plugins/memory/prismer/tool-schemas.generated.json +8 -0
- package/built-in-skills/skill-builder/scripts/ingest.mjs +0 -265
- package/built-in-skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- /package/built-in-skills/{document-generation/SKILL.md → office-artifacts/references/document-generation/GUIDE.md} +0 -0
- /package/built-in-skills/{skill-authoring/skill.json → skill-creator/references/skill-authoring/draft-contract.json} +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memory-import
|
|
3
|
+
scope: common
|
|
4
|
+
description: Bulk-import an external knowledge base into Prismer memory via the three-layer import pipeline (07 §3.1). Use when the user asks to import/migrate documents, a knowledge base, or notes into workspace memory. Layer 1 lands raw documents (zero LLM, instantly searchable); Layer 2 is YOUR distillation work — you read the landed documents and write candidate pages; Layer 3 commits candidates through the memory evolution gate. Distinct from the native memory_write tool face (that is for single, in-conversation writes).
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Memory Import
|
|
8
|
+
|
|
9
|
+
Bulk-import external material into workspace memory through a **session** — the
|
|
10
|
+
unit of quota, audit, and gate evaluation. Three layers, two of which are yours:
|
|
11
|
+
|
|
12
|
+
## Layer 1 — land the documents (zero LLM, do this first)
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
cloud memory imports open --workspace <ws> # → { id }
|
|
16
|
+
cloud memory imports write-documents <id> --workspace <ws> --documents '[{"name":"…","content":"…"}]'
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Raw documents become searchable in seconds. No quality bar here — that is Layer 2's job.
|
|
20
|
+
|
|
21
|
+
## Layer 2 — distill (YOUR LLM, your compute)
|
|
22
|
+
|
|
23
|
+
Read the landed documents, then author candidate pages and submit them:
|
|
24
|
+
|
|
25
|
+
- One page per coherent topic, attached under the right hub (`<hub>/<topic>.pkf`, relative to the Memory root; do not prepend another `memory/`).
|
|
26
|
+
- Every candidate MUST carry the `memory` frontmatter block — the pipeline rejects
|
|
27
|
+
the whole batch otherwise:
|
|
28
|
+
`{"type":"note","title":"…","description":"…","memory":{"memoryRole":"knowledge|procedure|action_result","source":"<where this came from, in words a human can read>"}}`.
|
|
29
|
+
- Distill, don't dump: conclusions and procedures, not transcripts. The raw
|
|
30
|
+
documents stay in Layer 1 as the reference layer.
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cloud memory imports write-batch <id> --workspace <ws> --candidates '[{"pagePath":"…","contentDiff":"<full PKF body>"}]'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Layer 3 — commit (cloud-side gate, zero negotiation)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cloud memory imports commit <id> --workspace <ws> # runs the evolution gate
|
|
40
|
+
cloud memory imports status <id> --workspace <ws> # per-candidate verdicts
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The gate REJECTS batches that lose retrieval coverage (a candidate replacing a
|
|
44
|
+
page must not delete its keywords) or lack metadata. A rejected commit is final
|
|
45
|
+
for the session: read the verdict, fix the candidates, open a NEW session, resubmit.
|
|
46
|
+
Never re-submit an identical rejected batch — the Ledger rejects same-shape
|
|
47
|
+
candidates for 30 days.
|
|
48
|
+
|
|
49
|
+
**Routing**: raw archive / small batch → L1 + owner review. Knowledge-base
|
|
50
|
+
migration / high-quality distillation → L1 → L2 → L3 (semantic work on YOUR
|
|
51
|
+
compute; the cloud only gates and records).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Imported Office resources
|
|
2
|
+
|
|
3
|
+
The docx, pdf, powerpoint and xlsx resource trees derive from NousResearch/hermes-agent
|
|
4
|
+
skills/productivity at commit 1a1f4a59e252e1dc0137e7b2e7bcc8b0381d19c4.
|
|
5
|
+
Their individual LICENSE files are retained unchanged (MIT, 2026); upstream entry
|
|
6
|
+
documents are retained as GUIDE.md under each format directory. Existing Prismer
|
|
7
|
+
document-generation resources and aliases remain in place.
|
|
8
|
+
|
|
9
|
+
Prismer modifications: bounded original-text replacements, revision-aware reading,
|
|
10
|
+
relationship source isolation, comment persistence, strict template preflight,
|
|
11
|
+
real form flattening, attachment collision handling, Unicode font validation,
|
|
12
|
+
page selection/rendering limits, extraction adapters, literal CSV values,
|
|
13
|
+
tokenized formula references and table/dimension metadata, recursive slide edits,
|
|
14
|
+
independent slide background duplication and isolated renderer outputs. Regression
|
|
15
|
+
tests and known capability limits accompany these modifications.
|
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: office-artifacts
|
|
3
3
|
scope: persistence
|
|
4
|
+
metadata:
|
|
5
|
+
aliases: [document-generation]
|
|
6
|
+
nativeReplaces: [docx, pdf, powerpoint, xlsx]
|
|
4
7
|
description: Generate real DOCX, PPTX, XLSX, PDF, CSV files using python-docx / python-pptx / openpyxl / reportlab by writing them into the dispatch artifacts dir, then explicitly deliver each one with `cloud deliver <abs-path>`. Use whenever the user asks for documents, slides, spreadsheets, reports, or PDFs.
|
|
5
8
|
---
|
|
6
9
|
|
|
7
10
|
# Office Artifacts
|
|
8
11
|
|
|
12
|
+
## Format-specific resources
|
|
13
|
+
|
|
14
|
+
Read [resource limits](references/RESOURCE-LIMITS.md) for dependency tiers,
|
|
15
|
+
unsupported structures, Unicode fonts and optional extractor licensing.
|
|
16
|
+
|
|
17
|
+
Read only the guide for the requested format: references/docx/GUIDE.md,
|
|
18
|
+
references/pdf/GUIDE.md, references/powerpoint/GUIDE.md or references/xlsx/GUIDE.md.
|
|
19
|
+
Each guide's scripts and references are relative to its own directory, not the
|
|
20
|
+
workspace or this skill root. Use the installed office Python interpreter below.
|
|
21
|
+
For CJK text, references/document-generation/GUIDE.md is authoritative for fonts
|
|
22
|
+
and PDF rendering; do not use ReportLab with unsupported CFF Noto collections.
|
|
23
|
+
Treat upstream installation suggestions as optional dependency checks, not
|
|
24
|
+
permission to modify the system. Verify generated files by reopening them and
|
|
25
|
+
inspect rendered pages/slides when a renderer is available; otherwise report
|
|
26
|
+
that visual verification was not performed. Always follow this entry's Prismer
|
|
27
|
+
delivery contract instead of upstream host-specific output conventions.
|
|
28
|
+
|
|
9
29
|
Produce real binary office files (not markdown-as-PDF) by writing each
|
|
10
30
|
one into the **artifacts dir** (`$PRISMER_ARTIFACTS_DIR` /
|
|
11
31
|
`<artifacts_dir>` from `<execution_context>`). Prose-only completions are
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Imported resource execution contract
|
|
2
|
+
|
|
3
|
+
Use absolute script paths relative to the chosen format GUIDE.md directory.
|
|
4
|
+
Never install packages into the shared runtime merely because an upstream guide
|
|
5
|
+
includes an installation command. Reopen outputs and inspect rendered pages before
|
|
6
|
+
claiming visual correctness; the parent office-artifacts delivery contract applies.
|
|
7
|
+
|
|
8
|
+
## Runtime tiers
|
|
9
|
+
|
|
10
|
+
- Core DOCX: Python 3.10+, python-docx and lxml. Accepted text includes insertions
|
|
11
|
+
and excludes deletions/moveFrom. Structural/table/property revisions remain
|
|
12
|
+
unresolved: this is not a full Word revision engine or OOXML XSD validator.
|
|
13
|
+
- Core PDF: pypdf (flatten tested on 6.x), reportlab, Pillow and pdfplumber where
|
|
14
|
+
the chosen helper imports it. Flatten needs pypdf's `flatten=True` field update;
|
|
15
|
+
older versions fail before output rather than label an interactive file flat.
|
|
16
|
+
AES requires cryptography. Rendering uses pypdfium2 or Poppler, with a 120-second
|
|
17
|
+
subprocess bound and DPI 1..600. Native renderer memory is still a sandbox concern.
|
|
18
|
+
- PDF creation: JSON `font_file` selects a local TrueType font with verified glyph
|
|
19
|
+
coverage. Non-WinAnsi content without it is rejected before output. Font licensing
|
|
20
|
+
and embedding rights belong to the supplied font. Bold/italic currently use the
|
|
21
|
+
supplied font face; use a custom recipe for separate style faces. CFF collections
|
|
22
|
+
are not supported by this helper. Render CJK output to verify layout.
|
|
23
|
+
- Optional PyMuPDF: pymupdf; Markdown adds pymupdf4llm; tables add pandas/tabulate.
|
|
24
|
+
Its page selection is ZERO-based, unlike the other PDF helper CLIs (ONE-based).
|
|
25
|
+
PyMuPDF has separate AGPL/commercial licensing, not the resource's MIT grant.
|
|
26
|
+
- Optional Marker: marker-pdf/model downloads and its separate model/library
|
|
27
|
+
licensing, storage and accelerator budget. Output adapter is fixture-tested,
|
|
28
|
+
not proof that model inference or arbitrary installed versions work.
|
|
29
|
+
- Core XLSX: openpyxl. Formula rewrite uses tokens, including whole-row/column
|
|
30
|
+
references; structured/external references are preserved. Partial deletion of
|
|
31
|
+
table columns and header-only deletion fail before saving because dependent
|
|
32
|
+
structured formulas cannot yet be rewritten. Column insertion updates table
|
|
33
|
+
columns, header names and filter indices. Charts/images, validation formulas,
|
|
34
|
+
conditional-format rule formulas and table calculated-column formulas are not
|
|
35
|
+
automatically repaired; rebuild/review them before delivery. CSV formulas are
|
|
36
|
+
always literal imported data, including under type inference.
|
|
37
|
+
- Core PPTX: python-pptx/Pillow. Grouped text is supported; copying slides with
|
|
38
|
+
nested charts is rejected. Rendering requires LibreOffice and Poppler, uses a
|
|
39
|
+
private profile/work directory and returns only this invocation's pages. Existing
|
|
40
|
+
unrelated images in the destination are not a render result. Recalculation of
|
|
41
|
+
spreadsheets also requires LibreOffice; openpyxl alone does not calculate cells.
|
|
42
|
+
|
|
43
|
+
Input files are untrusted data. Native parsers/models should run in a bounded
|
|
44
|
+
task sandbox. No helper confers remote write permissions or installs a scheduler.
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docx
|
|
3
|
+
description: Create, read, edit, template, and review Word .docx files.
|
|
4
|
+
version: 1.1.0
|
|
5
|
+
author: Nous Research
|
|
6
|
+
license: MIT
|
|
7
|
+
platforms: [linux, macos, windows]
|
|
8
|
+
metadata:
|
|
9
|
+
hermes:
|
|
10
|
+
tags: [word, docx, documents, office, templates, revisions, comments]
|
|
11
|
+
category: productivity
|
|
12
|
+
related_skills: [pdf, xlsx, powerpoint]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Docx Skill
|
|
16
|
+
|
|
17
|
+
Create, read, edit, and template Microsoft Word `.docx` files with
|
|
18
|
+
python-docx via small CLIs. It handles text, styles, lists, tables,
|
|
19
|
+
images, headers/footers, `{{token}}` templating, tracked changes
|
|
20
|
+
(list/accept/reject), comments (list/add/delete), TOC and page-number
|
|
21
|
+
fields, and package health checks. It does not render documents itself
|
|
22
|
+
(PDF needs LibreOffice — see Converting to PDF) or edit legacy `.doc`.
|
|
23
|
+
|
|
24
|
+
## When to Use
|
|
25
|
+
|
|
26
|
+
- The user asks to generate a Word document (report, letter, contract).
|
|
27
|
+
- You need the text, outline, styles, or embedded images of a `.docx`.
|
|
28
|
+
- You must change an existing `.docx`: replace text, edit table cells,
|
|
29
|
+
insert/delete paragraphs, apply styles, merge fragmented runs.
|
|
30
|
+
- You have a `.docx` template with `{{placeholders}}` to fill from data.
|
|
31
|
+
- The document has tracked changes to review, accept, or reject.
|
|
32
|
+
- You need to read reviewers' comments, or add/delete comments.
|
|
33
|
+
- A `.docx` won't open or behaves oddly and you need corruption triage.
|
|
34
|
+
- The document needs a table of contents or "Page X of Y" footers.
|
|
35
|
+
- Not for: `.doc` (legacy), `.odt`, or WYSIWYG layout work.
|
|
36
|
+
|
|
37
|
+
## Prerequisites
|
|
38
|
+
|
|
39
|
+
- Python 3.10+ with `python-docx` installed:
|
|
40
|
+
`pip install python-docx` (import name is `docx`; lxml comes with it).
|
|
41
|
+
- Comments `add` uses the native API on python-docx >= 1.2 and an XML
|
|
42
|
+
fallback on older versions — both are automatic.
|
|
43
|
+
- For image blocks: the image files must exist locally (PNG/JPEG).
|
|
44
|
+
|
|
45
|
+
## How to Run
|
|
46
|
+
|
|
47
|
+
All helpers live in `scripts/` next to this file. Run them with the
|
|
48
|
+
`terminal` tool; each supports `--help` and prints JSON to stdout.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
python scripts/docx_create.py spec.json out.docx
|
|
52
|
+
python scripts/docx_read.py out.docx --text
|
|
53
|
+
python scripts/docx_edit.py replace out.docx --find old --replace new
|
|
54
|
+
python scripts/docx_template.py tpl.docx values.json filled.docx
|
|
55
|
+
python scripts/docx_revisions.py list out.docx
|
|
56
|
+
python scripts/docx_comments.py list out.docx
|
|
57
|
+
python scripts/docx_validate.py out.docx
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Quick Reference
|
|
61
|
+
|
|
62
|
+
| Task | Command |
|
|
63
|
+
| --- | --- |
|
|
64
|
+
| Create from JSON spec | `docx_create.py spec.json out.docx` |
|
|
65
|
+
| Full text (body+tables+headers/footers) | `docx_read.py f.docx --text` |
|
|
66
|
+
| Heading outline + table shapes | `docx_read.py f.docx --structure` |
|
|
67
|
+
| Styles actually used | `docx_read.py f.docx --styles` |
|
|
68
|
+
| Extract embedded images | `docx_read.py f.docx --images outdir/` |
|
|
69
|
+
| Detect tracked changes/comments | `docx_read.py f.docx --revisions` |
|
|
70
|
+
| Find/replace (formatting kept) | `docx_edit.py replace f.docx --find A --replace B -o out.docx` |
|
|
71
|
+
| Set a table cell | `docx_edit.py set-cell f.docx --table 0 --row 1 --col 2 --text X` |
|
|
72
|
+
| Insert paragraph before index N | `docx_edit.py insert f.docx --index N --text X --style Normal` |
|
|
73
|
+
| Delete paragraph N | `docx_edit.py delete f.docx --index N` |
|
|
74
|
+
| Apply style to paragraph N | `docx_edit.py style f.docx --index N --style "Heading 1"` |
|
|
75
|
+
| Merge equal-format adjacent runs | `docx_edit.py normalize f.docx -o out.docx` |
|
|
76
|
+
| Insert TOC field before para N | `docx_edit.py toc f.docx --index N -o out.docx` |
|
|
77
|
+
| "Page X of Y" footer fields | `docx_edit.py page-numbers f.docx` |
|
|
78
|
+
| Fill `{{tokens}}` | `docx_template.py tpl.docx values.json out.docx --strict` |
|
|
79
|
+
| List revisions (id/author/date/text) | `docx_revisions.py list f.docx` |
|
|
80
|
+
| Accept / reject all revisions | `docx_revisions.py accept-all f.docx -o out.docx` (or `reject-all`) |
|
|
81
|
+
| Accept / reject one revision | `docx_revisions.py accept f.docx --id 3 -o out.docx` |
|
|
82
|
+
| List comments (+anchored text) | `docx_comments.py list f.docx` |
|
|
83
|
+
| Add comment anchored to text | `docx_comments.py add f.docx --target "phrase" --text "note" --author You` |
|
|
84
|
+
| Delete comment by id | `docx_comments.py delete f.docx --id 0` |
|
|
85
|
+
| Health-check the package | `docx_validate.py f.docx` (exit 1 on errors) |
|
|
86
|
+
|
|
87
|
+
## Procedure
|
|
88
|
+
|
|
89
|
+
1. **Create.** Write a JSON spec with `write_file`, then run
|
|
90
|
+
`scripts/docx_create.py`. The spec supports: `page` (size + margins in
|
|
91
|
+
mm), `header`/`footer` strings, `footer_page_numbers` (adds a
|
|
92
|
+
"Page X of Y" field footer), `styles` (custom paragraph styles with
|
|
93
|
+
font, size, bold/italic, hex `color`), and `blocks` — `heading`
|
|
94
|
+
(level 1-9), `paragraph` (either `text` or a `runs` list where each run
|
|
95
|
+
may set `bold`/`italic`/`underline`), `bullet_list`, `numbered_list`,
|
|
96
|
+
`table` (`header` row rendered bold, `rows`, optional built-in table
|
|
97
|
+
`style` such as `Table Grid`), `image` (`path`, optional `width_mm`),
|
|
98
|
+
`toc` (Table of Contents field), and `page_break`. The full spec
|
|
99
|
+
format is documented at the top of `scripts/docx_create.py`.
|
|
100
|
+
2. **Read.** Use `scripts/docx_read.py` with exactly one mode flag.
|
|
101
|
+
`--text` returns body paragraphs, all table cell text, and
|
|
102
|
+
header/footer text as JSON. `--structure` returns the heading outline
|
|
103
|
+
plus paragraph/table/section counts. `--images DIR` copies every file
|
|
104
|
+
under `word/media/` out of the package.
|
|
105
|
+
3. **Edit.** Use `scripts/docx_edit.py`. `replace` walks body, tables
|
|
106
|
+
(nested included), headers and footers, and preserves run formatting;
|
|
107
|
+
add `--body-only` to skip headers/footers. Pass `-o out.docx` to keep
|
|
108
|
+
the original; omit it to edit in place. Paragraph indices for
|
|
109
|
+
`insert`/`delete`/`style`/`toc` refer to `--structure`/`--text` body
|
|
110
|
+
order. Run `normalize` first on documents that came out of heavy Word
|
|
111
|
+
editing — it merges adjacent runs with identical formatting so later
|
|
112
|
+
find-replace matches reliably.
|
|
113
|
+
4. **Review revisions.** `docx_revisions.py list` reports every `w:ins`
|
|
114
|
+
and `w:del` (id, author, date, affected text) anywhere in body,
|
|
115
|
+
tables, headers, or footers. `accept-all` / `reject-all` resolve them
|
|
116
|
+
in bulk; `accept`/`reject --id N` handles a single revision. Accept
|
|
117
|
+
keeps insertions and drops deleted text; reject does the reverse.
|
|
118
|
+
5. **Comments.** `docx_comments.py list` returns each comment's id,
|
|
119
|
+
author, date, body text, and the document text it is anchored to.
|
|
120
|
+
`add --target "some phrase"` anchors a new comment to the first
|
|
121
|
+
occurrence of that phrase (runs are split as needed; formatting is
|
|
122
|
+
preserved). `delete --id N` removes the comment and its markers
|
|
123
|
+
without touching document text.
|
|
124
|
+
6. **Template.** Put `{{name}}`-style tokens in the document. Run
|
|
125
|
+
`scripts/docx_template.py` with a JSON object of values. Use
|
|
126
|
+
`--strict` to fail when tokens remain unfilled; the JSON output lists
|
|
127
|
+
`filled` counts and `unfilled_tokens` either way.
|
|
128
|
+
7. **Verify** (always): re-read the output with `--text` or
|
|
129
|
+
`--structure`, and run `docx_validate.py` on anything you produced
|
|
130
|
+
via revision/comment surgery.
|
|
131
|
+
|
|
132
|
+
## Converting to PDF
|
|
133
|
+
|
|
134
|
+
No script needed. When LibreOffice is installed, convert headlessly:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
soffice --headless --convert-to pdf --outdir outdir/ file.docx
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Check availability first (`command -v soffice || command -v
|
|
141
|
+
libreoffice`). If neither exists, tell the user PDF conversion is
|
|
142
|
+
unavailable in this environment rather than improvising — python-docx
|
|
143
|
+
cannot render PDFs, and layout fidelity requires a real renderer.
|
|
144
|
+
|
|
145
|
+
## Pitfalls
|
|
146
|
+
|
|
147
|
+
- **Tokens split across runs.** Word often fragments text into several
|
|
148
|
+
runs. The replace helpers collapse matched runs (replacement inherits
|
|
149
|
+
the first run's formatting); running `docx_edit.py normalize` first
|
|
150
|
+
reduces fragmentation for all later edits.
|
|
151
|
+
- **Revision coverage.** `docx_revisions.py` resolves run-level
|
|
152
|
+
insertions and deletions (the overwhelming majority). Paragraph-mark
|
|
153
|
+
and table-row revisions, format-change records, and moves are detected
|
|
154
|
+
by `--revisions` but not auto-resolved — see
|
|
155
|
+
`references/revisions-and-comments.md` and hand those to Word.
|
|
156
|
+
- **Comment threading.** Replies and "resolved" status live in
|
|
157
|
+
`commentsExtended.xml`, which this skill ignores; comments it adds are
|
|
158
|
+
plain top-level comments.
|
|
159
|
+
- **Field results are computed by Word.** `toc`, `page-numbers`, and the
|
|
160
|
+
`toc`/`footer_page_numbers` spec options write *field codes*.
|
|
161
|
+
Word/LibreOffice populates the actual entries and numbers when the
|
|
162
|
+
file is opened (Word may prompt to update fields); python-docx never
|
|
163
|
+
computes them, so placeholder text shows until then.
|
|
164
|
+
- **Validation is a health check, not schema validation.**
|
|
165
|
+
`docx_validate.py` verifies the zip, required parts, relationship
|
|
166
|
+
targets, image magic bytes, and referenced styles. It is NOT XSD
|
|
167
|
+
validation — a file can pass and still contain XML Word dislikes.
|
|
168
|
+
- **Style names must exist.** Applying a style that isn't defined in the
|
|
169
|
+
document raises `KeyError`. Built-ins like `Heading 1`, `List Bullet`,
|
|
170
|
+
`List Number`, `Table Grid` exist in the default template; custom
|
|
171
|
+
styles must be declared in the create spec first.
|
|
172
|
+
- **Numbered lists restart.** `List Number` relies on Word's default
|
|
173
|
+
numbering; separate lists in one document may continue numbering
|
|
174
|
+
instead of restarting. Warn users needing precise multi-list numbering.
|
|
175
|
+
- **Cell writes replace formatting.** `set-cell` uses `cell.text = ...`,
|
|
176
|
+
which resets runs in that cell to plain formatting.
|
|
177
|
+
- **Encoding.** All JSON specs/values files are read as UTF-8 explicitly;
|
|
178
|
+
never rely on locale defaults when writing your own glue code.
|
|
179
|
+
- **Don't unzip-and-sed the XML.** Edit through the scripts (or
|
|
180
|
+
python-docx); raw text substitution in `document.xml` corrupts files
|
|
181
|
+
easily. Use `patch`/`write_file` only for the JSON inputs, never on the
|
|
182
|
+
`.docx` itself.
|
|
183
|
+
|
|
184
|
+
## Verification
|
|
185
|
+
|
|
186
|
+
- After create/edit/template, run `docx_read.py out.docx --text` and
|
|
187
|
+
check the expected strings appear (and old strings are gone).
|
|
188
|
+
- After accept/reject, `docx_revisions.py list` should return `[]` (or
|
|
189
|
+
only the ids you intentionally left); after comment surgery,
|
|
190
|
+
`docx_comments.py list` should reflect the change and `--text` output
|
|
191
|
+
must be unchanged.
|
|
192
|
+
- `docx_validate.py out.docx` exits 0 with `"ok": true` on a healthy
|
|
193
|
+
package — run it after any revision/comment/field manipulation.
|
|
194
|
+
- For templates run with `--strict`, or check `unfilled_tokens == []`.
|
|
195
|
+
- Structure checks: `--structure` should show the expected heading
|
|
196
|
+
outline and table shapes; `--styles` confirms custom styles applied.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nous Research
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nous Research
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Revisions and Comments — XML details
|
|
2
|
+
|
|
3
|
+
Deep reference for `docx_revisions.py` and `docx_comments.py`. Read this
|
|
4
|
+
when you need to reason about the raw WordprocessingML, extend the
|
|
5
|
+
scripts, or debug an unusual document. Everyday use only needs SKILL.md.
|
|
6
|
+
|
|
7
|
+
## Tracked changes (w:ins / w:del)
|
|
8
|
+
|
|
9
|
+
Word records run-level tracked changes as wrapper elements inside a
|
|
10
|
+
paragraph (`w:p`), in the `w` namespace
|
|
11
|
+
`http://schemas.openxmlformats.org/wordprocessingml/2006/main`:
|
|
12
|
+
|
|
13
|
+
```xml
|
|
14
|
+
<w:p>
|
|
15
|
+
<w:r><w:t>Base </w:t></w:r>
|
|
16
|
+
<w:ins w:id="1" w:author="Editor" w:date="2026-01-02T03:04:05Z">
|
|
17
|
+
<w:r><w:t>inserted text</w:t></w:r>
|
|
18
|
+
</w:ins>
|
|
19
|
+
<w:del w:id="2" w:author="Editor" w:date="2026-01-02T03:04:05Z">
|
|
20
|
+
<w:r><w:delText>deleted text</w:delText></w:r>
|
|
21
|
+
</w:del>
|
|
22
|
+
</w:p>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Key facts the script relies on:
|
|
26
|
+
|
|
27
|
+
- Deleted text lives in `w:delText`, not `w:t` — that is why plain text
|
|
28
|
+
extraction naturally shows the "accepted" view (insertions visible,
|
|
29
|
+
deletions hidden).
|
|
30
|
+
- Resolution semantics:
|
|
31
|
+
- accept `w:ins` → unwrap (move child runs up, drop the wrapper)
|
|
32
|
+
- reject `w:ins` → remove the wrapper and its contents
|
|
33
|
+
- accept `w:del` → remove the wrapper and its contents
|
|
34
|
+
- reject `w:del` → rename each `w:delText` to `w:t`, then unwrap
|
|
35
|
+
- Revisions can appear anywhere block content is allowed: body, table
|
|
36
|
+
cells (nested tables too), headers, footers, text boxes. The script
|
|
37
|
+
iterates the body root plus every header/footer part root with
|
|
38
|
+
`root.iter(W+"ins", W+"del")`, which finds them at any depth.
|
|
39
|
+
- `w:id` values are unique per revision *element*, but one logical edit
|
|
40
|
+
session may produce several elements. `accept`/`reject --id` acts on
|
|
41
|
+
exactly the element(s) carrying that id.
|
|
42
|
+
|
|
43
|
+
Not handled by the script (detected by `docx_read.py --revisions` but
|
|
44
|
+
left alone): paragraph-mark revisions (`w:rPr/w:ins` on `w:pPr`), table
|
|
45
|
+
row insertions/deletions (`w:trPr/w:ins`), format-change records
|
|
46
|
+
(`w:rPrChange`, `w:pPrChange`), and moves (`w:moveFrom`/`w:moveTo`).
|
|
47
|
+
Moves are rare from typical editors; if present, treat the file with
|
|
48
|
+
Word itself rather than guessing.
|
|
49
|
+
|
|
50
|
+
## Comments
|
|
51
|
+
|
|
52
|
+
Three cooperating pieces:
|
|
53
|
+
|
|
54
|
+
1. **`word/comments.xml`** — one `w:comment` element per comment,
|
|
55
|
+
carrying `w:id`, `w:author`, `w:initials`, `w:date`, and body
|
|
56
|
+
paragraphs. Related from document.xml via the relationship type
|
|
57
|
+
`.../comments` and content type
|
|
58
|
+
`application/vnd...wordprocessingml.comments+xml` (also needs a
|
|
59
|
+
`[Content_Types].xml` override — python-docx's part machinery adds it
|
|
60
|
+
when the part is registered).
|
|
61
|
+
2. **Range markers in the story** — `w:commentRangeStart w:id="N"`
|
|
62
|
+
before the anchored runs, `w:commentRangeEnd w:id="N"` after them.
|
|
63
|
+
3. **The reference run** — a `w:r` containing `w:commentReference
|
|
64
|
+
w:id="N"`, placed right after the range end; it ties the balloon to
|
|
65
|
+
the location.
|
|
66
|
+
|
|
67
|
+
`docx_comments.py` behavior:
|
|
68
|
+
|
|
69
|
+
- **list / delete** always work at the XML level, so they handle files
|
|
70
|
+
from any producer. `anchored_text` is reconstructed by walking each
|
|
71
|
+
part root in document order and collecting `w:t` text between the
|
|
72
|
+
start and end markers for each id.
|
|
73
|
+
- **add** first isolates the target text into whole runs. If the match
|
|
74
|
+
starts or ends mid-run, the run is split at the boundary (the split
|
|
75
|
+
copies `w:rPr`, so formatting is preserved). Then:
|
|
76
|
+
- python-docx >= 1.2: the native `document.add_comment(runs, ...)`
|
|
77
|
+
API is used (it creates the comments part, markers, and reference
|
|
78
|
+
run itself).
|
|
79
|
+
- older versions or `--xml`: the script builds `word/comments.xml`,
|
|
80
|
+
registers the part + relationship through the opc layer, and
|
|
81
|
+
inserts the markers/reference manually.
|
|
82
|
+
- Deleting a comment removes the `w:comment` element and all three
|
|
83
|
+
marker kinds for that id; the anchored document text is untouched.
|
|
84
|
+
|
|
85
|
+
Modern Word also writes `commentsExtended.xml` (threading/resolved
|
|
86
|
+
state). The scripts neither read nor produce it: replies and "resolved"
|
|
87
|
+
flags are invisible here, and comments added by this skill are plain
|
|
88
|
+
top-level comments.
|