@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,230 @@
1
+ # 专利技术交底书 → Word(经 run_python 执行,python-docx 已随托管运行时就绪)。
2
+ #
3
+ # 入口 build():交底书表头信息表 + Markdown 正文 → 成品 docx。
4
+ # · 表头是代理机构收件用的固定表格(申请人 / 发明创造名称 / 拟申请类型 / 联系人 / 经办人 / 备注),
5
+ # 格式照抄本项目已定稿的交底书范本,不要自创;
6
+ # · 正文支持 #/##/### 标题、-/1. 列表、| 表格、**粗体**、以及独占一行的 ![图名](图片路径) 插图,
7
+ # 插图自动居中、图名居中排在图的正下方(交底书体例)。
8
+ # 直接执行本文件 = 自测:产出 patent_docx_check.docx 并重读校验。
9
+ import os
10
+ import re
11
+
12
+ from docx import Document
13
+ from docx.enum.table import WD_TABLE_ALIGNMENT
14
+ from docx.enum.text import WD_ALIGN_PARAGRAPH
15
+ from docx.oxml.ns import qn
16
+ from docx.oxml import OxmlElement
17
+ from docx.shared import Cm, Pt
18
+
19
+ # 拟申请类型的四个勾选项(顺序固定,勾中的那个用 ☑)
20
+ KINDS = ['发明', '实用新型', '外观设计', '发明、实用新型同主题']
21
+
22
+
23
+ def _ea(run_or_style, west='Calibri', east='宋体'):
24
+ """中文字体必须同时设 w:eastAsia,只设 font.name 中文不生效。"""
25
+ run_or_style.font.name = west
26
+ el = run_or_style.element if hasattr(run_or_style, 'element') else run_or_style._element
27
+ el.rPr.rFonts.set(qn('w:eastAsia'), east)
28
+
29
+
30
+ def _field(run, instr, placeholder=''):
31
+ """插入 Word 域(PAGE / NUMPAGES)。"""
32
+ begin = OxmlElement('w:fldChar')
33
+ begin.set(qn('w:fldCharType'), 'begin')
34
+ it = OxmlElement('w:instrText')
35
+ it.set(qn('xml:space'), 'preserve')
36
+ it.text = instr
37
+ sep = OxmlElement('w:fldChar')
38
+ sep.set(qn('w:fldCharType'), 'separate')
39
+ t = OxmlElement('w:t')
40
+ t.text = placeholder
41
+ end = OxmlElement('w:fldChar')
42
+ end.set(qn('w:fldCharType'), 'end')
43
+ for el in (begin, it, sep, t, end):
44
+ run._r.append(el)
45
+
46
+
47
+ def new_doc():
48
+ doc = Document()
49
+ st = doc.styles['Normal']
50
+ st.font.size = Pt(11)
51
+ _ea(st, 'Calibri', '宋体')
52
+ for lvl, size in (('Heading 1', 15), ('Heading 2', 13), ('Heading 3', 12)):
53
+ s = doc.styles[lvl]
54
+ s.font.size = Pt(size)
55
+ s.font.bold = True
56
+ _ea(s, 'Calibri', '黑体')
57
+ p = doc.sections[0].footer.paragraphs[0]
58
+ p.alignment = WD_ALIGN_PARAGRAPH.CENTER
59
+ p.add_run('第 ')
60
+ _field(p.add_run(), 'PAGE', '1')
61
+ p.add_run(' 页 共 ')
62
+ _field(p.add_run(), 'NUMPAGES', '1')
63
+ p.add_run(' 页')
64
+ return doc
65
+
66
+
67
+ def add_header_table(doc, meta):
68
+ """交底书表头:标题 + 六行信息表。meta 缺项留空,由填表人补。"""
69
+ for text, size in (('专利申请', 18), ('技术交底书', 18)):
70
+ p = doc.add_paragraph()
71
+ p.alignment = WD_ALIGN_PARAGRAPH.CENTER
72
+ r = p.add_run(text)
73
+ r.font.size = Pt(size)
74
+ r.font.bold = True
75
+ _ea(r, 'Calibri', '黑体')
76
+ kind = meta.get('kind', '发明')
77
+ kinds = ' '.join(('☑ ' if k == kind else '☐ ') + k for k in KINDS)
78
+ rows = [
79
+ ('申请人', meta.get('applicant', '')),
80
+ ('发明创造名称\n(必须填写)', meta.get('title', '')),
81
+ ('拟申请类型', kinds),
82
+ ('技术联系人姓名\n及其电话、email\n(必须填写)', meta.get('contact', '')),
83
+ ('经办人姓名及其电话、email\n(如不填写,则默认技术联系人为负责人)', meta.get('agent', '')),
84
+ ('备注事项', meta.get('notes', '是否仅用于申请政府高新资质或政府项目:\n是否将来申请国外专利:')),
85
+ ]
86
+ tb = doc.add_table(rows=len(rows), cols=2)
87
+ tb.style = 'Table Grid'
88
+ tb.alignment = WD_TABLE_ALIGNMENT.CENTER
89
+ for i, (k, v) in enumerate(rows):
90
+ for j, text in enumerate((k, v)):
91
+ cell = tb.cell(i, j)
92
+ cell.text = ''
93
+ for n, line in enumerate(str(text).split('\n')):
94
+ par = cell.paragraphs[0] if n == 0 else cell.add_paragraph()
95
+ r = par.add_run(line)
96
+ r.font.size = Pt(10.5)
97
+ r.font.bold = (j == 0)
98
+ _ea(r, 'Calibri', '宋体')
99
+ tb.columns[0].width = Cm(5.5)
100
+ tb.columns[1].width = Cm(10.5)
101
+ doc.add_paragraph()
102
+
103
+
104
+ MAX_FIG_CM = 15.0 # 版心可用宽度
105
+ TARGET_DPI = 450 # 目标有效 DPI(附图审核判据是 ≥400,留余量)
106
+
107
+
108
+ def _fig_width_cm(img_path, max_cm=MAX_FIG_CM):
109
+ """按目标 DPI 反算显示宽度,并以版心宽封顶。
110
+
111
+ 窄图若一律拉到满版心,有效 DPI 与白边都会被同比放大而超出附图审核判据;
112
+ 按像素反算即可让宽图占满版心、窄图自然缩小,两者的有效 DPI 落在同一区间。
113
+ """
114
+ try:
115
+ from PIL import Image
116
+ with Image.open(img_path) as im:
117
+ return min(max_cm, im.width / TARGET_DPI * 2.54)
118
+ except Exception:
119
+ return max_cm # 没有 PIL 或读不出尺寸:退回满版心,不影响成文
120
+
121
+
122
+ def add_figure(doc, img_path, caption='', width_cm=None):
123
+ """居中插图 + 居中图名(交底书体例:图名在图的正下方)。width_cm 缺省按像素反算。"""
124
+ p = doc.add_paragraph()
125
+ p.alignment = WD_ALIGN_PARAGRAPH.CENTER
126
+ try:
127
+ p.add_run().add_picture(img_path, width=Cm(width_cm or _fig_width_cm(img_path)))
128
+ except Exception as e: # 图缺失不该让整篇交底书生不出来,留痕即可
129
+ p.add_run(f'[插图失败:{img_path}({e})]').font.size = Pt(10)
130
+ if caption:
131
+ cp = doc.add_paragraph()
132
+ cp.alignment = WD_ALIGN_PARAGRAPH.CENTER
133
+ r = cp.add_run(caption)
134
+ r.font.size = Pt(10.5)
135
+ r.font.bold = True
136
+ _ea(r, 'Calibri', '黑体')
137
+
138
+
139
+ def _runs(par, text):
140
+ """按 **粗体** 拆 run,并把中文字体设对。"""
141
+ for i, seg in enumerate(re.split(r'\*\*(.+?)\*\*', text)):
142
+ if not seg:
143
+ continue
144
+ r = par.add_run(seg)
145
+ r.bold = (i % 2 == 1)
146
+ _ea(r, 'Calibri', '宋体')
147
+
148
+
149
+ def _flush_table(doc, rows):
150
+ cells = [[c.strip() for c in r.strip().strip('|').split('|')] for r in rows]
151
+ cells = [r for r in cells if not all(re.fullmatch(r':?-{2,}:?', c or '---') for c in r)]
152
+ if not cells:
153
+ return
154
+ tb = doc.add_table(rows=len(cells), cols=len(cells[0]))
155
+ tb.style = 'Table Grid'
156
+ for i, row in enumerate(cells):
157
+ for j, val in enumerate(row[:len(tb.columns)]):
158
+ par = tb.cell(i, j).paragraphs[0]
159
+ _runs(par, val)
160
+ for r in par.runs:
161
+ r.font.size = Pt(10.5)
162
+ if i == 0:
163
+ r.bold = True
164
+ doc.add_paragraph()
165
+
166
+
167
+ def build(md_path, out_path, meta=None, img_width_cm=None):
168
+ """交底书 Markdown → 成品 docx。meta: applicant/title/kind/contact/agent/notes。返回 out_path。"""
169
+ meta = dict(meta or {})
170
+ doc = new_doc()
171
+ add_header_table(doc, meta)
172
+ base = os.path.dirname(os.path.abspath(md_path))
173
+ table = []
174
+ for line in open(md_path, encoding='utf-8').read().splitlines() + ['']:
175
+ s = line.rstrip()
176
+ if s.lstrip().startswith('|'):
177
+ table.append(s)
178
+ continue
179
+ if table:
180
+ _flush_table(doc, table)
181
+ table = []
182
+ if not s.strip():
183
+ continue
184
+ img = re.match(r'^\s*!\[(.*?)\]\(([^)]+)\)\s*$', s)
185
+ if img:
186
+ src = img.group(2).strip()
187
+ add_figure(doc, src if os.path.isabs(src) else os.path.join(base, src), img.group(1).strip(), img_width_cm)
188
+ continue
189
+ h = re.match(r'^(#{1,3})\s+(.*)', s)
190
+ if h:
191
+ doc.add_paragraph(h.group(2).strip(), style=f'Heading {len(h.group(1))}')
192
+ elif re.match(r'^\s*[-*]\s+', s):
193
+ _runs(doc.add_paragraph(style='List Bullet'), re.sub(r'^\s*[-*]\s+', '', s))
194
+ elif re.match(r'^\s*\d+[.、]\s*', s):
195
+ _runs(doc.add_paragraph(style='List Number'), re.sub(r'^\s*\d+[.、]\s*', '', s))
196
+ else:
197
+ _runs(doc.add_paragraph(), s)
198
+ doc.save(out_path)
199
+ return out_path
200
+
201
+
202
+ def verify(path):
203
+ """重读校验:章节树 + 段落/表格/插图数。交付前必跑,对照 outline.md 逐节点名。"""
204
+ doc = Document(path)
205
+ heads = [(p.style.name, p.text) for p in doc.paragraphs if p.style.name.startswith('Heading')]
206
+ print(f'[verify] 段落 {len(doc.paragraphs)} · 表格 {len(doc.tables)} · 插图 {len(doc.inline_shapes)} · 标题 {len(heads)}')
207
+ for style, text in heads:
208
+ print(' ' * (int(style[-1]) - 1) + f'- [{style}] {text}')
209
+ missing = [s for s in ('一、', '二、', '三、', '四、') if not any(t.startswith(s) for _, t in heads)]
210
+ if missing:
211
+ print('[warn] 缺少一级章节:' + '、'.join(missing))
212
+ return heads
213
+
214
+
215
+ if __name__ == '__main__':
216
+ md = 'patent_docx_check.md'
217
+ open(md, 'w', encoding='utf-8').write(
218
+ '# 一、与本申请最接近的现有技术:\n## 1、现有技术的方案简述\n现有技术主要有三类方案,如图 1 所示。\n\n'
219
+ '## 2、现有技术的客观缺点\n**缺点一:变更周期以天计**\n规则写在源码中,每次调整都要走完整发布流程。\n\n'
220
+ '# 二、本申请的技术方案:\n## (1)具体方案\n其核心构思是将三件事在同一套机制中同时解决:\n'
221
+ '- 在安全性上,以能力裁剪实现沙箱;\n- 在时效性上,解析缓存配合整体替换;\n- 在可用性上,单条异常边界。\n\n'
222
+ '## 2.1 总体流程\n| 参数 | 取值 |\n|---|---|\n| 熔断阈值 | 连续异常 10 次 |\n\n'
223
+ '# 三、本申请可能的替代方案\n替代方案 1:改变异常边界的粒度。\n\n'
224
+ '# 四、其他有助于理解本申请提案的技术资料\n## 3、本申请的客体适格性说明\n手段作用于执行环境的能力边界。\n')
225
+ p = build(md, 'patent_docx_check.docx', meta={
226
+ 'applicant': '陈波', 'title': '一种沙箱化表达式规则的热更新与异常熔断隔离方法',
227
+ 'kind': '发明', 'contact': '陈波 13800000000 a@b.com',
228
+ })
229
+ verify(p)
230
+ print('OK', p)
@@ -0,0 +1,31 @@
1
+ {
2
+ "skill": "patent-disclosure",
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": "做一次商标注册申请",
28
+ "shouldTrigger": false
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: patent-drafting
3
+ description: 撰写专利申请文件正文(权利要求书、说明书、说明书摘要、附图说明、摘要附图)。当用户说"写权利要求/写说明书/出申请文件/按交底书写正式文本/答复审查意见"时使用。上游是 patent-disclosure(交底书),附图用 render_diagram 的 patent 主题。
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # 专利申请文件(权利要求书 + 说明书 + 摘要 + 附图)
8
+
9
+ 交底书是给代理人看的,申请文件是**递给专利局**的。二者不能混:
10
+ 交底书可以有"建议""可能",申请文件里**一个不确定的词都不能有**。
11
+
12
+ 已有交底书就从它转写;没有就先走 patent-disclosure。**申请文件的每个特征都必须能在交底书里找到出处**。
13
+
14
+ ## 一、权利要求书(最重要,先写它)
15
+
16
+ 结构:独立权利要求 1 → 从属 2..N → 装置权利要求 → 电子设备 → 存储介质 → 计算机程序产品。
17
+
18
+ ### 独权 1 的写法
19
+
20
+ ```
21
+ 1. 一种<主题名称>,其特征在于,包括:
22
+ 步骤一:<动作>,<条件>,<结果>;
23
+ 步骤二:……;
24
+ ……
25
+ 步骤N:……。
26
+ ```
27
+
28
+ - **主题名称 = 交底书的发明创造名称**,全文一字不改;方法权利要求写"方法",装置写"装置"
29
+ - 前序部分写与现有技术共有的特征,"其特征在于"之后写区别特征——**区别特征要写机制的配合关系**,
30
+ 不是把三个已知特征并列(并列容易被"三份现有技术的简单组合"打掉)
31
+ - 每个步骤一句话到底,主谓宾齐全;步骤之间的引用要明确("所述规则集合""所述连续异常计数")
32
+ - **首次出现的部件/参数用"一个/所述"引出,之后一律"所述XX"**,前后名称必须完全一致
33
+ - 禁用词:约、大约、优选、较佳、等、诸如、大概、若干、尽可能、显著。数值要么写具体值、
34
+ 要么写"预设阈值"并在说明书中给出示例值
35
+ - 功能性限定慎用("用于……的模块")——能写动作就写动作
36
+ - **开放式表述保范围**:能力裁剪类特征写"至少禁止 A、B、C",参数写"预设阈值",
37
+ 这样后续实现收紧或放宽都还在范围内
38
+
39
+ ### 从属权利要求
40
+
41
+ - 引用格式:`2. 根据权利要求 1 所述的方法,其特征在于,……`;多引多写 `根据权利要求 1 或 2 所述的`
42
+ - **一个从属项只加一个技术特征**;把交底书里的"并列机制"(三重防线之类)拆成并列的从属项
43
+ - 布局顺序:核心机制细化 → 参数取值 → 失效时的保守处置 → 存证与可追溯 → 生命周期与回滚
44
+ - 从属项是被打掉独权后的退守阵地,**每一项都要能独立支撑一次修改**,别写成同义反复
45
+
46
+ ### 装置/设备/介质/程序产品
47
+
48
+ - 装置权利要求的模块**与方法步骤一一对应**(步骤一→接收模块,步骤二→解析模块…),
49
+ 模块名与图3 的附图标记一致
50
+ - 电子设备:存储器 + 处理器,处理器执行程序时实现权利要求 1-N 任一所述方法
51
+ - 存储介质:计算机可读存储介质,其上存储计算机程序,被处理器执行时实现……
52
+ - 程序产品:包含计算机程序,被处理器执行时实现……
53
+
54
+ ## 二、说明书
55
+
56
+ 固定五节,节名不能改:
57
+
58
+ 1. **技术领域**:一句话。"本申请涉及<领域>技术领域,尤其涉及一种<主题名称>。"
59
+ 2. **背景技术**:写现有技术的做法与客观缺点(来自交底书第一节)。
60
+ **不得贬低他人产品、不得出现商标与厂商名**;缺点要写成技术事实。
61
+ 3. **发明内容**:三段式——
62
+ - 要解决的技术问题(对应背景技术的缺点,逐条对上)
63
+ - 技术方案(**把权利要求 1 完整复述一遍**,再补从属项的方案)
64
+ - 有益效果(对应技术问题逐条给出,可测量)
65
+ 4. **附图说明**:`图 1 为本申请实施例提供的<内容>示意图;` 逐张一句话,编号与附图一致。
66
+ 5. **具体实施方式**:
67
+ - 至少一个完整实施例,把权利要求的每个步骤展开成"怎么做",给具体参数示例值
68
+ - **权利要求里出现的每个特征,说明书里必须有对应记载**(否则"得不到说明书支持")
69
+ - 反过来,说明书里可以多写(为后续修改留素材),但不能出现与权利要求矛盾的表述
70
+ - 提部件必带附图标记("表达式校验模块 101")
71
+ - 结尾加惯用兜底段:以上仅为本申请的较佳实施例,凡在本申请精神和原则之内所作的任何修改、
72
+ 等同替换和改进等,均应包含在本申请的保护范围之内。
73
+
74
+ ## 三、摘要与摘要附图
75
+
76
+ - 摘要 ≤300 字:技术领域 + 要解决的问题 + 主要技术手段 + 用途/效果,**一段到底,不分段、不加标题**
77
+ - 不得使用商业性宣传用语("本发明极大提升……")
78
+ - 摘要附图选**最能体现发明整体方案的那一张**,通常是图2(总体流程)
79
+
80
+ ## 四、附图
81
+
82
+ 用 `render_diagram` 的 `theme:"patent"` 画(见 arch-diagram / patent-disclosure 的 figures 附件)。
83
+ 正式申请对附图的硬要求:
84
+
85
+ - 黑白线条、直角、无阴影灰度网底 → patent 主题已强制
86
+ - 图中**除必要词语外不加注释**;不得有页码、公司标识、边框外文字
87
+ - 各图按图1、图2 顺序编号;同一部件在各图中的**附图标记必须一致且全篇唯一**
88
+ - 说明书里凡提到部件必带标记,且标记必须在附图中出现——两边对不上是最常见的补正理由
89
+
90
+ ## 五、答复审查意见(OA)时
91
+
92
+ 1. 先读清审查员引用的对比文件与其指出的**具体段落**,逐条对照,不要泛泛答辩
93
+ 2. 修改只能**基于原始申请文件记载的内容**(超范围是硬伤,改不回来)——
94
+ 这就是说明书要多写、独权要用开放式表述的原因
95
+ 3. 争辩创造性时抓三点:区别技术特征是什么 → 实际解决的技术问题是什么 →
96
+ 现有技术是否给出了结合的技术启示(**没有启示**是主战场)
97
+ 4. 意见陈述书里对每条审查意见单独编号回应,附修改对照表
98
+
99
+ ## 交付前自查
100
+
101
+ - [ ] 权利要求主题名称与发明名称完全一致,全文引用关系闭合(无"所述X"找不到出处)
102
+ - [ ] 独权无禁用词、无功能性限定滥用、区别特征写的是配合关系而非并列堆砌
103
+ - [ ] 从属项各加一个特征,能独立支撑一次修改
104
+ - [ ] 装置模块与方法步骤一一对应,且与图3 标记一致
105
+ - [ ] 说明书五节齐全,权利要求每个特征在说明书中都有记载
106
+ - [ ] 附图说明张数 = 实际附图张数;正文提到的每个标记都在图上
107
+ - [ ] 摘要 ≤300 字、无宣传语、指定了摘要附图
108
+ - [ ] 全文无商标、厂商名、产品名与贬低性表述
@@ -0,0 +1,31 @@
1
+ {
2
+ "skill": "patent-drafting",
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": "做一次专利布局的选题",
28
+ "shouldTrigger": false
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: patent-portfolio
3
+ description: 专利技术点挖掘与同族布局(从产品/源码里找可专利点、一个方向拆成多篇互不覆盖的申请、排期与优先权)。当用户说"这个项目能报哪些专利/挖专利点/专利布局/拆几篇/会不会撞车"时使用。产出选题清单与同族边界表;单篇交底书见 patent-disclosure。
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # 专利挖掘与同族布局(决定"报几篇、每篇圈什么")
8
+
9
+ 布局做错的代价比单篇写差大得多:**两篇互相覆盖 = 白花一份钱且互为现有技术**。
10
+ 本技能只做技术侧的选题与边界,法律侧(费用、年费、地域、许可)见 ip-management。
11
+
12
+ ## 一、挖点:可专利点长什么样
13
+
14
+ 从产品或代码库里找,判据是**"它是不是一个别人不会自然想到的技术取舍"**:
15
+
16
+ - **有取舍的机制**:为了 A 牺牲 B,并用第三个机制把 B 补回来 —— 最容易立住的形态
17
+ - **有阈值/状态/时序的机制**:三态熔断、双滚动窗口、波次结算、切点吸附
18
+ - **跨层协同**:客户端与服务端配合完成一件事(旁路捕获去重、视觉桥接注入)
19
+ - **反直觉的做法**:不做缓存反而更快、不重试反而更稳、把能力裁掉换安全
20
+
21
+ 不是可专利点:纯业务规则与流程(谁审批谁)、纯 UI 布局、参数调优、
22
+ 把现成库接起来、纯算法公式本身。**判据是有没有作用于计算机系统的内在规律**。
23
+
24
+ 挖点动作:
25
+ 1. `list_files` + `search_code` 通读模块骨架,列出"这个系统里有名字的机制"
26
+ 2. 对每个机制问三句:解决什么技术问题?现有做法为什么不行?我们哪一步不同?
27
+ 3. 三句都答得出 → 进候选池;答不出 → 记入"待观察",别硬报
28
+
29
+ ## 二、拆篇:同族边界怎么划
30
+
31
+ 一个方向拆成 N 篇的唯一合法理由是:**它们的独立权利要求各自的区别特征不重叠**。
32
+
33
+ 划边界的方法:
34
+ 1. 把候选点写成一句"区别特征句":`以<手段>实现<效果>,其中<关键取舍>`
35
+ 2. 两句之间若有一句能被另一句涵盖 → 合并成一篇(把弱的降级为从属权利要求)
36
+ 3. 若只是"同一机制的不同应用场景" → 合并,场景写成实施例
37
+ 4. 确认互不覆盖后,在每篇交底书的相关位置**标注「另案」**:
38
+ > 该部分的<XX机制>已由《一种……方法》另案申请,本申请不就此主张,仅作为运行环境记载。
39
+
40
+ 这句话必须写,否则代理人会把同一特征在两篇里各主张一次,两篇互相成为最接近的现有技术。
41
+
42
+ ## 三、布局形状
43
+
44
+ - **核心专利**:把主机制圈住,权利要求写得宽(开放式表述、"至少包括")
45
+ - **外围包绕**:围绕核心的改进点各一篇(参数自适应、失效保守处置、可观测与回溯、跨端一致性)
46
+ —— 外围篇是防止他人绕过核心的篱笆,也是后续交叉许可的筹码
47
+ - **防御性公开**:不值得申请但不想被别人申请的,写成技术公开(博客/文档留时间戳)
48
+ - **不申请**:核心工艺且不公开也难以被反向 —— 走商业秘密路线(专利=公开换保护,想清楚再报)
49
+
50
+ ## 四、排期与顺序
51
+
52
+ - **先申请后发表**:论文、发布会、开源、展会披露都会破坏新颖性。有申请计划的先递交
53
+ - 同族按依赖顺序递交:核心先递,外围随后(外围引用核心时用"另案"表述而非详细复述)
54
+ - 优先权:首次申请起 12 个月内可就同一主题在境外申请并主张优先权,需要出海的提前规划
55
+ - 一批次建议 5~12 篇,超过就分两批 —— 一次递太多,代理人质量必然滑坡
56
+
57
+ ## 五、产出物
58
+
59
+ ### 选题清单(给用户拍板用)
60
+
61
+ | 序号 | 拟名称 | 区别特征句 | 客体风险 | 已实现 | 建议 |
62
+ |---|---|---|---|---|---|
63
+ | 1 | 一种…… | 以……实现……,其中…… | 低/中/高 | 是/部分 | 报/合并到 N/待观察 |
64
+
65
+ ### 同族边界表(给代理人用)
66
+
67
+ | 篇 | 独权圈住的 | 明确不主张(另案) |
68
+ |---|---|---|
69
+ | 《一种 A》 | ……机制及其配合关系 | ……(见《一种 B》) |
70
+
71
+ 两张表都用 `render_diagram` 配一张 `tree` 或 `module` 图会更好读:
72
+ 根为技术方向,一级为核心/外围,叶子为各篇名称。
73
+
74
+ ## 自查
75
+
76
+ - [ ] 每个候选点都写出了区别特征句(写不出的不进清单)
77
+ - [ ] 逐对检查过覆盖关系,没有两篇的独权互相涵盖
78
+ - [ ] 每篇的"另案"表述已写进交底书
79
+ - [ ] 标注了客体风险,高风险项给了换切入点的建议
80
+ - [ ] 与已公开材料核对过:没有已发表/已开源导致新颖性丧失的项
81
+ - [ ] 与既有专利资产核对过,没有重复申请(台账见 ip-management)
@@ -0,0 +1,31 @@
1
+ {
2
+ "skill": "patent-portfolio",
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": "做一次商标侵权应对",
28
+ "shouldTrigger": false
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "skill": "pdf-toolkit",
3
+ "cases": [
4
+ {
5
+ "id": "pos-1",
6
+ "prompt": "把这个 PDF 拆分,抽出某几页",
7
+ "shouldTrigger": true
8
+ },
9
+ {
10
+ "id": "pos-2",
11
+ "prompt": "多个 PDF 合并,加个水印",
12
+ "shouldTrigger": true
13
+ },
14
+ {
15
+ "id": "pos-3",
16
+ "prompt": "PDF 去密码,旋转页面",
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": "把 Word 转成正式文档",
28
+ "shouldTrigger": false
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "skill": "perf-optimize",
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": "CPU 高延迟大,怎么定位瓶颈",
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": "写一段 SQL 的索引优化",
28
+ "shouldTrigger": false
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "skill": "pivot-crosstab",
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": "写一段 SQL 的分组聚合",
27
+ "shouldTrigger": false
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "skill": "policy-analysis",
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": "写一份合规体系文件",
28
+ "shouldTrigger": false
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "skill": "portfolio-analysis",
3
+ "cases": [
4
+ {
5
+ "id": "pos-1",
6
+ "prompt": "我的持仓组合表现怎么样,收益从哪来",
7
+ "shouldTrigger": true
8
+ },
9
+ {
10
+ "id": "pos-2",
11
+ "prompt": "做 Brinson 业绩归因",
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
+ }