@amrhas82/agentic-kit 1.5.0 → 1.7.5
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 +1 -1
- package/README.md +110 -183
- package/docs/INSTALLATION_DEMO.md +4 -4
- package/docs/INTEGRATION_ISSUES_9.1.md +2 -2
- package/docs/KNOWLEDGE_BASE.md +16 -16
- package/docs/PACKAGE_BASELINE.md +9 -9
- package/docs/UPDATED_VARIANT_CONFIGURATION.md +14 -14
- package/docs/VARIANT_CONFIGURATION.md +2 -2
- package/package.json +1 -1
- package/packages/ampcode/AGENT.md +55 -0
- package/packages/ampcode/agents/1-create-prd.md +69 -40
- package/packages/ampcode/agents/2-generate-tasks.md +113 -25
- package/packages/ampcode/agents/3-process-task-list.md +125 -71
- package/packages/ampcode/agents/backlog-manager.md +169 -0
- package/packages/ampcode/agents/code-developer.md +118 -0
- package/packages/ampcode/agents/context-builder.md +198 -0
- package/packages/ampcode/agents/feature-planner.md +155 -0
- package/packages/ampcode/agents/{business-analyst.md → market-researcher.md} +57 -9
- package/packages/ampcode/agents/master.md +107 -18
- package/packages/ampcode/agents/orchestrator.md +176 -85
- package/packages/{claude/agents/qa-test-architect.md → ampcode/agents/quality-assurance.md} +53 -22
- package/packages/{claude/agents/scrum-master.md → ampcode/agents/story-writer.md} +52 -16
- package/packages/ampcode/agents/{holistic-architect.md → system-architect.md} +45 -3
- package/packages/{claude/agents/ux-expert.md → ampcode/agents/ui-designer.md} +50 -16
- package/packages/ampcode/commands/brainstorming.md +6 -3
- package/packages/ampcode/commands/code-review.md +8 -154
- package/packages/ampcode/commands/condition-based-waiting.md +5 -2
- package/packages/ampcode/commands/debug.md +21 -0
- package/packages/ampcode/commands/docs-builder/templates.md +572 -0
- package/packages/ampcode/commands/docs-builder.md +107 -0
- package/packages/ampcode/commands/explain.md +19 -0
- package/packages/ampcode/commands/git-commit.md +15 -0
- package/packages/ampcode/commands/optimize.md +21 -0
- package/packages/ampcode/commands/refactor.md +22 -0
- package/packages/ampcode/commands/review.md +19 -0
- package/packages/ampcode/commands/root-cause-tracing.md +5 -2
- package/packages/ampcode/commands/security.md +22 -0
- package/packages/ampcode/commands/ship.md +19 -0
- package/packages/ampcode/commands/skill-creator.md +4 -1
- package/packages/ampcode/commands/subagent-spawning.md +82 -0
- package/packages/ampcode/commands/systematic-debugging.md +4 -344
- package/packages/ampcode/commands/test-driven-development.md +27 -1
- package/packages/ampcode/commands/test-generate.md +19 -0
- package/packages/ampcode/commands/testing-anti-patterns.md +4 -1
- package/packages/ampcode/commands/verification-before-completion.md +15 -1
- package/packages/ampcode/variants.json +44 -22
- package/packages/claude/CLAUDE.md +61 -0
- package/packages/claude/agents/1-create-prd.md +69 -40
- package/packages/claude/agents/2-generate-tasks.md +113 -25
- package/packages/claude/agents/3-process-task-list.md +125 -72
- package/packages/claude/agents/backlog-manager.md +169 -0
- package/packages/claude/agents/code-developer.md +118 -0
- package/packages/claude/agents/context-builder.md +198 -0
- package/packages/claude/agents/feature-planner.md +155 -0
- package/packages/claude/agents/{business-analyst.md → market-researcher.md} +57 -9
- package/packages/claude/agents/master.md +107 -19
- package/packages/claude/agents/orchestrator.md +177 -85
- package/packages/{ampcode/agents/qa-test-architect.md → claude/agents/quality-assurance.md} +53 -22
- package/packages/{ampcode/agents/scrum-master.md → claude/agents/story-writer.md} +52 -16
- package/packages/claude/agents/{holistic-architect.md → system-architect.md} +45 -3
- package/packages/{ampcode/agents/ux-expert.md → claude/agents/ui-designer.md} +50 -16
- package/packages/claude/commands/debug.md +21 -0
- package/packages/claude/commands/explain.md +19 -0
- package/packages/claude/commands/git-commit.md +15 -0
- package/packages/claude/commands/optimize.md +21 -0
- package/packages/claude/commands/refactor.md +22 -0
- package/packages/claude/commands/review.md +19 -0
- package/packages/claude/commands/security.md +22 -0
- package/packages/claude/commands/ship.md +19 -0
- package/packages/claude/commands/test-generate.md +19 -0
- package/packages/claude/skills/brainstorming/SKILL.md +5 -2
- package/packages/claude/skills/code-review/SKILL.md +8 -5
- package/packages/claude/skills/condition-based-waiting/SKILL.md +3 -0
- package/packages/claude/skills/docs-builder/SKILL.md +107 -0
- package/packages/claude/skills/docs-builder/references/templates.md +572 -0
- package/packages/claude/skills/root-cause-tracing/SKILL.md +3 -0
- package/packages/claude/skills/skill-creator/SKILL.md +3 -0
- package/packages/claude/skills/subagent-spawning/SKILL.md +82 -0
- package/packages/claude/skills/systematic-debugging/SKILL.md +4 -2
- package/packages/claude/skills/test-driven-development/SKILL.md +29 -0
- package/packages/claude/skills/testing-anti-patterns/SKILL.md +3 -0
- package/packages/claude/skills/verification-before-completion/SKILL.md +14 -0
- package/packages/claude/variants.json +46 -19
- package/packages/droid/AGENTS.md +49 -386
- package/packages/droid/commands/brainstorming.md +12 -4
- package/packages/droid/commands/code-review.md +47 -31
- package/packages/droid/commands/condition-based-waiting.md +42 -52
- package/packages/droid/commands/debug.md +21 -0
- package/packages/droid/commands/docs-builder/templates.md +572 -0
- package/packages/droid/commands/docs-builder.md +107 -0
- package/packages/droid/commands/explain.md +19 -0
- package/packages/droid/commands/git-commit.md +15 -0
- package/packages/droid/commands/optimize.md +21 -0
- package/packages/droid/commands/refactor.md +22 -0
- package/packages/droid/commands/review.md +19 -0
- package/packages/droid/commands/root-cause-tracing.md +65 -99
- package/packages/droid/commands/security.md +22 -0
- package/packages/droid/commands/ship.md +19 -0
- package/packages/droid/commands/skill-creator.md +158 -142
- package/packages/droid/commands/subagent-spawning.md +82 -0
- package/packages/droid/commands/systematic-debugging.md +222 -139
- package/packages/droid/commands/test-driven-development.md +237 -78
- package/packages/droid/commands/test-generate.md +19 -0
- package/packages/droid/commands/testing-anti-patterns.md +130 -73
- package/packages/droid/commands/verification-before-completion.md +91 -89
- package/packages/droid/droids/1-create-prd.md +69 -41
- package/packages/droid/droids/2-generate-tasks.md +113 -26
- package/packages/droid/droids/3-process-task-list.md +125 -72
- package/packages/droid/droids/backlog-manager.md +169 -0
- package/packages/droid/droids/code-developer.md +118 -0
- package/packages/droid/droids/context-builder.md +198 -0
- package/packages/droid/droids/feature-planner.md +155 -0
- package/packages/droid/droids/{business-analyst.md → market-researcher.md} +57 -9
- package/packages/droid/droids/master.md +107 -18
- package/packages/droid/droids/orchestrator.md +176 -85
- package/packages/droid/droids/{qa-test-architect.md → quality-assurance.md} +53 -22
- package/packages/droid/droids/{scrum-master.md → story-writer.md} +52 -16
- package/packages/droid/droids/{holistic-architect.md → system-architect.md} +45 -3
- package/packages/droid/droids/{ux-expert.md → ui-designer.md} +50 -16
- package/packages/droid/variants.json +44 -22
- package/packages/opencode/AGENTS.md +49 -382
- package/packages/opencode/agent/1-create-prd.md +69 -40
- package/packages/opencode/agent/2-generate-tasks.md +113 -26
- package/packages/opencode/agent/3-process-task-list.md +124 -71
- package/packages/opencode/agent/backlog-manager.md +173 -0
- package/packages/opencode/agent/code-developer.md +122 -0
- package/packages/opencode/agent/context-builder.md +202 -0
- package/packages/opencode/agent/feature-planner.md +159 -0
- package/packages/opencode/agent/{business-analyst.md → market-researcher.md} +58 -10
- package/packages/opencode/agent/master.md +107 -18
- package/packages/opencode/agent/orchestrator.md +176 -86
- package/packages/opencode/agent/{qa-test-architect.md → quality-assurance.md} +53 -22
- package/packages/opencode/agent/{scrum-master.md → story-writer.md} +52 -16
- package/packages/opencode/agent/{holistic-architect.md → system-architect.md} +45 -3
- package/packages/opencode/agent/{ux-expert.md → ui-designer.md} +50 -16
- package/packages/opencode/command/brainstorming.md +12 -4
- package/packages/opencode/command/code-review.md +47 -31
- package/packages/opencode/command/condition-based-waiting.md +42 -52
- package/packages/opencode/command/debug.md +21 -0
- package/packages/opencode/command/docs-builder/templates.md +572 -0
- package/packages/opencode/command/docs-builder.md +107 -0
- package/packages/opencode/command/explain.md +19 -0
- package/packages/opencode/command/git-commit.md +15 -0
- package/packages/opencode/command/optimize.md +21 -0
- package/packages/opencode/command/refactor.md +22 -0
- package/packages/opencode/command/review.md +19 -0
- package/packages/opencode/command/root-cause-tracing.md +65 -99
- package/packages/opencode/command/security.md +22 -0
- package/packages/opencode/command/ship.md +19 -0
- package/packages/opencode/command/skill-creator.md +158 -142
- package/packages/opencode/command/subagent-spawning.md +82 -0
- package/packages/opencode/command/systematic-debugging.md +222 -139
- package/packages/opencode/command/test-driven-development.md +237 -78
- package/packages/opencode/command/test-generate.md +19 -0
- package/packages/opencode/command/testing-anti-patterns.md +130 -73
- package/packages/opencode/command/verification-before-completion.md +91 -89
- package/packages/opencode/opencode.jsonc +37 -85
- package/packages/opencode/variants.json +44 -22
- package/packages/subagentic-manual.md +304 -107
- package/packages/ampcode/AGENTS.md +0 -378
- package/packages/ampcode/agents/context-initializer.md +0 -472
- package/packages/ampcode/agents/full-stack-dev.md +0 -80
- package/packages/ampcode/agents/product-manager.md +0 -82
- package/packages/ampcode/agents/product-owner.md +0 -97
- package/packages/ampcode/commands/README.md +0 -76
- package/packages/ampcode/commands/algorithmic-art/templates/generator_template.js +0 -223
- package/packages/ampcode/commands/algorithmic-art/templates/viewer.html +0 -599
- package/packages/ampcode/commands/algorithmic-art.md +0 -405
- package/packages/ampcode/commands/artifacts-builder/scripts/bundle-artifact.sh +0 -54
- package/packages/ampcode/commands/artifacts-builder/scripts/init-artifact.sh +0 -322
- package/packages/ampcode/commands/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/packages/ampcode/commands/artifacts-builder.md +0 -74
- package/packages/ampcode/commands/brand-guidelines.md +0 -73
- package/packages/ampcode/commands/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/BigShoulders-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Boldonse-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/DMMono-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/EricaOne-OFL.txt +0 -94
- package/packages/ampcode/commands/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/GeistMono-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Gloock-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Italiana-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Jura-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Lora-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/NationalPark-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Outfit-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/PixelifySans-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/RedHatMono-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Silkscreen-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/SmoochSans-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Tektur-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/WorkSans-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design/canvas-fonts/YoungSerif-OFL.txt +0 -93
- package/packages/ampcode/commands/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/packages/ampcode/commands/canvas-design.md +0 -130
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/packages/ampcode/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/packages/ampcode/commands/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/packages/ampcode/commands/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/packages/ampcode/commands/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/packages/ampcode/commands/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/packages/ampcode/commands/docx/ooxml/schemas/mce/mc.xsd +0 -75
- package/packages/ampcode/commands/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/packages/ampcode/commands/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/packages/ampcode/commands/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/packages/ampcode/commands/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/packages/ampcode/commands/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/packages/ampcode/commands/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/packages/ampcode/commands/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/packages/ampcode/commands/docx/ooxml/scripts/pack.py +0 -159
- package/packages/ampcode/commands/docx/ooxml/scripts/unpack.py +0 -29
- package/packages/ampcode/commands/docx/ooxml/scripts/validate.py +0 -69
- package/packages/ampcode/commands/docx/ooxml/scripts/validation/__init__.py +0 -15
- package/packages/ampcode/commands/docx/ooxml/scripts/validation/base.py +0 -951
- package/packages/ampcode/commands/docx/ooxml/scripts/validation/docx.py +0 -274
- package/packages/ampcode/commands/docx/ooxml/scripts/validation/pptx.py +0 -315
- package/packages/ampcode/commands/docx/ooxml/scripts/validation/redlining.py +0 -279
- package/packages/ampcode/commands/docx/scripts/__init__.py +0 -1
- package/packages/ampcode/commands/docx/scripts/document.py +0 -1276
- package/packages/ampcode/commands/docx/scripts/templates/comments.xml +0 -3
- package/packages/ampcode/commands/docx/scripts/templates/commentsExtended.xml +0 -3
- package/packages/ampcode/commands/docx/scripts/templates/commentsExtensible.xml +0 -3
- package/packages/ampcode/commands/docx/scripts/templates/commentsIds.xml +0 -3
- package/packages/ampcode/commands/docx/scripts/templates/people.xml +0 -3
- package/packages/ampcode/commands/docx/scripts/utilities.py +0 -374
- package/packages/ampcode/commands/docx.md +0 -1163
- package/packages/ampcode/commands/internal-comms/examples/3p-updates.md +0 -47
- package/packages/ampcode/commands/internal-comms/examples/company-newsletter.md +0 -65
- package/packages/ampcode/commands/internal-comms/examples/faq-answers.md +0 -30
- package/packages/ampcode/commands/internal-comms/examples/general-comms.md +0 -16
- package/packages/ampcode/commands/internal-comms.md +0 -32
- package/packages/ampcode/commands/mcp-builder/reference/evaluation.md +0 -602
- package/packages/ampcode/commands/mcp-builder/reference/mcp_best_practices.md +0 -915
- package/packages/ampcode/commands/mcp-builder/reference/node_mcp_server.md +0 -916
- package/packages/ampcode/commands/mcp-builder/reference/python_mcp_server.md +0 -752
- package/packages/ampcode/commands/mcp-builder/scripts/connections.py +0 -151
- package/packages/ampcode/commands/mcp-builder/scripts/evaluation.py +0 -373
- package/packages/ampcode/commands/mcp-builder/scripts/example_evaluation.xml +0 -22
- package/packages/ampcode/commands/mcp-builder/scripts/requirements.txt +0 -2
- package/packages/ampcode/commands/mcp-builder.md +0 -328
- package/packages/ampcode/commands/pdf/scripts/check_bounding_boxes.py +0 -70
- package/packages/ampcode/commands/pdf/scripts/check_bounding_boxes_test.py +0 -226
- package/packages/ampcode/commands/pdf/scripts/check_fillable_fields.py +0 -12
- package/packages/ampcode/commands/pdf/scripts/convert_pdf_to_images.py +0 -35
- package/packages/ampcode/commands/pdf/scripts/create_validation_image.py +0 -41
- package/packages/ampcode/commands/pdf/scripts/extract_form_field_info.py +0 -152
- package/packages/ampcode/commands/pdf/scripts/fill_fillable_fields.py +0 -114
- package/packages/ampcode/commands/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
- package/packages/ampcode/commands/pdf.md +0 -1117
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/packages/ampcode/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/packages/ampcode/commands/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/packages/ampcode/commands/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/packages/ampcode/commands/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/packages/ampcode/commands/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/packages/ampcode/commands/pptx/ooxml/schemas/mce/mc.xsd +0 -75
- package/packages/ampcode/commands/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/packages/ampcode/commands/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/packages/ampcode/commands/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/packages/ampcode/commands/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/packages/ampcode/commands/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/packages/ampcode/commands/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/packages/ampcode/commands/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/packages/ampcode/commands/pptx/ooxml/scripts/pack.py +0 -159
- package/packages/ampcode/commands/pptx/ooxml/scripts/unpack.py +0 -29
- package/packages/ampcode/commands/pptx/ooxml/scripts/validate.py +0 -69
- package/packages/ampcode/commands/pptx/ooxml/scripts/validation/__init__.py +0 -15
- package/packages/ampcode/commands/pptx/ooxml/scripts/validation/base.py +0 -951
- package/packages/ampcode/commands/pptx/ooxml/scripts/validation/docx.py +0 -274
- package/packages/ampcode/commands/pptx/ooxml/scripts/validation/pptx.py +0 -315
- package/packages/ampcode/commands/pptx/ooxml/scripts/validation/redlining.py +0 -279
- package/packages/ampcode/commands/pptx/scripts/html2pptx.js +0 -979
- package/packages/ampcode/commands/pptx/scripts/inventory.py +0 -1020
- package/packages/ampcode/commands/pptx/scripts/rearrange.py +0 -231
- package/packages/ampcode/commands/pptx/scripts/replace.py +0 -385
- package/packages/ampcode/commands/pptx/scripts/thumbnail.py +0 -450
- package/packages/ampcode/commands/pptx.md +0 -1542
- package/packages/ampcode/commands/slack-gif-creator/core/color_palettes.py +0 -302
- package/packages/ampcode/commands/slack-gif-creator/core/easing.py +0 -230
- package/packages/ampcode/commands/slack-gif-creator/core/frame_composer.py +0 -469
- package/packages/ampcode/commands/slack-gif-creator/core/gif_builder.py +0 -246
- package/packages/ampcode/commands/slack-gif-creator/core/typography.py +0 -357
- package/packages/ampcode/commands/slack-gif-creator/core/validators.py +0 -264
- package/packages/ampcode/commands/slack-gif-creator/core/visual_effects.py +0 -494
- package/packages/ampcode/commands/slack-gif-creator/templates/bounce.py +0 -106
- package/packages/ampcode/commands/slack-gif-creator/templates/explode.py +0 -331
- package/packages/ampcode/commands/slack-gif-creator/templates/fade.py +0 -329
- package/packages/ampcode/commands/slack-gif-creator/templates/flip.py +0 -291
- package/packages/ampcode/commands/slack-gif-creator/templates/kaleidoscope.py +0 -211
- package/packages/ampcode/commands/slack-gif-creator/templates/morph.py +0 -329
- package/packages/ampcode/commands/slack-gif-creator/templates/move.py +0 -293
- package/packages/ampcode/commands/slack-gif-creator/templates/pulse.py +0 -268
- package/packages/ampcode/commands/slack-gif-creator/templates/shake.py +0 -127
- package/packages/ampcode/commands/slack-gif-creator/templates/slide.py +0 -291
- package/packages/ampcode/commands/slack-gif-creator/templates/spin.py +0 -269
- package/packages/ampcode/commands/slack-gif-creator/templates/wiggle.py +0 -300
- package/packages/ampcode/commands/slack-gif-creator/templates/zoom.py +0 -312
- package/packages/ampcode/commands/slack-gif-creator.md +0 -646
- package/packages/ampcode/commands/theme-factory/themes/arctic-frost.md +0 -19
- package/packages/ampcode/commands/theme-factory/themes/botanical-garden.md +0 -19
- package/packages/ampcode/commands/theme-factory/themes/desert-rose.md +0 -19
- package/packages/ampcode/commands/theme-factory/themes/forest-canopy.md +0 -19
- package/packages/ampcode/commands/theme-factory/themes/golden-hour.md +0 -19
- package/packages/ampcode/commands/theme-factory/themes/midnight-galaxy.md +0 -19
- package/packages/ampcode/commands/theme-factory/themes/modern-minimalist.md +0 -19
- package/packages/ampcode/commands/theme-factory/themes/ocean-depths.md +0 -19
- package/packages/ampcode/commands/theme-factory/themes/sunset-boulevard.md +0 -19
- package/packages/ampcode/commands/theme-factory/themes/tech-innovation.md +0 -19
- package/packages/ampcode/commands/theme-factory.md +0 -58
- package/packages/ampcode/commands/webapp-testing/examples/console_logging.py +0 -35
- package/packages/ampcode/commands/webapp-testing/examples/element_discovery.py +0 -40
- package/packages/ampcode/commands/webapp-testing/examples/static_html_automation.py +0 -33
- package/packages/ampcode/commands/webapp-testing/scripts/with_server.py +0 -106
- package/packages/ampcode/commands/webapp-testing.md +0 -96
- package/packages/ampcode/commands/xlsx/recalc.py +0 -178
- package/packages/ampcode/commands/xlsx.md +0 -289
- package/packages/ampcode/resources/agent-teams.yaml +0 -50
- package/packages/ampcode/resources/checklists.md +0 -1724
- package/packages/ampcode/resources/data.md +0 -1372
- package/packages/ampcode/resources/task-briefs.md +0 -4428
- package/packages/ampcode/resources/templates.yaml +0 -5810
- package/packages/ampcode/resources/workflows.yaml +0 -1513
- package/packages/ampcode/subagentic-manual.md +0 -155
- package/packages/claude/.claude-plugin/marketplace.json +0 -67
- package/packages/claude/.claude-plugin/plugin-lite.json +0 -44
- package/packages/claude/.claude-plugin/plugin-pro.json +0 -189
- package/packages/claude/.claude-plugin/plugin-standard.json +0 -153
- package/packages/claude/.claude-plugin/plugin.json +0 -47
- package/packages/claude/AGENTS.md +0 -389
- package/packages/claude/agents/context-initializer.md +0 -472
- package/packages/claude/agents/full-stack-dev.md +0 -80
- package/packages/claude/agents/product-manager.md +0 -82
- package/packages/claude/agents/product-owner.md +0 -97
- package/packages/claude/hooks/register-agents.js +0 -123
- package/packages/claude/hooks/session-start.js +0 -159
- package/packages/claude/resources/agent-teams.yaml +0 -50
- package/packages/claude/resources/checklists.md +0 -1724
- package/packages/claude/resources/data.md +0 -1372
- package/packages/claude/resources/task-briefs.md +0 -4428
- package/packages/claude/resources/templates.yaml +0 -5810
- package/packages/claude/resources/workflows.yaml +0 -1513
- package/packages/claude/skills/README.md +0 -76
- package/packages/claude/skills/algorithmic-art/LICENSE.txt +0 -202
- package/packages/claude/skills/algorithmic-art/SKILL.md +0 -405
- package/packages/claude/skills/algorithmic-art/templates/generator_template.js +0 -223
- package/packages/claude/skills/algorithmic-art/templates/viewer.html +0 -599
- package/packages/claude/skills/artifacts-builder/LICENSE.txt +0 -202
- package/packages/claude/skills/artifacts-builder/SKILL.md +0 -74
- package/packages/claude/skills/artifacts-builder/scripts/bundle-artifact.sh +0 -54
- package/packages/claude/skills/artifacts-builder/scripts/init-artifact.sh +0 -322
- package/packages/claude/skills/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/packages/claude/skills/brand-guidelines/LICENSE.txt +0 -202
- package/packages/claude/skills/brand-guidelines/SKILL.md +0 -73
- package/packages/claude/skills/canvas-design/LICENSE.txt +0 -202
- package/packages/claude/skills/canvas-design/SKILL.md +0 -130
- package/packages/claude/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +0 -94
- package/packages/claude/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Jura-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Lora-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/packages/claude/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +0 -93
- package/packages/claude/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/packages/claude/skills/docx/LICENSE.txt +0 -30
- package/packages/claude/skills/docx/SKILL.md +0 -197
- package/packages/claude/skills/docx/docx-js.md +0 -350
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/packages/claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/packages/claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/packages/claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/packages/claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/packages/claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/packages/claude/skills/docx/ooxml/schemas/mce/mc.xsd +0 -75
- package/packages/claude/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/packages/claude/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/packages/claude/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/packages/claude/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/packages/claude/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/packages/claude/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/packages/claude/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/packages/claude/skills/docx/ooxml/scripts/pack.py +0 -159
- package/packages/claude/skills/docx/ooxml/scripts/unpack.py +0 -29
- package/packages/claude/skills/docx/ooxml/scripts/validate.py +0 -69
- package/packages/claude/skills/docx/ooxml/scripts/validation/__init__.py +0 -15
- package/packages/claude/skills/docx/ooxml/scripts/validation/base.py +0 -951
- package/packages/claude/skills/docx/ooxml/scripts/validation/docx.py +0 -274
- package/packages/claude/skills/docx/ooxml/scripts/validation/pptx.py +0 -315
- package/packages/claude/skills/docx/ooxml/scripts/validation/redlining.py +0 -279
- package/packages/claude/skills/docx/ooxml.md +0 -610
- package/packages/claude/skills/docx/scripts/__init__.py +0 -1
- package/packages/claude/skills/docx/scripts/document.py +0 -1276
- package/packages/claude/skills/docx/scripts/templates/comments.xml +0 -3
- package/packages/claude/skills/docx/scripts/templates/commentsExtended.xml +0 -3
- package/packages/claude/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
- package/packages/claude/skills/docx/scripts/templates/commentsIds.xml +0 -3
- package/packages/claude/skills/docx/scripts/templates/people.xml +0 -3
- package/packages/claude/skills/docx/scripts/utilities.py +0 -374
- package/packages/claude/skills/internal-comms/LICENSE.txt +0 -202
- package/packages/claude/skills/internal-comms/SKILL.md +0 -32
- package/packages/claude/skills/internal-comms/examples/3p-updates.md +0 -47
- package/packages/claude/skills/internal-comms/examples/company-newsletter.md +0 -65
- package/packages/claude/skills/internal-comms/examples/faq-answers.md +0 -30
- package/packages/claude/skills/internal-comms/examples/general-comms.md +0 -16
- package/packages/claude/skills/mcp-builder/LICENSE.txt +0 -202
- package/packages/claude/skills/mcp-builder/SKILL.md +0 -328
- package/packages/claude/skills/mcp-builder/reference/evaluation.md +0 -602
- package/packages/claude/skills/mcp-builder/reference/mcp_best_practices.md +0 -915
- package/packages/claude/skills/mcp-builder/reference/node_mcp_server.md +0 -916
- package/packages/claude/skills/mcp-builder/reference/python_mcp_server.md +0 -752
- package/packages/claude/skills/mcp-builder/scripts/connections.py +0 -151
- package/packages/claude/skills/mcp-builder/scripts/evaluation.py +0 -373
- package/packages/claude/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
- package/packages/claude/skills/mcp-builder/scripts/requirements.txt +0 -2
- package/packages/claude/skills/pdf/LICENSE.txt +0 -30
- package/packages/claude/skills/pdf/SKILL.md +0 -294
- package/packages/claude/skills/pdf/forms.md +0 -205
- package/packages/claude/skills/pdf/reference.md +0 -612
- package/packages/claude/skills/pdf/scripts/check_bounding_boxes.py +0 -70
- package/packages/claude/skills/pdf/scripts/check_bounding_boxes_test.py +0 -226
- package/packages/claude/skills/pdf/scripts/check_fillable_fields.py +0 -12
- package/packages/claude/skills/pdf/scripts/convert_pdf_to_images.py +0 -35
- package/packages/claude/skills/pdf/scripts/create_validation_image.py +0 -41
- package/packages/claude/skills/pdf/scripts/extract_form_field_info.py +0 -152
- package/packages/claude/skills/pdf/scripts/fill_fillable_fields.py +0 -114
- package/packages/claude/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
- package/packages/claude/skills/pptx/LICENSE.txt +0 -30
- package/packages/claude/skills/pptx/SKILL.md +0 -484
- package/packages/claude/skills/pptx/html2pptx.md +0 -625
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/packages/claude/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/packages/claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/packages/claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/packages/claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/packages/claude/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/packages/claude/skills/pptx/ooxml/schemas/mce/mc.xsd +0 -75
- package/packages/claude/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/packages/claude/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/packages/claude/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/packages/claude/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/packages/claude/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/packages/claude/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/packages/claude/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/packages/claude/skills/pptx/ooxml/scripts/pack.py +0 -159
- package/packages/claude/skills/pptx/ooxml/scripts/unpack.py +0 -29
- package/packages/claude/skills/pptx/ooxml/scripts/validate.py +0 -69
- package/packages/claude/skills/pptx/ooxml/scripts/validation/__init__.py +0 -15
- package/packages/claude/skills/pptx/ooxml/scripts/validation/base.py +0 -951
- package/packages/claude/skills/pptx/ooxml/scripts/validation/docx.py +0 -274
- package/packages/claude/skills/pptx/ooxml/scripts/validation/pptx.py +0 -315
- package/packages/claude/skills/pptx/ooxml/scripts/validation/redlining.py +0 -279
- package/packages/claude/skills/pptx/ooxml.md +0 -427
- package/packages/claude/skills/pptx/scripts/html2pptx.js +0 -979
- package/packages/claude/skills/pptx/scripts/inventory.py +0 -1020
- package/packages/claude/skills/pptx/scripts/rearrange.py +0 -231
- package/packages/claude/skills/pptx/scripts/replace.py +0 -385
- package/packages/claude/skills/pptx/scripts/thumbnail.py +0 -450
- package/packages/claude/skills/slack-gif-creator/LICENSE.txt +0 -202
- package/packages/claude/skills/slack-gif-creator/SKILL.md +0 -646
- package/packages/claude/skills/slack-gif-creator/core/color_palettes.py +0 -302
- package/packages/claude/skills/slack-gif-creator/core/easing.py +0 -230
- package/packages/claude/skills/slack-gif-creator/core/frame_composer.py +0 -469
- package/packages/claude/skills/slack-gif-creator/core/gif_builder.py +0 -246
- package/packages/claude/skills/slack-gif-creator/core/typography.py +0 -357
- package/packages/claude/skills/slack-gif-creator/core/validators.py +0 -264
- package/packages/claude/skills/slack-gif-creator/core/visual_effects.py +0 -494
- package/packages/claude/skills/slack-gif-creator/requirements.txt +0 -4
- package/packages/claude/skills/slack-gif-creator/templates/bounce.py +0 -106
- package/packages/claude/skills/slack-gif-creator/templates/explode.py +0 -331
- package/packages/claude/skills/slack-gif-creator/templates/fade.py +0 -329
- package/packages/claude/skills/slack-gif-creator/templates/flip.py +0 -291
- package/packages/claude/skills/slack-gif-creator/templates/kaleidoscope.py +0 -211
- package/packages/claude/skills/slack-gif-creator/templates/morph.py +0 -329
- package/packages/claude/skills/slack-gif-creator/templates/move.py +0 -293
- package/packages/claude/skills/slack-gif-creator/templates/pulse.py +0 -268
- package/packages/claude/skills/slack-gif-creator/templates/shake.py +0 -127
- package/packages/claude/skills/slack-gif-creator/templates/slide.py +0 -291
- package/packages/claude/skills/slack-gif-creator/templates/spin.py +0 -269
- package/packages/claude/skills/slack-gif-creator/templates/wiggle.py +0 -300
- package/packages/claude/skills/slack-gif-creator/templates/zoom.py +0 -312
- package/packages/claude/skills/theme-factory/LICENSE.txt +0 -202
- package/packages/claude/skills/theme-factory/SKILL.md +0 -59
- package/packages/claude/skills/theme-factory/theme-showcase.pdf +0 -0
- package/packages/claude/skills/theme-factory/themes/arctic-frost.md +0 -19
- package/packages/claude/skills/theme-factory/themes/botanical-garden.md +0 -19
- package/packages/claude/skills/theme-factory/themes/desert-rose.md +0 -19
- package/packages/claude/skills/theme-factory/themes/forest-canopy.md +0 -19
- package/packages/claude/skills/theme-factory/themes/golden-hour.md +0 -19
- package/packages/claude/skills/theme-factory/themes/midnight-galaxy.md +0 -19
- package/packages/claude/skills/theme-factory/themes/modern-minimalist.md +0 -19
- package/packages/claude/skills/theme-factory/themes/ocean-depths.md +0 -19
- package/packages/claude/skills/theme-factory/themes/sunset-boulevard.md +0 -19
- package/packages/claude/skills/theme-factory/themes/tech-innovation.md +0 -19
- package/packages/claude/skills/webapp-testing/LICENSE.txt +0 -202
- package/packages/claude/skills/webapp-testing/SKILL.md +0 -96
- package/packages/claude/skills/webapp-testing/examples/console_logging.py +0 -35
- package/packages/claude/skills/webapp-testing/examples/element_discovery.py +0 -40
- package/packages/claude/skills/webapp-testing/examples/static_html_automation.py +0 -33
- package/packages/claude/skills/webapp-testing/scripts/with_server.py +0 -106
- package/packages/claude/skills/xlsx/LICENSE.txt +0 -30
- package/packages/claude/skills/xlsx/SKILL.md +0 -289
- package/packages/claude/skills/xlsx/recalc.py +0 -178
- package/packages/claude/subagentic-manual.md +0 -155
- package/packages/droid/commands/README.md +0 -76
- package/packages/droid/commands/algorithmic-art/templates/generator_template.js +0 -223
- package/packages/droid/commands/algorithmic-art/templates/viewer.html +0 -599
- package/packages/droid/commands/algorithmic-art.md +0 -159
- package/packages/droid/commands/artifacts-builder/scripts/bundle-artifact.sh +0 -54
- package/packages/droid/commands/artifacts-builder/scripts/init-artifact.sh +0 -322
- package/packages/droid/commands/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/packages/droid/commands/artifacts-builder.md +0 -285
- package/packages/droid/commands/brand-guidelines.md +0 -123
- package/packages/droid/commands/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/BigShoulders-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Boldonse-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/DMMono-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/EricaOne-OFL.txt +0 -94
- package/packages/droid/commands/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/GeistMono-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Gloock-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Italiana-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Jura-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Lora-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/NationalPark-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Outfit-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/PixelifySans-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/RedHatMono-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Silkscreen-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/SmoochSans-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/Tektur-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/WorkSans-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design/canvas-fonts/YoungSerif-OFL.txt +0 -93
- package/packages/droid/commands/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/packages/droid/commands/canvas-design.md +0 -155
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/packages/droid/commands/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/packages/droid/commands/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/packages/droid/commands/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/packages/droid/commands/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/packages/droid/commands/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/packages/droid/commands/docx/ooxml/schemas/mce/mc.xsd +0 -75
- package/packages/droid/commands/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/packages/droid/commands/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/packages/droid/commands/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/packages/droid/commands/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/packages/droid/commands/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/packages/droid/commands/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/packages/droid/commands/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/packages/droid/commands/docx/ooxml/scripts/pack.py +0 -159
- package/packages/droid/commands/docx/ooxml/scripts/unpack.py +0 -29
- package/packages/droid/commands/docx/ooxml/scripts/validate.py +0 -69
- package/packages/droid/commands/docx/ooxml/scripts/validation/__init__.py +0 -15
- package/packages/droid/commands/docx/ooxml/scripts/validation/base.py +0 -951
- package/packages/droid/commands/docx/ooxml/scripts/validation/docx.py +0 -274
- package/packages/droid/commands/docx/ooxml/scripts/validation/pptx.py +0 -315
- package/packages/droid/commands/docx/ooxml/scripts/validation/redlining.py +0 -279
- package/packages/droid/commands/docx/scripts/__init__.py +0 -1
- package/packages/droid/commands/docx/scripts/document.py +0 -1276
- package/packages/droid/commands/docx/scripts/templates/comments.xml +0 -3
- package/packages/droid/commands/docx/scripts/templates/commentsExtended.xml +0 -3
- package/packages/droid/commands/docx/scripts/templates/commentsExtensible.xml +0 -3
- package/packages/droid/commands/docx/scripts/templates/commentsIds.xml +0 -3
- package/packages/droid/commands/docx/scripts/templates/people.xml +0 -3
- package/packages/droid/commands/docx/scripts/utilities.py +0 -374
- package/packages/droid/commands/docx.md +0 -255
- package/packages/droid/commands/internal-comms/examples/3p-updates.md +0 -47
- package/packages/droid/commands/internal-comms/examples/company-newsletter.md +0 -65
- package/packages/droid/commands/internal-comms/examples/faq-answers.md +0 -30
- package/packages/droid/commands/internal-comms/examples/general-comms.md +0 -16
- package/packages/droid/commands/internal-comms.md +0 -142
- package/packages/droid/commands/mcp-builder/reference/evaluation.md +0 -602
- package/packages/droid/commands/mcp-builder/reference/mcp_best_practices.md +0 -915
- package/packages/droid/commands/mcp-builder/reference/node_mcp_server.md +0 -916
- package/packages/droid/commands/mcp-builder/reference/python_mcp_server.md +0 -752
- package/packages/droid/commands/mcp-builder/scripts/connections.py +0 -151
- package/packages/droid/commands/mcp-builder/scripts/evaluation.py +0 -373
- package/packages/droid/commands/mcp-builder/scripts/example_evaluation.xml +0 -22
- package/packages/droid/commands/mcp-builder/scripts/requirements.txt +0 -2
- package/packages/droid/commands/mcp-builder.md +0 -282
- package/packages/droid/commands/pdf/scripts/check_bounding_boxes.py +0 -70
- package/packages/droid/commands/pdf/scripts/check_bounding_boxes_test.py +0 -226
- package/packages/droid/commands/pdf/scripts/check_fillable_fields.py +0 -12
- package/packages/droid/commands/pdf/scripts/convert_pdf_to_images.py +0 -35
- package/packages/droid/commands/pdf/scripts/create_validation_image.py +0 -41
- package/packages/droid/commands/pdf/scripts/extract_form_field_info.py +0 -152
- package/packages/droid/commands/pdf/scripts/fill_fillable_fields.py +0 -114
- package/packages/droid/commands/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
- package/packages/droid/commands/pdf.md +0 -194
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/packages/droid/commands/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/packages/droid/commands/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/packages/droid/commands/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/packages/droid/commands/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/packages/droid/commands/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/packages/droid/commands/pptx/ooxml/schemas/mce/mc.xsd +0 -75
- package/packages/droid/commands/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/packages/droid/commands/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/packages/droid/commands/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/packages/droid/commands/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/packages/droid/commands/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/packages/droid/commands/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/packages/droid/commands/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/packages/droid/commands/pptx/ooxml/scripts/pack.py +0 -159
- package/packages/droid/commands/pptx/ooxml/scripts/unpack.py +0 -29
- package/packages/droid/commands/pptx/ooxml/scripts/validate.py +0 -69
- package/packages/droid/commands/pptx/ooxml/scripts/validation/__init__.py +0 -15
- package/packages/droid/commands/pptx/ooxml/scripts/validation/base.py +0 -951
- package/packages/droid/commands/pptx/ooxml/scripts/validation/docx.py +0 -274
- package/packages/droid/commands/pptx/ooxml/scripts/validation/pptx.py +0 -315
- package/packages/droid/commands/pptx/ooxml/scripts/validation/redlining.py +0 -279
- package/packages/droid/commands/pptx/scripts/html2pptx.js +0 -979
- package/packages/droid/commands/pptx/scripts/inventory.py +0 -1020
- package/packages/droid/commands/pptx/scripts/rearrange.py +0 -231
- package/packages/droid/commands/pptx/scripts/replace.py +0 -385
- package/packages/droid/commands/pptx/scripts/thumbnail.py +0 -450
- package/packages/droid/commands/pptx.md +0 -272
- package/packages/droid/commands/slack-gif-creator/core/color_palettes.py +0 -302
- package/packages/droid/commands/slack-gif-creator/core/easing.py +0 -230
- package/packages/droid/commands/slack-gif-creator/core/frame_composer.py +0 -469
- package/packages/droid/commands/slack-gif-creator/core/gif_builder.py +0 -246
- package/packages/droid/commands/slack-gif-creator/core/typography.py +0 -357
- package/packages/droid/commands/slack-gif-creator/core/validators.py +0 -264
- package/packages/droid/commands/slack-gif-creator/core/visual_effects.py +0 -494
- package/packages/droid/commands/slack-gif-creator/templates/bounce.py +0 -106
- package/packages/droid/commands/slack-gif-creator/templates/explode.py +0 -331
- package/packages/droid/commands/slack-gif-creator/templates/fade.py +0 -329
- package/packages/droid/commands/slack-gif-creator/templates/flip.py +0 -291
- package/packages/droid/commands/slack-gif-creator/templates/kaleidoscope.py +0 -211
- package/packages/droid/commands/slack-gif-creator/templates/morph.py +0 -329
- package/packages/droid/commands/slack-gif-creator/templates/move.py +0 -293
- package/packages/droid/commands/slack-gif-creator/templates/pulse.py +0 -268
- package/packages/droid/commands/slack-gif-creator/templates/shake.py +0 -127
- package/packages/droid/commands/slack-gif-creator/templates/slide.py +0 -291
- package/packages/droid/commands/slack-gif-creator/templates/spin.py +0 -269
- package/packages/droid/commands/slack-gif-creator/templates/wiggle.py +0 -300
- package/packages/droid/commands/slack-gif-creator/templates/zoom.py +0 -312
- package/packages/droid/commands/slack-gif-creator.md +0 -340
- package/packages/droid/commands/theme-factory/themes/arctic-frost.md +0 -19
- package/packages/droid/commands/theme-factory/themes/botanical-garden.md +0 -19
- package/packages/droid/commands/theme-factory/themes/desert-rose.md +0 -19
- package/packages/droid/commands/theme-factory/themes/forest-canopy.md +0 -19
- package/packages/droid/commands/theme-factory/themes/golden-hour.md +0 -19
- package/packages/droid/commands/theme-factory/themes/midnight-galaxy.md +0 -19
- package/packages/droid/commands/theme-factory/themes/modern-minimalist.md +0 -19
- package/packages/droid/commands/theme-factory/themes/ocean-depths.md +0 -19
- package/packages/droid/commands/theme-factory/themes/sunset-boulevard.md +0 -19
- package/packages/droid/commands/theme-factory/themes/tech-innovation.md +0 -19
- package/packages/droid/commands/theme-factory.md +0 -146
- package/packages/droid/commands/webapp-testing/examples/console_logging.py +0 -35
- package/packages/droid/commands/webapp-testing/examples/element_discovery.py +0 -40
- package/packages/droid/commands/webapp-testing/examples/static_html_automation.py +0 -33
- package/packages/droid/commands/webapp-testing/scripts/with_server.py +0 -106
- package/packages/droid/commands/webapp-testing.md +0 -275
- package/packages/droid/commands/xlsx/recalc.py +0 -178
- package/packages/droid/commands/xlsx.md +0 -254
- package/packages/droid/droids/context-initializer.md +0 -472
- package/packages/droid/droids/full-stack-dev.md +0 -80
- package/packages/droid/droids/product-manager.md +0 -82
- package/packages/droid/droids/product-owner.md +0 -97
- package/packages/droid/resources/agent-teams.yaml +0 -50
- package/packages/droid/resources/checklists.md +0 -1724
- package/packages/droid/resources/data.md +0 -1372
- package/packages/droid/resources/task-briefs.md +0 -4428
- package/packages/droid/resources/templates.yaml +0 -5810
- package/packages/droid/resources/workflows.yaml +0 -1513
- package/packages/droid/subagentic-manual.md +0 -155
- package/packages/opencode/agent/context-initializer.md +0 -476
- package/packages/opencode/agent/full-stack-dev.md +0 -77
- package/packages/opencode/agent/product-manager.md +0 -86
- package/packages/opencode/agent/product-owner.md +0 -101
- package/packages/opencode/command/README.md +0 -76
- package/packages/opencode/command/algorithmic-art/templates/generator_template.js +0 -223
- package/packages/opencode/command/algorithmic-art/templates/viewer.html +0 -599
- package/packages/opencode/command/algorithmic-art.md +0 -159
- package/packages/opencode/command/artifacts-builder/scripts/bundle-artifact.sh +0 -54
- package/packages/opencode/command/artifacts-builder/scripts/init-artifact.sh +0 -322
- package/packages/opencode/command/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/packages/opencode/command/artifacts-builder.md +0 -285
- package/packages/opencode/command/brand-guidelines.md +0 -123
- package/packages/opencode/command/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/BigShoulders-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Boldonse-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/DMMono-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/EricaOne-OFL.txt +0 -94
- package/packages/opencode/command/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/GeistMono-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Gloock-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Italiana-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Jura-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Lora-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/NationalPark-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Outfit-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/PixelifySans-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/RedHatMono-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Silkscreen-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/SmoochSans-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/Tektur-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/WorkSans-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design/canvas-fonts/YoungSerif-OFL.txt +0 -93
- package/packages/opencode/command/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/packages/opencode/command/canvas-design.md +0 -155
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/packages/opencode/command/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/packages/opencode/command/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/packages/opencode/command/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/packages/opencode/command/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/packages/opencode/command/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/packages/opencode/command/docx/ooxml/schemas/mce/mc.xsd +0 -75
- package/packages/opencode/command/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/packages/opencode/command/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/packages/opencode/command/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/packages/opencode/command/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/packages/opencode/command/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/packages/opencode/command/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/packages/opencode/command/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/packages/opencode/command/docx/ooxml/scripts/pack.py +0 -159
- package/packages/opencode/command/docx/ooxml/scripts/unpack.py +0 -29
- package/packages/opencode/command/docx/ooxml/scripts/validate.py +0 -69
- package/packages/opencode/command/docx/ooxml/scripts/validation/__init__.py +0 -15
- package/packages/opencode/command/docx/ooxml/scripts/validation/base.py +0 -951
- package/packages/opencode/command/docx/ooxml/scripts/validation/docx.py +0 -274
- package/packages/opencode/command/docx/ooxml/scripts/validation/pptx.py +0 -315
- package/packages/opencode/command/docx/ooxml/scripts/validation/redlining.py +0 -279
- package/packages/opencode/command/docx/scripts/__init__.py +0 -1
- package/packages/opencode/command/docx/scripts/document.py +0 -1276
- package/packages/opencode/command/docx/scripts/templates/comments.xml +0 -3
- package/packages/opencode/command/docx/scripts/templates/commentsExtended.xml +0 -3
- package/packages/opencode/command/docx/scripts/templates/commentsExtensible.xml +0 -3
- package/packages/opencode/command/docx/scripts/templates/commentsIds.xml +0 -3
- package/packages/opencode/command/docx/scripts/templates/people.xml +0 -3
- package/packages/opencode/command/docx/scripts/utilities.py +0 -374
- package/packages/opencode/command/docx.md +0 -255
- package/packages/opencode/command/internal-comms/examples/3p-updates.md +0 -47
- package/packages/opencode/command/internal-comms/examples/company-newsletter.md +0 -65
- package/packages/opencode/command/internal-comms/examples/faq-answers.md +0 -30
- package/packages/opencode/command/internal-comms/examples/general-comms.md +0 -16
- package/packages/opencode/command/internal-comms.md +0 -142
- package/packages/opencode/command/mcp-builder/reference/evaluation.md +0 -602
- package/packages/opencode/command/mcp-builder/reference/mcp_best_practices.md +0 -915
- package/packages/opencode/command/mcp-builder/reference/node_mcp_server.md +0 -916
- package/packages/opencode/command/mcp-builder/reference/python_mcp_server.md +0 -752
- package/packages/opencode/command/mcp-builder/scripts/connections.py +0 -151
- package/packages/opencode/command/mcp-builder/scripts/evaluation.py +0 -373
- package/packages/opencode/command/mcp-builder/scripts/example_evaluation.xml +0 -22
- package/packages/opencode/command/mcp-builder/scripts/requirements.txt +0 -2
- package/packages/opencode/command/mcp-builder.md +0 -282
- package/packages/opencode/command/pdf/scripts/check_bounding_boxes.py +0 -70
- package/packages/opencode/command/pdf/scripts/check_bounding_boxes_test.py +0 -226
- package/packages/opencode/command/pdf/scripts/check_fillable_fields.py +0 -12
- package/packages/opencode/command/pdf/scripts/convert_pdf_to_images.py +0 -35
- package/packages/opencode/command/pdf/scripts/create_validation_image.py +0 -41
- package/packages/opencode/command/pdf/scripts/extract_form_field_info.py +0 -152
- package/packages/opencode/command/pdf/scripts/fill_fillable_fields.py +0 -114
- package/packages/opencode/command/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
- package/packages/opencode/command/pdf.md +0 -194
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/packages/opencode/command/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/packages/opencode/command/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/packages/opencode/command/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/packages/opencode/command/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/packages/opencode/command/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/packages/opencode/command/pptx/ooxml/schemas/mce/mc.xsd +0 -75
- package/packages/opencode/command/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/packages/opencode/command/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/packages/opencode/command/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/packages/opencode/command/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/packages/opencode/command/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/packages/opencode/command/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/packages/opencode/command/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/packages/opencode/command/pptx/ooxml/scripts/pack.py +0 -159
- package/packages/opencode/command/pptx/ooxml/scripts/unpack.py +0 -29
- package/packages/opencode/command/pptx/ooxml/scripts/validate.py +0 -69
- package/packages/opencode/command/pptx/ooxml/scripts/validation/__init__.py +0 -15
- package/packages/opencode/command/pptx/ooxml/scripts/validation/base.py +0 -951
- package/packages/opencode/command/pptx/ooxml/scripts/validation/docx.py +0 -274
- package/packages/opencode/command/pptx/ooxml/scripts/validation/pptx.py +0 -315
- package/packages/opencode/command/pptx/ooxml/scripts/validation/redlining.py +0 -279
- package/packages/opencode/command/pptx/scripts/html2pptx.js +0 -979
- package/packages/opencode/command/pptx/scripts/inventory.py +0 -1020
- package/packages/opencode/command/pptx/scripts/rearrange.py +0 -231
- package/packages/opencode/command/pptx/scripts/replace.py +0 -385
- package/packages/opencode/command/pptx/scripts/thumbnail.py +0 -450
- package/packages/opencode/command/pptx.md +0 -272
- package/packages/opencode/command/slack-gif-creator/core/color_palettes.py +0 -302
- package/packages/opencode/command/slack-gif-creator/core/easing.py +0 -230
- package/packages/opencode/command/slack-gif-creator/core/frame_composer.py +0 -469
- package/packages/opencode/command/slack-gif-creator/core/gif_builder.py +0 -246
- package/packages/opencode/command/slack-gif-creator/core/typography.py +0 -357
- package/packages/opencode/command/slack-gif-creator/core/validators.py +0 -264
- package/packages/opencode/command/slack-gif-creator/core/visual_effects.py +0 -494
- package/packages/opencode/command/slack-gif-creator/templates/bounce.py +0 -106
- package/packages/opencode/command/slack-gif-creator/templates/explode.py +0 -331
- package/packages/opencode/command/slack-gif-creator/templates/fade.py +0 -329
- package/packages/opencode/command/slack-gif-creator/templates/flip.py +0 -291
- package/packages/opencode/command/slack-gif-creator/templates/kaleidoscope.py +0 -211
- package/packages/opencode/command/slack-gif-creator/templates/morph.py +0 -329
- package/packages/opencode/command/slack-gif-creator/templates/move.py +0 -293
- package/packages/opencode/command/slack-gif-creator/templates/pulse.py +0 -268
- package/packages/opencode/command/slack-gif-creator/templates/shake.py +0 -127
- package/packages/opencode/command/slack-gif-creator/templates/slide.py +0 -291
- package/packages/opencode/command/slack-gif-creator/templates/spin.py +0 -269
- package/packages/opencode/command/slack-gif-creator/templates/wiggle.py +0 -300
- package/packages/opencode/command/slack-gif-creator/templates/zoom.py +0 -312
- package/packages/opencode/command/slack-gif-creator.md +0 -340
- package/packages/opencode/command/theme-factory/themes/arctic-frost.md +0 -19
- package/packages/opencode/command/theme-factory/themes/botanical-garden.md +0 -19
- package/packages/opencode/command/theme-factory/themes/desert-rose.md +0 -19
- package/packages/opencode/command/theme-factory/themes/forest-canopy.md +0 -19
- package/packages/opencode/command/theme-factory/themes/golden-hour.md +0 -19
- package/packages/opencode/command/theme-factory/themes/midnight-galaxy.md +0 -19
- package/packages/opencode/command/theme-factory/themes/modern-minimalist.md +0 -19
- package/packages/opencode/command/theme-factory/themes/ocean-depths.md +0 -19
- package/packages/opencode/command/theme-factory/themes/sunset-boulevard.md +0 -19
- package/packages/opencode/command/theme-factory/themes/tech-innovation.md +0 -19
- package/packages/opencode/command/theme-factory.md +0 -146
- package/packages/opencode/command/webapp-testing/examples/console_logging.py +0 -35
- package/packages/opencode/command/webapp-testing/examples/element_discovery.py +0 -40
- package/packages/opencode/command/webapp-testing/examples/static_html_automation.py +0 -33
- package/packages/opencode/command/webapp-testing/scripts/with_server.py +0 -106
- package/packages/opencode/command/webapp-testing.md +0 -275
- package/packages/opencode/command/xlsx/recalc.py +0 -178
- package/packages/opencode/command/xlsx.md +0 -254
- package/packages/opencode/resources/agent-teams.yaml +0 -50
- package/packages/opencode/resources/checklists.md +0 -1724
- package/packages/opencode/resources/data.md +0 -1372
- package/packages/opencode/resources/task-briefs.md +0 -4428
- package/packages/opencode/resources/templates.yaml +0 -5810
- package/packages/opencode/resources/workflows.yaml +0 -1513
- package/packages/opencode/subagentic-manual.md +0 -155
|
@@ -1,1117 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pdf
|
|
3
|
-
description: Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.
|
|
4
|
-
license: Proprietary. LICENSE.txt has complete terms
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# PDF Processing Guide
|
|
8
|
-
|
|
9
|
-
## Overview
|
|
10
|
-
|
|
11
|
-
This guide covers essential PDF processing operations using Python libraries and command-line tools. For advanced features, JavaScript libraries, and detailed examples, see reference.md. If you need to fill out a PDF form, read forms.md and follow its instructions.
|
|
12
|
-
|
|
13
|
-
## Quick Start
|
|
14
|
-
|
|
15
|
-
```python
|
|
16
|
-
from pypdf import PdfReader, PdfWriter
|
|
17
|
-
|
|
18
|
-
# Read a PDF
|
|
19
|
-
reader = PdfReader("document.pdf")
|
|
20
|
-
print(f"Pages: {len(reader.pages)}")
|
|
21
|
-
|
|
22
|
-
# Extract text
|
|
23
|
-
text = ""
|
|
24
|
-
for page in reader.pages:
|
|
25
|
-
text += page.extract_text()
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Python Libraries
|
|
29
|
-
|
|
30
|
-
### pypdf - Basic Operations
|
|
31
|
-
|
|
32
|
-
#### Merge PDFs
|
|
33
|
-
```python
|
|
34
|
-
from pypdf import PdfWriter, PdfReader
|
|
35
|
-
|
|
36
|
-
writer = PdfWriter()
|
|
37
|
-
for pdf_file in ["doc1.pdf", "doc2.pdf", "doc3.pdf"]:
|
|
38
|
-
reader = PdfReader(pdf_file)
|
|
39
|
-
for page in reader.pages:
|
|
40
|
-
writer.add_page(page)
|
|
41
|
-
|
|
42
|
-
with open("merged.pdf", "wb") as output:
|
|
43
|
-
writer.write(output)
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
#### Split PDF
|
|
47
|
-
```python
|
|
48
|
-
reader = PdfReader("input.pdf")
|
|
49
|
-
for i, page in enumerate(reader.pages):
|
|
50
|
-
writer = PdfWriter()
|
|
51
|
-
writer.add_page(page)
|
|
52
|
-
with open(f"page_{i+1}.pdf", "wb") as output:
|
|
53
|
-
writer.write(output)
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
#### Extract Metadata
|
|
57
|
-
```python
|
|
58
|
-
reader = PdfReader("document.pdf")
|
|
59
|
-
meta = reader.metadata
|
|
60
|
-
print(f"Title: {meta.title}")
|
|
61
|
-
print(f"Author: {meta.author}")
|
|
62
|
-
print(f"Subject: {meta.subject}")
|
|
63
|
-
print(f"Creator: {meta.creator}")
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
#### Rotate Pages
|
|
67
|
-
```python
|
|
68
|
-
reader = PdfReader("input.pdf")
|
|
69
|
-
writer = PdfWriter()
|
|
70
|
-
|
|
71
|
-
page = reader.pages[0]
|
|
72
|
-
page.rotate(90) # Rotate 90 degrees clockwise
|
|
73
|
-
writer.add_page(page)
|
|
74
|
-
|
|
75
|
-
with open("rotated.pdf", "wb") as output:
|
|
76
|
-
writer.write(output)
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### pdfplumber - Text and Table Extraction
|
|
80
|
-
|
|
81
|
-
#### Extract Text with Layout
|
|
82
|
-
```python
|
|
83
|
-
import pdfplumber
|
|
84
|
-
|
|
85
|
-
with pdfplumber.open("document.pdf") as pdf:
|
|
86
|
-
for page in pdf.pages:
|
|
87
|
-
text = page.extract_text()
|
|
88
|
-
print(text)
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
#### Extract Tables
|
|
92
|
-
```python
|
|
93
|
-
with pdfplumber.open("document.pdf") as pdf:
|
|
94
|
-
for i, page in enumerate(pdf.pages):
|
|
95
|
-
tables = page.extract_tables()
|
|
96
|
-
for j, table in enumerate(tables):
|
|
97
|
-
print(f"Table {j+1} on page {i+1}:")
|
|
98
|
-
for row in table:
|
|
99
|
-
print(row)
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
#### Advanced Table Extraction
|
|
103
|
-
```python
|
|
104
|
-
import pandas as pd
|
|
105
|
-
|
|
106
|
-
with pdfplumber.open("document.pdf") as pdf:
|
|
107
|
-
all_tables = []
|
|
108
|
-
for page in pdf.pages:
|
|
109
|
-
tables = page.extract_tables()
|
|
110
|
-
for table in tables:
|
|
111
|
-
if table: # Check if table is not empty
|
|
112
|
-
df = pd.DataFrame(table[1:], columns=table[0])
|
|
113
|
-
all_tables.append(df)
|
|
114
|
-
|
|
115
|
-
# Combine all tables
|
|
116
|
-
if all_tables:
|
|
117
|
-
combined_df = pd.concat(all_tables, ignore_index=True)
|
|
118
|
-
combined_df.to_excel("extracted_tables.xlsx", index=False)
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### reportlab - Create PDFs
|
|
122
|
-
|
|
123
|
-
#### Basic PDF Creation
|
|
124
|
-
```python
|
|
125
|
-
from reportlab.lib.pagesizes import letter
|
|
126
|
-
from reportlab.pdfgen import canvas
|
|
127
|
-
|
|
128
|
-
c = canvas.Canvas("hello.pdf", pagesize=letter)
|
|
129
|
-
width, height = letter
|
|
130
|
-
|
|
131
|
-
# Add text
|
|
132
|
-
c.drawString(100, height - 100, "Hello World!")
|
|
133
|
-
c.drawString(100, height - 120, "This is a PDF created with reportlab")
|
|
134
|
-
|
|
135
|
-
# Add a line
|
|
136
|
-
c.line(100, height - 140, 400, height - 140)
|
|
137
|
-
|
|
138
|
-
# Save
|
|
139
|
-
c.save()
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
#### Create PDF with Multiple Pages
|
|
143
|
-
```python
|
|
144
|
-
from reportlab.lib.pagesizes import letter
|
|
145
|
-
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak
|
|
146
|
-
from reportlab.lib.styles import getSampleStyleSheet
|
|
147
|
-
|
|
148
|
-
doc = SimpleDocTemplate("report.pdf", pagesize=letter)
|
|
149
|
-
styles = getSampleStyleSheet()
|
|
150
|
-
story = []
|
|
151
|
-
|
|
152
|
-
# Add content
|
|
153
|
-
title = Paragraph("Report Title", styles['Title'])
|
|
154
|
-
story.append(title)
|
|
155
|
-
story.append(Spacer(1, 12))
|
|
156
|
-
|
|
157
|
-
body = Paragraph("This is the body of the report. " * 20, styles['Normal'])
|
|
158
|
-
story.append(body)
|
|
159
|
-
story.append(PageBreak())
|
|
160
|
-
|
|
161
|
-
# Page 2
|
|
162
|
-
story.append(Paragraph("Page 2", styles['Heading1']))
|
|
163
|
-
story.append(Paragraph("Content for page 2", styles['Normal']))
|
|
164
|
-
|
|
165
|
-
# Build PDF
|
|
166
|
-
doc.build(story)
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
## Command-Line Tools
|
|
170
|
-
|
|
171
|
-
### pdftotext (poppler-utils)
|
|
172
|
-
```bash
|
|
173
|
-
# Extract text
|
|
174
|
-
pdftotext input.pdf output.txt
|
|
175
|
-
|
|
176
|
-
# Extract text preserving layout
|
|
177
|
-
pdftotext -layout input.pdf output.txt
|
|
178
|
-
|
|
179
|
-
# Extract specific pages
|
|
180
|
-
pdftotext -f 1 -l 5 input.pdf output.txt # Pages 1-5
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### qpdf
|
|
184
|
-
```bash
|
|
185
|
-
# Merge PDFs
|
|
186
|
-
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
|
|
187
|
-
|
|
188
|
-
# Split pages
|
|
189
|
-
qpdf input.pdf --pages . 1-5 -- pages1-5.pdf
|
|
190
|
-
qpdf input.pdf --pages . 6-10 -- pages6-10.pdf
|
|
191
|
-
|
|
192
|
-
# Rotate pages
|
|
193
|
-
qpdf input.pdf output.pdf --rotate=+90:1 # Rotate page 1 by 90 degrees
|
|
194
|
-
|
|
195
|
-
# Remove password
|
|
196
|
-
qpdf --password=mypassword --decrypt encrypted.pdf decrypted.pdf
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### pdftk (if available)
|
|
200
|
-
```bash
|
|
201
|
-
# Merge
|
|
202
|
-
pdftk file1.pdf file2.pdf cat output merged.pdf
|
|
203
|
-
|
|
204
|
-
# Split
|
|
205
|
-
pdftk input.pdf burst
|
|
206
|
-
|
|
207
|
-
# Rotate
|
|
208
|
-
pdftk input.pdf rotate 1east output rotated.pdf
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
## Common Tasks
|
|
212
|
-
|
|
213
|
-
### Extract Text from Scanned PDFs
|
|
214
|
-
```python
|
|
215
|
-
# Requires: pip install pytesseract pdf2image
|
|
216
|
-
import pytesseract
|
|
217
|
-
from pdf2image import convert_from_path
|
|
218
|
-
|
|
219
|
-
# Convert PDF to images
|
|
220
|
-
images = convert_from_path('scanned.pdf')
|
|
221
|
-
|
|
222
|
-
# OCR each page
|
|
223
|
-
text = ""
|
|
224
|
-
for i, image in enumerate(images):
|
|
225
|
-
text += f"Page {i+1}:\n"
|
|
226
|
-
text += pytesseract.image_to_string(image)
|
|
227
|
-
text += "\n\n"
|
|
228
|
-
|
|
229
|
-
print(text)
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
### Add Watermark
|
|
233
|
-
```python
|
|
234
|
-
from pypdf import PdfReader, PdfWriter
|
|
235
|
-
|
|
236
|
-
# Create watermark (or load existing)
|
|
237
|
-
watermark = PdfReader("watermark.pdf").pages[0]
|
|
238
|
-
|
|
239
|
-
# Apply to all pages
|
|
240
|
-
reader = PdfReader("document.pdf")
|
|
241
|
-
writer = PdfWriter()
|
|
242
|
-
|
|
243
|
-
for page in reader.pages:
|
|
244
|
-
page.merge_page(watermark)
|
|
245
|
-
writer.add_page(page)
|
|
246
|
-
|
|
247
|
-
with open("watermarked.pdf", "wb") as output:
|
|
248
|
-
writer.write(output)
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
### Extract Images
|
|
252
|
-
```bash
|
|
253
|
-
# Using pdfimages (poppler-utils)
|
|
254
|
-
pdfimages -j input.pdf output_prefix
|
|
255
|
-
|
|
256
|
-
# This extracts all images as output_prefix-000.jpg, output_prefix-001.jpg, etc.
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
### Password Protection
|
|
260
|
-
```python
|
|
261
|
-
from pypdf import PdfReader, PdfWriter
|
|
262
|
-
|
|
263
|
-
reader = PdfReader("input.pdf")
|
|
264
|
-
writer = PdfWriter()
|
|
265
|
-
|
|
266
|
-
for page in reader.pages:
|
|
267
|
-
writer.add_page(page)
|
|
268
|
-
|
|
269
|
-
# Add password
|
|
270
|
-
writer.encrypt("userpassword", "ownerpassword")
|
|
271
|
-
|
|
272
|
-
with open("encrypted.pdf", "wb") as output:
|
|
273
|
-
writer.write(output)
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
## Quick Reference
|
|
277
|
-
|
|
278
|
-
| Task | Best Tool | Command/Code |
|
|
279
|
-
|------|-----------|--------------|
|
|
280
|
-
| Merge PDFs | pypdf | `writer.add_page(page)` |
|
|
281
|
-
| Split PDFs | pypdf | One page per file |
|
|
282
|
-
| Extract text | pdfplumber | `page.extract_text()` |
|
|
283
|
-
| Extract tables | pdfplumber | `page.extract_tables()` |
|
|
284
|
-
| Create PDFs | reportlab | Canvas or Platypus |
|
|
285
|
-
| Command line merge | qpdf | `qpdf --empty --pages ...` |
|
|
286
|
-
| OCR scanned PDFs | pytesseract | Convert to image first |
|
|
287
|
-
| Fill PDF forms | pdf-lib or pypdf (see forms.md) | See forms.md |
|
|
288
|
-
|
|
289
|
-
## Next Steps
|
|
290
|
-
|
|
291
|
-
- For advanced pypdfium2 usage, see reference.md
|
|
292
|
-
- For JavaScript libraries (pdf-lib), see reference.md
|
|
293
|
-
- If you need to fill out a PDF form, follow the instructions in forms.md
|
|
294
|
-
- For troubleshooting guides, see reference.md
|
|
295
|
-
|
|
296
|
-
## Forms
|
|
297
|
-
|
|
298
|
-
**CRITICAL: You MUST complete these steps in order. Do not skip ahead to writing code.**
|
|
299
|
-
|
|
300
|
-
If you need to fill out a PDF form, first check to see if the PDF has fillable form fields. Run this script from this file's directory:
|
|
301
|
-
`python scripts/check_fillable_fields <file.pdf>`, and depending on the result go to either the "Fillable fields" or "Non-fillable fields" and follow those instructions.
|
|
302
|
-
|
|
303
|
-
# Fillable fields
|
|
304
|
-
If the PDF has fillable form fields:
|
|
305
|
-
- Run this script from this file's directory: `python scripts/extract_form_field_info.py <input.pdf> <field_info.json>`. It will create a JSON file with a list of fields in this format:
|
|
306
|
-
```
|
|
307
|
-
[
|
|
308
|
-
{
|
|
309
|
-
"field_id": (unique ID for the field),
|
|
310
|
-
"page": (page number, 1-based),
|
|
311
|
-
"rect": ([left, bottom, right, top] bounding box in PDF coordinates, y=0 is the bottom of the page),
|
|
312
|
-
"type": ("text", "checkbox", "radio_group", or "choice"),
|
|
313
|
-
},
|
|
314
|
-
// Checkboxes have "checked_value" and "unchecked_value" properties:
|
|
315
|
-
{
|
|
316
|
-
"field_id": (unique ID for the field),
|
|
317
|
-
"page": (page number, 1-based),
|
|
318
|
-
"type": "checkbox",
|
|
319
|
-
"checked_value": (Set the field to this value to check the checkbox),
|
|
320
|
-
"unchecked_value": (Set the field to this value to uncheck the checkbox),
|
|
321
|
-
},
|
|
322
|
-
// Radio groups have a "radio_options" list with the possible choices.
|
|
323
|
-
{
|
|
324
|
-
"field_id": (unique ID for the field),
|
|
325
|
-
"page": (page number, 1-based),
|
|
326
|
-
"type": "radio_group",
|
|
327
|
-
"radio_options": [
|
|
328
|
-
{
|
|
329
|
-
"value": (set the field to this value to select this radio option),
|
|
330
|
-
"rect": (bounding box for the radio button for this option)
|
|
331
|
-
},
|
|
332
|
-
// Other radio options
|
|
333
|
-
]
|
|
334
|
-
},
|
|
335
|
-
// Multiple choice fields have a "choice_options" list with the possible choices:
|
|
336
|
-
{
|
|
337
|
-
"field_id": (unique ID for the field),
|
|
338
|
-
"page": (page number, 1-based),
|
|
339
|
-
"type": "choice",
|
|
340
|
-
"choice_options": [
|
|
341
|
-
{
|
|
342
|
-
"value": (set the field to this value to select this option),
|
|
343
|
-
"text": (display text of the option)
|
|
344
|
-
},
|
|
345
|
-
// Other choice options
|
|
346
|
-
],
|
|
347
|
-
}
|
|
348
|
-
]
|
|
349
|
-
```
|
|
350
|
-
- Convert the PDF to PNGs (one image for each page) with this script (run from this file's directory):
|
|
351
|
-
`python scripts/convert_pdf_to_images.py <file.pdf> <output_directory>`
|
|
352
|
-
Then analyze the images to determine the purpose of each form field (make sure to convert the bounding box PDF coordinates to image coordinates).
|
|
353
|
-
- Create a `field_values.json` file in this format with the values to be entered for each field:
|
|
354
|
-
```
|
|
355
|
-
[
|
|
356
|
-
{
|
|
357
|
-
"field_id": "last_name", // Must match the field_id from `extract_form_field_info.py`
|
|
358
|
-
"description": "The user's last name",
|
|
359
|
-
"page": 1, // Must match the "page" value in field_info.json
|
|
360
|
-
"value": "Simpson"
|
|
361
|
-
},
|
|
362
|
-
{
|
|
363
|
-
"field_id": "Checkbox12",
|
|
364
|
-
"description": "Checkbox to be checked if the user is 18 or over",
|
|
365
|
-
"page": 1,
|
|
366
|
-
"value": "/On" // If this is a checkbox, use its "checked_value" value to check it. If it's a radio button group, use one of the "value" values in "radio_options".
|
|
367
|
-
},
|
|
368
|
-
// more fields
|
|
369
|
-
]
|
|
370
|
-
```
|
|
371
|
-
- Run the `fill_fillable_fields.py` script from this file's directory to create a filled-in PDF:
|
|
372
|
-
`python scripts/fill_fillable_fields.py <input pdf> <field_values.json> <output pdf>`
|
|
373
|
-
This script will verify that the field IDs and values you provide are valid; if it prints error messages, correct the appropriate fields and try again.
|
|
374
|
-
|
|
375
|
-
# Non-fillable fields
|
|
376
|
-
If the PDF doesn't have fillable form fields, you'll need to visually determine where the data should be added and create text annotations. Follow the below steps *exactly*. You MUST perform all of these steps to ensure that the the form is accurately completed. Details for each step are below.
|
|
377
|
-
- Convert the PDF to PNG images and determine field bounding boxes.
|
|
378
|
-
- Create a JSON file with field information and validation images showing the bounding boxes.
|
|
379
|
-
- Validate the the bounding boxes.
|
|
380
|
-
- Use the bounding boxes to fill in the form.
|
|
381
|
-
|
|
382
|
-
## Step 1: Visual Analysis (REQUIRED)
|
|
383
|
-
- Convert the PDF to PNG images. Run this script from this file's directory:
|
|
384
|
-
`python scripts/convert_pdf_to_images.py <file.pdf> <output_directory>`
|
|
385
|
-
The script will create a PNG image for each page in the PDF.
|
|
386
|
-
- Carefully examine each PNG image and identify all form fields and areas where the user should enter data. For each form field where the user should enter text, determine bounding boxes for both the form field label, and the area where the user should enter text. The label and entry bounding boxes MUST NOT INTERSECT; the text entry box should only include the area where data should be entered. Usually this area will be immediately to the side, above, or below its label. Entry bounding boxes must be tall and wide enough to contain their text.
|
|
387
|
-
|
|
388
|
-
These are some examples of form structures that you might see:
|
|
389
|
-
|
|
390
|
-
*Label inside box*
|
|
391
|
-
```
|
|
392
|
-
┌────────────────────────┐
|
|
393
|
-
│ Name: │
|
|
394
|
-
└────────────────────────┘
|
|
395
|
-
```
|
|
396
|
-
The input area should be to the right of the "Name" label and extend to the edge of the box.
|
|
397
|
-
|
|
398
|
-
*Label before line*
|
|
399
|
-
```
|
|
400
|
-
Email: _______________________
|
|
401
|
-
```
|
|
402
|
-
The input area should be above the line and include its entire width.
|
|
403
|
-
|
|
404
|
-
*Label under line*
|
|
405
|
-
```
|
|
406
|
-
_________________________
|
|
407
|
-
Name
|
|
408
|
-
```
|
|
409
|
-
The input area should be above the line and include the entire width of the line. This is common for signature and date fields.
|
|
410
|
-
|
|
411
|
-
*Label above line*
|
|
412
|
-
```
|
|
413
|
-
Please enter any special requests:
|
|
414
|
-
________________________________________________
|
|
415
|
-
```
|
|
416
|
-
The input area should extend from the bottom of the label to the line, and should include the entire width of the line.
|
|
417
|
-
|
|
418
|
-
*Checkboxes*
|
|
419
|
-
```
|
|
420
|
-
Are you a US citizen? Yes □ No □
|
|
421
|
-
```
|
|
422
|
-
For checkboxes:
|
|
423
|
-
- Look for small square boxes (□) - these are the actual checkboxes to target. They may be to the left or right of their labels.
|
|
424
|
-
- Distinguish between label text ("Yes", "No") and the clickable checkbox squares.
|
|
425
|
-
- The entry bounding box should cover ONLY the small square, not the text label.
|
|
426
|
-
|
|
427
|
-
### Step 2: Create fields.json and validation images (REQUIRED)
|
|
428
|
-
- Create a file named `fields.json` with information for the form fields and bounding boxes in this format:
|
|
429
|
-
```
|
|
430
|
-
{
|
|
431
|
-
"pages": [
|
|
432
|
-
{
|
|
433
|
-
"page_number": 1,
|
|
434
|
-
"image_width": (first page image width in pixels),
|
|
435
|
-
"image_height": (first page image height in pixels),
|
|
436
|
-
},
|
|
437
|
-
{
|
|
438
|
-
"page_number": 2,
|
|
439
|
-
"image_width": (second page image width in pixels),
|
|
440
|
-
"image_height": (second page image height in pixels),
|
|
441
|
-
}
|
|
442
|
-
// additional pages
|
|
443
|
-
],
|
|
444
|
-
"form_fields": [
|
|
445
|
-
// Example for a text field.
|
|
446
|
-
{
|
|
447
|
-
"page_number": 1,
|
|
448
|
-
"description": "The user's last name should be entered here",
|
|
449
|
-
// Bounding boxes are [left, top, right, bottom]. The bounding boxes for the label and text entry should not overlap.
|
|
450
|
-
"field_label": "Last name",
|
|
451
|
-
"label_bounding_box": [30, 125, 95, 142],
|
|
452
|
-
"entry_bounding_box": [100, 125, 280, 142],
|
|
453
|
-
"entry_text": {
|
|
454
|
-
"text": "Johnson", // This text will be added as an annotation at the entry_bounding_box location
|
|
455
|
-
"font_size": 14, // optional, defaults to 14
|
|
456
|
-
"font_color": "000000", // optional, RRGGBB format, defaults to 000000 (black)
|
|
457
|
-
}
|
|
458
|
-
},
|
|
459
|
-
// Example for a checkbox. TARGET THE SQUARE for the entry bounding box, NOT THE TEXT
|
|
460
|
-
{
|
|
461
|
-
"page_number": 2,
|
|
462
|
-
"description": "Checkbox that should be checked if the user is over 18",
|
|
463
|
-
"entry_bounding_box": [140, 525, 155, 540], // Small box over checkbox square
|
|
464
|
-
"field_label": "Yes",
|
|
465
|
-
"label_bounding_box": [100, 525, 132, 540], // Box containing "Yes" text
|
|
466
|
-
// Use "X" to check a checkbox.
|
|
467
|
-
"entry_text": {
|
|
468
|
-
"text": "X",
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
// additional form field entries
|
|
472
|
-
]
|
|
473
|
-
}
|
|
474
|
-
```
|
|
475
|
-
|
|
476
|
-
Create validation images by running this script from this file's directory for each page:
|
|
477
|
-
`python scripts/create_validation_image.py <page_number> <path_to_fields.json> <input_image_path> <output_image_path>
|
|
478
|
-
|
|
479
|
-
The validation images will have red rectangles where text should be entered, and blue rectangles covering label text.
|
|
480
|
-
|
|
481
|
-
### Step 3: Validate Bounding Boxes (REQUIRED)
|
|
482
|
-
#### Automated intersection check
|
|
483
|
-
- Verify that none of bounding boxes intersect and that the entry bounding boxes are tall enough by checking the fields.json file with the `check_bounding_boxes.py` script (run from this file's directory):
|
|
484
|
-
`python scripts/check_bounding_boxes.py <JSON file>`
|
|
485
|
-
|
|
486
|
-
If there are errors, reanalyze the relevant fields, adjust the bounding boxes, and iterate until there are no remaining errors. Remember: label (blue) bounding boxes should contain text labels, entry (red) boxes should not.
|
|
487
|
-
|
|
488
|
-
#### Manual image inspection
|
|
489
|
-
**CRITICAL: Do not proceed without visually inspecting validation images**
|
|
490
|
-
- Red rectangles must ONLY cover input areas
|
|
491
|
-
- Red rectangles MUST NOT contain any text
|
|
492
|
-
- Blue rectangles should contain label text
|
|
493
|
-
- For checkboxes:
|
|
494
|
-
- Red rectangle MUST be centered on the checkbox square
|
|
495
|
-
- Blue rectangle should cover the text label for the checkbox
|
|
496
|
-
|
|
497
|
-
- If any rectangles look wrong, fix fields.json, regenerate the validation images, and verify again. Repeat this process until the bounding boxes are fully accurate.
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
### Step 4: Add annotations to the PDF
|
|
501
|
-
Run this script from this file's directory to create a filled-out PDF using the information in fields.json:
|
|
502
|
-
`python scripts/fill_pdf_form_with_annotations.py <input_pdf_path> <path_to_fields.json> <output_pdf_path>
|
|
503
|
-
|
|
504
|
-
## Reference
|
|
505
|
-
|
|
506
|
-
# PDF Processing Advanced Reference
|
|
507
|
-
|
|
508
|
-
This document contains advanced PDF processing features, detailed examples, and additional libraries not covered in the main skill instructions.
|
|
509
|
-
|
|
510
|
-
## pypdfium2 Library (Apache/BSD License)
|
|
511
|
-
|
|
512
|
-
### Overview
|
|
513
|
-
pypdfium2 is a Python binding for PDFium (Chromium's PDF library). It's excellent for fast PDF rendering, image generation, and serves as a PyMuPDF replacement.
|
|
514
|
-
|
|
515
|
-
### Render PDF to Images
|
|
516
|
-
```python
|
|
517
|
-
import pypdfium2 as pdfium
|
|
518
|
-
from PIL import Image
|
|
519
|
-
|
|
520
|
-
# Load PDF
|
|
521
|
-
pdf = pdfium.PdfDocument("document.pdf")
|
|
522
|
-
|
|
523
|
-
# Render page to image
|
|
524
|
-
page = pdf[0] # First page
|
|
525
|
-
bitmap = page.render(
|
|
526
|
-
scale=2.0, # Higher resolution
|
|
527
|
-
rotation=0 # No rotation
|
|
528
|
-
)
|
|
529
|
-
|
|
530
|
-
# Convert to PIL Image
|
|
531
|
-
img = bitmap.to_pil()
|
|
532
|
-
img.save("page_1.png", "PNG")
|
|
533
|
-
|
|
534
|
-
# Process multiple pages
|
|
535
|
-
for i, page in enumerate(pdf):
|
|
536
|
-
bitmap = page.render(scale=1.5)
|
|
537
|
-
img = bitmap.to_pil()
|
|
538
|
-
img.save(f"page_{i+1}.jpg", "JPEG", quality=90)
|
|
539
|
-
```
|
|
540
|
-
|
|
541
|
-
### Extract Text with pypdfium2
|
|
542
|
-
```python
|
|
543
|
-
import pypdfium2 as pdfium
|
|
544
|
-
|
|
545
|
-
pdf = pdfium.PdfDocument("document.pdf")
|
|
546
|
-
for i, page in enumerate(pdf):
|
|
547
|
-
text = page.get_text()
|
|
548
|
-
print(f"Page {i+1} text length: {len(text)} chars")
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
## JavaScript Libraries
|
|
552
|
-
|
|
553
|
-
### pdf-lib (MIT License)
|
|
554
|
-
|
|
555
|
-
pdf-lib is a powerful JavaScript library for creating and modifying PDF documents in any JavaScript environment.
|
|
556
|
-
|
|
557
|
-
#### Load and Manipulate Existing PDF
|
|
558
|
-
```javascript
|
|
559
|
-
import { PDFDocument } from 'pdf-lib';
|
|
560
|
-
import fs from 'fs';
|
|
561
|
-
|
|
562
|
-
async function manipulatePDF() {
|
|
563
|
-
// Load existing PDF
|
|
564
|
-
const existingPdfBytes = fs.readFileSync('input.pdf');
|
|
565
|
-
const pdfDoc = await PDFDocument.load(existingPdfBytes);
|
|
566
|
-
|
|
567
|
-
// Get page count
|
|
568
|
-
const pageCount = pdfDoc.getPageCount();
|
|
569
|
-
console.log(`Document has ${pageCount} pages`);
|
|
570
|
-
|
|
571
|
-
// Add new page
|
|
572
|
-
const newPage = pdfDoc.addPage([600, 400]);
|
|
573
|
-
newPage.drawText('Added by pdf-lib', {
|
|
574
|
-
x: 100,
|
|
575
|
-
y: 300,
|
|
576
|
-
size: 16
|
|
577
|
-
});
|
|
578
|
-
|
|
579
|
-
// Save modified PDF
|
|
580
|
-
const pdfBytes = await pdfDoc.save();
|
|
581
|
-
fs.writeFileSync('modified.pdf', pdfBytes);
|
|
582
|
-
}
|
|
583
|
-
```
|
|
584
|
-
|
|
585
|
-
#### Create Complex PDFs from Scratch
|
|
586
|
-
```javascript
|
|
587
|
-
import { PDFDocument, rgb, StandardFonts } from 'pdf-lib';
|
|
588
|
-
import fs from 'fs';
|
|
589
|
-
|
|
590
|
-
async function createPDF() {
|
|
591
|
-
const pdfDoc = await PDFDocument.create();
|
|
592
|
-
|
|
593
|
-
// Add fonts
|
|
594
|
-
const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica);
|
|
595
|
-
const helveticaBold = await pdfDoc.embedFont(StandardFonts.HelveticaBold);
|
|
596
|
-
|
|
597
|
-
// Add page
|
|
598
|
-
const page = pdfDoc.addPage([595, 842]); // A4 size
|
|
599
|
-
const { width, height } = page.getSize();
|
|
600
|
-
|
|
601
|
-
// Add text with styling
|
|
602
|
-
page.drawText('Invoice #12345', {
|
|
603
|
-
x: 50,
|
|
604
|
-
y: height - 50,
|
|
605
|
-
size: 18,
|
|
606
|
-
font: helveticaBold,
|
|
607
|
-
color: rgb(0.2, 0.2, 0.8)
|
|
608
|
-
});
|
|
609
|
-
|
|
610
|
-
// Add rectangle (header background)
|
|
611
|
-
page.drawRectangle({
|
|
612
|
-
x: 40,
|
|
613
|
-
y: height - 100,
|
|
614
|
-
width: width - 80,
|
|
615
|
-
height: 30,
|
|
616
|
-
color: rgb(0.9, 0.9, 0.9)
|
|
617
|
-
});
|
|
618
|
-
|
|
619
|
-
// Add table-like content
|
|
620
|
-
const items = [
|
|
621
|
-
['Item', 'Qty', 'Price', 'Total'],
|
|
622
|
-
['Widget', '2', '$50', '$100'],
|
|
623
|
-
['Gadget', '1', '$75', '$75']
|
|
624
|
-
];
|
|
625
|
-
|
|
626
|
-
let yPos = height - 150;
|
|
627
|
-
items.forEach(row => {
|
|
628
|
-
let xPos = 50;
|
|
629
|
-
row.forEach(cell => {
|
|
630
|
-
page.drawText(cell, {
|
|
631
|
-
x: xPos,
|
|
632
|
-
y: yPos,
|
|
633
|
-
size: 12,
|
|
634
|
-
font: helveticaFont
|
|
635
|
-
});
|
|
636
|
-
xPos += 120;
|
|
637
|
-
});
|
|
638
|
-
yPos -= 25;
|
|
639
|
-
});
|
|
640
|
-
|
|
641
|
-
const pdfBytes = await pdfDoc.save();
|
|
642
|
-
fs.writeFileSync('created.pdf', pdfBytes);
|
|
643
|
-
}
|
|
644
|
-
```
|
|
645
|
-
|
|
646
|
-
#### Advanced Merge and Split Operations
|
|
647
|
-
```javascript
|
|
648
|
-
import { PDFDocument } from 'pdf-lib';
|
|
649
|
-
import fs from 'fs';
|
|
650
|
-
|
|
651
|
-
async function mergePDFs() {
|
|
652
|
-
// Create new document
|
|
653
|
-
const mergedPdf = await PDFDocument.create();
|
|
654
|
-
|
|
655
|
-
// Load source PDFs
|
|
656
|
-
const pdf1Bytes = fs.readFileSync('doc1.pdf');
|
|
657
|
-
const pdf2Bytes = fs.readFileSync('doc2.pdf');
|
|
658
|
-
|
|
659
|
-
const pdf1 = await PDFDocument.load(pdf1Bytes);
|
|
660
|
-
const pdf2 = await PDFDocument.load(pdf2Bytes);
|
|
661
|
-
|
|
662
|
-
// Copy pages from first PDF
|
|
663
|
-
const pdf1Pages = await mergedPdf.copyPages(pdf1, pdf1.getPageIndices());
|
|
664
|
-
pdf1Pages.forEach(page => mergedPdf.addPage(page));
|
|
665
|
-
|
|
666
|
-
// Copy specific pages from second PDF (pages 0, 2, 4)
|
|
667
|
-
const pdf2Pages = await mergedPdf.copyPages(pdf2, [0, 2, 4]);
|
|
668
|
-
pdf2Pages.forEach(page => mergedPdf.addPage(page));
|
|
669
|
-
|
|
670
|
-
const mergedPdfBytes = await mergedPdf.save();
|
|
671
|
-
fs.writeFileSync('merged.pdf', mergedPdfBytes);
|
|
672
|
-
}
|
|
673
|
-
```
|
|
674
|
-
|
|
675
|
-
### pdfjs-dist (Apache License)
|
|
676
|
-
|
|
677
|
-
PDF.js is Mozilla's JavaScript library for rendering PDFs in the browser.
|
|
678
|
-
|
|
679
|
-
#### Basic PDF Loading and Rendering
|
|
680
|
-
```javascript
|
|
681
|
-
import * as pdfjsLib from 'pdfjs-dist';
|
|
682
|
-
|
|
683
|
-
// Configure worker (important for performance)
|
|
684
|
-
pdfjsLib.GlobalWorkerOptions.workerSrc = './pdf.worker.js';
|
|
685
|
-
|
|
686
|
-
async function renderPDF() {
|
|
687
|
-
// Load PDF
|
|
688
|
-
const loadingTask = pdfjsLib.getDocument('document.pdf');
|
|
689
|
-
const pdf = await loadingTask.promise;
|
|
690
|
-
|
|
691
|
-
console.log(`Loaded PDF with ${pdf.numPages} pages`);
|
|
692
|
-
|
|
693
|
-
// Get first page
|
|
694
|
-
const page = await pdf.getPage(1);
|
|
695
|
-
const viewport = page.getViewport({ scale: 1.5 });
|
|
696
|
-
|
|
697
|
-
// Render to canvas
|
|
698
|
-
const canvas = document.createElement('canvas');
|
|
699
|
-
const context = canvas.getContext('2d');
|
|
700
|
-
canvas.height = viewport.height;
|
|
701
|
-
canvas.width = viewport.width;
|
|
702
|
-
|
|
703
|
-
const renderContext = {
|
|
704
|
-
canvasContext: context,
|
|
705
|
-
viewport: viewport
|
|
706
|
-
};
|
|
707
|
-
|
|
708
|
-
await page.render(renderContext).promise;
|
|
709
|
-
document.body.appendChild(canvas);
|
|
710
|
-
}
|
|
711
|
-
```
|
|
712
|
-
|
|
713
|
-
#### Extract Text with Coordinates
|
|
714
|
-
```javascript
|
|
715
|
-
import * as pdfjsLib from 'pdfjs-dist';
|
|
716
|
-
|
|
717
|
-
async function extractText() {
|
|
718
|
-
const loadingTask = pdfjsLib.getDocument('document.pdf');
|
|
719
|
-
const pdf = await loadingTask.promise;
|
|
720
|
-
|
|
721
|
-
let fullText = '';
|
|
722
|
-
|
|
723
|
-
// Extract text from all pages
|
|
724
|
-
for (let i = 1; i <= pdf.numPages; i++) {
|
|
725
|
-
const page = await pdf.getPage(i);
|
|
726
|
-
const textContent = await page.getTextContent();
|
|
727
|
-
|
|
728
|
-
const pageText = textContent.items
|
|
729
|
-
.map(item => item.str)
|
|
730
|
-
.join(' ');
|
|
731
|
-
|
|
732
|
-
fullText += `\n--- Page ${i} ---\n${pageText}`;
|
|
733
|
-
|
|
734
|
-
// Get text with coordinates for advanced processing
|
|
735
|
-
const textWithCoords = textContent.items.map(item => ({
|
|
736
|
-
text: item.str,
|
|
737
|
-
x: item.transform[4],
|
|
738
|
-
y: item.transform[5],
|
|
739
|
-
width: item.width,
|
|
740
|
-
height: item.height
|
|
741
|
-
}));
|
|
742
|
-
}
|
|
743
|
-
|
|
744
|
-
console.log(fullText);
|
|
745
|
-
return fullText;
|
|
746
|
-
}
|
|
747
|
-
```
|
|
748
|
-
|
|
749
|
-
#### Extract Annotations and Forms
|
|
750
|
-
```javascript
|
|
751
|
-
import * as pdfjsLib from 'pdfjs-dist';
|
|
752
|
-
|
|
753
|
-
async function extractAnnotations() {
|
|
754
|
-
const loadingTask = pdfjsLib.getDocument('annotated.pdf');
|
|
755
|
-
const pdf = await loadingTask.promise;
|
|
756
|
-
|
|
757
|
-
for (let i = 1; i <= pdf.numPages; i++) {
|
|
758
|
-
const page = await pdf.getPage(i);
|
|
759
|
-
const annotations = await page.getAnnotations();
|
|
760
|
-
|
|
761
|
-
annotations.forEach(annotation => {
|
|
762
|
-
console.log(`Annotation type: ${annotation.subtype}`);
|
|
763
|
-
console.log(`Content: ${annotation.contents}`);
|
|
764
|
-
console.log(`Coordinates: ${JSON.stringify(annotation.rect)}`);
|
|
765
|
-
});
|
|
766
|
-
}
|
|
767
|
-
}
|
|
768
|
-
```
|
|
769
|
-
|
|
770
|
-
## Advanced Command-Line Operations
|
|
771
|
-
|
|
772
|
-
### poppler-utils Advanced Features
|
|
773
|
-
|
|
774
|
-
#### Extract Text with Bounding Box Coordinates
|
|
775
|
-
```bash
|
|
776
|
-
# Extract text with bounding box coordinates (essential for structured data)
|
|
777
|
-
pdftotext -bbox-layout document.pdf output.xml
|
|
778
|
-
|
|
779
|
-
# The XML output contains precise coordinates for each text element
|
|
780
|
-
```
|
|
781
|
-
|
|
782
|
-
#### Advanced Image Conversion
|
|
783
|
-
```bash
|
|
784
|
-
# Convert to PNG images with specific resolution
|
|
785
|
-
pdftoppm -png -r 300 document.pdf output_prefix
|
|
786
|
-
|
|
787
|
-
# Convert specific page range with high resolution
|
|
788
|
-
pdftoppm -png -r 600 -f 1 -l 3 document.pdf high_res_pages
|
|
789
|
-
|
|
790
|
-
# Convert to JPEG with quality setting
|
|
791
|
-
pdftoppm -jpeg -jpegopt quality=85 -r 200 document.pdf jpeg_output
|
|
792
|
-
```
|
|
793
|
-
|
|
794
|
-
#### Extract Embedded Images
|
|
795
|
-
```bash
|
|
796
|
-
# Extract all embedded images with metadata
|
|
797
|
-
pdfimages -j -p document.pdf page_images
|
|
798
|
-
|
|
799
|
-
# List image info without extracting
|
|
800
|
-
pdfimages -list document.pdf
|
|
801
|
-
|
|
802
|
-
# Extract images in their original format
|
|
803
|
-
pdfimages -all document.pdf images/img
|
|
804
|
-
```
|
|
805
|
-
|
|
806
|
-
### qpdf Advanced Features
|
|
807
|
-
|
|
808
|
-
#### Complex Page Manipulation
|
|
809
|
-
```bash
|
|
810
|
-
# Split PDF into groups of pages
|
|
811
|
-
qpdf --split-pages=3 input.pdf output_group_%02d.pdf
|
|
812
|
-
|
|
813
|
-
# Extract specific pages with complex ranges
|
|
814
|
-
qpdf input.pdf --pages input.pdf 1,3-5,8,10-end -- extracted.pdf
|
|
815
|
-
|
|
816
|
-
# Merge specific pages from multiple PDFs
|
|
817
|
-
qpdf --empty --pages doc1.pdf 1-3 doc2.pdf 5-7 doc3.pdf 2,4 -- combined.pdf
|
|
818
|
-
```
|
|
819
|
-
|
|
820
|
-
#### PDF Optimization and Repair
|
|
821
|
-
```bash
|
|
822
|
-
# Optimize PDF for web (linearize for streaming)
|
|
823
|
-
qpdf --linearize input.pdf optimized.pdf
|
|
824
|
-
|
|
825
|
-
# Remove unused objects and compress
|
|
826
|
-
qpdf --optimize-level=all input.pdf compressed.pdf
|
|
827
|
-
|
|
828
|
-
# Attempt to repair corrupted PDF structure
|
|
829
|
-
qpdf --check input.pdf
|
|
830
|
-
qpdf --fix-qdf damaged.pdf repaired.pdf
|
|
831
|
-
|
|
832
|
-
# Show detailed PDF structure for debugging
|
|
833
|
-
qpdf --show-all-pages input.pdf > structure.txt
|
|
834
|
-
```
|
|
835
|
-
|
|
836
|
-
#### Advanced Encryption
|
|
837
|
-
```bash
|
|
838
|
-
# Add password protection with specific permissions
|
|
839
|
-
qpdf --encrypt user_pass owner_pass 256 --print=none --modify=none -- input.pdf encrypted.pdf
|
|
840
|
-
|
|
841
|
-
# Check encryption status
|
|
842
|
-
qpdf --show-encryption encrypted.pdf
|
|
843
|
-
|
|
844
|
-
# Remove password protection (requires password)
|
|
845
|
-
qpdf --password=secret123 --decrypt encrypted.pdf decrypted.pdf
|
|
846
|
-
```
|
|
847
|
-
|
|
848
|
-
## Advanced Python Techniques
|
|
849
|
-
|
|
850
|
-
### pdfplumber Advanced Features
|
|
851
|
-
|
|
852
|
-
#### Extract Text with Precise Coordinates
|
|
853
|
-
```python
|
|
854
|
-
import pdfplumber
|
|
855
|
-
|
|
856
|
-
with pdfplumber.open("document.pdf") as pdf:
|
|
857
|
-
page = pdf.pages[0]
|
|
858
|
-
|
|
859
|
-
# Extract all text with coordinates
|
|
860
|
-
chars = page.chars
|
|
861
|
-
for char in chars[:10]: # First 10 characters
|
|
862
|
-
print(f"Char: '{char['text']}' at x:{char['x0']:.1f} y:{char['y0']:.1f}")
|
|
863
|
-
|
|
864
|
-
# Extract text by bounding box (left, top, right, bottom)
|
|
865
|
-
bbox_text = page.within_bbox((100, 100, 400, 200)).extract_text()
|
|
866
|
-
```
|
|
867
|
-
|
|
868
|
-
#### Advanced Table Extraction with Custom Settings
|
|
869
|
-
```python
|
|
870
|
-
import pdfplumber
|
|
871
|
-
import pandas as pd
|
|
872
|
-
|
|
873
|
-
with pdfplumber.open("complex_table.pdf") as pdf:
|
|
874
|
-
page = pdf.pages[0]
|
|
875
|
-
|
|
876
|
-
# Extract tables with custom settings for complex layouts
|
|
877
|
-
table_settings = {
|
|
878
|
-
"vertical_strategy": "lines",
|
|
879
|
-
"horizontal_strategy": "lines",
|
|
880
|
-
"snap_tolerance": 3,
|
|
881
|
-
"intersection_tolerance": 15
|
|
882
|
-
}
|
|
883
|
-
tables = page.extract_tables(table_settings)
|
|
884
|
-
|
|
885
|
-
# Visual debugging for table extraction
|
|
886
|
-
img = page.to_image(resolution=150)
|
|
887
|
-
img.save("debug_layout.png")
|
|
888
|
-
```
|
|
889
|
-
|
|
890
|
-
### reportlab Advanced Features
|
|
891
|
-
|
|
892
|
-
#### Create Professional Reports with Tables
|
|
893
|
-
```python
|
|
894
|
-
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph
|
|
895
|
-
from reportlab.lib.styles import getSampleStyleSheet
|
|
896
|
-
from reportlab.lib import colors
|
|
897
|
-
|
|
898
|
-
# Sample data
|
|
899
|
-
data = [
|
|
900
|
-
['Product', 'Q1', 'Q2', 'Q3', 'Q4'],
|
|
901
|
-
['Widgets', '120', '135', '142', '158'],
|
|
902
|
-
['Gadgets', '85', '92', '98', '105']
|
|
903
|
-
]
|
|
904
|
-
|
|
905
|
-
# Create PDF with table
|
|
906
|
-
doc = SimpleDocTemplate("report.pdf")
|
|
907
|
-
elements = []
|
|
908
|
-
|
|
909
|
-
# Add title
|
|
910
|
-
styles = getSampleStyleSheet()
|
|
911
|
-
title = Paragraph("Quarterly Sales Report", styles['Title'])
|
|
912
|
-
elements.append(title)
|
|
913
|
-
|
|
914
|
-
# Add table with advanced styling
|
|
915
|
-
table = Table(data)
|
|
916
|
-
table.setStyle(TableStyle([
|
|
917
|
-
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
|
|
918
|
-
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
|
|
919
|
-
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
|
|
920
|
-
('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
|
|
921
|
-
('FONTSIZE', (0, 0), (-1, 0), 14),
|
|
922
|
-
('BOTTOMPADDING', (0, 0), (-1, 0), 12),
|
|
923
|
-
('BACKGROUND', (0, 1), (-1, -1), colors.beige),
|
|
924
|
-
('GRID', (0, 0), (-1, -1), 1, colors.black)
|
|
925
|
-
]))
|
|
926
|
-
elements.append(table)
|
|
927
|
-
|
|
928
|
-
doc.build(elements)
|
|
929
|
-
```
|
|
930
|
-
|
|
931
|
-
## Complex Workflows
|
|
932
|
-
|
|
933
|
-
### Extract Figures/Images from PDF
|
|
934
|
-
|
|
935
|
-
#### Method 1: Using pdfimages (fastest)
|
|
936
|
-
```bash
|
|
937
|
-
# Extract all images with original quality
|
|
938
|
-
pdfimages -all document.pdf images/img
|
|
939
|
-
```
|
|
940
|
-
|
|
941
|
-
#### Method 2: Using pypdfium2 + Image Processing
|
|
942
|
-
```python
|
|
943
|
-
import pypdfium2 as pdfium
|
|
944
|
-
from PIL import Image
|
|
945
|
-
import numpy as np
|
|
946
|
-
|
|
947
|
-
def extract_figures(pdf_path, output_dir):
|
|
948
|
-
pdf = pdfium.PdfDocument(pdf_path)
|
|
949
|
-
|
|
950
|
-
for page_num, page in enumerate(pdf):
|
|
951
|
-
# Render high-resolution page
|
|
952
|
-
bitmap = page.render(scale=3.0)
|
|
953
|
-
img = bitmap.to_pil()
|
|
954
|
-
|
|
955
|
-
# Convert to numpy for processing
|
|
956
|
-
img_array = np.array(img)
|
|
957
|
-
|
|
958
|
-
# Simple figure detection (non-white regions)
|
|
959
|
-
mask = np.any(img_array != [255, 255, 255], axis=2)
|
|
960
|
-
|
|
961
|
-
# Find contours and extract bounding boxes
|
|
962
|
-
# (This is simplified - real implementation would need more sophisticated detection)
|
|
963
|
-
|
|
964
|
-
# Save detected figures
|
|
965
|
-
# ... implementation depends on specific needs
|
|
966
|
-
```
|
|
967
|
-
|
|
968
|
-
### Batch PDF Processing with Error Handling
|
|
969
|
-
```python
|
|
970
|
-
import os
|
|
971
|
-
import glob
|
|
972
|
-
from pypdf import PdfReader, PdfWriter
|
|
973
|
-
import logging
|
|
974
|
-
|
|
975
|
-
logging.basicConfig(level=logging.INFO)
|
|
976
|
-
logger = logging.getLogger(__name__)
|
|
977
|
-
|
|
978
|
-
def batch_process_pdfs(input_dir, operation='merge'):
|
|
979
|
-
pdf_files = glob.glob(os.path.join(input_dir, "*.pdf"))
|
|
980
|
-
|
|
981
|
-
if operation == 'merge':
|
|
982
|
-
writer = PdfWriter()
|
|
983
|
-
for pdf_file in pdf_files:
|
|
984
|
-
try:
|
|
985
|
-
reader = PdfReader(pdf_file)
|
|
986
|
-
for page in reader.pages:
|
|
987
|
-
writer.add_page(page)
|
|
988
|
-
logger.info(f"Processed: {pdf_file}")
|
|
989
|
-
except Exception as e:
|
|
990
|
-
logger.error(f"Failed to process {pdf_file}: {e}")
|
|
991
|
-
continue
|
|
992
|
-
|
|
993
|
-
with open("batch_merged.pdf", "wb") as output:
|
|
994
|
-
writer.write(output)
|
|
995
|
-
|
|
996
|
-
elif operation == 'extract_text':
|
|
997
|
-
for pdf_file in pdf_files:
|
|
998
|
-
try:
|
|
999
|
-
reader = PdfReader(pdf_file)
|
|
1000
|
-
text = ""
|
|
1001
|
-
for page in reader.pages:
|
|
1002
|
-
text += page.extract_text()
|
|
1003
|
-
|
|
1004
|
-
output_file = pdf_file.replace('.pdf', '.txt')
|
|
1005
|
-
with open(output_file, 'w', encoding='utf-8') as f:
|
|
1006
|
-
f.write(text)
|
|
1007
|
-
logger.info(f"Extracted text from: {pdf_file}")
|
|
1008
|
-
|
|
1009
|
-
except Exception as e:
|
|
1010
|
-
logger.error(f"Failed to extract text from {pdf_file}: {e}")
|
|
1011
|
-
continue
|
|
1012
|
-
```
|
|
1013
|
-
|
|
1014
|
-
### Advanced PDF Cropping
|
|
1015
|
-
```python
|
|
1016
|
-
from pypdf import PdfWriter, PdfReader
|
|
1017
|
-
|
|
1018
|
-
reader = PdfReader("input.pdf")
|
|
1019
|
-
writer = PdfWriter()
|
|
1020
|
-
|
|
1021
|
-
# Crop page (left, bottom, right, top in points)
|
|
1022
|
-
page = reader.pages[0]
|
|
1023
|
-
page.mediabox.left = 50
|
|
1024
|
-
page.mediabox.bottom = 50
|
|
1025
|
-
page.mediabox.right = 550
|
|
1026
|
-
page.mediabox.top = 750
|
|
1027
|
-
|
|
1028
|
-
writer.add_page(page)
|
|
1029
|
-
with open("cropped.pdf", "wb") as output:
|
|
1030
|
-
writer.write(output)
|
|
1031
|
-
```
|
|
1032
|
-
|
|
1033
|
-
## Performance Optimization Tips
|
|
1034
|
-
|
|
1035
|
-
### 1. For Large PDFs
|
|
1036
|
-
- Use streaming approaches instead of loading entire PDF in memory
|
|
1037
|
-
- Use `qpdf --split-pages` for splitting large files
|
|
1038
|
-
- Process pages individually with pypdfium2
|
|
1039
|
-
|
|
1040
|
-
### 2. For Text Extraction
|
|
1041
|
-
- `pdftotext -bbox-layout` is fastest for plain text extraction
|
|
1042
|
-
- Use pdfplumber for structured data and tables
|
|
1043
|
-
- Avoid `pypdf.extract_text()` for very large documents
|
|
1044
|
-
|
|
1045
|
-
### 3. For Image Extraction
|
|
1046
|
-
- `pdfimages` is much faster than rendering pages
|
|
1047
|
-
- Use low resolution for previews, high resolution for final output
|
|
1048
|
-
|
|
1049
|
-
### 4. For Form Filling
|
|
1050
|
-
- pdf-lib maintains form structure better than most alternatives
|
|
1051
|
-
- Pre-validate form fields before processing
|
|
1052
|
-
|
|
1053
|
-
### 5. Memory Management
|
|
1054
|
-
```python
|
|
1055
|
-
# Process PDFs in chunks
|
|
1056
|
-
def process_large_pdf(pdf_path, chunk_size=10):
|
|
1057
|
-
reader = PdfReader(pdf_path)
|
|
1058
|
-
total_pages = len(reader.pages)
|
|
1059
|
-
|
|
1060
|
-
for start_idx in range(0, total_pages, chunk_size):
|
|
1061
|
-
end_idx = min(start_idx + chunk_size, total_pages)
|
|
1062
|
-
writer = PdfWriter()
|
|
1063
|
-
|
|
1064
|
-
for i in range(start_idx, end_idx):
|
|
1065
|
-
writer.add_page(reader.pages[i])
|
|
1066
|
-
|
|
1067
|
-
# Process chunk
|
|
1068
|
-
with open(f"chunk_{start_idx//chunk_size}.pdf", "wb") as output:
|
|
1069
|
-
writer.write(output)
|
|
1070
|
-
```
|
|
1071
|
-
|
|
1072
|
-
## Troubleshooting Common Issues
|
|
1073
|
-
|
|
1074
|
-
### Encrypted PDFs
|
|
1075
|
-
```python
|
|
1076
|
-
# Handle password-protected PDFs
|
|
1077
|
-
from pypdf import PdfReader
|
|
1078
|
-
|
|
1079
|
-
try:
|
|
1080
|
-
reader = PdfReader("encrypted.pdf")
|
|
1081
|
-
if reader.is_encrypted:
|
|
1082
|
-
reader.decrypt("password")
|
|
1083
|
-
except Exception as e:
|
|
1084
|
-
print(f"Failed to decrypt: {e}")
|
|
1085
|
-
```
|
|
1086
|
-
|
|
1087
|
-
### Corrupted PDFs
|
|
1088
|
-
```bash
|
|
1089
|
-
# Use qpdf to repair
|
|
1090
|
-
qpdf --check corrupted.pdf
|
|
1091
|
-
qpdf --replace-input corrupted.pdf
|
|
1092
|
-
```
|
|
1093
|
-
|
|
1094
|
-
### Text Extraction Issues
|
|
1095
|
-
```python
|
|
1096
|
-
# Fallback to OCR for scanned PDFs
|
|
1097
|
-
import pytesseract
|
|
1098
|
-
from pdf2image import convert_from_path
|
|
1099
|
-
|
|
1100
|
-
def extract_text_with_ocr(pdf_path):
|
|
1101
|
-
images = convert_from_path(pdf_path)
|
|
1102
|
-
text = ""
|
|
1103
|
-
for i, image in enumerate(images):
|
|
1104
|
-
text += pytesseract.image_to_string(image)
|
|
1105
|
-
return text
|
|
1106
|
-
```
|
|
1107
|
-
|
|
1108
|
-
## License Information
|
|
1109
|
-
|
|
1110
|
-
- **pypdf**: BSD License
|
|
1111
|
-
- **pdfplumber**: MIT License
|
|
1112
|
-
- **pypdfium2**: Apache/BSD License
|
|
1113
|
-
- **reportlab**: BSD License
|
|
1114
|
-
- **poppler-utils**: GPL-2 License
|
|
1115
|
-
- **qpdf**: Apache License
|
|
1116
|
-
- **pdf-lib**: MIT License
|
|
1117
|
-
- **pdfjs-dist**: Apache License
|