@huicai/cli 2026.714.0 → 2026.721.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 (335) hide show
  1. package/README.md +2 -1
  2. package/bin/huicai.js +83 -0
  3. package/package.json +2 -2
  4. package/skills/ab-testing/SKILL.md +58 -0
  5. package/skills/ab-testing/scripts/__pycache__/ab_test.cpython-312.pyc +0 -0
  6. package/skills/ab-testing/scripts/ab_test.py +71 -0
  7. package/skills/academic-writing/SKILL.md +54 -0
  8. package/skills/accounting-ops/SKILL.md +68 -0
  9. package/skills/accounting-ops/scripts/__pycache__/acct_tools.cpython-312.pyc +0 -0
  10. package/skills/accounting-ops/scripts/acct_tools.py +89 -0
  11. package/skills/ai-agent/SKILL.md +85 -0
  12. package/skills/ai-agent/references/tool-design-checklist.md +51 -0
  13. package/skills/ai-aiops/SKILL.md +73 -0
  14. package/skills/ai-aiops/references/aiops-rollout-checklist.md +36 -0
  15. package/skills/ai-coding/SKILL.md +89 -0
  16. package/skills/ai-coding/references/task-brief-template.md +48 -0
  17. package/skills/ai-compliance/SKILL.md +74 -0
  18. package/skills/ai-compliance/references/genai-compliance-checklist.md +40 -0
  19. package/skills/ai-eval/SKILL.md +80 -0
  20. package/skills/ai-eval/scripts/eval-runner.py +150 -0
  21. package/skills/ai-llm-app/SKILL.md +90 -0
  22. package/skills/ai-llm-app/references/llm-integration-checklist.md +39 -0
  23. package/skills/ai-mlops/SKILL.md +72 -0
  24. package/skills/ai-mlops/scripts/token-cost-calc.py +108 -0
  25. package/skills/ai-multimodal/SKILL.md +86 -0
  26. package/skills/ai-multimodal/scripts/field-validate.py +182 -0
  27. package/skills/ai-prompt/SKILL.md +75 -0
  28. package/skills/ai-prompt/references/prompt-template.md +46 -0
  29. package/skills/ai-rag/SKILL.md +76 -0
  30. package/skills/ai-rag/scripts/chunk-inspect.py +129 -0
  31. package/skills/anomaly-detection/SKILL.md +54 -0
  32. package/skills/anomaly-detection/scripts/__pycache__/anomaly.cpython-312.pyc +0 -0
  33. package/skills/anomaly-detection/scripts/anomaly.py +99 -0
  34. package/skills/api-integration/SKILL.md +74 -0
  35. package/skills/api-integration/references/signing-recipes.md +141 -0
  36. package/skills/arch-design/SKILL.md +57 -0
  37. package/skills/arch-distributed/SKILL.md +81 -0
  38. package/skills/arch-distributed/references/idempotency-review.md +43 -0
  39. package/skills/arch-multitenant/SKILL.md +73 -0
  40. package/skills/arch-multitenant/references/tenant-isolation-checklist.md +34 -0
  41. package/skills/audit-assist/SKILL.md +63 -0
  42. package/skills/audit-assist/scripts/__pycache__/audit_sampling.cpython-312.pyc +0 -0
  43. package/skills/audit-assist/scripts/audit_sampling.py +93 -0
  44. package/skills/audit-chain/SKILL.md +60 -0
  45. package/skills/banking-credit/SKILL.md +59 -0
  46. package/skills/banking-credit/scripts/__pycache__/credit_metrics.cpython-312.pyc +0 -0
  47. package/skills/banking-credit/scripts/credit_metrics.py +53 -0
  48. package/skills/brand-design/SKILL.md +56 -0
  49. package/skills/business-plan/SKILL.md +56 -0
  50. package/skills/capital-ops/SKILL.md +52 -0
  51. package/skills/cicd-pipeline/SKILL.md +85 -0
  52. package/skills/cicd-pipeline/references/pipeline-review-checklist.md +39 -0
  53. package/skills/content-creation/SKILL.md +56 -0
  54. package/skills/corporate-governance/SKILL.md +56 -0
  55. package/skills/crawl-chain/SKILL.md +61 -0
  56. package/skills/customer-service/SKILL.md +51 -0
  57. package/skills/data-analysis/SKILL.md +46 -0
  58. package/skills/data-analysis/scripts/cjk_font.py +56 -0
  59. package/skills/data-chain/SKILL.md +54 -0
  60. package/skills/data-governance/SKILL.md +54 -0
  61. package/skills/data-report-pro/SKILL.md +65 -0
  62. package/skills/data-report-pro/scripts/__pycache__/bigdata.cpython-312.pyc +0 -0
  63. package/skills/data-report-pro/scripts/bigdata.py +79 -0
  64. package/skills/data-streaming/SKILL.md +87 -0
  65. package/skills/data-streaming/references/job-checklist.md +36 -0
  66. package/skills/data-wrangling/SKILL.md +52 -0
  67. package/skills/data-wrangling/scripts/__pycache__/join_tools.cpython-312.pyc +0 -0
  68. package/skills/data-wrangling/scripts/join_tools.py +99 -0
  69. package/skills/db-es/SKILL.md +68 -0
  70. package/skills/db-es/scripts/es-health.sh +72 -0
  71. package/skills/db-migration/SKILL.md +72 -0
  72. package/skills/db-migration/scripts/checksum-mysql.sql +46 -0
  73. package/skills/db-migration/scripts/checksum-postgres.sql +39 -0
  74. package/skills/db-migration/scripts/compare-reports.py +98 -0
  75. package/skills/db-mysql/SKILL.md +78 -0
  76. package/skills/db-mysql/scripts/mysql-health.sql +80 -0
  77. package/skills/db-postgres/SKILL.md +86 -0
  78. package/skills/db-postgres/scripts/pg-health.sql +67 -0
  79. package/skills/db-redis/SKILL.md +83 -0
  80. package/skills/db-redis/scripts/redis-health.sh +92 -0
  81. package/skills/dev-cpp/SKILL.md +94 -0
  82. package/skills/dev-cpp/references/cmake-sanitizer-snippets.md +56 -0
  83. package/skills/dev-cross-platform/SKILL.md +73 -0
  84. package/skills/dev-cross-platform/references/capability-matrix-template.md +39 -0
  85. package/skills/dev-csharp/SKILL.md +96 -0
  86. package/skills/dev-csharp/references/review-checklist.md +37 -0
  87. package/skills/dev-frontend/SKILL.md +91 -0
  88. package/skills/dev-frontend/scripts/bundle-budget.py +106 -0
  89. package/skills/dev-go/SKILL.md +88 -0
  90. package/skills/dev-go/scripts/go-triage.sh +54 -0
  91. package/skills/dev-harmony/SKILL.md +64 -0
  92. package/skills/dev-harmony/references/harmony-checklist.md +40 -0
  93. package/skills/dev-java/SKILL.md +77 -0
  94. package/skills/dev-java/scripts/jvm-triage.sh +84 -0
  95. package/skills/dev-mobile/SKILL.md +82 -0
  96. package/skills/dev-mobile/references/store-compliance-checklist.md +33 -0
  97. package/skills/dev-node/SKILL.md +82 -0
  98. package/skills/dev-node/scripts/node-triage.sh +78 -0
  99. package/skills/dev-php/SKILL.md +86 -0
  100. package/skills/dev-php/scripts/fpm-calc.py +48 -0
  101. package/skills/dev-python/SKILL.md +81 -0
  102. package/skills/dev-python/scripts/venv-doctor.sh +75 -0
  103. package/skills/dev-rust/SKILL.md +84 -0
  104. package/skills/dev-rust/references/cargo-ci-snippets.md +50 -0
  105. package/skills/dev-toolchain/SKILL.md +78 -0
  106. package/skills/dev-toolchain/scripts/secret-scan.sh +83 -0
  107. package/skills/doc-chain/SKILL.md +58 -0
  108. package/skills/doc-compare/SKILL.md +44 -0
  109. package/skills/doc-compare/scripts/compare.py +93 -0
  110. package/skills/docx-author/SKILL.md +39 -0
  111. package/skills/docx-author/scripts/docx_doc.py +161 -0
  112. package/skills/ecommerce-ops/SKILL.md +54 -0
  113. package/skills/ecommerce-ops/scripts/__pycache__/gmv_decompose.cpython-312.pyc +0 -0
  114. package/skills/ecommerce-ops/scripts/gmv_decompose.py +61 -0
  115. package/skills/education-training/SKILL.md +53 -0
  116. package/skills/ehs-safety/SKILL.md +63 -0
  117. package/skills/email-writing/SKILL.md +52 -0
  118. package/skills/eng-ai/SKILL.md +74 -0
  119. package/skills/eng-ai/references/ai-feature-checklist.md +36 -0
  120. package/skills/eng-architecture/SKILL.md +85 -0
  121. package/skills/eng-architecture/scripts/capacity-calc.py +100 -0
  122. package/skills/eng-automation/SKILL.md +84 -0
  123. package/skills/eng-automation/references/automation-inventory.md +38 -0
  124. package/skills/eng-automation/references/routine-presets.md +73 -0
  125. package/skills/eng-collaboration/SKILL.md +76 -0
  126. package/skills/eng-collaboration/references/collab-templates.md +43 -0
  127. package/skills/eng-complex-env/SKILL.md +84 -0
  128. package/skills/eng-complex-env/references/env-dossier-template.md +52 -0
  129. package/skills/eng-complex-env/scripts/env-recon.sh +152 -0
  130. package/skills/eng-data-platform/SKILL.md +81 -0
  131. package/skills/eng-data-platform/references/table-spec-template.md +39 -0
  132. package/skills/eng-database/SKILL.md +79 -0
  133. package/skills/eng-database/references/schema-review-checklist.md +37 -0
  134. package/skills/eng-develop/SKILL.md +76 -0
  135. package/skills/eng-develop/references/dod-checklist.md +43 -0
  136. package/skills/eng-docs/SKILL.md +71 -0
  137. package/skills/eng-docs/references/runbook-template.md +57 -0
  138. package/skills/eng-efficiency/SKILL.md +75 -0
  139. package/skills/eng-efficiency/scripts/dora-calc.py +104 -0
  140. package/skills/eng-infra/SKILL.md +81 -0
  141. package/skills/eng-infra/references/production-readiness.md +46 -0
  142. package/skills/eng-integration/SKILL.md +82 -0
  143. package/skills/eng-integration/references/integration-dossier-template.md +38 -0
  144. package/skills/eng-legacy/SKILL.md +81 -0
  145. package/skills/eng-legacy/references/modernization-workbook.md +46 -0
  146. package/skills/eng-observability/SKILL.md +78 -0
  147. package/skills/eng-observability/scripts/slo-calc.py +82 -0
  148. package/skills/eng-ops/SKILL.md +74 -0
  149. package/skills/eng-ops/references/postmortem-template.md +67 -0
  150. package/skills/eng-performance/SKILL.md +73 -0
  151. package/skills/eng-performance/scripts/perf-baseline.py +110 -0
  152. package/skills/eng-planning/SKILL.md +79 -0
  153. package/skills/eng-planning/scripts/schedule-calc.py +101 -0
  154. package/skills/eng-quality/SKILL.md +74 -0
  155. package/skills/eng-quality/references/test-plan-templates.md +46 -0
  156. package/skills/eng-release/SKILL.md +78 -0
  157. package/skills/eng-release/references/release-plan-template.md +36 -0
  158. package/skills/eng-reliability/SKILL.md +72 -0
  159. package/skills/eng-reliability/references/resilience-review.md +43 -0
  160. package/skills/eng-requirements/SKILL.md +86 -0
  161. package/skills/eng-requirements/references/story-templates.md +47 -0
  162. package/skills/eng-research/SKILL.md +73 -0
  163. package/skills/eng-research/references/research-templates.md +42 -0
  164. package/skills/eng-security/SKILL.md +73 -0
  165. package/skills/eng-security/references/security-review-checklist.md +33 -0
  166. package/skills/eng-ux/SKILL.md +85 -0
  167. package/skills/eng-ux/references/ux-review-checklist.md +36 -0
  168. package/skills/engineering-chain/SKILL.md +101 -0
  169. package/skills/engineering-chain/references/eng-health-review.md +37 -0
  170. package/skills/env-offline/SKILL.md +81 -0
  171. package/skills/env-offline/scripts/bundle-manifest.sh +94 -0
  172. package/skills/env-private-deploy/SKILL.md +72 -0
  173. package/skills/env-private-deploy/references/delivery-templates.md +35 -0
  174. package/skills/env-xinchuang/SKILL.md +73 -0
  175. package/skills/env-xinchuang/references/adaptation-matrix-template.md +41 -0
  176. package/skills/equipment-tpm/SKILL.md +56 -0
  177. package/skills/equipment-tpm/scripts/oee.py +58 -0
  178. package/skills/esg-report/SKILL.md +58 -0
  179. package/skills/esg-report/scripts/carbon_calc.py +61 -0
  180. package/skills/event-management/SKILL.md +51 -0
  181. package/skills/excel-analysis-chain/SKILL.md +73 -0
  182. package/skills/file-ingest/SKILL.md +51 -0
  183. package/skills/file-ingest/scripts/__pycache__/file_toolkit.cpython-312.pyc +0 -0
  184. package/skills/file-ingest/scripts/file_toolkit.py +404 -0
  185. package/skills/finance-analysis/SKILL.md +60 -0
  186. package/skills/finance-analysis/references/ratios.md +54 -0
  187. package/skills/finance-analysis/scripts/fin_ratios.py +132 -0
  188. package/skills/finance-chain/SKILL.md +59 -0
  189. package/skills/financial-modeling/SKILL.md +58 -0
  190. package/skills/financial-modeling/scripts/fin_model.py +123 -0
  191. package/skills/foreign-trade/SKILL.md +54 -0
  192. package/skills/funnel-cohort/SKILL.md +53 -0
  193. package/skills/funnel-cohort/scripts/__pycache__/funnel.cpython-312.pyc +0 -0
  194. package/skills/funnel-cohort/scripts/funnel.py +105 -0
  195. package/skills/gov-document/SKILL.md +57 -0
  196. package/skills/hr-chain/SKILL.md +51 -0
  197. package/skills/hr-operations/SKILL.md +53 -0
  198. package/skills/info-disclosure/SKILL.md +56 -0
  199. package/skills/infra-gateway/SKILL.md +85 -0
  200. package/skills/infra-gateway/references/golive-checklist.md +36 -0
  201. package/skills/infra-k8s/SKILL.md +78 -0
  202. package/skills/infra-k8s/scripts/k8s-triage.sh +84 -0
  203. package/skills/infra-mq/SKILL.md +87 -0
  204. package/skills/infra-mq/references/mq-review-checklist.md +36 -0
  205. package/skills/insurance-advisory/SKILL.md +57 -0
  206. package/skills/internal-audit/SKILL.md +66 -0
  207. package/skills/ip-management/SKILL.md +54 -0
  208. package/skills/ipo-listing/SKILL.md +60 -0
  209. package/skills/it-audit/SKILL.md +56 -0
  210. package/skills/itsm-ops/SKILL.md +55 -0
  211. package/skills/knowledge-sop/SKILL.md +51 -0
  212. package/skills/legal-chain/SKILL.md +55 -0
  213. package/skills/legal-contract/SKILL.md +58 -0
  214. package/skills/legal-contract/references/contract-checklists.md +59 -0
  215. package/skills/litigation-support/SKILL.md +53 -0
  216. package/skills/logistics-warehouse/SKILL.md +53 -0
  217. package/skills/logistics-warehouse/scripts/freight_check.py +71 -0
  218. package/skills/long-doc-analysis/SKILL.md +52 -0
  219. package/skills/management-accounting/SKILL.md +57 -0
  220. package/skills/management-accounting/scripts/__pycache__/costing.cpython-312.pyc +0 -0
  221. package/skills/management-accounting/scripts/costing.py +90 -0
  222. package/skills/manufacturing-chain/SKILL.md +57 -0
  223. package/skills/manufacturing-quality/SKILL.md +57 -0
  224. package/skills/manufacturing-quality/scripts/__pycache__/spc.cpython-312.pyc +0 -0
  225. package/skills/manufacturing-quality/scripts/spc.py +86 -0
  226. package/skills/marketing-analytics/SKILL.md +59 -0
  227. package/skills/marketing-analytics/scripts/__pycache__/rfm.cpython-312.pyc +0 -0
  228. package/skills/marketing-analytics/scripts/rfm.py +60 -0
  229. package/skills/marketing-chain/SKILL.md +57 -0
  230. package/skills/meeting-minutes/SKILL.md +55 -0
  231. package/skills/metrics-system/SKILL.md +55 -0
  232. package/skills/negotiation-prep/SKILL.md +56 -0
  233. package/skills/obs-prometheus/SKILL.md +74 -0
  234. package/skills/obs-prometheus/references/promql-cheatsheet.md +78 -0
  235. package/skills/office-automation/SKILL.md +54 -0
  236. package/skills/okr-review/SKILL.md +44 -0
  237. package/skills/ops-fleet/SKILL.md +69 -0
  238. package/skills/ops-fleet/scripts/batch-exec-guard.sh +119 -0
  239. package/skills/ops-linux/SKILL.md +69 -0
  240. package/skills/ops-linux/scripts/quick-triage.sh +138 -0
  241. package/skills/optimization-solver/SKILL.md +53 -0
  242. package/skills/optimization-solver/scripts/__pycache__/solver.cpython-312.pyc +0 -0
  243. package/skills/optimization-solver/scripts/solver.py +107 -0
  244. package/skills/pdf-toolkit/SKILL.md +43 -0
  245. package/skills/pdf-toolkit/scripts/pdf_ops.py +137 -0
  246. package/skills/pivot-crosstab/SKILL.md +44 -0
  247. package/skills/pivot-crosstab/scripts/__pycache__/pivot_tools.cpython-312.pyc +0 -0
  248. package/skills/pivot-crosstab/scripts/pivot_tools.py +90 -0
  249. package/skills/policy-analysis/SKILL.md +47 -0
  250. package/skills/portfolio-analysis/SKILL.md +56 -0
  251. package/skills/portfolio-analysis/scripts/__pycache__/portfolio.cpython-312.pyc +0 -0
  252. package/skills/portfolio-analysis/scripts/portfolio.py +78 -0
  253. package/skills/ppt-chain/SKILL.md +61 -0
  254. package/skills/pptx-author/SKILL.md +48 -0
  255. package/skills/pptx-author/scripts/pptx_deck.py +193 -0
  256. package/skills/pr-comms/SKILL.md +58 -0
  257. package/skills/pr-comms/references/pr-templates.md +54 -0
  258. package/skills/procurement-supply/SKILL.md +47 -0
  259. package/skills/procurement-supply/scripts/__pycache__/supply.cpython-312.pyc +0 -0
  260. package/skills/procurement-supply/scripts/supply.py +71 -0
  261. package/skills/product-design/SKILL.md +66 -0
  262. package/skills/product-design/references/prd-framework.md +60 -0
  263. package/skills/production-planning/SKILL.md +56 -0
  264. package/skills/production-planning/scripts/__pycache__/mrp_capacity.cpython-312.pyc +0 -0
  265. package/skills/production-planning/scripts/mrp_capacity.py +70 -0
  266. package/skills/project-management/SKILL.md +53 -0
  267. package/skills/project-management/scripts/__pycache__/cpm.cpython-312.pyc +0 -0
  268. package/skills/project-management/scripts/cpm.py +84 -0
  269. package/skills/project-proposal/SKILL.md +54 -0
  270. package/skills/project-proposal/scripts/budget_sheet.py +90 -0
  271. package/skills/qa-api-automation/SKILL.md +67 -0
  272. package/skills/qa-api-automation/references/three-layer-skeleton.md +61 -0
  273. package/skills/qa-mobile-automation/SKILL.md +70 -0
  274. package/skills/qa-mobile-automation/references/device-matrix-template.md +34 -0
  275. package/skills/qa-ui-automation/SKILL.md +80 -0
  276. package/skills/qa-ui-automation/references/stability-conventions.md +41 -0
  277. package/skills/quant-analysis/SKILL.md +60 -0
  278. package/skills/quant-analysis/scripts/__pycache__/quant.cpython-312.pyc +0 -0
  279. package/skills/quant-analysis/scripts/quant.py +102 -0
  280. package/skills/real-estate-property/SKILL.md +51 -0
  281. package/skills/real-estate-property/scripts/__pycache__/property_calc.cpython-312.pyc +0 -0
  282. package/skills/real-estate-property/scripts/property_calc.py +106 -0
  283. package/skills/regression-forecast/SKILL.md +52 -0
  284. package/skills/regression-forecast/scripts/__pycache__/regress.cpython-312.pyc +0 -0
  285. package/skills/regression-forecast/scripts/regress.py +106 -0
  286. package/skills/retail-store-ops/SKILL.md +57 -0
  287. package/skills/retail-store-ops/scripts/store_ops.py +57 -0
  288. package/skills/risk-compliance/SKILL.md +51 -0
  289. package/skills/sec-auth/SKILL.md +89 -0
  290. package/skills/sec-auth/references/auth-review-checklist.md +38 -0
  291. package/skills/sec-compliance/SKILL.md +74 -0
  292. package/skills/sec-compliance/references/dengbao-checklist.md +43 -0
  293. package/skills/securities-chain/SKILL.md +69 -0
  294. package/skills/securities-research/SKILL.md +58 -0
  295. package/skills/securities-research/scripts/__pycache__/valuation.cpython-312.pyc +0 -0
  296. package/skills/securities-research/scripts/valuation.py +93 -0
  297. package/skills/slides-html/SKILL.md +50 -0
  298. package/skills/slides-html/scripts/template.html +117 -0
  299. package/skills/statistical-testing/SKILL.md +51 -0
  300. package/skills/statistical-testing/scripts/__pycache__/stat_tests.cpython-312.pyc +0 -0
  301. package/skills/statistical-testing/scripts/stat_tests.py +131 -0
  302. package/skills/strategy-planning/SKILL.md +53 -0
  303. package/skills/supply-chain/SKILL.md +53 -0
  304. package/skills/tax-compliance/SKILL.md +57 -0
  305. package/skills/tax-compliance/scripts/tax_calc.py +90 -0
  306. package/skills/tech-research/SKILL.md +55 -0
  307. package/skills/tech-research/references/research-framework.md +50 -0
  308. package/skills/tender-bidding/SKILL.md +65 -0
  309. package/skills/tender-bidding/references/bid-checklist.md +44 -0
  310. package/skills/translation-pro/SKILL.md +44 -0
  311. package/skills/treasury-mgmt/SKILL.md +56 -0
  312. package/skills/treasury-mgmt/scripts/__pycache__/cashflow_forecast.cpython-312.pyc +0 -0
  313. package/skills/treasury-mgmt/scripts/cashflow_forecast.py +51 -0
  314. package/skills/web-scraping/SKILL.md +81 -0
  315. package/skills/web-search/SKILL.md +67 -0
  316. package/skills/xlsx-analysis/SKILL.md +96 -0
  317. package/skills/xlsx-analysis/scripts/__pycache__/xlsx_toolkit.cpython-312.pyc +0 -0
  318. package/skills/xlsx-analysis/scripts/xlsx_style.py +71 -0
  319. package/skills/xlsx-analysis/scripts/xlsx_toolkit.py +335 -0
  320. package/src/agent.js +1 -1
  321. package/src/api.js +1 -1
  322. package/src/codeindex.js +1 -1
  323. package/src/commands.js +1 -1
  324. package/src/config.js +1 -1
  325. package/src/context.js +1 -1
  326. package/src/doccache.js +1 -0
  327. package/src/doctor.js +1 -1
  328. package/src/executors.js +1 -1
  329. package/src/input.js +1 -1
  330. package/src/permissions.js +1 -1
  331. package/src/pyruntime.js +1 -0
  332. package/src/repl.js +1 -1
  333. package/src/scan.js +1 -1
  334. package/src/tools.js +1 -1
  335. package/src/tui/app.js +1 -1
