@xopcai/xopc 0.0.29 → 0.0.31
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/dist/extensions/telegram/src/adapters/config-surface.js +3 -1
- package/dist/extensions/telegram/src/adapters/config-surface.js.map +1 -1
- package/dist/extensions/telegram/src/adapters/onboard-cli.js +23 -21
- package/dist/extensions/telegram/src/adapters/onboard-cli.js.map +1 -1
- package/dist/extensions/telegram/src/adapters/setup-wizard.js +3 -4
- package/dist/extensions/telegram/src/adapters/setup-wizard.js.map +1 -1
- package/dist/extensions/telegram/src/config-schema.d.ts +0 -1
- package/dist/extensions/telegram/src/config-schema.js +17 -4
- package/dist/extensions/telegram/src/config-schema.js.map +1 -1
- package/dist/extensions/telegram/src/plugin.js +4 -17
- package/dist/extensions/telegram/src/plugin.js.map +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/cdn/upload.js +1 -1
- package/dist/extensions/weixin/src/media/data-url.js +1 -1
- package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
- package/dist/gateway/static/root/assets/agents-3u63Fw2Y.js +216 -0
- package/dist/gateway/static/root/assets/agents-3u63Fw2Y.js.map +1 -0
- package/dist/gateway/static/root/assets/{apps-page-Bmq19MS-.js → apps-page-CWegY6Kp.js} +2 -2
- package/dist/gateway/static/root/assets/{apps-page-Bmq19MS-.js.map → apps-page-CWegY6Kp.js.map} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-CiyeXcTK.js +9 -0
- package/dist/gateway/static/root/assets/channels-settings-CiyeXcTK.js.map +1 -0
- package/dist/gateway/static/root/assets/cron-api-_j_79Zf5.js +3 -0
- package/dist/gateway/static/root/assets/cron-api-_j_79Zf5.js.map +1 -0
- package/dist/gateway/static/root/assets/cron-page-S86YNTtI.js +2 -0
- package/dist/gateway/static/root/assets/cron-page-S86YNTtI.js.map +1 -0
- package/dist/gateway/static/root/assets/dist-D0jxbvuz.js +2 -0
- package/dist/gateway/static/root/assets/{dist--p2HQ2QF.js.map → dist-D0jxbvuz.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DwHCB_6T.js → extension-debug-page-DB630cW8.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-debug-page-DwHCB_6T.js.map → extension-debug-page-DB630cW8.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-BsYwQIex.js → extension-page-CnoPUBul.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-page-BsYwQIex.js.map → extension-page-CnoPUBul.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-nsisEgjB.js → extension-settings-page-BsiOkvBe.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-settings-page-nsisEgjB.js.map → extension-settings-page-BsiOkvBe.js.map} +1 -1
- package/dist/gateway/static/root/assets/{index-CR8zUHGR.js → index-DHLmAIQl.js} +63 -63
- package/dist/gateway/static/root/assets/{index-CR8zUHGR.js.map → index-DHLmAIQl.js.map} +1 -1
- package/dist/gateway/static/root/assets/index-DoPwy4aU.css +1 -0
- package/dist/gateway/static/root/assets/logs-page-Bndhenn2.js +2 -0
- package/dist/gateway/static/root/assets/logs-page-Bndhenn2.js.map +1 -0
- package/dist/gateway/static/root/assets/sessions-page-Q201-_lP.js +2 -0
- package/dist/gateway/static/root/assets/{sessions-page-Be5kIGl_.js.map → sessions-page-Q201-_lP.js.map} +1 -1
- package/dist/gateway/static/root/assets/settings-page-Cw75fpc6.js +2 -0
- package/dist/gateway/static/root/assets/settings-page-Cw75fpc6.js.map +1 -0
- package/dist/gateway/static/root/assets/skills-page-CVwEzD_J.js +3 -0
- package/dist/gateway/static/root/assets/skills-page-CVwEzD_J.js.map +1 -0
- package/dist/gateway/static/root/index.html +2 -2
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +5 -7
- package/dist/src/agent/agent-manager.js +21 -19
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/ipc/inbox.js +4 -2
- package/dist/src/agent/ipc/inbox.js.map +1 -1
- package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
- package/dist/src/agent/memory/dreaming/utils.js +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +0 -2
- package/dist/src/agent/prompt/service-prompt-builder.js.map +1 -1
- package/dist/src/agent/prompt/system-prompt.d.ts +0 -2
- package/dist/src/agent/prompt/system-prompt.js +3 -17
- package/dist/src/agent/prompt/system-prompt.js.map +1 -1
- package/dist/src/agent/service/btw-query.d.ts +16 -0
- package/dist/src/agent/service/btw-query.js +88 -0
- package/dist/src/agent/service/btw-query.js.map +1 -0
- package/dist/src/agent/service/build-direct-message-content.d.ts +30 -0
- package/dist/src/agent/service/build-direct-message-content.js +75 -0
- package/dist/src/agent/service/build-direct-message-content.js.map +1 -0
- package/dist/src/agent/service/parse-outbound-session-key.d.ts +8 -0
- package/dist/src/agent/service/parse-outbound-session-key.js +41 -0
- package/dist/src/agent/service/parse-outbound-session-key.js.map +1 -0
- package/dist/src/agent/service/process-direct-one-shot.d.ts +34 -0
- package/dist/src/agent/service/process-direct-one-shot.js +67 -0
- package/dist/src/agent/service/process-direct-one-shot.js.map +1 -0
- package/dist/src/agent/service/process-direct-streaming.js +12 -1
- package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
- package/dist/src/agent/service/reconcile-dreaming-cron.d.ts +6 -0
- package/dist/src/agent/service/reconcile-dreaming-cron.js +70 -0
- package/dist/src/agent/service/reconcile-dreaming-cron.js.map +1 -0
- package/dist/src/agent/service/session-context-report.d.ts +19 -0
- package/dist/src/agent/service/session-context-report.js +47 -0
- package/dist/src/agent/service/session-context-report.js.map +1 -0
- package/dist/src/agent/service/webchat-tts.d.ts +28 -0
- package/dist/src/agent/service/webchat-tts.js +73 -0
- package/dist/src/agent/service/webchat-tts.js.map +1 -0
- package/dist/src/agent/service.d.ts +8 -12
- package/dist/src/agent/service.js +74 -379
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/skills/config.js +4 -3
- package/dist/src/agent/skills/config.js.map +1 -1
- package/dist/src/agent/skills/format-skills-prompt.d.ts +0 -2
- package/dist/src/agent/skills/format-skills-prompt.js +3 -24
- package/dist/src/agent/skills/format-skills-prompt.js.map +1 -1
- package/dist/src/agent/skills/hub-lock.js +4 -5
- package/dist/src/agent/skills/hub-lock.js.map +1 -1
- package/dist/src/agent/skills/index.js +9 -21
- package/dist/src/agent/skills/index.js.map +1 -1
- package/dist/src/agent/skills/marketplace/adapter.types.d.ts +17 -0
- package/dist/src/agent/skills/marketplace/adapter.types.js +1 -0
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.d.ts +2 -0
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +292 -0
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +1 -0
- package/dist/src/agent/skills/marketplace/adapters/skillhub/ecosystem-client.d.ts +73 -0
- package/dist/src/agent/skills/marketplace/adapters/skillhub/ecosystem-client.js +200 -0
- package/dist/src/agent/skills/marketplace/adapters/skillhub/ecosystem-client.js.map +1 -0
- package/dist/src/agent/skills/marketplace/adapters/skillhub/registry-client.d.ts +137 -0
- package/dist/src/agent/skills/marketplace/adapters/skillhub/registry-client.js +217 -0
- package/dist/src/agent/skills/marketplace/adapters/skillhub/registry-client.js.map +1 -0
- package/dist/src/agent/skills/marketplace/adapters/skillhub/skillhub-fetch-cache.d.ts +12 -0
- package/dist/src/agent/skills/marketplace/adapters/skillhub/skillhub-fetch-cache.js +90 -0
- package/dist/src/agent/skills/marketplace/adapters/skillhub/skillhub-fetch-cache.js.map +1 -0
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.d.ts +2 -0
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +35 -0
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +1 -0
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +124 -0
- package/dist/src/agent/skills/{skills-store-client.js → marketplace/adapters/store/store-api-client.js} +4 -3
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +1 -0
- package/dist/src/agent/skills/marketplace/resolve-adapter.d.ts +6 -0
- package/dist/src/agent/skills/marketplace/resolve-adapter.js +26 -0
- package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +1 -0
- package/dist/src/agent/skills/parse-skill-metadata.d.ts +5 -0
- package/dist/src/agent/skills/parse-skill-metadata.js +27 -0
- package/dist/src/agent/skills/parse-skill-metadata.js.map +1 -0
- package/dist/src/agent/skills/skill-markdown-preview-from-raw.d.ts +6 -0
- package/dist/src/agent/skills/skill-markdown-preview-from-raw.js +64 -0
- package/dist/src/agent/skills/skill-markdown-preview-from-raw.js.map +1 -0
- package/dist/src/agent/skills/skill-view-path.d.ts +17 -1
- package/dist/src/agent/skills/skill-view-path.js +66 -3
- package/dist/src/agent/skills/skill-view-path.js.map +1 -1
- package/dist/src/agent/skills/skills-marketplace.d.ts +21 -0
- package/dist/src/agent/skills/skills-marketplace.js +18 -0
- package/dist/src/agent/skills/skills-marketplace.js.map +1 -0
- package/dist/src/agent/skills/test-framework.d.ts +0 -1
- package/dist/src/agent/skills/test-framework.js +2 -20
- package/dist/src/agent/skills/test-framework.js.map +1 -1
- package/dist/src/agent/skills/types.d.ts +12 -6
- package/dist/src/agent/tools/dreaming-tool.js +1 -1
- package/dist/src/agent/tools/image-generate-tool.js +2 -2
- package/dist/src/auth/credentials.js +8 -6
- package/dist/src/auth/credentials.js.map +1 -1
- package/dist/src/auth/profiles/store.js +5 -3
- package/dist/src/auth/profiles/store.js.map +1 -1
- package/dist/src/channels/manager.js +1 -1
- package/dist/src/channels/outbound/persist-store.js +4 -4
- package/dist/src/channels/outbound/persist-store.js.map +1 -1
- package/dist/src/cli/commands/config.js +8 -6
- package/dist/src/cli/commands/config.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/channel-config.js +3 -4
- package/dist/src/cli/commands/doctor/checks/channel-config.js.map +1 -1
- package/dist/src/cli/commands/init.js +4 -2
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/config/loader.js +3 -1
- package/dist/src/config/loader.js.map +1 -1
- package/dist/src/config/models-json.js +4 -5
- package/dist/src/config/models-json.js.map +1 -1
- package/dist/src/config/schema.d.ts +12 -4
- package/dist/src/config/schema.js +31 -5
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/cron/persistence.d.ts +1 -3
- package/dist/src/cron/persistence.js +6 -17
- package/dist/src/cron/persistence.js.map +1 -1
- package/dist/src/cron/validation.js +1 -1
- package/dist/src/cron/validation.js.map +1 -1
- package/dist/src/extensions/activation-context.js +0 -1
- package/dist/src/extensions/activation-context.js.map +1 -1
- package/dist/src/extensions/lockfile.js +4 -2
- package/dist/src/extensions/lockfile.js.map +1 -1
- package/dist/src/gateway/auth.d.ts +0 -9
- package/dist/src/gateway/auth.js +1 -12
- package/dist/src/gateway/auth.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +1 -1
- package/dist/src/gateway/hono/lib/extension-store.js +4 -4
- package/dist/src/gateway/hono/lib/extension-store.js.map +1 -1
- package/dist/src/gateway/hono/routes/channels.js +5 -3
- package/dist/src/gateway/hono/routes/channels.js.map +1 -1
- package/dist/src/gateway/hono/routes/commands-skills.js +28 -3
- package/dist/src/gateway/hono/routes/commands-skills.js.map +1 -1
- package/dist/src/gateway/hono/routes/config.js +23 -2
- package/dist/src/gateway/hono/routes/config.js.map +1 -1
- package/dist/src/gateway/hono/routes/sessions.js +124 -2
- package/dist/src/gateway/hono/routes/sessions.js.map +1 -1
- package/dist/src/gateway/hono/sse.js +9 -2
- package/dist/src/gateway/hono/sse.js.map +1 -1
- package/dist/src/gateway/index.js +2 -2
- package/dist/src/gateway/lock.js +1 -1
- package/dist/src/gateway/service/run-gateway-agent.d.ts +37 -0
- package/dist/src/gateway/service/run-gateway-agent.js +163 -0
- package/dist/src/gateway/service/run-gateway-agent.js.map +1 -0
- package/dist/src/gateway/service/save-webchat-user-message.d.ts +9 -0
- package/dist/src/gateway/service/save-webchat-user-message.js +34 -0
- package/dist/src/gateway/service/save-webchat-user-message.js.map +1 -0
- package/dist/src/gateway/service/session-chat-ids.d.ts +9 -0
- package/dist/src/gateway/service/session-chat-ids.js +33 -0
- package/dist/src/gateway/service/session-chat-ids.js.map +1 -0
- package/dist/src/gateway/service/sse-hub.d.ts +10 -0
- package/dist/src/gateway/service/sse-hub.js +55 -0
- package/dist/src/gateway/service/sse-hub.js.map +1 -0
- package/dist/src/gateway/service/types.d.ts +9 -0
- package/dist/src/gateway/service/types.js +1 -0
- package/dist/src/gateway/service.d.ts +42 -33
- package/dist/src/gateway/service.js +92 -246
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/infra/update-lock.js +4 -2
- package/dist/src/infra/update-lock.js.map +1 -1
- package/dist/src/infra/update-startup.js +5 -14
- package/dist/src/infra/update-startup.js.map +1 -1
- package/dist/src/infra/write-file-atomic.d.ts +18 -0
- package/dist/src/infra/write-file-atomic.js +115 -0
- package/dist/src/infra/write-file-atomic.js.map +1 -0
- package/dist/src/session/abort-cutoff.d.ts +6 -0
- package/dist/src/session/abort-cutoff.js +10 -0
- package/dist/src/session/abort-cutoff.js.map +1 -0
- package/dist/src/session/compaction-checkpoints.d.ts +8 -0
- package/dist/src/session/compaction-checkpoints.js +21 -0
- package/dist/src/session/compaction-checkpoints.js.map +1 -0
- package/dist/src/session/config-store.js +4 -2
- package/dist/src/session/config-store.js.map +1 -1
- package/dist/src/session/index.d.ts +8 -1
- package/dist/src/session/index.js +7 -1
- package/dist/src/session/manager.d.ts +26 -1
- package/dist/src/session/manager.js +39 -2
- package/dist/src/session/manager.js.map +1 -1
- package/dist/src/session/patch-metadata.d.ts +12 -0
- package/dist/src/session/patch-metadata.js +23 -0
- package/dist/src/session/patch-metadata.js.map +1 -0
- package/dist/src/session/search-index.d.ts +2 -0
- package/dist/src/session/search-index.js +30 -2
- package/dist/src/session/search-index.js.map +1 -1
- package/dist/src/session/session-context-for-llm.d.ts +32 -0
- package/dist/src/session/session-context-for-llm.js +60 -0
- package/dist/src/session/session-context-for-llm.js.map +1 -0
- package/dist/src/session/store.d.ts +53 -2
- package/dist/src/session/store.js +427 -145
- package/dist/src/session/store.js.map +1 -1
- package/dist/src/session/strip-webchat-early-save.d.ts +5 -0
- package/dist/src/session/strip-webchat-early-save.js +17 -0
- package/dist/src/session/strip-webchat-early-save.js.map +1 -0
- package/dist/src/session/transcript-format.d.ts +46 -0
- package/dist/src/session/transcript-format.js +88 -0
- package/dist/src/session/transcript-format.js.map +1 -0
- package/dist/src/session/types.d.ts +37 -0
- package/dist/src/session/types.js.map +1 -1
- package/dist/src/utils/logger/log-store.js +4 -3
- package/dist/src/utils/logger/log-store.js.map +1 -1
- package/dist/src/voice/tts/merge-config.js +0 -1
- package/dist/src/voice/tts/merge-config.js.map +1 -1
- package/dist/src/voice/tts/service.js +1 -2
- package/dist/src/voice/tts/service.js.map +1 -1
- package/package.json +1 -1
- package/skills/business/company-values/SKILL-zh.md +80 -0
- package/skills/business/company-values/SKILL.md +80 -0
- package/skills/business/find-community/SKILL-zh.md +50 -0
- package/skills/business/find-community/SKILL.md +50 -0
- package/skills/business/first-customers/SKILL-zh.md +76 -0
- package/skills/business/first-customers/SKILL.md +76 -0
- package/skills/business/grow-sustainably/SKILL-zh.md +92 -0
- package/skills/business/grow-sustainably/SKILL.md +92 -0
- package/skills/business/marketing-plan/SKILL-zh.md +100 -0
- package/skills/business/marketing-plan/SKILL.md +100 -0
- package/skills/business/minimalist-review/SKILL-zh.md +82 -0
- package/skills/business/minimalist-review/SKILL.md +82 -0
- package/skills/business/mvp/SKILL-zh.md +81 -0
- package/skills/business/mvp/SKILL.md +81 -0
- package/skills/business/pricing/SKILL-zh.md +64 -0
- package/skills/business/pricing/SKILL.md +64 -0
- package/skills/business/processize/SKILL-zh.md +91 -0
- package/skills/business/processize/SKILL.md +91 -0
- package/skills/business/validate-idea/SKILL-zh.md +68 -0
- package/skills/business/validate-idea/SKILL.md +68 -0
- package/skills/{skill-creator → creative/algorithmic-art}/LICENSE.txt +1 -1
- package/skills/creative/algorithmic-art/SKILL-zh.md +405 -0
- package/skills/creative/algorithmic-art/SKILL.md +405 -0
- package/skills/creative/algorithmic-art/templates/generator_template.js +223 -0
- package/skills/creative/algorithmic-art/templates/viewer.html +599 -0
- package/skills/creative/canvas-design/LICENSE.txt +202 -0
- package/skills/creative/canvas-design/SKILL-zh.md +130 -0
- package/skills/creative/canvas-design/SKILL.md +130 -0
- package/skills/creative/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/creative/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/creative/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/creative/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/creative/frontend-design/LICENSE.txt +177 -0
- package/skills/creative/frontend-design/SKILL-zh.md +42 -0
- package/skills/creative/frontend-design/SKILL.md +42 -0
- package/skills/creative/theme-factory/LICENSE.txt +202 -0
- package/skills/creative/theme-factory/SKILL-zh.md +59 -0
- package/skills/creative/theme-factory/SKILL.md +59 -0
- package/skills/creative/theme-factory/theme-showcase.pdf +0 -0
- package/skills/creative/theme-factory/themes/arctic-frost.md +19 -0
- package/skills/creative/theme-factory/themes/botanical-garden.md +19 -0
- package/skills/creative/theme-factory/themes/desert-rose.md +19 -0
- package/skills/creative/theme-factory/themes/forest-canopy.md +19 -0
- package/skills/creative/theme-factory/themes/golden-hour.md +19 -0
- package/skills/creative/theme-factory/themes/midnight-galaxy.md +19 -0
- package/skills/creative/theme-factory/themes/modern-minimalist.md +19 -0
- package/skills/creative/theme-factory/themes/ocean-depths.md +19 -0
- package/skills/creative/theme-factory/themes/sunset-boulevard.md +19 -0
- package/skills/creative/theme-factory/themes/tech-innovation.md +19 -0
- package/skills/creative/web-artifacts-builder/LICENSE.txt +202 -0
- package/skills/creative/web-artifacts-builder/SKILL-zh.md +74 -0
- package/skills/creative/web-artifacts-builder/SKILL.md +74 -0
- package/skills/creative/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/skills/creative/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/skills/creative/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/skills/documents/doc-coauthoring/SKILL-zh.md +375 -0
- package/skills/documents/doc-coauthoring/SKILL.md +375 -0
- package/skills/documents/docx/SKILL-zh.md +590 -0
- package/skills/{docx → documents/docx}/SKILL.md +11 -11
- package/skills/{docx → documents/docx}/scripts/comment.py +2 -2
- package/skills/{docx → documents/docx}/scripts/office/helpers/simplify_redlines.py +1 -1
- package/skills/{docx → documents/docx}/scripts/office/pack.py +2 -2
- package/skills/{xlsx → documents/docx}/scripts/office/validate.py +2 -2
- package/skills/{xlsx → documents/docx}/scripts/office/validators/redlining.py +1 -1
- package/skills/documents/pdf/SKILL-zh.md +314 -0
- package/skills/documents/pptx/SKILL-zh.md +232 -0
- package/skills/{pptx → documents/pptx}/editing.md +3 -3
- package/skills/{pptx → documents/pptx}/scripts/office/helpers/simplify_redlines.py +1 -1
- package/skills/{xlsx → documents/pptx}/scripts/office/pack.py +2 -2
- package/skills/{pptx → documents/pptx}/scripts/office/validate.py +2 -2
- package/skills/{docx → documents/pptx}/scripts/office/validators/redlining.py +1 -1
- package/skills/documents/xlsx/SKILL-zh.md +292 -0
- package/skills/{xlsx → documents/xlsx}/scripts/office/helpers/simplify_redlines.py +1 -1
- package/skills/{pptx → documents/xlsx}/scripts/office/pack.py +2 -2
- package/skills/{docx → documents/xlsx}/scripts/office/validate.py +2 -2
- package/skills/{pptx → documents/xlsx}/scripts/office/validators/redlining.py +1 -1
- package/skills/meta/skill-creator/LICENSE.txt +202 -0
- package/skills/meta/skill-creator/SKILL-zh.md +483 -0
- package/skills/{skill-creator → meta/skill-creator}/SKILL.md +0 -1
- package/skills/tools/find-skills/SKILL-zh.md +440 -0
- package/skills/tools/github/SKILL-zh.md +48 -0
- package/skills/tools/internal-comms/LICENSE.txt +202 -0
- package/skills/tools/internal-comms/SKILL-zh.md +32 -0
- package/skills/tools/internal-comms/SKILL.md +32 -0
- package/skills/tools/internal-comms/examples/3p-updates.md +47 -0
- package/skills/tools/internal-comms/examples/company-newsletter.md +65 -0
- package/skills/tools/internal-comms/examples/faq-answers.md +30 -0
- package/skills/tools/internal-comms/examples/general-comms.md +16 -0
- package/skills/tools/summarize/SKILL-zh.md +47 -0
- package/skills/tools/weather/SKILL-zh.md +46 -0
- package/skills/tools/webapp-testing/LICENSE.txt +202 -0
- package/skills/tools/webapp-testing/SKILL-zh.md +96 -0
- package/skills/tools/webapp-testing/SKILL.md +96 -0
- package/skills/tools/webapp-testing/examples/console_logging.py +35 -0
- package/skills/tools/webapp-testing/examples/element_discovery.py +40 -0
- package/skills/tools/webapp-testing/examples/static_html_automation.py +33 -0
- package/skills/tools/webapp-testing/scripts/with_server.py +106 -0
- package/dist/gateway/static/root/assets/agents-CkgFSiCY.js +0 -216
- package/dist/gateway/static/root/assets/agents-CkgFSiCY.js.map +0 -1
- package/dist/gateway/static/root/assets/channels-settings-CE7jrdkO.js +0 -9
- package/dist/gateway/static/root/assets/channels-settings-CE7jrdkO.js.map +0 -1
- package/dist/gateway/static/root/assets/cron-page-BpPPcykJ.js +0 -2
- package/dist/gateway/static/root/assets/cron-page-BpPPcykJ.js.map +0 -1
- package/dist/gateway/static/root/assets/cron-utils-N1PqD2DB.js +0 -3
- package/dist/gateway/static/root/assets/cron-utils-N1PqD2DB.js.map +0 -1
- package/dist/gateway/static/root/assets/dist--p2HQ2QF.js +0 -2
- package/dist/gateway/static/root/assets/index-Dnfha4O2.css +0 -1
- package/dist/gateway/static/root/assets/logs-page-CQwdV_Xw.js +0 -2
- package/dist/gateway/static/root/assets/logs-page-CQwdV_Xw.js.map +0 -1
- package/dist/gateway/static/root/assets/sessions-page-Be5kIGl_.js +0 -2
- package/dist/gateway/static/root/assets/settings-page-PodSlNwr.js +0 -2
- package/dist/gateway/static/root/assets/settings-page-PodSlNwr.js.map +0 -1
- package/dist/gateway/static/root/assets/skills-page-Clg8deH0.js +0 -3
- package/dist/gateway/static/root/assets/skills-page-Clg8deH0.js.map +0 -1
- package/dist/src/agent/skills/skills-store-client.d.ts +0 -66
- package/dist/src/agent/skills/skills-store-client.js.map +0 -1
- package/dist/src/stt/index.d.ts +0 -1
- package/dist/src/stt/index.js +0 -8
- /package/skills/{docx → documents/docx}/LICENSE.txt +0 -0
- /package/skills/{docx → documents/docx}/scripts/__init__.py +0 -0
- /package/skills/{docx → documents/docx}/scripts/accept_changes.py +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/helpers/__init__.py +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/helpers/merge_runs.py +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/mce/mc.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/microsoft/wml-2010.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/microsoft/wml-2012.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/microsoft/wml-2018.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/soffice.py +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/unpack.py +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/validators/__init__.py +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/validators/base.py +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/validators/docx.py +0 -0
- /package/skills/{docx → documents/docx}/scripts/office/validators/pptx.py +0 -0
- /package/skills/{docx → documents/docx}/scripts/templates/comments.xml +0 -0
- /package/skills/{docx → documents/docx}/scripts/templates/commentsExtended.xml +0 -0
- /package/skills/{docx → documents/docx}/scripts/templates/commentsExtensible.xml +0 -0
- /package/skills/{docx → documents/docx}/scripts/templates/commentsIds.xml +0 -0
- /package/skills/{docx → documents/docx}/scripts/templates/people.xml +0 -0
- /package/skills/{pdf → documents/pdf}/LICENSE.txt +0 -0
- /package/skills/{pdf → documents/pdf}/SKILL.md +0 -0
- /package/skills/{pdf → documents/pdf}/forms.md +0 -0
- /package/skills/{pdf → documents/pdf}/reference.md +0 -0
- /package/skills/{pdf → documents/pdf}/scripts/check_bounding_boxes.py +0 -0
- /package/skills/{pdf → documents/pdf}/scripts/check_fillable_fields.py +0 -0
- /package/skills/{pdf → documents/pdf}/scripts/convert_pdf_to_images.py +0 -0
- /package/skills/{pdf → documents/pdf}/scripts/create_validation_image.py +0 -0
- /package/skills/{pdf → documents/pdf}/scripts/extract_form_field_info.py +0 -0
- /package/skills/{pdf → documents/pdf}/scripts/extract_form_structure.py +0 -0
- /package/skills/{pdf → documents/pdf}/scripts/fill_fillable_fields.py +0 -0
- /package/skills/{pdf → documents/pdf}/scripts/fill_pdf_form_with_annotations.py +0 -0
- /package/skills/{pptx → documents/pptx}/LICENSE.txt +0 -0
- /package/skills/{pptx → documents/pptx}/SKILL.md +0 -0
- /package/skills/{pptx → documents/pptx}/pptxgenjs.md +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/__init__.py +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/add_slide.py +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/clean.py +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/helpers/__init__.py +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/helpers/merge_runs.py +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/mce/mc.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/microsoft/wml-2010.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/microsoft/wml-2012.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/microsoft/wml-2018.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/soffice.py +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/unpack.py +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/validators/__init__.py +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/validators/base.py +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/validators/docx.py +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/office/validators/pptx.py +0 -0
- /package/skills/{pptx → documents/pptx}/scripts/thumbnail.py +0 -0
- /package/skills/{xlsx → documents/xlsx}/LICENSE.txt +0 -0
- /package/skills/{xlsx → documents/xlsx}/SKILL.md +0 -0
- /package/skills/{skill-creator/scripts → documents/xlsx/scripts/office/helpers}/__init__.py +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/helpers/merge_runs.py +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/mce/mc.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/microsoft/wml-2010.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/microsoft/wml-2012.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/microsoft/wml-2018.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/soffice.py +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/unpack.py +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/validators/__init__.py +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/validators/base.py +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/validators/docx.py +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/office/validators/pptx.py +0 -0
- /package/skills/{xlsx → documents/xlsx}/scripts/recalc.py +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/agents/analyzer.md +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/agents/comparator.md +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/agents/grader.md +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/assets/eval_review.html +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/eval-viewer/generate_review.py +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/eval-viewer/viewer.html +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/references/schemas.md +0 -0
- /package/skills/{xlsx/scripts/office/helpers → meta/skill-creator/scripts}/__init__.py +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/scripts/aggregate_benchmark.py +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/scripts/generate_report.py +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/scripts/improve_description.py +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/scripts/package_skill.py +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/scripts/quick_validate.py +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/scripts/run_eval.py +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/scripts/run_loop.py +0 -0
- /package/skills/{skill-creator → meta/skill-creator}/scripts/utils.py +0 -0
- /package/skills/{find-skills → tools/find-skills}/SKILL.md +0 -0
- /package/skills/{github → tools/github}/SKILL.md +0 -0
- /package/skills/{summarize → tools/summarize}/SKILL.md +0 -0
- /package/skills/{weather → tools/weather}/SKILL.md +0 -0
|
@@ -169,7 +169,7 @@ def _get_authors_from_docx(docx_path: Path) -> dict[str, int]:
|
|
|
169
169
|
return {}
|
|
170
170
|
|
|
171
171
|
|
|
172
|
-
def infer_author(modified_dir: Path, original_docx: Path, default: str = "
|
|
172
|
+
def infer_author(modified_dir: Path, original_docx: Path, default: str = "Claude") -> str:
|
|
173
173
|
modified_xml = modified_dir / "word" / "document.xml"
|
|
174
174
|
modified_authors = get_tracked_change_authors(modified_xml)
|
|
175
175
|
|
|
@@ -76,12 +76,12 @@ def _run_validation(
|
|
|
76
76
|
validators = []
|
|
77
77
|
|
|
78
78
|
if suffix == ".docx":
|
|
79
|
-
author = "
|
|
79
|
+
author = "Claude"
|
|
80
80
|
if infer_author_func:
|
|
81
81
|
try:
|
|
82
82
|
author = infer_author_func(unpacked_dir, original_file)
|
|
83
83
|
except ValueError as e:
|
|
84
|
-
print(f"Warning: {e} Using default author '
|
|
84
|
+
print(f"Warning: {e} Using default author 'Claude'.", file=sys.stderr)
|
|
85
85
|
|
|
86
86
|
validators = [
|
|
87
87
|
DOCXSchemaValidator(unpacked_dir, original_file),
|
|
@@ -47,8 +47,8 @@ def main():
|
|
|
47
47
|
)
|
|
48
48
|
parser.add_argument(
|
|
49
49
|
"--author",
|
|
50
|
-
default="
|
|
51
|
-
help="Author name for redlining validation (default:
|
|
50
|
+
default="Claude",
|
|
51
|
+
help="Author name for redlining validation (default: Claude)",
|
|
52
52
|
)
|
|
53
53
|
args = parser.parse_args()
|
|
54
54
|
|
|
@@ -10,7 +10,7 @@ from pathlib import Path
|
|
|
10
10
|
|
|
11
11
|
class RedliningValidator:
|
|
12
12
|
|
|
13
|
-
def __init__(self, unpacked_dir, original_docx, verbose=False, author="
|
|
13
|
+
def __init__(self, unpacked_dir, original_docx, verbose=False, author="Claude"):
|
|
14
14
|
self.unpacked_dir = Path(unpacked_dir)
|
|
15
15
|
self.original_docx = Path(original_docx)
|
|
16
16
|
self.verbose = verbose
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pdf
|
|
3
|
+
description: 当用户想对 PDF 文件进行任何操作时使用本技能。包括从 PDF 中读取或提取文字/表格、合并多个 PDF、拆分 PDF、旋转页面、添加水印、创建新 PDF、填写 PDF 表单、加密/解密 PDF、提取图片,以及对扫描版 PDF 进行 OCR 使其可搜索。如果用户提到 .pdf 文件或要求生成一份,使用本技能。
|
|
4
|
+
license: 专有。完整条款见 LICENSE.txt
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# PDF 处理指南
|
|
8
|
+
|
|
9
|
+
## 概述
|
|
10
|
+
|
|
11
|
+
本指南涵盖了使用 Python 库和命令行工具的基本 PDF 处理操作。高级功能、JavaScript 库和详细示例请参见 REFERENCE.md。如果需要填写 PDF 表单,请阅读 FORMS.md 并遵循其说明。
|
|
12
|
+
|
|
13
|
+
## 快速开始
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
from pypdf import PdfReader, PdfWriter
|
|
17
|
+
|
|
18
|
+
# 读取 PDF
|
|
19
|
+
reader = PdfReader("document.pdf")
|
|
20
|
+
print(f"页数:{len(reader.pages)}")
|
|
21
|
+
|
|
22
|
+
# 提取文字
|
|
23
|
+
text = ""
|
|
24
|
+
for page in reader.pages:
|
|
25
|
+
text += page.extract_text()
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Python 库
|
|
29
|
+
|
|
30
|
+
### pypdf - 基本操作
|
|
31
|
+
|
|
32
|
+
#### 合并 PDF
|
|
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
|
+
#### 拆分 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
|
+
#### 提取元数据
|
|
57
|
+
```python
|
|
58
|
+
reader = PdfReader("document.pdf")
|
|
59
|
+
meta = reader.metadata
|
|
60
|
+
print(f"标题:{meta.title}")
|
|
61
|
+
print(f"作者:{meta.author}")
|
|
62
|
+
print(f"主题:{meta.subject}")
|
|
63
|
+
print(f"创建者:{meta.creator}")
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### 旋转页面
|
|
67
|
+
```python
|
|
68
|
+
reader = PdfReader("input.pdf")
|
|
69
|
+
writer = PdfWriter()
|
|
70
|
+
|
|
71
|
+
page = reader.pages[0]
|
|
72
|
+
page.rotate(90) # 顺时针旋转 90 度
|
|
73
|
+
writer.add_page(page)
|
|
74
|
+
|
|
75
|
+
with open("rotated.pdf", "wb") as output:
|
|
76
|
+
writer.write(output)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### pdfplumber - 文字和表格提取
|
|
80
|
+
|
|
81
|
+
#### 保留布局提取文字
|
|
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
|
+
#### 提取表格
|
|
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"第 {i+1} 页上的表格 {j+1}:")
|
|
98
|
+
for row in table:
|
|
99
|
+
print(row)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
#### 高级表格提取
|
|
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: # 检查表格是否为空
|
|
112
|
+
df = pd.DataFrame(table[1:], columns=table[0])
|
|
113
|
+
all_tables.append(df)
|
|
114
|
+
|
|
115
|
+
# 合并所有表格
|
|
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 - 创建 PDF
|
|
122
|
+
|
|
123
|
+
#### 基本 PDF 创建
|
|
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
|
+
# 添加文字
|
|
132
|
+
c.drawString(100, height - 100, "你好,世界!")
|
|
133
|
+
c.drawString(100, height - 120, "这是用 reportlab 创建的 PDF")
|
|
134
|
+
|
|
135
|
+
# 添加线条
|
|
136
|
+
c.line(100, height - 140, 400, height - 140)
|
|
137
|
+
|
|
138
|
+
# 保存
|
|
139
|
+
c.save()
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
#### 创建多页 PDF
|
|
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
|
+
# 添加内容
|
|
153
|
+
title = Paragraph("报告标题", styles['Title'])
|
|
154
|
+
story.append(title)
|
|
155
|
+
story.append(Spacer(1, 12))
|
|
156
|
+
|
|
157
|
+
body = Paragraph("这是报告正文。" * 20, styles['Normal'])
|
|
158
|
+
story.append(body)
|
|
159
|
+
story.append(PageBreak())
|
|
160
|
+
|
|
161
|
+
# 第 2 页
|
|
162
|
+
story.append(Paragraph("第 2 页", styles['Heading1']))
|
|
163
|
+
story.append(Paragraph("第 2 页内容", styles['Normal']))
|
|
164
|
+
|
|
165
|
+
# 构建 PDF
|
|
166
|
+
doc.build(story)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
#### 下标和上标
|
|
170
|
+
|
|
171
|
+
**重要**:切勿在 ReportLab PDF 中使用 Unicode 下标/上标字符(₀₁₂₃₄₅₆₇₈₉、⁰¹²³⁴⁵⁶⁷⁸⁹)。内置字体不包含这些字形,会渲染为实心黑块。
|
|
172
|
+
|
|
173
|
+
请改用 ReportLab 的 XML 标记标签:
|
|
174
|
+
```python
|
|
175
|
+
from reportlab.platypus import Paragraph
|
|
176
|
+
from reportlab.lib.styles import getSampleStyleSheet
|
|
177
|
+
|
|
178
|
+
styles = getSampleStyleSheet()
|
|
179
|
+
|
|
180
|
+
# 下标:使用 <sub> 标签
|
|
181
|
+
chemical = Paragraph("H<sub>2</sub>O", styles['Normal'])
|
|
182
|
+
|
|
183
|
+
# 上标:使用 <super> 标签
|
|
184
|
+
squared = Paragraph("x<super>2</super> + y<super>2</super>", styles['Normal'])
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
对于 canvas 绘制的文字(非 Paragraph 对象),手动调整字体大小和位置,不要使用 Unicode 下标/上标。
|
|
188
|
+
|
|
189
|
+
## 命令行工具
|
|
190
|
+
|
|
191
|
+
### pdftotext(poppler-utils)
|
|
192
|
+
```bash
|
|
193
|
+
# 提取文字
|
|
194
|
+
pdftotext input.pdf output.txt
|
|
195
|
+
|
|
196
|
+
# 保留布局提取文字
|
|
197
|
+
pdftotext -layout input.pdf output.txt
|
|
198
|
+
|
|
199
|
+
# 提取指定页面
|
|
200
|
+
pdftotext -f 1 -l 5 input.pdf output.txt # 第 1-5 页
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### qpdf
|
|
204
|
+
```bash
|
|
205
|
+
# 合并 PDF
|
|
206
|
+
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
|
|
207
|
+
|
|
208
|
+
# 拆分页面
|
|
209
|
+
qpdf input.pdf --pages . 1-5 -- pages1-5.pdf
|
|
210
|
+
qpdf input.pdf --pages . 6-10 -- pages6-10.pdf
|
|
211
|
+
|
|
212
|
+
# 旋转页面
|
|
213
|
+
qpdf input.pdf output.pdf --rotate=+90:1 # 将第 1 页旋转 90 度
|
|
214
|
+
|
|
215
|
+
# 移除密码
|
|
216
|
+
qpdf --password=mypassword --decrypt encrypted.pdf decrypted.pdf
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### pdftk(如可用)
|
|
220
|
+
```bash
|
|
221
|
+
# 合并
|
|
222
|
+
pdftk file1.pdf file2.pdf cat output merged.pdf
|
|
223
|
+
|
|
224
|
+
# 拆分
|
|
225
|
+
pdftk input.pdf burst
|
|
226
|
+
|
|
227
|
+
# 旋转
|
|
228
|
+
pdftk input.pdf rotate 1east output rotated.pdf
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## 常见任务
|
|
232
|
+
|
|
233
|
+
### 从扫描版 PDF 提取文字
|
|
234
|
+
```python
|
|
235
|
+
# 需要:pip install pytesseract pdf2image
|
|
236
|
+
import pytesseract
|
|
237
|
+
from pdf2image import convert_from_path
|
|
238
|
+
|
|
239
|
+
# 将 PDF 转换为图片
|
|
240
|
+
images = convert_from_path('scanned.pdf')
|
|
241
|
+
|
|
242
|
+
# 对每页进行 OCR
|
|
243
|
+
text = ""
|
|
244
|
+
for i, image in enumerate(images):
|
|
245
|
+
text += f"第 {i+1} 页:\n"
|
|
246
|
+
text += pytesseract.image_to_string(image)
|
|
247
|
+
text += "\n\n"
|
|
248
|
+
|
|
249
|
+
print(text)
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### 添加水印
|
|
253
|
+
```python
|
|
254
|
+
from pypdf import PdfReader, PdfWriter
|
|
255
|
+
|
|
256
|
+
# 创建水印(或加载现有)
|
|
257
|
+
watermark = PdfReader("watermark.pdf").pages[0]
|
|
258
|
+
|
|
259
|
+
# 应用到所有页面
|
|
260
|
+
reader = PdfReader("document.pdf")
|
|
261
|
+
writer = PdfWriter()
|
|
262
|
+
|
|
263
|
+
for page in reader.pages:
|
|
264
|
+
page.merge_page(watermark)
|
|
265
|
+
writer.add_page(page)
|
|
266
|
+
|
|
267
|
+
with open("watermarked.pdf", "wb") as output:
|
|
268
|
+
writer.write(output)
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### 提取图片
|
|
272
|
+
```bash
|
|
273
|
+
# 使用 pdfimages(poppler-utils)
|
|
274
|
+
pdfimages -j input.pdf output_prefix
|
|
275
|
+
|
|
276
|
+
# 这会提取所有图片为 output_prefix-000.jpg、output_prefix-001.jpg 等
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### 密码保护
|
|
280
|
+
```python
|
|
281
|
+
from pypdf import PdfReader, PdfWriter
|
|
282
|
+
|
|
283
|
+
reader = PdfReader("input.pdf")
|
|
284
|
+
writer = PdfWriter()
|
|
285
|
+
|
|
286
|
+
for page in reader.pages:
|
|
287
|
+
writer.add_page(page)
|
|
288
|
+
|
|
289
|
+
# 添加密码
|
|
290
|
+
writer.encrypt("用户密码", "所有者密码")
|
|
291
|
+
|
|
292
|
+
with open("encrypted.pdf", "wb") as output:
|
|
293
|
+
writer.write(output)
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
## 快速参考
|
|
297
|
+
|
|
298
|
+
| 任务 | 最佳工具 | 命令/代码 |
|
|
299
|
+
|------|----------|----------|
|
|
300
|
+
| 合并 PDF | pypdf | `writer.add_page(page)` |
|
|
301
|
+
| 拆分 PDF | pypdf | 每页一个文件 |
|
|
302
|
+
| 提取文字 | pdfplumber | `page.extract_text()` |
|
|
303
|
+
| 提取表格 | pdfplumber | `page.extract_tables()` |
|
|
304
|
+
| 创建 PDF | reportlab | Canvas 或 Platypus |
|
|
305
|
+
| 命令行合并 | qpdf | `qpdf --empty --pages ...` |
|
|
306
|
+
| OCR 扫描版 PDF | pytesseract | 先转换为图片 |
|
|
307
|
+
| 填写 PDF 表单 | pdf-lib 或 pypdf(见 FORMS.md) | 见 FORMS.md |
|
|
308
|
+
|
|
309
|
+
## 后续步骤
|
|
310
|
+
|
|
311
|
+
- 高级 pypdfium2 用法,见 REFERENCE.md
|
|
312
|
+
- JavaScript 库(pdf-lib),见 REFERENCE.md
|
|
313
|
+
- 如需填写 PDF 表单,遵循 FORMS.md 中的说明
|
|
314
|
+
- 故障排除指南,见 REFERENCE.md
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pptx
|
|
3
|
+
description: "在任何涉及 .pptx 文件的任务中使用本技能——无论是作为输入、输出或两者兼有。包括:创建幻灯片、路演文稿或演示文稿;读取、解析或从任何 .pptx 文件中提取文字(即使提取的内容将用于其他地方,如邮件或摘要);编辑、修改或更新现有演示文稿;合并或拆分幻灯片文件;处理模板、布局、演讲者备注或批注。每当用户提到\"deck\"、\"slide\"、\"presentation\"或引用 .pptx 文件名时触发,无论他们之后打算如何处理内容。如果需要打开、创建或操作 .pptx 文件,请使用本技能。"
|
|
4
|
+
license: 专有。完整条款见 LICENSE.txt
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# PPTX 技能
|
|
8
|
+
|
|
9
|
+
## 快速参考
|
|
10
|
+
|
|
11
|
+
| 任务 | 指南 |
|
|
12
|
+
|------|------|
|
|
13
|
+
| 读取/分析内容 | `python -m markitdown presentation.pptx` |
|
|
14
|
+
| 编辑或从模板创建 | 阅读 [editing.md](editing.md) |
|
|
15
|
+
| 从零创建 | 阅读 [pptxgenjs.md](pptxgenjs.md) |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 读取内容
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# 文字提取
|
|
23
|
+
python -m markitdown presentation.pptx
|
|
24
|
+
|
|
25
|
+
# 视觉概览
|
|
26
|
+
python scripts/thumbnail.py presentation.pptx
|
|
27
|
+
|
|
28
|
+
# 原始 XML
|
|
29
|
+
python scripts/office/unpack.py presentation.pptx unpacked/
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 编辑工作流
|
|
35
|
+
|
|
36
|
+
**详细内容请阅读 [editing.md](editing.md)。**
|
|
37
|
+
|
|
38
|
+
1. 使用 `thumbnail.py` 分析模板
|
|
39
|
+
2. 解包 → 操作幻灯片 → 编辑内容 → 清理 → 打包
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 从零创建
|
|
44
|
+
|
|
45
|
+
**详细内容请阅读 [pptxgenjs.md](pptxgenjs.md)。**
|
|
46
|
+
|
|
47
|
+
当没有模板或参考演示文稿时使用。
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 设计思路
|
|
52
|
+
|
|
53
|
+
**不要创建无聊的幻灯片。** 白底黑字的纯项目符号无法打动任何人。以下是每个幻灯片可参考的设计思路。
|
|
54
|
+
|
|
55
|
+
### 开始之前
|
|
56
|
+
|
|
57
|
+
- **选择大胆且与内容相关的配色方案**:配色应让你感觉是为这个特定主题设计的。如果换到完全不同的演示文稿仍能"正常工作",说明你做的选择还不够具体。
|
|
58
|
+
- **主次分明**:一种颜色应占主导(60-70% 的视觉权重),配以 1-2 种辅助色和一种锐利的点缀色。永远不要让所有颜色权重相同。
|
|
59
|
+
- **明暗对比**:标题和结论幻灯片使用深色背景,内容页使用浅色("三明治"结构)。或者全部使用深色以营造高级感。
|
|
60
|
+
- **坚持视觉主题**:选择一个独特的元素并重复使用——圆角图片框、彩色圆圈内的图标、粗单侧边框。让它在每张幻灯片中贯穿始终。
|
|
61
|
+
|
|
62
|
+
### 配色方案
|
|
63
|
+
|
|
64
|
+
选择与主题匹配的颜色——不要默认使用通用蓝色。以下配色方案供参考:
|
|
65
|
+
|
|
66
|
+
| 主题 | 主色 | 辅助色 | 点缀色 |
|
|
67
|
+
|------|------|--------|--------|
|
|
68
|
+
| **午夜行政风** | `1E2761`(深蓝) | `CADCFC`(冰蓝) | `FFFFFF`(白) |
|
|
69
|
+
| **森林苔藓** | `2C5F2D(森林绿)` | `97BC62`(苔藓绿) | `F5F5F5`(奶油色) |
|
|
70
|
+
| **珊瑚能量** | `F96167`(珊瑚) | `F9E795`(金色) | `2F3C7E`(深蓝) |
|
|
71
|
+
| **暖陶土** | `B85042`(陶土) | `E7E8D1`(沙色) | `A7BEAE`(鼠尾草) |
|
|
72
|
+
| **海洋渐变** | `065A82`(深蓝) | `1C7293`(青绿) | `21295C`(午夜蓝) |
|
|
73
|
+
| **炭灰极简** | `36454F`(炭灰) | `F2F2F2`(米白) | `212121`(黑) |
|
|
74
|
+
| **青绿信任** | `028090`(青绿) | `00A896`(海沫) | `02C39A`(薄荷) |
|
|
75
|
+
| **浆果奶油** | `6D2E46`(浆果红) | `A26769`(灰粉) | `ECE2D0`(奶油色) |
|
|
76
|
+
| **鼠尾草宁静** | `84B59F`(鼠尾草) | `69A297`(桉树绿) | `50808E`(石板灰) |
|
|
77
|
+
| **樱桃大胆** | `990011`(樱桃红) | `FCF6F5`(米白) | `2F3C7E`(深蓝) |
|
|
78
|
+
|
|
79
|
+
### 每张幻灯片
|
|
80
|
+
|
|
81
|
+
**每张幻灯片都需要一个视觉元素**——图片、图表、图标或形状。纯文字幻灯片很容易被遗忘。
|
|
82
|
+
|
|
83
|
+
**布局选项:**
|
|
84
|
+
- 两栏(左文字,右图示)
|
|
85
|
+
- 图标+文字行(彩色圆圈中的图标、粗体标题、下方描述)
|
|
86
|
+
- 2x2 或 2x3 网格(一侧图片,另一侧内容块网格)
|
|
87
|
+
- 半出血图片(整左侧或右侧)配合内容叠加
|
|
88
|
+
|
|
89
|
+
**数据显示:**
|
|
90
|
+
- 大号数据标注(大字 60-72pt,下方小号标签)
|
|
91
|
+
- 对比栏(前后对比、优缺点、并列选项)
|
|
92
|
+
- 时间线或流程(编号步骤、箭头)
|
|
93
|
+
|
|
94
|
+
**视觉润色:**
|
|
95
|
+
- 章节标题旁的小型彩色圆图标
|
|
96
|
+
- 关键统计或标语用斜体点缀文字
|
|
97
|
+
|
|
98
|
+
### 字体排印
|
|
99
|
+
|
|
100
|
+
**选择有趣的字体搭配**——不要默认使用 Arial。选择有特色的标题字体,搭配清晰的正文字体。
|
|
101
|
+
|
|
102
|
+
| 标题字体 | 正文字体 |
|
|
103
|
+
|----------|----------|
|
|
104
|
+
| Georgia | Calibri |
|
|
105
|
+
| Arial Black | Arial |
|
|
106
|
+
| Calibri | Calibri Light |
|
|
107
|
+
| Cambria | Calibri |
|
|
108
|
+
| Trebuchet MS | Calibri |
|
|
109
|
+
| Impact | Arial |
|
|
110
|
+
| Palatino | Garamond |
|
|
111
|
+
| Consolas | Calibri |
|
|
112
|
+
|
|
113
|
+
| 元素 | 字号 |
|
|
114
|
+
|------|------|
|
|
115
|
+
| 幻灯片标题 | 36-44pt 粗体 |
|
|
116
|
+
| 章节标题 | 20-24pt 粗体 |
|
|
117
|
+
| 正文 | 14-16pt |
|
|
118
|
+
| 说明文字 | 10-12pt 浅色 |
|
|
119
|
+
|
|
120
|
+
### 间距
|
|
121
|
+
|
|
122
|
+
- 最小边距 0.5 英寸
|
|
123
|
+
- 内容块之间 0.3-0.5 英寸
|
|
124
|
+
- 留出呼吸空间——不要塞满每一寸
|
|
125
|
+
|
|
126
|
+
### 避免(常见错误)
|
|
127
|
+
|
|
128
|
+
- **不要重复相同的布局**——在幻灯片之间变化列、卡片和标注样式
|
|
129
|
+
- **不要居中正文**——左对齐段落和列表;只居中标题
|
|
130
|
+
- **不要吝啬大小对比**——标题需要 36pt+ 才能从 14-16pt 正文中脱颖而出
|
|
131
|
+
- **不要默认使用蓝色**——选择反映特定主题的颜色
|
|
132
|
+
- **不要随机混用间距**——选择 0.3 英寸或 0.5 英寸的间距并一致使用
|
|
133
|
+
- **不要只美化一张幻灯片而其余保持平淡**——要么全心投入,要么全文保持简洁
|
|
134
|
+
- **不要创建纯文字幻灯片**——添加图片、图标、图表或视觉元素;避免仅标题+项目符号
|
|
135
|
+
- **不要忘记文本框内边距**——在排列线条或形状与文字边缘对齐时,设置文本框 `margin:0` 或相应偏移形状
|
|
136
|
+
- **不要使用低对比度元素**——图标和文字都需要与背景有强烈对比;避免浅色背景上的浅色文字或深色背景上的深色文字
|
|
137
|
+
- **永远不要在标题下使用装饰线**——这是 AI 生成幻灯片的标志;改用留白或背景色
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## QA(必需)
|
|
142
|
+
|
|
143
|
+
**假设存在问题。你的工作就是找到它们。**
|
|
144
|
+
|
|
145
|
+
第一次渲染几乎从不会是完美的。将 QA 视为排查漏洞,而非确认步骤。如果第一次检查发现零问题,说明你没有认真查找。
|
|
146
|
+
|
|
147
|
+
### 内容 QA
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
python -m markitdown output.pptx
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
检查内容缺失、拼写错误、顺序不对。
|
|
154
|
+
|
|
155
|
+
**使用模板时,检查是否残留占位文本:**
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
python -m markitdown output.pptx | grep -iE "xxxx|lorem|ipsum|this.*(page|slide).*layout"
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
如果 grep 有结果,在宣布成功之前修复它们。
|
|
162
|
+
|
|
163
|
+
### 视觉 QA
|
|
164
|
+
|
|
165
|
+
**⚠️ 使用子代理**——即使只有 2-3 张幻灯片也是如此。你一直盯着代码,会看到你期望的内容而非实际内容。子代理有全新的视角。
|
|
166
|
+
|
|
167
|
+
将幻灯片转换为图片(参见[转换为图片](#转换为图片)),然后使用以下提示:
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
视觉检查这些幻灯片。假设存在问题——找到它们。
|
|
171
|
+
|
|
172
|
+
查找:
|
|
173
|
+
- 重叠元素(文字穿过形状、线条穿过文字、堆叠元素)
|
|
174
|
+
- 文字溢出或在边缘/框边界处被截断
|
|
175
|
+
- 装饰线为单行文字定位但标题换行为两行
|
|
176
|
+
- 来源引用或页脚与上方内容碰撞
|
|
177
|
+
- 元素间距太近(< 0.3 英寸间隙)或卡片/章节几乎相接
|
|
178
|
+
- 间距不均匀(一处大面积空白,另一处拥挤)
|
|
179
|
+
- 距离幻灯片边缘边距不足(< 0.5 英寸)
|
|
180
|
+
- 列或类似元素未一致对齐
|
|
181
|
+
- 低对比度文字(如奶油色背景上的浅灰文字)
|
|
182
|
+
- 低对比度图标(如深色背景上的深色图标,无对比色圆圈)
|
|
183
|
+
- 文本框过窄导致过多换行
|
|
184
|
+
- 残留占位内容
|
|
185
|
+
|
|
186
|
+
对每张幻灯片,列出问题或关注点,即使是很小的。
|
|
187
|
+
|
|
188
|
+
阅读并分析这些图片:
|
|
189
|
+
1. /path/to/slide-01.jpg(预期:[简要描述])
|
|
190
|
+
2. /path/to/slide-02.jpg(预期:[简要描述])
|
|
191
|
+
|
|
192
|
+
报告所有发现的问题,包括小的。
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### 验证循环
|
|
196
|
+
|
|
197
|
+
1. 生成幻灯片 → 转换为图片 → 检查
|
|
198
|
+
2. **列出发现的问题**(如未发现问题,请更批判性地审查)
|
|
199
|
+
3. 修复问题
|
|
200
|
+
4. **重新验证受影响的幻灯片**——一次修复往往会产生新的问题
|
|
201
|
+
5. 重复直到完整一轮检查未发现新问题
|
|
202
|
+
|
|
203
|
+
**在完成至少一轮修复-验证循环之前,不要宣布成功。**
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 转换为图片
|
|
208
|
+
|
|
209
|
+
将演示文稿转换为单个幻灯片图片以便视觉检查:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
python scripts/office/soffice.py --headless --convert-to pdf output.pptx
|
|
213
|
+
pdftoppm -jpeg -r 150 output.pdf slide
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
这会创建 `slide-01.jpg`、`slide-02.jpg` 等。
|
|
217
|
+
|
|
218
|
+
修复后重新渲染特定幻灯片:
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
pdftoppm -jpeg -r 150 -f N -l N output.pdf slide-fixed
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 依赖项
|
|
227
|
+
|
|
228
|
+
- `pip install "markitdown[pptx]"` - 文字提取
|
|
229
|
+
- `pip install Pillow` - 缩略图网格
|
|
230
|
+
- `npm install -g pptxgenjs` - 从零创建
|
|
231
|
+
- LibreOffice(`soffice`)- PDF 转换(通过 `scripts/office/soffice.py` 为沙箱环境自动配置)
|
|
232
|
+
- Poppler(`pdftoppm`)- PDF 转图片
|
|
@@ -114,7 +114,7 @@ Slide order is in `ppt/presentation.xml` → `<p:sldIdLst>`.
|
|
|
114
114
|
|
|
115
115
|
**Subagents:** If available, use them here (after completing step 4). Each slide is a separate XML file, so subagents can edit in parallel. In your prompt to subagents, include:
|
|
116
116
|
- The slide file path(s) to edit
|
|
117
|
-
- **"
|
|
117
|
+
- **"Use the Edit tool for all changes"**
|
|
118
118
|
- The formatting rules and common pitfalls below
|
|
119
119
|
|
|
120
120
|
For each slide:
|
|
@@ -122,7 +122,7 @@ For each slide:
|
|
|
122
122
|
2. Identify ALL placeholder content—text, images, charts, icons, captions
|
|
123
123
|
3. Replace each placeholder with final content
|
|
124
124
|
|
|
125
|
-
**
|
|
125
|
+
**Use the Edit tool, not sed or Python scripts.** The Edit tool forces specificity about what to replace and where, yielding better reliability.
|
|
126
126
|
|
|
127
127
|
### Formatting Rules
|
|
128
128
|
|
|
@@ -184,7 +184,7 @@ Copy `<a:pPr>` from the original paragraph to preserve line spacing. Use `b="1"`
|
|
|
184
184
|
|
|
185
185
|
### Smart Quotes
|
|
186
186
|
|
|
187
|
-
Handled automatically by unpack/pack.
|
|
187
|
+
Handled automatically by unpack/pack. But the Edit tool converts smart quotes to ASCII.
|
|
188
188
|
|
|
189
189
|
**When adding new text with quotes, use XML entities:**
|
|
190
190
|
|
|
@@ -169,7 +169,7 @@ def _get_authors_from_docx(docx_path: Path) -> dict[str, int]:
|
|
|
169
169
|
return {}
|
|
170
170
|
|
|
171
171
|
|
|
172
|
-
def infer_author(modified_dir: Path, original_docx: Path, default: str = "
|
|
172
|
+
def infer_author(modified_dir: Path, original_docx: Path, default: str = "Claude") -> str:
|
|
173
173
|
modified_xml = modified_dir / "word" / "document.xml"
|
|
174
174
|
modified_authors = get_tracked_change_authors(modified_xml)
|
|
175
175
|
|
|
@@ -76,12 +76,12 @@ def _run_validation(
|
|
|
76
76
|
validators = []
|
|
77
77
|
|
|
78
78
|
if suffix == ".docx":
|
|
79
|
-
author = "
|
|
79
|
+
author = "Claude"
|
|
80
80
|
if infer_author_func:
|
|
81
81
|
try:
|
|
82
82
|
author = infer_author_func(unpacked_dir, original_file)
|
|
83
83
|
except ValueError as e:
|
|
84
|
-
print(f"Warning: {e} Using default author '
|
|
84
|
+
print(f"Warning: {e} Using default author 'Claude'.", file=sys.stderr)
|
|
85
85
|
|
|
86
86
|
validators = [
|
|
87
87
|
DOCXSchemaValidator(unpacked_dir, original_file),
|
|
@@ -47,8 +47,8 @@ def main():
|
|
|
47
47
|
)
|
|
48
48
|
parser.add_argument(
|
|
49
49
|
"--author",
|
|
50
|
-
default="
|
|
51
|
-
help="Author name for redlining validation (default:
|
|
50
|
+
default="Claude",
|
|
51
|
+
help="Author name for redlining validation (default: Claude)",
|
|
52
52
|
)
|
|
53
53
|
args = parser.parse_args()
|
|
54
54
|
|
|
@@ -10,7 +10,7 @@ from pathlib import Path
|
|
|
10
10
|
|
|
11
11
|
class RedliningValidator:
|
|
12
12
|
|
|
13
|
-
def __init__(self, unpacked_dir, original_docx, verbose=False, author="
|
|
13
|
+
def __init__(self, unpacked_dir, original_docx, verbose=False, author="Claude"):
|
|
14
14
|
self.unpacked_dir = Path(unpacked_dir)
|
|
15
15
|
self.original_docx = Path(original_docx)
|
|
16
16
|
self.verbose = verbose
|