@fectivnfy112358/minimax-code-web 0.1.0-preview.0 → 0.1.0-preview.3
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/bin/mcode-webui.mjs +6 -2
- package/package.json +1 -1
- package/server/assets/agents/_default/prompt-base-all.md +121 -0
- package/server/assets/agents/_default/prompt-base-all.md.hbs +255 -0
- package/server/assets/agents/_default/prompt-base-windows.md +6 -0
- package/server/assets/agents/_default/prompt-base-windows.md.hbs +6 -0
- package/server/assets/agents/_default/prompt-base-worker.md +12 -0
- package/server/assets/agents/_default/prompt-base-worker.md.hbs +27 -0
- package/server/assets/agents/_default/prompt-session-branch.md +3 -0
- package/server/assets/agents/_default/prompt-session-branch.md.hbs +30 -0
- package/server/assets/agents/_default/prompt-session-root.md +4 -0
- package/server/assets/agents/_default/prompt-session-root.md.hbs +32 -0
- package/server/assets/agents/_migration/README.md +20 -0
- package/server/assets/agents/_migration/coder/PERSONA-zh.md +10 -0
- package/server/assets/agents/_migration/coder/PERSONA.md +11 -0
- package/server/assets/agents/_migration/coder/system-prompt.md.hbs +42 -0
- package/server/assets/agents/_migration/general/PERSONA-zh.md +11 -0
- package/server/assets/agents/_migration/general/PERSONA.md +11 -0
- package/server/assets/agents/_migration/general/system-prompt.md.hbs +49 -0
- package/server/assets/agents/_v2/AGENT_CONTEXT.md.hbs +222 -0
- package/server/assets/agents/_v2/coding/SYSTEM.md.hbs +161 -0
- package/server/assets/agents/_v2/explore.md.hbs +38 -0
- package/server/assets/agents/_v2/tui/SYSTEM.md.hbs +147 -0
- package/server/assets/agents/_v2/verifier.md.hbs +32 -0
- package/server/assets/agents/_v2/work/SYSTEM.md.hbs +173 -0
- package/server/assets/agents/_v2/worker.md.hbs +27 -0
- package/server/assets/agents/builtin-agents.json +1 -0
- package/server/assets/agents/desktop-task/archive-title/system-en.md +1 -0
- package/server/assets/agents/desktop-task/archive-title/system-zh.md +1 -0
- package/server/assets/agents/desktop-task/checkpoint/system.md +15 -0
- package/server/assets/agents/desktop-task/output-revision/system.md +1 -0
- package/server/assets/agents/desktop-task/retry/continuation.md +4 -0
- package/server/assets/agents/desktop-task/session-title/system.md +41 -0
- package/server/assets/agents/explore/PERSONA-zh.md +8 -0
- package/server/assets/agents/explore/PERSONA.md +8 -0
- package/server/assets/agents/explore/agent.md +14 -0
- package/server/assets/agents/explore/system-prompt.md.hbs +35 -0
- package/server/assets/agents/greeting-zh.md +61 -0
- package/server/assets/agents/greeting.md +61 -0
- package/server/assets/agents/managed-prompts.json +54 -0
- package/server/assets/agents/mavis/PERSONA-zh.md +7 -0
- package/server/assets/agents/mavis/PERSONA.md +7 -0
- package/server/assets/agents/mavis/features/cron.md.hbs +23 -0
- package/server/assets/agents/mavis/features/delegation.md.hbs +56 -0
- package/server/assets/agents/mavis/features/memory.md.hbs +61 -0
- package/server/assets/agents/mavis/features/recoverable-deletion.md.hbs +10 -0
- package/server/assets/agents/mavis/features/task-management.md.hbs +11 -0
- package/server/assets/agents/mavis/features/web-search.md.hbs +11 -0
- package/server/assets/agents/mavis/modes/coding/online/PERSONA-zh.md.hbs +20 -0
- package/server/assets/agents/mavis/modes/coding/online/PERSONA.md.hbs +20 -0
- package/server/assets/agents/mavis/modes/coding/online/SYSTEM.md.hbs +159 -0
- package/server/assets/agents/mavis/modes/work/online/PERSONA-zh.md.hbs +20 -0
- package/server/assets/agents/mavis/modes/work/online/PERSONA.md.hbs +20 -0
- package/server/assets/agents/mavis/modes/work/online/SYSTEM.md.hbs +161 -0
- package/server/assets/agents/mavis/prompt-session-root.md +4 -0
- package/server/assets/agents/mavis/prompt-session-root.md.hbs +4 -0
- package/server/assets/agents/mavis/skills/control-in-app-browser/SKILL.md +491 -0
- package/server/assets/agents/mavis/skills/minimax-code-product/SKILL.md +114 -0
- package/server/assets/agents/mavis/skills/minimax-code-product/references/account-models.md +32 -0
- package/server/assets/agents/mavis/skills/minimax-code-product/references/agents.md +25 -0
- package/server/assets/agents/mavis/skills/minimax-code-product/references/extensions.md +33 -0
- package/server/assets/agents/mavis/skills/minimax-code-product/references/workflows.md +30 -0
- package/server/assets/agents/mavis/system-prompt.md.hbs +97 -0
- package/server/assets/agents/prompt-exemptions.json +38 -0
- package/server/assets/agents/verifier/PERSONA-zh.md +8 -0
- package/server/assets/agents/verifier/PERSONA.md +8 -0
- package/server/assets/agents/verifier/agent.md +17 -0
- package/server/assets/agents/verifier/system-prompt.md.hbs +28 -0
- package/server/assets/agents/worker/PERSONA-zh.md +8 -0
- package/server/assets/agents/worker/PERSONA.md +8 -0
- package/server/assets/agents/worker/agent.md +18 -0
- package/server/assets/agents/worker/system-prompt.md.hbs +22 -0
- package/server/assets/agents/workflow/code-review/review-candidates.md +120 -0
- package/server/assets/agents/workflow/code-review/reviewer-system.md +75 -0
- package/server/assets/agents/workflow/goal/budget-limit.md +16 -0
- package/server/assets/agents/workflow/goal/continuation.md +62 -0
- package/server/assets/agents/workflow/goal/objective-updated.md +16 -0
- package/server/assets/agents/workflow/goal/recovery-terminal-audit.md +12 -0
- package/server/assets/agents/workflow/goal/recovery.md +11 -0
- package/server/assets/agents/workflow/goal/terminal-audit.md +9 -0
- package/server/assets/agents/workflow/plan-mode/agent-entry.md +72 -0
- package/server/assets/agents/workflow/prompt-hook/system.md +0 -0
- package/server/assets/models-dev-catalog.json.gz +0 -0
- package/server/assets/prompts/code-review/review-candidates.md +120 -0
- package/server/assets/prompts/code-review/reviewer-system.md +75 -0
- package/server/assets/skills/code-review/SKILL.md +51 -0
- package/server/assets/skills/cu-desktop/SKILL.md +257 -0
- package/server/assets/skills/deep-research/SKILL.md +219 -0
- package/server/assets/skills/deep-research/scripts/render_plan.py +33 -0
- package/server/assets/skills/deep-research/steps/1_background.md +65 -0
- package/server/assets/skills/deep-research/steps/2_judgment.md +66 -0
- package/server/assets/skills/deep-research/steps/3_analysis.md +114 -0
- package/server/assets/skills/deep-research/steps/4_research.md +161 -0
- package/server/assets/skills/deep-research/steps/5_writing.md +358 -0
- package/server/assets/skills/deploy-website/SKILL.md +55 -0
- package/server/assets/skills/docx/LICENSE +21 -0
- package/server/assets/skills/docx/SKILL.md +261 -0
- package/server/assets/skills/docx/assets/styles/academic_styles.xml +250 -0
- package/server/assets/skills/docx/assets/styles/corporate_styles.xml +284 -0
- package/server/assets/skills/docx/assets/styles/default_styles.xml +449 -0
- package/server/assets/skills/docx/assets/xsd/aesthetic-rules.xsd +470 -0
- package/server/assets/skills/docx/assets/xsd/business-rules.xsd +130 -0
- package/server/assets/skills/docx/assets/xsd/common-types.xsd +159 -0
- package/server/assets/skills/docx/assets/xsd/wml-subset.xsd +589 -0
- package/server/assets/skills/docx/docs/acceptance-checklists/create.md +7 -0
- package/server/assets/skills/docx/docs/acceptance-checklists/edit.md +6 -0
- package/server/assets/skills/docx/docs/acceptance-checklists/layout-repair.md +7 -0
- package/server/assets/skills/docx/docs/acceptance-checklists/template.md +6 -0
- package/server/assets/skills/docx/docs/acceptance.md +139 -0
- package/server/assets/skills/docx/docs/anti-patterns.md +14 -0
- package/server/assets/skills/docx/docs/backends.md +116 -0
- package/server/assets/skills/docx/docs/evidence.md +73 -0
- package/server/assets/skills/docx/docs/failure-taxonomy.md +71 -0
- package/server/assets/skills/docx/docs/index.md +50 -0
- package/server/assets/skills/docx/docs/rendered-delivery.md +125 -0
- package/server/assets/skills/docx/docs/router.md +122 -0
- package/server/assets/skills/docx/docs/tables-and-numbering.md +27 -0
- package/server/assets/skills/docx/docs/task-apply-template.md +141 -0
- package/server/assets/skills/docx/docs/task-compare-two-docx.md +48 -0
- package/server/assets/skills/docx/docs/task-create.md +124 -0
- package/server/assets/skills/docx/docs/task-edit-fill.md +69 -0
- package/server/assets/skills/docx/docs/task-read-content.md +148 -0
- package/server/assets/skills/docx/docs/task-read-rendered.md +78 -0
- package/server/assets/skills/docx/docs/task-read-structure.md +93 -0
- package/server/assets/skills/docx/docs/task-repair-layout.md +70 -0
- package/server/assets/skills/docx/docs/template-dsl.md +32 -0
- package/server/assets/skills/docx/docs/track-changes.md +15 -0
- package/server/assets/skills/docx/docs/xml-patch-dsl.md +33 -0
- package/server/assets/skills/docx/references/cjk_typography.md +357 -0
- package/server/assets/skills/docx/references/cjk_university_template_guide.md +184 -0
- package/server/assets/skills/docx/references/comments_guide.md +191 -0
- package/server/assets/skills/docx/references/design_good_bad_examples.md +829 -0
- package/server/assets/skills/docx/references/design_principles.md +819 -0
- package/server/assets/skills/docx/references/openxml_element_order.md +308 -0
- package/server/assets/skills/docx/references/openxml_encyclopedia_part1.md +4061 -0
- package/server/assets/skills/docx/references/openxml_encyclopedia_part2.md +2820 -0
- package/server/assets/skills/docx/references/openxml_encyclopedia_part3.md +3381 -0
- package/server/assets/skills/docx/references/openxml_namespaces.md +82 -0
- package/server/assets/skills/docx/references/openxml_units.md +72 -0
- package/server/assets/skills/docx/references/sample-patch-plans.json +22 -0
- package/server/assets/skills/docx/references/sample-task-intents.json +5 -0
- package/server/assets/skills/docx/references/sample-template-manifests.json +21 -0
- package/server/assets/skills/docx/references/scenario_a_create.md +284 -0
- package/server/assets/skills/docx/references/scenario_b_edit_content.md +295 -0
- package/server/assets/skills/docx/references/scenario_c_apply_template.md +456 -0
- package/server/assets/skills/docx/references/track_changes_guide.md +200 -0
- package/server/assets/skills/docx/references/troubleshooting.md +506 -0
- package/server/assets/skills/docx/references/typography_guide.md +294 -0
- package/server/assets/skills/docx/references/xsd_validation_guide.md +158 -0
- package/server/assets/skills/docx/scripts/build_patch_plan.py +29 -0
- package/server/assets/skills/docx/scripts/diff_docx_structure.py +61 -0
- package/server/assets/skills/docx/scripts/doc_to_docx.ps1 +85 -0
- package/server/assets/skills/docx/scripts/doc_to_docx.sh +40 -0
- package/server/assets/skills/docx/scripts/docx_preview.ps1 +76 -0
- package/server/assets/skills/docx/scripts/docx_preview.sh +37 -0
- package/server/assets/skills/docx/scripts/docx_to_pdf.py +87 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj +19 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/MiniMaxAIDocx.Core.csproj +15 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
- package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
- package/server/assets/skills/docx/scripts/env_check.ps1 +327 -0
- package/server/assets/skills/docx/scripts/env_check.sh +340 -0
- package/server/assets/skills/docx/scripts/extract_docx_text.py +1075 -0
- package/server/assets/skills/docx/scripts/pack_docx.py +31 -0
- package/server/assets/skills/docx/scripts/read_docx_structure.py +1032 -0
- package/server/assets/skills/docx/scripts/render_docx_pages.py +147 -0
- package/server/assets/skills/docx/scripts/rendered_report.py +609 -0
- package/server/assets/skills/docx/scripts/setup.ps1 +542 -0
- package/server/assets/skills/docx/scripts/setup.sh +537 -0
- package/server/assets/skills/docx/scripts/unpack_docx.py +29 -0
- package/server/assets/skills/docx/scripts/validate_template_manifest.py +60 -0
- package/server/assets/skills/docx/scripts/verify_anchor_atomicity.py +87 -0
- package/server/assets/skills/edit-deployed-website/SKILL.md +27 -0
- package/server/assets/skills/init/SKILL.md +137 -0
- package/server/assets/skills/lark-tools/SKILL.md +321 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-approval/SKILL.md +48 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-attendance/SKILL.md +57 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/SKILL.md +372 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/dashboard-block-data-config.md +350 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/examples.md +130 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/formula-field-guide.md +735 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-advperm-disable.md +83 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-advperm-enable.md +80 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-base-copy.md +74 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-base-create.md +68 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-base-get.md +39 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-arrange.md +83 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-block-create.md +108 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-block-delete.md +46 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-block-get.md +57 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-block-list.md +53 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-block-update.md +84 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-create.md +73 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-delete.md +44 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-get.md +59 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-list.md +52 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-update.md +69 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard.md +240 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-data-query.md +375 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field-create.md +104 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field-delete.md +51 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field-get.md +42 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field-list.md +44 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field-search-options.md +48 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field-update.md +97 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field.md +22 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-create.md +87 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-delete.md +64 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-get.md +68 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-list.md +73 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-questions-create.md +118 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-questions-delete.md +68 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-questions-list.md +84 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-questions-update.md +92 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-questions.md +23 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-update.md +82 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form.md +24 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-history.md +16 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-batch-create.md +76 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-batch-update.md +71 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-delete.md +51 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-get.md +38 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-history-list.md +86 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-list.md +83 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-search.md +72 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-upload-attachment.md +51 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-upsert.md +89 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record.md +28 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-role-create.md +89 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-role-delete.md +83 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-role-get.md +87 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-role-list.md +81 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-role-update.md +94 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-shortcut-field-properties.md +679 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-shortcut-record-value.md +200 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-table-create.md +62 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-table-delete.md +51 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-table-get.md +46 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-table-list.md +43 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-table-update.md +49 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-table.md +20 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-create.md +83 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-delete.md +48 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get-card.md +38 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get-filter.md +38 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get-group.md +38 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get-sort.md +38 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get-timebar.md +38 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get-visible-fields.md +38 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get.md +38 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-list.md +44 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-rename.md +44 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-set-card.md +81 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-set-filter.md +92 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-set-group.md +77 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-set-sort.md +77 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-set-timebar.md +79 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-set-visible-fields.md +73 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view.md +44 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-create.md +180 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-disable.md +94 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-enable.md +94 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-get.md +147 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-guide.md +718 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-list.md +123 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-schema.md +935 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-update.md +167 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow.md +23 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workspace.md +18 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lookup-field-guide.md +508 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-base/references/role-config.md +532 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-calendar/SKILL.md +143 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-agenda.md +78 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-create.md +109 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-freebusy.md +124 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-room-find.md +89 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-rsvp.md +42 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-schedule-meeting.md +194 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-suggestion.md +125 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-contact/SKILL.md +23 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-contact/references/lark-contact-get-user.md +47 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-contact/references/lark-contact-search-user.md +39 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-doc/SKILL.md +189 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-create.md +673 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-fetch.md +120 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-media-download.md +50 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-media-insert.md +51 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-media-preview.md +41 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-search.md +213 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-update.md +264 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-whiteboard-update.md +6 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/SKILL.md +294 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-add-comment.md +99 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-create-folder.md +73 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-create-shortcut.md +103 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-delete.md +79 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-download.md +31 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-export-download.md +50 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-export.md +100 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-import.md +132 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-move.md +120 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-reactions.md +113 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-task-result.md +264 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-upload.md +67 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-event/SKILL.md +21 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-event/references/lark-event-subscribe.md +217 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/SKILL.md +140 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-chat-create.md +156 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-chat-identity.md +55 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-chat-messages-list.md +142 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-chat-search.md +114 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-chat-update.md +84 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-messages-mget.md +95 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-messages-reply.md +222 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-messages-resources-download.md +94 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-messages-search.md +213 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-messages-send.md +223 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-reactions.md +297 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-threads-messages-list.md +111 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/SKILL.md +550 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-draft-create.md +110 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-draft-edit.md +376 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-forward.md +208 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-message.md +201 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-messages.md +108 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-reply-all.md +184 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-reply.md +220 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-send.md +178 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-signature.md +98 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-thread.md +111 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-triage.md +122 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-watch.md +94 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-minutes/SKILL.md +116 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-minutes/references/lark-minutes-download.md +119 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-minutes/references/lark-minutes-search.md +180 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-openapi-explorer/SKILL.md +153 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-shared/SKILL.md +141 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/SKILL.md +262 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-add-dimension.md +51 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-append.md +56 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-batch-set-style.md +53 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-create-filter-view-condition.md +42 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-create-filter-view.md +42 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-create.md +69 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-delete-dimension.md +53 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-delete-dropdown.md +46 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-delete-filter-view-condition.md +26 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-delete-filter-view.md +25 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-export.md +51 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-find.md +62 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-formula.md +89 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-get-dropdown.md +43 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-get-filter-view-condition.md +27 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-get-filter-view.md +26 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-info.md +43 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-insert-dimension.md +51 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-list-filter-view-conditions.md +28 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-list-filter-views.md +26 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-merge-cells.md +47 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-move-dimension.md +52 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-read.md +61 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-replace.md +62 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-set-dropdown.md +62 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-set-style.md +71 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-unmerge-cells.md +46 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-update-dimension.md +60 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-update-dropdown.md +51 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-update-filter-view-condition.md +27 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-update-filter-view.md +24 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-write-image.md +65 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-write.md +60 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-skill-maker/SKILL.md +85 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-slides/SKILL.md +368 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/examples.md +179 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/lark-slides-create.md +137 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/lark-slides-media-upload.md +143 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +215 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +119 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/lark-slides-xml-presentations-get.md +94 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/slide-templates.md +199 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/slides_demo.xml +226 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/slides_xml_schema_definition.xml +3004 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/xml-format-guide.md +369 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/xml-schema-quick-ref.md +215 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/SKILL.md +151 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-assign.md +35 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-comment.md +28 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-complete.md +27 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-create.md +51 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-followers.md +32 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-get-my-tasks.md +55 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-get-related-tasks.md +53 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-reminder.md +36 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-reopen.md +27 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-search.md +41 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-set-ancestor.md +32 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-subscribe-event.md +86 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-tasklist-create.md +35 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-tasklist-members.md +36 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-tasklist-search.md +38 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-tasklist-task-add.md +38 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-update.md +37 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-vc/SKILL.md +143 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-vc/references/lark-vc-notes.md +126 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-vc/references/lark-vc-recording.md +141 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-vc/references/lark-vc-search.md +159 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard/SKILL.md +118 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard/references/lark-whiteboard-query.md +49 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard/references/lark-whiteboard-update.md +97 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/SKILL.md +236 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/references/connectors.md +102 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/references/content.md +40 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/references/layout.md +374 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/references/schema.md +333 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/references/style.md +318 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/references/typography.md +73 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/architecture.md +433 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/bar-chart.md +181 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/comparison.md +135 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/fishbone.md +238 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/flowchart.md +185 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/flywheel.md +195 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/funnel.md +101 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/line-chart.md +208 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/mermaid.md +136 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/milestone.md +139 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/organization.md +175 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/pyramid.md +99 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/swimlane.md +370 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/treemap.md +210 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-wiki/SKILL.md +93 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-wiki/references/lark-wiki-move.md +183 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-wiki/references/lark-wiki-node-create.md +127 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-workflow-meeting-summary/SKILL.md +99 -0
- package/server/assets/skills/lark-tools/cli-skills/lark-workflow-standup-report/SKILL.md +120 -0
- package/server/assets/skills/lark-tools/references/commands-macos-linux.md +42 -0
- package/server/assets/skills/lark-tools/references/commands-windows-powershell.md +54 -0
- package/server/assets/skills/lark-tools/references/storage-paths.md +21 -0
- package/server/assets/skills/llm-call/SKILL.md +50 -0
- package/server/assets/skills/llm-call/scripts/llm_call.py +458 -0
- package/server/assets/skills/mcode-tools-master/SKILL.md +133 -0
- package/server/assets/skills/pdf/SKILL.md +287 -0
- package/server/assets/skills/pdf/docs/advanced-reference.md +711 -0
- package/server/assets/skills/pdf/docs/ai-voice-cloning-regulatory-report-case.md +303 -0
- package/server/assets/skills/pdf/docs/annual-report-financial-digest-latex-case.md +233 -0
- package/server/assets/skills/pdf/docs/create-guide.md +438 -0
- package/server/assets/skills/pdf/docs/design-guide.md +204 -0
- package/server/assets/skills/pdf/docs/docx-contract-roundtrip-professional-case.md +328 -0
- package/server/assets/skills/pdf/docs/email-translation-goldman-two-sessions-case.md +346 -0
- package/server/assets/skills/pdf/docs/forms-guide.md +462 -0
- package/server/assets/skills/pdf/docs/html-pdf-spec.md +500 -0
- package/server/assets/skills/pdf/docs/italy-schengen-visa-acroform-case.md +22 -0
- package/server/assets/skills/pdf/docs/latex-academic-thesis-guide.md +234 -0
- package/server/assets/skills/pdf/docs/latex-technical-book-guide.md +112 -0
- package/server/assets/skills/pdf/docs/markdown-static-academic-data-viz-case.md +280 -0
- package/server/assets/skills/pdf/docs/pitfalls-index.md +798 -0
- package/server/assets/skills/pdf/docs/read-guide.md +358 -0
- package/server/assets/skills/pdf/docs/reformat-guide.md +238 -0
- package/server/assets/skills/pdf/docs/skill-readme-archive.md +152 -0
- package/server/assets/skills/pdf/docs/troubleshooting.md +86 -0
- package/server/assets/skills/pdf/docs/vision-guide.md +188 -0
- package/server/assets/skills/pdf/scripts/__init__.py +0 -0
- package/server/assets/skills/pdf/scripts/_pdf_read_lib.py +284 -0
- package/server/assets/skills/pdf/scripts/fill/__init__.py +0 -0
- package/server/assets/skills/pdf/scripts/fill/acroform_apply.py +153 -0
- package/server/assets/skills/pdf/scripts/fill/overlay_apply.py +109 -0
- package/server/assets/skills/pdf/scripts/lib/__init__.py +0 -0
- package/server/assets/skills/pdf/scripts/lib/acroform_io.py +170 -0
- package/server/assets/skills/pdf/scripts/lib/cli_utils.py +41 -0
- package/server/assets/skills/pdf/scripts/lib/geometry.py +79 -0
- package/server/assets/skills/pdf/scripts/make.sh +388 -0
- package/server/assets/skills/pdf/scripts/merge.py +112 -0
- package/server/assets/skills/pdf/scripts/pdf_inspect/__init__.py +0 -0
- package/server/assets/skills/pdf/scripts/pdf_inspect/acroform_inspect.py +52 -0
- package/server/assets/skills/pdf/scripts/pdf_inspect/acroform_probe.py +57 -0
- package/server/assets/skills/pdf/scripts/pdf_inspect/layout_scan.py +164 -0
- package/server/assets/skills/pdf/scripts/read_pdf_vision.py +473 -0
- package/server/assets/skills/pdf/scripts/reformat_parse.py +181 -0
- package/server/assets/skills/pdf/scripts/render/__init__.py +0 -0
- package/server/assets/skills/pdf/scripts/render/overlay_preview.py +86 -0
- package/server/assets/skills/pdf/scripts/render/page_rasterize.py +85 -0
- package/server/assets/skills/pdf/scripts/render_html.cjs +205 -0
- package/server/assets/skills/pdf/scripts/validate/__init__.py +0 -0
- package/server/assets/skills/pdf/scripts/validate/geometry_lint.py +124 -0
- package/server/assets/skills/pdf/templates/INDEX.md +97 -0
- package/server/assets/skills/pdf/templates/bilingual-menu-premium/README.md +175 -0
- package/server/assets/skills/pdf/templates/bilingual-menu-premium/skeleton.html +343 -0
- package/server/assets/skills/pdf/templates/brand-guide-2page/README.md +140 -0
- package/server/assets/skills/pdf/templates/brand-guide-2page/cases/minimax-web-brand-guide/README.md +155 -0
- package/server/assets/skills/pdf/templates/brand-guide-2page/cases/minimax-web-brand-guide/source.html +188 -0
- package/server/assets/skills/pdf/templates/brand-guide-2page/skeleton.html +264 -0
- package/server/assets/skills/pdf/templates/data-viz-report/README.md +234 -0
- package/server/assets/skills/pdf/templates/data-viz-report/cases/annual-report-financial-digest-latex/README.md +12 -0
- package/server/assets/skills/pdf/templates/data-viz-report/cases/annual-report-financial-digest-latex/build_charts.py +341 -0
- package/server/assets/skills/pdf/templates/data-viz-report/cases/annual-report-financial-digest-latex/source.tex +161 -0
- package/server/assets/skills/pdf/templates/data-viz-report/cases/apple-m-ai-static-academic/assets/fig_1_1_table_1_1_specs.png +0 -0
- package/server/assets/skills/pdf/templates/data-viz-report/cases/apple-m-ai-static-academic/assets/fig_1_2_table_1_2_geekbench.png +0 -0
- package/server/assets/skills/pdf/templates/data-viz-report/cases/apple-m-ai-static-academic/assets/fig_1_3_mmax_generation.png +0 -0
- package/server/assets/skills/pdf/templates/data-viz-report/cases/apple-m-ai-static-academic/source.html +656 -0
- package/server/assets/skills/pdf/templates/data-viz-report/skeleton.html +835 -0
- package/server/assets/skills/pdf/templates/form-fill-acroform/README.md +198 -0
- package/server/assets/skills/pdf/templates/form-fill-acroform/cases/italy-schengen-visa-example/USER-FINAL-SUMMARY.template.md +42 -0
- package/server/assets/skills/pdf/templates/form-fill-acroform/cases/italy-schengen-visa-example/extract_pdfs_key_info.py +80 -0
- package/server/assets/skills/pdf/templates/form-fill-acroform/cases/italy-schengen-visa-example/field_values.case.json +233 -0
- package/server/assets/skills/pdf/templates/form-fill-acroform/field_values.template.json +118 -0
- package/server/assets/skills/pdf/templates/latex-academic-thesis/README.md +146 -0
- package/server/assets/skills/pdf/templates/latex-academic-thesis/source.tex +334 -0
- package/server/assets/skills/pdf/templates/latex-technical-book/README.md +130 -0
- package/server/assets/skills/pdf/templates/latex-technical-book/README.template-source.md +62 -0
- package/server/assets/skills/pdf/templates/latex-technical-book/source.tex +439 -0
- package/server/assets/skills/pdf/templates/multi-article-aggregator/README.md +148 -0
- package/server/assets/skills/pdf/templates/multi-article-aggregator/pipeline.md +223 -0
- package/server/assets/skills/pdf/templates/multilang-research-report/README.md +146 -0
- package/server/assets/skills/pdf/templates/multilang-research-report/cases/ai-voice-cloning-regulatory/source.html +244 -0
- package/server/assets/skills/pdf/templates/multilang-research-report/skeleton.html +242 -0
- package/server/assets/skills/pdf/templates/reformat-default/README.md +137 -0
- package/server/assets/skills/pdf/templates/reformat-default/cases/pku-contract-roundtrip/docx_engine.py +68 -0
- package/server/assets/skills/pdf/templates/reformat-default/cases/pku-contract-roundtrip/source.html +231 -0
- package/server/assets/skills/pdf/templates/reformat-default/cases/pku-contract-roundtrip/source.md +196 -0
- package/server/assets/skills/pdf/templates/reformat-default/skeleton.html +204 -0
- package/server/assets/skills/pdf/templates/translate-preserve-layout/README.md +147 -0
- package/server/assets/skills/pdf/templates/translate-preserve-layout/cases/goldman-china-two-sessions-cn.html +1660 -0
- package/server/assets/skills/pdf/templates/translate-preserve-layout/skeleton.html +96 -0
- package/server/assets/skills/pdf/templates/translate-preserve-layout/terminology.template.json +66 -0
- package/server/assets/skills/pptx/SKILL.md +285 -0
- package/server/assets/skills/pptx/references/design-system.md +424 -0
- package/server/assets/skills/pptx/references/editing.md +162 -0
- package/server/assets/skills/pptx/references/element-map.md +229 -0
- package/server/assets/skills/pptx/references/pitfalls.md +205 -0
- package/server/assets/skills/pptx/references/pptxgenjs.md +420 -0
- package/server/assets/skills/pptx/references/preview-selection-writeback.md +65 -0
- package/server/assets/skills/pptx/references/python-pptx-recipes.md +63 -0
- package/server/assets/skills/pptx/references/slide-types.md +413 -0
- package/server/assets/skills/pptx/scripts/audit_pptx.py +708 -0
- package/server/assets/skills/pptx/scripts/extract_comments.py +468 -0
- package/server/assets/skills/pptx/scripts/extract_images.py +226 -0
- package/server/assets/skills/pptx/scripts/extract_pptx.py +285 -0
- package/server/assets/skills/pptx/scripts/mavis-ppt-map.cjs +280 -0
- package/server/assets/skills/pptx/scripts/pdf2png.swift +203 -0
- package/server/assets/skills/pptx/scripts/pptx-screenshot.sh +105 -0
- package/server/assets/skills/resume-codex/SKILL.md +55 -0
- package/server/assets/skills/resume-codex/scripts/session-reader.mjs +445 -0
- package/server/assets/skills/skill-creator/SKILL.md +190 -0
- package/server/assets/skills/skill-creator/references/anti-patterns.md +149 -0
- package/server/assets/skills/skill-creator/references/commands-macos-linux.md +38 -0
- package/server/assets/skills/skill-creator/references/commands-windows-powershell.md +48 -0
- package/server/assets/skills/skill-creator/references/description-rubric.md +83 -0
- package/server/assets/skills/skill-creator/references/skill-template.md +101 -0
- package/server/assets/skills/skill-creator/references/when-to-bundle-scripts.md +139 -0
- package/server/assets/skills/skill-creator/scripts/lint-skill.js +226 -0
- package/server/assets/skills/skill-refiner/SKILL.md +139 -0
- package/server/assets/skills/visual-page/SKILL.md +196 -0
- package/server/assets/skills/x-link-reader/SKILL.md +110 -0
- package/server/assets/skills/xlsx/SKILL.md +501 -0
- package/server/assets/skills/xlsx/docs/advanced-reference.md +410 -0
- package/server/assets/skills/xlsx/docs/cases/superstore-multiformat/conversion_manifest.example.json +49 -0
- package/server/assets/skills/xlsx/docs/cases/superstore-multiformat/superstore_orders_print.html +17 -0
- package/server/assets/skills/xlsx/docs/conventions-guide.md +217 -0
- package/server/assets/skills/xlsx/docs/create-edit-guide.md +410 -0
- package/server/assets/skills/xlsx/docs/pitfalls-index.md +760 -0
- package/server/assets/skills/xlsx/docs/raw-xml-escape-hatch.md +201 -0
- package/server/assets/skills/xlsx/docs/recalc-guide.md +295 -0
- package/server/assets/skills/xlsx/docs/superstore-multiformat-conversion-case.md +413 -0
- package/server/assets/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
- package/server/assets/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
- package/server/assets/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/server/assets/skills/xlsx/scripts/office/pack.py +159 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/server/assets/skills/xlsx/scripts/office/soffice.py +191 -0
- package/server/assets/skills/xlsx/scripts/office/unpack.py +132 -0
- package/server/assets/skills/xlsx/scripts/office/validate.py +117 -0
- package/server/assets/skills/xlsx/scripts/office/validators/__init__.py +15 -0
- package/server/assets/skills/xlsx/scripts/office/validators/base.py +851 -0
- package/server/assets/skills/xlsx/scripts/office/validators/docx.py +446 -0
- package/server/assets/skills/xlsx/scripts/office/validators/pptx.py +275 -0
- package/server/assets/skills/xlsx/scripts/office/validators/redlining.py +247 -0
- package/server/assets/skills/xlsx/scripts/recalc.py +450 -0
- package/server/mcode-tools.js +2 -0
- package/server/package-info.json +1 -1
- package/server/server.js +2 -0
|
@@ -0,0 +1,798 @@
|
|
|
1
|
+
# Pitfalls Index — Canonical Query Templates
|
|
2
|
+
|
|
3
|
+
> **Match-and-fuse, don't read-and-think.** Each entry below is a
|
|
4
|
+
> production-ready prompt template. When the user's incoming query
|
|
5
|
+
> matches a `Match signatures` block, **copy the matching canonical
|
|
6
|
+
> query**, substitute the `Slots` with the user's actual values,
|
|
7
|
+
> and execute it verbatim. Each canonical query already encodes every
|
|
8
|
+
> known pitfall, every verification gate, and every fall-back path
|
|
9
|
+
> for that scenario — there is no extra "trace" to look up.
|
|
10
|
+
>
|
|
11
|
+
> If no signature matches, fall back to [`../SKILL.md`](../SKILL.md) routing.
|
|
12
|
+
> If a partial match (one of two slots fits), prefer **fusing** the
|
|
13
|
+
> matching template's verifications into your own plan rather than
|
|
14
|
+
> writing a new one from scratch.
|
|
15
|
+
>
|
|
16
|
+
> **Universal slot placeholders below** — these are referenced inside
|
|
17
|
+
> every canonical query and resolve at execution time:
|
|
18
|
+
>
|
|
19
|
+
> - `<SKILL>` → `{{DATA_DIR}}/.builtin-skills/pdf`
|
|
20
|
+
> - `<SKILL_XLSX>` → `{{DATA_DIR}}/.builtin-skills/xlsx`
|
|
21
|
+
> - `<TMP>` → a writable scratch dir (e.g. `/tmp/pdf-task-<ts>`)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Quick lookup — match user query to a case
|
|
26
|
+
|
|
27
|
+
| # | Match keywords | Slots | Canonical §|
|
|
28
|
+
|---|---|---|---|
|
|
29
|
+
| **P1** | brand guide / cover / poster / 品牌指南 / 设计规范 from a website | `BRAND_URL`, `OUTPUT_PATH`, `BRAND_NAME`, `PAGE_COUNT(default 2)`, `AUDIENCE(intl/US)` | §P1 |
|
|
30
|
+
| **P2** | bilingual menu / 双语菜单 / formal printed deliverable / certificate / two-pager | `LANG_A`, `LANG_B`, `RESTAURANT_TYPE`, `ITEMS_JSON`, `OUTPUT_PATH`, `AUDIENCE` | §P2 |
|
|
31
|
+
| **P3** | markdown→PDF / convert structured text to chart-rich PDF / 可视化报告 / data brief | `INPUT_PATH(.md/.csv)`, `OUTPUT_PATH`, `CHART_COUNT`, `THEME(default light)` | §P3 |
|
|
32
|
+
| **P4** | research report across N jurisdictions / multi-region regulatory survey / 多国监管 | `TOPIC`, `JURISDICTIONS[]`, `OUTPUT_PDF`, `DEADLINE_MIN(default 30)` | §P4 |
|
|
33
|
+
| **P5** | translate this <EML/PDF> to <lang> preserving layout / 翻译保版 | `INPUT_PATH(.eml/.pdf)`, `TARGET_LANG`, `OUTPUT_PATH` | §P5 |
|
|
34
|
+
| **P6** | find <X> in this <100+ page PDF> / 长 PDF 定向提取 / extract specific data from annual report | `PDF_PATH`, `TARGET_QUERY`, `MAX_OUTPUT_PAGES(optional)` | §P6 |
|
|
35
|
+
| **P7** | convert <240-page financial PDF> to Excel/Word/Markdown / 复杂金融排版 PDF 转格式 | `PDF_PATH`, `OUTPUT_FORMAT`, `OUTPUT_PATH`, `STATEMENTS[]` | §P7 |
|
|
36
|
+
| **P8** | fill out this PDF form / AcroForm / visa / tax / contract / 表单填写 | `FORM_PDF`, `MATERIALS[]`, `OUTPUT_PDF`, `MISSING_FIELDS_REPORT(true)` | §P8 |
|
|
37
|
+
| **P9** | export 10k+ row spreadsheet as PDF / 大表打印 / tabular → PDF | `INPUT_XLSX`, `OUTPUT_PDF`, `ORIENTATION`, `REPEAT_HEADER`, `FULL_OR_PREVIEW` | §P9 |
|
|
38
|
+
| **P10** | convert <DOCX/PDF/MD/HTML> to <formats> with fidelity loss report / 双向转换 | `INPUT_PATH`, `TARGET_FORMATS[]`, `OUTPUT_DIR` | §P10 |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## P1 — Branded paged PDF from web content
|
|
43
|
+
|
|
44
|
+
### Match signatures
|
|
45
|
+
|
|
46
|
+
- "做一份 {BRAND_NAME}({BRAND_URL})的 brand guide / 品牌指南 PDF"
|
|
47
|
+
- "make a brand-guide / cover / poster PDF from {BRAND_URL}"
|
|
48
|
+
- "把 {site} 抓取的品牌元素整理成双页 PDF"
|
|
49
|
+
- "create a 2-page design system overview for {company}"
|
|
50
|
+
|
|
51
|
+
### Canonical query
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
TASK: Generate a {PAGE_COUNT}-page brand guide PDF for {BRAND_NAME} from
|
|
55
|
+
{BRAND_URL}, output to {OUTPUT_PATH}.
|
|
56
|
+
|
|
57
|
+
STEP 1 — Environment preflight (mandatory)
|
|
58
|
+
bash <SKILL>/scripts/make.sh check 2><TMP>/check.log
|
|
59
|
+
# WARN/FAIL → bash <SKILL>/scripts/make.sh fix && re-run check
|
|
60
|
+
|
|
61
|
+
STEP 2 — Brand asset extraction (precise, not inferred)
|
|
62
|
+
curl -sL "{BRAND_URL}" > <TMP>/brand.html 2><TMP>/curl.log
|
|
63
|
+
# Palette — exact hex from CSS/SVG (NEVER infer from prose)
|
|
64
|
+
grep -oE '#[0-9a-fA-F]{6}' <TMP>/brand.html | sort -u > <TMP>/palette.txt
|
|
65
|
+
grep -oP 'fill="\K#[0-9a-fA-F]{6}' <TMP>/brand.html | sort -u >> <TMP>/palette.txt
|
|
66
|
+
# Fonts
|
|
67
|
+
grep -oiE 'font-family[: ][^;}"]+' <TMP>/brand.html | sort -u
|
|
68
|
+
# Logo — download SVG / PNG separately
|
|
69
|
+
# If <link rel="stylesheet"> points off-domain, fetch each one and grep colors there too.
|
|
70
|
+
|
|
71
|
+
STEP 3 — Template + fill placeholders
|
|
72
|
+
cp <SKILL>/templates/brand-guide-2page/skeleton.html <TMP>/page.html
|
|
73
|
+
# Replace <!-- PLACEHOLDER --> tokens with:
|
|
74
|
+
# - {BRAND_NAME}, tagline (LLM-extracted from site if user didn't supply)
|
|
75
|
+
# - 6-color palette from <TMP>/palette.txt (top 6 unique hex)
|
|
76
|
+
# - Font stack from grep above
|
|
77
|
+
# - Logo as <img src="data:image/...;base64,..."> or file:// reference
|
|
78
|
+
|
|
79
|
+
STEP 4 — Render (mandatory --format)
|
|
80
|
+
bash <SKILL>/scripts/make.sh render \
|
|
81
|
+
--in <TMP>/page.html --out {OUTPUT_PATH} \
|
|
82
|
+
--format <A4 if AUDIENCE=intl|CJK else Letter> --wait 15000
|
|
83
|
+
# Never rely on the renderer default; Chromium overrides CSS @page.
|
|
84
|
+
|
|
85
|
+
STEP 5 — Verification (BOTH gates mandatory)
|
|
86
|
+
pdfinfo {OUTPUT_PATH} | grep "Page size"
|
|
87
|
+
# Must print: 595.276 x 841.89 pts (A4) OR 612 x 792 pts (Letter)
|
|
88
|
+
# Mismatch → go back to STEP 4, do not ship.
|
|
89
|
+
pdfimages -list {OUTPUT_PATH} | tail -n +3 | wc -l
|
|
90
|
+
# Must be ≥ 1 (logo); typically ≥ 6 (logo + palette swatches + samples).
|
|
91
|
+
# If 0 → Chart.js / fonts didn't settle. Bump --wait 30000, set
|
|
92
|
+
# Chart.defaults.animation = false, wrap canvases in .avoid-break.
|
|
93
|
+
|
|
94
|
+
STEP 6 — Deliver with evidence
|
|
95
|
+
Report: pdfinfo "Page size" line + pdfimages count + screenshot of page 1.
|
|
96
|
+
|
|
97
|
+
CONSTRAINTS (universal — do not violate):
|
|
98
|
+
- NEVER `2>/dev/null` — redirect to <TMP>/*.log and grep on demand.
|
|
99
|
+
- Palette MUST come from CSS/SVG hex, never from rendered prose ("looks blue-ish").
|
|
100
|
+
- Always pass --format explicitly to make.sh render.
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## P2 — Bilingual menu / formal printed two-pager
|
|
106
|
+
|
|
107
|
+
### Match signatures
|
|
108
|
+
|
|
109
|
+
- "做一份 {LANG_A}-{LANG_B} 双语 {RESTAURANT_TYPE} 菜单 PDF"
|
|
110
|
+
- "make a {LANG_A}/{LANG_B} bilingual menu / wine list / certificate"
|
|
111
|
+
- "design a 2-page formal printed PDF for {use_case}"
|
|
112
|
+
|
|
113
|
+
### Canonical query
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
TASK: Render a 2-page bilingual ({LANG_A} + {LANG_B}) {RESTAURANT_TYPE}
|
|
117
|
+
menu PDF from items in {ITEMS_JSON}, output to {OUTPUT_PATH}.
|
|
118
|
+
|
|
119
|
+
STEP 1 — Preflight
|
|
120
|
+
bash <SKILL>/scripts/make.sh check 2><TMP>/check.log
|
|
121
|
+
|
|
122
|
+
STEP 2 — Use the canonical template (do not author from scratch)
|
|
123
|
+
cp <SKILL>/templates/bilingual-menu-premium/skeleton.html <TMP>/menu.html
|
|
124
|
+
# Inject ITEMS_JSON: each item has {LANG_A_name, LANG_B_name, price, category}
|
|
125
|
+
# Categories ≥ 3 (e.g. 前菜/Sushi/甘味). Pricing follows pricing_model.
|
|
126
|
+
|
|
127
|
+
STEP 3 — CJK font cascade verification
|
|
128
|
+
# If LANG_A or LANG_B ∈ {zh, ja, ko}, the HTML MUST declare:
|
|
129
|
+
# font-family: -apple-system, "PingFang SC", "Hiragino Sans",
|
|
130
|
+
# "Apple SD Gothic Neo", "Helvetica Neue", sans-serif;
|
|
131
|
+
# Cascade ORDER MATTERS — wrong order renders SC chars in JP forms.
|
|
132
|
+
|
|
133
|
+
STEP 4 — Render (canonical CLI shape)
|
|
134
|
+
bash <SKILL>/scripts/make.sh render \
|
|
135
|
+
--in <TMP>/menu.html --out {OUTPUT_PATH} \
|
|
136
|
+
--format A4 --wait 15000
|
|
137
|
+
# The flag is `--in` (not --input), `--out` (not --output).
|
|
138
|
+
# A4 by default for CJK / international audiences.
|
|
139
|
+
|
|
140
|
+
STEP 5 — Verification (CJK-aware)
|
|
141
|
+
pdfinfo {OUTPUT_PATH} | grep "Page size" # 595x841 pts (A4)
|
|
142
|
+
pdfimages -list {OUTPUT_PATH} | tail -n +3 | wc -l
|
|
143
|
+
pdftotext -layout {OUTPUT_PATH} - | head -40
|
|
144
|
+
# Look for [ ] [ ] tofu boxes in the CJK output. If any → install
|
|
145
|
+
# missing CJK font (`brew install font-noto-sans-cjk-sc`), re-render.
|
|
146
|
+
|
|
147
|
+
STEP 6 — Spot-check first page visually (optional but recommended)
|
|
148
|
+
pdftoppm -r 150 -png -f 1 -l 1 {OUTPUT_PATH} <TMP>/preview
|
|
149
|
+
# Open <TMP>/preview-1.png to confirm typography & balance.
|
|
150
|
+
|
|
151
|
+
CONSTRAINTS:
|
|
152
|
+
- Memorize the canonical render CLI shape: --in / --out (NOT --input / --output).
|
|
153
|
+
- For CJK languages, verify font cascade ORDER, not just presence.
|
|
154
|
+
- --format defaults to A4 here because menus are international/CJK; for
|
|
155
|
+
US-only steakhouses pass --format Letter explicitly.
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## P3 — Markdown / structured text → chart-rich PDF
|
|
161
|
+
|
|
162
|
+
### Match signatures
|
|
163
|
+
|
|
164
|
+
- "把 {INPUT_PATH} (markdown/csv) 转成含图表的 PDF 报告"
|
|
165
|
+
- "convert this benchmark / dataset / md into a visualized PDF"
|
|
166
|
+
- "make a data brief from {INPUT_PATH}"
|
|
167
|
+
- "可视化报告 / 图文报告 / 评测报告 / data report"
|
|
168
|
+
|
|
169
|
+
### Canonical query
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
TASK: Build a chart-rich PDF report from {INPUT_PATH}, with approximately
|
|
173
|
+
{CHART_COUNT} charts (auto-estimate if unspecified), output to {OUTPUT_PATH}.
|
|
174
|
+
|
|
175
|
+
STEP 1 — Preflight
|
|
176
|
+
bash <SKILL>/scripts/make.sh check 2><TMP>/check.log
|
|
177
|
+
# Includes Playwright Chromium check; fix if WARN.
|
|
178
|
+
|
|
179
|
+
STEP 2 — Choose template
|
|
180
|
+
cp -r <SKILL>/templates/data-viz-report/* <TMP>/
|
|
181
|
+
# The skeleton.html has KPI grid, chart-card, takeaway-row, conclusion primitives.
|
|
182
|
+
# If acceptance criteria require source hierarchy preservation, print-academic style,
|
|
183
|
+
# and static charts only (no Chart.js/ECharts/D3/Plotly), load:
|
|
184
|
+
# <SKILL>/docs/markdown-static-academic-data-viz-case.md
|
|
185
|
+
# and follow that case instead of the Chart.js skeleton path.
|
|
186
|
+
|
|
187
|
+
STEP 3 — Build content.json (mandatory ensure_ascii=False)
|
|
188
|
+
python3 <<EOF
|
|
189
|
+
import json, pathlib
|
|
190
|
+
payload = {
|
|
191
|
+
"title": "...",
|
|
192
|
+
"kpis": [...],
|
|
193
|
+
"charts": [{"id": "ch1", "type": "bar", "data": {...}}, ...],
|
|
194
|
+
"tables": [...],
|
|
195
|
+
"conclusion": "...",
|
|
196
|
+
}
|
|
197
|
+
pathlib.Path("<TMP>/content.json").write_text(
|
|
198
|
+
json.dumps(payload, ensure_ascii=False, indent=2),
|
|
199
|
+
encoding="utf-8",
|
|
200
|
+
)
|
|
201
|
+
EOF
|
|
202
|
+
# NEVER hand-concatenate JSON strings. CJK quotes / em-dashes break json.load.
|
|
203
|
+
|
|
204
|
+
STEP 4 — Render (mandatory --format + long --wait for charts)
|
|
205
|
+
bash <SKILL>/scripts/make.sh render \
|
|
206
|
+
--in <TMP>/page.html --out {OUTPUT_PATH} \
|
|
207
|
+
--format A4 --wait 15000
|
|
208
|
+
# 15s baseline; if charts are non-trivial (>30 series, animated), use 25000.
|
|
209
|
+
|
|
210
|
+
STEP 5 — Verification (both gates mandatory; pdftotext alone is NOT enough)
|
|
211
|
+
pdfinfo {OUTPUT_PATH} | grep "Page size"
|
|
212
|
+
IMG_COUNT=$(pdfimages -list {OUTPUT_PATH} | tail -n +3 | wc -l)
|
|
213
|
+
echo "Image count: $IMG_COUNT (expected ≥ {CHART_COUNT})"
|
|
214
|
+
# IMG_COUNT < CHART_COUNT → at least one chart is a blank canvas.
|
|
215
|
+
pdftotext -layout {OUTPUT_PATH} - | head -40 # body text sanity
|
|
216
|
+
|
|
217
|
+
STEP 6 — Chart-rendering recovery (when STEP 5 image count is low)
|
|
218
|
+
# 1. In the source HTML's <script>: Chart.defaults.animation = false;
|
|
219
|
+
# 2. Wrap every <canvas> parent: <div class="chart-card avoid-break">
|
|
220
|
+
# 3. Increase --wait to 30000
|
|
221
|
+
# 4. Re-render and re-verify.
|
|
222
|
+
# See <SKILL>/docs/troubleshooting.md "Chart.js render-timing checklist".
|
|
223
|
+
|
|
224
|
+
STEP 7 — For matplotlib pipelines (PNG → embedded into HTML)
|
|
225
|
+
ls -lh <TMP>/build/*.png # the intermediate PNGs MUST exist and be > 5 KB each.
|
|
226
|
+
|
|
227
|
+
CONSTRAINTS:
|
|
228
|
+
- JSON config files: json.dumps(payload, ensure_ascii=False, indent=2). Always.
|
|
229
|
+
- `pdftotext` cannot see images and silently passes a chart-less PDF.
|
|
230
|
+
pdfimages count is the ONLY reliable chart-presence check.
|
|
231
|
+
- Don't 2>/dev/null any of the verification commands.
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## P4 — Multi-jurisdiction research with parallel sub-agents
|
|
237
|
+
|
|
238
|
+
### Match signatures
|
|
239
|
+
|
|
240
|
+
- "研究 {TOPIC} 在 {JURISDICTIONS} 的 {regulatory|market|enforcement} 情况"
|
|
241
|
+
- "deep research on {topic} across {N} regions, output a synthesised PDF"
|
|
242
|
+
- "multi-country survey of {policy area}, parallel workers"
|
|
243
|
+
|
|
244
|
+
### Canonical query
|
|
245
|
+
|
|
246
|
+
```
|
|
247
|
+
TASK: Produce a synthesised PDF report on {TOPIC} covering jurisdictions
|
|
248
|
+
{JURISDICTIONS[]}, output to {OUTPUT_PDF} within {DEADLINE_MIN} minutes.
|
|
249
|
+
|
|
250
|
+
STEP 0 — Load progressive case when applicable
|
|
251
|
+
If TOPIC is AI voice cloning / synthetic voice / deepfake audio, or the
|
|
252
|
+
acceptance criteria require laws + regulators + cases + self-regulation +
|
|
253
|
+
source reliability ratings, read:
|
|
254
|
+
<SKILL>/docs/ai-voice-cloning-regulatory-report-case.md
|
|
255
|
+
Reuse its bounded worker prompts, terminology rules, fact-check table,
|
|
256
|
+
and optimized source HTML.
|
|
257
|
+
|
|
258
|
+
STEP 1 — Plan the fan-out (timeout-with-degrade is mandatory)
|
|
259
|
+
N background research sub-agents (task tool with
|
|
260
|
+
run_in_background: true, one per jurisdiction) + a synthesis step
|
|
261
|
+
after collecting their outputs. CRITICAL rules:
|
|
262
|
+
- Launch every research sub-agent with run_in_background: true.
|
|
263
|
+
Foreground task calls run sequentially and block — they cannot
|
|
264
|
+
honor the deadline rule below.
|
|
265
|
+
- Poll with task_query; collect finished reports with task_output.
|
|
266
|
+
At T+{DEADLINE_MIN}, task_stop the stragglers and proceed.
|
|
267
|
+
- Each sub-agent writes its report to <TMP>/report-<jurisdiction>.md
|
|
268
|
+
and returns only a short summary.
|
|
269
|
+
- The synthesis step explicitly allows partial input: "If at deadline
|
|
270
|
+
T+{DEADLINE_MIN}, fewer than N jurisdictions have delivered, ship a
|
|
271
|
+
partial PDF labelled 'Region X: data not yet available' for the
|
|
272
|
+
missing ones."
|
|
273
|
+
|
|
274
|
+
STEP 2 — Per-sub-agent prompt SHAPE (specific, not open-ended)
|
|
275
|
+
GOOD: "Find the 5 enacted statutes most-cited by {jurisdiction}'s
|
|
276
|
+
enforcement agencies on {topic} since 2020. For each: cite,
|
|
277
|
+
1-line summary, primary agency, last enforcement action date."
|
|
278
|
+
BAD: "Research {jurisdiction}'s regulatory framework for {topic}."
|
|
279
|
+
# Open-ended prompts run for hours and stall the whole batch.
|
|
280
|
+
|
|
281
|
+
STEP 3 — Synthesis (yourself, after the sub-agents return)
|
|
282
|
+
Cross-reference all received jurisdiction reports. Build a comparison
|
|
283
|
+
table (rows=jurisdictions, cols=key dimensions). Highlight 3 themes
|
|
284
|
+
that appear in ≥3 jurisdictions and 3 unique-to-one-region findings.
|
|
285
|
+
Then render via <SKILL>/scripts/make.sh render with the
|
|
286
|
+
templates/multilang-research-report skeleton, --format A4 --wait 15000.
|
|
287
|
+
|
|
288
|
+
STEP 4 — Failure handling
|
|
289
|
+
A sub-agent errors or returns garbage → relaunch it ONCE with the same
|
|
290
|
+
bounded prompt.
|
|
291
|
+
Still failing → proceed with the remaining N-1 reports; the partial-ship
|
|
292
|
+
rule from STEP 1 covers the gap.
|
|
293
|
+
|
|
294
|
+
STEP 5 — Final verify (after synthesis renders)
|
|
295
|
+
pdfinfo {OUTPUT_PDF} | grep Pages # expected ≥ N+2 (intro + per-region + comparison)
|
|
296
|
+
pdfinfo {OUTPUT_PDF} | grep "Page size" # match A4
|
|
297
|
+
pdfimages -list {OUTPUT_PDF} | tail -n +3 | wc -l
|
|
298
|
+
|
|
299
|
+
CONSTRAINTS:
|
|
300
|
+
- NEVER launch the fan-out without an explicit timeout-with-degrade rule.
|
|
301
|
+
- Sub-agent prompts MUST be specific. "全面研究" / "全面分析" = guaranteed stall.
|
|
302
|
+
- Don't suppress stderr in any sub-agent prompt — log to <TMP>/<worker>.log.
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## P5 — Translate EML / PDF to {lang} preserving layout
|
|
308
|
+
|
|
309
|
+
### Match signatures
|
|
310
|
+
|
|
311
|
+
- "把这份 {INPUT_PATH} (.eml/.pdf) 翻译成 {TARGET_LANG},保留排版"
|
|
312
|
+
- "translate this {Goldman Sachs / formal} report to {lang}, output PDF"
|
|
313
|
+
- "翻译保版 / preserve-layout translation"
|
|
314
|
+
|
|
315
|
+
### Canonical query
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
TASK: Translate {INPUT_PATH} into {TARGET_LANG} while preserving the
|
|
319
|
+
original page geometry, figures, and tables. Output to {OUTPUT_PATH}.
|
|
320
|
+
|
|
321
|
+
STEP 1 — Source parsing
|
|
322
|
+
Case A — INPUT_PATH ends with .eml:
|
|
323
|
+
# Progressive case for rich research-email HTML with optimized translation prompt:
|
|
324
|
+
# <SKILL>/docs/email-translation-goldman-two-sessions-case.md
|
|
325
|
+
python3 <<EOF
|
|
326
|
+
import email, re
|
|
327
|
+
msg = email.message_from_file(open("{INPUT_PATH}"))
|
|
328
|
+
# Walk parts: extract text/html, extract attachments, replace cid: refs
|
|
329
|
+
# with data: URIs so the rendered HTML is self-contained.
|
|
330
|
+
EOF
|
|
331
|
+
|
|
332
|
+
Case B — INPUT_PATH ends with .pdf:
|
|
333
|
+
# Use pdfplumber for prose pages; vision per-page for chart/table pages
|
|
334
|
+
# (see §P7 if the input is a financial doc).
|
|
335
|
+
|
|
336
|
+
STEP 2 — Translation (call LLM, never hand-write for long inputs)
|
|
337
|
+
Use the llm-call skill, batched per page or per logical block.
|
|
338
|
+
For rich EML research reports, copy the optimized prompt from the Goldman case;
|
|
339
|
+
it enforces JSON id parity, terminology freeze, numeric preservation, and QA.
|
|
340
|
+
STRICTLY PRESERVE verbatim:
|
|
341
|
+
- Numbers, dates, currency symbols, percentages
|
|
342
|
+
- Proper nouns (people, companies, fund codes, ticker symbols)
|
|
343
|
+
- Already-target-lang words (don't double-translate)
|
|
344
|
+
Only translate prose.
|
|
345
|
+
|
|
346
|
+
STEP 3 — Use the layout-preserving template
|
|
347
|
+
cp -r <SKILL>/templates/translate-preserve-layout/* <TMP>/
|
|
348
|
+
# The skeleton mirrors the source's page grid; substitute translated
|
|
349
|
+
# blocks into the page-grid slots. Don't author HTML from scratch.
|
|
350
|
+
# For rich EML HTML, prefer mutating the original HTML in place to preserve
|
|
351
|
+
# table grid, hrefs, and img src (see Goldman case).
|
|
352
|
+
|
|
353
|
+
STEP 4 — Render
|
|
354
|
+
bash <SKILL>/scripts/make.sh render \
|
|
355
|
+
--in <TMP>/translated.html --out {OUTPUT_PATH} \
|
|
356
|
+
--format <match source page size; default A4> --wait 15000
|
|
357
|
+
|
|
358
|
+
STEP 5 — Verification
|
|
359
|
+
pdfinfo {OUTPUT_PATH} | grep "Page size"
|
|
360
|
+
# Must MATCH the source PDF/EML's page size.
|
|
361
|
+
pdfimages -list {OUTPUT_PATH} | tail -n +3 | wc -l
|
|
362
|
+
# Must equal the source's image count (figures preserved).
|
|
363
|
+
pdftotext -layout {OUTPUT_PATH} - | head -60 # confirm target lang text
|
|
364
|
+
|
|
365
|
+
STEP 6 — Cross-check verbatim items
|
|
366
|
+
Spot-check 5 numeric values + 3 proper nouns: must appear unchanged
|
|
367
|
+
in the translated PDF.
|
|
368
|
+
|
|
369
|
+
CONSTRAINTS:
|
|
370
|
+
- Don't hand-translate long financial / legal text — call LLM via llm-call.
|
|
371
|
+
- Use the translate-preserve-layout template; don't re-author the grid.
|
|
372
|
+
- Number / date / proper-noun preservation is non-negotiable.
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## P6 — Targeted extraction from a 100+ page PDF
|
|
378
|
+
|
|
379
|
+
### Match signatures
|
|
380
|
+
|
|
381
|
+
- "在这份 {PDF_PATH}({N}页年报/招股书)里找 {TARGET_QUERY}"
|
|
382
|
+
- "extract {metric/section} from this annual report / prospectus / white paper"
|
|
383
|
+
- "what does {long PDF} say about {topic}"
|
|
384
|
+
|
|
385
|
+
### Canonical query
|
|
386
|
+
|
|
387
|
+
```
|
|
388
|
+
TASK: Locate and extract {TARGET_QUERY} from {PDF_PATH}, returning at most
|
|
389
|
+
{MAX_OUTPUT_PAGES or 5} pages of relevant content.
|
|
390
|
+
|
|
391
|
+
STEP 1 — Probe page count + structure (cheap, mandatory)
|
|
392
|
+
pdfinfo "{PDF_PATH}" | grep -E "Pages|Encrypted"
|
|
393
|
+
# Three thresholds determine path:
|
|
394
|
+
# ≤20 pages → skip locate, pdfplumber the whole thing.
|
|
395
|
+
# 21-200 pages → locate-first mandatory.
|
|
396
|
+
# >200 pages → ALWAYS build heading index FIRST (skip blind grep entirely).
|
|
397
|
+
|
|
398
|
+
STEP 2 — Build heading index (paths in cheapest-first order)
|
|
399
|
+
|
|
400
|
+
Path A — pypdf outline (cheapest):
|
|
401
|
+
python3 - <<EOF
|
|
402
|
+
from pypdf import PdfReader
|
|
403
|
+
doc = PdfReader("{PDF_PATH}")
|
|
404
|
+
def walk(items, depth=0):
|
|
405
|
+
for it in items:
|
|
406
|
+
if isinstance(it, list):
|
|
407
|
+
walk(it, depth + 1)
|
|
408
|
+
else:
|
|
409
|
+
p = doc.get_destination_page_number(it) + 1
|
|
410
|
+
print(f"{' '*depth}{it.title} -> p{p}")
|
|
411
|
+
walk(doc.outline)
|
|
412
|
+
EOF
|
|
413
|
+
|
|
414
|
+
Path B — printed TOC (when outline empty):
|
|
415
|
+
pdftotext -layout -f 1 -l 5 "{PDF_PATH}" - | head -120
|
|
416
|
+
# Note: printed page numbers may have a front-matter offset (cover,
|
|
417
|
+
# copyright, preface = 2-10 unnumbered pages). Add the offset before
|
|
418
|
+
# slicing.
|
|
419
|
+
|
|
420
|
+
Path C — full-text grep (last resort, BUDGET = 2 attempts max):
|
|
421
|
+
pdftotext -layout "{PDF_PATH}" - | grep -in "{KEYWORD}"
|
|
422
|
+
# If 2 different keywords don't land on the target, STOP and use Path A/B.
|
|
423
|
+
|
|
424
|
+
STEP 3 — Once target pages identified
|
|
425
|
+
Determine page nature:
|
|
426
|
+
- Pure prose / simple table → pdfplumber recipe (§3.1 in read-guide)
|
|
427
|
+
- Chart / diagram / financial table → vision PER PAGE (mandatory, see §P7)
|
|
428
|
+
python3 -m scripts.read_pdf_vision --input "{PDF_PATH}" --pages N
|
|
429
|
+
|
|
430
|
+
STEP 4 — JSON config (if writing intermediate file)
|
|
431
|
+
json.dumps(payload, ensure_ascii=False, indent=2)
|
|
432
|
+
# Mandatory for any file passed to a downstream tool.
|
|
433
|
+
|
|
434
|
+
STEP 5 — Deliver
|
|
435
|
+
Quote the relevant pages, cite page numbers, and if the user asked for
|
|
436
|
+
a number, also cite the line / row context surrounding it.
|
|
437
|
+
|
|
438
|
+
CONSTRAINTS:
|
|
439
|
+
- >200 pages + targeted query → BUILD INDEX FIRST. No blind greps.
|
|
440
|
+
- 2 blind grep limit applies regardless of page count.
|
|
441
|
+
- NEVER 2>/dev/null any extraction step. Use <TMP>/grep.log.
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## P7 — Complex financial PDF → structured format
|
|
447
|
+
|
|
448
|
+
### Match signatures
|
|
449
|
+
|
|
450
|
+
- "把这份 {PDF_PATH}(240页 financial report / 10-K / 招股书)转成 {Excel/Word/Markdown}"
|
|
451
|
+
- "convert balance sheet / income statement / cash-flow from {PDF} to {format}"
|
|
452
|
+
- "extract financial tables from {annual report}"
|
|
453
|
+
|
|
454
|
+
### Canonical query
|
|
455
|
+
|
|
456
|
+
```
|
|
457
|
+
TASK: Convert {STATEMENTS[]} (e.g. balance sheet, income statement,
|
|
458
|
+
cash-flow, debt schedule) from {PDF_PATH} into {OUTPUT_FORMAT},
|
|
459
|
+
output to {OUTPUT_PATH}, preserving every cell.
|
|
460
|
+
|
|
461
|
+
STEP 1 — Locate financial-table pages (run §P6 first)
|
|
462
|
+
Use §P6's heading-index path to list pages containing each statement.
|
|
463
|
+
Output: PAGES = [p_balance, p_income, p_cashflow, ...].
|
|
464
|
+
|
|
465
|
+
STEP 2 — Vision per page (MANDATORY — pdfplumber FORBIDDEN here)
|
|
466
|
+
# Reason: complex financial layout uses multi-level headers, merged
|
|
467
|
+
# cells, dotted leader lines, footnoted sub-totals. pdfplumber's
|
|
468
|
+
# extract_text returns scrambled fragments (`9,19109,190` for two
|
|
469
|
+
# adjacent numbers); extract_tables needs a clean grid these layouts
|
|
470
|
+
# never have.
|
|
471
|
+
|
|
472
|
+
for p in $PAGES; do
|
|
473
|
+
python3 -m scripts.read_pdf_vision \
|
|
474
|
+
--input "{PDF_PATH}" --pages $p \
|
|
475
|
+
--prompt "For every table on this page output one row per cell:
|
|
476
|
+
header_l1 | header_l2 | row_label | value | footnote_ref.
|
|
477
|
+
Preserve every sub-total and footnote marker. Use - for
|
|
478
|
+
empty cells. Output as TSV." \
|
|
479
|
+
--json 2><TMP>/vision-p$p.log > <TMP>/vision-p$p.json
|
|
480
|
+
done
|
|
481
|
+
|
|
482
|
+
STEP 3 — Parse vision output
|
|
483
|
+
python3 <<EOF
|
|
484
|
+
import json, pathlib
|
|
485
|
+
rows = []
|
|
486
|
+
for p in PAGES:
|
|
487
|
+
data = json.loads(pathlib.Path(f"<TMP>/vision-p{p}.json").read_text())
|
|
488
|
+
# Vision output is in chunks[0].text; parse the TSV.
|
|
489
|
+
for line in data["chunks"][0]["text"].splitlines():
|
|
490
|
+
parts = line.split("\t")
|
|
491
|
+
if len(parts) == 5:
|
|
492
|
+
rows.append({"page": p, "l1": parts[0], "l2": parts[1],
|
|
493
|
+
"label": parts[2], "value": parts[3],
|
|
494
|
+
"footnote": parts[4]})
|
|
495
|
+
EOF
|
|
496
|
+
|
|
497
|
+
STEP 4 — Write to OUTPUT_FORMAT
|
|
498
|
+
|
|
499
|
+
Case A — OUTPUT_FORMAT = xlsx:
|
|
500
|
+
# See [xlsx] §X4. One sheet per statement. Column A = label,
|
|
501
|
+
# data = pure dump (this leg has no derived values; if you compute
|
|
502
|
+
# totals/margins, switch to formula-first per [xlsx] §X5).
|
|
503
|
+
|
|
504
|
+
Case B — OUTPUT_FORMAT = docx:
|
|
505
|
+
# Use docx; render each statement as a Word table with
|
|
506
|
+
# multi-level headers preserved.
|
|
507
|
+
|
|
508
|
+
Case C — OUTPUT_FORMAT = md:
|
|
509
|
+
# Use Markdown tables; multi-level headers expand to a flat header row.
|
|
510
|
+
|
|
511
|
+
STEP 5 — Verification
|
|
512
|
+
Spot-check 3 sub-totals across statements: read them off the source PDF
|
|
513
|
+
visually, compare to the converted output. Mismatch → re-run vision
|
|
514
|
+
with a more explicit prompt for that page, never patch by hand.
|
|
515
|
+
|
|
516
|
+
CONSTRAINTS:
|
|
517
|
+
- pdfplumber.extract_tables on financial layouts is FORBIDDEN even when
|
|
518
|
+
the PDF is text-native. Visual structure complexity > text-native check.
|
|
519
|
+
- Vision MUST be per-page (`--pages N`). A range like `--pages 1-30`
|
|
520
|
+
stitches pages together and mis-attributes values.
|
|
521
|
+
- Don't 2>/dev/null vision calls — the daemon log on stderr is the only
|
|
522
|
+
debugging signal.
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
---
|
|
526
|
+
|
|
527
|
+
## P8 — AcroForm / PDF form filling
|
|
528
|
+
|
|
529
|
+
### Match signatures
|
|
530
|
+
|
|
531
|
+
- "填这份 {FORM_PDF} (visa / tax / contract),材料是 {MATERIALS[]}"
|
|
532
|
+
- "fill out PDF form / AcroForm with the supplied values"
|
|
533
|
+
- "把 {employment_letter / itinerary} 里的信息填到 {visa_form}"
|
|
534
|
+
|
|
535
|
+
### Canonical query
|
|
536
|
+
|
|
537
|
+
```
|
|
538
|
+
TASK: Fill {FORM_PDF} using values extracted from {MATERIALS[]},
|
|
539
|
+
output to {OUTPUT_PDF}. Report missing fields = {MISSING_FIELDS_REPORT}.
|
|
540
|
+
|
|
541
|
+
STEP 1 — Probe form type
|
|
542
|
+
bash <SKILL>/scripts/make.sh fill probe "{FORM_PDF}"
|
|
543
|
+
# Output: acroform=true → §B path; acroform=false → §C overlay path.
|
|
544
|
+
|
|
545
|
+
STEP 2 — Inspect fields (§B path only)
|
|
546
|
+
bash <SKILL>/scripts/make.sh fill inspect "{FORM_PDF}" <TMP>/meta.json
|
|
547
|
+
# Each record: {qname, page_no, type, box, on_value/off_value/choice_options}.
|
|
548
|
+
|
|
549
|
+
# Progressive case: if FORM_PDF is an Italian / Schengen visa application and
|
|
550
|
+
# MATERIALS include Chinese employment certificate + travel itinerary, read:
|
|
551
|
+
# <SKILL>/docs/italy-schengen-visa-acroform-case.md
|
|
552
|
+
# It includes extract_pdfs_key_info, uppercase pinyin/date transforms,
|
|
553
|
+
# missing-fields report, and exact verification evidence.
|
|
554
|
+
|
|
555
|
+
STEP 3 — Extract values from MATERIALS[]
|
|
556
|
+
For each material:
|
|
557
|
+
- Simple PDF (passport scan with text layer) → pdfplumber
|
|
558
|
+
- Complex PDF (employment letter with letterhead, stamps, multi-column)
|
|
559
|
+
→ vision per page per §P7
|
|
560
|
+
- DOCX itinerary → docx read
|
|
561
|
+
Build the qname → value mapping.
|
|
562
|
+
|
|
563
|
+
STEP 4 — Build values.json (NEW array schema)
|
|
564
|
+
python3 <<EOF
|
|
565
|
+
import json, pathlib
|
|
566
|
+
values = [
|
|
567
|
+
{"qname": "person.last_name", "page_no": 1, "set_to": "Park"},
|
|
568
|
+
{"qname": "person.first_name", "page_no": 1, "set_to": "Joon"},
|
|
569
|
+
# Checkbox: use the field's literal on_value, NOT "true"/"false"
|
|
570
|
+
{"qname": "is_adult", "page_no": 1, "set_to": "/On"},
|
|
571
|
+
]
|
|
572
|
+
pathlib.Path("<TMP>/values.json").write_text(
|
|
573
|
+
json.dumps(values, ensure_ascii=False, indent=2),
|
|
574
|
+
encoding="utf-8",
|
|
575
|
+
)
|
|
576
|
+
EOF
|
|
577
|
+
|
|
578
|
+
STEP 5 — Apply
|
|
579
|
+
bash <SKILL>/scripts/make.sh fill apply \
|
|
580
|
+
"{FORM_PDF}" <TMP>/values.json "{OUTPUT_PDF}"
|
|
581
|
+
|
|
582
|
+
# If you must skip the wrapper (custom validation / batch driver),
|
|
583
|
+
# USE EXACTLY THIS pypdf snippet — see <SKILL>/docs/forms-guide.md §B.4.1:
|
|
584
|
+
python3 <<EOF
|
|
585
|
+
from pypdf import PdfReader, PdfWriter
|
|
586
|
+
src = PdfReader("{FORM_PDF}")
|
|
587
|
+
out = PdfWriter(clone_from=src) # ← THE constructor
|
|
588
|
+
for page_no, vals in values_by_page.items():
|
|
589
|
+
out.update_page_form_field_values(
|
|
590
|
+
out.pages[page_no - 1], vals,
|
|
591
|
+
auto_regenerate=False,
|
|
592
|
+
)
|
|
593
|
+
out.set_need_appearances_writer(True) # ← MANDATORY
|
|
594
|
+
with open("{OUTPUT_PDF}", "wb") as fh:
|
|
595
|
+
out.write(fh)
|
|
596
|
+
EOF
|
|
597
|
+
# NEVER use any of these — they "succeed silently" (no error, no values):
|
|
598
|
+
# - PdfWriter() + clone_reader_document_root(src)
|
|
599
|
+
# - patching page["/Annots"] /V directly
|
|
600
|
+
# - PdfWriter() + append_pages_from_reader(src)
|
|
601
|
+
# - pypdf 1.x camelCase updatePageFormFieldValues (removed)
|
|
602
|
+
|
|
603
|
+
STEP 6 — Verify
|
|
604
|
+
bash <SKILL>/scripts/make.sh fill rasterize "{OUTPUT_PDF}" <TMP>/verify/
|
|
605
|
+
# Open <TMP>/verify/page_*.png and visually confirm each filled field.
|
|
606
|
+
|
|
607
|
+
STEP 7 — Missing-fields report (if MISSING_FIELDS_REPORT)
|
|
608
|
+
Print: "Filled X of Y fields. Missing: <qname>, <qname>, …"
|
|
609
|
+
For each missing: state which MATERIALS[] would have provided it.
|
|
610
|
+
|
|
611
|
+
CONSTRAINTS:
|
|
612
|
+
- The pypdf snippet in STEP 5 is THE only working pattern. Don't try variants.
|
|
613
|
+
- Checkboxes: write the literal on_value (`/On`, `/Yes`, `/Choice2`),
|
|
614
|
+
never `"true"`/`"false"`/`true`/`1`.
|
|
615
|
+
- Don't 2>/dev/null the apply step — silent-failure is the dominant mode.
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
---
|
|
619
|
+
|
|
620
|
+
## P9 — Tabular data → printable PDF
|
|
621
|
+
|
|
622
|
+
### Match signatures
|
|
623
|
+
|
|
624
|
+
- "把这份 {INPUT_XLSX}({N} 行)导出成 PDF / 打印"
|
|
625
|
+
- "export 10k+ rows as PDF, landscape, repeat header"
|
|
626
|
+
- "{xlsx} 转 PDF 可打印"
|
|
627
|
+
|
|
628
|
+
### Canonical query
|
|
629
|
+
|
|
630
|
+
```
|
|
631
|
+
TASK: Convert {INPUT_XLSX} (N rows) to PDF at {OUTPUT_PDF} with
|
|
632
|
+
orientation={ORIENTATION}, repeat_header={REPEAT_HEADER},
|
|
633
|
+
mode={FULL_OR_PREVIEW}.
|
|
634
|
+
|
|
635
|
+
STEP 0 — Strict wide-table / Superstore route check
|
|
636
|
+
If the request is a multi-format Excel conversion package (CSV + JSON +
|
|
637
|
+
PDF + CSV→Excel reverse validation), and the PDF must be HTML→PDF with
|
|
638
|
+
A4 landscape, repeated headers, all columns visible, no truncation, and
|
|
639
|
+
no CSS counters, load:
|
|
640
|
+
<SKILL_XLSX>/docs/superstore-multiformat-conversion-case.md
|
|
641
|
+
Follow its HTML-source workflow instead of the LibreOffice path below.
|
|
642
|
+
|
|
643
|
+
STEP 1 — Sanity probe
|
|
644
|
+
python3 -c "import pandas as pd; df = pd.read_excel('{INPUT_XLSX}'); print(len(df))"
|
|
645
|
+
# If row_count > 500 AND user didn't state mode → STOP and ASK:
|
|
646
|
+
# "This dataset has N rows. Full export will produce a ~XX MB PDF
|
|
647
|
+
# (estimated YY pages). Do you want full or first-N preview?"
|
|
648
|
+
|
|
649
|
+
STEP 2 — Configure print settings (openpyxl)
|
|
650
|
+
python3 <<EOF
|
|
651
|
+
from openpyxl import load_workbook
|
|
652
|
+
book = load_workbook("{INPUT_XLSX}")
|
|
653
|
+
ws = book.active
|
|
654
|
+
ws.page_setup.orientation = "{ORIENTATION}" # 'landscape' or 'portrait'
|
|
655
|
+
ws.page_setup.fitToWidth = 1
|
|
656
|
+
ws.page_setup.fitToHeight = 0
|
|
657
|
+
if {REPEAT_HEADER}:
|
|
658
|
+
ws.print_title_rows = "1:1" # repeat header on every page
|
|
659
|
+
ws.print_options.gridLines = True
|
|
660
|
+
book.save("<TMP>/printable.xlsx")
|
|
661
|
+
EOF
|
|
662
|
+
|
|
663
|
+
STEP 3 — Convert via LibreOffice (NOT openpyxl-native; print settings need soffice)
|
|
664
|
+
python3 <SKILL_XLSX>/scripts/office/soffice.py \
|
|
665
|
+
--headless --convert-to pdf --outdir <TMP> <TMP>/printable.xlsx \
|
|
666
|
+
2><TMP>/soffice.log
|
|
667
|
+
mv <TMP>/printable.pdf "{OUTPUT_PDF}"
|
|
668
|
+
|
|
669
|
+
STEP 4 — VERIFY (mandatory because soffice may ignore print settings)
|
|
670
|
+
pdfinfo "{OUTPUT_PDF}" | grep -E "Pages|Page size"
|
|
671
|
+
ls -lh "{OUTPUT_PDF}"
|
|
672
|
+
# If size > 50 MB and user wanted preview → mode mismatch; rerun.
|
|
673
|
+
|
|
674
|
+
# Open page 1 + last page visually:
|
|
675
|
+
PAGES=$(pdfinfo "{OUTPUT_PDF}" | awk '/^Pages/{print $2}')
|
|
676
|
+
pdftoppm -r 100 -png -f 1 -l 1 "{OUTPUT_PDF}" <TMP>/p1
|
|
677
|
+
pdftoppm -r 100 -png -f $PAGES -l $PAGES "{OUTPUT_PDF}" <TMP>/last
|
|
678
|
+
# Check: page 1 has the header; last page rows are not truncated;
|
|
679
|
+
# orientation looks right.
|
|
680
|
+
|
|
681
|
+
STEP 5 — Recovery: print settings didn't survive soffice
|
|
682
|
+
Fall back to rendering via the pdf HTML pipeline:
|
|
683
|
+
- For Superstore-like wide data, use the ready workflow and editable HTML
|
|
684
|
+
artifact pattern in <SKILL_XLSX>/docs/superstore-multiformat-conversion-case.md.
|
|
685
|
+
- Convert xlsx → dense HTML table with @page A4 landscape and
|
|
686
|
+
thead { display: table-header-group; }.
|
|
687
|
+
- Use bash <SKILL>/scripts/make.sh render with --format A4 --landscape.
|
|
688
|
+
- Verify page size, repeated header, all headers present, and no ellipsis.
|
|
689
|
+
|
|
690
|
+
CONSTRAINTS:
|
|
691
|
+
- row_count > 500 + no mode → ASK before producing a 50+ MB PDF.
|
|
692
|
+
- Never trust openpyxl's print settings without re-opening the converted
|
|
693
|
+
PDF and visually checking page 1 + last page.
|
|
694
|
+
- Don't 2>/dev/null soffice — its stderr explains why settings failed.
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
---
|
|
698
|
+
|
|
699
|
+
## P10 — DOCX ↔ PDF / MD / HTML round-trip with fidelity report
|
|
700
|
+
|
|
701
|
+
> Progressive case: for legal/contract Word templates where the PDF must look professional (formal cover, fill lines, signature/seal tables), read [`docx-contract-roundtrip-professional-case.md`](docx-contract-roundtrip-professional-case.md) before executing the generic P10 steps. Reuse its editable HTML artifact instead of shipping a raw Pandoc/LibreOffice export.
|
|
702
|
+
|
|
703
|
+
### Match signatures
|
|
704
|
+
|
|
705
|
+
- "把这份 {INPUT_PATH} (.docx/.pdf/.md) 转成 {TARGET_FORMATS[]},并评估 fidelity loss"
|
|
706
|
+
- "convert {contract / report} to PDF + MD + HTML, tell me what's lost"
|
|
707
|
+
- "DOCX 双向转换 / round-trip"
|
|
708
|
+
|
|
709
|
+
### Canonical query
|
|
710
|
+
|
|
711
|
+
```
|
|
712
|
+
TASK: Convert {INPUT_PATH} into each format in {TARGET_FORMATS[]} and
|
|
713
|
+
produce a fidelity-loss inventory. Output to {OUTPUT_DIR}.
|
|
714
|
+
|
|
715
|
+
STEP 1 — Normalize input
|
|
716
|
+
Case A — INPUT_PATH ends with .doc (legacy binary):
|
|
717
|
+
python3 <SKILL_XLSX>/scripts/office/soffice.py \
|
|
718
|
+
--headless --convert-to docx --outdir <TMP> "{INPUT_PATH}" \
|
|
719
|
+
2><TMP>/soffice.log
|
|
720
|
+
INPUT_PATH=<TMP>/<basename>.docx
|
|
721
|
+
|
|
722
|
+
STEP 2 — Detect structural elements that risk fidelity loss
|
|
723
|
+
python3 <<EOF
|
|
724
|
+
from docx import Document
|
|
725
|
+
d = Document("{INPUT_PATH}")
|
|
726
|
+
# Inventory:
|
|
727
|
+
# - Tables with merged cells (rowspan/colspan)
|
|
728
|
+
# - Headers / footers with content
|
|
729
|
+
# - Footnotes / endnotes / comments
|
|
730
|
+
# - Embedded objects (Excel ranges, Visio shapes, OLE)
|
|
731
|
+
# - Tracked changes / revisions
|
|
732
|
+
# - Section breaks with different page sizes
|
|
733
|
+
EOF
|
|
734
|
+
|
|
735
|
+
STEP 3 — Convert to each TARGET_FORMAT (parallel)
|
|
736
|
+
For PDF: native DOCX→PDF render/export first (docx docx_to_pdf.py or
|
|
737
|
+
LibreOffice/soffice export) → verify. Do NOT route DOCX through
|
|
738
|
+
Markdown/HTML just to make a PDF; that loses Word layout. Use
|
|
739
|
+
HTML→PDF only if the user asks for redesign/recomposition or direct
|
|
740
|
+
render is visibly unacceptable, and state that decision.
|
|
741
|
+
For MD: pandoc {INPUT_PATH} -o {OUTPUT_DIR}/output.md
|
|
742
|
+
For HTML: pandoc {INPUT_PATH} -o {OUTPUT_DIR}/output.html --self-contained
|
|
743
|
+
|
|
744
|
+
STEP 4 — Fidelity-loss inventory (mandatory deliverable)
|
|
745
|
+
Produce a table:
|
|
746
|
+
| Element | DOCX | PDF | MD | HTML | Severity |
|
|
747
|
+
|---|---|---|---|---|---|
|
|
748
|
+
| Tables (merged cells) | ✓ | ✓ | LOST → flat | LOST → flat | HIGH |
|
|
749
|
+
| Headers / footers | ✓ | ✓ | LOST | LOST | MED |
|
|
750
|
+
| Footnotes | ✓ | ✓ | LOST | LOST | MED |
|
|
751
|
+
| Comments / tracked changes | ✓ | LOST | LOST | LOST | HIGH for legal |
|
|
752
|
+
| Embedded Excel ranges | ✓ | image | LOST | LOST | HIGH |
|
|
753
|
+
| Section page sizes | ✓ | ✓ | N/A | N/A | LOW |
|
|
754
|
+
|
|
755
|
+
STEP 5 — Visual verification on PDF outputs (legal/contract docs critical)
|
|
756
|
+
pdftoppm -r 150 -png -f 1 -l 1 {OUTPUT_DIR}/output.pdf <TMP>/p1
|
|
757
|
+
# Open <TMP>/p1-1.png — confirm signature blocks, seals, stamps render.
|
|
758
|
+
# For multi-page legal docs, also rasterize the signature page:
|
|
759
|
+
SIG_PAGE=$(pdftotext -layout {OUTPUT_DIR}/output.pdf - | grep -n "^Signature\|签字\|签章" | head -1 | cut -d: -f1)
|
|
760
|
+
# …then rasterize that page too.
|
|
761
|
+
|
|
762
|
+
STEP 6 — Round-trip verification (if user wants reverse confirmation)
|
|
763
|
+
pandoc {OUTPUT_DIR}/output.md -o <TMP>/roundtrip.docx
|
|
764
|
+
python3 -c "from docx import Document; …" # diff structures
|
|
765
|
+
# Report the delta back to user.
|
|
766
|
+
|
|
767
|
+
CONSTRAINTS:
|
|
768
|
+
- Fidelity-loss inventory is a MANDATORY deliverable, not optional.
|
|
769
|
+
- For PDF outputs of legal / contract docs, NEVER trust strings/grep
|
|
770
|
+
alone — visual verification on signature pages is required.
|
|
771
|
+
- .doc → .docx must go through soffice first; pandoc on .doc is unreliable.
|
|
772
|
+
- DOCX→PDF native render/export is the default for preservation; HTML→PDF is a redesign/recomposition route, not the default conversion route.
|
|
773
|
+
- Don't 2>/dev/null pandoc / soffice — their stderr lists every dropped element.
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
---
|
|
777
|
+
|
|
778
|
+
## How to use this index
|
|
779
|
+
|
|
780
|
+
1. **Read the user's incoming query.** Match it against each `Match signatures` block.
|
|
781
|
+
2. **One match → copy the full Canonical query.** Substitute Slots verbatim
|
|
782
|
+
from the user's actual values. Execute step-by-step. Do not skip
|
|
783
|
+
verification steps.
|
|
784
|
+
3. **Multiple partial matches → fuse.** Take the strictest verification
|
|
785
|
+
from each matched canonical query; never relax a constraint.
|
|
786
|
+
4. **No match → fall back** to [`../SKILL.md`](../SKILL.md) Operational rules and
|
|
787
|
+
Routes. Don't force-fit a wrong canonical query — it will encode the
|
|
788
|
+
wrong constraints.
|
|
789
|
+
|
|
790
|
+
## Universal constraints (apply to every canonical query above)
|
|
791
|
+
|
|
792
|
+
- **Don't `2>/dev/null`.** Redirect to `<TMP>/<step>.log`, grep on demand.
|
|
793
|
+
- **JSON files via `json.dumps(payload, ensure_ascii=False, indent=2)`.**
|
|
794
|
+
- **Always pass `--format` explicitly** to `make.sh render`.
|
|
795
|
+
- **Always verify with `pdfinfo "Page size"` + `pdfimages -list | wc -l`.**
|
|
796
|
+
- **Vision per page** for charts and complex financial tables (`--pages N`).
|
|
797
|
+
- **Locate-first** for >20 page PDFs with targeted queries; index-first
|
|
798
|
+
for >200 pages; budget = 2 blind greps max.
|