@huicai/cli 2026.804.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 (486) hide show
  1. package/LICENSE +391 -32
  2. package/README.md +176 -10
  3. package/bin/huicai.js +166 -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 -0
  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 -0
  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 -0
  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 -0
  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 -0
  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 -0
  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/vision.js +1 -0
  450. package/src/visual.js +1 -0
  451. package/src/voice-form.js +1 -0
  452. package/src/voice.js +1 -0
  453. package/src/watch.js +1 -1
  454. package/src/web-audit.js +1 -0
  455. package/src/web-cdp.js +1 -0
  456. package/src/web-inspect.js +1 -0
  457. package/src/websearch.js +1 -0
  458. package/src/weekly.js +1 -0
  459. package/src/workflow.js +1 -0
  460. package/src/worklog.js +1 -0
  461. package/src/xlsx-tools.js +1 -0
  462. package/ui/command-picker.js +79 -0
  463. package/skills/ab-testing/scripts/__pycache__/ab_test.cpython-312.pyc +0 -0
  464. package/skills/accounting-ops/scripts/__pycache__/acct_tools.cpython-312.pyc +0 -0
  465. package/skills/anomaly-detection/scripts/__pycache__/anomaly.cpython-312.pyc +0 -0
  466. package/skills/audit-assist/scripts/__pycache__/audit_sampling.cpython-312.pyc +0 -0
  467. package/skills/banking-credit/scripts/__pycache__/credit_metrics.cpython-312.pyc +0 -0
  468. package/skills/data-report-pro/scripts/__pycache__/bigdata.cpython-312.pyc +0 -0
  469. package/skills/data-wrangling/scripts/__pycache__/join_tools.cpython-312.pyc +0 -0
  470. package/skills/ecommerce-ops/scripts/__pycache__/gmv_decompose.cpython-312.pyc +0 -0
  471. package/skills/funnel-cohort/scripts/__pycache__/funnel.cpython-312.pyc +0 -0
  472. package/skills/management-accounting/scripts/__pycache__/costing.cpython-312.pyc +0 -0
  473. package/skills/manufacturing-quality/scripts/__pycache__/spc.cpython-312.pyc +0 -0
  474. package/skills/marketing-analytics/scripts/__pycache__/rfm.cpython-312.pyc +0 -0
  475. package/skills/optimization-solver/scripts/__pycache__/solver.cpython-312.pyc +0 -0
  476. package/skills/pivot-crosstab/scripts/__pycache__/pivot_tools.cpython-312.pyc +0 -0
  477. package/skills/portfolio-analysis/scripts/__pycache__/portfolio.cpython-312.pyc +0 -0
  478. package/skills/procurement-supply/scripts/__pycache__/supply.cpython-312.pyc +0 -0
  479. package/skills/production-planning/scripts/__pycache__/mrp_capacity.cpython-312.pyc +0 -0
  480. package/skills/project-management/scripts/__pycache__/cpm.cpython-312.pyc +0 -0
  481. package/skills/quant-analysis/scripts/__pycache__/quant.cpython-312.pyc +0 -0
  482. package/skills/real-estate-property/scripts/__pycache__/property_calc.cpython-312.pyc +0 -0
  483. package/skills/regression-forecast/scripts/__pycache__/regress.cpython-312.pyc +0 -0
  484. package/skills/securities-research/scripts/__pycache__/valuation.cpython-312.pyc +0 -0
  485. package/skills/statistical-testing/scripts/__pycache__/stat_tests.cpython-312.pyc +0 -0
  486. package/skills/treasury-mgmt/scripts/__pycache__/cashflow_forecast.cpython-312.pyc +0 -0
@@ -7,9 +7,17 @@ version: 1.0.0
7
7
  # HTML 幻灯片(桌面端专属管线:HTML → 渲染 → PDF/PPTX/放映页)
8
8
 
9
9
  原理:每页 = 一个 1280×720 的自包含 HTML;桌面端 `slides_render` 工具离屏逐页渲染——
10
- 产出每页 PNG 缩略图、整份 PDF、整页贴图 PPTX 与键盘翻页的放映 HTML,并把**每页截图注入给你自检**。
10
+ 产出每页 PNG 缩略图、整份 PDF、整页贴图 PPTX 与键盘翻页的放映 HTML。
11
11
  表现力上限=CSS(渐变/阴影/网格排版),远超 python-pptx 版式。
12
12
 
13
+ **自检是两条通道,不要混为一谈**:
14
+ - **机检**(随结果返回的「版式体检」):在离屏页里跑真实 DOM 度量,报出文字被切多少 px、
15
+ 哪两块文字重叠多少、图片被拉了几个百分点、有没有外链资源没加载。
16
+ 这些是浏览器**算得出来的事实**——必修项为 0 是交付的硬门槛。
17
+ - **看图**(注入的每页截图):判视觉层次、留白、重点是否突出。这些机器判不了,得你看。
18
+
19
+ 缩略图上「被裁掉半行字」和「本来就排到底」长得一模一样,所以**能算的绝不靠看**。
20
+
13
21
  ## 流程
14
22
 
15
23
  1. **大纲先行**:逐页大纲(每页=标题+要点+版式选择),页数 8–15,重要汇报先让用户确认。
