@huicai/cli 2026.814.0 → 2026.1019.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 (485) hide show
  1. package/LICENSE +391 -32
  2. package/README.md +137 -8
  3. package/bin/huicai.js +146 -73
  4. package/package.json +27 -8
  5. package/skills/ab-testing/trigger-cases.json +30 -0
  6. package/skills/academic-writing/trigger-cases.json +30 -0
  7. package/skills/accounting-ops/trigger-cases.json +30 -0
  8. package/skills/ai-agent/trigger-cases.json +30 -0
  9. package/skills/ai-aiops/trigger-cases.json +30 -0
  10. package/skills/ai-coding/trigger-cases.json +30 -0
  11. package/skills/ai-compliance/trigger-cases.json +30 -0
  12. package/skills/ai-eval/trigger-cases.json +30 -0
  13. package/skills/ai-llm-app/trigger-cases.json +30 -0
  14. package/skills/ai-mlops/trigger-cases.json +30 -0
  15. package/skills/ai-multimodal/trigger-cases.json +30 -0
  16. package/skills/ai-prompt/trigger-cases.json +30 -0
  17. package/skills/ai-rag/trigger-cases.json +30 -0
  18. package/skills/anomaly-detection/trigger-cases.json +30 -0
  19. package/skills/api-design/trigger-cases.json +31 -0
  20. package/skills/api-integration/trigger-cases.json +31 -0
  21. package/skills/arch-design/trigger-cases.json +12 -0
  22. package/skills/arch-diagram/SKILL.md +118 -0
  23. package/skills/arch-diagram/trigger-cases.json +30 -0
  24. package/skills/arch-distributed/trigger-cases.json +30 -0
  25. package/skills/arch-multitenant/trigger-cases.json +30 -0
  26. package/skills/audio-brief/SKILL.md +65 -0
  27. package/skills/audio-brief/trigger-cases.json +30 -0
  28. package/skills/audit-assist/trigger-cases.json +30 -0
  29. package/skills/audit-chain/trigger-cases.json +31 -0
  30. package/skills/banking-credit/trigger-cases.json +30 -0
  31. package/skills/brand-design/trigger-cases.json +30 -0
  32. package/skills/business-plan/trigger-cases.json +30 -0
  33. package/skills/capital-ops/trigger-cases.json +30 -0
  34. package/skills/cicd-pipeline/trigger-cases.json +31 -0
  35. package/skills/code-archaeology/SKILL.md +55 -0
  36. package/skills/code-archaeology/trigger-cases.json +9 -0
  37. package/skills/code-quality/SKILL.md +138 -0
  38. package/skills/code-quality/references/languages.md +107 -0
  39. package/skills/code-quality/scripts/__pycache__/code_battery.cpython-312.pyc +0 -0
  40. package/skills/code-quality/scripts/__pycache__/code_check.cpython-312.pyc +0 -0
  41. package/skills/code-quality/scripts/__pycache__/code_check.cpython-313.pyc +0 -0
  42. package/skills/code-quality/scripts/__pycache__/code_csharp.cpython-312.pyc +0 -0
  43. package/skills/code-quality/scripts/__pycache__/code_csharp.cpython-313.pyc +0 -0
  44. package/skills/code-quality/scripts/__pycache__/code_fix.cpython-312.pyc +0 -0
  45. package/skills/code-quality/scripts/__pycache__/code_fix.cpython-313.pyc +0 -0
  46. package/skills/code-quality/scripts/__pycache__/code_java.cpython-312.pyc +0 -0
  47. package/skills/code-quality/scripts/__pycache__/code_java.cpython-313.pyc +0 -0
  48. package/skills/code-quality/scripts/__pycache__/code_jsts.cpython-312.pyc +0 -0
  49. package/skills/code-quality/scripts/__pycache__/code_jsts.cpython-313.pyc +0 -0
  50. package/skills/code-quality/scripts/__pycache__/code_lens.cpython-312.pyc +0 -0
  51. package/skills/code-quality/scripts/__pycache__/code_lens.cpython-313.pyc +0 -0
  52. package/skills/code-quality/scripts/__pycache__/code_python.cpython-312.pyc +0 -0
  53. package/skills/code-quality/scripts/__pycache__/code_python.cpython-313.pyc +0 -0
  54. package/skills/code-quality/scripts/__pycache__/code_testplan.cpython-312.pyc +0 -0
  55. package/skills/code-quality/scripts/code_battery.py +1072 -0
  56. package/skills/code-quality/scripts/code_check.py +1269 -0
  57. package/skills/code-quality/scripts/code_csharp.py +371 -0
  58. package/skills/code-quality/scripts/code_fix.py +201 -0
  59. package/skills/code-quality/scripts/code_java.py +695 -0
  60. package/skills/code-quality/scripts/code_jsts.py +313 -0
  61. package/skills/code-quality/scripts/code_lens.py +1079 -0
  62. package/skills/code-quality/scripts/code_python.py +536 -0
  63. package/skills/code-quality/scripts/code_testplan.py +239 -0
  64. package/skills/code-quality/trigger-cases.json +45 -0
  65. package/skills/code-review/SKILL.md +24 -0
  66. package/skills/code-review/trigger-cases.json +35 -0
  67. package/skills/commit-and-pr/trigger-cases.json +31 -0
  68. package/skills/content-creation/trigger-cases.json +30 -0
  69. package/skills/corporate-governance/trigger-cases.json +30 -0
  70. package/skills/crawl-chain/trigger-cases.json +31 -0
  71. package/skills/customer-service/trigger-cases.json +30 -0
  72. package/skills/data-analysis/trigger-cases.json +30 -0
  73. package/skills/data-chain/SKILL.md +1 -1
  74. package/skills/data-chain/trigger-cases.json +31 -0
  75. package/skills/data-governance/trigger-cases.json +30 -0
  76. package/skills/data-report-pro/trigger-cases.json +30 -0
  77. package/skills/data-streaming/trigger-cases.json +30 -0
  78. package/skills/data-wrangling/SKILL.md +1 -1
  79. package/skills/data-wrangling/trigger-cases.json +30 -0
  80. package/skills/db-es/trigger-cases.json +30 -0
  81. package/skills/db-migration/trigger-cases.json +30 -0
  82. package/skills/db-mysql/trigger-cases.json +30 -0
  83. package/skills/db-postgres/trigger-cases.json +30 -0
  84. package/skills/db-redis/trigger-cases.json +30 -0
  85. package/skills/debug-root-cause/trigger-cases.json +30 -0
  86. package/skills/dependency-audit/SKILL.md +56 -0
  87. package/skills/dependency-audit/trigger-cases.json +7 -0
  88. package/skills/dependency-upgrade/trigger-cases.json +31 -0
  89. package/skills/dev-cpp/trigger-cases.json +30 -0
  90. package/skills/dev-cross-platform/trigger-cases.json +30 -0
  91. package/skills/dev-csharp/SKILL.md +23 -0
  92. package/skills/dev-csharp/trigger-cases.json +30 -0
  93. package/skills/dev-frontend/SKILL.md +19 -0
  94. package/skills/dev-frontend/trigger-cases.json +30 -0
  95. package/skills/dev-go/trigger-cases.json +30 -0
  96. package/skills/dev-harmony/trigger-cases.json +30 -0
  97. package/skills/dev-java/SKILL.md +20 -0
  98. package/skills/dev-java/trigger-cases.json +30 -0
  99. package/skills/dev-mobile/trigger-cases.json +30 -0
  100. package/skills/dev-node/trigger-cases.json +30 -0
  101. package/skills/dev-php/trigger-cases.json +30 -0
  102. package/skills/dev-python/SKILL.md +21 -0
  103. package/skills/dev-python/trigger-cases.json +30 -0
  104. package/skills/dev-rust/trigger-cases.json +30 -0
  105. package/skills/dev-toolchain/trigger-cases.json +31 -0
  106. package/skills/doc-chain/trigger-cases.json +31 -0
  107. package/skills/doc-compare/trigger-cases.json +30 -0
  108. package/skills/docx-author/SKILL.md +127 -25
  109. package/skills/docx-author/scripts/__pycache__/docx_battery.cpython-312.pyc +0 -0
  110. package/skills/docx-author/scripts/__pycache__/docx_build.cpython-312.pyc +0 -0
  111. package/skills/docx-author/scripts/__pycache__/docx_check.cpython-312.pyc +0 -0
  112. package/skills/docx-author/scripts/__pycache__/docx_layout.cpython-312.pyc +0 -0
  113. package/skills/docx-author/scripts/__pycache__/zh_prose.cpython-312.pyc +0 -0
  114. package/skills/docx-author/scripts/docx_battery.py +586 -0
  115. package/skills/docx-author/scripts/docx_build.py +995 -0
  116. package/skills/docx-author/scripts/docx_check.py +1306 -0
  117. package/skills/docx-author/scripts/docx_doc.py +14 -154
  118. package/skills/docx-author/scripts/docx_layout.py +490 -0
  119. package/skills/docx-author/scripts/zh_prose.py +639 -0
  120. package/skills/docx-author/trigger-cases.json +58 -0
  121. package/skills/echo-brief/SKILL.md +84 -0
  122. package/skills/echo-brief/references/echo-format.md +68 -0
  123. package/skills/echo-brief/trigger-cases.json +40 -0
  124. package/skills/ecommerce-ops/trigger-cases.json +30 -0
  125. package/skills/education-training/trigger-cases.json +30 -0
  126. package/skills/ehs-safety/trigger-cases.json +30 -0
  127. package/skills/email-writing/trigger-cases.json +30 -0
  128. package/skills/eng-ai/trigger-cases.json +30 -0
  129. package/skills/eng-architecture/trigger-cases.json +31 -0
  130. package/skills/eng-automation/trigger-cases.json +31 -0
  131. package/skills/eng-collaboration/trigger-cases.json +30 -0
  132. package/skills/eng-complex-env/trigger-cases.json +30 -0
  133. package/skills/eng-data-platform/trigger-cases.json +31 -0
  134. package/skills/eng-database/trigger-cases.json +31 -0
  135. package/skills/eng-develop/trigger-cases.json +30 -0
  136. package/skills/eng-docs/SKILL.md +24 -0
  137. package/skills/eng-docs/trigger-cases.json +30 -0
  138. package/skills/eng-efficiency/trigger-cases.json +30 -0
  139. package/skills/eng-infra/trigger-cases.json +30 -0
  140. package/skills/eng-integration/trigger-cases.json +31 -0
  141. package/skills/eng-legacy/trigger-cases.json +31 -0
  142. package/skills/eng-observability/trigger-cases.json +31 -0
  143. package/skills/eng-ops/trigger-cases.json +31 -0
  144. package/skills/eng-performance/trigger-cases.json +31 -0
  145. package/skills/eng-planning/trigger-cases.json +31 -0
  146. package/skills/eng-quality/SKILL.md +8 -0
  147. package/skills/eng-quality/trigger-cases.json +31 -0
  148. package/skills/eng-release/trigger-cases.json +31 -0
  149. package/skills/eng-reliability/trigger-cases.json +31 -0
  150. package/skills/eng-requirements/trigger-cases.json +12 -0
  151. package/skills/eng-research/trigger-cases.json +30 -0
  152. package/skills/eng-security/trigger-cases.json +31 -0
  153. package/skills/eng-ux/trigger-cases.json +30 -0
  154. package/skills/engineering-chain/trigger-cases.json +30 -0
  155. package/skills/env-offline/trigger-cases.json +31 -0
  156. package/skills/env-private-deploy/trigger-cases.json +31 -0
  157. package/skills/env-xinchuang/trigger-cases.json +31 -0
  158. package/skills/equipment-tpm/trigger-cases.json +30 -0
  159. package/skills/esg-report/trigger-cases.json +30 -0
  160. package/skills/event-management/trigger-cases.json +30 -0
  161. package/skills/excel-analysis-chain/SKILL.md +17 -4
  162. package/skills/excel-analysis-chain/trigger-cases.json +31 -0
  163. package/skills/explain-codebase/trigger-cases.json +11 -0
  164. package/skills/file-ingest/trigger-cases.json +30 -0
  165. package/skills/finance-analysis/trigger-cases.json +31 -0
  166. package/skills/finance-chain/trigger-cases.json +31 -0
  167. package/skills/financial-modeling/trigger-cases.json +31 -0
  168. package/skills/find-simplifications/SKILL.md +43 -0
  169. package/skills/find-simplifications/trigger-cases.json +23 -0
  170. package/skills/foreign-trade/trigger-cases.json +30 -0
  171. package/skills/funnel-cohort/trigger-cases.json +30 -0
  172. package/skills/gov-document/trigger-cases.json +30 -0
  173. package/skills/gui-change-evidence/SKILL.md +47 -0
  174. package/skills/gui-change-evidence/trigger-cases.json +23 -0
  175. package/skills/hr-chain/trigger-cases.json +31 -0
  176. package/skills/hr-operations/trigger-cases.json +30 -0
  177. package/skills/info-disclosure/trigger-cases.json +31 -0
  178. package/skills/infra-gateway/trigger-cases.json +31 -0
  179. package/skills/infra-k8s/trigger-cases.json +31 -0
  180. package/skills/infra-mq/trigger-cases.json +30 -0
  181. package/skills/insurance-advisory/trigger-cases.json +30 -0
  182. package/skills/internal-audit/trigger-cases.json +30 -0
  183. package/skills/ip-management/trigger-cases.json +31 -0
  184. package/skills/ipo-listing/trigger-cases.json +31 -0
  185. package/skills/it-audit/trigger-cases.json +31 -0
  186. package/skills/itsm-ops/trigger-cases.json +31 -0
  187. package/skills/knowledge-sop/trigger-cases.json +31 -0
  188. package/skills/legal-chain/trigger-cases.json +31 -0
  189. package/skills/legal-contract/trigger-cases.json +30 -0
  190. package/skills/litigation-support/trigger-cases.json +31 -0
  191. package/skills/logistics-warehouse/trigger-cases.json +30 -0
  192. package/skills/long-doc-analysis/trigger-cases.json +31 -0
  193. package/skills/management-accounting/trigger-cases.json +30 -0
  194. package/skills/manufacturing-chain/trigger-cases.json +31 -0
  195. package/skills/manufacturing-quality/trigger-cases.json +30 -0
  196. package/skills/marketing-analytics/trigger-cases.json +31 -0
  197. package/skills/marketing-chain/trigger-cases.json +31 -0
  198. package/skills/meeting-minutes/trigger-cases.json +30 -0
  199. package/skills/metrics-system/trigger-cases.json +31 -0
  200. package/skills/negotiation-prep/trigger-cases.json +30 -0
  201. package/skills/obs-prometheus/trigger-cases.json +31 -0
  202. package/skills/office-automation/trigger-cases.json +31 -0
  203. package/skills/okr-review/trigger-cases.json +30 -0
  204. package/skills/ops-fleet/trigger-cases.json +31 -0
  205. package/skills/ops-linux/trigger-cases.json +31 -0
  206. package/skills/optimization-solver/trigger-cases.json +30 -0
  207. package/skills/patent-disclosure/SKILL.md +105 -0
  208. package/skills/patent-disclosure/references/figures.md +110 -0
  209. package/skills/patent-disclosure/references/outline.md +162 -0
  210. package/skills/patent-disclosure/scripts/patent_docx.py +230 -0
  211. package/skills/patent-disclosure/trigger-cases.json +31 -0
  212. package/skills/patent-drafting/SKILL.md +108 -0
  213. package/skills/patent-drafting/trigger-cases.json +31 -0
  214. package/skills/patent-portfolio/SKILL.md +81 -0
  215. package/skills/patent-portfolio/trigger-cases.json +31 -0
  216. package/skills/pdf-toolkit/trigger-cases.json +31 -0
  217. package/skills/perf-optimize/trigger-cases.json +31 -0
  218. package/skills/pivot-crosstab/trigger-cases.json +30 -0
  219. package/skills/policy-analysis/trigger-cases.json +31 -0
  220. package/skills/portfolio-analysis/trigger-cases.json +31 -0
  221. package/skills/ppt-chain/SKILL.md +14 -6
  222. package/skills/ppt-chain/trigger-cases.json +31 -0
  223. package/skills/pptx-author/SKILL.md +86 -33
  224. package/skills/pptx-author/scripts/__pycache__/pptx_check.cpython-312.pyc +0 -0
  225. package/skills/pptx-author/scripts/__pycache__/pptx_deck.cpython-312.pyc +0 -0
  226. package/skills/pptx-author/scripts/__pycache__/pptx_layout.cpython-312.pyc +0 -0
  227. package/skills/pptx-author/scripts/pptx_battery.py +178 -0
  228. package/skills/pptx-author/scripts/pptx_build.py +119 -0
  229. package/skills/pptx-author/scripts/pptx_check.py +1182 -0
  230. package/skills/pptx-author/scripts/pptx_deck.py +736 -145
  231. package/skills/pptx-author/scripts/pptx_layout.py +384 -0
  232. package/skills/pptx-author/trigger-cases.json +15 -0
  233. package/skills/pr-comms/trigger-cases.json +30 -0
  234. package/skills/procurement-supply/trigger-cases.json +31 -0
  235. package/skills/product-design/trigger-cases.json +31 -0
  236. package/skills/production-planning/trigger-cases.json +31 -0
  237. package/skills/project-management/trigger-cases.json +31 -0
  238. package/skills/project-proposal/trigger-cases.json +31 -0
  239. package/skills/prose-standard/SKILL.md +53 -0
  240. package/skills/prose-standard/trigger-cases.json +23 -0
  241. package/skills/qa-api-automation/trigger-cases.json +31 -0
  242. package/skills/qa-mobile-automation/trigger-cases.json +31 -0
  243. package/skills/qa-ui-automation/trigger-cases.json +31 -0
  244. package/skills/quant-analysis/trigger-cases.json +31 -0
  245. package/skills/rag-triage/SKILL.md +64 -0
  246. package/skills/rag-triage/evals.json +57 -0
  247. package/skills/rag-triage/references/triage-playbook.md +75 -0
  248. package/skills/rag-triage/trigger-cases.json +31 -0
  249. package/skills/real-estate-property/trigger-cases.json +30 -0
  250. package/skills/refactor-safely/SKILL.md +1 -1
  251. package/skills/refactor-safely/trigger-cases.json +30 -0
  252. package/skills/regression-forecast/trigger-cases.json +31 -0
  253. package/skills/release-checklist/trigger-cases.json +31 -0
  254. package/skills/report-craft/SKILL.md +76 -0
  255. package/skills/report-craft/references/feasibility.md +118 -0
  256. package/skills/report-craft/references/review-checklist.md +51 -0
  257. package/skills/report-craft/references/visuals.md +114 -0
  258. package/skills/report-craft/references/writing.md +80 -0
  259. package/skills/report-craft/scripts/__pycache__/chart_render.cpython-312.pyc +0 -0
  260. package/skills/report-craft/scripts/__pycache__/fin_model.cpython-312.pyc +0 -0
  261. package/skills/report-craft/scripts/__pycache__/project_facts.cpython-312.pyc +0 -0
  262. package/skills/report-craft/scripts/chart_render.py +1222 -0
  263. package/skills/report-craft/scripts/fin_model.py +602 -0
  264. package/skills/report-craft/scripts/project_facts.py +580 -0
  265. package/skills/report-craft/scripts/report_battery.py +349 -0
  266. package/skills/report-craft/trigger-cases.json +15 -0
  267. package/skills/retail-store-ops/trigger-cases.json +30 -0
  268. package/skills/risk-compliance/trigger-cases.json +31 -0
  269. package/skills/scope-creep/SKILL.md +45 -0
  270. package/skills/scope-creep/trigger-cases.json +7 -0
  271. package/skills/sec-auth/trigger-cases.json +31 -0
  272. package/skills/sec-compliance/trigger-cases.json +31 -0
  273. package/skills/securities-chain/trigger-cases.json +31 -0
  274. package/skills/securities-research/trigger-cases.json +31 -0
  275. package/skills/security-audit/trigger-cases.json +31 -0
  276. package/skills/slides-html/SKILL.md +25 -10
  277. package/skills/slides-html/trigger-cases.json +11 -0
  278. package/skills/sql-analysis/SKILL.md +110 -0
  279. package/skills/sql-analysis/trigger-cases.json +34 -0
  280. package/skills/sql-tuning/trigger-cases.json +31 -0
  281. package/skills/statistical-testing/trigger-cases.json +31 -0
  282. package/skills/strategy-planning/trigger-cases.json +30 -0
  283. package/skills/supply-chain/trigger-cases.json +31 -0
  284. package/skills/tax-compliance/trigger-cases.json +30 -0
  285. package/skills/tech-doc/SKILL.md +262 -0
  286. package/skills/tech-doc/scripts/__pycache__/archive_battery.cpython-312.pyc +0 -0
  287. package/skills/tech-doc/scripts/__pycache__/archive_build.cpython-312.pyc +0 -0
  288. package/skills/tech-doc/scripts/__pycache__/archive_check.cpython-312.pyc +0 -0
  289. package/skills/tech-doc/scripts/__pycache__/archive_spec.cpython-312.pyc +0 -0
  290. package/skills/tech-doc/scripts/__pycache__/doc_templates.cpython-312.pyc +0 -0
  291. package/skills/tech-doc/scripts/archive_battery.py +860 -0
  292. package/skills/tech-doc/scripts/archive_build.py +599 -0
  293. package/skills/tech-doc/scripts/archive_check.py +1307 -0
  294. package/skills/tech-doc/scripts/archive_spec.py +499 -0
  295. package/skills/tech-doc/scripts/doc_templates.py +624 -0
  296. package/skills/tech-doc/trigger-cases.json +57 -0
  297. package/skills/tech-research/trigger-cases.json +31 -0
  298. package/skills/tender-bidding/trigger-cases.json +31 -0
  299. package/skills/translation-pro/trigger-cases.json +30 -0
  300. package/skills/treasury-mgmt/trigger-cases.json +31 -0
  301. package/skills/trim-cot-leakage/SKILL.md +58 -0
  302. package/skills/trim-cot-leakage/trigger-cases.json +23 -0
  303. package/skills/web-craft/SKILL.md +103 -0
  304. package/skills/web-craft/references/craft-checklist.md +75 -0
  305. package/skills/web-craft/references/design-direction.md +122 -0
  306. package/skills/web-craft/references/h5-mobile.md +100 -0
  307. package/skills/web-craft/references/motion.md +136 -0
  308. package/skills/web-craft/references/recipes.md +74 -0
  309. package/skills/web-craft/templates/wedding-invitation.html +1180 -0
  310. package/skills/web-craft/trigger-cases.json +14 -0
  311. package/skills/web-scraping/trigger-cases.json +34 -0
  312. package/skills/web-search/SKILL.md +11 -10
  313. package/skills/web-search/trigger-cases.json +31 -0
  314. package/skills/weekly-report/SKILL.md +134 -0
  315. package/skills/weekly-report/trigger-cases.json +11 -0
  316. package/skills/write-tests/trigger-cases.json +31 -0
  317. package/skills/xlsx-analysis/SKILL.md +143 -77
  318. package/skills/xlsx-analysis/scripts/__pycache__/data_profile.cpython-312.pyc +0 -0
  319. package/skills/xlsx-analysis/scripts/__pycache__/xlsx_build.cpython-312.pyc +0 -0
  320. package/skills/xlsx-analysis/scripts/__pycache__/xlsx_check.cpython-312.pyc +0 -0
  321. package/skills/xlsx-analysis/scripts/__pycache__/xlsx_layout.cpython-312.pyc +0 -0
  322. package/skills/xlsx-analysis/scripts/__pycache__/xlsx_toolkit.cpython-312.pyc +0 -0
  323. package/skills/xlsx-analysis/scripts/data_profile.py +391 -0
  324. package/skills/xlsx-analysis/scripts/xlsx_battery.py +389 -0
  325. package/skills/xlsx-analysis/scripts/xlsx_build.py +522 -0
  326. package/skills/xlsx-analysis/scripts/xlsx_check.py +924 -0
  327. package/skills/xlsx-analysis/scripts/xlsx_layout.py +235 -0
  328. package/skills/xlsx-analysis/scripts/xlsx_style.py +28 -66
  329. package/skills/xlsx-analysis/scripts/xlsx_toolkit.py +61 -5
  330. package/skills/xlsx-analysis/trigger-cases.json +59 -0
  331. package/squads/hc-defense.md +47 -0
  332. package/squads/hc-rdarchive.md +110 -0
  333. package/squads/hc-redteam.md +50 -0
  334. package/squads/hc-weekly.md +125 -0
  335. package/src/account.js +1 -1
  336. package/src/acp.js +1 -0
  337. package/src/advisor.js +1 -1
  338. package/src/agent.js +1 -1
  339. package/src/api.js +1 -1
  340. package/src/archaeology.js +1 -0
  341. package/src/ask-ui.js +1 -0
  342. package/src/assets-import.js +1 -1
  343. package/src/autofix.js +1 -1
  344. package/src/automation-tools.js +1 -1
  345. package/src/automation.js +1 -1
  346. package/src/autorun.js +1 -1
  347. package/src/banner.js +1 -1
  348. package/src/capability-probe.js +1 -0
  349. package/src/checkpoints.js +1 -1
  350. package/src/code-tools.js +1 -0
  351. package/src/codeindex.js +1 -1
  352. package/src/codemode.js +1 -0
  353. package/src/command-bridge.js +1 -0
  354. package/src/command-ui.js +1 -0
  355. package/src/commands.js +1 -1
  356. package/src/compaction.js +1 -1
  357. package/src/computer.js +1 -1
  358. package/src/config.js +1 -1
  359. package/src/consult.js +1 -1
  360. package/src/context-report.js +1 -1
  361. package/src/context-window.js +1 -0
  362. package/src/context.js +1 -1
  363. package/src/crew.js +1 -0
  364. package/src/crush.js +1 -0
  365. package/src/daemon.js +1 -1
  366. package/src/decisions.js +1 -1
  367. package/src/depaudit.js +1 -0
  368. package/src/device.js +1 -1
  369. package/src/diagram-draw.js +1 -0
  370. package/src/diagram-layouts.js +1 -0
  371. package/src/diagram-raster.js +1 -0
  372. package/src/diagram.js +1 -0
  373. package/src/dictation.js +1 -0
  374. package/src/diffview.js +1 -1
  375. package/src/doctor.js +1 -1
  376. package/src/docx-tools.js +1 -0
  377. package/src/errkind.js +1 -1
  378. package/src/evidence.js +1 -0
  379. package/src/executors.js +1 -1
  380. package/src/expert-catalog.js +1 -1
  381. package/src/experts-store.js +1 -1
  382. package/src/experts.js +1 -1
  383. package/src/external-agents.js +1 -0
  384. package/src/forks.js +1 -1
  385. package/src/fs-observe.js +1 -0
  386. package/src/gitflow.js +1 -1
  387. package/src/goalround.js +1 -0
  388. package/src/hooks.js +1 -1
  389. package/src/input.js +1 -1
  390. package/src/insights.js +1 -1
  391. package/src/jobs.js +1 -0
  392. package/src/kbsync.js +1 -1
  393. package/src/lsp.js +1 -0
  394. package/src/mcp-apps.js +1 -0
  395. package/src/mcp.js +1 -1
  396. package/src/memory.js +1 -1
  397. package/src/notify.js +1 -1
  398. package/src/permissions.js +1 -1
  399. package/src/plan-limits.js +1 -0
  400. package/src/policy.js +1 -0
  401. package/src/pptx-tools.js +1 -0
  402. package/src/presence.js +1 -1
  403. package/src/privatedir.js +1 -0
  404. package/src/pyruntime.js +1 -1
  405. package/src/radar.js +1 -0
  406. package/src/render.js +1 -1
  407. package/src/repl.js +1 -1
  408. package/src/report-tools.js +1 -0
  409. package/src/routing.js +1 -0
  410. package/src/sandbox-probe.js +1 -0
  411. package/src/sandbox-win-launcher.mjs +156 -0
  412. package/src/sandbox.js +1 -0
  413. package/src/scan.js +1 -1
  414. package/src/schedule.js +1 -1
  415. package/src/scopecreep.js +1 -0
  416. package/src/sdk.js +1 -0
  417. package/src/selection.js +1 -0
  418. package/src/session-events.js +1 -0
  419. package/src/session.js +1 -1
  420. package/src/sessionindex.js +1 -0
  421. package/src/sessionlog.js +1 -0
  422. package/src/skill-catalog.js +1 -0
  423. package/src/skill-lint.js +1 -0
  424. package/src/skill-optimize.js +1 -0
  425. package/src/skill-scan.js +1 -0
  426. package/src/skills.js +1 -1
  427. package/src/spill.js +1 -0
  428. package/src/squad.js +1 -1
  429. package/src/subagent.js +1 -1
  430. package/src/surface-state.js +1 -0
  431. package/src/tapd.js +1 -0
  432. package/src/terminal-select.js +1 -0
  433. package/src/terminal.js +1 -0
  434. package/src/test-runner.js +1 -0
  435. package/src/todo.js +1 -1
  436. package/src/toolpipe.js +1 -0
  437. package/src/tools.js +1 -1
  438. package/src/toon.js +1 -0
  439. package/src/transcript.js +1 -1
  440. package/src/tui/app.js +1 -1
  441. package/src/tui/command-menu.js +1 -0
  442. package/src/tui/progress.js +1 -0
  443. package/src/tui/scroll.js +1 -0
  444. package/src/tui/welcome.js +1 -0
  445. package/src/tui/workbench.js +1 -0
  446. package/src/ui-spec.js +1 -0
  447. package/src/uitree.js +1 -0
  448. package/src/uninstall.js +1 -1
  449. package/src/visual.js +1 -1
  450. package/src/voice-form.js +1 -0
  451. package/src/voice.js +1 -0
  452. package/src/watch.js +1 -1
  453. package/src/web-audit.js +1 -0
  454. package/src/web-cdp.js +1 -0
  455. package/src/web-inspect.js +1 -0
  456. package/src/websearch.js +1 -0
  457. package/src/weekly.js +1 -0
  458. package/src/workflow.js +1 -0
  459. package/src/worklog.js +1 -0
  460. package/src/xlsx-tools.js +1 -0
  461. package/ui/command-picker.js +79 -0
  462. package/skills/ab-testing/scripts/__pycache__/ab_test.cpython-312.pyc +0 -0
  463. package/skills/accounting-ops/scripts/__pycache__/acct_tools.cpython-312.pyc +0 -0
  464. package/skills/anomaly-detection/scripts/__pycache__/anomaly.cpython-312.pyc +0 -0
  465. package/skills/audit-assist/scripts/__pycache__/audit_sampling.cpython-312.pyc +0 -0
  466. package/skills/banking-credit/scripts/__pycache__/credit_metrics.cpython-312.pyc +0 -0
  467. package/skills/data-report-pro/scripts/__pycache__/bigdata.cpython-312.pyc +0 -0
  468. package/skills/data-wrangling/scripts/__pycache__/join_tools.cpython-312.pyc +0 -0
  469. package/skills/ecommerce-ops/scripts/__pycache__/gmv_decompose.cpython-312.pyc +0 -0
  470. package/skills/funnel-cohort/scripts/__pycache__/funnel.cpython-312.pyc +0 -0
  471. package/skills/management-accounting/scripts/__pycache__/costing.cpython-312.pyc +0 -0
  472. package/skills/manufacturing-quality/scripts/__pycache__/spc.cpython-312.pyc +0 -0
  473. package/skills/marketing-analytics/scripts/__pycache__/rfm.cpython-312.pyc +0 -0
  474. package/skills/optimization-solver/scripts/__pycache__/solver.cpython-312.pyc +0 -0
  475. package/skills/pivot-crosstab/scripts/__pycache__/pivot_tools.cpython-312.pyc +0 -0
  476. package/skills/portfolio-analysis/scripts/__pycache__/portfolio.cpython-312.pyc +0 -0
  477. package/skills/procurement-supply/scripts/__pycache__/supply.cpython-312.pyc +0 -0
  478. package/skills/production-planning/scripts/__pycache__/mrp_capacity.cpython-312.pyc +0 -0
  479. package/skills/project-management/scripts/__pycache__/cpm.cpython-312.pyc +0 -0
  480. package/skills/quant-analysis/scripts/__pycache__/quant.cpython-312.pyc +0 -0
  481. package/skills/real-estate-property/scripts/__pycache__/property_calc.cpython-312.pyc +0 -0
  482. package/skills/regression-forecast/scripts/__pycache__/regress.cpython-312.pyc +0 -0
  483. package/skills/securities-research/scripts/__pycache__/valuation.cpython-312.pyc +0 -0
  484. package/skills/statistical-testing/scripts/__pycache__/stat_tests.cpython-312.pyc +0 -0
  485. package/skills/treasury-mgmt/scripts/__pycache__/cashflow_forecast.cpython-312.pyc +0 -0