@@ -0,0 +1,43 @@
1
+ # 等保三级技术核查与测评准备(sec-compliance 落笔件;以当日标准与测评机构口径为准)
2
+
3
+ ## 1. 三级高频技术核查表(自查用,测评前逐项过)
4
+
5
+ | # | 要求 | 工程落点 | 证据材料 | 状态 |
6
+ |---|---|---|---|---|
7
+ | 1 | 双因素认证(管理/运维入口) | 后台+堡垒机 MFA:__ | 登录流程截图/配置导出 | □ |
8
+ | 2 | 审计日志 ≥6 个月且防篡改 | 集中日志__+保留策略__+完整性__ | 保留配置/样例日志/存储量 | □ |
9
+ | 3 | 口令策略与失败锁定 | 复杂度/有效期/锁定阈值:__ | 策略配置导出 | □ |
10
+ | 4 | 账号与最小权限 | 季度清理记录/离职即禁流程 | 账号清单+清理记录 | □ |
11
+ | 5 | 默认口令与测试账号清零 | 巡检:__ | 扫描记录 | □ |
12
+ | 6 | 通信加密 | 全站 TLS(内网含)__;弱套件禁用 | 扫描报告/网关配置 | □ |
13
+ | 7 | 存储加密(敏感字段) | 字段清单__;算法__(密评场景国密) | 字段清单+实现说明 | □ |
14
+ | 8 | 安全区域边界 | 网络分区图/访问控制策略表 | 拓扑图+策略导出 | □ |
15
+ | 9 | 入侵防范/恶意代码 | WAF__/主机防护__/漏洞 SLA 记录 | 部署证明+修复台账 | □ |
16
+ | 10 | 数据备份(异地)与恢复演练 | 3-2-1:__;最近演练__ | 备份策略+演练记录 | □ |
17
+ | 11 | 剩余信息保护 | 删除/退租清除机制:__ | 机制说明(删除证明模板) | □ |
18
+ | 12 | 安全管理制度与培训 | 制度文档/培训记录 | 文档清单+签到 | □ |
19
+
20
+ ## 2. 证据包目录结构(平时归档,测评直接交)
21
+
22
+ ```
23
+ 等保证据/YYYY/
24
+ ├── 01-定级备案(定级报告/备案证明)
25
+ ├── 02-拓扑与资产(拓扑图/主机清单=CMDB 导出,ops-fleet)
26
+ ├── 03-配置证据(按核查表编号存截图与导出)
27
+ ├── 04-台账(漏洞修复/账号清理/补丁状态/例外清单)
28
+ ├── 05-记录(备份演练/应急演练/培训/巡检)
29
+ └── 06-制度(管理制度/应急预案/上次测评报告与整改)
30
+ ```
31
+
32
+ ## 3. 整改分级登记
33
+
34
+ | 风险项(测评报告编号) | 级别(高/中/低) | 整改动作 | Owner | 期限 | 复测证据 |
35
+ |---|---|---|---|---|---|
36
+
37
+ > 高风险项阻塞;中低风险带整改计划;整改项同步进安全例外台账(有期限有接受人)。
38
+
39
+ ## 4. 密评触发自查(适用才填)
40
+
41
+ - 触发依据:□关基 □客户合同 □行业要求:__
42
+ - 国密落点:传输套件__/存储 SM4 字段__/签名 SM2 场景__/密钥管理__
43
+ - 双轨兼容:不支持国密的客户端占比__,降级策略__
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: securities-chain
3
+ description: 证券与资本市场技能链总控(研究估值/IPO 上市/信息披露/投资分析/并购资本五条主线→技能路由与端到端工作流)。当资本市场诉求跨环节("从辅导到上市""董秘全年披露怎么管""组合从分析到报告")或不确定用哪个技能时先载入。
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # 证券技能链总控
8
+
9
+ 全链三条铁律:**不构成投资建议**(quant/portfolio/research 声明必带);
10
+ **内幕信息高压线**(未披露重大信息不进任何分析与对外口径);
11
+ **规则以现行为准**(上市/披露/减持规则常修订,拿现行原文对照,中介机构牵头)。
12
+
13
+ ## 场景路由表
14
+
15
+ | 资本市场场景 | 高频事项 | 技能 |
16
+ |---|---|---|
17
+ | 卖方/买方研究 | 公司研究框架/DCF 可比估值/业绩点评 | **securities-research** |
18
+ | 行情与策略 | 收益回撤夏普/技术指标/回测 | **quant-analysis** |
19
+ | 组合管理 | 贡献分解/Brinson 归因/再平衡 | **portfolio-analysis** |
20
+ | IPO 上市 | 条件对照/规范整改/申报/问询 | **ipo-listing** |
21
+ | 信息披露 | 定期临时公告/内幕管理/窗口期 | **info-disclosure** |
22
+ | 公司治理 | 三会决议/章程/三重一大 | corporate-governance |
23
+ | 并购与资本 | 尽调资料室/交割/ESOP/清算 | capital-ops + financial-modeling |
24
+ | 财务底层 | 勾稽比率/建模/审计配合 | finance-chain 全链 |
25
+
26
+ ## 端到端工作流
27
+
28
+ ### ① 深度研究链(研究员)
29
+ 标的初筛(行业框架五力)→ 财务解构(finance-analysis 勾稽先行——**勾稽不过的公司
30
+ 直接红旗**)→ 业务调研(long-doc-analysis 深读年报招股书+出处引用)→ 建模
31
+ (financial-modeling 驱动式)→ 估值(valuation:DCF 敏感性+可比分位,两法并列)→
32
+ 量化补充视角(quant-analysis:估值锚 vs 价格行为)→ 报告(securities-research 规范+
33
+ 合规声明)→ 跟踪表(业绩点评快评节奏)。
34
+
35
+ ### ② IPO 全程链(拟上市公司,2–3 年周期)
36
+ 体检(ipo-listing 条件对照+finance-analysis 自洁)→ 股改与治理(corporate-governance
37
+ 三会实转+章程,代持清理)→ 规范整改台账(财务/法律/治理三线并进,internal-audit
38
+ 内审先行——**中介进场前自己先审一遍**)→ 辅导期 → 申报材料(doc-chain 长文档生产线+
39
+ 全书数字一致性)→ 问询攻防(先答后证+三向一致)→ 发行上市 → **切换持续督导模式**
40
+ (info-disclosure 接管,上市不是终点是披露义务的起点)。
41
+
42
+ ### ③ 董秘年度披露链(上市公司常态)
43
+ 披露日历(四期定期报告倒排+股东会节点,office-automation 例程)→ 定期报告编制
44
+ (info-disclosure 分工矩阵+audit-chain 年审链并行)→ 临时公告值守(重大性判定留痕+
45
+ 时限管理)→ 内幕名单与窗口期台账 → 业绩说明会(pr-comms 攻防+已披露边界)→
46
+ 年度合规回顾(披露考评对照自查)。
47
+
48
+ ### ④ 投资组合管理链(投资者/机构)
49
+ 数据整备(行情与持仓,复权口径 quant 纪律)→ 组合体检(portfolio:贡献/集中度/相关性)→
50
+ 归因(Brinson 多期滚动——**连续同向才谈能力**)→ 再平衡评估(偏离+成本两个数)→
51
+ 定期报告(模板+图+声明)→ 例程化(月度自动出组合报告初稿)。
52
+
53
+ ### ⑤ 并购交易链(按单)
54
+ 标的筛选(strategy-planning 协同逻辑)→ 估值区间(valuation 三口径)→ 尽调
55
+ (capital-ops 三资料室+ip-management IP 室+litigation-support 诉讼核查)→
56
+ 交易结构(corporate-governance 决议路径+**三重一大留痕**)→ 交割清单 →
57
+ 整合 100 天计划(project-management)→ 投后对赌跟踪(承诺条款台账)。
58
+
59
+ ## 自动化例程配方
60
+
61
+ - 披露日历:定期报告节点 T-30/T-7 倒排提醒;窗口期开始/结束自动通知名单人员;
62
+ - 组合月报:每月 1 日自动跑贡献+归因+偏离初稿;
63
+ - 研究跟踪:覆盖标的业绩披露日提醒,快评模板预填;
64
+ - 问询台账:回复截止 T-3 升级提醒。
65
+
66
+ ## 使用纪律
67
+
68
+ 链上数字同源(研究模型/申报材料/披露文件各自成体系但同源可溯);
69
+ 所有对外产出过合规声明检查;涉未披露信息的分析仅限内部并入内幕登记视角评估。
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: securities-research
3
+ description: 证券研究(公司/行业研究框架、DCF 与可比估值、研报撰写规范、业绩点评)。当用户说"研报/公司研究/估值/行业分析/业绩点评/招股书分析"时使用。输出为研究分析,不构成投资建议。
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # 证券研究(研究框架 + 可复算估值 + 研报规范)
8
+
9
+ ## 合规红线(每份产出末尾固定声明)
10
+
11
+ 「本内容为数据整理与研究分析,不构成投资建议;数据来自用户提供材料/公开资料,请以官方披露为准。」
12
+ **禁止**:目标价拍脑袋(估值必须给假设与敏感性)、"必涨/建议买入"式措辞(评级留给持牌机构)、
13
+ 未标注来源的关键数据。
14
+
15
+ ## 公司研究框架(深度报告的章节即按此展开)
16
+
17
+ 1. **生意本质**:商业模式一句话(向谁收钱/为什么是它/钱怎么变多);收入结构拆分(产品×区域×客户集中度)。
18
+ 2. **行业与格局**:空间(TAM/SAM,给测算过程)、增速驱动、竞争格局(CR5/份额趋势)、
19
+ 产业链位置(对上下游议价力,用应收/预收结构佐证)。
20
+ 3. **护城河校验**:提出的每条壁垒都要找财务证据(高毛利持续性/研发投入/客户留存/规模成本曲线)。
21
+ 4. **财务解构**:调用 finance-analysis(勾稽→比率→杜邦→现金流质量),研究视角加:
22
+ 盈利驱动拆解(量×价×成本)、资本开支周期位置、股权激励与减持。
23
+ 5. **估值**(见下);6. **风险**:至少 3 条**具体**风险("宏观波动"不算),每条给触发信号与影响量级。
24
+
25
+ ## 估值(`read_skill_file` 读 `scripts/valuation.py`,全部可复算)
26
+
27
+ - **DCF**:`dcf()` —— 显性期 FCF 预测 + 永续增长;**必须输出敏感性矩阵**(WACC × 永续 g),
28
+ 单点估值无意义;假设表(增速/利润率/资本开支/WACC 取数逻辑)与结果同页。
29
+ - **可比公司**:`comps()` —— PE/PB/EV-EBITDA 三口径,给中位数与分位区间;
30
+ 可比公司选择理由必须写(业务相似性>市值相似性)。
31
+ - 两法结果并列给区间,差异大要解释(成长期公司 DCF 敏感、周期股用 PB 分位)。
32
+ - 亏损公司:PS/单用户价值等替代口径,并注明局限。
33
+
34
+ ## 业绩点评(快评模板,1 页)
35
+
36
+ 超预期与否(对比:一致预期/自建预期)→ 分项归因(量/价/毛利/费用/非经常)→
37
+ 对全年指引含义 → 估值位置更新 → 风险提示。全程数字说话。
38
+
39
+ ## 长文档场景
40
+
41
+ 招股书/年报深读走 long-doc-analysis(分段通读+笔记+引用);重点区间:业务与技术、
42
+ 财务报告、风险因素、募投项目;关联交易与客户集中度专项摘录。
43
+
44
+ ## 产出物
45
+
46
+ 深度报告(docx-author,20 页级)/ 快评(1 页)/ 估值模型(xlsx,假设-测算-敏感性三 Sheet,
47
+ 公式可改)/ 路演 PPT(slides-html)。图表规范走 data-analysis。
48
+
49
+ ## 验收自查
50
+
51
+ - [ ] 关键数据均有来源标注;测算给了过程
52
+ - [ ] 估值有假设表 + 敏感性矩阵,无单点结论
53
+ - [ ] 风险具体且有触发信号
54
+ - [ ] 末尾合规声明在;无荐股措辞
55
+
56
+ ## 附件
57
+
58
+ - `scripts/valuation.py` — dcf(含敏感性矩阵)/ comps(三口径分位)/ wacc 计算;可直接执行自测
@@ -0,0 +1,93 @@
1
+ # 估值计算件(经 run_python 执行):WACC / DCF(含 WACC×g 敏感性矩阵)/ 可比公司三口径。
2
+ # 全部输出假设与过程,可复算。直接执行本文件 = 自测。
3
+ import numpy as np
4
+ import pandas as pd
5
+
6
+
7
+ def wacc(rf, beta, mrp, cost_debt, tax, e_weight):
8
+ """WACC = E% × (rf + β×MRP) + D% × Kd × (1-t)。返回 (wacc, cost_equity)。"""
9
+ ke = rf + beta * mrp
10
+ w = e_weight * ke + (1 - e_weight) * cost_debt * (1 - tax)
11
+ print(f'[WACC] Ke={ke:.2%}(rf={rf:.1%} β={beta} MRP={mrp:.1%})| WACC={w:.2%}')
12
+ return w, ke
13
+
14
+
15
+ def dcf(fcf_list, wacc_rate, g, net_debt=0.0, shares=None):
16
+ """两阶段 DCF:显性期 FCF 列表 + 永续(Gordon)。返回 dict(企业价值/股权价值/每股)。"""
17
+ if g >= wacc_rate:
18
+ raise ValueError(f'永续增长率 g={g:.1%} ≥ WACC={wacc_rate:.1%}:模型不成立,检查假设')
19
+ years = np.arange(1, len(fcf_list) + 1)
20
+ pv_explicit = float(np.sum(np.array(fcf_list) / (1 + wacc_rate) ** years))
21
+ tv = fcf_list[-1] * (1 + g) / (wacc_rate - g)
22
+ pv_tv = tv / (1 + wacc_rate) ** len(fcf_list)
23
+ ev = pv_explicit + pv_tv
24
+ eq = ev - net_debt
25
+ out = {'PV显性期': round(pv_explicit, 1), 'PV永续': round(pv_tv, 1), '企业价值EV': round(ev, 1),
26
+ '股权价值': round(eq, 1), '永续占比%': round(pv_tv / ev * 100, 1)}
27
+ if shares:
28
+ out['每股价值'] = round(eq / shares, 2)
29
+ print('[DCF] ' + ' | '.join(f'{k}={v}' for k, v in out.items()))
30
+ if out['永续占比%'] > 80:
31
+ print('[DCF] ⚠ 永续价值占比 >80%:结论对 g/WACC 极敏感,务必看敏感性矩阵而非单点')
32
+ return out
33
+
34
+
35
+ def dcf_sensitivity(fcf_list, wacc_center, g_center, net_debt=0.0, shares=None,
36
+ wacc_step=0.005, g_step=0.005, n=2):
37
+ """敏感性矩阵(行=WACC,列=g),输出每股价值(无股数则股权价值)。"""
38
+ rows = {}
39
+ for dw in range(-n, n + 1):
40
+ w = wacc_center + dw * wacc_step
41
+ row = {}
42
+ for dg in range(-n, n + 1):
43
+ g = g_center + dg * g_step
44
+ try:
45
+ years = np.arange(1, len(fcf_list) + 1)
46
+ pv = float(np.sum(np.array(fcf_list) / (1 + w) ** years))
47
+ tv = fcf_list[-1] * (1 + g) / (w - g) / (1 + w) ** len(fcf_list) if g < w else np.nan
48
+ eq = pv + tv - net_debt
49
+ row[f'g={g:.1%}'] = round(eq / shares, 2) if shares else round(eq, 1)
50
+ except Exception:
51
+ row[f'g={g:.1%}'] = np.nan
52
+ rows[f'WACC={w:.1%}'] = row
53
+ m = pd.DataFrame(rows).T
54
+ print('[敏感性]\n' + m.to_markdown())
55
+ return m
56
+
57
+
58
+ def comps(peers, target_metrics):
59
+ """可比公司三口径:peers 列含 名称/PE/PB/EV_EBITDA;target_metrics={'净利润':..,'净资产':..,'EBITDA':..,'净债务':..}。
60
+ 输出各口径中位/25-75 分位隐含价值区间。"""
61
+ out = {}
62
+ for col, base, adj in (('PE', '净利润', 0), ('PB', '净资产', 0), ('EV_EBITDA', 'EBITDA', -target_metrics.get('净债务', 0))):
63
+ s = pd.to_numeric(peers[col], errors='coerce').dropna()
64
+ if not len(s) or base not in target_metrics:
65
+ continue
66
+ q25, med, q75 = s.quantile([0.25, 0.5, 0.75])
67
+ b = target_metrics[base]
68
+ out[col] = {'中位倍数': round(med, 1),
69
+ '隐含价值区间': [round(q25 * b + adj, 1), round(q75 * b + adj, 1)],
70
+ '中位隐含': round(med * b + adj, 1), '样本数': int(len(s))}
71
+ for k, v in out.items():
72
+ print(f'[可比] {k}: 中位 {v["中位倍数"]}x -> {v["中位隐含"]}(区间 {v["隐含价值区间"]},n={v["样本数"]})')
73
+ return out
74
+
75
+
76
+ if __name__ == '__main__':
77
+ w, _ = wacc(rf=0.025, beta=1.1, mrp=0.06, cost_debt=0.045, tax=0.25, e_weight=0.7)
78
+ assert 0.07 < w < 0.09
79
+ fcf = [100, 115, 130, 145, 158]
80
+ r = dcf(fcf, wacc_rate=0.09, g=0.025, net_debt=200, shares=100)
81
+ assert r['每股价值'] > 0 and r['永续占比%'] > 50
82
+ try:
83
+ dcf(fcf, 0.05, 0.06)
84
+ raise AssertionError('g≥WACC 应抛错')
85
+ except ValueError:
86
+ pass
87
+ m = dcf_sensitivity(fcf, 0.09, 0.025, net_debt=200, shares=100)
88
+ assert m.shape == (5, 5) and m.iloc[0, -1] > m.iloc[-1, 0] # 低WACC高g 应最贵
89
+ peers = pd.DataFrame({'名称': list('甲乙丙丁'), 'PE': [18, 22, 25, 30],
90
+ 'PB': [2.1, 2.8, 3.0, 4.2], 'EV_EBITDA': [10, 12, 13, 16]})
91
+ c = comps(peers, {'净利润': 8, '净资产': 60, 'EBITDA': 15, '净债务': 20})
92
+ assert c['PE']['中位隐含'] == round(23.5 * 8, 1)
93
+ print('OK valuation.py')
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: slides-html
3
+ description: 设计感/炫酷 PPT(HTML 幻灯片管线,桌面端渲染导出 PDF/PPTX)。当用户要"炫酷/好看/发布会级 PPT、设计感演示"时使用;朴素结构稿用 pptx-author。
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # HTML 幻灯片(桌面端专属管线:HTML → 渲染 → PDF/PPTX/放映页)
8
+
9
+ 原理:每页 = 一个 1280×720 的自包含 HTML;桌面端 `slides_render` 工具离屏逐页渲染——
10
+ 产出每页 PNG 缩略图、整份 PDF、整页贴图 PPTX 与键盘翻页的放映 HTML,并把**每页截图注入给你自检**。
11
+ 表现力上限=CSS(渐变/阴影/网格排版),远超 python-pptx 版式。
12
+
13
+ ## 流程
14
+
15
+ 1. **大纲先行**:逐页大纲(每页=标题+要点+版式选择),页数 8–15,重要汇报先让用户确认。
16
+ 2. **读模板**:`read_skill_file` 读 `scripts/template.html`——含四主题(navy/tech/mono/warm)CSS 变量
17
+ 与七种版式(cover/section/bullets/two-col/kpi/quote/end)的完整片段。
18
+ 3. **逐页产出**:写 `slides/01-cover.html`、`slides/02-agenda.html`…(两位数前缀定顺序)。
19
+ 每个文件 = 模板骨架 + 选定版式片段填入内容;**整页自包含**。
20
+ 4. **渲染**:调用 `slides_render`(参数 dir="slides"、name="<中文成品名>")。
21
+ 5. **自检回路(关键)**:对照注入的每页截图过验收清单——溢出/截断/挤压/对比度不足,
22
+ 改对应 html 后**重新渲染**,直到全部合格再交付。
23
+ 6. 交付物:`<name>.pdf`(首选交付)、`<name>.pptx`(整页贴图,**不可编辑文字**——如实告知用户,
24
+ 要可编辑版用 pptx-author 另出结构稿)、`<name>-放映.html`(内置浏览器/浏览器全屏演示)。
25
+
26
+ ## 硬约束(违反=渲染必翻车)
27
+
28
+ - 尺寸锁死:`.slide` 1280×720、`overflow:hidden`;内容装不下就**拆页**,禁止缩小字号硬塞。
29
+ - **禁一切外链**(CDN 字体/图标/脚本):离屏渲染不等外网,字体用系统栈
30
+ `-apple-system, "PingFang SC", "Microsoft YaHei", sans-serif`;图标用 Emoji/Unicode/内联 SVG。
31
+ - 图片用相对路径引用项目内文件(如 `../销售图.png`),必须是已存在的文件。
32
+ - 字号下限 18px(正文 22px+,标题 44px+);每页一个视觉焦点;要点 ≤5 条 × ≤20 字。
33
+ - 图表:先按 data-analysis 出 png 再引用,或直接内联 SVG 手绘简图。
34
+
35
+ ## 无 slides_render 工具时(CLI / IDE / 例程环境)
36
+
37
+ 工具仅桌面端注册。此时仍按上述规范产出 `slides/*.html` 并告知用户:
38
+ 「在 Work Twin 桌面端打开本目录可一键渲染导出 PDF/PPTX」;或改用 pptx-author 出直接可用的结构稿。
39
+
40
+ ## 验收自查(对照注入截图逐页过)
41
+
42
+ - [ ] 无溢出/截断(右缘底缘完整,无被吃掉的行)
43
+ - [ ] 中文全部正常渲染,无缺字方块
44
+ - [ ] 主题一致(同一套配色变量,无串色页)
45
+ - [ ] 每页焦点清晰,文字对比度充足(浅底深字/深底浅字)
46
+ - [ ] 已如实告知用户 PPTX 为贴图不可编辑
47
+
48
+ ## 附件
49
+
50
+ - `scripts/template.html` — 骨架 + 四主题变量 + 七版式片段(可直接浏览器打开预览)
@@ -0,0 +1,117 @@
1
+ <!DOCTYPE html>
2
+ <!-- slides-html 模板:每页幻灯片 = 本骨架 + 下方选一个版式片段放入 <body>。
3
+ 用法:拷本文件为 slides/NN-xxx.html,改 <html data-theme="...">,body 里只留一个 .slide。
4
+ 主题:navy(深蓝商务,默认) / tech(科技紫) / mono(极简灰) / warm(活力橙)。
5
+ 硬约束:1280×720、overflow:hidden、禁外链(字体系统栈/图标 Emoji/图用相对路径或内联 SVG)。 -->
6
+ <html lang="zh-CN" data-theme="navy">
7
+ <head>
8
+ <meta charset="utf-8">
9
+ <style>
10
+ :root { --bg:#ffffff; --text:#333333; --muted:#7a828e; }
11
+ [data-theme="navy"] { --primary:#1F4E79; --accent:#2E75B6; --soft:#DEEBF7; --grad:linear-gradient(135deg,#16385c,#2E75B6); }
12
+ [data-theme="tech"] { --primary:#5B2D90; --accent:#9A66CC; --soft:#EDE4F7; --grad:linear-gradient(135deg,#3d1e63,#9A66CC); }
13
+ [data-theme="mono"] { --primary:#333333; --accent:#7F7F7F; --soft:#F2F2F2; --grad:linear-gradient(135deg,#2b2b2b,#6e6e6e); }
14
+ [data-theme="warm"] { --primary:#C55A11; --accent:#ED7D31; --soft:#FBE5D6; --grad:linear-gradient(135deg,#8f3f08,#ED7D31); }
15
+
16
+ * { margin:0; padding:0; box-sizing:border-box; }
17
+ body { width:1280px; height:720px; overflow:hidden;
18
+ font-family:-apple-system,"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif;
19
+ background:var(--bg); color:var(--text); }
20
+ .slide { width:1280px; height:720px; overflow:hidden; position:relative; padding:56px 72px; }
21
+ .bar { position:absolute; top:0; left:0; right:0; height:10px; background:var(--accent); }
22
+ h1 { font-size:30px; color:var(--primary); margin-bottom:28px; }
23
+ .foot { position:absolute; bottom:22px; left:72px; right:72px; display:flex; justify-content:space-between;
24
+ font-size:14px; color:var(--muted); }
25
+ </style>
26
+ </head>
27
+ <body>
28
+
29
+ <!-- ═══ 版式 1/7:cover 封面(深色渐变整版) ═══ -->
30
+ <div class="slide" style="background:var(--grad); color:#fff; display:flex; flex-direction:column; justify-content:center;">
31
+ <div style="font-size:20px; opacity:.75; letter-spacing:6px; margin-bottom:18px;">2026 · 半年度</div>
32
+ <div style="font-size:58px; font-weight:700; line-height:1.25;">经营分析与下半年计划</div>
33
+ <div style="width:88px; height:5px; background:#fff; opacity:.85; margin:30px 0;"></div>
34
+ <div style="font-size:20px; opacity:.85;">数据一部 · 2026-07</div>
35
+ </div>
36
+
37
+ <!-- ═══ 版式 2/7:section 章节页 ═══
38
+ <div class="slide" style="display:flex; align-items:center;">
39
+ <div class="bar"></div>
40
+ <div>
41
+ <div style="font-size:88px; font-weight:700; color:var(--soft); position:absolute; top:120px;">01</div>
42
+ <div style="font-size:46px; font-weight:700; color:var(--primary); position:relative;">经营概览</div>
43
+ <div style="font-size:20px; color:var(--muted); margin-top:16px; position:relative;">整体达成 · 分区表现 · 关键变化</div>
44
+ </div>
45
+ </div>
46
+ ═══ -->
47
+
48
+ <!-- ═══ 版式 3/7:bullets 要点页 ═══
49
+ <div class="slide">
50
+ <div class="bar"></div>
51
+ <h1>核心结论</h1>
52
+ <ul style="list-style:none; font-size:24px; line-height:2.1;">
53
+ <li>▸ 营收 <b style="color:var(--primary)">3.6 亿</b>,同比 +18%</li>
54
+ <li>▸ 毛利率 32.5%,环比 +1.2pct</li>
55
+ <li>▸ 华东贡献过半,西南承压明显</li>
56
+ </ul>
57
+ <div class="foot"><span>Work Twin</span><span>3 / 12</span></div>
58
+ </div>
59
+ ═══ -->
60
+
61
+ <!-- ═══ 版式 4/7:two-col 图文页(图用相对路径引项目内已有文件) ═══
62
+ <div class="slide">
63
+ <div class="bar"></div>
64
+ <h1>分区域销售</h1>
65
+ <div style="display:flex; gap:40px; align-items:center; height:520px;">
66
+ <img src="../销售图.png" style="max-width:640px; max-height:500px; border-radius:10px; box-shadow:0 12px 36px rgba(0,0,0,.14);">
67
+ <ul style="list-style:none; font-size:22px; line-height:2; flex:1;">
68
+ <li>▸ 华东领先:1.2 亿(+21%)</li>
69
+ <li>▸ 华南稳健:0.95 亿(+9%)</li>
70
+ <li>▸ 西南下滑:0.64 亿(-6%)</li>
71
+ </ul>
72
+ </div>
73
+ <div class="foot"><span>Work Twin</span><span>5 / 12</span></div>
74
+ </div>
75
+ ═══ -->
76
+
77
+ <!-- ═══ 版式 5/7:kpi 大数字页 ═══
78
+ <div class="slide">
79
+ <div class="bar"></div>
80
+ <h1>核心指标</h1>
81
+ <div style="display:flex; gap:32px; margin-top:64px;">
82
+ <div style="flex:1; background:var(--soft); border-radius:16px; padding:44px 0; text-align:center;">
83
+ <div style="font-size:54px; font-weight:700; color:var(--primary);">3.6 亿</div>
84
+ <div style="font-size:18px; color:var(--muted); margin-top:10px;">营收</div>
85
+ </div>
86
+ <div style="flex:1; background:var(--soft); border-radius:16px; padding:44px 0; text-align:center;">
87
+ <div style="font-size:54px; font-weight:700; color:var(--primary);">+18%</div>
88
+ <div style="font-size:18px; color:var(--muted); margin-top:10px;">同比增速</div>
89
+ </div>
90
+ <div style="flex:1; background:var(--soft); border-radius:16px; padding:44px 0; text-align:center;">
91
+ <div style="font-size:54px; font-weight:700; color:var(--primary);">32.5%</div>
92
+ <div style="font-size:18px; color:var(--muted); margin-top:10px;">毛利率</div>
93
+ </div>
94
+ </div>
95
+ <div class="foot"><span>Work Twin</span><span>4 / 12</span></div>
96
+ </div>
97
+ ═══ -->
98
+
99
+ <!-- ═══ 版式 6/7:quote 引用/金句页 ═══
100
+ <div class="slide" style="display:flex; align-items:center; justify-content:center; background:var(--soft);">
101
+ <div style="max-width:900px; text-align:center;">
102
+ <div style="font-size:120px; color:var(--accent); line-height:.6; font-family:Georgia,serif;">“</div>
103
+ <div style="font-size:34px; font-weight:600; color:var(--primary); line-height:1.7;">增长的关键不是更多线索,而是把交付周期从 14 天压到 5 天。</div>
104
+ <div style="font-size:18px; color:var(--muted); margin-top:26px;">—— 华东大区复盘</div>
105
+ </div>
106
+ </div>
107
+ ═══ -->
108
+
109
+ <!-- ═══ 版式 7/7:end 结尾页 ═══
110
+ <div class="slide" style="background:var(--grad); color:#fff; display:flex; flex-direction:column; align-items:center; justify-content:center;">
111
+ <div style="font-size:52px; font-weight:700;">谢谢 · 欢迎讨论</div>
112
+ <div style="font-size:18px; opacity:.8; margin-top:22px;">附件:完整数据表与分析报告见交付物中心</div>
113
+ </div>
114
+ ═══ -->
115
+
116
+ </body>
117
+ </html>
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: statistical-testing
3
+ description: 专业统计分析与假设检验(t 检验、卡方、方差分析 ANOVA、相关、正态性、效应量与检验力)。当用户说"有没有显著差异/显著性/假设检验/两组比较/相关性/方差分析"时使用。Excel 分析链之统计环。
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # 专业统计与假设检验(Excel 分析链 · 统计环;全景见 excel-analysis-chain)
8
+
9
+ 统计检验的价值是**区分"真差异"与"随机波动"**——但它极易被误用。本技能内置误用防护。
10
+
11
+ ## 检验选择决策(先选对再算,`read_skill_file` 读 `scripts/stat_tests.py`)
12
+
13
+ | 问题 | 数据 | 方法 | 函数 |
14
+ |---|---|---|---|
15
+ | 两组均值有差异吗 | 连续,两组 | 独立样本 t(方差不等用 Welch) | `ttest()` |
16
+ | 前后配对有变化吗 | 连续,配对 | 配对 t | `ttest(paired=True)` |
17
+ | 三组以上均值 | 连续,多组 | 单因素 ANOVA + 事后 | `anova()` |
18
+ | 两分类变量相关吗 | 分类 × 分类 | 卡方独立性 | `chi2()` |
19
+ | 两连续变量相关吗 | 连续 × 连续 | Pearson/Spearman | `correlation()` |
20
+ | 数据近似正态吗 | 连续 | 正态性检验 + 目视 | `normality()` |
21
+
22
+ ## 铁律(每条都是血泪)
23
+
24
+ 1. **假设先行**:检验前写下原假设/备择假设/显著性水平 α——**事后找显著=P-hacking**;
25
+ 2. **报告效应量不只 p 值**:p<0.05 只说"有差异",Cohen's d/相关系数/η² 才说"差多大"——
26
+ **大样本下微小无意义差异也会显著**,业务显著性另判;
27
+ 3. **前提检查**:t/ANOVA 要近似正态与方差齐性(违反用非参 Mann-Whitney/Kruskal),
28
+ `stat_tests.py` 自动查前提并提示换方法;
29
+ 4. **多重比较校正**:同时做 N 个检验,α 要 Bonferroni 校正(或 FDR)——
30
+ 做 20 个检验必有 1 个"显著"是纯运气;
31
+ 5. **相关 ≠ 因果**:相关性结论一律附此提醒;要因果找 ab-testing(实验)或 regression-forecast
32
+ (控制混淆,仍谨慎);
33
+ 6. **样本量与检验力**:不显著可能是真无差异,也可能是样本不够(检验力低)——
34
+ 不显著时报告检验力,别把"没检出"当"不存在"。
35
+
36
+ ## 产出规范
37
+
38
+ 结论句式:"A 组均值 X,B 组 Y,Welch t 检验 t=…,p=…,Cohen's d=…(中等效应),
39
+ 95%CI[…]——差异统计显著且效应中等" + 前提检查说明 + 局限。
40
+ 配图(data-analysis:箱线看分布/误差棒看均值区间)。
41
+
42
+ ## 验收自查
43
+
44
+ - [ ] 假设与 α 检验前写定
45
+ - [ ] 报了效应量+CI,不只 p 值
46
+ - [ ] 前提检查过(正态/方差齐),违反已换方法
47
+ - [ ] 多重比较校正;相关附因果提醒;不显著报检验力
48
+
49
+ ## 附件
50
+
51
+ - `scripts/stat_tests.py` — ttest/anova/chi2/correlation/normality(自动前提检查+效应量+校正);可直接执行自测
@@ -0,0 +1,131 @@
1
+ # 假设检验件(经 run_python 执行):t 检验/ANOVA/卡方/相关/正态——优先 scipy,缺失则 numpy 近似兜底。
2
+ # 内置前提检查、效应量、Bonferroni 校正。安装 scipy 更精确:run_python 传 packages=['scipy']。
3
+ # 直接执行本文件 = 自测。
4
+ import math
5
+ import numpy as np
6
+ import pandas as pd
7
+
8
+ try:
9
+ from scipy import stats as _sp
10
+ HAS_SCIPY = True
11
+ except ImportError:
12
+ HAS_SCIPY = False
13
+
14
+
15
+ def _norm_sf(z):
16
+ return 0.5 * math.erfc(z / math.sqrt(2))
17
+
18
+
19
+ def ttest(a, b, paired=False, alpha=0.05):
20
+ """独立(Welch)或配对 t 检验 + Cohen's d + 95%CI。scipy 缺失用正态近似 p。"""
21
+ a, b = np.asarray(a, float), np.asarray(b, float)
22
+ if paired:
23
+ assert len(a) == len(b), '配对检验两组长度须相等'
24
+ diff = a - b
25
+ t = diff.mean() / (diff.std(ddof=1) / math.sqrt(len(diff)))
26
+ df = len(diff) - 1
27
+ d = diff.mean() / diff.std(ddof=1)
28
+ m1, m2 = a.mean(), b.mean()
29
+ else: # Welch
30
+ n1, n2 = len(a), len(b)
31
+ v1, v2 = a.var(ddof=1), b.var(ddof=1)
32
+ se = math.sqrt(v1 / n1 + v2 / n2)
33
+ t = (a.mean() - b.mean()) / se
34
+ df = (v1 / n1 + v2 / n2) ** 2 / ((v1 / n1) ** 2 / (n1 - 1) + (v2 / n2) ** 2 / (n2 - 1))
35
+ sp = math.sqrt(((n1 - 1) * v1 + (n2 - 1) * v2) / (n1 + n2 - 2))
36
+ d = (a.mean() - b.mean()) / sp
37
+ m1, m2 = a.mean(), b.mean()
38
+ p = 2 * _sp.t.sf(abs(t), df) if HAS_SCIPY else 2 * _norm_sf(abs(t))
39
+ eff = '小' if abs(d) < 0.5 else ('中' if abs(d) < 0.8 else '大')
40
+ print(f'[t检验{"·配对" if paired else "·Welch"}] 均值 {m1:.3f} vs {m2:.3f} · t={t:.3f} df={df:.1f} '
41
+ f'p={p:.4f} · Cohen d={d:.3f}({eff}效应) → {"显著" if p < alpha else "不显著"}(α={alpha})'
42
+ + ('' if HAS_SCIPY else ' [正态近似,装 scipy 更精确]'))
43
+ return {'t': round(t, 4), 'p': round(p, 4), 'cohen_d': round(d, 4), 'significant': p < alpha}
44
+
45
+
46
+ def anova(groups, alpha=0.05):
47
+ """单因素 ANOVA + η²。groups: 列表的列表。"""
48
+ groups = [np.asarray(g, float) for g in groups]
49
+ grand = np.concatenate(groups)
50
+ k, N = len(groups), len(grand)
51
+ gm = grand.mean()
52
+ ssb = sum(len(g) * (g.mean() - gm) ** 2 for g in groups)
53
+ ssw = sum(((g - g.mean()) ** 2).sum() for g in groups)
54
+ dfb, dfw = k - 1, N - k
55
+ F = (ssb / dfb) / (ssw / dfw)
56
+ p = _sp.f.sf(F, dfb, dfw) if HAS_SCIPY else float('nan')
57
+ eta2 = ssb / (ssb + ssw)
58
+ print(f'[ANOVA] F({dfb},{dfw})={F:.3f} p={"%.4f" % p if p == p else "装 scipy 得 p"} · η²={eta2:.3f} '
59
+ + (f'→ {"组间差异显著" if p < alpha else "不显著"}' if p == p else '(效应量 η² 可直接采信)'))
60
+ return {'F': round(F, 4), 'p': round(p, 4) if p == p else None, 'eta_squared': round(eta2, 4)}
61
+
62
+
63
+ def chi2(table, alpha=0.05):
64
+ """卡方独立性检验 + Cramér's V。table: 2D 列联表。"""
65
+ obs = np.asarray(table, float)
66
+ row, col = obs.sum(1, keepdims=True), obs.sum(0, keepdims=True)
67
+ exp = row @ col / obs.sum()
68
+ chi = ((obs - exp) ** 2 / exp).sum()
69
+ df = (obs.shape[0] - 1) * (obs.shape[1] - 1)
70
+ p = _sp.chi2.sf(chi, df) if HAS_SCIPY else float('nan')
71
+ v = math.sqrt(chi / (obs.sum() * (min(obs.shape) - 1)))
72
+ small = (exp < 5).mean()
73
+ print(f'[卡方] χ²={chi:.3f} df={df} p={"%.4f" % p if p == p else "装 scipy 得 p"} · Cramér V={v:.3f}'
74
+ + (f' ⚠ {small:.0%} 单元格期望频数<5,结论谨慎' if small > 0.2 else ''))
75
+ return {'chi2': round(chi, 4), 'df': df, 'p': round(p, 4) if p == p else None, 'cramers_v': round(v, 4)}
76
+
77
+
78
+ def correlation(x, y, method='pearson'):
79
+ """相关系数 + p(近似)。附因果提醒。"""
80
+ x, y = np.asarray(x, float), np.asarray(y, float)
81
+ if method == 'spearman':
82
+ x, y = pd.Series(x).rank().values, pd.Series(y).rank().values
83
+ r = np.corrcoef(x, y)[0, 1]
84
+ n = len(x)
85
+ t = r * math.sqrt((n - 2) / (1 - r ** 2)) if abs(r) < 1 else float('inf')
86
+ p = 2 * _sp.t.sf(abs(t), n - 2) if HAS_SCIPY else 2 * _norm_sf(abs(t))
87
+ print(f'[相关·{method}] r={r:.3f} p={p:.4f}(n={n}) ⚠ 相关≠因果:要因果证据用实验(ab-testing)或控制混淆的回归')
88
+ return {'r': round(r, 4), 'p': round(p, 4)}
89
+
90
+
91
+ def normality(x):
92
+ """正态性粗检:偏度/峰度 + (有 scipy 时)Shapiro。给"是否适用 t/ANOVA"提示。"""
93
+ x = np.asarray(x, float)
94
+ sk, ku = float(pd.Series(x).skew()), float(pd.Series(x).kurt())
95
+ ok = abs(sk) < 1 and abs(ku) < 2
96
+ extra = ''
97
+ if HAS_SCIPY and 3 <= len(x) <= 5000:
98
+ w, p = _sp.shapiro(x)
99
+ ok = p > 0.05
100
+ extra = f' · Shapiro W={w:.3f} p={p:.4f}'
101
+ print(f'[正态] 偏度={sk:.2f} 峰度={ku:.2f}{extra} → ' +
102
+ ('近似正态,t/ANOVA 可用' if ok else '偏离正态,改用非参检验(Mann-Whitney/Kruskal)'))
103
+ return {'skew': round(sk, 3), 'kurtosis': round(ku, 3), 'approx_normal': ok}
104
+
105
+
106
+ def bonferroni(p_values, alpha=0.05):
107
+ """多重比较校正:返回校正阈值与各检验是否通过。"""
108
+ m = len(p_values)
109
+ thr = alpha / m
110
+ res = [(round(p, 4), p < thr) for p in p_values]
111
+ print(f'[Bonferroni] {m} 个检验,校正阈值 α/{m}={thr:.4f}:通过 {sum(1 for _, s in res if s)} 个')
112
+ return {'threshold': thr, 'results': res}
113
+
114
+
115
+ if __name__ == '__main__':
116
+ rng = np.random.default_rng(2)
117
+ a = rng.normal(100, 15, 60)
118
+ b = rng.normal(108, 15, 60)
119
+ r = ttest(a, b)
120
+ assert 'cohen_d' in r and r['p'] < 0.5
121
+ an = anova([rng.normal(10, 2, 40), rng.normal(11, 2, 40), rng.normal(13, 2, 40)])
122
+ assert an['eta_squared'] > 0
123
+ c = chi2([[30, 10], [20, 40]])
124
+ assert c['cramers_v'] > 0 and c['df'] == 1
125
+ co = correlation(a, a * 2 + rng.normal(0, 5, 60))
126
+ assert co['r'] > 0.8
127
+ nm = normality(rng.normal(0, 1, 200))
128
+ assert 'approx_normal' in nm
129
+ bf = bonferroni([0.01, 0.03, 0.20])
130
+ assert bf['results'][0][1] and not bf['results'][2][1]
131
+ print('OK stat_tests.py' + ('' if HAS_SCIPY else ' [numpy 近似模式;装 scipy 更精确]'))