@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.
Files changed (656) hide show
  1. package/bin/mcode-webui.mjs +6 -2
  2. package/package.json +1 -1
  3. package/server/assets/agents/_default/prompt-base-all.md +121 -0
  4. package/server/assets/agents/_default/prompt-base-all.md.hbs +255 -0
  5. package/server/assets/agents/_default/prompt-base-windows.md +6 -0
  6. package/server/assets/agents/_default/prompt-base-windows.md.hbs +6 -0
  7. package/server/assets/agents/_default/prompt-base-worker.md +12 -0
  8. package/server/assets/agents/_default/prompt-base-worker.md.hbs +27 -0
  9. package/server/assets/agents/_default/prompt-session-branch.md +3 -0
  10. package/server/assets/agents/_default/prompt-session-branch.md.hbs +30 -0
  11. package/server/assets/agents/_default/prompt-session-root.md +4 -0
  12. package/server/assets/agents/_default/prompt-session-root.md.hbs +32 -0
  13. package/server/assets/agents/_migration/README.md +20 -0
  14. package/server/assets/agents/_migration/coder/PERSONA-zh.md +10 -0
  15. package/server/assets/agents/_migration/coder/PERSONA.md +11 -0
  16. package/server/assets/agents/_migration/coder/system-prompt.md.hbs +42 -0
  17. package/server/assets/agents/_migration/general/PERSONA-zh.md +11 -0
  18. package/server/assets/agents/_migration/general/PERSONA.md +11 -0
  19. package/server/assets/agents/_migration/general/system-prompt.md.hbs +49 -0
  20. package/server/assets/agents/_v2/AGENT_CONTEXT.md.hbs +222 -0
  21. package/server/assets/agents/_v2/coding/SYSTEM.md.hbs +161 -0
  22. package/server/assets/agents/_v2/explore.md.hbs +38 -0
  23. package/server/assets/agents/_v2/tui/SYSTEM.md.hbs +147 -0
  24. package/server/assets/agents/_v2/verifier.md.hbs +32 -0
  25. package/server/assets/agents/_v2/work/SYSTEM.md.hbs +173 -0
  26. package/server/assets/agents/_v2/worker.md.hbs +27 -0
  27. package/server/assets/agents/builtin-agents.json +1 -0
  28. package/server/assets/agents/desktop-task/archive-title/system-en.md +1 -0
  29. package/server/assets/agents/desktop-task/archive-title/system-zh.md +1 -0
  30. package/server/assets/agents/desktop-task/checkpoint/system.md +15 -0
  31. package/server/assets/agents/desktop-task/output-revision/system.md +1 -0
  32. package/server/assets/agents/desktop-task/retry/continuation.md +4 -0
  33. package/server/assets/agents/desktop-task/session-title/system.md +41 -0
  34. package/server/assets/agents/explore/PERSONA-zh.md +8 -0
  35. package/server/assets/agents/explore/PERSONA.md +8 -0
  36. package/server/assets/agents/explore/agent.md +14 -0
  37. package/server/assets/agents/explore/system-prompt.md.hbs +35 -0
  38. package/server/assets/agents/greeting-zh.md +61 -0
  39. package/server/assets/agents/greeting.md +61 -0
  40. package/server/assets/agents/managed-prompts.json +54 -0
  41. package/server/assets/agents/mavis/PERSONA-zh.md +7 -0
  42. package/server/assets/agents/mavis/PERSONA.md +7 -0
  43. package/server/assets/agents/mavis/features/cron.md.hbs +23 -0
  44. package/server/assets/agents/mavis/features/delegation.md.hbs +56 -0
  45. package/server/assets/agents/mavis/features/memory.md.hbs +61 -0
  46. package/server/assets/agents/mavis/features/recoverable-deletion.md.hbs +10 -0
  47. package/server/assets/agents/mavis/features/task-management.md.hbs +11 -0
  48. package/server/assets/agents/mavis/features/web-search.md.hbs +11 -0
  49. package/server/assets/agents/mavis/modes/coding/online/PERSONA-zh.md.hbs +20 -0
  50. package/server/assets/agents/mavis/modes/coding/online/PERSONA.md.hbs +20 -0
  51. package/server/assets/agents/mavis/modes/coding/online/SYSTEM.md.hbs +159 -0
  52. package/server/assets/agents/mavis/modes/work/online/PERSONA-zh.md.hbs +20 -0
  53. package/server/assets/agents/mavis/modes/work/online/PERSONA.md.hbs +20 -0
  54. package/server/assets/agents/mavis/modes/work/online/SYSTEM.md.hbs +161 -0
  55. package/server/assets/agents/mavis/prompt-session-root.md +4 -0
  56. package/server/assets/agents/mavis/prompt-session-root.md.hbs +4 -0
  57. package/server/assets/agents/mavis/skills/control-in-app-browser/SKILL.md +491 -0
  58. package/server/assets/agents/mavis/skills/minimax-code-product/SKILL.md +114 -0
  59. package/server/assets/agents/mavis/skills/minimax-code-product/references/account-models.md +32 -0
  60. package/server/assets/agents/mavis/skills/minimax-code-product/references/agents.md +25 -0
  61. package/server/assets/agents/mavis/skills/minimax-code-product/references/extensions.md +33 -0
  62. package/server/assets/agents/mavis/skills/minimax-code-product/references/workflows.md +30 -0
  63. package/server/assets/agents/mavis/system-prompt.md.hbs +97 -0
  64. package/server/assets/agents/prompt-exemptions.json +38 -0
  65. package/server/assets/agents/verifier/PERSONA-zh.md +8 -0
  66. package/server/assets/agents/verifier/PERSONA.md +8 -0
  67. package/server/assets/agents/verifier/agent.md +17 -0
  68. package/server/assets/agents/verifier/system-prompt.md.hbs +28 -0
  69. package/server/assets/agents/worker/PERSONA-zh.md +8 -0
  70. package/server/assets/agents/worker/PERSONA.md +8 -0
  71. package/server/assets/agents/worker/agent.md +18 -0
  72. package/server/assets/agents/worker/system-prompt.md.hbs +22 -0
  73. package/server/assets/agents/workflow/code-review/review-candidates.md +120 -0
  74. package/server/assets/agents/workflow/code-review/reviewer-system.md +75 -0
  75. package/server/assets/agents/workflow/goal/budget-limit.md +16 -0
  76. package/server/assets/agents/workflow/goal/continuation.md +62 -0
  77. package/server/assets/agents/workflow/goal/objective-updated.md +16 -0
  78. package/server/assets/agents/workflow/goal/recovery-terminal-audit.md +12 -0
  79. package/server/assets/agents/workflow/goal/recovery.md +11 -0
  80. package/server/assets/agents/workflow/goal/terminal-audit.md +9 -0
  81. package/server/assets/agents/workflow/plan-mode/agent-entry.md +72 -0
  82. package/server/assets/agents/workflow/prompt-hook/system.md +0 -0
  83. package/server/assets/models-dev-catalog.json.gz +0 -0
  84. package/server/assets/prompts/code-review/review-candidates.md +120 -0
  85. package/server/assets/prompts/code-review/reviewer-system.md +75 -0
  86. package/server/assets/skills/code-review/SKILL.md +51 -0
  87. package/server/assets/skills/cu-desktop/SKILL.md +257 -0
  88. package/server/assets/skills/deep-research/SKILL.md +219 -0
  89. package/server/assets/skills/deep-research/scripts/render_plan.py +33 -0
  90. package/server/assets/skills/deep-research/steps/1_background.md +65 -0
  91. package/server/assets/skills/deep-research/steps/2_judgment.md +66 -0
  92. package/server/assets/skills/deep-research/steps/3_analysis.md +114 -0
  93. package/server/assets/skills/deep-research/steps/4_research.md +161 -0
  94. package/server/assets/skills/deep-research/steps/5_writing.md +358 -0
  95. package/server/assets/skills/deploy-website/SKILL.md +55 -0
  96. package/server/assets/skills/docx/LICENSE +21 -0
  97. package/server/assets/skills/docx/SKILL.md +261 -0
  98. package/server/assets/skills/docx/assets/styles/academic_styles.xml +250 -0
  99. package/server/assets/skills/docx/assets/styles/corporate_styles.xml +284 -0
  100. package/server/assets/skills/docx/assets/styles/default_styles.xml +449 -0
  101. package/server/assets/skills/docx/assets/xsd/aesthetic-rules.xsd +470 -0
  102. package/server/assets/skills/docx/assets/xsd/business-rules.xsd +130 -0
  103. package/server/assets/skills/docx/assets/xsd/common-types.xsd +159 -0
  104. package/server/assets/skills/docx/assets/xsd/wml-subset.xsd +589 -0
  105. package/server/assets/skills/docx/docs/acceptance-checklists/create.md +7 -0
  106. package/server/assets/skills/docx/docs/acceptance-checklists/edit.md +6 -0
  107. package/server/assets/skills/docx/docs/acceptance-checklists/layout-repair.md +7 -0
  108. package/server/assets/skills/docx/docs/acceptance-checklists/template.md +6 -0
  109. package/server/assets/skills/docx/docs/acceptance.md +139 -0
  110. package/server/assets/skills/docx/docs/anti-patterns.md +14 -0
  111. package/server/assets/skills/docx/docs/backends.md +116 -0
  112. package/server/assets/skills/docx/docs/evidence.md +73 -0
  113. package/server/assets/skills/docx/docs/failure-taxonomy.md +71 -0
  114. package/server/assets/skills/docx/docs/index.md +50 -0
  115. package/server/assets/skills/docx/docs/rendered-delivery.md +125 -0
  116. package/server/assets/skills/docx/docs/router.md +122 -0
  117. package/server/assets/skills/docx/docs/tables-and-numbering.md +27 -0
  118. package/server/assets/skills/docx/docs/task-apply-template.md +141 -0
  119. package/server/assets/skills/docx/docs/task-compare-two-docx.md +48 -0
  120. package/server/assets/skills/docx/docs/task-create.md +124 -0
  121. package/server/assets/skills/docx/docs/task-edit-fill.md +69 -0
  122. package/server/assets/skills/docx/docs/task-read-content.md +148 -0
  123. package/server/assets/skills/docx/docs/task-read-rendered.md +78 -0
  124. package/server/assets/skills/docx/docs/task-read-structure.md +93 -0
  125. package/server/assets/skills/docx/docs/task-repair-layout.md +70 -0
  126. package/server/assets/skills/docx/docs/template-dsl.md +32 -0
  127. package/server/assets/skills/docx/docs/track-changes.md +15 -0
  128. package/server/assets/skills/docx/docs/xml-patch-dsl.md +33 -0
  129. package/server/assets/skills/docx/references/cjk_typography.md +357 -0
  130. package/server/assets/skills/docx/references/cjk_university_template_guide.md +184 -0
  131. package/server/assets/skills/docx/references/comments_guide.md +191 -0
  132. package/server/assets/skills/docx/references/design_good_bad_examples.md +829 -0
  133. package/server/assets/skills/docx/references/design_principles.md +819 -0
  134. package/server/assets/skills/docx/references/openxml_element_order.md +308 -0
  135. package/server/assets/skills/docx/references/openxml_encyclopedia_part1.md +4061 -0
  136. package/server/assets/skills/docx/references/openxml_encyclopedia_part2.md +2820 -0
  137. package/server/assets/skills/docx/references/openxml_encyclopedia_part3.md +3381 -0
  138. package/server/assets/skills/docx/references/openxml_namespaces.md +82 -0
  139. package/server/assets/skills/docx/references/openxml_units.md +72 -0
  140. package/server/assets/skills/docx/references/sample-patch-plans.json +22 -0
  141. package/server/assets/skills/docx/references/sample-task-intents.json +5 -0
  142. package/server/assets/skills/docx/references/sample-template-manifests.json +21 -0
  143. package/server/assets/skills/docx/references/scenario_a_create.md +284 -0
  144. package/server/assets/skills/docx/references/scenario_b_edit_content.md +295 -0
  145. package/server/assets/skills/docx/references/scenario_c_apply_template.md +456 -0
  146. package/server/assets/skills/docx/references/track_changes_guide.md +200 -0
  147. package/server/assets/skills/docx/references/troubleshooting.md +506 -0
  148. package/server/assets/skills/docx/references/typography_guide.md +294 -0
  149. package/server/assets/skills/docx/references/xsd_validation_guide.md +158 -0
  150. package/server/assets/skills/docx/scripts/build_patch_plan.py +29 -0
  151. package/server/assets/skills/docx/scripts/diff_docx_structure.py +61 -0
  152. package/server/assets/skills/docx/scripts/doc_to_docx.ps1 +85 -0
  153. package/server/assets/skills/docx/scripts/doc_to_docx.sh +40 -0
  154. package/server/assets/skills/docx/scripts/docx_preview.ps1 +76 -0
  155. package/server/assets/skills/docx/scripts/docx_preview.sh +37 -0
  156. package/server/assets/skills/docx/scripts/docx_to_pdf.py +87 -0
  157. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj +19 -0
  158. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
  159. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
  160. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
  161. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
  162. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
  163. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
  164. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
  165. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
  166. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
  167. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/MiniMaxAIDocx.Core.csproj +15 -0
  168. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
  169. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
  170. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
  171. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
  172. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
  173. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
  174. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
  175. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
  176. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
  177. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
  178. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
  179. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
  180. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
  181. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
  182. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
  183. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
  184. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
  185. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
  186. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
  187. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
  188. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
  189. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
  190. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
  191. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
  192. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
  193. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
  194. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
  195. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
  196. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
  197. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
  198. package/server/assets/skills/docx/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
  199. package/server/assets/skills/docx/scripts/env_check.ps1 +327 -0
  200. package/server/assets/skills/docx/scripts/env_check.sh +340 -0
  201. package/server/assets/skills/docx/scripts/extract_docx_text.py +1075 -0
  202. package/server/assets/skills/docx/scripts/pack_docx.py +31 -0
  203. package/server/assets/skills/docx/scripts/read_docx_structure.py +1032 -0
  204. package/server/assets/skills/docx/scripts/render_docx_pages.py +147 -0
  205. package/server/assets/skills/docx/scripts/rendered_report.py +609 -0
  206. package/server/assets/skills/docx/scripts/setup.ps1 +542 -0
  207. package/server/assets/skills/docx/scripts/setup.sh +537 -0
  208. package/server/assets/skills/docx/scripts/unpack_docx.py +29 -0
  209. package/server/assets/skills/docx/scripts/validate_template_manifest.py +60 -0
  210. package/server/assets/skills/docx/scripts/verify_anchor_atomicity.py +87 -0
  211. package/server/assets/skills/edit-deployed-website/SKILL.md +27 -0
  212. package/server/assets/skills/init/SKILL.md +137 -0
  213. package/server/assets/skills/lark-tools/SKILL.md +321 -0
  214. package/server/assets/skills/lark-tools/cli-skills/lark-approval/SKILL.md +48 -0
  215. package/server/assets/skills/lark-tools/cli-skills/lark-attendance/SKILL.md +57 -0
  216. package/server/assets/skills/lark-tools/cli-skills/lark-base/SKILL.md +372 -0
  217. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/dashboard-block-data-config.md +350 -0
  218. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/examples.md +130 -0
  219. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/formula-field-guide.md +735 -0
  220. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-advperm-disable.md +83 -0
  221. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-advperm-enable.md +80 -0
  222. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-base-copy.md +74 -0
  223. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-base-create.md +68 -0
  224. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-base-get.md +39 -0
  225. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-arrange.md +83 -0
  226. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-block-create.md +108 -0
  227. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-block-delete.md +46 -0
  228. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-block-get.md +57 -0
  229. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-block-list.md +53 -0
  230. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-block-update.md +84 -0
  231. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-create.md +73 -0
  232. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-delete.md +44 -0
  233. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-get.md +59 -0
  234. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-list.md +52 -0
  235. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard-update.md +69 -0
  236. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-dashboard.md +240 -0
  237. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-data-query.md +375 -0
  238. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field-create.md +104 -0
  239. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field-delete.md +51 -0
  240. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field-get.md +42 -0
  241. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field-list.md +44 -0
  242. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field-search-options.md +48 -0
  243. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field-update.md +97 -0
  244. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-field.md +22 -0
  245. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-create.md +87 -0
  246. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-delete.md +64 -0
  247. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-get.md +68 -0
  248. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-list.md +73 -0
  249. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-questions-create.md +118 -0
  250. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-questions-delete.md +68 -0
  251. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-questions-list.md +84 -0
  252. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-questions-update.md +92 -0
  253. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-questions.md +23 -0
  254. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form-update.md +82 -0
  255. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-form.md +24 -0
  256. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-history.md +16 -0
  257. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-batch-create.md +76 -0
  258. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-batch-update.md +71 -0
  259. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-delete.md +51 -0
  260. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-get.md +38 -0
  261. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-history-list.md +86 -0
  262. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-list.md +83 -0
  263. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-search.md +72 -0
  264. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-upload-attachment.md +51 -0
  265. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record-upsert.md +89 -0
  266. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-record.md +28 -0
  267. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-role-create.md +89 -0
  268. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-role-delete.md +83 -0
  269. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-role-get.md +87 -0
  270. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-role-list.md +81 -0
  271. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-role-update.md +94 -0
  272. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-shortcut-field-properties.md +679 -0
  273. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-shortcut-record-value.md +200 -0
  274. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-table-create.md +62 -0
  275. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-table-delete.md +51 -0
  276. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-table-get.md +46 -0
  277. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-table-list.md +43 -0
  278. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-table-update.md +49 -0
  279. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-table.md +20 -0
  280. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-create.md +83 -0
  281. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-delete.md +48 -0
  282. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get-card.md +38 -0
  283. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get-filter.md +38 -0
  284. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get-group.md +38 -0
  285. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get-sort.md +38 -0
  286. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get-timebar.md +38 -0
  287. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get-visible-fields.md +38 -0
  288. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-get.md +38 -0
  289. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-list.md +44 -0
  290. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-rename.md +44 -0
  291. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-set-card.md +81 -0
  292. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-set-filter.md +92 -0
  293. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-set-group.md +77 -0
  294. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-set-sort.md +77 -0
  295. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-set-timebar.md +79 -0
  296. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view-set-visible-fields.md +73 -0
  297. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-view.md +44 -0
  298. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-create.md +180 -0
  299. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-disable.md +94 -0
  300. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-enable.md +94 -0
  301. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-get.md +147 -0
  302. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-guide.md +718 -0
  303. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-list.md +123 -0
  304. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-schema.md +935 -0
  305. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow-update.md +167 -0
  306. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workflow.md +23 -0
  307. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lark-base-workspace.md +18 -0
  308. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/lookup-field-guide.md +508 -0
  309. package/server/assets/skills/lark-tools/cli-skills/lark-base/references/role-config.md +532 -0
  310. package/server/assets/skills/lark-tools/cli-skills/lark-calendar/SKILL.md +143 -0
  311. package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-agenda.md +78 -0
  312. package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-create.md +109 -0
  313. package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-freebusy.md +124 -0
  314. package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-room-find.md +89 -0
  315. package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-rsvp.md +42 -0
  316. package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-schedule-meeting.md +194 -0
  317. package/server/assets/skills/lark-tools/cli-skills/lark-calendar/references/lark-calendar-suggestion.md +125 -0
  318. package/server/assets/skills/lark-tools/cli-skills/lark-contact/SKILL.md +23 -0
  319. package/server/assets/skills/lark-tools/cli-skills/lark-contact/references/lark-contact-get-user.md +47 -0
  320. package/server/assets/skills/lark-tools/cli-skills/lark-contact/references/lark-contact-search-user.md +39 -0
  321. package/server/assets/skills/lark-tools/cli-skills/lark-doc/SKILL.md +189 -0
  322. package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-create.md +673 -0
  323. package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-fetch.md +120 -0
  324. package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-media-download.md +50 -0
  325. package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-media-insert.md +51 -0
  326. package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-media-preview.md +41 -0
  327. package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-search.md +213 -0
  328. package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-update.md +264 -0
  329. package/server/assets/skills/lark-tools/cli-skills/lark-doc/references/lark-doc-whiteboard-update.md +6 -0
  330. package/server/assets/skills/lark-tools/cli-skills/lark-drive/SKILL.md +294 -0
  331. package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-add-comment.md +99 -0
  332. package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-create-folder.md +73 -0
  333. package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-create-shortcut.md +103 -0
  334. package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-delete.md +79 -0
  335. package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-download.md +31 -0
  336. package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-export-download.md +50 -0
  337. package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-export.md +100 -0
  338. package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-import.md +132 -0
  339. package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-move.md +120 -0
  340. package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-reactions.md +113 -0
  341. package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-task-result.md +264 -0
  342. package/server/assets/skills/lark-tools/cli-skills/lark-drive/references/lark-drive-upload.md +67 -0
  343. package/server/assets/skills/lark-tools/cli-skills/lark-event/SKILL.md +21 -0
  344. package/server/assets/skills/lark-tools/cli-skills/lark-event/references/lark-event-subscribe.md +217 -0
  345. package/server/assets/skills/lark-tools/cli-skills/lark-im/SKILL.md +140 -0
  346. package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-chat-create.md +156 -0
  347. package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-chat-identity.md +55 -0
  348. package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-chat-messages-list.md +142 -0
  349. package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-chat-search.md +114 -0
  350. package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-chat-update.md +84 -0
  351. package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-messages-mget.md +95 -0
  352. package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-messages-reply.md +222 -0
  353. package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-messages-resources-download.md +94 -0
  354. package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-messages-search.md +213 -0
  355. package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-messages-send.md +223 -0
  356. package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-reactions.md +297 -0
  357. package/server/assets/skills/lark-tools/cli-skills/lark-im/references/lark-im-threads-messages-list.md +111 -0
  358. package/server/assets/skills/lark-tools/cli-skills/lark-mail/SKILL.md +550 -0
  359. package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-draft-create.md +110 -0
  360. package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-draft-edit.md +376 -0
  361. package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-forward.md +208 -0
  362. package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-message.md +201 -0
  363. package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-messages.md +108 -0
  364. package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-reply-all.md +184 -0
  365. package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-reply.md +220 -0
  366. package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-send.md +178 -0
  367. package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-signature.md +98 -0
  368. package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-thread.md +111 -0
  369. package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-triage.md +122 -0
  370. package/server/assets/skills/lark-tools/cli-skills/lark-mail/references/lark-mail-watch.md +94 -0
  371. package/server/assets/skills/lark-tools/cli-skills/lark-minutes/SKILL.md +116 -0
  372. package/server/assets/skills/lark-tools/cli-skills/lark-minutes/references/lark-minutes-download.md +119 -0
  373. package/server/assets/skills/lark-tools/cli-skills/lark-minutes/references/lark-minutes-search.md +180 -0
  374. package/server/assets/skills/lark-tools/cli-skills/lark-openapi-explorer/SKILL.md +153 -0
  375. package/server/assets/skills/lark-tools/cli-skills/lark-shared/SKILL.md +141 -0
  376. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/SKILL.md +262 -0
  377. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-add-dimension.md +51 -0
  378. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-append.md +56 -0
  379. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-batch-set-style.md +53 -0
  380. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-create-filter-view-condition.md +42 -0
  381. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-create-filter-view.md +42 -0
  382. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-create.md +69 -0
  383. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-delete-dimension.md +53 -0
  384. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-delete-dropdown.md +46 -0
  385. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-delete-filter-view-condition.md +26 -0
  386. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-delete-filter-view.md +25 -0
  387. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-export.md +51 -0
  388. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-find.md +62 -0
  389. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-formula.md +89 -0
  390. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-get-dropdown.md +43 -0
  391. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-get-filter-view-condition.md +27 -0
  392. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-get-filter-view.md +26 -0
  393. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-info.md +43 -0
  394. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-insert-dimension.md +51 -0
  395. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-list-filter-view-conditions.md +28 -0
  396. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-list-filter-views.md +26 -0
  397. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-merge-cells.md +47 -0
  398. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-move-dimension.md +52 -0
  399. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-read.md +61 -0
  400. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-replace.md +62 -0
  401. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-set-dropdown.md +62 -0
  402. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-set-style.md +71 -0
  403. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-unmerge-cells.md +46 -0
  404. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-update-dimension.md +60 -0
  405. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-update-dropdown.md +51 -0
  406. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-update-filter-view-condition.md +27 -0
  407. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-update-filter-view.md +24 -0
  408. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-write-image.md +65 -0
  409. package/server/assets/skills/lark-tools/cli-skills/lark-sheets/references/lark-sheets-write.md +60 -0
  410. package/server/assets/skills/lark-tools/cli-skills/lark-skill-maker/SKILL.md +85 -0
  411. package/server/assets/skills/lark-tools/cli-skills/lark-slides/SKILL.md +368 -0
  412. package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/examples.md +179 -0
  413. package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/lark-slides-create.md +137 -0
  414. package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/lark-slides-media-upload.md +143 -0
  415. package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +215 -0
  416. package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +119 -0
  417. package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/lark-slides-xml-presentations-get.md +94 -0
  418. package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/slide-templates.md +199 -0
  419. package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/slides_demo.xml +226 -0
  420. package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/slides_xml_schema_definition.xml +3004 -0
  421. package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/xml-format-guide.md +369 -0
  422. package/server/assets/skills/lark-tools/cli-skills/lark-slides/references/xml-schema-quick-ref.md +215 -0
  423. package/server/assets/skills/lark-tools/cli-skills/lark-task/SKILL.md +151 -0
  424. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-assign.md +35 -0
  425. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-comment.md +28 -0
  426. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-complete.md +27 -0
  427. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-create.md +51 -0
  428. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-followers.md +32 -0
  429. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-get-my-tasks.md +55 -0
  430. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-get-related-tasks.md +53 -0
  431. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-reminder.md +36 -0
  432. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-reopen.md +27 -0
  433. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-search.md +41 -0
  434. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-set-ancestor.md +32 -0
  435. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-subscribe-event.md +86 -0
  436. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-tasklist-create.md +35 -0
  437. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-tasklist-members.md +36 -0
  438. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-tasklist-search.md +38 -0
  439. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-tasklist-task-add.md +38 -0
  440. package/server/assets/skills/lark-tools/cli-skills/lark-task/references/lark-task-update.md +37 -0
  441. package/server/assets/skills/lark-tools/cli-skills/lark-vc/SKILL.md +143 -0
  442. package/server/assets/skills/lark-tools/cli-skills/lark-vc/references/lark-vc-notes.md +126 -0
  443. package/server/assets/skills/lark-tools/cli-skills/lark-vc/references/lark-vc-recording.md +141 -0
  444. package/server/assets/skills/lark-tools/cli-skills/lark-vc/references/lark-vc-search.md +159 -0
  445. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard/SKILL.md +118 -0
  446. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard/references/lark-whiteboard-query.md +49 -0
  447. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard/references/lark-whiteboard-update.md +97 -0
  448. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/SKILL.md +236 -0
  449. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/references/connectors.md +102 -0
  450. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/references/content.md +40 -0
  451. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/references/layout.md +374 -0
  452. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/references/schema.md +333 -0
  453. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/references/style.md +318 -0
  454. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/references/typography.md +73 -0
  455. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/architecture.md +433 -0
  456. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/bar-chart.md +181 -0
  457. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/comparison.md +135 -0
  458. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/fishbone.md +238 -0
  459. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/flowchart.md +185 -0
  460. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/flywheel.md +195 -0
  461. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/funnel.md +101 -0
  462. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/line-chart.md +208 -0
  463. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/mermaid.md +136 -0
  464. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/milestone.md +139 -0
  465. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/organization.md +175 -0
  466. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/pyramid.md +99 -0
  467. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/swimlane.md +370 -0
  468. package/server/assets/skills/lark-tools/cli-skills/lark-whiteboard-cli/scenes/treemap.md +210 -0
  469. package/server/assets/skills/lark-tools/cli-skills/lark-wiki/SKILL.md +93 -0
  470. package/server/assets/skills/lark-tools/cli-skills/lark-wiki/references/lark-wiki-move.md +183 -0
  471. package/server/assets/skills/lark-tools/cli-skills/lark-wiki/references/lark-wiki-node-create.md +127 -0
  472. package/server/assets/skills/lark-tools/cli-skills/lark-workflow-meeting-summary/SKILL.md +99 -0
  473. package/server/assets/skills/lark-tools/cli-skills/lark-workflow-standup-report/SKILL.md +120 -0
  474. package/server/assets/skills/lark-tools/references/commands-macos-linux.md +42 -0
  475. package/server/assets/skills/lark-tools/references/commands-windows-powershell.md +54 -0
  476. package/server/assets/skills/lark-tools/references/storage-paths.md +21 -0
  477. package/server/assets/skills/llm-call/SKILL.md +50 -0
  478. package/server/assets/skills/llm-call/scripts/llm_call.py +458 -0
  479. package/server/assets/skills/mcode-tools-master/SKILL.md +133 -0
  480. package/server/assets/skills/pdf/SKILL.md +287 -0
  481. package/server/assets/skills/pdf/docs/advanced-reference.md +711 -0
  482. package/server/assets/skills/pdf/docs/ai-voice-cloning-regulatory-report-case.md +303 -0
  483. package/server/assets/skills/pdf/docs/annual-report-financial-digest-latex-case.md +233 -0
  484. package/server/assets/skills/pdf/docs/create-guide.md +438 -0
  485. package/server/assets/skills/pdf/docs/design-guide.md +204 -0
  486. package/server/assets/skills/pdf/docs/docx-contract-roundtrip-professional-case.md +328 -0
  487. package/server/assets/skills/pdf/docs/email-translation-goldman-two-sessions-case.md +346 -0
  488. package/server/assets/skills/pdf/docs/forms-guide.md +462 -0
  489. package/server/assets/skills/pdf/docs/html-pdf-spec.md +500 -0
  490. package/server/assets/skills/pdf/docs/italy-schengen-visa-acroform-case.md +22 -0
  491. package/server/assets/skills/pdf/docs/latex-academic-thesis-guide.md +234 -0
  492. package/server/assets/skills/pdf/docs/latex-technical-book-guide.md +112 -0
  493. package/server/assets/skills/pdf/docs/markdown-static-academic-data-viz-case.md +280 -0
  494. package/server/assets/skills/pdf/docs/pitfalls-index.md +798 -0
  495. package/server/assets/skills/pdf/docs/read-guide.md +358 -0
  496. package/server/assets/skills/pdf/docs/reformat-guide.md +238 -0
  497. package/server/assets/skills/pdf/docs/skill-readme-archive.md +152 -0
  498. package/server/assets/skills/pdf/docs/troubleshooting.md +86 -0
  499. package/server/assets/skills/pdf/docs/vision-guide.md +188 -0
  500. package/server/assets/skills/pdf/scripts/__init__.py +0 -0
  501. package/server/assets/skills/pdf/scripts/_pdf_read_lib.py +284 -0
  502. package/server/assets/skills/pdf/scripts/fill/__init__.py +0 -0
  503. package/server/assets/skills/pdf/scripts/fill/acroform_apply.py +153 -0
  504. package/server/assets/skills/pdf/scripts/fill/overlay_apply.py +109 -0
  505. package/server/assets/skills/pdf/scripts/lib/__init__.py +0 -0
  506. package/server/assets/skills/pdf/scripts/lib/acroform_io.py +170 -0
  507. package/server/assets/skills/pdf/scripts/lib/cli_utils.py +41 -0
  508. package/server/assets/skills/pdf/scripts/lib/geometry.py +79 -0
  509. package/server/assets/skills/pdf/scripts/make.sh +388 -0
  510. package/server/assets/skills/pdf/scripts/merge.py +112 -0
  511. package/server/assets/skills/pdf/scripts/pdf_inspect/__init__.py +0 -0
  512. package/server/assets/skills/pdf/scripts/pdf_inspect/acroform_inspect.py +52 -0
  513. package/server/assets/skills/pdf/scripts/pdf_inspect/acroform_probe.py +57 -0
  514. package/server/assets/skills/pdf/scripts/pdf_inspect/layout_scan.py +164 -0
  515. package/server/assets/skills/pdf/scripts/read_pdf_vision.py +473 -0
  516. package/server/assets/skills/pdf/scripts/reformat_parse.py +181 -0
  517. package/server/assets/skills/pdf/scripts/render/__init__.py +0 -0
  518. package/server/assets/skills/pdf/scripts/render/overlay_preview.py +86 -0
  519. package/server/assets/skills/pdf/scripts/render/page_rasterize.py +85 -0
  520. package/server/assets/skills/pdf/scripts/render_html.cjs +205 -0
  521. package/server/assets/skills/pdf/scripts/validate/__init__.py +0 -0
  522. package/server/assets/skills/pdf/scripts/validate/geometry_lint.py +124 -0
  523. package/server/assets/skills/pdf/templates/INDEX.md +97 -0
  524. package/server/assets/skills/pdf/templates/bilingual-menu-premium/README.md +175 -0
  525. package/server/assets/skills/pdf/templates/bilingual-menu-premium/skeleton.html +343 -0
  526. package/server/assets/skills/pdf/templates/brand-guide-2page/README.md +140 -0
  527. package/server/assets/skills/pdf/templates/brand-guide-2page/cases/minimax-web-brand-guide/README.md +155 -0
  528. package/server/assets/skills/pdf/templates/brand-guide-2page/cases/minimax-web-brand-guide/source.html +188 -0
  529. package/server/assets/skills/pdf/templates/brand-guide-2page/skeleton.html +264 -0
  530. package/server/assets/skills/pdf/templates/data-viz-report/README.md +234 -0
  531. package/server/assets/skills/pdf/templates/data-viz-report/cases/annual-report-financial-digest-latex/README.md +12 -0
  532. package/server/assets/skills/pdf/templates/data-viz-report/cases/annual-report-financial-digest-latex/build_charts.py +341 -0
  533. package/server/assets/skills/pdf/templates/data-viz-report/cases/annual-report-financial-digest-latex/source.tex +161 -0
  534. 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
  535. 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
  536. package/server/assets/skills/pdf/templates/data-viz-report/cases/apple-m-ai-static-academic/assets/fig_1_3_mmax_generation.png +0 -0
  537. package/server/assets/skills/pdf/templates/data-viz-report/cases/apple-m-ai-static-academic/source.html +656 -0
  538. package/server/assets/skills/pdf/templates/data-viz-report/skeleton.html +835 -0
  539. package/server/assets/skills/pdf/templates/form-fill-acroform/README.md +198 -0
  540. package/server/assets/skills/pdf/templates/form-fill-acroform/cases/italy-schengen-visa-example/USER-FINAL-SUMMARY.template.md +42 -0
  541. package/server/assets/skills/pdf/templates/form-fill-acroform/cases/italy-schengen-visa-example/extract_pdfs_key_info.py +80 -0
  542. package/server/assets/skills/pdf/templates/form-fill-acroform/cases/italy-schengen-visa-example/field_values.case.json +233 -0
  543. package/server/assets/skills/pdf/templates/form-fill-acroform/field_values.template.json +118 -0
  544. package/server/assets/skills/pdf/templates/latex-academic-thesis/README.md +146 -0
  545. package/server/assets/skills/pdf/templates/latex-academic-thesis/source.tex +334 -0
  546. package/server/assets/skills/pdf/templates/latex-technical-book/README.md +130 -0
  547. package/server/assets/skills/pdf/templates/latex-technical-book/README.template-source.md +62 -0
  548. package/server/assets/skills/pdf/templates/latex-technical-book/source.tex +439 -0
  549. package/server/assets/skills/pdf/templates/multi-article-aggregator/README.md +148 -0
  550. package/server/assets/skills/pdf/templates/multi-article-aggregator/pipeline.md +223 -0
  551. package/server/assets/skills/pdf/templates/multilang-research-report/README.md +146 -0
  552. package/server/assets/skills/pdf/templates/multilang-research-report/cases/ai-voice-cloning-regulatory/source.html +244 -0
  553. package/server/assets/skills/pdf/templates/multilang-research-report/skeleton.html +242 -0
  554. package/server/assets/skills/pdf/templates/reformat-default/README.md +137 -0
  555. package/server/assets/skills/pdf/templates/reformat-default/cases/pku-contract-roundtrip/docx_engine.py +68 -0
  556. package/server/assets/skills/pdf/templates/reformat-default/cases/pku-contract-roundtrip/source.html +231 -0
  557. package/server/assets/skills/pdf/templates/reformat-default/cases/pku-contract-roundtrip/source.md +196 -0
  558. package/server/assets/skills/pdf/templates/reformat-default/skeleton.html +204 -0
  559. package/server/assets/skills/pdf/templates/translate-preserve-layout/README.md +147 -0
  560. package/server/assets/skills/pdf/templates/translate-preserve-layout/cases/goldman-china-two-sessions-cn.html +1660 -0
  561. package/server/assets/skills/pdf/templates/translate-preserve-layout/skeleton.html +96 -0
  562. package/server/assets/skills/pdf/templates/translate-preserve-layout/terminology.template.json +66 -0
  563. package/server/assets/skills/pptx/SKILL.md +285 -0
  564. package/server/assets/skills/pptx/references/design-system.md +424 -0
  565. package/server/assets/skills/pptx/references/editing.md +162 -0
  566. package/server/assets/skills/pptx/references/element-map.md +229 -0
  567. package/server/assets/skills/pptx/references/pitfalls.md +205 -0
  568. package/server/assets/skills/pptx/references/pptxgenjs.md +420 -0
  569. package/server/assets/skills/pptx/references/preview-selection-writeback.md +65 -0
  570. package/server/assets/skills/pptx/references/python-pptx-recipes.md +63 -0
  571. package/server/assets/skills/pptx/references/slide-types.md +413 -0
  572. package/server/assets/skills/pptx/scripts/audit_pptx.py +708 -0
  573. package/server/assets/skills/pptx/scripts/extract_comments.py +468 -0
  574. package/server/assets/skills/pptx/scripts/extract_images.py +226 -0
  575. package/server/assets/skills/pptx/scripts/extract_pptx.py +285 -0
  576. package/server/assets/skills/pptx/scripts/mavis-ppt-map.cjs +280 -0
  577. package/server/assets/skills/pptx/scripts/pdf2png.swift +203 -0
  578. package/server/assets/skills/pptx/scripts/pptx-screenshot.sh +105 -0
  579. package/server/assets/skills/resume-codex/SKILL.md +55 -0
  580. package/server/assets/skills/resume-codex/scripts/session-reader.mjs +445 -0
  581. package/server/assets/skills/skill-creator/SKILL.md +190 -0
  582. package/server/assets/skills/skill-creator/references/anti-patterns.md +149 -0
  583. package/server/assets/skills/skill-creator/references/commands-macos-linux.md +38 -0
  584. package/server/assets/skills/skill-creator/references/commands-windows-powershell.md +48 -0
  585. package/server/assets/skills/skill-creator/references/description-rubric.md +83 -0
  586. package/server/assets/skills/skill-creator/references/skill-template.md +101 -0
  587. package/server/assets/skills/skill-creator/references/when-to-bundle-scripts.md +139 -0
  588. package/server/assets/skills/skill-creator/scripts/lint-skill.js +226 -0
  589. package/server/assets/skills/skill-refiner/SKILL.md +139 -0
  590. package/server/assets/skills/visual-page/SKILL.md +196 -0
  591. package/server/assets/skills/x-link-reader/SKILL.md +110 -0
  592. package/server/assets/skills/xlsx/SKILL.md +501 -0
  593. package/server/assets/skills/xlsx/docs/advanced-reference.md +410 -0
  594. package/server/assets/skills/xlsx/docs/cases/superstore-multiformat/conversion_manifest.example.json +49 -0
  595. package/server/assets/skills/xlsx/docs/cases/superstore-multiformat/superstore_orders_print.html +17 -0
  596. package/server/assets/skills/xlsx/docs/conventions-guide.md +217 -0
  597. package/server/assets/skills/xlsx/docs/create-edit-guide.md +410 -0
  598. package/server/assets/skills/xlsx/docs/pitfalls-index.md +760 -0
  599. package/server/assets/skills/xlsx/docs/raw-xml-escape-hatch.md +201 -0
  600. package/server/assets/skills/xlsx/docs/recalc-guide.md +295 -0
  601. package/server/assets/skills/xlsx/docs/superstore-multiformat-conversion-case.md +413 -0
  602. package/server/assets/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
  603. package/server/assets/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
  604. package/server/assets/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  605. package/server/assets/skills/xlsx/scripts/office/pack.py +159 -0
  606. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  607. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  608. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  609. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  610. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  611. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  612. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  613. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  614. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  615. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  616. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  617. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  618. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  619. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  620. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  621. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  622. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  623. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  624. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  625. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  626. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  627. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  628. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  629. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  630. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  631. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  632. package/server/assets/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  633. package/server/assets/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  634. package/server/assets/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  635. package/server/assets/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  636. package/server/assets/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  637. package/server/assets/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  638. package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  639. package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  640. package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  641. package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  642. package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  643. package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  644. package/server/assets/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  645. package/server/assets/skills/xlsx/scripts/office/soffice.py +191 -0
  646. package/server/assets/skills/xlsx/scripts/office/unpack.py +132 -0
  647. package/server/assets/skills/xlsx/scripts/office/validate.py +117 -0
  648. package/server/assets/skills/xlsx/scripts/office/validators/__init__.py +15 -0
  649. package/server/assets/skills/xlsx/scripts/office/validators/base.py +851 -0
  650. package/server/assets/skills/xlsx/scripts/office/validators/docx.py +446 -0
  651. package/server/assets/skills/xlsx/scripts/office/validators/pptx.py +275 -0
  652. package/server/assets/skills/xlsx/scripts/office/validators/redlining.py +247 -0
  653. package/server/assets/skills/xlsx/scripts/recalc.py +450 -0
  654. package/server/mcode-tools.js +2 -0
  655. package/server/package-info.json +1 -1
  656. package/server/server.js +2 -0
