@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,760 @@
|
|
|
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/xlsx`
|
|
20
|
+
> - `<SKILL_PDF>` → `{{DATA_DIR}}/.builtin-skills/pdf`
|
|
21
|
+
> - `<TMP>` → a writable scratch dir (e.g. `/tmp/xlsx-task-<ts>`)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Quick lookup — match user query to a case
|
|
26
|
+
|
|
27
|
+
| # | Match keywords | Slots | Canonical §|
|
|
28
|
+
|---|---|---|---|
|
|
29
|
+
| **X1** | financial PDF → Excel analysis / 财报分析 / 10-K → xlsx with formulas + charts | `PDF_PATHS[]`, `COMPANY`, `METRICS[]`, `OUTPUT_XLSX` | §X1 |
|
|
30
|
+
| **X2** | Excel + PDF + Word multi-format deliverable / 多格式产出 / dashboard + report + memo | `INPUT_DATA`, `ANALYSIS_DIMS[]`, `OUTPUT_DIR`, `DOTNET_BUDGET_MIN(default 5)` | §X2 |
|
|
31
|
+
| **X3** | 500k+ row dataset → pivot tables + dashboard + slicers / 大数据透视 / RFM | `INPUT`, `KEY_COLS[]`, `METRICS[]`, `PIVOT_AXES[]`, `SLICERS[]`, `OUTPUT_XLSX` | §X3 |
|
|
32
|
+
| **X4** | 240-page financial report → Excel preserving every table / 复杂金融 PDF→Excel | `PDF_PATH`, `STATEMENTS[]`, `OUTPUT_XLSX` | §X4 |
|
|
33
|
+
| **X5** | multi-year financial analysis / 财务分析 / revenue/margin/growth/segment trends | `COMPANY`, `YEAR_RANGE`, `PDF_PATHS[]`, `METRICS[]`, `OUTPUT_XLSX` | §X5 |
|
|
34
|
+
| **X6** | composite score / index / ranking with stated range / 综合评分 0-100 | `INPUT_XLSX`, `SCORE_COLS[]`, `WEIGHTS[]`, `TARGET_RANGE`, `OUTPUT_XLSX` | §X6 |
|
|
35
|
+
| **X7** | cross-sheet dynamic formulas / Inputs → Summary auto-update / 跨 sheet 引用 | `INPUT_LAYOUT`, `SUMMARY_LAYOUT`, `OUTPUT_XLSX` | §X7 |
|
|
36
|
+
| **X8** | xlsx ↔ csv ↔ json ↔ pdf with print settings / 表格格式转换 / 打印设置 / Superstore | `INPUT_XLSX`, `OUTPUT_FORMATS[]`, `PRINT_SETTINGS`, `OUTPUT_DIR` | §X8 + [Superstore case](superstore-multiformat-conversion-case.md) |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## X1 — Financial PDF → Excel analysis with formulas + charts
|
|
41
|
+
|
|
42
|
+
### Match signatures
|
|
43
|
+
|
|
44
|
+
- "读 {COMPANY} 的 {YEAR_RANGE} 年报 PDF,提取 {METRICS},输出 Excel 含公式和图表"
|
|
45
|
+
- "build an Excel analysis of {COMPANY}'s {years} from these annual reports"
|
|
46
|
+
- "extract revenue / EPS / store count / segment data from {PDF}, build xlsx"
|
|
47
|
+
|
|
48
|
+
### Canonical query
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
TASK: From {PDF_PATHS[]} (annual reports of {COMPANY}), extract
|
|
52
|
+
{METRICS[]} and build a formula-first Excel analysis at {OUTPUT_XLSX}
|
|
53
|
+
with cross-year derived metrics + charts.
|
|
54
|
+
|
|
55
|
+
STEP 1 — PDF read: ALWAYS go through [pdf] §P6 + §P7
|
|
56
|
+
# §P6 = locate-first (build heading index before any extraction).
|
|
57
|
+
# §P7 = vision per page for any financial-table page (balance sheet,
|
|
58
|
+
# income statement, cash flow, debt schedule).
|
|
59
|
+
# Do NOT pdfplumber over financial tables — see [pdf] P7 for why.
|
|
60
|
+
# Output: a flat list of {year, metric, value, source_page} tuples.
|
|
61
|
+
|
|
62
|
+
STEP 2 — Build the workbook structure
|
|
63
|
+
Sheets:
|
|
64
|
+
- Inputs / Raw (blue text #0000FF, primary values from PDF)
|
|
65
|
+
- Calculations (black text #000000, all = formulas)
|
|
66
|
+
- Summary (green text #008000 for cross-sheet refs)
|
|
67
|
+
- Charts (visual, data sources point at formula cells)
|
|
68
|
+
|
|
69
|
+
python3 <<EOF
|
|
70
|
+
from openpyxl import Workbook
|
|
71
|
+
from openpyxl.styles import Font, PatternFill
|
|
72
|
+
book = Workbook()
|
|
73
|
+
inputs = book.active; inputs.title = "Inputs"
|
|
74
|
+
blue = Font(color="0000FF")
|
|
75
|
+
black = Font(color="000000")
|
|
76
|
+
# Header
|
|
77
|
+
inputs.append(["Year"] + ["{COMPANY} {m}" for m in METRICS])
|
|
78
|
+
for y in years:
|
|
79
|
+
row = [y] + [extracted[(y, m)] for m in METRICS]
|
|
80
|
+
inputs.append(row)
|
|
81
|
+
for cell in inputs[inputs.max_row]:
|
|
82
|
+
cell.font = blue
|
|
83
|
+
EOF
|
|
84
|
+
|
|
85
|
+
STEP 3 — Derived metrics (every cell MUST be a = formula, not a literal)
|
|
86
|
+
python3 <<EOF
|
|
87
|
+
calc = book.create_sheet("Calculations")
|
|
88
|
+
calc.append(["Year", "Revenue Growth", "Operating Margin", "EPS Growth"])
|
|
89
|
+
for r_idx in range(2, len(years) + 2):
|
|
90
|
+
calc.append([
|
|
91
|
+
f"=Inputs!A{r_idx}",
|
|
92
|
+
f"=(Inputs!B{r_idx} - Inputs!B{r_idx-1}) / Inputs!B{r_idx-1}",
|
|
93
|
+
f"=Inputs!C{r_idx} / Inputs!B{r_idx}",
|
|
94
|
+
f"=(Inputs!D{r_idx} - Inputs!D{r_idx-1}) / Inputs!D{r_idx-1}",
|
|
95
|
+
])
|
|
96
|
+
EOF
|
|
97
|
+
# NEVER pre-compute these in Python and write_number them. The user
|
|
98
|
+
# must be able to flip an Inputs cell, recalc, and see Calculations move.
|
|
99
|
+
|
|
100
|
+
STEP 4 — Charts (data sources point at FORMULA cells, not literals)
|
|
101
|
+
python3 <<EOF
|
|
102
|
+
from openpyxl.chart import LineChart, BarChart, Reference
|
|
103
|
+
ch = LineChart()
|
|
104
|
+
ch.title = "{COMPANY} Revenue Trend"
|
|
105
|
+
data = Reference(inputs, min_col=2, min_row=1, max_col=2, max_row=len(years)+1)
|
|
106
|
+
cats = Reference(inputs, min_col=1, min_row=2, max_row=len(years)+1)
|
|
107
|
+
ch.add_data(data, titles_from_data=True)
|
|
108
|
+
ch.set_categories(cats)
|
|
109
|
+
book["Calculations"].add_chart(ch, "F2")
|
|
110
|
+
EOF
|
|
111
|
+
|
|
112
|
+
STEP 5 — Save + recalc
|
|
113
|
+
book.save("{OUTPUT_XLSX}")
|
|
114
|
+
python <SKILL>/scripts/recalc.py "{OUTPUT_XLSX}" 60 2><TMP>/recalc.log
|
|
115
|
+
|
|
116
|
+
STEP 6 — VERIFY (mandatory two-gate)
|
|
117
|
+
# Gate 1: total_errors == 0
|
|
118
|
+
# Gate 2: total_formulas > 0 AND > expected_min (e.g. years × metrics × 2)
|
|
119
|
+
jq '.status, .total_errors, .total_formulas' <recalc-stdout>
|
|
120
|
+
# status != "success" → fix per recalc-guide.md §3 error table.
|
|
121
|
+
# total_formulas == 0 → DELIVERY FAILED, rewrite STEP 3 with = formulas.
|
|
122
|
+
|
|
123
|
+
STEP 7 — Spot-check formula correctness (not just count)
|
|
124
|
+
python3 <<EOF
|
|
125
|
+
from openpyxl import load_workbook
|
|
126
|
+
book = load_workbook("{OUTPUT_XLSX}", data_only=True)
|
|
127
|
+
# Pick 1-2 derived cells and compare to a Python re-computation
|
|
128
|
+
# from the Inputs sheet. Mismatch → wrong formula references.
|
|
129
|
+
EOF
|
|
130
|
+
|
|
131
|
+
CONSTRAINTS:
|
|
132
|
+
- PDF reading: §P6 + §P7, never pdfplumber on financial tables.
|
|
133
|
+
- Every derived value: = formula, not literal. No exceptions.
|
|
134
|
+
- recalc → total_formulas == 0 is FAILURE, not success.
|
|
135
|
+
- Don't 2>/dev/null vision calls or recalc — log to <TMP>/.
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## X2 — Multi-format deliverable (Excel + PDF + Word) via parallel sub-agents
|
|
141
|
+
|
|
142
|
+
### Match signatures
|
|
143
|
+
|
|
144
|
+
- "分析 {DATA},产出 Excel dashboard + PDF report + Word memo"
|
|
145
|
+
- "build me a triple deliverable: spreadsheet + presentation PDF + Word"
|
|
146
|
+
- "用户退款 / 业务三件套 / 完整分析包"
|
|
147
|
+
|
|
148
|
+
### Canonical query
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
TASK: Produce three coordinated deliverables for {ANALYSIS_TOPIC} in
|
|
152
|
+
{OUTPUT_DIR}: dashboard.xlsx + report.pdf + memo.docx.
|
|
153
|
+
|
|
154
|
+
STEP 1 — Pre-flight: confirm dotnet for docx
|
|
155
|
+
which dotnet 2><TMP>/which.log
|
|
156
|
+
# If missing: install IS POSSIBLE but takes ~5 minutes (200 MB download).
|
|
157
|
+
# Either pre-install before launching sub-agents, OR the docx sub-agent
|
|
158
|
+
# prompt must explicitly budget setup time per STEP 2.
|
|
159
|
+
|
|
160
|
+
STEP 2 — Launch 3 background sub-agents (task tool, run_in_background: true)
|
|
161
|
+
# Foreground task calls run sequentially — background mode is what
|
|
162
|
+
# makes the three deliverables build in parallel. Track with
|
|
163
|
+
# task_query / task_output.
|
|
164
|
+
# CRITICAL: the Word sub-agent prompt must include:
|
|
165
|
+
# "Setup may take up to {DOTNET_BUDGET_MIN} minutes for dotnet install
|
|
166
|
+
# if not already present. Do NOT abort during steady network activity.
|
|
167
|
+
# Only consider yourself stalled if no progress for >10 minutes."
|
|
168
|
+
|
|
169
|
+
Sub-agent prompts:
|
|
170
|
+
- dashboard: <follow X1 / X3 / X5 canonical query for the data shape>
|
|
171
|
+
→ write {OUTPUT_DIR}/dashboard.xlsx
|
|
172
|
+
- report-pdf: <follow [pdf] §P3 canonical for chart-rich PDF>
|
|
173
|
+
→ write {OUTPUT_DIR}/report.pdf
|
|
174
|
+
- memo-docx: <docx canonical>
|
|
175
|
+
"Setup may take {DOTNET_BUDGET_MIN}min for dotnet — wait it
|
|
176
|
+
out. If install genuinely fails, fall back to python-docx
|
|
177
|
+
and EXPLICITLY note 'docx unavailable, python-docx used,
|
|
178
|
+
formatting fidelity reduced' in the deliverable."
|
|
179
|
+
|
|
180
|
+
STEP 3 — Cross-check (yourself, after all three return)
|
|
181
|
+
Spot-check 3 numbers that appear in all three deliverables. They MUST
|
|
182
|
+
be identical. If any differ, identify the divergent figure and relaunch
|
|
183
|
+
the sub-agent whose input data feed was wrong.
|
|
184
|
+
|
|
185
|
+
STEP 4 — Final deliverables verification
|
|
186
|
+
ls -lh {OUTPUT_DIR}/dashboard.xlsx {OUTPUT_DIR}/report.pdf {OUTPUT_DIR}/memo.docx
|
|
187
|
+
# xlsx: total_formulas > 0 (per X1 STEP 6)
|
|
188
|
+
# pdf: pdfimages count > 0 (per [pdf] P3 STEP 5)
|
|
189
|
+
# docx: spot-check via word/document.xml unzip → confirm formatting present
|
|
190
|
+
|
|
191
|
+
STEP 5 — Cross-deliverable consistency report
|
|
192
|
+
Pick 3 KPIs (e.g. total revenue, top segment, growth rate). They must
|
|
193
|
+
appear identically in xlsx Summary, pdf KPI grid, and docx executive
|
|
194
|
+
summary. Mismatch → which one is wrong? Fix that sub-agent's input data
|
|
195
|
+
feed, never patch the deliverable manually.
|
|
196
|
+
|
|
197
|
+
CONSTRAINTS:
|
|
198
|
+
- dotnet install ≠ stall. Budget {DOTNET_BUDGET_MIN}min + 10min slack.
|
|
199
|
+
- python-docx fallback IS allowed but MUST be flagged in the deliverable.
|
|
200
|
+
- Cross-deliverable numbers MUST match — that's the whole point of one batch.
|
|
201
|
+
- Sub-agent prompts: never `2>/dev/null` any setup or build step.
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## X3 — 500k+ row dataset → pivot / dashboard / slicers
|
|
207
|
+
|
|
208
|
+
### Match signatures
|
|
209
|
+
|
|
210
|
+
- "处理 {INPUT}(54万行 / 500k+ rows)做透视 / dashboard / RFM"
|
|
211
|
+
- "clean + pivot + slicer dashboard from {large_dataset}"
|
|
212
|
+
- "Online Retail / 电商交易明细 → 完整分析"
|
|
213
|
+
|
|
214
|
+
### Canonical query
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
TASK: From {INPUT} (~{ROW_COUNT} rows), build a formula-first dashboard
|
|
218
|
+
at {OUTPUT_XLSX} with pivots over {PIVOT_AXES[]} and slicers on
|
|
219
|
+
{SLICERS[]}.
|
|
220
|
+
|
|
221
|
+
STEP 1 — Read with pandas by default (polars if pandas is memory-bound)
|
|
222
|
+
# For 500k+ rows, do NOT inspect/transform source data with openpyxl row loops.
|
|
223
|
+
# Use pandas for ordinary large tabular work; switch to polars for memory/latency pressure.
|
|
224
|
+
python3 <<EOF
|
|
225
|
+
import pandas as pd
|
|
226
|
+
frame = pd.read_excel("{INPUT}", engine="openpyxl")
|
|
227
|
+
print("Loaded rows:", len(frame))
|
|
228
|
+
# If this is too slow or memory-bound, rerun with:
|
|
229
|
+
# import polars as pl
|
|
230
|
+
# frame = pl.read_excel("{INPUT}")
|
|
231
|
+
EOF
|
|
232
|
+
|
|
233
|
+
STEP 2 — Clean (RECORD what you removed; report counts)
|
|
234
|
+
python3 <<EOF
|
|
235
|
+
# Cleaning rules — report row counts at each step:
|
|
236
|
+
before = len(frame)
|
|
237
|
+
frame = frame.filter(~pl.col("InvoiceNo").str.starts_with("C")) # cancellations
|
|
238
|
+
print("After dropping cancellations:", len(frame), "removed:", before - len(frame))
|
|
239
|
+
before = len(frame)
|
|
240
|
+
frame = frame.filter(pl.col("Quantity") > 0)
|
|
241
|
+
frame = frame.filter(pl.col("UnitPrice") > 0)
|
|
242
|
+
print("After dropping non-positive:", len(frame), "removed:", before - len(frame))
|
|
243
|
+
before = len(frame)
|
|
244
|
+
frame = frame.filter(pl.col("CustomerID").is_not_null())
|
|
245
|
+
print("After dropping null CustomerID:", len(frame), "removed:", before - len(frame))
|
|
246
|
+
EOF
|
|
247
|
+
|
|
248
|
+
STEP 3 — WRITE FULL CLEANED ROWS (NEVER df.sample / df.head!)
|
|
249
|
+
# The most critical step. df.sample(100k) on a 397k-row frame breaks
|
|
250
|
+
# every downstream pivot and SUMIF without raising any error.
|
|
251
|
+
# If openpyxl's default writer is too slow, use write_only mode below.
|
|
252
|
+
|
|
253
|
+
python3 <<EOF
|
|
254
|
+
from openpyxl import Workbook
|
|
255
|
+
from openpyxl.cell import WriteOnlyCell
|
|
256
|
+
book = Workbook(write_only=True) # streaming writer; ~4× faster
|
|
257
|
+
raw = book.create_sheet("Raw")
|
|
258
|
+
raw.append(list(frame.columns))
|
|
259
|
+
for row in frame.iter_rows(): # ALL rows — no slicing
|
|
260
|
+
raw.append([WriteOnlyCell(raw, value=v) for v in row])
|
|
261
|
+
book.save("<TMP>/raw.xlsx")
|
|
262
|
+
EOF
|
|
263
|
+
# Confirm row count matches:
|
|
264
|
+
python3 -c "from openpyxl import load_workbook; wb=load_workbook('<TMP>/raw.xlsx', read_only=True); print(wb['Raw'].max_row)"
|
|
265
|
+
|
|
266
|
+
STEP 4 — Derived columns as = formulas
|
|
267
|
+
# Reopen with default reader to add formulas + pivot/slicer scaffolding.
|
|
268
|
+
python3 <<EOF
|
|
269
|
+
from openpyxl import load_workbook
|
|
270
|
+
book = load_workbook("<TMP>/raw.xlsx")
|
|
271
|
+
raw = book["Raw"]
|
|
272
|
+
# Add Revenue = Quantity * UnitPrice as a formula column
|
|
273
|
+
last = raw.max_row
|
|
274
|
+
raw.cell(row=1, column=raw.max_column + 1, value="Revenue")
|
|
275
|
+
for r in range(2, last + 1):
|
|
276
|
+
raw.cell(row=r, column=raw.max_column,
|
|
277
|
+
value=f"=B{r}*C{r}") # adjust col letters to schema
|
|
278
|
+
EOF
|
|
279
|
+
|
|
280
|
+
STEP 5 — Summary sheet: Excel-NATIVE aggregation only
|
|
281
|
+
# Choose by structure complexity (see <SKILL>/docs/advanced-reference.md §6.2):
|
|
282
|
+
# - Single-axis aggregation → =SUMIFS / =COUNTIFS / =AVERAGEIFS
|
|
283
|
+
# - Multi-axis cross-tab + drilldown → pivot table
|
|
284
|
+
|
|
285
|
+
Single-axis example:
|
|
286
|
+
summary.cell(row=r, column=2,
|
|
287
|
+
value=f"=SUMIFS(Raw!{rev_col}:{rev_col}, Raw!{cat_col}:{cat_col}, A{r})")
|
|
288
|
+
|
|
289
|
+
# NEVER do: frame.group_by("category").sum() → write_number(...).
|
|
290
|
+
# That ships a static snapshot and the recalc gate will not catch it.
|
|
291
|
+
|
|
292
|
+
STEP 6 — Slicers (openpyxl CANNOT create from scratch)
|
|
293
|
+
# Two production paths — pick one:
|
|
294
|
+
|
|
295
|
+
Path A (RECOMMENDED) — template inheritance:
|
|
296
|
+
# Pre-author template.xlsx ONCE in Excel/LibreOffice with the pivot
|
|
297
|
+
# and slicer wired to a named range "DataRange". Per run:
|
|
298
|
+
book = load_workbook("<SKILL>/templates/with-slicer.xlsx")
|
|
299
|
+
# Write Raw rows into the named range; pivot + slicer auto-refresh on recalc.
|
|
300
|
+
|
|
301
|
+
Path B — surgical XML transplant from a known-good template:
|
|
302
|
+
# See <SKILL>/docs/raw-xml-escape-hatch.md §1 + §3.
|
|
303
|
+
# Copy xl/pivotTables/*.xml + xl/pivotCaches/*.xml + xl/slicers/*.xml
|
|
304
|
+
# via scripts/office/{unpack,pack}.py.
|
|
305
|
+
|
|
306
|
+
IF NEITHER PATH IS AVAILABLE:
|
|
307
|
+
# Tell the user explicitly: "No slicer template available; falling back
|
|
308
|
+
# to a static dropdown filter on the Summary sheet. Slicer cannot be
|
|
309
|
+
# authored from scratch by openpyxl."
|
|
310
|
+
# Do NOT silently downgrade.
|
|
311
|
+
|
|
312
|
+
STEP 7 — Save + recalc
|
|
313
|
+
book.save("{OUTPUT_XLSX}")
|
|
314
|
+
python <SKILL>/scripts/recalc.py "{OUTPUT_XLSX}" 120 2><TMP>/recalc.log
|
|
315
|
+
|
|
316
|
+
STEP 8 — VERIFY (4 mandatory checks)
|
|
317
|
+
# 1. row count: Raw sheet matches the cleaned frame
|
|
318
|
+
# 2. total_errors == 0
|
|
319
|
+
# 3. total_formulas substantial (e.g. > #pivot_cells + #derived_cols)
|
|
320
|
+
# 4. summary correctness: spot-check 1-2 cells against polars on FULL frame
|
|
321
|
+
python3 <<EOF
|
|
322
|
+
from openpyxl import load_workbook
|
|
323
|
+
book = load_workbook("{OUTPUT_XLSX}", data_only=True)
|
|
324
|
+
print("Raw rows:", book["Raw"].max_row - 1)
|
|
325
|
+
# Compare a SUMIF result to the same aggregation on the FULL pandas/polars frame
|
|
326
|
+
EOF
|
|
327
|
+
|
|
328
|
+
CONSTRAINTS:
|
|
329
|
+
- 500k+ row source inspection/cleaning: pandas/polars default; openpyxl row-by-row source traversal is forbidden unless preserving workbook objects is the explicit goal.
|
|
330
|
+
- df.sample / df.head / per-category truncation on the raw sheet = forbidden.
|
|
331
|
+
- Summaries: pivot table or =SUMIFS only. Python groupby write-back = forbidden.
|
|
332
|
+
- Slicers: template-inherit OR XML-transplant OR explicit user notification.
|
|
333
|
+
NEVER silently downgrade.
|
|
334
|
+
- 4-check verification is mandatory; row count is the canary.
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
## X4 — Complex financial PDF → Excel preserving every table
|
|
340
|
+
|
|
341
|
+
### Match signatures
|
|
342
|
+
|
|
343
|
+
- "把这份 {PDF_PATH}(240页 financial report / HKEx 2024)转成 Excel"
|
|
344
|
+
- "convert balance sheet / income statement / cash flow PDF to xlsx"
|
|
345
|
+
- "金融年报 → Excel,要保留所有 table 结构"
|
|
346
|
+
|
|
347
|
+
### Canonical query
|
|
348
|
+
|
|
349
|
+
```
|
|
350
|
+
TASK: Convert {STATEMENTS[]} from {PDF_PATH} into {OUTPUT_XLSX}, one
|
|
351
|
+
sheet per statement, preserving multi-level headers and footnotes.
|
|
352
|
+
|
|
353
|
+
STEP 1 — Locate financial-table pages
|
|
354
|
+
Run [pdf] §P6 first → list of pages per statement.
|
|
355
|
+
|
|
356
|
+
STEP 2 — Vision per page (per [pdf] §P7)
|
|
357
|
+
# pdfplumber FORBIDDEN on financial tables even when text-native.
|
|
358
|
+
# Output: per-page TSV with header_l1 | header_l2 | label | value | footnote_ref
|
|
359
|
+
|
|
360
|
+
STEP 3 — Parse vision output to a normalised frame
|
|
361
|
+
python3 <<EOF
|
|
362
|
+
rows = []
|
|
363
|
+
for p in pages:
|
|
364
|
+
data = json.loads(open(f"<TMP>/vision-p{p}.json").read())
|
|
365
|
+
for line in data["chunks"][0]["text"].splitlines():
|
|
366
|
+
parts = line.split("\t")
|
|
367
|
+
if len(parts) == 5:
|
|
368
|
+
rows.append({"page": p, "l1": parts[0], "l2": parts[1],
|
|
369
|
+
"label": parts[2], "value": parts[3],
|
|
370
|
+
"footnote_ref": parts[4]})
|
|
371
|
+
EOF
|
|
372
|
+
|
|
373
|
+
STEP 4 — Write to xlsx (one sheet per statement)
|
|
374
|
+
python3 <<EOF
|
|
375
|
+
from openpyxl import Workbook
|
|
376
|
+
from openpyxl.styles import Font
|
|
377
|
+
book = Workbook()
|
|
378
|
+
book.remove(book.active)
|
|
379
|
+
bold = Font(bold=True)
|
|
380
|
+
for stmt in STATEMENTS:
|
|
381
|
+
ws = book.create_sheet(stmt[:31])
|
|
382
|
+
stmt_rows = [r for r in rows if r["statement"] == stmt]
|
|
383
|
+
# Multi-level header
|
|
384
|
+
ws.append(["", *[r["l1"] for r in unique_columns]])
|
|
385
|
+
ws.append(["Label", *[r["l2"] for r in unique_columns]])
|
|
386
|
+
for header_cell in ws[1] + ws[2]:
|
|
387
|
+
header_cell.font = bold
|
|
388
|
+
# Data
|
|
389
|
+
for row in stmt_rows:
|
|
390
|
+
ws.append([row["label"], row["value"], row["footnote_ref"]])
|
|
391
|
+
# Footnotes sheet (separate, keyed by ref number)
|
|
392
|
+
fn = book.create_sheet("Footnotes")
|
|
393
|
+
fn.append(["Ref", "Text"])
|
|
394
|
+
# ... populate from vision-extracted footnote glossary ...
|
|
395
|
+
book.save("{OUTPUT_XLSX}")
|
|
396
|
+
EOF
|
|
397
|
+
|
|
398
|
+
STEP 5 — VERIFY (cross-check 3 sub-totals against source)
|
|
399
|
+
# Pick a known sub-total line per statement (e.g. "Total assets",
|
|
400
|
+
# "Net income", "Net cash from operations"). Compare the value in
|
|
401
|
+
# {OUTPUT_XLSX} to the value visible in the source PDF on the
|
|
402
|
+
# corresponding page. Mismatch → re-run vision on that page with a
|
|
403
|
+
# more explicit prompt. NEVER patch the xlsx by hand.
|
|
404
|
+
|
|
405
|
+
CONSTRAINTS:
|
|
406
|
+
- Pure data dump — no derived values to compute on this leg.
|
|
407
|
+
If the user wants margins / ratios on top, switch to X5.
|
|
408
|
+
- Don't hand-fix vision misreads in xlsx; re-prompt vision instead.
|
|
409
|
+
- Don't 2>/dev/null vision calls.
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
## X5 — Multi-year financial analysis (Formula-first hot spot)
|
|
415
|
+
|
|
416
|
+
### Match signatures
|
|
417
|
+
|
|
418
|
+
- "{COMPANY} {YEAR_RANGE} 财务分析 Excel,含 revenue / margin / growth / segment 趋势"
|
|
419
|
+
- "build a financial-analysis xlsx for {COMPANY} covering {years}"
|
|
420
|
+
- "腾讯 / Alibaba / Apple 多年财报对比 + 派生指标"
|
|
421
|
+
|
|
422
|
+
### Canonical query
|
|
423
|
+
|
|
424
|
+
```
|
|
425
|
+
TASK: Build a formula-first multi-year financial analysis for {COMPANY}
|
|
426
|
+
covering {YEAR_RANGE}, output to {OUTPUT_XLSX}, including:
|
|
427
|
+
revenue, gross margin, operating margin, net margin, EPS, EPS growth,
|
|
428
|
+
revenue growth, CAGR, segment breakdown.
|
|
429
|
+
|
|
430
|
+
STEP 1 — PDF read: §P6 + §P7 per [pdf]
|
|
431
|
+
Output: tuples of (year, segment, metric, value, source_page).
|
|
432
|
+
|
|
433
|
+
STEP 2 — Inputs sheet (raw values, blue text)
|
|
434
|
+
See X1 STEP 2.
|
|
435
|
+
|
|
436
|
+
STEP 3 — Derived sheets (every cell = formula, no exceptions)
|
|
437
|
+
python3 <<EOF
|
|
438
|
+
calc = book.create_sheet("Derived")
|
|
439
|
+
calc.append(["Year", "Revenue Growth", "Gross Margin", "Op Margin",
|
|
440
|
+
"Net Margin", "EPS Growth", "Revenue CAGR (5y)"])
|
|
441
|
+
n = len(years)
|
|
442
|
+
for i, y in enumerate(years, start=2):
|
|
443
|
+
calc.append([
|
|
444
|
+
f"=Inputs!A{i}",
|
|
445
|
+
f"=IFERROR((Inputs!B{i}-Inputs!B{i-1})/Inputs!B{i-1}, \"\")" if i > 2 else "",
|
|
446
|
+
f"=Inputs!C{i}/Inputs!B{i}", # gross / revenue
|
|
447
|
+
f"=Inputs!D{i}/Inputs!B{i}",
|
|
448
|
+
f"=Inputs!E{i}/Inputs!B{i}",
|
|
449
|
+
f"=IFERROR((Inputs!F{i}-Inputs!F{i-1})/Inputs!F{i-1}, \"\")" if i > 2 else "",
|
|
450
|
+
f"=IFERROR((Inputs!B{1+n}/Inputs!B{2})^(1/{n-1})-1, \"\")" if i == 2 else "",
|
|
451
|
+
])
|
|
452
|
+
EOF
|
|
453
|
+
# Wrap divisions with IFERROR to prevent #DIV/0! poisoning the recalc gate.
|
|
454
|
+
|
|
455
|
+
STEP 4 — Charts (data sources reference Derived sheet formula cells)
|
|
456
|
+
See X1 STEP 4.
|
|
457
|
+
|
|
458
|
+
STEP 5 — Save + recalc
|
|
459
|
+
book.save("{OUTPUT_XLSX}")
|
|
460
|
+
python <SKILL>/scripts/recalc.py "{OUTPUT_XLSX}" 60 2><TMP>/recalc.log
|
|
461
|
+
|
|
462
|
+
STEP 6 — VERIFY (mandatory two-gate + formula-count check)
|
|
463
|
+
# Gate 1: total_errors == 0
|
|
464
|
+
# Gate 2: total_formulas > 0 ← THE CRITICAL CHECK
|
|
465
|
+
jq -r '.status, .total_errors, .total_formulas' <recalc-stdout>
|
|
466
|
+
|
|
467
|
+
# If total_formulas is 0 OR less than #years × #metrics × 2:
|
|
468
|
+
# → DELIVERY FAILED. The workbook is a static snapshot, not a model.
|
|
469
|
+
# → Re-do STEP 3 with = formulas. Don't ship anyway.
|
|
470
|
+
|
|
471
|
+
# Per-sheet formula count (catches "0 formulas in Derived"):
|
|
472
|
+
python3 <<EOF
|
|
473
|
+
from openpyxl import load_workbook
|
|
474
|
+
book = load_workbook("{OUTPUT_XLSX}")
|
|
475
|
+
for ws in book.worksheets:
|
|
476
|
+
n = sum(1 for row in ws.iter_rows() for c in row
|
|
477
|
+
if isinstance(c.value, str) and c.value.startswith("="))
|
|
478
|
+
print(ws.title, "=", n, "formulas")
|
|
479
|
+
EOF
|
|
480
|
+
|
|
481
|
+
STEP 7 — Spot-check a derived value against an external recompute
|
|
482
|
+
# Pick one growth rate. Compute it manually from the source PDF values.
|
|
483
|
+
# Compare to the Derived sheet output. Mismatch → wrong column reference.
|
|
484
|
+
|
|
485
|
+
CONSTRAINTS:
|
|
486
|
+
- total_formulas == 0 OR << expected = DELIVERY FAILURE. Rewrite.
|
|
487
|
+
- Don't 2>/dev/null any vision call or recalc — log and grep on demand.
|
|
488
|
+
- All divisions wrapped with IFERROR.
|
|
489
|
+
- Color: blue for Inputs, black for Derived, green for Summary cross-refs.
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
## X6 — Composite score / index with stated range
|
|
495
|
+
|
|
496
|
+
### Match signatures
|
|
497
|
+
|
|
498
|
+
- "做一个 composite score / 综合评分 from {COLS}, normalised {0-100 / 1-10}"
|
|
499
|
+
- "build a risk index / ranking, normalised to {RANGE}"
|
|
500
|
+
- "{Financial_Sample_with_PI} 综合评分要 0-100"
|
|
501
|
+
|
|
502
|
+
### Canonical query
|
|
503
|
+
|
|
504
|
+
```
|
|
505
|
+
TASK: Build a composite score on {INPUT_XLSX} using {SCORE_COLS[]} with
|
|
506
|
+
weights {WEIGHTS[]}, normalised to {TARGET_RANGE} (e.g. 0-100),
|
|
507
|
+
output to {OUTPUT_XLSX}.
|
|
508
|
+
|
|
509
|
+
STEP 1 — Open + add Score column
|
|
510
|
+
python3 <<EOF
|
|
511
|
+
from openpyxl import load_workbook
|
|
512
|
+
book = load_workbook("{INPUT_XLSX}")
|
|
513
|
+
ws = book.active
|
|
514
|
+
last_col = ws.max_column
|
|
515
|
+
score_col = last_col + 1
|
|
516
|
+
ws.cell(row=1, column=score_col, value="Composite Score")
|
|
517
|
+
EOF
|
|
518
|
+
|
|
519
|
+
STEP 2 — Choose normalization formula (CLAMP to TARGET_RANGE in formula)
|
|
520
|
+
|
|
521
|
+
# Two patterns — pick one based on score nature:
|
|
522
|
+
|
|
523
|
+
# Pattern A — weighted sum then CLAMP (when raw is unbounded):
|
|
524
|
+
for r in range(2, ws.max_row + 1):
|
|
525
|
+
raw_expr = " + ".join(f"{w}*{col_letter}{r}" for w, col_letter in zip(WEIGHTS, SCORE_COLS))
|
|
526
|
+
formula = f"=ROUND(MIN(MAX(({raw_expr}), {LO}), {HI}), 1)"
|
|
527
|
+
ws.cell(row=r, column=score_col, value=formula)
|
|
528
|
+
|
|
529
|
+
# Pattern B — min-max normalization to TARGET_RANGE:
|
|
530
|
+
raw_col = chr(ord('A') + last_col) # the unnormalized raw composite
|
|
531
|
+
formula = (f"=ROUND(({raw_col}{r} - MIN(${raw_col}$2:${raw_col}${ws.max_row}))"
|
|
532
|
+
f" / (MAX(${raw_col}$2:${raw_col}${ws.max_row})"
|
|
533
|
+
f" - MIN(${raw_col}$2:${raw_col}${ws.max_row}))"
|
|
534
|
+
f" * {HI - LO} + {LO}, 1)")
|
|
535
|
+
|
|
536
|
+
STEP 3 — Save + recalc
|
|
537
|
+
book.save("{OUTPUT_XLSX}")
|
|
538
|
+
python <SKILL>/scripts/recalc.py "{OUTPUT_XLSX}" 60 2><TMP>/recalc.log
|
|
539
|
+
|
|
540
|
+
STEP 4 — IMMEDIATE range verification (the critical step)
|
|
541
|
+
python3 <<EOF
|
|
542
|
+
from openpyxl import load_workbook
|
|
543
|
+
book = load_workbook("{OUTPUT_XLSX}", data_only=True)
|
|
544
|
+
ws = book.active
|
|
545
|
+
scores = [ws.cell(row=r, column=score_col).value
|
|
546
|
+
for r in range(2, ws.max_row + 1)
|
|
547
|
+
if isinstance(ws.cell(row=r, column=score_col).value, (int, float))]
|
|
548
|
+
print("MIN:", min(scores), "MAX:", max(scores))
|
|
549
|
+
# MIN must be >= LO; MAX must be <= HI.
|
|
550
|
+
# If MAX = 1804 when user asked for 0-100 → STEP 2 formula missing CLAMP.
|
|
551
|
+
# FIX THE FORMULA, do NOT blame "data anomaly". Re-recalc.
|
|
552
|
+
EOF
|
|
553
|
+
|
|
554
|
+
STEP 5 — Methodology sheet (audit trail)
|
|
555
|
+
meth = book.create_sheet("Methodology")
|
|
556
|
+
meth.append(["Score Formula", "Weights", "Source Columns", "Range"])
|
|
557
|
+
meth.append([formula_template, str(WEIGHTS), str(SCORE_COLS), f"{LO}-{HI}"])
|
|
558
|
+
book.save("{OUTPUT_XLSX}")
|
|
559
|
+
|
|
560
|
+
CONSTRAINTS:
|
|
561
|
+
- When user states a target range, ENFORCE it in the formula.
|
|
562
|
+
Don't ship a wider range and blame "data anomaly".
|
|
563
|
+
- The verification in STEP 4 is mandatory; without it the formula bug
|
|
564
|
+
won't be caught until the user reports it.
|
|
565
|
+
- Document the formula in a Methodology sheet so the user can audit.
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
---
|
|
569
|
+
|
|
570
|
+
## X7 — Cross-sheet dynamic formulas (modelling)
|
|
571
|
+
|
|
572
|
+
### Match signatures
|
|
573
|
+
|
|
574
|
+
- "wire up Inputs tab so Summary cells auto-update when Inputs change"
|
|
575
|
+
- "build a model where Summary references Inputs via formulas"
|
|
576
|
+
- "跨 sheet 动态引用 / dynamic linkage"
|
|
577
|
+
|
|
578
|
+
### Canonical query
|
|
579
|
+
|
|
580
|
+
```
|
|
581
|
+
TASK: Build {OUTPUT_XLSX} where every Summary cell references the Inputs
|
|
582
|
+
sheet via formulas, with full color-code conventions.
|
|
583
|
+
|
|
584
|
+
STEP 1 — Sheet structure
|
|
585
|
+
python3 <<EOF
|
|
586
|
+
from openpyxl import Workbook
|
|
587
|
+
from openpyxl.styles import Font
|
|
588
|
+
book = Workbook()
|
|
589
|
+
inputs = book.active; inputs.title = "Inputs"
|
|
590
|
+
summary = book.create_sheet("Summary")
|
|
591
|
+
blue = Font(color="0000FF") # primary inputs
|
|
592
|
+
black = Font(color="000000") # in-sheet formulas
|
|
593
|
+
green = Font(color="008000") # cross-sheet references
|
|
594
|
+
EOF
|
|
595
|
+
|
|
596
|
+
STEP 2 — Inputs sheet
|
|
597
|
+
# Column A: label, Column B: value (blue), Column C: source/note
|
|
598
|
+
for label, value, src in INPUT_ROWS:
|
|
599
|
+
inputs.append([label, value, src])
|
|
600
|
+
inputs.cell(row=inputs.max_row, column=2).font = blue
|
|
601
|
+
|
|
602
|
+
STEP 3 — Summary sheet (every cell = =Inputs!ref or = derivation)
|
|
603
|
+
python3 <<EOF
|
|
604
|
+
summary.append(["Metric", "Value"])
|
|
605
|
+
for s in SUMMARY_ROWS:
|
|
606
|
+
# s = (label, formula) where formula references Inputs
|
|
607
|
+
r = summary.max_row + 1
|
|
608
|
+
summary.cell(row=r, column=1, value=s["label"])
|
|
609
|
+
cell = summary.cell(row=r, column=2, value=s["formula"])
|
|
610
|
+
# Color: green if cross-sheet ref, black if same-sheet derivation
|
|
611
|
+
cell.font = green if "Inputs!" in s["formula"] else black
|
|
612
|
+
EOF
|
|
613
|
+
|
|
614
|
+
STEP 4 — Save + recalc
|
|
615
|
+
book.save("{OUTPUT_XLSX}")
|
|
616
|
+
python <SKILL>/scripts/recalc.py "{OUTPUT_XLSX}" 30 2><TMP>/recalc.log
|
|
617
|
+
|
|
618
|
+
STEP 5 — VERIFY linkage (the live-model test)
|
|
619
|
+
python3 <<EOF
|
|
620
|
+
from openpyxl import load_workbook
|
|
621
|
+
# 1. Open data-only, capture a Summary value
|
|
622
|
+
book = load_workbook("{OUTPUT_XLSX}", data_only=True)
|
|
623
|
+
v_before = book["Summary"]["B2"].value
|
|
624
|
+
# 2. Open in formula mode, flip an Inputs value
|
|
625
|
+
book2 = load_workbook("{OUTPUT_XLSX}")
|
|
626
|
+
book2["Inputs"]["B2"] = book2["Inputs"]["B2"].value * 1.10
|
|
627
|
+
book2.save("<TMP>/test.xlsx")
|
|
628
|
+
# 3. Recalc, reopen data-only, confirm Summary moved
|
|
629
|
+
EOF
|
|
630
|
+
python <SKILL>/scripts/recalc.py "<TMP>/test.xlsx" 30 2><TMP>/recalc2.log
|
|
631
|
+
python3 -c "from openpyxl import load_workbook; print(load_workbook('<TMP>/test.xlsx', data_only=True)['Summary']['B2'].value)"
|
|
632
|
+
# Should differ from v_before. If not → Summary cell was a literal,
|
|
633
|
+
# not a formula. Go back to STEP 3.
|
|
634
|
+
|
|
635
|
+
CONSTRAINTS:
|
|
636
|
+
- All Summary cells: formula referencing Inputs, never literal.
|
|
637
|
+
- Color code is part of the deliverable — review at-a-glance audits this.
|
|
638
|
+
- The "flip an input, see Summary move" verification is mandatory.
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
---
|
|
642
|
+
|
|
643
|
+
## X8 — xlsx ↔ csv ↔ json ↔ pdf with print settings
|
|
644
|
+
|
|
645
|
+
### Match signatures
|
|
646
|
+
|
|
647
|
+
- "把 {INPUT_XLSX} 转成 csv + json + pdf,PDF 要横向 + 重复表头"
|
|
648
|
+
- "export to multiple formats with landscape, repeat header"
|
|
649
|
+
- "Superstore / 多格式数据转换"
|
|
650
|
+
|
|
651
|
+
### Canonical query
|
|
652
|
+
|
|
653
|
+
```
|
|
654
|
+
TASK: Convert {INPUT_XLSX} into each format in {OUTPUT_FORMATS[]} with
|
|
655
|
+
print settings {PRINT_SETTINGS}, output to {OUTPUT_DIR}.
|
|
656
|
+
|
|
657
|
+
STEP 0 — Strict Superstore / XML-template / HTML→PDF route check
|
|
658
|
+
If the user requires all of these at once:
|
|
659
|
+
- Excel → CSV + JSON + PDF;
|
|
660
|
+
- CSV → Excel reverse validation;
|
|
661
|
+
- PDF: A4 landscape + repeated headers + all columns visible;
|
|
662
|
+
- CSV→Excel via XML template / direct OOXML, not openpyxl full read-write;
|
|
663
|
+
- PDF via HTML→PDF, not screenshot or LibreOffice conversion;
|
|
664
|
+
then load and follow docs/superstore-multiformat-conversion-case.md.
|
|
665
|
+
That case replaces the simpler pandas/soffice path below.
|
|
666
|
+
|
|
667
|
+
STEP 1 — Sanity probe
|
|
668
|
+
python3 -c "import pandas as pd; df=pd.read_excel('{INPUT_XLSX}'); print('Rows:', len(df)); print('Cols:', list(df.columns)); print('Dtypes:', df.dtypes.to_dict())"
|
|
669
|
+
|
|
670
|
+
STEP 2 — Per-format conversion (parallel where independent)
|
|
671
|
+
|
|
672
|
+
CSV:
|
|
673
|
+
python3 -c "import pandas as pd; pd.read_excel('{INPUT_XLSX}').to_csv('{OUTPUT_DIR}/data.csv', index=False, encoding='utf-8', date_format='%Y-%m-%d')"
|
|
674
|
+
|
|
675
|
+
JSON:
|
|
676
|
+
python3 <<EOF
|
|
677
|
+
import pandas as pd, json, pathlib
|
|
678
|
+
df = pd.read_excel("{INPUT_XLSX}")
|
|
679
|
+
payload = df.to_dict(orient="records")
|
|
680
|
+
pathlib.Path("{OUTPUT_DIR}/data.json").write_text(
|
|
681
|
+
json.dumps(payload, ensure_ascii=False, indent=2, default=str),
|
|
682
|
+
encoding="utf-8",
|
|
683
|
+
)
|
|
684
|
+
EOF
|
|
685
|
+
# For strict "data types correct" requirements, prefer the explicit
|
|
686
|
+
# typed-record pattern in docs/superstore-multiformat-conversion-case.md
|
|
687
|
+
# instead of relying on default=str for timestamps.
|
|
688
|
+
|
|
689
|
+
PDF (with print settings → see [pdf] §P9 canonical):
|
|
690
|
+
# Configure print settings via openpyxl, then convert via soffice.
|
|
691
|
+
# If acceptance requires HTML→PDF or all columns visible in a 10k-row
|
|
692
|
+
# landscape table, use docs/superstore-multiformat-conversion-case.md.
|
|
693
|
+
# Verification on PDF is MANDATORY — soffice may ignore some settings.
|
|
694
|
+
|
|
695
|
+
STEP 3 — Reverse-validation (round-trip integrity)
|
|
696
|
+
python3 <<EOF
|
|
697
|
+
import pandas as pd
|
|
698
|
+
orig = pd.read_excel("{INPUT_XLSX}")
|
|
699
|
+
back = pd.read_csv("{OUTPUT_DIR}/data.csv")
|
|
700
|
+
print("Row count match:", len(orig) == len(back))
|
|
701
|
+
print("Col count match:", len(orig.columns) == len(back.columns))
|
|
702
|
+
# Date columns become strings in CSV — that's expected.
|
|
703
|
+
EOF
|
|
704
|
+
|
|
705
|
+
STEP 4 — PDF visual verification (PRINT-SETTINGS GATE)
|
|
706
|
+
# Per [pdf] §P9 STEP 4. NEVER trust openpyxl print settings without
|
|
707
|
+
# opening the converted PDF and visually checking page 1 + last page:
|
|
708
|
+
pdfinfo {OUTPUT_DIR}/data.pdf | grep -E "Pages|Page size"
|
|
709
|
+
ls -lh {OUTPUT_DIR}/data.pdf
|
|
710
|
+
# If size > 50 MB and user wanted preview → mode mismatch.
|
|
711
|
+
pdftoppm -r 100 -png -f 1 -l 1 {OUTPUT_DIR}/data.pdf <TMP>/p1
|
|
712
|
+
pdftoppm -r 100 -png -f LAST -l LAST {OUTPUT_DIR}/data.pdf <TMP>/last
|
|
713
|
+
# Confirm: page 1 has the header; last page rows not truncated;
|
|
714
|
+
# orientation matches request.
|
|
715
|
+
|
|
716
|
+
STEP 5 — Deliverable summary
|
|
717
|
+
Print:
|
|
718
|
+
- Conversion success / failure per format
|
|
719
|
+
- File sizes
|
|
720
|
+
- PDF page count + page size
|
|
721
|
+
- Any data type changes flagged (date → string in CSV is expected;
|
|
722
|
+
flag anything unexpected)
|
|
723
|
+
|
|
724
|
+
CONSTRAINTS:
|
|
725
|
+
- Row count > 500 + no mode → ASK before producing a 50+ MB PDF.
|
|
726
|
+
- JSON: ensure_ascii=False; for strict type requirements, convert dates
|
|
727
|
+
explicitly and verify numeric fields remain JSON numbers.
|
|
728
|
+
- CSV→Excel reverse validation with XML-template requirement means direct
|
|
729
|
+
OOXML package generation; do not use openpyxl full read-write.
|
|
730
|
+
- PDF print settings: NEVER ship without visual page-1 + last-page check.
|
|
731
|
+
- Don't 2>/dev/null soffice/render commands — stderr explains failures.
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
---
|
|
735
|
+
|
|
736
|
+
## How to use this index
|
|
737
|
+
|
|
738
|
+
1. **Read the user's incoming query.** Match it against each `Match signatures` block.
|
|
739
|
+
2. **One match → copy the full Canonical query.** Substitute Slots
|
|
740
|
+
verbatim from the user's actual values. Execute step-by-step. Do not
|
|
741
|
+
skip verification steps (recalc + total_formulas + spot-check).
|
|
742
|
+
3. **Multiple partial matches → fuse.** Take the strictest verification
|
|
743
|
+
from each matched canonical query; never relax a constraint.
|
|
744
|
+
4. **No match → fall back** to [`../SKILL.md`](../SKILL.md) Operational rules and
|
|
745
|
+
§2 Decision Tree. Don't force-fit a wrong canonical query.
|
|
746
|
+
|
|
747
|
+
## Universal constraints (apply to every canonical query above)
|
|
748
|
+
|
|
749
|
+
- **Don't `2>/dev/null`.** Redirect to `<TMP>/<step>.log`, grep on demand.
|
|
750
|
+
- **JSON files via `json.dumps(payload, ensure_ascii=False, indent=2)`.**
|
|
751
|
+
- **Formula-first.** Every derived value = `=` formula, never a literal.
|
|
752
|
+
- **`recalc.py` total_formulas == 0 = delivery failure.** Rewrite, don't ship.
|
|
753
|
+
- **Never `df.sample` / `df.head` on the raw sheet** when a summary will
|
|
754
|
+
aggregate over it. Always write the full row count.
|
|
755
|
+
- **Summaries: pivot tables or `=SUMIFS`/`=COUNTIFS` only.** Python
|
|
756
|
+
groupby written back as values is forbidden.
|
|
757
|
+
- **Slicers: template-inheritance OR XML transplant OR explicit user
|
|
758
|
+
notification.** Never silently downgrade.
|
|
759
|
+
- **When user states a numeric range, enforce it in the formula** with
|
|
760
|
+
`=ROUND(MIN(MAX(raw, LO), HI), 1)`. Spot-check MIN/MAX after recalc.
|