myagent-ai 1.0.0

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 (486) hide show
  1. package/Dockerfile +30 -0
  2. package/README.md +333 -0
  3. package/agents/__init__.py +6 -0
  4. package/agents/__pycache__/main_agent.cpython-312.pyc +0 -0
  5. package/agents/base.py +115 -0
  6. package/agents/main_agent.py +695 -0
  7. package/agents/memory_agent.py +313 -0
  8. package/agents/tool_agent.py +248 -0
  9. package/chatbot/__init__.py +5 -0
  10. package/chatbot/base.py +124 -0
  11. package/chatbot/discord_bot.py +146 -0
  12. package/chatbot/feishu_bot.py +548 -0
  13. package/chatbot/manager.py +164 -0
  14. package/chatbot/qq_bot.py +189 -0
  15. package/chatbot/telegram_bot.py +167 -0
  16. package/chatbot/wechat_bot.py +558 -0
  17. package/communication/__init__.py +66 -0
  18. package/communication/channel.py +576 -0
  19. package/communication/crypto.py +347 -0
  20. package/communication/manager.py +397 -0
  21. package/communication/peer.py +156 -0
  22. package/config.py +464 -0
  23. package/core/__init__.py +10 -0
  24. package/core/config_broadcast.py +276 -0
  25. package/core/llm.py +878 -0
  26. package/core/logger.py +241 -0
  27. package/core/task_queue.py +362 -0
  28. package/core/utils.py +184 -0
  29. package/executor/__init__.py +4 -0
  30. package/executor/__pycache__/engine.cpython-312.pyc +0 -0
  31. package/executor/engine.py +1215 -0
  32. package/groups/__init__.py +15 -0
  33. package/groups/manager.py +724 -0
  34. package/knowledge/__init__.py +4 -0
  35. package/knowledge/rag.py +444 -0
  36. package/main.py +801 -0
  37. package/memory/__init__.py +4 -0
  38. package/memory/manager.py +840 -0
  39. package/organization/__init__.py +4 -0
  40. package/organization/manager.py +350 -0
  41. package/package.json +58 -0
  42. package/requirements.txt +59 -0
  43. package/setup.py +40 -0
  44. package/skills/ASR/LICENSE.txt +21 -0
  45. package/skills/ASR/SKILL.md +580 -0
  46. package/skills/ASR/scripts/asr.ts +27 -0
  47. package/skills/LLM/LICENSE.txt +21 -0
  48. package/skills/LLM/SKILL.md +856 -0
  49. package/skills/LLM/scripts/chat.ts +32 -0
  50. package/skills/TTS/LICENSE.txt +21 -0
  51. package/skills/TTS/SKILL.md +735 -0
  52. package/skills/TTS/tts.ts +25 -0
  53. package/skills/VLM/LICENSE.txt +21 -0
  54. package/skills/VLM/SKILL.md +588 -0
  55. package/skills/VLM/scripts/vlm.ts +57 -0
  56. package/skills/__init__.py +5 -0
  57. package/skills/agent-browser/SKILL.md +328 -0
  58. package/skills/ai-news-collectors/SKILL.md +157 -0
  59. package/skills/ai-news-collectors/_meta.json +6 -0
  60. package/skills/ai-news-collectors/references/sources.md +128 -0
  61. package/skills/aminer-open-academic/SKILL.md +312 -0
  62. package/skills/aminer-open-academic/_meta.json +6 -0
  63. package/skills/aminer-open-academic/evals/evals.json +46 -0
  64. package/skills/aminer-open-academic/references/api-catalog.md +1032 -0
  65. package/skills/aminer-open-academic/scripts/__pycache__/aminer_client.cpython-312.pyc +0 -0
  66. package/skills/aminer-open-academic/scripts/aminer_client.py +875 -0
  67. package/skills/auto-target-tracker/SKILL.md +317 -0
  68. package/skills/base.py +147 -0
  69. package/skills/blog-writer/2024-02-17-radical-transparency-sales.md +35 -0
  70. package/skills/blog-writer/2024-02-17-raycast-spotlight-superpowers.md +33 -0
  71. package/skills/blog-writer/2024-02-17-short-form-content-marketing.md +47 -0
  72. package/skills/blog-writer/2024-02-17-typing-speed-benefits.md +33 -0
  73. package/skills/blog-writer/2024-03-14-effective-ai-prompts.md +55 -0
  74. package/skills/blog-writer/2024-11-08-ai-revolutionizing-entry-level-sales.md +43 -0
  75. package/skills/blog-writer/2025-11-12-why-ai-art-is-useless.md +49 -0
  76. package/skills/blog-writer/README.md +2 -0
  77. package/skills/blog-writer/SKILL.md +158 -0
  78. package/skills/blog-writer/__pycache__/manage_examples.cpython-312.pyc +0 -0
  79. package/skills/blog-writer/_meta.json +6 -0
  80. package/skills/blog-writer/manage_examples.py +90 -0
  81. package/skills/blog-writer/style-guide.md +160 -0
  82. package/skills/browser_skill.py +146 -0
  83. package/skills/coding-agent/SKILL.md +120 -0
  84. package/skills/coding-agent/_meta.json +6 -0
  85. package/skills/coding-agent/criteria.md +48 -0
  86. package/skills/coding-agent/execution.md +42 -0
  87. package/skills/coding-agent/memory-template.md +38 -0
  88. package/skills/coding-agent/planning.md +31 -0
  89. package/skills/coding-agent/state.md +60 -0
  90. package/skills/coding-agent/verification.md +39 -0
  91. package/skills/content-strategy/SKILL.md +181 -0
  92. package/skills/content-strategy/_meta.json +6 -0
  93. package/skills/contentanalysis/ExtractWisdom/SKILL.md +229 -0
  94. package/skills/contentanalysis/ExtractWisdom/Workflows/Extract.md +60 -0
  95. package/skills/contentanalysis/SKILL.md +14 -0
  96. package/skills/docx/CHANGELOG.md +85 -0
  97. package/skills/docx/LICENSE.txt +30 -0
  98. package/skills/docx/SKILL.md +455 -0
  99. package/skills/docx/docx-js.md +681 -0
  100. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  101. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  102. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  103. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  104. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  105. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  106. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  107. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  108. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  109. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  110. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  111. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  112. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  113. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  114. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  115. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  116. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  117. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  118. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  119. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  120. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  121. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  122. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  123. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  124. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  125. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  126. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  127. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  128. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  129. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  130. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  131. package/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  132. package/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  133. package/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  134. package/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  135. package/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  136. package/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  137. package/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  138. package/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  139. package/skills/docx/ooxml/scripts/__pycache__/pack.cpython-312.pyc +0 -0
  140. package/skills/docx/ooxml/scripts/__pycache__/unpack.cpython-312.pyc +0 -0
  141. package/skills/docx/ooxml/scripts/__pycache__/validate.cpython-312.pyc +0 -0
  142. package/skills/docx/ooxml/scripts/pack.py +159 -0
  143. package/skills/docx/ooxml/scripts/unpack.py +29 -0
  144. package/skills/docx/ooxml/scripts/validate.py +69 -0
  145. package/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  146. package/skills/docx/ooxml/scripts/validation/__pycache__/__init__.cpython-312.pyc +0 -0
  147. package/skills/docx/ooxml/scripts/validation/__pycache__/base.cpython-312.pyc +0 -0
  148. package/skills/docx/ooxml/scripts/validation/__pycache__/docx.cpython-312.pyc +0 -0
  149. package/skills/docx/ooxml/scripts/validation/__pycache__/pptx.cpython-312.pyc +0 -0
  150. package/skills/docx/ooxml/scripts/validation/__pycache__/redlining.cpython-312.pyc +0 -0
  151. package/skills/docx/ooxml/scripts/validation/base.py +951 -0
  152. package/skills/docx/ooxml/scripts/validation/docx.py +274 -0
  153. package/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  154. package/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  155. package/skills/docx/ooxml.md +615 -0
  156. package/skills/docx/scripts/__init__.py +1 -0
  157. package/skills/docx/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  158. package/skills/docx/scripts/__pycache__/add_toc_placeholders.cpython-312.pyc +0 -0
  159. package/skills/docx/scripts/__pycache__/document.cpython-312.pyc +0 -0
  160. package/skills/docx/scripts/__pycache__/utilities.cpython-312.pyc +0 -0
  161. package/skills/docx/scripts/add_toc_placeholders.py +220 -0
  162. package/skills/docx/scripts/document.py +1302 -0
  163. package/skills/docx/scripts/templates/comments.xml +3 -0
  164. package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  165. package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  166. package/skills/docx/scripts/templates/commentsIds.xml +3 -0
  167. package/skills/docx/scripts/templates/people.xml +3 -0
  168. package/skills/docx/scripts/utilities.py +374 -0
  169. package/skills/dream-interpreter/SKILL.md +88 -0
  170. package/skills/dream-interpreter/assets/example_asset.txt +24 -0
  171. package/skills/dream-interpreter/references/api_reference.md +34 -0
  172. package/skills/dream-interpreter/references/interpretation-guide.md +83 -0
  173. package/skills/dream-interpreter/references/output-schema.md +65 -0
  174. package/skills/dream-interpreter/references/questioning-strategy.md +62 -0
  175. package/skills/dream-interpreter/references/visual-mapping.md +81 -0
  176. package/skills/dream-interpreter/scripts/__pycache__/example.cpython-312.pyc +0 -0
  177. package/skills/dream-interpreter/scripts/example.py +19 -0
  178. package/skills/dream-interpreter/skill.json +7 -0
  179. package/skills/file_skill.py +246 -0
  180. package/skills/finance/Finance_API_Doc.md +445 -0
  181. package/skills/finance/SKILL.md +53 -0
  182. package/skills/fullstack-dev/SKILL.md +205 -0
  183. package/skills/get-fortune-analysis/SKILL.md +370 -0
  184. package/skills/get-fortune-analysis/lunar_python.py +91 -0
  185. package/skills/gift-evaluator/SKILL.md +83 -0
  186. package/skills/gift-evaluator/__pycache__/html_tools.cpython-312.pyc +0 -0
  187. package/skills/gift-evaluator/html_tools.py +268 -0
  188. package/skills/image-edit/LICENSE.txt +21 -0
  189. package/skills/image-edit/SKILL.md +896 -0
  190. package/skills/image-edit/scripts/image-edit.ts +36 -0
  191. package/skills/image-generation/LICENSE.txt +21 -0
  192. package/skills/image-generation/SKILL.md +583 -0
  193. package/skills/image-generation/scripts/image-generation.ts +28 -0
  194. package/skills/image-understand/LICENSE.txt +21 -0
  195. package/skills/image-understand/SKILL.md +855 -0
  196. package/skills/image-understand/scripts/image-understand.ts +41 -0
  197. package/skills/interview-designer/README.md +70 -0
  198. package/skills/interview-designer/SKILL.md +53 -0
  199. package/skills/interview-designer/_meta.json +6 -0
  200. package/skills/interview-designer/references/design_rationale.md +43 -0
  201. package/skills/interview-designer/templates/interview_guide_template.md +62 -0
  202. package/skills/market-research-reports/SKILL.md +901 -0
  203. package/skills/market-research-reports/assets/FORMATTING_GUIDE.md +428 -0
  204. package/skills/market-research-reports/assets/market_report_template.tex +1380 -0
  205. package/skills/market-research-reports/assets/market_research.sty +564 -0
  206. package/skills/market-research-reports/references/data_analysis_patterns.md +548 -0
  207. package/skills/market-research-reports/references/report_structure_guide.md +999 -0
  208. package/skills/market-research-reports/references/visual_generation_guide.md +1077 -0
  209. package/skills/market-research-reports/scripts/__pycache__/generate_market_visuals.cpython-312.pyc +0 -0
  210. package/skills/market-research-reports/scripts/generate_market_visuals.py +529 -0
  211. package/skills/marketing-mode/README.md +49 -0
  212. package/skills/marketing-mode/SKILL.md +693 -0
  213. package/skills/marketing-mode/_meta.json +6 -0
  214. package/skills/marketing-mode/mode-prompt.md +39 -0
  215. package/skills/marketing-mode/skill.json +51 -0
  216. package/skills/mindfulness-meditation/SKILL.md +65 -0
  217. package/skills/mindfulness-meditation/_meta.json +6 -0
  218. package/skills/multi-search-engine/CHANGELOG.md +15 -0
  219. package/skills/multi-search-engine/CHANNELLOG.md +48 -0
  220. package/skills/multi-search-engine/SKILL.md +78 -0
  221. package/skills/multi-search-engine/_meta.json +6 -0
  222. package/skills/multi-search-engine/config.json +14 -0
  223. package/skills/multi-search-engine/metadata.json +7 -0
  224. package/skills/multi-search-engine/references/international-search.md +651 -0
  225. package/skills/pdf/LICENSE.txt +30 -0
  226. package/skills/pdf/SKILL.md +1534 -0
  227. package/skills/pdf/forms.md +205 -0
  228. package/skills/pdf/reference.md +765 -0
  229. package/skills/pdf/scripts/__pycache__/add_zai_metadata.cpython-312.pyc +0 -0
  230. package/skills/pdf/scripts/__pycache__/check_bounding_boxes.cpython-312.pyc +0 -0
  231. package/skills/pdf/scripts/__pycache__/check_bounding_boxes_test.cpython-312.pyc +0 -0
  232. package/skills/pdf/scripts/__pycache__/check_fillable_fields.cpython-312.pyc +0 -0
  233. package/skills/pdf/scripts/__pycache__/convert_pdf_to_images.cpython-312.pyc +0 -0
  234. package/skills/pdf/scripts/__pycache__/create_validation_image.cpython-312.pyc +0 -0
  235. package/skills/pdf/scripts/__pycache__/extract_form_field_info.cpython-312.pyc +0 -0
  236. package/skills/pdf/scripts/__pycache__/fill_fillable_fields.cpython-312.pyc +0 -0
  237. package/skills/pdf/scripts/__pycache__/fill_pdf_form_with_annotations.cpython-312.pyc +0 -0
  238. package/skills/pdf/scripts/__pycache__/sanitize_code.cpython-312.pyc +0 -0
  239. package/skills/pdf/scripts/add_zai_metadata.py +172 -0
  240. package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  241. package/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  242. package/skills/pdf/scripts/check_fillable_fields.py +12 -0
  243. package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  244. package/skills/pdf/scripts/create_validation_image.py +41 -0
  245. package/skills/pdf/scripts/extract_form_field_info.py +152 -0
  246. package/skills/pdf/scripts/fill_fillable_fields.py +114 -0
  247. package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  248. package/skills/pdf/scripts/sanitize_code.py +110 -0
  249. package/skills/podcast-generate/LICENSE.txt +21 -0
  250. package/skills/podcast-generate/SKILL.md +198 -0
  251. package/skills/podcast-generate/generate.ts +661 -0
  252. package/skills/podcast-generate/package.json +30 -0
  253. package/skills/podcast-generate/readme.md +177 -0
  254. package/skills/podcast-generate/test_data/segments.jsonl +3 -0
  255. package/skills/podcast-generate/tsconfig.json +26 -0
  256. package/skills/pptx/LICENSE.txt +30 -0
  257. package/skills/pptx/SKILL.md +507 -0
  258. package/skills/pptx/html2pptx.md +625 -0
  259. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  260. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  261. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  262. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  263. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  264. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  265. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  266. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  267. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  268. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  269. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  270. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  271. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  272. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  273. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  274. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  275. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  276. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  277. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  278. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  279. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  280. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  281. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  282. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  283. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  284. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  285. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  286. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  287. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  288. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  289. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  290. package/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  291. package/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  292. package/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  293. package/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  294. package/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  295. package/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  296. package/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  297. package/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  298. package/skills/pptx/ooxml/scripts/__pycache__/pack.cpython-312.pyc +0 -0
  299. package/skills/pptx/ooxml/scripts/__pycache__/unpack.cpython-312.pyc +0 -0
  300. package/skills/pptx/ooxml/scripts/__pycache__/validate.cpython-312.pyc +0 -0
  301. package/skills/pptx/ooxml/scripts/pack.py +159 -0
  302. package/skills/pptx/ooxml/scripts/unpack.py +29 -0
  303. package/skills/pptx/ooxml/scripts/validate.py +69 -0
  304. package/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  305. package/skills/pptx/ooxml/scripts/validation/__pycache__/__init__.cpython-312.pyc +0 -0
  306. package/skills/pptx/ooxml/scripts/validation/__pycache__/base.cpython-312.pyc +0 -0
  307. package/skills/pptx/ooxml/scripts/validation/__pycache__/docx.cpython-312.pyc +0 -0
  308. package/skills/pptx/ooxml/scripts/validation/__pycache__/pptx.cpython-312.pyc +0 -0
  309. package/skills/pptx/ooxml/scripts/validation/__pycache__/redlining.cpython-312.pyc +0 -0
  310. package/skills/pptx/ooxml/scripts/validation/base.py +951 -0
  311. package/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  312. package/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  313. package/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  314. package/skills/pptx/ooxml.md +427 -0
  315. package/skills/pptx/scripts/__pycache__/inventory.cpython-312.pyc +0 -0
  316. package/skills/pptx/scripts/__pycache__/inventory.cpython-313.pyc +0 -0
  317. package/skills/pptx/scripts/__pycache__/rearrange.cpython-312.pyc +0 -0
  318. package/skills/pptx/scripts/__pycache__/replace.cpython-312.pyc +0 -0
  319. package/skills/pptx/scripts/__pycache__/thumbnail.cpython-312.pyc +0 -0
  320. package/skills/pptx/scripts/html2pptx.js +1044 -0
  321. package/skills/pptx/scripts/inventory.py +1020 -0
  322. package/skills/pptx/scripts/rearrange.py +231 -0
  323. package/skills/pptx/scripts/replace.py +385 -0
  324. package/skills/pptx/scripts/thumbnail.py +450 -0
  325. package/skills/qingyan-research/SKILL.md +294 -0
  326. package/skills/qingyan-research/__pycache__/generate_html.cpython-312.pyc +0 -0
  327. package/skills/qingyan-research/generate_html.py +33 -0
  328. package/skills/registry.py +344 -0
  329. package/skills/search_skill.py +228 -0
  330. package/skills/seo-content-writer/SKILL.md +661 -0
  331. package/skills/seo-content-writer/_meta.json +6 -0
  332. package/skills/seo-content-writer/references/content-structure-templates.md +875 -0
  333. package/skills/seo-content-writer/references/title-formulas.md +339 -0
  334. package/skills/skill-creator/LICENSE.txt +202 -0
  335. package/skills/skill-creator/SKILL.md +485 -0
  336. package/skills/skill-creator/agents/analyzer.md +274 -0
  337. package/skills/skill-creator/agents/comparator.md +202 -0
  338. package/skills/skill-creator/agents/grader.md +223 -0
  339. package/skills/skill-creator/assets/eval_review.html +146 -0
  340. package/skills/skill-creator/eval-viewer/__pycache__/generate_review.cpython-312.pyc +0 -0
  341. package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  342. package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  343. package/skills/skill-creator/references/schemas.md +430 -0
  344. package/skills/skill-creator/scripts/__init__.py +0 -0
  345. package/skills/skill-creator/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  346. package/skills/skill-creator/scripts/__pycache__/aggregate_benchmark.cpython-312.pyc +0 -0
  347. package/skills/skill-creator/scripts/__pycache__/generate_report.cpython-312.pyc +0 -0
  348. package/skills/skill-creator/scripts/__pycache__/improve_description.cpython-312.pyc +0 -0
  349. package/skills/skill-creator/scripts/__pycache__/package_skill.cpython-312.pyc +0 -0
  350. package/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-312.pyc +0 -0
  351. package/skills/skill-creator/scripts/__pycache__/run_eval.cpython-312.pyc +0 -0
  352. package/skills/skill-creator/scripts/__pycache__/run_loop.cpython-312.pyc +0 -0
  353. package/skills/skill-creator/scripts/__pycache__/utils.cpython-312.pyc +0 -0
  354. package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  355. package/skills/skill-creator/scripts/generate_report.py +326 -0
  356. package/skills/skill-creator/scripts/improve_description.py +236 -0
  357. package/skills/skill-creator/scripts/package_skill.py +136 -0
  358. package/skills/skill-creator/scripts/quick_validate.py +103 -0
  359. package/skills/skill-creator/scripts/run_eval.py +310 -0
  360. package/skills/skill-creator/scripts/run_loop.py +328 -0
  361. package/skills/skill-creator/scripts/utils.py +47 -0
  362. package/skills/skill-finder-cn/SKILL.md +66 -0
  363. package/skills/skill-finder-cn/_meta.json +6 -0
  364. package/skills/skill-finder-cn/package.json +5 -0
  365. package/skills/skill-finder-cn/scripts/search.sh +15 -0
  366. package/skills/skill-vetter/SKILL.md +137 -0
  367. package/skills/stock-analysis-skill/SKILL.md +156 -0
  368. package/skills/stock-analysis-skill/package.json +21 -0
  369. package/skills/stock-analysis-skill/src/analyzer.ts +264 -0
  370. package/skills/stock-analysis-skill/src/dataFetcher.ts +130 -0
  371. package/skills/stock-analysis-skill/src/dividend.ts +226 -0
  372. package/skills/stock-analysis-skill/src/index.ts +327 -0
  373. package/skills/stock-analysis-skill/src/rumorScanner.ts +200 -0
  374. package/skills/stock-analysis-skill/src/types.ts +167 -0
  375. package/skills/stock-analysis-skill/src/watchlist.ts +292 -0
  376. package/skills/stock-analysis-skill/tsconfig.json +15 -0
  377. package/skills/storyboard-manager/SKILL.md +532 -0
  378. package/skills/storyboard-manager/index.js +9 -0
  379. package/skills/storyboard-manager/package.json +11 -0
  380. package/skills/storyboard-manager/references/character_development.md +232 -0
  381. package/skills/storyboard-manager/references/story_structures.md +148 -0
  382. package/skills/storyboard-manager/scripts/__pycache__/consistency_checker.cpython-312.pyc +0 -0
  383. package/skills/storyboard-manager/scripts/__pycache__/timeline_tracker.cpython-312.pyc +0 -0
  384. package/skills/storyboard-manager/scripts/consistency_checker.py +391 -0
  385. package/skills/storyboard-manager/scripts/timeline_tracker.py +352 -0
  386. package/skills/system_skill.py +249 -0
  387. package/skills/ui-ux-pro-max/SKILL.md +43 -0
  388. package/skills/ui-ux-pro-max/_meta.json +6 -0
  389. package/skills/ui-ux-pro-max/assets/data/charts.csv +26 -0
  390. package/skills/ui-ux-pro-max/assets/data/colors.csv +97 -0
  391. package/skills/ui-ux-pro-max/assets/data/icons.csv +101 -0
  392. package/skills/ui-ux-pro-max/assets/data/landing.csv +31 -0
  393. package/skills/ui-ux-pro-max/assets/data/products.csv +97 -0
  394. package/skills/ui-ux-pro-max/assets/data/react-performance.csv +45 -0
  395. package/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +54 -0
  396. package/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +53 -0
  397. package/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +56 -0
  398. package/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +53 -0
  399. package/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +53 -0
  400. package/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +51 -0
  401. package/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +59 -0
  402. package/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +52 -0
  403. package/skills/ui-ux-pro-max/assets/data/stacks/react.csv +54 -0
  404. package/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +61 -0
  405. package/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +54 -0
  406. package/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +51 -0
  407. package/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +50 -0
  408. package/skills/ui-ux-pro-max/assets/data/styles.csv +68 -0
  409. package/skills/ui-ux-pro-max/assets/data/typography.csv +58 -0
  410. package/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +101 -0
  411. package/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +100 -0
  412. package/skills/ui-ux-pro-max/assets/data/web-interface.csv +31 -0
  413. package/skills/ui-ux-pro-max/data/charts.csv +26 -0
  414. package/skills/ui-ux-pro-max/data/colors.csv +97 -0
  415. package/skills/ui-ux-pro-max/data/icons.csv +101 -0
  416. package/skills/ui-ux-pro-max/data/landing.csv +31 -0
  417. package/skills/ui-ux-pro-max/data/products.csv +97 -0
  418. package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  419. package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  420. package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  421. package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  422. package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  423. package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  424. package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  425. package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  426. package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  427. package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  428. package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  429. package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  430. package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  431. package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  432. package/skills/ui-ux-pro-max/data/styles.csv +68 -0
  433. package/skills/ui-ux-pro-max/data/typography.csv +58 -0
  434. package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  435. package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  436. package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  437. package/skills/ui-ux-pro-max/references/upstream-README.md +488 -0
  438. package/skills/ui-ux-pro-max/references/upstream-skill-content.md +288 -0
  439. package/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
  440. package/skills/ui-ux-pro-max/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  441. package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc +0 -0
  442. package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-312.pyc +0 -0
  443. package/skills/ui-ux-pro-max/scripts/__pycache__/search.cpython-312.pyc +0 -0
  444. package/skills/ui-ux-pro-max/scripts/core.py +253 -0
  445. package/skills/ui-ux-pro-max/scripts/design_system.py +1071 -0
  446. package/skills/ui-ux-pro-max/scripts/search.py +111 -0
  447. package/skills/video-generation/LICENSE.txt +21 -0
  448. package/skills/video-generation/SKILL.md +1082 -0
  449. package/skills/video-generation/scripts/video.ts +168 -0
  450. package/skills/video-understand/LICENSE.txt +21 -0
  451. package/skills/video-understand/SKILL.md +916 -0
  452. package/skills/video-understand/scripts/video-understand.ts +41 -0
  453. package/skills/visual-design-foundations/SKILL.md +318 -0
  454. package/skills/visual-design-foundations/references/color-systems.md +417 -0
  455. package/skills/visual-design-foundations/references/spacing-iconography.md +425 -0
  456. package/skills/visual-design-foundations/references/typography-systems.md +432 -0
  457. package/skills/web-reader/LICENSE.txt +21 -0
  458. package/skills/web-reader/SKILL.md +1140 -0
  459. package/skills/web-reader/scripts/web-reader.ts +37 -0
  460. package/skills/web-search/LICENSE.txt +21 -0
  461. package/skills/web-search/SKILL.md +912 -0
  462. package/skills/web-search/scripts/web_search.ts +44 -0
  463. package/skills/web-shader-extractor/SKILL.md +145 -0
  464. package/skills/web-shader-extractor/references/config-extraction.md +50 -0
  465. package/skills/web-shader-extractor/references/encoded-definitions.md +53 -0
  466. package/skills/web-shader-extractor/references/extraction-workflow.md +61 -0
  467. package/skills/web-shader-extractor/references/porting-strategy.md +164 -0
  468. package/skills/web-shader-extractor/references/shader-injection.md +126 -0
  469. package/skills/web-shader-extractor/references/shaders-com.md +190 -0
  470. package/skills/web-shader-extractor/references/tech-signatures.md +54 -0
  471. package/skills/web-shader-extractor/references/tsl-extraction.md +41 -0
  472. package/skills/web-shader-extractor/references/unicorn-studio.md +353 -0
  473. package/skills/web-shader-extractor/scripts/fetch-rendered-dom.mjs +153 -0
  474. package/skills/web-shader-extractor/scripts/scan-bundle.sh +76 -0
  475. package/skills/writing-plans/SKILL.md +116 -0
  476. package/skills/writing-plans/_meta.json +6 -0
  477. package/skills/xlsx/LICENSE.txt +30 -0
  478. package/skills/xlsx/SKILL.md +496 -0
  479. package/skills/xlsx/__pycache__/recalc.cpython-312.pyc +0 -0
  480. package/skills/xlsx/recalc.py +178 -0
  481. package/start.sh +36 -0
  482. package/web/__init__.py +1 -0
  483. package/web/__pycache__/api_server.cpython-312.pyc +0 -0
  484. package/web/api_server.py +2043 -0
  485. package/web/ui/chat.html +3235 -0
  486. package/web/ui/index.html +458 -0