@@ -18,8 +26,8 @@ version: 1.0.0
18
26
  3. **逐页产出**:写 `slides/01-cover.html`、`slides/02-agenda.html`…(两位数前缀定顺序)。
19
27
  每个文件 = 模板骨架 + 选定版式片段填入内容;**整页自包含**。
20
28
  4. **渲染**:调用 `slides_render`(参数 dir="slides"、name="<中文成品名>")。
21
- 5. **自检回路(关键)**:对照注入的每页截图过验收清单——溢出/截断/挤压/对比度不足,
22
- 改对应 html 后**重新渲染**,直到全部合格再交付。
29
+ 5. **自检回路(关键)**:先看机检——**必修项不为 0 就不许交付**,按报告里的像素数改对应 html
30
+ 后重新渲染;必修清零后再对照截图看视觉层次与留白。反复直到两关都过。
23
31
  6. 交付物:`<name>.pdf`(首选交付)、`<name>.pptx`(整页贴图,**不可编辑文字**——如实告知用户,
24
32
  要可编辑版用 pptx-author 另出结构稿)、`<name>-放映.html`(内置浏览器/浏览器全屏演示)。
25
33
 
@@ -34,15 +42,22 @@ version: 1.0.0
34
42
 
35
43
  ## 无 slides_render 工具时(CLI / IDE / 例程环境)
36
44
 
37
- 工具仅桌面端注册。此时仍按上述规范产出 `slides/*.html` 并告知用户:
38
- 「在 Work Twin 桌面端打开本目录可一键渲染导出 PDF/PPTX」;或改用 pptx-author 出直接可用的结构稿。
45
+ 工具仅桌面端注册(机检也随它一起,没有它就没有 DOM 度量)。此时仍按上述规范产出
46
+ `slides/*.html` 并告知用户:「在 Work Twin 桌面端打开本目录可一键渲染导出 PDF/PPTX」;
47
+ **或改用 `create_deck`(pptx-author)出直接可用的结构稿——那条路自带版式体检,各端都有**。
48
+
49
+ ## 验收自查
39
50
 
40
- ## 验收自查(对照注入截图逐页过)
51
+ 机检负责(`slides_render` 自动跑,必修必须为 0):
52
+ - [ ] 文字被切(overflow:hidden 下内容高过容器)、整页溢出、元素超出画面
53
+ - [ ] 文字块互相压盖(按文字实际占位算,不是按容器框算)
54
+ - [ ] 图片变形(`object-fit:fill` + 宽高比≠原图)、图片没加载、图片发虚
55
+ - [ ] 字号 <18px、对比度 <4.5:1、`.slide` 不是 1280×720、引用了外链
41
56
 
42
- - [ ] 无溢出/截断(右缘底缘完整,无被吃掉的行)
43
- - [ ] 中文全部正常渲染,无缺字方块
44
- - [ ] 主题一致(同一套配色变量,无串色页)
45
- - [ ] 每页焦点清晰,文字对比度充足(浅底深字/深底浅字)
57
+ 你看图负责(机检判不了的):
58
+ - [ ] 每页焦点清晰,一眼知道这页在说什么
59
+ - [ ] 留白舒服,不挤不空;主题一致,无串色页
60
+ - [ ] 中文正常渲染,无缺字方块
46
61
  - [ ] 已如实告知用户 PPTX 为贴图不可编辑
47
62
 
48
63
  ## 附件