@@ -0,0 +1,328 @@
1
+ # Case: DOC/DOCX legal contract → professional PDF + MD/HTML + round-trip DOCX
2
+
3
+ Use this case when a user asks to convert a Word contract/template into PDF, Markdown, HTML, and back to DOCX, and the PDF must be a professional legal/contract deliverable rather than a mechanical office export.
4
+
5
+ ## Original user intent and acceptance criteria
6
+
7
+ **Representative prompt**
8
+
9
+ > 完成以下 Word 文档双向转换(使用附件合同模板):
10
+ > 1. DOCX → PDF:保持高保真,中文字体正确显示
11
+ > 2. DOCX → Markdown:列表和表格转为 MD 语法
12
+ > 3. DOCX → HTML:保持样式,可嵌入网页
13
+ > 4. Markdown → DOCX(逆向验证):将步骤 2 的 MD 转回 DOCX,评估信息损失
14
+
15
+ **Quality bar**
16
+
17
+ - PDF Chinese text renders correctly with no mojibake/tofu.
18
+ - PDF page layout is professional for a legal contract: A4, formal cover, readable clauses, controlled whitespace, signature table intact.
19
+ - Headers/footers are inspected from the source and either preserved, intentionally reconstructed, or explicitly reported as absent.
20
+ - Tables have borders, stable widths, and do not overflow the page.
21
+ - Hyperlinks are preserved when the source has real hyperlink relationships.
22
+ - PDF text is selectable/searchable, not screenshot-rendered.
23
+ - MD→DOCX reverse output is generated through the local `docx_engine.py render` route or the active docx equivalent; do not use `python-docx` for generation.
24
+ - Reverse DOCX audit passes and the report lists fidelity-loss items.
25
+ - For PDF generation, render editable HTML through `scripts/make.sh render`; do not use `convert_file`/screenshots.
26
+ - Numbered lists use explicit `<ol>/<li>` or literal numbering; do not rely on CSS counters.
27
+ - No decorative emoji/icons or invented ornamental elements.
28
+
29
+ ## Case artifacts
30
+
31
+ Editable artifacts live under:
32
+
33
+ ```text
34
+ templates/reformat-default/cases/pku-contract-roundtrip/
35
+ ├── source.html # professional A4 contract HTML; render this to reproduce the PDF
36
+ ├── source.md # Markdown extraction/normalization exemplar
37
+ └── docx_engine.py # tiny compatibility wrapper for render/audit in environments lacking the historical tool
38
+ ```
39
+
40
+ Do **not** store generated PDFs in the skill. Re-render from `source.html` when needed.
41
+
42
+ ## Route decision: direct DOCX→PDF vs HTML→PDF
43
+
44
+ For ordinary DOCX→PDF conversion, **native DOCX render/export is the default**. Use docx `docx_to_pdf.py` or LibreOffice/soffice export and verify the result. Do not convert DOCX → Markdown/HTML → PDF just to obtain a PDF; that path discards Word pagination, headers/footers, fields, and table geometry.
45
+
46
+ Use the professional HTML→PDF reconstruction in this case only when one of these is true:
47
+
48
+ - the user explicitly asks for a redesigned/professional web-print PDF;
49
+ - the direct DOCX→PDF render is visibly poor (scattered cover, broken signature table, bad CJK font fallback, overflow);
50
+ - the task includes an editable web-embeddable HTML deliverable and the PDF should share that redesigned source.
51
+
52
+ When taking the HTML route, record it as a **recomposition decision** in the report and still keep the direct render as a reference when possible.
53
+
54
+ ## End-to-end workflow
55
+
56
+ ### 0. Preflight
57
+
58
+ ```bash
59
+ SKILL={{DATA_DIR}}/.builtin-skills/pdf
60
+ DOCX_SKILL={{DATA_DIR}}/.builtin-skills/docx
61
+ WORK=/tmp/contract-roundtrip
62
+ mkdir -p "$WORK"
63
+
64
+ bash "$SKILL/scripts/make.sh" check
65
+ bash "$DOCX_SKILL/scripts/setup.sh" # only if env_check is not ready
66
+ export PATH="$HOME/.dotnet:$PATH"
67
+ bash "$DOCX_SKILL/scripts/env_check.sh"
68
+ ```
69
+
70
+ Recovery:
71
+
72
+ - If `env_check.sh` says dotnet is missing immediately after setup, export `PATH="$HOME/.dotnet:$PATH"` and rerun.
73
+ - Never suppress stderr for `soffice`, `pandoc`, render, or verification commands. Redirect to logs if needed.
74
+
75
+ ### 1. Normalize the source Word file
76
+
77
+ Legacy `.doc` should first become `.docx`. Pandoc on `.doc` is unreliable.
78
+
79
+ ```bash
80
+ cp "$INPUT_DOC_OR_DOCX" "$WORK/source_input"
81
+ if [[ "$INPUT_DOC_OR_DOCX" == *.doc && "$INPUT_DOC_OR_DOCX" != *.docx ]]; then
82
+ soffice --headless --convert-to docx --outdir "$WORK" "$INPUT_DOC_OR_DOCX" \
83
+ 2>"$WORK/soffice-docx.log"
84
+ INPUT_DOCX="$WORK/$(basename "${INPUT_DOC_OR_DOCX%.*}").docx"
85
+ else
86
+ INPUT_DOCX="$INPUT_DOC_OR_DOCX"
87
+ fi
88
+ ```
89
+
90
+ ### 1.5. Direct DOCX→PDF render baseline (default preservation route)
91
+
92
+ Create a native DOCX-rendered PDF baseline before rebuilding anything. This is the correct route when the user wants faithful Word-to-PDF preservation because DOCX natively carries page geometry, sections, headers/footers, fields, numbering, and table layout.
93
+
94
+ ```bash
95
+ python3 "$DOCX_SKILL/scripts/docx_to_pdf.py" --input "$INPUT_DOCX" --output "$WORK/direct-render.pdf" 2>"$WORK/docx-to-pdf.log" || soffice --headless --convert-to pdf --outdir "$WORK" "$INPUT_DOCX" 2>"$WORK/soffice-pdf.log"
96
+
97
+ pdfinfo "$WORK/direct-render.pdf" | grep "Page size"
98
+ pdftotext "$WORK/direct-render.pdf" "$WORK/direct-render.txt"
99
+ pdfimages -list "$WORK/direct-render.pdf" > "$WORK/direct-render-images.txt"
100
+ ```
101
+
102
+ If this native baseline is visually professional and satisfies page/text/table/header-footer checks, deliver it as the DOCX→PDF output. Only continue to HTML reconstruction if the baseline fails the professional standard or the user asked for redesign.
103
+
104
+ ### 2. Inspect source structure before choosing the PDF route
105
+
106
+ Use the source inspection to decide whether a mechanical export is good enough. For legal contracts with signature pages, it usually is not.
107
+
108
+ ```bash
109
+ python3 - <<'PY'
110
+ from pathlib import Path
111
+ import zipfile, xml.etree.ElementTree as ET, sys
112
+ p=Path(sys.argv[1])
113
+ ns={'w':'http://schemas.openxmlformats.org/wordprocessingml/2006/main'}
114
+ with zipfile.ZipFile(p) as z:
115
+ root=ET.fromstring(z.read('word/document.xml'))
116
+ paras=root.findall('.//w:p', ns)
117
+ tbls=root.findall('.//w:tbl', ns)
118
+ hyperlinks=root.findall('.//w:hyperlink', ns)
119
+ text=''.join(t.text or '' for t in root.findall('.//w:t', ns))
120
+ print({'paragraphs':len(paras),'tables':len(tbls),'hyperlinks':len(hyperlinks),'chars':len(text)})
121
+ PY "$INPUT_DOCX"
122
+ ```
123
+
124
+ Also inspect the generated Markdown and HTML quickly:
125
+
126
+ ```bash
127
+ pandoc "$INPUT_DOCX" -t markdown+pipe_tables+grid_tables --wrap=none \
128
+ --extract-media="$WORK/media" -o "$WORK/source.md" 2>"$WORK/pandoc-md.log"
129
+ pandoc "$INPUT_DOCX" -s -t html5 --metadata title="技术服务合同" \
130
+ -o "$WORK/source.raw.html" 2>"$WORK/pandoc-html.log"
131
+ ```
132
+
133
+ Look for:
134
+
135
+ - large signature tables with `rowspan`/`colspan`;
136
+ - cover pages represented by many centered paragraphs;
137
+ - empty underlined form fields;
138
+ - comments/tracked changes/headers/footers;
139
+ - real hyperlinks;
140
+ - header/footer content and whether first page differs from later pages.
141
+
142
+ If the contract PDF looks unprofessional after a raw export, **reconstruct the PDF from semantic HTML** using the strategy below.
143
+
144
+ ### 3. Transformation and terminology rules
145
+
146
+ No translation is needed for same-language contract conversion, but terminology must stay stable:
147
+
148
+ | Source term | Keep as | Notes |
149
+ |---|---|---|
150
+ | 委托方(甲方) | 委托方(甲方) | Do not paraphrase as “客户/甲方” only. |
151
+ | 受托方(乙方) | 受托方(乙方) | Preserve party labels. |
152
+ | 技术服务合同 | 技术服务合同 | Main title; no marketing wording. |
153
+ | 签字盖章 | 签字盖章 | Signature/seal section heading. |
154
+ | 北京大学科学研究部监制 | 北京大学科学研究部监制 | Institutional line on cover. |
155
+ | 北京仲裁委员会 | 北京仲裁委员会 | Underline if source underlined. |
156
+
157
+ When adapting to another contract:
158
+
159
+ - Preserve legal clause numbers and party labels exactly.
160
+ - Do not summarize clauses unless the user explicitly asks.
161
+ - Empty fields should become form lines/blank blocks, not removed.
162
+ - Do not add brand decorations, icons, or emoji.
163
+
164
+ ### 4. Asset and layout preservation strategy
165
+
166
+ **PDF is the presentation deliverable.** For legal/contract docs, prioritize a formal contract layout over mechanical fidelity when the raw conversion is ugly.
167
+
168
+ Use an editable HTML source with:
169
+
170
+ - A4 `@page` rule and explicit `--format A4` at render time.
171
+ - Running headers/footers for formal contracts, except where a cover page should remain clean. If the source has institutional header/footer text, preserve it; if absent, use a conservative title/template header and centered page footer, and state this reconstruction in the report.
172
+ - CJK legal-document font cascade, e.g. `"Songti SC", "STSong", "Noto Serif CJK SC", "SimSun", serif`.
173
+ - Formal cover: template note, title, expense/category line, form fields, supervising unit.
174
+ - Clause pages: `h2` clause headings, justified paragraphs, 2em indentation, controlled line-height.
175
+ - Fillable blanks: underlined inline spans or `blank-block` divs.
176
+ - Tables: fixed widths, explicit `colgroup`, borders, controlled font size for signature table.
177
+ - Signature page: rebuild wide merged-cell tables manually instead of trusting raw Pandoc table HTML.
178
+
179
+ Use the case artifact as a starting point:
180
+
181
+ ```bash
182
+ cp "$SKILL/templates/reformat-default/cases/pku-contract-roundtrip/source.html" "$WORK/contract.html"
183
+ # Replace title, parties, clauses, and signature fields from the current source.
184
+ ```
185
+
186
+ **HTML authoring prompt for future agents**
187
+
188
+ ```text
189
+ Rewrite the extracted contract into semantic A4 HTML for a formal Chinese legal contract.
190
+ Keep all legal text, party labels, clause numbers, underlined terms, and blank fields.
191
+ Use Songti/STSong font stack, black/gray only, no icons/emoji.
192
+ Represent numbered lists with explicit ol/li or literal numbering, not CSS counters.
193
+ Represent signature/seal blocks with real HTML tables and borders; avoid overflow.
194
+ Add running headers/footers on non-cover pages; preserve source header/footer text when present, otherwise use conservative document-title header and page footer.
195
+ Do not store or edit the generated PDF; store the editable source HTML.
196
+ ```
197
+
198
+ ### 5. Render PDF through html_to_pdf route
199
+
200
+ ```bash
201
+ bash "$SKILL/scripts/make.sh" render \
202
+ --in "$WORK/contract.html" \
203
+ --out "$OUTPUT_DIR/contract.pdf" \
204
+ --format A4 \
205
+ --wait 1000 2>"$WORK/render.log"
206
+ ```
207
+
208
+ Expected evidence:
209
+
210
+ ```bash
211
+ pdfinfo "$OUTPUT_DIR/contract.pdf" | tee "$OUTPUT_DIR/pdfinfo.txt"
212
+ pdftotext "$OUTPUT_DIR/contract.pdf" "$OUTPUT_DIR/pdf_text.txt"
213
+ pdfimages -list "$OUTPUT_DIR/contract.pdf" | tee "$OUTPUT_DIR/pdfimages.txt"
214
+ ```
215
+
216
+ Pass conditions:
217
+
218
+ - `pdfinfo` page size is A4 (`595.92 x 842.88 pts`, or close equivalent).
219
+ - `pdftotext` extracts key Chinese terms (e.g. title, institution, clause headings, signature heading).
220
+ - `pdfimages -list` does not show full-page screenshot images unless the source truly had images.
221
+ - Visual spot-check of page 1 and signature page shows professional contract layout and no table overflow.
222
+ - Header/footer text appears on non-cover pages when expected, and does not collide with body content or signature tables.
223
+
224
+ For a visual spot-check:
225
+
226
+ ```bash
227
+ pdftoppm -r 150 -png -f 1 -l 1 "$OUTPUT_DIR/contract.pdf" "$WORK/page1"
228
+ # Find signature page from pdftotext or page count, then rasterize it too.
229
+ ```
230
+
231
+ ### 6. Produce Markdown and HTML deliverables
232
+
233
+ Markdown should be honest about what it can and cannot represent.
234
+
235
+ ```bash
236
+ pandoc "$INPUT_DOCX" -t markdown+pipe_tables+grid_tables --wrap=none \
237
+ --extract-media="$OUTPUT_DIR/media" \
238
+ -o "$OUTPUT_DIR/contract.md" 2>"$WORK/pandoc-md.log"
239
+ ```
240
+
241
+ Normalize headings if the source only uses bold paragraphs for article headings. For example:
242
+
243
+ ```text
244
+ **一、技术服务内容、方式和要求:** → ## 一、技术服务内容、方式和要求
245
+ **十一、签字盖章:** → ## 十一、签字盖章
246
+ ```
247
+
248
+ HTML deliverable should be the same professional editable HTML used for PDF:
249
+
250
+ ```bash
251
+ cp "$WORK/contract.html" "$OUTPUT_DIR/contract.html"
252
+ ```
253
+
254
+ ### 7. Reverse Markdown → DOCX verification
255
+
256
+ If the active docx environment provides a native `docx_engine.py`, use it. If not, use the compatibility wrapper stored in this case as a local `render/audit` driver. The wrapper delegates generation to Pandoc and audits the OOXML package; it does **not** use `python-docx` to generate.
257
+
258
+ ```bash
259
+ cp "$SKILL/templates/reformat-default/cases/pku-contract-roundtrip/docx_engine.py" "$WORK/docx_engine.py"
260
+ python3 "$WORK/docx_engine.py" render \
261
+ --input "$OUTPUT_DIR/contract.md" \
262
+ --output "$OUTPUT_DIR/contract_roundtrip.docx"
263
+
264
+ python3 "$WORK/docx_engine.py" audit \
265
+ --input "$OUTPUT_DIR/contract_roundtrip.docx" | tee "$OUTPUT_DIR/roundtrip_audit.txt"
266
+ ```
267
+
268
+ Also run docx validation when available:
269
+
270
+ ```bash
271
+ export PATH="$HOME/.dotnet:$PATH"
272
+ dotnet run --project "$DOCX_SKILL/scripts/dotnet/MiniMaxAIDocx.Cli" -- \
273
+ validate --input "$OUTPUT_DIR/contract_roundtrip.docx" --business \
274
+ | tee "$OUTPUT_DIR/roundtrip_validate.txt"
275
+
276
+ dotnet run --project "$DOCX_SKILL/scripts/dotnet/MiniMaxAIDocx.Cli" -- \
277
+ analyze --input "$OUTPUT_DIR/contract_roundtrip.docx" --json \
278
+ > "$OUTPUT_DIR/roundtrip_analyze.json"
279
+ ```
280
+
281
+ Pass conditions:
282
+
283
+ - Audit says `AUDIT PASS` or native equivalent.
284
+ - Business validation passes; warnings about orphaned comments/relationships may be noted if they do not affect the main document.
285
+ - Analysis shows Heading styles for normalized headings and expected table count.
286
+
287
+ ### 8. Fidelity-loss report
288
+
289
+ Always include a loss report. Suggested table:
290
+
291
+ | Category | Expected loss / change | Severity |
292
+ |---|---|---|
293
+ | Legacy `.doc` normalization | LibreOffice may reinterpret page breaks, spacing, and old binary Word features. | Medium |
294
+ | Direct Word formatting | Markdown cannot preserve exact font size, line spacing, underline offsets, and manual centering. | Medium |
295
+ | Complex merged tables | Markdown grid tables cannot fully express rowspan/colspan semantics; round-trip DOCX may simplify the table graph. | High |
296
+ | Pagination | Markdown does not preserve exact page breaks; PDF is reflowed to A4 HTML. | Medium |
297
+ | Headers/footers | Markdown usually loses them; PDF HTML must preserve/reconstruct them; reverse DOCX may not recover them unless explicitly generated. | Medium/High for legal |
298
+ | Legal content | Clause text, party labels, and key terms should be preserved exactly. | Critical gate |
299
+ | Images/OLE | Must inventory; absent in the PKU contract exemplar. | Depends |
300
+ | Hyperlinks | Preserve only real hyperlink relationships; report if source has none. | Low/Medium |
301
+
302
+ ## Common pitfalls and recovery
303
+
304
+ | Pitfall | Symptom | Recovery |
305
+ |---|---|---|
306
+ | Shipping a raw Pandoc/LibreOffice PDF | Cover text is scattered, tables look amateur, signature page overflows. | Rebuild semantic contract HTML from clauses and signature fields; render through `make.sh render`. |
307
+ | Using screenshots for PDF | `pdfimages` shows page-sized images; text not searchable. | Use Playwright HTML→PDF only; verify with `pdftotext`. |
308
+ | Relying on strings only | Text exists but visual layout is unacceptable. | Rasterize page 1 and signature page with `pdftoppm`; inspect layout. |
309
+ | CSS counters for legal numbering | Copy/paste/search loses numbering; nested list levels break. | Use literal numbering or real `<ol><li>` elements. |
310
+ | Wide signature table overflow | Right columns clip or shrink unreadably. | Use fixed `colgroup`, smaller font, controlled line-height, and split overly wide structures if needed. |
311
+ | Missing or colliding headers/footers | Formal contract pages have no running identity/page footer, or footer overlaps signature table. | Reserve header/footer space in `.page`, keep cover clean, add `.running-header`/`.running-footer`, then raster-check body and signature pages. |
312
+ | CJK font mismatch | Chinese glyphs look like Japanese forms or tofu. | Use Songti/PingFang/Noto CJK font stack; verify visually and with `pdftotext`. |
313
+ | Missing dotnet after setup | `env_check.sh` fails even after installing .NET. | `export PATH="$HOME/.dotnet:$PATH"`; rerun env check. |
314
+ | Claiming hyperlink preservation when none exist | User expects clickable links, but source had only underlined text. | Inspect OOXML hyperlink relationships; report “source has no real hyperlinks.” |
315
+
316
+ ## Final reusable workflow checklist
317
+
318
+ 1. Normalize `.doc` → `.docx` with `soffice`.
319
+ 2. Inventory paragraphs, tables, hyperlinks, and risky legal-layout features.
320
+ 3. Generate Markdown with Pandoc grid/pipe tables; normalize headings.
321
+ 4. Generate a native DOCX→PDF baseline and prefer it when it is faithful/professional.
322
+ 5. Only if needed, generate professional editable HTML, using the case `source.html` as a legal-contract template.
323
+ 6. Add/preserve headers and footers on non-cover pages, reserving print-space so they do not collide with body content.
324
+ 7. Render redesigned PDF via `bash pdf/scripts/make.sh render --format A4` only when using the HTML route.
325
+ 8. Verify `pdfinfo`, `pdftotext`, `pdfimages`, and visual previews of cover/body/signature pages, including headers/footers.
326
+ 9. Reverse Markdown → DOCX through `docx_engine.py render`; audit and validate.
327
+ 10. Deliver PDF, MD, HTML, round-trip DOCX, and a fidelity-loss report that states whether PDF came from direct render or HTML recomposition.
328
+ 11. If the user says the PDF is not professional, do not defend raw conversion. Reconstruct the contract layout semantically and re-render.
@@ -0,0 +1,346 @@
1
+ # Case: EML research report → Chinese layout-preserving PDF
2
+
3
+ Use this reference after `docs/pitfalls-index.md` §P5 matches a prompt like
4
+ "Translate this email report into Chinese and save as PDF; keep content and
5
+ charts/icons unchanged." It records a Goldman Sachs macro research email run as
6
+ a reusable production case. The prompt below is optimized from the successful
7
+ run: it separates glossary, hard preservation rules, output schema, and QA flags
8
+ so the agent can reuse it without ad-hoc prompt writing.
9
+
10
+ ## What already existed
11
+
12
+ Before this case, pdf already had:
13
+
14
+ - `docs/pitfalls-index.md` §P5 — canonical EML/PDF translation-preserve-layout trace.
15
+ - `templates/translate-preserve-layout/skeleton.html` — generic translated report skeleton.
16
+ - `templates/translate-preserve-layout/README.md` — m09 email translation pitfalls.
17
+
18
+ This case adds a concrete EML trace: MIME asset extraction, cid replacement,
19
+ Doctype-safe segment extraction, an optimized reusable LLM prompt, in-place HTML
20
+ mutation, A4 render, image/link verification, and a filled HTML exemplar.
21
+ Regenerate PDFs from the HTML when evaluating; do not store the rendered PDF in
22
+ the case.
23
+
24
+ ## Files in this case
25
+
26
+ - `templates/translate-preserve-layout/cases/goldman-china-two-sessions-cn.html`
27
+ — filled Chinese HTML from the successful run. It preserves the source email's
28
+ table layout, Goldman Sachs logo, exhibit images, and hyperlinks.
29
+
30
+ ## Trigger and boundary
31
+
32
+ Use this case when:
33
+
34
+ - Input is `.eml` with a formal research/newsletter report in `text/html`.
35
+ - User asks to translate the report, preserve layout/images/icons, and output PDF.
36
+ - Inline assets are referenced via `cid:` and charts are already raster/SVG images.
37
+ - Target language is Chinese or another CJK language where line-height/font
38
+ cascade must be controlled.
39
+
40
+ Do not use this case when:
41
+
42
+ - The email only contains a PDF/DOCX attachment to translate (route to the PDF or
43
+ DOCX read/translate path first).
44
+ - The user asks for a summary instead of a faithful translated deliverable.
45
+ - The source is scanned/image-only content with no text layer; use vision/OCR per
46
+ page before translation.
47
+
48
+ ## Successful trace: Goldman Sachs "Two Sessions" email
49
+
50
+ User request:
51
+
52
+ ```text
53
+ 将这个email里的报告翻译成中文并保存为pdf,内容和图标都要保持不变。
54
+ ```
55
+
56
+ Source signals:
57
+
58
+ - Subject: `China: Local "Two Sessions" point to a lower national growth target this year than last year`.
59
+ - MIME parts: one `text/html` part (~106 KB), five inline PNG parts, plus one
60
+ hidden remote tracking pixel.
61
+ - Visible report assets after rendering: Goldman Sachs logo + 4 exhibit charts.
62
+ `pdfimages` lists 6 image rows because the transparent logo also creates an
63
+ `smask` row.
64
+ - Source HTML rendered cleanly to A4 via Chromium: 7 pages, A4, image rows present.
65
+ - Final Chinese output: 6 pages, A4, ~907 KB, 25 URI link annotations.
66
+
67
+ ## Step-by-step workflow
68
+
69
+ ### 1. Preflight and source parsing
70
+
71
+ ```bash
72
+ bash <SKILL>/scripts/make.sh check 2><TMP>/check.log
73
+ ```
74
+
75
+ Parse the EML with Python's `email` package and preserve every inline image as a
76
+ local file. Replace `cid:<content-id>` references with the exact local filename;
77
+ do not re-encode or run Pillow on the images.
78
+
79
+ ```python
80
+ from email import policy
81
+ from email.parser import BytesParser
82
+ from pathlib import Path
83
+ import json
84
+
85
+ src = Path("<INPUT.eml>")
86
+ out = Path("<TMP>/email")
87
+ out.mkdir(parents=True, exist_ok=True)
88
+ msg = BytesParser(policy=policy.default).parsebytes(src.read_bytes())
89
+ html = None
90
+ assets = []
91
+ for part in msg.walk():
92
+ if part.is_multipart():
93
+ continue
94
+ payload = part.get_payload(decode=True) or b""
95
+ ctype = part.get_content_type()
96
+ if ctype == "text/html":
97
+ html = payload.decode(part.get_content_charset() or "utf-8", errors="replace")
98
+ elif ctype.startswith("image/"):
99
+ cid = (part.get("content-id") or "").strip("<>")
100
+ fn = part.get_filename() or f"{cid}.{ctype.split('/')[-1]}"
101
+ (out / fn).write_bytes(payload)
102
+ assets.append({"cid": cid, "filename": fn, "ctype": ctype, "bytes": len(payload)})
103
+ if html is None:
104
+ raise SystemExit("no text/html part found")
105
+ for a in assets:
106
+ html = html.replace(f"cid:{a['cid']}", a["filename"]).replace(f"cid%3A{a['cid']}", a["filename"])
107
+ (out / "source.html").write_text(html, encoding="utf-8")
108
+ (out / "assets.json").write_text(json.dumps(assets, ensure_ascii=False, indent=2), encoding="utf-8")
109
+ ```
110
+
111
+ Baseline-render source HTML to establish page/image behavior:
112
+
113
+ ```bash
114
+ bash <SKILL>/scripts/make.sh render \
115
+ --in <TMP>/email/source.html \
116
+ --out <TMP>/email/source_render.pdf \
117
+ --format A4 --wait 15000 \
118
+ 2><TMP>/render-source.log
119
+ pdfinfo <TMP>/email/source_render.pdf | grep -E "Pages|Page size"
120
+ pdfimages -list <TMP>/email/source_render.pdf | wc -l
121
+ ```
122
+
123
+ ### 2. Extract stable translation units
124
+
125
+ Extract visible text nodes from the HTML. Skip `script/style/noscript/head`,
126
+ conditional comments, build artifacts, bare bullets and punctuation, and hidden
127
+ tracking boilerplate. Keep anchor tags in place; translate only their text node
128
+ content so the `href` target survives unchanged.
129
+
130
+ Important: BeautifulSoup can expose the doctype as a text-like node. Exclude
131
+ `bs4.element.Doctype`, otherwise the LLM output IDs shift by one and every
132
+ translation is applied to the wrong source node.
133
+
134
+ ```python
135
+ from bs4 import BeautifulSoup, Doctype
136
+ from pathlib import Path
137
+ import json
138
+
139
+ soup = BeautifulSoup(Path("<TMP>/email/source.html").read_text(encoding="utf-8"), "html.parser")
140
+ skip_exact = {"|", "●", ":", ").", ",", "content", "Company Takeover Disclosure", "END OF DOCUMENT"}
141
+ segments = []
142
+ for s in soup.find_all(string=True):
143
+ if isinstance(s, Doctype):
144
+ continue
145
+ if not s.parent or s.parent.name in ("script", "style", "noscript", "head"):
146
+ continue
147
+ txt = " ".join(str(s).split())
148
+ if not txt or txt in skip_exact:
149
+ continue
150
+ if txt.startswith("[if") or "jcr_root" in txt or txt.startswith("// END") or txt.startswith("TODO:"):
151
+ continue
152
+ segments.append({"id": len(segments), "text": txt})
153
+ Path("<TMP>/email/translate_units.json").write_text(
154
+ json.dumps(segments, ensure_ascii=False, indent=2), encoding="utf-8"
155
+ )
156
+ ```
157
+
158
+ ### 3. Optimized reusable translation prompt
159
+
160
+ Call an LLM for translation; do not hand-translate long financial/policy reports.
161
+ Use this optimized prompt instead of the rough one-off prompt from the original
162
+ run. It is designed to prevent terminology drift, ID mismatch, accidental link
163
+ translation, and prose-only preservation failures.
164
+
165
+ #### System prompt
166
+
167
+ ```text
168
+ 你是金融/宏观政策研究报告的专业英译中译者,任务是把 HTML/EML 中抽取出的可见文本节点翻译成简体中文,并让译文可直接放回原 HTML。
169
+
170
+ 硬性规则:
171
+ 1. 只输出合法 JSON,不要 Markdown、代码块、解释、前后缀文本。
172
+ 2. 输入是 JSON 数组,每项有 id 和 text;输出必须是同长度 JSON 数组,每项只包含 {"id": 原id, "zh": "译文"},顺序与输入一致,不得合并、拆分、遗漏或新增项目。
173
+ 3. 只翻译自然语言;保留所有数字、年份、日期、时间、货币符号、百分比、区间、括号中的缩写、邮箱、电话、URL、股票/基金代码、HTML实体和占位符。
174
+ 4. 人名保留英文;无官方中文译名的机构名保留英文。Goldman Sachs、Wind 保留英文。
175
+ 5. 链接锚文本可翻译,但不得改写或臆造 URL;如果 text 本身是邮箱/URL/电话,只原样返回。
176
+ 6. 不要解释图表,不要补充原文没有的信息,不要重组章节,不要把短锚文本扩写成长句。
177
+ 7. 中文使用专业卖方研究语气:准确、克制、书面;避免口语化和宣传腔。
178
+ 8. 标点用中文正文标点,但保留数值表达中的半角符号(如 4.5-5.0%、RMB4.6tn、1pp)。
179
+
180
+ 固定术语表(必须一致):
181
+ - Two Sessions = 两会
182
+ - local Two Sessions = 地方两会
183
+ - national Two Sessions = 全国两会
184
+ - GDP growth target = GDP增长目标
185
+ - real GDP growth = 实际GDP增长
186
+ - CPI inflation target = CPI通胀目标
187
+ - Central Economic Work Conference (CEWC) = 中央经济工作会议(CEWC)
188
+ - Government Work Report = 政府工作报告
189
+ - local government special bond (LGSB) = 地方政府专项债(LGSB)
190
+ - central government special bond (CGSB) = 中央政府特别债(CGSB)
191
+ - Augmented Fiscal Deficit (AFD) = 广义财政赤字(AFD)
192
+ - 15th Five-Year Plan (FYP) = “十五五”规划
193
+ - 4th Plenum = 四中全会
194
+ - Pledged Supplementary Lending (PSL) = 抵押补充贷款(PSL)
195
+ - fiscal deficit = 财政赤字
196
+ - effective on-budget fiscal deficit = 有效预算内财政赤字
197
+ - surveyed unemployment rate = 调查失业率
198
+ - new urban jobs = 城镇新增就业
199
+
200
+ 质量自检后再输出:
201
+ - id 是否逐一对应;
202
+ - 术语是否完全一致;
203
+ - 数字/百分比/货币/缩写是否未被改动;
204
+ - 是否没有 Markdown 代码围栏。
205
+ ```
206
+
207
+ #### User prompt template
208
+
209
+ ```text
210
+ 将下面 JSON 数组逐项翻译为简体中文。严格遵守 system prompt 的 JSON 输出格式。
211
+
212
+ 领域提示:这是一封卖方宏观经济研究邮件,主题为中国地方/全国“两会”、GDP增长目标、财政预算、通胀、就业和“十五五”规划。译文将被放回原 HTML 并渲染成 PDF,所以每个 id 的文本必须保持独立,不要跨 id 合并句子。
213
+
214
+ 输入 JSON:
215
+ <PASTE translate_units.json HERE>
216
+ ```
217
+
218
+ #### Post-LLM validation
219
+
220
+ ```python
221
+ import json
222
+ from pathlib import Path
223
+ src = json.loads(Path("<TMP>/email/translate_units.json").read_text(encoding="utf-8"))
224
+ out = json.loads(Path("<TMP>/email/translations.json").read_text(encoding="utf-8"))
225
+ assert len(src) == len(out)
226
+ assert [x["id"] for x in src] == [x["id"] for x in out]
227
+ for s, t in zip(src, out):
228
+ for token in ("%", "RMB", "GDP", "AFD", "LGSB", "CGSB", "PSL"):
229
+ if token in s["text"]:
230
+ assert token in t["zh"], (token, s, t)
231
+ ```
232
+
233
+ If the model returns fenced JSON, strip only the fence and re-parse. If IDs or
234
+ counts do not match, rerun translation with the validation error; do not guess a
235
+ mapping manually.
236
+
237
+ ### 4. Mutate original HTML in place
238
+
239
+ Apply translations back to the original text nodes by ID. Preserve leading and
240
+ trailing whitespace so inline links remain readable. Then append a CJK-safe print
241
+ style block rather than rebuilding the whole report.
242
+
243
+ Append this style for the Goldman-style email layout:
244
+
245
+ ```css
246
+ @page { size: A4 portrait; margin: 12mm 10mm; }
247
+ * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
248
+ body, table, td, p, span, font, a, b {
249
+ font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB",
250
+ "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif !important;
251
+ }
252
+ p, td.copybody, .copybody, font { line-height: 1.6 !important; }
253
+ img { max-width: 100% !important; height: auto !important; }
254
+ img[src^="https://publishing.gs.com/CI0"] { display: none !important; width: 1px !important; height: 1px !important; }
255
+ figure, img { page-break-inside: avoid; }
256
+ a { color: #446EA6; }
257
+ @media screen {
258
+ html { background:#d0d0d0; }
259
+ body { margin:0; padding:20px 0; }
260
+ #templateContainer { background:#fff; box-shadow:0 4px 24px rgba(0,0,0,.18); }
261
+ }
262
+ ```
263
+
264
+ Do **not** set `page-break-inside: avoid` on every `table` or `tr` in table-heavy
265
+ email HTML. That caused unnecessary blank pages in this run. Protect images and
266
+ figures instead.
267
+
268
+ ### 5. Render
269
+
270
+ ```bash
271
+ bash <SKILL>/scripts/make.sh render \
272
+ --in <TMP>/email/translated.html \
273
+ --out <OUTPUT_PATH> \
274
+ --format A4 --wait 15000 \
275
+ 2><TMP>/render-translated.log
276
+ ```
277
+
278
+ The final case HTML is stored at:
279
+
280
+ ```text
281
+ <SKILL>/templates/translate-preserve-layout/cases/goldman-china-two-sessions-cn.html
282
+ ```
283
+
284
+ ### 6. Verification gates
285
+
286
+ ```bash
287
+ pdfinfo <OUTPUT_PATH> | grep -E "Pages|Page size"
288
+ pdfimages -list <OUTPUT_PATH>
289
+ pdftotext -layout <OUTPUT_PATH> - | python3 -c "import sys; print(sys.stdin.read()[:2500])"
290
+ python3 - <<'PY'
291
+ from pypdf import PdfReader
292
+ r = PdfReader("<OUTPUT_PATH>")
293
+ links = 0
294
+ for page in r.pages:
295
+ for a in page.get('/Annots') or []:
296
+ obj = a.get_object(); aa = obj.get('/A')
297
+ if aa and aa.get('/URI'):
298
+ links += 1
299
+ print('links', links)
300
+ PY
301
+ ```
302
+
303
+ Expected Goldman evidence:
304
+
305
+ ```text
306
+ Pages: 6
307
+ Page size: 595.92 x 842.88 pts (A4)
308
+ PDF size: ~907 KB
309
+ pdfimages rows: 8 total output lines; visible semantic images = logo + 4 exhibits
310
+ links: 25 URI annotations
311
+ Text extract: readable Chinese; includes 两会, GDP增长目标, 地方政府专项债, 广义财政赤字, 抵押补充贷款
312
+ ```
313
+
314
+ Image count notes:
315
+
316
+ - `pdfimages -list | wc -l` includes the two header lines.
317
+ - Transparent PNG logos may create both `image` and `smask` rows.
318
+ - Hidden 1×1 tracking pixels should not be counted as semantic report assets;
319
+ hiding them is acceptable if the visible report is unchanged.
320
+
321
+ ### 7. Final polish checks
322
+
323
+ - Terminology: `Two Sessions → 两会`, `GDP growth target → GDP增长目标`,
324
+ `AFD → 广义财政赤字(AFD)`, `PSL → 抵押补充贷款(PSL)`.
325
+ - Dates and punctuation: convert obvious English dates in Chinese prose where
326
+ useful (`3 February` → `2月3日`, `4 March` → `3月4日`).
327
+ - No tofu boxes or mojibake in `pdftotext` output.
328
+ - No huge blank pages introduced by over-broad `break-inside: avoid` rules.
329
+
330
+ ## Reuse pattern for another EML report
331
+
332
+ 1. Parse MIME, save inline assets, replace `cid:` with local filenames.
333
+ 2. Baseline-render source HTML to measure pages/images.
334
+ 3. Extract visible text nodes with stable IDs; exclude `Doctype` and artifacts.
335
+ 4. Translate via LLM with the optimized prompt and frozen domain glossary.
336
+ 5. Validate JSON length/IDs and preservation tokens before HTML mutation.
337
+ 6. Mutate original HTML in place; preserve links and images; append CJK print CSS.
338
+ 7. Render with `--format A4 --wait 15000`.
339
+ 8. Verify A4, image presence, text readability, terminology, and URI annotations.
340
+
341
+ ## Final response shape
342
+
343
+ ```text
344
+ 完成,已翻译并生成 PDF:<OUTPUT_PATH>
345
+ 验证:A4;<N>页;图表/图片已保留;链接注释 <N> 个;中文文本可提取且关键术语已检查。
346
+ ```