@@ -0,0 +1,681 @@
1
+ # DOCX Library Tutorial
2
+
3
+ Generate .docx files with JavaScript/TypeScript.
4
+
5
+ **Important: Read this entire document before starting.** Critical formatting rules and common pitfalls are covered throughout - skipping sections may result in corrupted files or rendering issues.
6
+
7
+ ## Setup
8
+ Assumes docx is already installed globally
9
+ If not installed: first try `bun add docx`, then `npm install -g docx`
10
+ ```javascript
11
+ const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, ImageRun, Media,
12
+ Header, Footer, AlignmentType, PageOrientation, LevelFormat, ExternalHyperlink,
13
+ InternalHyperlink, TableOfContents, HeadingLevel, BorderStyle, WidthType, TabStopType,
14
+ TabStopPosition, UnderlineType, ShadingType, VerticalAlign, SymbolRun, PageNumber,
15
+ FootnoteReferenceRun, Footnote, PageBreak } = require('docx');
16
+
17
+ // Create & Save
18
+ const doc = new Document({ sections: [{ children: [/* content */] }] });
19
+ Packer.toBuffer(doc).then(buffer => fs.writeFileSync("doc.docx", buffer)); // Node.js
20
+ Packer.toBlob(doc).then(blob => { /* download logic */ }); // Browser
21
+ ```
22
+
23
+ ## Delivery Standard
24
+
25
+ **Generic styling and mediocre aesthetics = mediocre delivery.**
26
+
27
+ Deliver studio-quality Word documents with deep thought on content, functionality, and styling. Users often don't explicitly request advanced features (covers, TOC, backgrounds, back covers, footnotes, charts)—deeply understand needs and proactively extend.
28
+
29
+ The following formatting standards are to be strictly applied without exception:
30
+
31
+ - Line Spacing: The entire document must use 1.3x line spacing.
32
+ - Chart/Figure Placement: All charts, graphs, and figures must be explicitly centered horizontally on the page.
33
+
34
+ ```javascript
35
+ new Table({
36
+ alignment: AlignmentType.CENTER,
37
+ rows: [
38
+ new TableRow({
39
+ children: [
40
+ new TableCell({
41
+ children: [
42
+ new Paragraph({
43
+ text: "centered text",
44
+ alignment: AlignmentType.CENTER,
45
+ }),
46
+ ],
47
+ verticalAlign: VerticalAlign.CENTER,
48
+ shading: { fill: colors.tableBg },
49
+ borders: cellBorders,
50
+ }),
51
+ ],
52
+ }),
53
+ ],
54
+ });
55
+ ```
56
+
57
+ - The text in charts must have left/right/up/bottom margin.
58
+ - Image Handling:Preserve aspect ratio**: Never adjust image aspect ratio. Must insert according to the original ratio.
59
+ - Do not use background shading to all table section headers.
60
+
61
+ Compliance with these specifications is mandatory.
62
+
63
+ ## Language Consistency
64
+
65
+ **Document language = User conversation language** (including filename, body text, headings, headers, TOC hints, chart labels, and all other text).
66
+
67
+ ## Headers and Footers - REQUIRED BY DEFAULT
68
+
69
+ Most documents **MUST** include headers and footers. The specific style (alignment, format, content) should match the document's overall design.
70
+
71
+ - **Header**: Typically document title, company name, or chapter name
72
+ - **Footer**: Typically page numbers (format flexible: "X / Y", "Page X", "— X —", etc.)
73
+ - **Cover/Back cover**: Use `TitlePage` setting to hide header/footer on first page
74
+
75
+ ## Fonts
76
+ If the user do not require specific fonts, you must follow the fonts rule belowing:
77
+ ### For Chinese:
78
+ | Element | Font Family | Font Size (Half-points) | Properties |
79
+ | :--- | :--- | :--- | :--- |
80
+ | Normal Body | Microsoft YaHei (微软雅黑) | 21 (10.5pt / 五号) | Standard for readability. |
81
+ | Heading 1 | SimHei (黑体) | 32 (16pt / 三号) | Bold, high impact. |
82
+ | Heading 2 | SimHei (黑体) | 28 (14pt / 四号) | Bold. |
83
+ | Caption | Microsoft YaHei | 20 (10pt) | For tables and charts. |
84
+
85
+ - Microsoft YaHei, located at /usr/share/fonts/truetype/chinese/msyh.ttf
86
+ - SimHei, located at /usr/share/fonts/truetype/chinese/SimHei.ttf
87
+ - Code blocks: SarasaMonoSC, located at /usr/share/fonts/truetype/chinese/SarasaMonoSC-Regular.ttf
88
+ - Formulas / symbols: DejaVuSans, located at /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
89
+ - For body text and formulas, use Paragraph instead of Preformatted.
90
+
91
+
92
+ ### For English
93
+ | Element | Font Family | Font Size (Half-points) | Properties |
94
+ | :--- | :--- | :--- | :--- |
95
+ | Normal Body | Calibri | 22 (11pt) | Highly legible; slightly larger than 10.5pt to match visual "weight." |
96
+ | Heading 1 | Times New Roman | 36 (18pt) | Bold, Serif; provides a clear "Newspaper" style hierarchy. |
97
+ | Heading 2 | Times New Roman | 28 (14pt) | Bold; classic and professional. |
98
+ | Caption | Calibri | 18 (9pt) | Clean and compact for metadata and notes. |
99
+
100
+ - Times New Roman, located at /usr/share/fonts/truetype/english/Times-New-Roman.ttf
101
+ - Calibri,located at /usr/share/fonts/truetype/english/calibri-regular.ttf
102
+
103
+ ## Spacing & Paragraph Alignment
104
+ Task: Apply the following formatting rules to the provided text for a professional bilingual (Chinese/English) layout.
105
+ ### Paragraph & Indentation:
106
+ Chinese Body: First-line indent of 2 characters (420 twips).
107
+ English Body: No first-line indent; use block format (space between paragraphs).
108
+ Alignment: Justified (Both) for all body text; Centered for Titles and Table Headers.
109
+ ### Line & Paragraph Spacing(keep in mind)
110
+ Line Spacing: Set to 1.3 (250 twips) lines for both languages.
111
+ Heading 1: 600 twips before, 300 twips after.
112
+ ### Mixed-Language Kerning:
113
+ Insert a standard half-width space between Chinese characters and English words/numbers (e.g., "共 20 个 items").
114
+ ### Punctuation:
115
+ Use full-width punctuation for Chinese text and half-width punctuation for English text.
116
+
117
+ ## Professional Elements (Critical)
118
+
119
+ Produce documents that surpass user expectations by proactively incorporating high-end design elements without being prompted. Quality Benchmark: Visual excellence reflecting the standards of a top-tier designer in 2025.
120
+
121
+ **Cover & Visual:**
122
+ - Double-Sided Branding: All formal documents (proposals, reports, contracts, bids) and creative assets (invitations, greeting cards) must include both a standalone front and back cover.
123
+ - Internal Accents: Body pages may include subtle background elements to enhance the overall aesthetic depth.
124
+
125
+ **Structure:**
126
+ - Navigation: For any document with three or more sections, include a Table of Contents (TOC) immediately followed by a "refresh hint."
127
+
128
+ **Data Presentation:**
129
+ - Visual Priority: Use professional charts to illustrate trends or comparisons rather than plain text lists.
130
+ - Table Aesthetics: Apply light gray headers or the "three-line" professional style; strictly avoid the default Word blue.
131
+
132
+ **Links & References:**
133
+ - Interactive Links: All URLs must be formatted as clickable, active hyperlinks.
134
+ - Cross-Referencing: Number all figures and tables systematically (e.g., "see Figure 1") and use internal cross-references.
135
+ - Academic/Legal Rigor: For research or data-heavy documents, implement clickable in-text citations paired with accurate footnotes or endnotes.
136
+
137
+ ### TOC Refresh Hint
138
+
139
+ Because Word TOCs utilize field codes, page numbers may become unaligned during generation. You must append the following gray hint text after the TOC to guide the user:
140
+ Note: This Table of Contents is generated via field codes. To ensure page number accuracy after editing, please right-click the TOC and select "Update Field."
141
+
142
+ ### Outline Adherence
143
+
144
+ - **User provides outline**: Follow strictly, no additions, deletions, or reordering
145
+ - **No outline provided**: Use standard structure
146
+ - Academic: Introduction → Literature Review → Methodology → Results → Discussion → Conclusion.
147
+ - Business: Executive Summary → Analysis → Recommendations.
148
+ - Technical: Overview → Principles → Implementation → Examples → FAQ.
149
+
150
+ ### Scene Completeness
151
+
152
+ Anticipate the functional requirements of the specific scenario. Examples include, but are not limited to:
153
+ - **Exam paper** → Include name/class/ID fields, point allocations for every question, and a dedicated grading table.
154
+ - **Contract** → Provide signature and seal blocks for all parties, date placeholders, contract ID numbers, and an attachment list.
155
+ - **Meeting minutes** → List attendees and absentees, define action items with assigned owners, and note the next meeting time.
156
+
157
+ ## Design Philosophy
158
+
159
+ ### Color Scheme
160
+
161
+ **Low saturation tones**, avoid Word default blue and matplotlib default high saturation.
162
+
163
+ **Flexibly choose** color schemes based on document scenario:
164
+
165
+ | Style | Palette | Suitable Scenarios |
166
+ |-------|---------|-------------------|
167
+ | Morandi | Soft muted tones | Arts, editorial, lifestyle |
168
+ | Earth tones | Brown, olive, natural | Environmental, organic industries |
169
+ | Nordic | Cool gray, misty blue | Minimalism, technology, software |
170
+ | Japanese Wabi-sabi | Gray, raw wood, zen | Traditional, contemplative, crafts |
171
+ | French elegance | Off-white, dusty pink | Luxury, fashion, high-end retail |
172
+ | Industrial | Charcoal, rust, concrete | Manufacturing, engineering, construction |
173
+ | Academic | Navy, burgundy, ivory | Research, education, legal |
174
+ | Ocean mist | Misty blue, sand | Marine, wellness, travel |
175
+ | Forest moss | Olive, moss green | Nature, sustainability, forestry |
176
+ | Desert dusk | Ochre, sandy gold | Warmth, regional, historical |
177
+
178
+ **Color scheme must be consistent within the same document.**
179
+
180
+ ### highlighting
181
+ Use low saturation color schemes for font highlighting.
182
+
183
+ ### Layout
184
+
185
+ White space (margins, paragraph spacing), clear hierarchy (H1 > H2 > body), proper padding (text shouldn't touch borders).
186
+
187
+ ### Pagination Control
188
+
189
+ Word uses flow layout, not fixed pages.
190
+
191
+ ### Alignment and Typography (keep in mind!!!)
192
+ CJK body: justify + 2-char indent. English: left. Table numbers: right. Headings: no indent.
193
+ For both languages, Must use a line spacing of 1.3x (250 twips). Do not use single line spacing !!!
194
+
195
+ ### Table Formatting(Very inportant)
196
+ - A caption must be added immediately after the table, keep in mind!
197
+ - The entire table must be centered horizontally on the page. keep in mind!
198
+ #### Cell Formatting (Inside the Table)
199
+ Left/Right Cell Margin: Set to at least 120-200 twips (approximately the width of one character).
200
+ Up/Down Cell Margin: Set to at least 100 twips
201
+ Text Alignment(must follow !!!):
202
+ - Horizontal Alignment: Center-aligned. This creates a clean vertical axis through the table column.
203
+ - Vertical Alignment: Center-aligned. Text must be positioned exactly in the middle of the cell's height to prevent it from "floating" too close to the top or bottom borders.
204
+ - Cell Margins (Padding):
205
+ Left/Right: Set to 120–200 twips (approx. 0.2–0.35 cm). This ensures text does not touch the borders, maintaining legibility.
206
+ Top/Bottom: Set to at least 60–100 twips to provide a consistent vertical buffer around the text.
207
+
208
+
209
+ ### Page break
210
+ There must be page break between cover page and the content, between table of content and the content also, should NOT put cover page and content in a single page.
211
+
212
+ ## Page Layout & Margins (A4 Standard)
213
+ The layout uses a 1440 twip (1 inch) margin for content, with specialized margins for the cover.
214
+
215
+ | Section | Top Margin | Bottom/Left/Right | Twips Calculation |
216
+ |---------------|------------|-------------------|-------------------------------------------|
217
+ | Cover Page | 0 | 0 | For edge-to-edge background images. |
218
+ | Main Content | 1800 | 1440 | Extra top space for the header. |
219
+ | **Twips Unit** | **1 inch = 1440 twips** | **A4 Width = 11906** | **A4 Height = 16838** |
220
+
221
+ ## Text & Formatting
222
+ ```javascript
223
+ // IMPORTANT: Never use \n for line breaks - always use separate Paragraph elements
224
+ // ❌ WRONG: new TextRun("Line 1\nLine 2")
225
+ // ✅ CORRECT: new Paragraph({ children: [new TextRun("Line 1")] }), new Paragraph({ children: [new TextRun("Line 2")] })
226
+
227
+ // First-line indent for body paragraphs
228
+ // IMPORTANT: Chinese documents typically use 2-character indent (about 480 DXA for 12pt SimSun)
229
+ new Paragraph({
230
+ indent: { firstLine: 480 }, // 2-character first-line indent for Chinese body text
231
+ children: [new TextRun({ text: "This is the main text (Chinese). The first line is indented by two characters.", font: "SimSun" })]
232
+ })
233
+
234
+ // Basic text with all formatting options
235
+ new Paragraph({
236
+ alignment: AlignmentType.CENTER,
237
+ spacing: { before: 200, after: 200 },
238
+ indent: { left: 720, right: 720, firstLine: 480 }, // Can combine with left/right indent
239
+ children: [
240
+ new TextRun({ text: "Bold", bold: true }),
241
+ new TextRun({ text: "Italic", italics: true }),
242
+ new TextRun({ text: "Underlined", underline: { type: UnderlineType.DOUBLE, color: "FF0000" } }),
243
+ new TextRun({ text: "Colored", color: "FF0000", size: 28, font: "Times New Roman" }), // Times New Roman (system font)
244
+ new TextRun({ text: "Highlighted", highlight: "yellow" }),
245
+ new TextRun({ text: "Strikethrough", strike: true }),
246
+ new TextRun({ text: "x2", superScript: true }),
247
+ new TextRun({ text: "H2O", subScript: true }),
248
+ new TextRun({ text: "SMALL CAPS", smallCaps: true }),
249
+ new SymbolRun({ char: "2022", font: "Symbol" }), // Bullet •
250
+ new SymbolRun({ char: "00A9", font: "Arial" }) // Copyright © - Arial for symbols
251
+ ]
252
+ })
253
+ ```
254
+
255
+ ## Styles & Professional Formatting
256
+
257
+ ```javascript
258
+ const doc = new Document({
259
+ styles: {
260
+ default: { document: { run: { font: "Times New Roman", size: 24 } } }, // 12pt default (system font)
261
+ paragraphStyles: [
262
+ // Document title style - override built-in Title style
263
+ { id: "Title", name: "Title", basedOn: "Normal",
264
+ run: { size: 56, bold: true, color: "000000", font: "Times New Roman" },
265
+ paragraph: { spacing: { before: 240, after: 120 }, alignment: AlignmentType.CENTER } },
266
+ // IMPORTANT: Override built-in heading styles by using their exact IDs
267
+ { id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
268
+ run: { size: 32, bold: true, color: "000000", font: "Times New Roman" }, // 16pt
269
+ paragraph: { spacing: { before: 240, after: 240 }, outlineLevel: 0 } }, // outlineLevel enables TOC generation if needed
270
+ { id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
271
+ run: { size: 28, bold: true, color: "000000", font: "Times New Roman" }, // 14pt
272
+ paragraph: { spacing: { before: 180, after: 180 }, outlineLevel: 1 } },
273
+ // Custom styles use your own IDs
274
+ { id: "myStyle", name: "My Style", basedOn: "Normal",
275
+ run: { size: 28, bold: true, color: "000000" },
276
+ paragraph: { spacing: { after: 120 }, alignment: AlignmentType.CENTER } }
277
+ ],
278
+ characterStyles: [{ id: "myCharStyle", name: "My Char Style",
279
+ run: { color: "FF0000", bold: true, underline: { type: UnderlineType.SINGLE } } }]
280
+ },
281
+ sections: [{
282
+ properties: { page: { margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } } },
283
+ children: [
284
+ new Paragraph({ heading: HeadingLevel.TITLE, children: [new TextRun("Document Title")] }), // Uses overridden Title style
285
+ new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("Heading 1")] }), // Uses overridden Heading1 style
286
+ new Paragraph({ style: "myStyle", children: [new TextRun("Custom paragraph style")] }),
287
+ new Paragraph({ children: [
288
+ new TextRun("Normal with "),
289
+ new TextRun({ text: "custom char style", style: "myCharStyle" })
290
+ ]})
291
+ ]
292
+ }]
293
+ });
294
+ ```
295
+
296
+ **Font Management Strategy (CRITICAL):**
297
+
298
+ **ALWAYS prioritize system-installed fonts** for reliability, performance, and cross-platform compatibility:
299
+
300
+ 1. **System fonts FIRST** (no download, immediate availability):
301
+ - English: **Times New Roman** (professional standard)
302
+ - Chinese: **SimSun/宋体** (formal document standard)
303
+ - Universal fallbacks: Arial, Calibri, Helvetica
304
+
305
+ 2. **Avoid custom font downloads** unless absolutely necessary for specific branding
306
+ 3. **Test font availability** before deployment
307
+
308
+ **Professional Font Combinations (System Fonts Only):**
309
+ - **Times New Roman (Headers) + Times New Roman (Body)** - Classic, professional, universally supported
310
+ - **Arial (Headers) + Arial (Body)** - Clean, modern, universally supported
311
+ - **Times New Roman (Headers) + Arial (Body)** - Classic serif headers with modern body
312
+
313
+ **Chinese Document Font Guidelines (System Fonts):**
314
+ - **Body text**: Use **SimSun/宋体** - the standard system font for Chinese formal documents
315
+ - **Headings**: Use **SimHei/黑体** - bold sans-serif for visual hierarchy
316
+ - **Default size**: 12pt (size: 24) for body, 14-16pt for headings
317
+ - **CRITICAL**: SimSun for body text, SimHei ONLY for headings - never use SimHei for entire document
318
+
319
+ ```javascript
320
+ // English document style configuration (Times New Roman)
321
+ const doc = new Document({
322
+ styles: {
323
+ default: { document: { run: { font: "Times New Roman", size: 24 } } }, // 12pt for body
324
+ paragraphStyles: [
325
+ { id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
326
+ run: { size: 32, bold: true, font: "Times New Roman" }, // 16pt for H1
327
+ paragraph: { spacing: { before: 240, after: 240 }, outlineLevel: 0 } },
328
+ { id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
329
+ run: { size: 28, bold: true, font: "Times New Roman" }, // 14pt for H2
330
+ paragraph: { spacing: { before: 180, after: 180 }, outlineLevel: 1 } }
331
+ ]
332
+ }
333
+ });
334
+
335
+ // Chinese document style configuration (SimSun/SimHei)
336
+ const doc = new Document({
337
+ styles: {
338
+ default: { document: { run: { font: "SimSun", size: 24 } } }, // SimSun 12pt for body
339
+ paragraphStyles: [
340
+ { id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
341
+ run: { size: 32, bold: true, font: "SimHei" }, // SimHei 16pt for H1
342
+ paragraph: { spacing: { before: 240, after: 240 }, outlineLevel: 0 } },
343
+ { id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
344
+ run: { size: 28, bold: true, font: "SimHei" }, // SimHei 14pt for H2
345
+ paragraph: { spacing: { before: 180, after: 180 }, outlineLevel: 1 } }
346
+ ]
347
+ }
348
+ });
349
+ ```
350
+
351
+ **Key Styling Principles:**
352
+ - **ALWAYS use system-installed fonts** (Times New Roman for English, SimSun for Chinese)
353
+ - **Override built-in styles**: Use exact IDs like "Heading1", "Heading2", "Heading3" to override Word's built-in heading styles
354
+ - **HeadingLevel constants**: `HeadingLevel.HEADING_1` uses "Heading1" style, `HeadingLevel.HEADING_2` uses "Heading2" style, etc.
355
+ - **outlineLevel**: Set `outlineLevel: 0` for H1, `outlineLevel: 1` for H2, etc. (optional, only needed if TOC will be added)
356
+ - **Use custom styles** instead of inline formatting for consistency
357
+ - **Set a default font** using `styles.default.document.run.font` - Times New Roman for English, SimSun for Chinese
358
+ - **Establish visual hierarchy** with different font sizes (titles > headers > body)
359
+ - **Add proper spacing** with `before` and `after` paragraph spacing
360
+ - **Use colors sparingly**: Default to black (000000) and shades of gray for titles and headings (heading 1, heading 2, etc.)
361
+ - **Set consistent margins** (1440 = 1 inch is standard)
362
+
363
+
364
+ ## Lists (ALWAYS USE PROPER LISTS - NEVER USE UNICODE BULLETS)
365
+
366
+ ### ⚠️ CRITICAL: Numbered List References - Read This Before Creating Lists!
367
+
368
+ **Each independently numbered list MUST use a UNIQUE reference name**
369
+
370
+ **Rules**:
371
+ - Same `reference` = continues numbering (1,2,3 → 4,5,6)
372
+ - Different `reference` = restarts at 1 (1,2,3 → 1,2,3)
373
+
374
+ **When to use a new reference?**
375
+ - ✓ Numbered lists under new headings/sections
376
+ - ✓ Any list that needs independent numbering
377
+ - ✗ Subsequent items of the same list (keep using same reference)
378
+
379
+ **Reference naming suggestions**:
380
+ - `list-section-1`, `list-section-2`, `list-section-3`
381
+ - `list-chapter-1`, `list-chapter-2`
382
+ - `list-requirements`, `list-constraints` (name based on content)
383
+
384
+ ```javascript
385
+ // ❌ WRONG: All lists use the same reference
386
+ numbering: {
387
+ config: [
388
+ { reference: "my-list", levels: [...] } // Only one config
389
+ ]
390
+ }
391
+ // Result:
392
+ // Chapter 1
393
+ // 1. Item A
394
+ // 2. Item B
395
+ // Chapter 2
396
+ // 3. Item C ← WRONG! Should start from 1
397
+ // 4. Item D
398
+
399
+ // ✅ CORRECT: Each list uses different reference
400
+ numbering: {
401
+ config: [
402
+ { reference: "list-chapter-1", levels: [...] },
403
+ { reference: "list-chapter-2", levels: [...] },
404
+ { reference: "list-chapter-3", levels: [...] }
405
+ ]
406
+ }
407
+ // Result:
408
+ // Chapter 1
409
+ // 1. Item A
410
+ // 2. Item B
411
+ // Chapter 2
412
+ // 1. Item C ✓ CORRECT! Restarts from 1
413
+ // 2. Item D
414
+ // Chapter 3
415
+ // 1. Item E ✓ CORRECT! Restarts from 1
416
+ // 2. Item F
417
+ ```
418
+
419
+ ### Basic List Syntax
420
+
421
+ ```javascript
422
+ // Bullets - ALWAYS use the numbering config, NOT unicode symbols
423
+ // CRITICAL: Use LevelFormat.BULLET constant, NOT the string "bullet"
424
+ const doc = new Document({
425
+ numbering: {
426
+ config: [
427
+ { reference: "bullet-list",
428
+ levels: [{ level: 0, format: LevelFormat.BULLET, text: "•", alignment: AlignmentType.LEFT,
429
+ style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
430
+ { reference: "first-numbered-list",
431
+ levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT,
432
+ style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
433
+ { reference: "second-numbered-list", // Different reference = restarts at 1
434
+ levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT,
435
+ style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] }
436
+ ]
437
+ },
438
+ sections: [{
439
+ children: [
440
+ // Bullet list items
441
+ new Paragraph({ numbering: { reference: "bullet-list", level: 0 },
442
+ children: [new TextRun("First bullet point")] }),
443
+ new Paragraph({ numbering: { reference: "bullet-list", level: 0 },
444
+ children: [new TextRun("Second bullet point")] }),
445
+ // Numbered list items
446
+ new Paragraph({ numbering: { reference: "first-numbered-list", level: 0 },
447
+ children: [new TextRun("First numbered item")] }),
448
+ new Paragraph({ numbering: { reference: "first-numbered-list", level: 0 },
449
+ children: [new TextRun("Second numbered item")] }),
450
+ // ⚠️ CRITICAL: Different reference = INDEPENDENT list that restarts at 1
451
+ // Same reference = CONTINUES previous numbering
452
+ new Paragraph({ numbering: { reference: "second-numbered-list", level: 0 },
453
+ children: [new TextRun("Starts at 1 again (because different reference)")] })
454
+ ]
455
+ }]
456
+ });
457
+
458
+ // ⚠️ CRITICAL: NEVER use unicode bullets - they create fake lists that don't work properly
459
+ // new TextRun("• Item") // WRONG
460
+ // new SymbolRun({ char: "2022" }) // WRONG
461
+ // ✅ ALWAYS use numbering config with LevelFormat.BULLET for real Word lists
462
+ ```
463
+
464
+ ## Tables
465
+ ```javascript
466
+ // Complete table with margins, borders, headers, and bullet points
467
+ const tableBorder = { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" };
468
+ const cellBorders = { top: tableBorder, bottom: tableBorder, left: tableBorder, right: tableBorder };
469
+
470
+ new Table({
471
+ columnWidths: [4680, 4680], // ⚠️ CRITICAL: Set column widths at table level - values in DXA (twentieths of a point)
472
+ // ⚠️ MANDATORY: margins MUST be set to prevent text touching borders
473
+ margins: { top: 100, bottom: 100, left: 180, right: 180 }, // Minimum comfortable padding
474
+ rows: [
475
+ new TableRow({
476
+ tableHeader: true,
477
+ children: [
478
+ new TableCell({
479
+ borders: cellBorders,
480
+ width: { size: 4680, type: WidthType.DXA }, // ALSO set width on each cell
481
+ // ⚠️ CRITICAL: Always use ShadingType.CLEAR to prevent black backgrounds in Word.
482
+ shading: { fill: "D5E8F0", type: ShadingType.CLEAR },
483
+ verticalAlign: VerticalAlign.CENTER,
484
+ children: [new Paragraph({
485
+ alignment: AlignmentType.CENTER,
486
+ children: [new TextRun({ text: "Header", bold: true, size: 22 })]
487
+ })]
488
+ }),
489
+ new TableCell({
490
+ borders: cellBorders,
491
+ width: { size: 4680, type: WidthType.DXA }, // ALSO set width on each cell
492
+ shading: { fill: "D5E8F0", type: ShadingType.CLEAR },
493
+ children: [new Paragraph({
494
+ alignment: AlignmentType.CENTER,
495
+ children: [new TextRun({ text: "Bullet Points", bold: true, size: 22 })]
496
+ })]
497
+ })
498
+ ]
499
+ }),
500
+ new TableRow({
501
+ children: [
502
+ new TableCell({
503
+ borders: cellBorders,
504
+ width: { size: 4680, type: WidthType.DXA }, // ALSO set width on each cell
505
+ children: [new Paragraph({ children: [new TextRun("Regular data")] })]
506
+ }),
507
+ new TableCell({
508
+ borders: cellBorders,
509
+ width: { size: 4680, type: WidthType.DXA }, // ALSO set width on each cell
510
+ children: [
511
+ new Paragraph({
512
+ numbering: { reference: "bullet-list", level: 0 },
513
+ children: [new TextRun("First bullet point")]
514
+ }),
515
+ new Paragraph({
516
+ numbering: { reference: "bullet-list", level: 0 },
517
+ children: [new TextRun("Second bullet point")]
518
+ })
519
+ ]
520
+ })
521
+ ]
522
+ })
523
+ ]
524
+ })
525
+ ```
526
+
527
+ **IMPORTANT: Table Width & Borders**
528
+ - Use BOTH `columnWidths: [width1, width2, ...]` array AND `width: { size: X, type: WidthType.DXA }` on each cell
529
+ - Values in DXA (twentieths of a point): 1440 = 1 inch, Letter usable width = 9360 DXA (with 1" margins)
530
+ - Apply borders to individual `TableCell` elements, NOT the `Table` itself
531
+
532
+ **Precomputed Column Widths (Letter size with 1" margins = 9360 DXA total):**
533
+ - **2 columns:** `columnWidths: [4680, 4680]` (equal width)
534
+ - **3 columns:** `columnWidths: [3120, 3120, 3120]` (equal width)
535
+
536
+ ## Links & Navigation
537
+ ```javascript
538
+ // TOC example
539
+ // new TableOfContents("Table of Contents", { hyperlink: true, headingStyleRange: "1-3" }),
540
+ //
541
+ // CRITICAL: If adding TOC, use HeadingLevel only, NOT custom styles
542
+ // ❌ WRONG: new Paragraph({ heading: HeadingLevel.HEADING_1, style: "customHeader", children: [new TextRun("Title")] })
543
+ // ✅ CORRECT: new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("Title")] })
544
+
545
+ // REQUIRED: After generating the DOCX, add TOC placeholders for first-open experience
546
+ // Always run: python skills/docx/scripts/add_toc_placeholders.py document.docx --entries '[...]'
547
+ // This adds placeholder entries that appear before the user updates the TOC (modifies file in-place)
548
+ // Extract headings from your document to generate accurate entries
549
+
550
+ // External link
551
+ new Paragraph({
552
+ children: [new ExternalHyperlink({
553
+ children: [new TextRun({ text: "Google", style: "Hyperlink" })],
554
+ link: "https://www.google.com"
555
+ })]
556
+ }),
557
+
558
+ // Internal link & bookmark
559
+ new Paragraph({
560
+ children: [new InternalHyperlink({
561
+ children: [new TextRun({ text: "Go to Section", style: "Hyperlink" })],
562
+ anchor: "section1"
563
+ })]
564
+ }),
565
+ new Paragraph({
566
+ children: [new TextRun("Section Content")],
567
+ bookmark: { id: "section1", name: "section1" }
568
+ }),
569
+
570
+ ```
571
+
572
+ Use `new Paragraph({ children: [new PageBreak()] })` at the start of the next section to ensure TOC is isolated.
573
+
574
+ ## Images & Media
575
+ ```javascript
576
+ // Basic image with sizing & positioning
577
+ // CRITICAL: Always specify 'type' parameter - it's REQUIRED for ImageRun
578
+ new Paragraph({
579
+ alignment: AlignmentType.CENTER,
580
+ children: [new ImageRun({
581
+ type: "png", // NEW REQUIREMENT: Must specify image type (png, jpg, jpeg, gif, bmp, svg)
582
+ data: fs.readFileSync("image.png"),
583
+ transformation: { width: 200, height: 150, rotation: 0 }, // rotation in degrees
584
+ altText: { title: "Logo", description: "Company logo", name: "Name" } // IMPORTANT: All three fields are required
585
+ })]
586
+ })
587
+ ```
588
+
589
+ ## Page Breaks
590
+ ```javascript
591
+ // Manual page break
592
+ new Paragraph({ children: [new PageBreak()] }),
593
+
594
+ // Page break before paragraph
595
+ new Paragraph({
596
+ pageBreakBefore: true,
597
+ children: [new TextRun("This starts on a new page")]
598
+ })
599
+
600
+ // ⚠️ CRITICAL: NEVER use PageBreak standalone - it will create invalid XML that Word cannot open
601
+ // ❌ WRONG: new PageBreak()
602
+ // ✅ CORRECT: new Paragraph({ children: [new PageBreak()] })
603
+ ```
604
+
605
+ ## Cover Page
606
+ **If the document has a cover page, the cover content should be centered both horizontally and vertically.**
607
+
608
+ **Important notes for cover pages:**
609
+ - **Horizontal centering**: Use `alignment: AlignmentType.CENTER` on all cover page paragraphs
610
+ - **Vertical centering**: Use `spacing: { before: XXXX }` on elements to visually center content (adjust based on page height)
611
+ - **Separate section**: Create a dedicated section for the cover page to separate it from main content
612
+ - **Page break**: Use `new Paragraph({ children: [new PageBreak()] })` at the start of the next section to ensure cover is isolated
613
+
614
+ ## Headers/Footers & Page Setup
615
+ ```javascript
616
+ const doc = new Document({
617
+ sections: [{
618
+ properties: {
619
+ page: {
620
+ margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 }, // 1440 = 1 inch
621
+ size: { orientation: PageOrientation.LANDSCAPE },
622
+ pageNumbers: { start: 1, formatType: "decimal" } // "upperRoman", "lowerRoman", "upperLetter", "lowerLetter"
623
+ }
624
+ },
625
+ headers: {
626
+ default: new Header({ children: [new Paragraph({
627
+ alignment: AlignmentType.RIGHT,
628
+ children: [new TextRun("Header Text")]
629
+ })] })
630
+ },
631
+ footers: {
632
+ default: new Footer({ children: [new Paragraph({
633
+ alignment: AlignmentType.CENTER,
634
+ children: [new TextRun("Page "), new TextRun({ children: [PageNumber.CURRENT] }), new TextRun(" of "), new TextRun({ children: [PageNumber.TOTAL_PAGES] })]
635
+ })] })
636
+ },
637
+ children: [/* content */]
638
+ }]
639
+ });
640
+ ```
641
+
642
+ ## Tabs
643
+ ```javascript
644
+ new Paragraph({
645
+ tabStops: [
646
+ { type: TabStopType.LEFT, position: TabStopPosition.MAX / 4 },
647
+ { type: TabStopType.CENTER, position: TabStopPosition.MAX / 2 },
648
+ { type: TabStopType.RIGHT, position: TabStopPosition.MAX * 3 / 4 }
649
+ ],
650
+ children: [new TextRun("Left\tCenter\tRight")]
651
+ })
652
+ ```
653
+
654
+ ## Constants & Quick Reference
655
+ - **Underlines:** `SINGLE`, `DOUBLE`, `WAVY`, `DASH`
656
+ - **Borders:** `SINGLE`, `DOUBLE`, `DASHED`, `DOTTED`
657
+ - **Numbering:** `DECIMAL` (1,2,3), `UPPER_ROMAN` (I,II,III), `LOWER_LETTER` (a,b,c)
658
+ - **Tabs:** `LEFT`, `CENTER`, `RIGHT`, `DECIMAL`
659
+ - **Symbols:** `"2022"` (•), `"00A9"` (©), `"00AE"` (®), `"2122"` (™), `"00B0"` (°), `"F070"` (✓), `"F0FC"` (✗)
660
+
661
+ ## Critical Issues & Common Mistakes
662
+ - **CRITICAL for cover pages**: If the document has a cover page, the cover content should be centered both horizontally (AlignmentType.CENTER) and vertically (use spacing.before to adjust)
663
+ - **CRITICAL: PageBreak must ALWAYS be inside a Paragraph** - standalone PageBreak creates invalid XML that Word cannot open
664
+ - **ALWAYS use ShadingType.CLEAR for table cell shading** - Never use ShadingType.SOLID (causes black background).
665
+ - Measurements in DXA (1440 = 1 inch) | Each table cell needs ≥1 Paragraph | If TOC is added, it requires HeadingLevel styles only
666
+ - **CRITICAL: ALWAYS use system-installed fonts** - Times New Roman for English, SimSun for Chinese - NEVER download custom fonts unless absolutely necessary
667
+ - **ALWAYS use custom styles** with appropriate system fonts for professional appearance and proper visual hierarchy
668
+ - **ALWAYS set a default font** using `styles.default.document.run.font` - **Times New Roman** for English, **SimSun** for Chinese
669
+ - **CRITICAL for Chinese documents**: Use SimSun for body text, SimHei ONLY for headings - NEVER use SimHei for entire document
670
+ - **CRITICAL for Chinese body text**: Add first-line indent with `indent: { firstLine: 480 }` (approximately 2 characters for 12pt font)
671
+ - **ALWAYS use columnWidths array for tables** + individual cell widths for compatibility
672
+ - **NEVER use unicode symbols for bullets** - always use proper numbering configuration with `LevelFormat.BULLET` constant (NOT the string "bullet")
673
+ - **NEVER use \n for line breaks anywhere** - always use separate Paragraph elements for each line
674
+ - **ALWAYS use TextRun objects within Paragraph children** - never use text property directly on Paragraph
675
+ - **CRITICAL for images**: ImageRun REQUIRES `type` parameter - always specify "png", "jpg", "jpeg", "gif", "bmp", or "svg"
676
+ - **CRITICAL for bullets**: Must use `LevelFormat.BULLET` constant, not string "bullet", and include `text: "•"` for the bullet character
677
+ - **CRITICAL for numbering**: Each numbering reference creates an INDEPENDENT list. Same reference = continues numbering (1,2,3 then 4,5,6). Different reference = restarts at 1 (1,2,3 then 1,2,3). Use unique reference names for each separate numbered section!
678
+ - **CRITICAL for TOC**: When using TableOfContents, headings must use HeadingLevel ONLY - do NOT add custom styles to heading paragraphs or TOC will break.
679
+ - **CRITICAL for Tables**: Set `columnWidths` array + individual cell widths, apply borders to cells not table
680
+ - **MANDATORY for Tables**: ALWAYS set `margins` at Table level - this prevents text from touching borders and is required for professional quality. NEVER omit this property.
681
+ - **Set table margins at TABLE level** for consistent cell padding (avoids repetition per cell)