@@ -0,0 +1,30 @@
1
+ {
2
+ "skill": "dev-mobile",
3
+ "cases": [
4
+ {
5
+ "id": "pos-1",
6
+ "prompt": "Android 启动优化和包体积审计",
7
+ "shouldTrigger": true
8
+ },
9
+ {
10
+ "id": "pos-2",
11
+ "prompt": "iOS 上架合规整改,权限与隐私怎么过",
12
+ "shouldTrigger": true
13
+ },
14
+ {
15
+ "id": "pos-3",
16
+ "prompt": "崩溃率红线,符号表和热修怎么管",
17
+ "shouldTrigger": true
18
+ },
19
+ {
20
+ "id": "neg-1",
21
+ "prompt": "做一次微信小程序的选型",
22
+ "shouldTrigger": false
23
+ },
24
+ {
25
+ "id": "neg-2",
26
+ "prompt": "写一段前端路由权限",
27
+ "shouldTrigger": false
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "skill": "dev-node",
3
+ "cases": [
4
+ {
5
+ "id": "pos-1",
6
+ "prompt": "Node 服务 OOMKilled,内存泄漏怎么排",
7
+ "shouldTrigger": true
8
+ },
9
+ {
10
+ "id": "pos-2",
11
+ "prompt": "事件循环阻塞,接口卡顿怎么定位",
12
+ "shouldTrigger": true
13
+ },
14
+ {
15
+ "id": "pos-3",
16
+ "prompt": "NestJS 还是 Fastify,BFF 怎么定位",
17
+ "shouldTrigger": true
18
+ },
19
+ {
20
+ "id": "neg-1",
21
+ "prompt": "写一段前端组件的状态管理",
22
+ "shouldTrigger": false
23
+ },
24
+ {
25
+ "id": "neg-2",
26
+ "prompt": "做一次 Python 环境依赖治理",
27
+ "shouldTrigger": false
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "skill": "dev-php",
3
+ "cases": [
4
+ {
5
+ "id": "pos-1",
6
+ "prompt": "PHP 5.x 升到 8,rector 怎么用",
7
+ "shouldTrigger": true
8
+ },
9
+ {
10
+ "id": "pos-2",
11
+ "prompt": "FPM 调参和慢日志怎么看,OPcache 要不要开",
12
+ "shouldTrigger": true
13
+ },
14
+ {
15
+ "id": "pos-3",
16
+ "prompt": "Laravel Eloquent N+1 和反序列化安全",
17
+ "shouldTrigger": true
18
+ },
19
+ {
20
+ "id": "neg-1",
21
+ "prompt": "做一次 Java 依赖冲突仲裁",
22
+ "shouldTrigger": false
23
+ },
24
+ {
25
+ "id": "neg-2",
26
+ "prompt": "写一段 Node 的流处理",
27
+ "shouldTrigger": false
28
+ }
29
+ ]
30
+ }
@@ -75,6 +75,27 @@ cProfile 找热点函数(配 snakeviz 可视化);**py-spy 生产可用**(无侵
75
75
 
76
76
  **作业包**:`scripts/venv-doctor.sh`(解释器身份/venv 状态/镜像源/锁文件纪律/同名遮蔽等坑位一键体检)。
77
77
 
78
+ ## 机器自查(别只靠记忆过这张自查单)
79
+
80
+ 上面「常见坑 TOP」「asyncio 判据」「pandas 性能」里的大半条目已经做成机器规则:
81
+
82
+ ```
83
+ code_inspect(path) # 语言陷阱 + pandas + 安全,一次过
84
+ run_tests(path) # 跑测试并解析出「失败在哪、期望什么、实际什么、对应哪行业务代码」
85
+ run_tests(path, filter="…") # 只跑相关用例,定位问题时比全量快得多
86
+ code_inspect(path, only="framework") # 只看 pandas 用法
87
+ test_plan(path) # 补单测前先算清该测几条路、边界在哪
88
+ ```
89
+
90
+ 机器能查的:可变默认参数 · 类属性共享可变 · 闭包晚绑定 · `is` 比字面量 · 裸/宽 except ·
91
+ `except` 顺序错(子类分支永不执行)· `raise` 不带 from · 遍历时增删容器 · 遮蔽内置名 ·
92
+ 生产代码用 assert · `open()` 无 encoding · naive datetime · `Decimal(浮点)` ·
93
+ `os.path.join` 吞前缀 · async 里混同步库 · pandas 链式赋值/无 dtype/append/iterrows/inplace ·
94
+ `shell=True` · `yaml.load` · `pickle.loads`。
95
+
96
+ 机器查不了、仍要人看的:GIL 与多进程/多线程的选型是否正确、循环 import 是不是分层问题、
97
+ `chunksize` 与换引擎(polars/duckdb)的临界点、fixture 作用域是否恰当。**这几项评审时重点看。**
98
+
78
99
  ## 使用纪律
79
100
 
80
101
  无锁定文件不部署;脚本三无(无日志/无参数/无退出码)不上生产;
@@ -0,0 +1,30 @@
1
+ {
2
+ "skill": "dev-python",
3
+ "cases": [
4
+ {
5
+ "id": "pos-1",
6
+ "prompt": "Python 环境依赖混乱,uv 和 pyproject 怎么治",
7
+ "shouldTrigger": true
8
+ },
9
+ {
10
+ "id": "pos-2",
11
+ "prompt": "pandas 向量化怎么写,cProfile 怎么用",
12
+ "shouldTrigger": true
13
+ },
14
+ {
15
+ "id": "pos-3",
16
+ "prompt": "用 py-spy 做性能画像,脚本怎么上生产",
17
+ "shouldTrigger": true
18
+ },
19
+ {
20
+ "id": "neg-1",
21
+ "prompt": "写一段 Go 的错误处理",
22
+ "shouldTrigger": false
23
+ },
24
+ {
25
+ "id": "neg-2",
26
+ "prompt": "做一次前端构建缓存优化",
27
+ "shouldTrigger": false
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "skill": "dev-rust",
3
+ "cases": [
4
+ {
5
+ "id": "pos-1",
6
+ "prompt": "Rust 借用检查斗不过,所有权怎么理",
7
+ "shouldTrigger": true
8
+ },
9
+ {
10
+ "id": "pos-2",
11
+ "prompt": "tokio 异步取消安全和持锁 await 怎么办",
12
+ "shouldTrigger": true
13
+ },
14
+ {
15
+ "id": "pos-3",
16
+ "prompt": "thiserror 和 anyhow 怎么分工,unsafe 怎么最小化",
17
+ "shouldTrigger": true
18
+ },
19
+ {
20
+ "id": "neg-1",
21
+ "prompt": "写一段 C++ 智能指针代码",
22
+ "shouldTrigger": false
23
+ },
24
+ {
25
+ "id": "neg-2",
26
+ "prompt": "做一次 Go 的 goroutine 泄漏排查",
27
+ "shouldTrigger": false
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "skill": "dev-toolchain",
3
+ "cases": [
4
+ {
5
+ "id": "pos-1",
6
+ "prompt": "配新开发环境,Git 工作流和提交粒度怎么定",
7
+ "shouldTrigger": true
8
+ },
9
+ {
10
+ "id": "pos-2",
11
+ "prompt": "pre-commit 门禁和 Lint Format 怎么统一",
12
+ "shouldTrigger": true
13
+ },
14
+ {
15
+ "id": "pos-3",
16
+ "prompt": "包管理私服和国内镜像怎么配",
17
+ "shouldTrigger": true
18
+ },
19
+ {
20
+ "id": "neg-1",
21
+ "prompt": "写一份规范的提交信息",
22
+ "shouldTrigger": false,
23
+ "lexical": false
24
+ },
25
+ {
26
+ "id": "neg-2",
27
+ "prompt": "做一次 CI 流水线的缓存优化",
28
+ "shouldTrigger": false
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "skill": "doc-chain",
3
+ "cases": [
4
+ {
5
+ "id": "pos-1",
6
+ "prompt": "30 页报告从调研到定稿,整条链怎么走",
7
+ "shouldTrigger": true
8
+ },
9
+ {
10
+ "id": "pos-2",
11
+ "prompt": "要写正式文档但文体还没定",
12
+ "shouldTrigger": true
13
+ },
14
+ {
15
+ "id": "pos-3",
16
+ "prompt": "多人协作写长文档,怎么分章合成评审",
17
+ "shouldTrigger": true
18
+ },
19
+ {
20
+ "id": "neg-1",
21
+ "prompt": "帮我写个会议纪要",
22
+ "shouldTrigger": false,
23
+ "lexical": false
24
+ },
25
+ {
26
+ "id": "neg-2",
27
+ "prompt": "做一次合同版本比对",
28
+ "shouldTrigger": false
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "skill": "doc-compare",
3
+ "cases": [
4
+ {
5
+ "id": "pos-1",
6
+ "prompt": "比对两份文档,看改了哪里",
7
+ "shouldTrigger": true
8
+ },
9
+ {
10
+ "id": "pos-2",
11
+ "prompt": "和范本差在哪,出个红线版",
12
+ "shouldTrigger": true
13
+ },
14
+ {
15
+ "id": "pos-3",
16
+ "prompt": "多方案差异表怎么做",
17
+ "shouldTrigger": true
18
+ },
19
+ {
20
+ "id": "neg-1",
21
+ "prompt": "帮我写一份 Word 方案",
22
+ "shouldTrigger": false
23
+ },
24
+ {
25
+ "id": "neg-2",
26
+ "prompt": "做一次代码 diff 的评审",
27
+ "shouldTrigger": false
28
+ }
29
+ ]
30
+ }
@@ -1,39 +1,141 @@
1
1
  ---
2
2
  name: docx-author
3
- description: 编写/生成 Word 文档(报告、周报、方案、纪要、总结)。当用户说"写个文档/Word/docx/报告/方案/会议纪要"且期望文件产物时使用。
4
- version: 1.0.0
3
+ description: 生成与校对 Word 文档(.docx):Word 报告、Word 方案、说明书、总结、纪要、任务书、验收材料。当用户说"写个文档/Word/docx/报告/方案/说明书"且期望文件产物,或说"文档排版有问题/文档格式检查/文档校对/错别字/标点混用/图表编号/段落缩进/文档 AI 味太重要去套话"时使用。生成走 create_doc(版心、字号、行距、缩进、表格列宽、插图比例、图表题注编号全由引擎算),校对走 docx_inspect(结构·排版·表格·插图·文字·AI 味·一致性七类体检,可自动校正另存)。
4
+ version: 2.0.0
5
5
  ---
6
6
 
7
- # Word 文档生成(经 run_python 执行,python-docx 已随托管运行时就绪)
7
+ # Word 文档生成与文档体检
8
8
 
9
- ## 流程
9
+ **Word 的排版事故不是审美问题,是一致性问题。** PPT 出事你一眼看得见(文字出框、图片变长脸);
10
+ Word 出事要翻到第 18 页才发现:这一段缩进了下一段没缩、正文混着三种字号、图表编号跳了号、
11
+ 表格宽出版心右边一列打印时被裁掉、通篇「有效提升」却没有一个数字。
12
+ 这些在保存时都不报错,屏幕上也不刺眼——等评审专家翻到那一页才现形。
10
13
 
11
- 1. **大纲先行**:先在回复里给出章节大纲(标题层级 + 每节要点),重要文档让用户确认再落盘。
12
- 2. **内容走 Markdown 中转(防截断的关键)**:
13
- - 用 write_file(长文加 `append=true` 分段)把全文写成 `草稿.md`——结构约定:`#`/`##`/`###` 标题、`-` 列表、`1.` 有序列表、`|` 表格、`**粗体**`、普通行=正文段落;
14
- - `read_skill_file` 读本技能 `scripts/docx_doc.py`,执行 `md_to_docx('草稿.md', '产物.docx', title=..., author=...)` 一次转出成品——封面、目录域、页眉页脚页码、中文字体、标题样式全自动。
15
- - 内容不长(<200 行)可跳过中转,直接在代码里用 helper 逐节构建。
16
- 3. **验收(必做)**:`verify('产物.docx')` 重开打印标题树/段落数/表格数,并对照大纲检查无缺节。
14
+ 所以本技能两件事:**排版不由你算,出稿后再机检一遍。**
17
15
 
18
- ## 样式约定(docx_doc.py 已内置,别再手搓)
16
+ ## 一、生成:用 `create_doc`,不要自己写 python-docx
19
17
 
20
- - 中文字体:正文宋体、标题黑体(west=Calibri),经 `w:eastAsia` 正确设置——只设 `font.name` 中文不生效是最常见的坑。
21
- - 目录:插入的是 TOC **域**,首次打开 Word 会提示按 F9 更新——在文末提示用户这一点,不要伪造静态目录。
22
- - 页码:页脚"第 X 页 共 Y 页"域。
23
- - 表格:默认 `Table Grid` 网格样式 + 表头加粗。
18
+ `create_doc(path, spec)` 是首选路径。你只给「哪一节写什么」,引擎负责所有尺寸:
24
19
 
25
- ## 分析/总结既有文档
20
+ ```jsonc
21
+ { "template": "研发任务书", "title": "智能运维平台研发任务书", "org": "数字技术研究院",
22
+ "doc_no": "YF〔2026〕14 号", "header": "智能运维平台研发任务书", "footer": "数字技术研究院",
23
+ "blocks": [
24
+ { "type": "h1", "text": "任务来源与依据" },
25
+ { "type": "p", "text": "依据院发〔2026〕3 号与合同 HT-2026-014 号下达。" },
26
+ { "type": "h1", "text": "技术指标" },
27
+ { "type": "p", "text": "强制性指标如表 1 所示,以第三方检测报告为准。" },
28
+ { "type": "table", "caption": "技术指标与判定依据",
29
+ "rows": [["指标","档次","指标值","测试方法","判定依据"],
30
+ ["平均故障发现时间","强制","≤ 8 分钟","连续 30 天生产采样","检测报告"]],
31
+ "note": "口径以合同附件三为准" },
32
+ { "type": "kv", "caption": "交付物清单",
33
+ "pairs": [["软件安装包","V1.0.0,光盘 2 份"], ["源代码","Git 全量归档 1 份"]] },
34
+ { "type": "figure", "image": "diagrams/arch.png", "caption": "总体架构" },
35
+ { "type": "signature", "roles": ["编制","审核","批准"], "org": "数字技术研究院" }
36
+ ]}
37
+ ```
26
38
 
27
- - 读别人给的 docx/pdf:优先 `read_document`(平台解析,支持超长分段通读);要精确到表格结构时再用 python-docx 遍历 `doc.tables`。
28
- - "总结成周报/纪要"类任务:先通读原文并列要点(在回复中),确认口径后再生成 docx。
39
+ **块类型**:h1–h4 标题(自动编号)/ p 正文 / bullets 无序 / ordered 有序 /
40
+ table 表格(题注在表**上**)/ kv 表单式两列表 / figure 插图(题注在图**下**)/
41
+ note 小字注 / signature 签字栏 / pagebreak 分页。
29
42
 
30
- ## 验收自查
43
+ **三档规范** `profile`:`tech` 技术文档(默认,A4·宋体小四·1.5 倍行距·首行缩进 2 字符)/
44
+ `gov` 党政机关公文 GB/T 9704(仿宋三号·固定行距·每面 22 行)/
45
+ `report` 科技报告·学术(固定 20 磅行距·十进制编号 1、1.1、1.1.1·图表按章编号)。
46
+ 传 `template`(十七类研发文档,见 [tech-doc](../tech-doc/SKILL.md))会自动选档位,
47
+ 并**核对必备章节、缺哪节直接报出来**。
31
48
 
32
- - [ ] 大纲与成品章节一一对应(verify 输出的标题树 print 过)
33
- - [ ] 目录域/页码已插入,且已提醒用户 Word 内按 F9 刷新目录
34
- - [ ] 中文在 Word 中字体正确(用了 helper 而非裸 add_paragraph)
35
- - [ ] 长文档没有因为单次工具参数过长被截断(走了 md 中转)
49
+ 引擎自动做完这些,不要自己再做一遍:封面 / 目录域 / 页眉页脚 / 页码(正文另起一节从第 1 页重算)/
50
+ 标题分级与自动编号 / 首行缩进 / 表格列宽按内容算并压进版心(表头加粗 + 跨页重复标题行)/
51
+ 插图等比缩放 / 图表题注自动编号。
36
52
 
37
- ## 附件
53
+ ### 长文档走 Markdown 中转(防截断的关键)
38
54
 
39
- - `scripts/docx_doc.py` — `md_to_docx()` Markdown→Word 转换(含封面/目录域/页脚页码/中文字体/表格)、`verify()` 重读校验;可直接执行自测
55
+ 超过两三千字的文档,别把全文塞进一次工具调用的参数里。先 `write_file`(长文加 `append=true`
56
+ 分段)写成 `草稿.md`,再 `create_doc(path=..., markdown_path='草稿.md')` 一次转出成品。
57
+ Markdown 约定:`#`/`##`/`###` 标题、`-` 无序、`1.` 有序、`|` 表格、`![题注](图片)` 插图、
58
+ `> 注` 小字注、`---` 分页;表格上一行写 `表:xxx` 作为表题。
59
+
60
+ **草稿阶段就 `docx_inspect('草稿.md')` 查一遍文字与 AI 味**——改 Markdown 比改 Word 便宜得多。
61
+
62
+ ### 配图
63
+
64
+ 工程图(架构/流程/时序/数据模型)用 `render_diagram`,数据图表用 `run_python` + matplotlib
65
+ (**先设中文字体**),出 PNG 再引用。Word 对 SVG 支持不稳,一律引 PNG。
66
+ 图宽由引擎按版心算,**不要自己指定宽高**——同时给宽和高就是把图拉变形的唯一原因。
67
+
68
+ ## 二、验收:`docx_inspect` 必修项清零才算做完
69
+
70
+ `create_doc` 已自动体检。用户拿来一份别人写的文档问「排版有没有问题」「帮我校对」,也是这个工具。
71
+
72
+ | 必修(打印出来就丢人) | 建议(能读,但不专业) | 提示 |
73
+ |---|---|---|
74
+ | 中文字体未生效(只设了西文名) | 正文字号与规范档位不符 | 页边距与档位不一致 |
75
+ | 正文字号不统一、同段多种字号 | 中文字体超过两种 | 标题折行超两行 |
76
+ | 首行缩进忽有忽无、用空格假缩进 | 行距设置混杂、正文误居中 | 段末多余空格 |
77
+ | 标题层级跳级、章节编号断号 | 空章节、连续空段、缺页码 | 缺目录域 |
78
+ | 表格超出版心(右列被裁) | 表头未加粗、长表无跨页重复标题行 | 列数过多、空格率高 |
79
+ | 图片损坏、被拉变形 | 分辨率 <120dpi 发虚、超版心高 | 浮动图片会乱跑 |
80
+ | 图表编号断号、引用了不存在的图表 | 缺题注、图表从未被正文引用 | 题注未居中 |
81
+ | 错别字、重复字、连续标点 | 中英标点混用、括号引号不配对 | 数值区间用了连字符 |
82
+ | — | 套话/黑话密度、段首雷同、段落与章节篇幅异常均匀、通篇缺数字锚点 | 空洞副词密度、破折号口癖 |
83
+ | — | 术语多种拼法、关键数字前后矛盾 | 全文无具体年月 |
84
+
85
+ `docx_inspect(path, fix=true)` 自动修**可确定性修**的那几类:补中文字体、统一字号、
86
+ 真缩进替换假缩进、去多余空段与行尾空格、半角标点转全角、表头加粗与跨页重复、
87
+ 表格缩回版心、图片恢复原比例并缩回版心、题注编号重排。
88
+ **另存 `-已校正.docx` 不覆盖原件**,并回报复检结果。
89
+ 改内容才能解决的(缺章节、缺数据、套话太多、章节失衡)它会如实说需要人改——**别假装修好了**。
90
+
91
+ ## 三、去 AI 味:体检只负责指出,改要靠这几条
92
+
93
+ 体检报「套话密度偏高」「段落长度异常均匀」时,不是删几个词就完事。真正的做法:
94
+
95
+ 1. **套话直接删,不补替代**。「值得注意的是,交付率提升到 98%」→「交付率提升到 98%」。
96
+ 承接性套话(综上所述/总的来说/由此可见)全文留一处就够。
97
+ 2. **空转动词换成具体动作**。「赋能业务闭环」→「把审批从 3 天缩到 4 小时」;
98
+ 「有效提升了效能」→给提升了多少,给不出数字就把这句删掉。
99
+ 3. **每段落一个可核对的锚点**:数量、日期、金额、比例、责任人、文号。
100
+ 体检报「通篇缺数字锚点」就是在说这一条。
101
+ 4. **篇幅按重要性分配,敢于让某节只有三行**。每节都写得一样长,是模板化最明显的指纹——
102
+ 人写东西天然参差。把核心章节扩到两倍,删掉凑数的段。
103
+ 5. **「首先/其次/最后」换成小标题或直接分条**,别用连接词假装有逻辑。
104
+ 6. **破折号大部分改成句号另起一句**(这是模型口癖里最显眼的一个)。
105
+ 7. **不要每段都以总结句收尾**,也不要每段用同样的方式开头。
106
+
107
+ 诚实优先于漂亮:写不出数据就说「暂无法量化」,遗留问题就列出来。
108
+ 评审专家一眼能看出哪些是凑的,凑的那部分只会招来更多提问。
109
+
110
+ ## 四、修改与校对既有文档
111
+
112
+ - 读别人的 docx/pdf:优先 `read_document`(平台解析,支持超长分段通读);
113
+ 要精确到表格结构时再用 `run_python` + python-docx 遍历 `doc.tables`。
114
+ - 「帮我改一下这份文档」:先 `docx_inspect` 出体检报告 → 把必修项按类归好告诉用户 →
115
+ 排版类问的是「要不要我直接 fix」,内容类要用户拍板(删哪节、补哪个数据)。
116
+ - 「总结成周报/纪要」:先通读原文并在回复里列要点,确认口径后再生成 docx。
117
+ - 改完**一定重跑一次体检**,并如实报出还剩什么。
118
+
119
+ ## 五、交付自查
120
+
121
+ - [ ] `docx_inspect` 必修 = 0(做不到就如实说明哪几项需要用户决定)
122
+ - [ ] 章节与确认过的大纲一一对应,没有空壳章节
123
+ - [ ] 图表都有题注、编号连续、正文都引用过(「如图 1 所示」)
124
+ - [ ] 关键数字(总投资/工期/指标值)在全文每处出现都相同
125
+ - [ ] 已提醒用户在 Word 中按 F9 刷新目录(目录是域,不是静态文本)
126
+ - [ ] 文件名是中文描述性名称,已 print 产物清单
127
+
128
+ ## 附件(日常用 `create_doc` / `docx_inspect` 工具即可,不必读源码)
129
+
130
+ - `scripts/docx_layout.py` — 排版度量内核:三档规范、版心几何、中英文字宽表、折行、
131
+ 表格列宽分配、图片等比、标题与题注编号。**建版与体检共用同一把尺**(用两套尺就会
132
+ 出现「生成端说没事、体检端说超宽」的自相矛盾)。
133
+ - `scripts/docx_build.py` — 建版器:十一种块、先量后画、按模板核对必备章节、`save()` 自带体检。
134
+ `python docx_build.py --demo 出.docx` 可直接自测。
135
+ - `scripts/docx_check.py` — 体检与自动校正:`inspect()` / `report()` / `fix()`;
136
+ 也可 CLI 跑 `python docx_check.py 报告.docx --fix`。
137
+ - `scripts/zh_prose.py` — 中文文字质量:错别字、易混词、标点、术语一致、**AI 味识别**。
138
+ 只吃纯文本,`python zh_prose.py 草稿.md` 可单独查 Markdown 草稿。
139
+ - `scripts/docx_battery.py` — 压力测试:随机内容 × 三档规范跑几百份断言零事故,
140
+ **反向造 26 类缺陷验证体检不是瞎子**,再跑 9 项反误报、带 BOM 的 Markdown 不变量与 13 项校正闭环。
141
+ 改了上面任何一个引擎文件,**必须重跑**:`python docx_battery.py 300`。