@@ -0,0 +1,11 @@
1
+ {
2
+ "skill": "slides-html",
3
+ "purpose": "触发行为规格。与 pptx-author 是刻意分层:朴素结构稿走 pptx-author,设计感/发布会级走本技能。",
4
+ "intentionalOverlap": ["pptx-author"],
5
+ "cases": [
6
+ { "id": "fancy", "prompt": "做一套炫酷有设计感的发布会演示", "shouldTrigger": true },
7
+ { "id": "beautiful", "prompt": "这个 PPT 要好看一点,能不能做出设计感", "shouldTrigger": true },
8
+ { "id": "near-miss-plain", "prompt": "随便做几页幻灯片把要点列一下就行", "shouldTrigger": false },
9
+ { "id": "near-miss-webpage", "prompt": "帮我写一个产品官网首页", "shouldTrigger": false }
10
+ ]
11
+ }
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: sql-analysis
3
+ description: 对数据文件直接跑 SQL(DuckDB)——几十万行的 CSV/Excel/Parquet 筛选、聚合、多表关联、透视,不落库不导入。当用户说"几十万行/文件太大/跑不动/内存爆了/多表关联/对账/join 几张表/用 SQL 查"或表格行数明显超过几万时使用。与 xlsx-analysis 接力:SQL 先把大表压成小表,pandas 再做统计与画图。
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # 用 SQL 查数据文件(DuckDB,经 run_python 执行)
8
+
9
+ pandas 的模型是**整表读进内存再变换**。几万行很好用;到了几十万行、多表关联、跨月合并,
10
+ 它会同时出两个问题——一是内存,二是**模型写出来的代码质量**:
11
+ 多步链式变换(merge → groupby → pivot → 再 merge)是最容易写错也最难自查的一类代码,
12
+ 错了还不报错,只是数字不对。同样一件事写成一句 SQL,写对的概率高得多,人核对起来也快得多。
13
+
14
+ DuckDB 直接对**文件**跑 SQL:不建库、不导入、不落盘,一个进程内的分析引擎。
15
+
16
+ ## 什么时候用 SQL,什么时候用 pandas
17
+
18
+ **别让模型自己猜**,按下表选:
19
+
20
+ | 任务 | 用 | 为什么 |
21
+ |---|---|---|
22
+ | 筛选、聚合、分组、排序 | **SQL** | 一句话说清,且不必整表进内存 |
23
+ | 多表关联(join)、对账勾稽 | **SQL** | pandas 的多步 merge 最容易错在「关联键类型不一致」「重复行放大」 |
24
+ | 透视(行列转置) | **SQL** `PIVOT` | DuckDB 原生支持,比 pandas 的多层索引好读 |
25
+ | 去重、窗口函数(排名/环比/累计) | **SQL** | 窗口函数是 SQL 的主场 |
26
+ | 统计检验、回归、时间序列建模 | pandas / scipy | SQL 不做这些 |
27
+ | 画图 | pandas + matplotlib | 同上 |
28
+ | 表头不在首行、金额是文本、夹着合计行 | **先 xlsx-analysis 的工具箱洗** | 脏表要先洗再查,见下节 |
29
+
30
+ **接力是常态**:SQL 把几十万行压成几百行 → 交给 pandas 做统计与画图。
31
+ 不要用 SQL 硬做统计建模,也不要用 pandas 硬扛几十万行的 join。
32
+
33
+ ## 先量后算(与绘图引擎同一条纪律)
34
+
35
+ 动手前先看清楚有多大、长什么样,再决定策略——而不是读完才发现读不动:
36
+
37
+ ```python
38
+ import duckdb
39
+ con = duckdb.connect() # 内存实例,不落盘
40
+ # 1) 摸形状:列名、类型、行数(不把数据读进来)
41
+ print(con.sql("DESCRIBE SELECT * FROM 'attachments/明细.csv'").df())
42
+ print(con.sql("SELECT count(*) AS 行数 FROM 'attachments/明细.csv'").df())
43
+ # 2) 看前几行确认表头识别对了
44
+ print(con.sql("SELECT * FROM 'attachments/明细.csv' LIMIT 5").df())
45
+ ```
46
+
47
+ 行数在几万以内、且不涉及多表关联 → 直接回 pandas(`xlsx-analysis`),别为一件小事引一个引擎。
48
+
49
+ ## 直接查文件(不用导入)
50
+
51
+ ```python
52
+ # CSV:自动推断分隔符/编码/类型
53
+ con.sql("SELECT 部门, sum(金额) AS 合计 FROM 'attachments/明细.csv' GROUP BY 部门 ORDER BY 合计 DESC").df()
54
+
55
+ # 多个文件当一张表(按月拆分的导出最常见)
56
+ con.sql("SELECT * FROM 'attachments/2026-*.csv'").df()
57
+
58
+ # Parquet(大数据量首选,比 CSV 快一个量级)
59
+ con.sql("SELECT * FROM 'data/*.parquet' WHERE 日期 >= '2026-01-01'").df()
60
+
61
+ # 多表关联:两份明细按月对账
62
+ con.sql("""
63
+ SELECT a.月份, a.应收 , b.实收, a.应收 - b.实收 AS 差额
64
+ FROM (SELECT strftime(日期,'%Y-%m') AS 月份, sum(金额) AS 应收 FROM 'attachments/应收.csv' GROUP BY 1) a
65
+ FULL JOIN (SELECT strftime(日期,'%Y-%m') AS 月份, sum(金额) AS 实收 FROM 'attachments/实收.csv' GROUP BY 1) b
66
+ USING (月份)
67
+ ORDER BY 月份
68
+ """).df()
69
+ ```
70
+
71
+ ## Excel 怎么办
72
+
73
+ DuckDB 读 `.xlsx` 需要额外扩展,**受限网络下未必装得上**。可靠路径是两步走:
74
+
75
+ ```python
76
+ import pandas as pd, duckdb
77
+ con = duckdb.connect()
78
+ df = pd.read_excel('attachments/台账.xlsx', sheet_name='明细') # 脏表先用 xlsx-analysis 的 smart_read 洗
79
+ con.register('明细', df) # 注册成表,零拷贝
80
+ con.sql("SELECT 部门, count(*) AS 笔数, sum(金额) AS 合计 FROM 明细 GROUP BY 部门").df()
81
+ ```
82
+
83
+ 表头不在首行、金额是带千分位的文本、夹着「合计」行——这些**先用 `xlsx-analysis` 的 `smart_read` 洗干净**,
84
+ 再 `register` 进来查。脏数据直接进 SQL 只会把脏往下游传。
85
+
86
+ 超大 Excel(几十万行)先转一次 Parquet,之后每次查都快:
87
+
88
+ ```python
89
+ pd.read_excel('attachments/大台账.xlsx').to_parquet('/tmp/台账.parquet')
90
+ con.sql("SELECT ... FROM '/tmp/台账.parquet' ...").df()
91
+ ```
92
+
93
+ ## 三条纪律
94
+
95
+ 1. **结果回 pandas 再呈现**:`.df()` 拿到 DataFrame,用既有的表格/图表能力输出。
96
+ 不要把 SQL 的原始打印结果直接贴给用户——列宽和数字格式都不适合人读。
97
+ 2. **不落库、不持久化**。DuckDB 在这里的角色是「对文件跑 SQL 的计算引擎」,
98
+ 不是数据库。真要连数据库(MySQL/PG)请走平台的数据源能力,不是这个技能。
99
+ 3. **关联前先核对关联键**。多表 join 出错,九成在键上——类型不一致(`'001'` vs `1`)、
100
+ 有前后空格、一对多导致行数放大。join 之后**必须核对行数**:
101
+ ```python
102
+ con.sql("SELECT count(*) FROM a").df() # join 前
103
+ con.sql("SELECT count(*) FROM a JOIN b USING(k)").df() # join 后:多出来就是重复放大了
104
+ ```
105
+
106
+ ## 装不上怎么办
107
+
108
+ `duckdb` 随扩展包 best-effort 预装;受限网络下可能缺席。
109
+ 用 `install_packages(["duckdb"])` 补装;补不上就如实告诉用户「本机装不上 DuckDB,改用 pandas 分块处理」,
110
+ **不要假装跑过**。分块路径见 `xlsx-analysis`。
@@ -0,0 +1,34 @@
1
+ {
2
+ "skill": "sql-analysis",
3
+ "intentionalOverlap": [
4
+ "xlsx-analysis"
5
+ ],
6
+ "cases": [
7
+ {
8
+ "id": "pos-1",
9
+ "prompt": "几十万行的表跑不动了,内存爆了",
10
+ "shouldTrigger": true
11
+ },
12
+ {
13
+ "id": "pos-2",
14
+ "prompt": "多张表要 join 对账,用 SQL 怎么写",
15
+ "shouldTrigger": true
16
+ },
17
+ {
18
+ "id": "pos-3",
19
+ "prompt": "这个 CSV 太大了,pandas 读不动",
20
+ "shouldTrigger": true
21
+ },
22
+ {
23
+ "id": "neg-1",
24
+ "prompt": "帮我把这张 Excel 做个透视表",
25
+ "shouldTrigger": false,
26
+ "lexical": false
27
+ },
28
+ {
29
+ "id": "neg-2",
30
+ "prompt": "写一段 MySQL 的慢查询优化",
31
+ "shouldTrigger": false
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "skill": "sql-tuning",
3
+ "cases": [
4
+ {
5
+ "id": "pos-1",
6
+ "prompt": "这条 SQL 太慢了,查询超时",
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,31 @@
1
+ {
2
+ "skill": "statistical-testing",
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": "做一次回归预测和驱动因子分析",
22
+ "shouldTrigger": false,
23
+ "lexical": false
24
+ },
25
+ {
26
+ "id": "neg-2",
27
+ "prompt": "写一份 AB 实验的样本量计算",
28
+ "shouldTrigger": false
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "skill": "strategy-planning",
3
+ "cases": [
4
+ {
5
+ "id": "pos-1",
6
+ "prompt": "做战略规划和年度经营计划",
7
+ "shouldTrigger": true
8
+ },
9
+ {
10
+ "id": "pos-2",
11
+ "prompt": "SWOT 五力和 BCG 怎么用",
12
+ "shouldTrigger": true
13
+ },
14
+ {
15
+ "id": "pos-3",
16
+ "prompt": "战略解码 BSC 和业务复盘怎么做",
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,31 @@
1
+ {
2
+ "skill": "supply-chain",
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": "做一次供应商评估和比价",
22
+ "shouldTrigger": false,
23
+ "lexical": false
24
+ },
25
+ {
26
+ "id": "neg-2",
27
+ "prompt": "写一份仓库 KPI 报表",
28
+ "shouldTrigger": false
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "skill": "tax-compliance",
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": "做一次财务报表的三表勾稽",
22
+ "shouldTrigger": false
23
+ },
24
+ {
25
+ "id": "neg-2",
26
+ "prompt": "写一份内控合规检查表",
27
+ "shouldTrigger": false
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1,262 @@
1
+ ---
2
+ name: tech-doc
3
+ description: 研发项目文档体系与归档:项目建议书、可行性研究报告、立项申请书、研发任务书、项目研发实施计划、产品/项目开发需求申请、需求规格与概要/详细设计说明书、测试报告、项目工作总结报告、项目技术总结报告、项目验收报告、项目验收申请表、研发评价总结纪要、变更申请单,以及整套归档的生成与体检。当用户要写这些文档中任何一类,或问"立项材料/验收材料要准备什么/任务书怎么写/研发文档归档齐不齐/做个档案体检"时使用。排版与单文档体检走 docx-author。
4
+ version: 2.0.0
5
+ ---
6
+
7
+ # 研发项目文档体系与归档
8
+
9
+ 分工先说清:**本技能管「这份文件该写什么」与「整套归档齐不齐、对不对得上」**;
10
+ [docx-author](../docx-author/SKILL.md) 管「怎么做成一份合格的 Word」;
11
+ 表格件(进度表/预算表/评审报告)走 [xlsx-analysis](../xlsx-analysis/SKILL.md);
12
+ 政府专项申报与预算勾稽走 [project-proposal](../project-proposal/SKILL.md)。
13
+
14
+ ## 一、先认清这是「一份文档」还是「一套归档」
15
+
16
+ 单份文档写得再好,也管不住下面这几件事——它们全是**跨文档的事实**:
17
+
18
+ > 一个真实项目的 41 份归档件里,项目名称出现三种写法(其中一种在 12 期进度报告里被
19
+ > 统一截断少了一个字)、研发任务书写 ZY202501003 而验收申请表写 ZY202501006、
20
+ > 项目建议书把「联系人/电话/编制人」三栏填串了、12 期月度验收报告一份没交。
21
+ > 每一份单独看都挑不出毛病,摆在一起就全是硬伤——而验收与审计恰恰是摆在一起看的。
22
+
23
+ 所以要写整套项目文档时,**先建档案,再写内容**:
24
+
25
+ ```
26
+ create_project_docs(path='项目文档', card={…}) # 一次生成约 50 份骨架
27
+ … 逐份补正文(或用 card.章节内容 批量注入)…
28
+ docx_inspect(path='项目文档/XX项目') # 目录 → 档案体检,必修清零
29
+ ```
30
+
31
+ `create_project_docs` 的价值不在省打字,在于**所有文档的封面字段都取自同一张档案卡**,
32
+ 上面那四类缺陷因此天然不会发生。
33
+
34
+ ### 项目档案卡
35
+
36
+ 必填六项(它们决定全档一致性,缺了生成出来必然对不上):
37
+ `项目名称`、`项目编号`、`项目负责人`、`建设单位`、`部门`、`起止时间`。
38
+
39
+ 选填但强烈建议:`联系电话`、`预算`、
40
+ `考核指标` `[[指标, 要求值, 测试方法/判定依据], …]`、
41
+ `人员` `[[姓名, 单位, 职称/职务, 分工], …]`、
42
+ `里程碑` `[[阶段, 任务, 处理人, 工时, 开始, 结束, 交付物], …]`、
43
+ `预算科目` `[[科目, 全年金额], …]`。
44
+
45
+ 给了里程碑,12 期研发进度报告的「项目进度情况」会按里程碑**自动推算当期完成情况**;
46
+ 给了考核指标,它会同时出现在立项申请书、研发任务书、验收报告的对照表里——一处定义,处处一致。
47
+
48
+ ## 二、归档规范(编号目录体例)
49
+
50
+ ```
51
+ 1-立项文档/ 1-项目建议书 2-可行性研究报告 3-立项申请书 4-项目立项的决议
52
+ 产品开发需求申请 项目开发需求申请
53
+ 5-研发任务书 6-项目研发实施计划
54
+ 7-进度表/ 1-项目研发进度表-计划 + 实际-第 1~4 季度
55
+ 8-XX部XX年度项目研发支出预算表
56
+ 9-10验收/ 项目验收申请表 项目验收报告 工作总结报告 技术总结报告 研发评价总结纪要
57
+ 评审文件/ 立项·设计·测试用例·验收·结项 五个阶段 ×(评审报告 + 会议签到表)
58
+ 周期性文档/ 研发进度报告 ×12 月度验收报告 ×12
59
+ 变更文档/ 人员/预算/范围/延期变更申请(**发生了才要**,没发生不算缺)
60
+ ```
61
+
62
+ 几条硬规矩(都是评审与审计当场会查的):
63
+
64
+ - **周期性文档的份数是硬指标**:12 期就是 12 期,缺一期要在档案清册里写明原因;
65
+ - **五个阶段评审,报告与签到表必须配对**——签到表是「会真的开过」的唯一物证;
66
+ - **模板里的「提示:…」块必须删干净**,模板自己写了「正式文档中需删除提示内容」;
67
+ `XX 部`、`XX 项目`这类占位符同理;
68
+ - 封面信息栏是**表格**不是几行居中文字(只有表格形态才能被工具读出来核对);
69
+ - 签批栏少一级 = 流程没走完,交上去会被退。
70
+
71
+ ## 三、各类文档最容易丢分的那一节
72
+
73
+ - **项目建议书**:必要性。写成「技术多先进」就跑偏了——要写「为什么非做不可」:痛点 + 数据 + 政策呼应。
74
+ - **可行性研究报告**:本体例用的是科技计划项目那套十一节(立项背景与意义 / 国内外研究现状 /
75
+ 实施内容·技术关键·预期目标 / 现有工作基础 / 实施方案与组织方式 / 进度安排与年度计划 /
76
+ 承担单位与人员简况 / 经费预算来源与使用计划 / 应用或产业化前景 / 经济社会效益 / 风险分析与对策)。
77
+ **别套通用可研骨架**,对不上。内容怎么写到评审信服(取证、财务测算、配图、自审)
78
+ 按 [report-craft](../report-craft/SKILL.md):`project_facts` → `fin_model` → `render_diagram`/`render_chart` → `docx_inspect`。
79
+ - **立项申请书**:考核指标。它是全链条的源头——任务书、进度报告、验收报告都要引它,写虚了后面全废。
80
+ - **研发任务书**:结项条件。指标没有测试方法与环境,同一指标不同环境能差一个量级。
81
+ - **项目研发实施计划**:验收标准和验收工作安排。只有日期没有判定标准,到期只能靠嘴说完成了。
82
+ - **研发进度报告**:审批记录五级(项目经理 / 技术副总 / 财务负责人 / 市场负责人 / 总经理)。
83
+ 财务那一栏问的是「研发经费记录与财务记录是否相符」——这是加计扣除的证据链。
84
+ - **工作总结报告**:完成情况要逐项回答「未完成 / 基本完成 / 全面完成 / 超额完成」,四选一,不许含糊。
85
+ - **技术总结报告**:指标实测数据。只写做了什么不给数据,专家一问就露。
86
+ - **项目验收报告**:五类考核指标对照表(研究内容 / 技术 / 经济 / 社会生态效益 / 科技产出),
87
+ 每类都要「立项书规定 vs 实际完成情况 + 专家审查意见」三栏,
88
+ 专家意见三档:超额或全面完成 / 完成 70% 及以上 / 完成 70% 以下。
89
+ **完成立项书约定内容 70% 及以上为验收通过**,未达 70% 不通过并应提出终止意见。
90
+ - **表单类**(验收申请表 / 变更申请单 / 需求申请):失分点几乎全在**字段缺项与签章不全**,不在文采。
91
+
92
+ ## 四、跨文档必须对齐的字段
93
+
94
+ | 字段 | 贯穿 | 规矩 |
95
+ |---|---|---|
96
+ | 项目名称 | 全部 | 逐字一致,连「的」都不能多。被截断的写法是最高频缺陷 |
97
+ | 项目编号 | 全部 | 一个项目一个编号,任务书与验收申请表对不上是硬伤 |
98
+ | 项目负责人 / 联系人 / 联系电话 | 全部 | 三栏最容易填串(电话填进联系人栏) |
99
+ | 建设单位 | 验收与总结类 | 「公司」还是「公司+部门」,择一到底 |
100
+ | 起止时间 | 立项 / 任务书 / 验收 | 计划与实际分列,延期要有批准文号 |
101
+ | 考核指标 | 立项 → 任务书 → 验收 → 总结 | 指标名、值、测试方法逐字一致;验收要逐条给实测值 |
102
+ | 经费 | 可研 → 立项 → 任务书 → 预算表 → 验收 | 批准 / 到位 / 支出三个口径分别标注,不能混用一个数 |
103
+
104
+ `docx_inspect(目录)` 会把这几项逐份比对并报出不一致,包括分辨「被截断」与「粒度不同」。
105
+
106
+ ## 五、周期性文档:份数对不等于真的写了
107
+
108
+ 12 期月报交齐了、份数也对,齐全性检查一切正常——但把 12 份摊开一读,正文相似度 98%,
109
+ 等于**同一份文档改个日期交了十二次**。「逐月记录研发过程」这件事实际上没有发生。
110
+ 研发费用加计扣除与高企认定的核查员会摊开来对着读,一眼就能看出来。
111
+
112
+ `docx_inspect(目录)` 会算相邻两期的正文相似度(去掉标题与封面键值行后的实质正文):
113
+ 中位 ≥90% 报必修并点名逐字相同的是哪两期,75%–90% 报建议。
114
+ 正文均长不足 300 字的按「还没填的骨架」处理,不判。
115
+
116
+ 每期至少要写清三件事:**本期实际完成了什么、与计划的偏差及原因、下期安排**。
117
+ 固定结构可以复用,这三件事必须各不相同。
118
+
119
+ ## 六、交付件里最容易被放过的四件事
120
+
121
+ 这四条都是**人一读就发现、份数与章节检查却看不见**的,`docx_inspect(目录)` 会逐条报:
122
+
123
+ - **模板给填表人的批注还在**。「注:由项目单位如实填写实际完成情况,下同。」「注:专家请选择以下
124
+ 结论」——这是模板的填表说明,不是给读者看的注释,交付前必须删干净。
125
+ 正经注释(「注:数据口径以合同附件三为准」)不受影响。
126
+ - **选择项一个都没勾**。验收报告每类指标下面是「1.超额或全面完成( ) 2.完成70%及以上( )
127
+ 3.完成70%以下( )」,三选一。整份文档一个括号都没填,等于专家结论没人做、字没人签——
128
+ 而这正是验收报告的核心。
129
+ - **验收时写「进行中 / 预计完成」**。验收结论只有达标与不达标两档,「进行中」既不是达标也不是
130
+ 不达标,等于把判断推给后面的人。没完成就如实写不达标并说明整改。
131
+ - **该有图的文档一张图都没有**。技术总结报告、可研、概要设计里的技术路线与系统架构,
132
+ 用文字硬描是读者的负担,也是评审最常见的追问点。
133
+
134
+ 另外还查**时间线自洽**:第 N 期月报的落款月份必须是 N 月;五个阶段评审必须按
135
+ 立项→设计→测试用例→验收→结项的顺序开。顺序倒了是「材料后补」的直接证据。
136
+
137
+ ### 项目名称:全档只该有一个名字
138
+
139
+ 这一条在真实归档里命中率最高,而人工审读几乎发现不了——**差一个字,眼睛会自动补对**。
140
+ 体检把三种写法分开对待,因为整改动作完全不同:
141
+
142
+ - **简称**:「…系统的研发」「…系统研发」「…系统」混用。两个参考项目里出现 144 次,
143
+ 完全正常,**一条都不报**——报了就会把真问题淹掉。
144
+ - **错字**:「基于联邦学习的数字权益**开发**系统」,正式名是「**开放**系统」。
145
+ 一个参考项目里 25 处、散布 20 份文件,从立项一路错到验收。整改是全文替换。
146
+ - **串项目**:签到表抬头写着上一个项目的名字。两个参考项目各抓到一处——
147
+ 一处是「基于信用模型算法的供应商管理系统研发」,一处是另一个在研项目。
148
+ 表单类(签到表/评审报告/申请书)的抬头只该出现本项目名,这类判**必修**;
149
+ 正文里提到别的项目可能正当(引用软著名称、对比同类),只报提示,由人判断。
150
+
151
+ 基准名取封面「项目名称」栏里**最长的那个写法,不是最高频的**:真实归档里被截断的写法
152
+ 反而可能占多数(11 份写「…风控系统研」少一个「发」),按票数选会把整改指引指反。
153
+
154
+ ### 模板点名的必备要素、签到表与野文件
155
+
156
+ - **模板在节标题后括号里写明的要素就是验收项**。「项目立项的依据和来源(200字内,包括
157
+ 立项文件号、合同号、研究起止时间)」——两个参考项目都只写到「依据…文件精神」,
158
+ 文号与合同号一个都没有。自研项目没有合同号的,写明「自研,无合同」也比留空好:
159
+ 审查人分不清是没有还是漏填。
160
+ - **签到表有表头没人名**。两个参考项目的 10 张评审签到表,与会人一栏全空。判**建议**不判必修——
161
+ 纸质原件常在线下签;但归档里只剩这份电子件时,它就是唯一的出席证据。
162
+ 生成器**不会**替你预填与会人:凭空填名字等于伪造出席记录。
163
+ - **对不上规范条目的文件会被点名**,不只报个数。命名不规范会连带把齐全性判成缺件,
164
+ 规范外的附件则可忽略——两种都得人看一眼,工具不替你决定。
165
+
166
+ ### 跨文档样板段落:一段话不该同时是九种文档的开场白
167
+
168
+ `check_boilerplate` 查的是**同一段话逐字出现在多种用途不同的文档里**。这和「周期性文档雷同」
169
+ 不是一回事——那是 12 期月报互比(同类),这是一段 449 字的技术描述同时出现在项目建议书、
170
+ 可行性研究报告、研发任务书、实施计划、12 期进度报告、工作总结、技术总结、评价纪要里:
171
+ 真实语料的两个项目分别是 13 段 2358 字、34 段 7138 字。
172
+
173
+ 进度报告的职责是记录本期干了什么,它不该和立项建议书开同一个头。
174
+
175
+ 门槛定在 **≥4 种文档类型**,是量出来的:立项三件套(建议书→可研→立项申请书)共享背景
176
+ 是**正当的**——可研本就是建议书的展开——它们只占 3 种类型,正好在门槛之下。
177
+ 60 字下限排掉标题、表头、固定表述这些天然重复的短句。判**建议**不判必修:
178
+ 这是质量信号不是事实错误,而且**各写各的**指的是正文主体,背景介绍复用没问题。
179
+
180
+ ### 旧格式不是「查不了」,但也不能假装查过了
181
+
182
+ 真实归档里旧格式占比很高:一个参考项目的 12 份月度验收报告是二进制 `.doc`,
183
+ 全部评审报告与预算表是 `.xls`——两者加起来超过归档的三分之一。
184
+
185
+ - **`.doc`**:借系统自带转换器(macOS `textutil` / Linux `antiword`)取纯文本,
186
+ 参与模板残留、项目名一致性、雷同度这些**文本类**判据;表格与标题层次拿不到,
187
+ 结构类检查自然不对它们发言。转换器一个都没有时**会点名说哪几份没读进来**——
188
+ 沉默是最坏的降级:份数照样对得上,用户看到「必修 0」会以为查过了。
189
+ - **`.xls`**:见 `xlsx-analysis`——数据层照查,公式/列宽/合并/打印明说「没查」,
190
+ `fix` 直接拒绝(另存会把原件的公式与格式丢光)。
191
+ - 雷同度按**扩展名分组比**:`.doc` 走纯文本转换,文本厚度天然比 `.docx` 薄,
192
+ 混在一起比等于拿两把尺量同一件事。
193
+
194
+ ### 模板写死的字数上限
195
+
196
+ 模板正文里白纸黑字写着「项目立项背景(500字内)」「项目立项的依据和来源(200字内,
197
+ 包括立项文件号、合同号、研究起止时间)」。两个参考项目分别写了 1722 字和 4186 字——
198
+ 超出 3.4 倍与 8.4 倍。这不是文风问题:高企认定与研发费用加计扣除的审查人按模板逐条核。
199
+ 留 1.5 倍宽限(模板也写「500字左右」),只报明显超出的。
200
+
201
+ ## 七、表格件不是「交了就行」
202
+
203
+ 进度表、评审报告、预算表是归档里最容易「交了但没人读」的部分。`docx_inspect(目录)` 按这几张表
204
+ 自己的语义核对,查出来的都是**份数与章节检查碰不到**的矛盾:
205
+
206
+ - **标记完成却没有完成的痕迹**:进度 100%,实际起止空着、实际工时 0。
207
+ 真实归档里出现过 6 条——说完成了,但没有任何完成的证据。
208
+ - **进度值越界**:进度列是 0~1 的比例(0.03、0.38、0.75 都正常),出现 2.0 就是填错了量纲。
209
+ - **计划表里填了进度**:计划归计划、实际归实际,混着填会让「计划 vs 实际」的对比失去意义。
210
+ - **实际表的任务列表与计划表对不上**:实际表应在计划表基础上填实际值,增删任务要走变更流程。
211
+ - **实际结束早于实际开始**(或计划的两个日期填反)。
212
+ - **评审记录/评审结论几乎是空的**:会开过就该留下问题、责任人、解决时间;
213
+ 一条都没有,等于无法证明评审真的发生过。
214
+ - **预算表没有任何非零金额**:全零等于没编预算。
215
+
216
+ 季度实际表要**累计**填:第 3 季度那张含前两季度已完成任务的实际数据,不是只填本季度发生的。
217
+ 真实归档正是这样(各季表的内容逐季变长)。
218
+
219
+ ## 八、通用文档类型(本体例之外)
220
+
221
+ 不属于这套归档、但常一起要的:需求规格说明书、概要设计说明书、详细设计说明书、测试报告、
222
+ 变更申请单。骨架与评审扣分点见 `doc_templates.py`:
223
+
224
+ ```bash
225
+ python $HUICAI_SKILLS_DIR/tech-doc/scripts/doc_templates.py list
226
+ python $HUICAI_SKILLS_DIR/tech-doc/scripts/doc_templates.py outline 需求规格说明书
227
+ python $HUICAI_SKILLS_DIR/tech-doc/scripts/doc_templates.py check 项目验收报告
228
+ ```
229
+
230
+ 单份文档落盘走 `create_doc(spec={template:'研发任务书', …})`——传 template 会核对必备章节。
231
+
232
+ ## 九、交付自查
233
+
234
+ - [ ] `docx_inspect(目录)` 必修 = 0(做不到就如实说明哪几项要用户决定)
235
+ - [ ] 周期性文档份数齐、五个阶段评审报告与签到表配对
236
+ - [ ] 模板「提示:」块、「注:由…填写」批注与 XX 占位符已删干净
237
+ - [ ] 验收报告的三选一结论逐条勾选、主审专家已签字
238
+ - [ ] 「实际完成情况」栏写的是实测值,不是「进行中」
239
+ - [ ] 进度表里标记完成的任务都有实际起止与工时,进度值在 0~1 之间
240
+ - [ ] 评审记录与评审结论有实质内容,预算表有金额
241
+ - [ ] 立项考核指标在验收与总结里逐条有对应实测值
242
+ - [ ] 周期性文档不是同一份改日期(体检的「雷同度」为零必修)
243
+ - [ ] 签批栏该有的都有(空栏要在归档前签字盖章)
244
+ - [ ] 关键数字(经费/工期/指标值)在全档每处出现都相同
245
+
246
+ ## 附件
247
+
248
+ - `scripts/archive_spec.py` — 归档规范:目录编号体系、各文档章节骨架(**逐份从真实模板抽取**,
249
+ 必修/建议两档按真实归档语料标定)、表单必填字段、签批栏、周期性份数、评审配对、
250
+ 一致性字段、模板残留特征。可传自定义 JSON 换体例。
251
+ - `scripts/archive_build.py` — 从档案卡生成整套骨架(docx + xlsx),`--demo` 可自测。
252
+ - `scripts/archive_check.py` — 档案体检:齐全性 / 跨文档一致性 / 模板残留 / 结构与签批 / 指标勾稽 /
253
+ 雷同度 / 时间线 / 表格件语义 / 项目名一致性 / 模板字数上限;
254
+ CLI `python archive_check.py 项目目录 [--deep]`。
255
+ - `scripts/archive_battery.py` — 压测:正向生成整套断言零必修,**反向造 28 类缺陷验证体检不是瞎子**,
256
+ 再跑 8 项产物不变量与 13 项反误报。不变量守的是「产物本身对不对」,不依赖体检报不报:
257
+ 超长名不撑爆路径 / 注入到不存在章节不丢内容 / 预算 12 月之和 = 全年 / 预算科目与总额勾稽 /
258
+ 里程碑交付物进入计划类文档 / 选做周期性文档不默认生成 / **季度实际表累计且自洽** /
259
+ **归档产物逐份过单文档与单表体检**。最后那条守的是三套引擎的接缝——
260
+ 档案体检看不见单文档层面的问题,单文档压测又不生成归档件,只有接起来跑才现形。
261
+ 改了上面任何一个,**必须重跑**:`python archive_battery.py 8`。
262
+ - `scripts/doc_templates.py` — 通用文档类型(17 类)的骨架、评审扣分点与跨文档勾稽。