@huicai/cli 2026.814.0 → 2026.1021.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.
- package/LICENSE +391 -32
- package/README.md +139 -8
- package/bin/huicai.js +155 -74
- package/bin/update.js +97 -0
- package/package.json +27 -8
- package/skills/ab-testing/trigger-cases.json +30 -0
- package/skills/academic-writing/trigger-cases.json +30 -0
- package/skills/accounting-ops/trigger-cases.json +30 -0
- package/skills/ai-agent/trigger-cases.json +30 -0
- package/skills/ai-aiops/trigger-cases.json +30 -0
- package/skills/ai-coding/SKILL.md +2 -0
- package/skills/ai-coding/trigger-cases.json +30 -0
- package/skills/ai-compliance/trigger-cases.json +30 -0
- package/skills/ai-eval/trigger-cases.json +30 -0
- package/skills/ai-llm-app/trigger-cases.json +30 -0
- package/skills/ai-mlops/trigger-cases.json +30 -0
- package/skills/ai-multimodal/trigger-cases.json +30 -0
- package/skills/ai-prompt/trigger-cases.json +30 -0
- package/skills/ai-rag/trigger-cases.json +30 -0
- package/skills/anomaly-detection/trigger-cases.json +30 -0
- package/skills/api-design/trigger-cases.json +31 -0
- package/skills/api-integration/trigger-cases.json +31 -0
- package/skills/arch-design/trigger-cases.json +12 -0
- package/skills/arch-diagram/SKILL.md +118 -0
- package/skills/arch-diagram/trigger-cases.json +30 -0
- package/skills/arch-distributed/trigger-cases.json +30 -0
- package/skills/arch-multitenant/trigger-cases.json +30 -0
- package/skills/audio-brief/SKILL.md +65 -0
- package/skills/audio-brief/trigger-cases.json +30 -0
- package/skills/audit-assist/trigger-cases.json +30 -0
- package/skills/audit-chain/trigger-cases.json +31 -0
- package/skills/banking-credit/trigger-cases.json +30 -0
- package/skills/brand-design/trigger-cases.json +30 -0
- package/skills/business-plan/trigger-cases.json +30 -0
- package/skills/capital-ops/trigger-cases.json +30 -0
- package/skills/cicd-pipeline/trigger-cases.json +31 -0
- package/skills/code-archaeology/SKILL.md +55 -0
- package/skills/code-archaeology/trigger-cases.json +9 -0
- package/skills/code-quality/SKILL.md +138 -0
- package/skills/code-quality/references/languages.md +107 -0
- package/skills/code-quality/scripts/__pycache__/code_battery.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_check.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_check.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_csharp.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_csharp.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_fix.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_fix.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_java.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_java.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_jsts.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_jsts.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_lens.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_lens.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_python.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_python.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_testplan.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/code_battery.py +1072 -0
- package/skills/code-quality/scripts/code_check.py +1269 -0
- package/skills/code-quality/scripts/code_csharp.py +371 -0
- package/skills/code-quality/scripts/code_fix.py +201 -0
- package/skills/code-quality/scripts/code_java.py +695 -0
- package/skills/code-quality/scripts/code_jsts.py +313 -0
- package/skills/code-quality/scripts/code_lens.py +1079 -0
- package/skills/code-quality/scripts/code_python.py +536 -0
- package/skills/code-quality/scripts/code_testplan.py +239 -0
- package/skills/code-quality/trigger-cases.json +45 -0
- package/skills/code-review/SKILL.md +24 -0
- package/skills/code-review/trigger-cases.json +35 -0
- package/skills/commit-and-pr/trigger-cases.json +31 -0
- package/skills/content-creation/trigger-cases.json +30 -0
- package/skills/corporate-governance/trigger-cases.json +30 -0
- package/skills/crawl-chain/trigger-cases.json +31 -0
- package/skills/customer-service/trigger-cases.json +30 -0
- package/skills/data-analysis/trigger-cases.json +30 -0
- package/skills/data-chain/SKILL.md +1 -1
- package/skills/data-chain/trigger-cases.json +31 -0
- package/skills/data-governance/trigger-cases.json +30 -0
- package/skills/data-report-pro/trigger-cases.json +30 -0
- package/skills/data-streaming/trigger-cases.json +30 -0
- package/skills/data-wrangling/SKILL.md +1 -1
- package/skills/data-wrangling/trigger-cases.json +30 -0
- package/skills/db-es/trigger-cases.json +30 -0
- package/skills/db-migration/trigger-cases.json +30 -0
- package/skills/db-mysql/trigger-cases.json +30 -0
- package/skills/db-postgres/trigger-cases.json +30 -0
- package/skills/db-redis/trigger-cases.json +30 -0
- package/skills/debug-root-cause/trigger-cases.json +30 -0
- package/skills/dependency-audit/SKILL.md +56 -0
- package/skills/dependency-audit/trigger-cases.json +7 -0
- package/skills/dependency-upgrade/trigger-cases.json +31 -0
- package/skills/dev-cpp/trigger-cases.json +30 -0
- package/skills/dev-cross-platform/trigger-cases.json +30 -0
- package/skills/dev-csharp/SKILL.md +23 -0
- package/skills/dev-csharp/trigger-cases.json +30 -0
- package/skills/dev-frontend/SKILL.md +19 -0
- package/skills/dev-frontend/trigger-cases.json +30 -0
- package/skills/dev-go/trigger-cases.json +30 -0
- package/skills/dev-harmony/trigger-cases.json +30 -0
- package/skills/dev-java/SKILL.md +20 -0
- package/skills/dev-java/trigger-cases.json +30 -0
- package/skills/dev-mobile/trigger-cases.json +30 -0
- package/skills/dev-node/trigger-cases.json +30 -0
- package/skills/dev-php/trigger-cases.json +30 -0
- package/skills/dev-python/SKILL.md +21 -0
- package/skills/dev-python/trigger-cases.json +30 -0
- package/skills/dev-rust/trigger-cases.json +30 -0
- package/skills/dev-toolchain/trigger-cases.json +31 -0
- package/skills/doc-chain/trigger-cases.json +31 -0
- package/skills/doc-compare/trigger-cases.json +30 -0
- package/skills/docx-author/SKILL.md +127 -25
- package/skills/docx-author/scripts/__pycache__/docx_battery.cpython-312.pyc +0 -0
- package/skills/docx-author/scripts/__pycache__/docx_build.cpython-312.pyc +0 -0
- package/skills/docx-author/scripts/__pycache__/docx_check.cpython-312.pyc +0 -0
- package/skills/docx-author/scripts/__pycache__/docx_layout.cpython-312.pyc +0 -0
- package/skills/docx-author/scripts/__pycache__/zh_prose.cpython-312.pyc +0 -0
- package/skills/docx-author/scripts/docx_battery.py +586 -0
- package/skills/docx-author/scripts/docx_build.py +995 -0
- package/skills/docx-author/scripts/docx_check.py +1306 -0
- package/skills/docx-author/scripts/docx_doc.py +14 -154
- package/skills/docx-author/scripts/docx_layout.py +490 -0
- package/skills/docx-author/scripts/zh_prose.py +639 -0
- package/skills/docx-author/trigger-cases.json +58 -0
- package/skills/echo-brief/SKILL.md +84 -0
- package/skills/echo-brief/references/echo-format.md +68 -0
- package/skills/echo-brief/trigger-cases.json +40 -0
- package/skills/ecommerce-ops/trigger-cases.json +30 -0
- package/skills/education-training/trigger-cases.json +30 -0
- package/skills/ehs-safety/trigger-cases.json +30 -0
- package/skills/email-writing/trigger-cases.json +30 -0
- package/skills/eng-ai/trigger-cases.json +30 -0
- package/skills/eng-architecture/trigger-cases.json +31 -0
- package/skills/eng-automation/trigger-cases.json +31 -0
- package/skills/eng-collaboration/trigger-cases.json +30 -0
- package/skills/eng-complex-env/trigger-cases.json +30 -0
- package/skills/eng-data-platform/trigger-cases.json +31 -0
- package/skills/eng-database/trigger-cases.json +31 -0
- package/skills/eng-develop/SKILL.md +9 -1
- package/skills/eng-develop/references/dod-checklist.md +3 -0
- package/skills/eng-develop/references/engineering-workflow.md +37 -0
- package/skills/eng-develop/trigger-cases.json +30 -0
- package/skills/eng-docs/SKILL.md +24 -0
- package/skills/eng-docs/trigger-cases.json +30 -0
- package/skills/eng-efficiency/trigger-cases.json +30 -0
- package/skills/eng-infra/trigger-cases.json +30 -0
- package/skills/eng-integration/trigger-cases.json +31 -0
- package/skills/eng-legacy/trigger-cases.json +31 -0
- package/skills/eng-observability/trigger-cases.json +31 -0
- package/skills/eng-ops/trigger-cases.json +31 -0
- package/skills/eng-performance/trigger-cases.json +31 -0
- package/skills/eng-planning/trigger-cases.json +31 -0
- package/skills/eng-quality/SKILL.md +8 -0
- package/skills/eng-quality/trigger-cases.json +31 -0
- package/skills/eng-release/trigger-cases.json +31 -0
- package/skills/eng-reliability/trigger-cases.json +31 -0
- package/skills/eng-requirements/trigger-cases.json +12 -0
- package/skills/eng-research/trigger-cases.json +30 -0
- package/skills/eng-security/trigger-cases.json +31 -0
- package/skills/eng-ux/trigger-cases.json +30 -0
- package/skills/engineering-chain/trigger-cases.json +30 -0
- package/skills/env-offline/trigger-cases.json +31 -0
- package/skills/env-private-deploy/trigger-cases.json +31 -0
- package/skills/env-xinchuang/trigger-cases.json +31 -0
- package/skills/equipment-tpm/trigger-cases.json +30 -0
- package/skills/esg-report/trigger-cases.json +30 -0
- package/skills/event-management/trigger-cases.json +30 -0
- package/skills/excel-analysis-chain/SKILL.md +17 -4
- package/skills/excel-analysis-chain/trigger-cases.json +31 -0
- package/skills/explain-codebase/trigger-cases.json +11 -0
- package/skills/file-ingest/trigger-cases.json +30 -0
- package/skills/finance-analysis/trigger-cases.json +31 -0
- package/skills/finance-chain/trigger-cases.json +31 -0
- package/skills/financial-modeling/trigger-cases.json +31 -0
- package/skills/find-simplifications/SKILL.md +43 -0
- package/skills/find-simplifications/trigger-cases.json +23 -0
- package/skills/foreign-trade/trigger-cases.json +30 -0
- package/skills/funnel-cohort/trigger-cases.json +30 -0
- package/skills/gov-document/trigger-cases.json +30 -0
- package/skills/gui-change-evidence/SKILL.md +47 -0
- package/skills/gui-change-evidence/trigger-cases.json +23 -0
- package/skills/hr-chain/trigger-cases.json +31 -0
- package/skills/hr-operations/trigger-cases.json +30 -0
- package/skills/info-disclosure/trigger-cases.json +31 -0
- package/skills/infra-gateway/trigger-cases.json +31 -0
- package/skills/infra-k8s/trigger-cases.json +31 -0
- package/skills/infra-mq/trigger-cases.json +30 -0
- package/skills/insurance-advisory/trigger-cases.json +30 -0
- package/skills/internal-audit/trigger-cases.json +30 -0
- package/skills/ip-management/trigger-cases.json +31 -0
- package/skills/ipo-listing/trigger-cases.json +31 -0
- package/skills/it-audit/trigger-cases.json +31 -0
- package/skills/itsm-ops/trigger-cases.json +31 -0
- package/skills/knowledge-sop/trigger-cases.json +31 -0
- package/skills/legal-chain/trigger-cases.json +31 -0
- package/skills/legal-contract/trigger-cases.json +30 -0
- package/skills/litigation-support/trigger-cases.json +31 -0
- package/skills/logistics-warehouse/trigger-cases.json +30 -0
- package/skills/long-doc-analysis/trigger-cases.json +31 -0
- package/skills/management-accounting/trigger-cases.json +30 -0
- package/skills/manufacturing-chain/trigger-cases.json +31 -0
- package/skills/manufacturing-quality/trigger-cases.json +30 -0
- package/skills/marketing-analytics/trigger-cases.json +31 -0
- package/skills/marketing-chain/trigger-cases.json +31 -0
- package/skills/meeting-minutes/trigger-cases.json +30 -0
- package/skills/metrics-system/trigger-cases.json +31 -0
- package/skills/negotiation-prep/trigger-cases.json +30 -0
- package/skills/obs-prometheus/trigger-cases.json +31 -0
- package/skills/office-automation/trigger-cases.json +31 -0
- package/skills/okr-review/trigger-cases.json +30 -0
- package/skills/ops-fleet/trigger-cases.json +31 -0
- package/skills/ops-linux/trigger-cases.json +31 -0
- package/skills/optimization-solver/trigger-cases.json +30 -0
- package/skills/patent-disclosure/SKILL.md +105 -0
- package/skills/patent-disclosure/references/figures.md +110 -0
- package/skills/patent-disclosure/references/outline.md +162 -0
- package/skills/patent-disclosure/scripts/patent_docx.py +230 -0
- package/skills/patent-disclosure/trigger-cases.json +31 -0
- package/skills/patent-drafting/SKILL.md +108 -0
- package/skills/patent-drafting/trigger-cases.json +31 -0
- package/skills/patent-portfolio/SKILL.md +81 -0
- package/skills/patent-portfolio/trigger-cases.json +31 -0
- package/skills/pdf-toolkit/trigger-cases.json +31 -0
- package/skills/perf-optimize/trigger-cases.json +31 -0
- package/skills/pivot-crosstab/trigger-cases.json +30 -0
- package/skills/policy-analysis/trigger-cases.json +31 -0
- package/skills/portfolio-analysis/trigger-cases.json +31 -0
- package/skills/ppt-chain/SKILL.md +14 -6
- package/skills/ppt-chain/trigger-cases.json +31 -0
- package/skills/pptx-author/SKILL.md +86 -33
- package/skills/pptx-author/scripts/__pycache__/pptx_check.cpython-312.pyc +0 -0
- package/skills/pptx-author/scripts/__pycache__/pptx_deck.cpython-312.pyc +0 -0
- package/skills/pptx-author/scripts/__pycache__/pptx_layout.cpython-312.pyc +0 -0
- package/skills/pptx-author/scripts/pptx_battery.py +178 -0
- package/skills/pptx-author/scripts/pptx_build.py +119 -0
- package/skills/pptx-author/scripts/pptx_check.py +1182 -0
- package/skills/pptx-author/scripts/pptx_deck.py +736 -145
- package/skills/pptx-author/scripts/pptx_layout.py +384 -0
- package/skills/pptx-author/trigger-cases.json +15 -0
- package/skills/pr-comms/trigger-cases.json +30 -0
- package/skills/procurement-supply/trigger-cases.json +31 -0
- package/skills/product-design/trigger-cases.json +31 -0
- package/skills/production-planning/trigger-cases.json +31 -0
- package/skills/project-management/trigger-cases.json +31 -0
- package/skills/project-proposal/trigger-cases.json +31 -0
- package/skills/prose-standard/SKILL.md +53 -0
- package/skills/prose-standard/trigger-cases.json +23 -0
- package/skills/qa-api-automation/trigger-cases.json +31 -0
- package/skills/qa-mobile-automation/trigger-cases.json +31 -0
- package/skills/qa-ui-automation/trigger-cases.json +31 -0
- package/skills/quant-analysis/trigger-cases.json +31 -0
- package/skills/rag-triage/SKILL.md +64 -0
- package/skills/rag-triage/evals.json +57 -0
- package/skills/rag-triage/references/triage-playbook.md +75 -0
- package/skills/rag-triage/trigger-cases.json +31 -0
- package/skills/real-estate-property/trigger-cases.json +30 -0
- package/skills/refactor-safely/SKILL.md +1 -1
- package/skills/refactor-safely/trigger-cases.json +30 -0
- package/skills/regression-forecast/trigger-cases.json +31 -0
- package/skills/release-checklist/trigger-cases.json +31 -0
- package/skills/report-craft/SKILL.md +76 -0
- package/skills/report-craft/references/feasibility.md +118 -0
- package/skills/report-craft/references/review-checklist.md +51 -0
- package/skills/report-craft/references/visuals.md +114 -0
- package/skills/report-craft/references/writing.md +80 -0
- package/skills/report-craft/scripts/__pycache__/chart_render.cpython-312.pyc +0 -0
- package/skills/report-craft/scripts/__pycache__/fin_model.cpython-312.pyc +0 -0
- package/skills/report-craft/scripts/__pycache__/project_facts.cpython-312.pyc +0 -0
- package/skills/report-craft/scripts/chart_render.py +1222 -0
- package/skills/report-craft/scripts/fin_model.py +602 -0
- package/skills/report-craft/scripts/project_facts.py +580 -0
- package/skills/report-craft/scripts/report_battery.py +349 -0
- package/skills/report-craft/trigger-cases.json +15 -0
- package/skills/retail-store-ops/trigger-cases.json +30 -0
- package/skills/risk-compliance/trigger-cases.json +31 -0
- package/skills/scope-creep/SKILL.md +45 -0
- package/skills/scope-creep/trigger-cases.json +7 -0
- package/skills/sec-auth/trigger-cases.json +31 -0
- package/skills/sec-compliance/trigger-cases.json +31 -0
- package/skills/securities-chain/trigger-cases.json +31 -0
- package/skills/securities-research/trigger-cases.json +31 -0
- package/skills/security-audit/trigger-cases.json +31 -0
- package/skills/slides-html/SKILL.md +25 -10
- package/skills/slides-html/trigger-cases.json +11 -0
- package/skills/sql-analysis/SKILL.md +110 -0
- package/skills/sql-analysis/trigger-cases.json +34 -0
- package/skills/sql-tuning/trigger-cases.json +31 -0
- package/skills/statistical-testing/trigger-cases.json +31 -0
- package/skills/strategy-planning/trigger-cases.json +30 -0
- package/skills/supply-chain/trigger-cases.json +31 -0
- package/skills/tax-compliance/trigger-cases.json +30 -0
- package/skills/tech-doc/SKILL.md +262 -0
- package/skills/tech-doc/scripts/__pycache__/archive_battery.cpython-312.pyc +0 -0
- package/skills/tech-doc/scripts/__pycache__/archive_build.cpython-312.pyc +0 -0
- package/skills/tech-doc/scripts/__pycache__/archive_check.cpython-312.pyc +0 -0
- package/skills/tech-doc/scripts/__pycache__/archive_spec.cpython-312.pyc +0 -0
- package/skills/tech-doc/scripts/__pycache__/doc_templates.cpython-312.pyc +0 -0
- package/skills/tech-doc/scripts/archive_battery.py +860 -0
- package/skills/tech-doc/scripts/archive_build.py +599 -0
- package/skills/tech-doc/scripts/archive_check.py +1307 -0
- package/skills/tech-doc/scripts/archive_spec.py +499 -0
- package/skills/tech-doc/scripts/doc_templates.py +624 -0
- package/skills/tech-doc/trigger-cases.json +57 -0
- package/skills/tech-research/trigger-cases.json +31 -0
- package/skills/tender-bidding/trigger-cases.json +31 -0
- package/skills/translation-pro/trigger-cases.json +30 -0
- package/skills/treasury-mgmt/trigger-cases.json +31 -0
- package/skills/trim-cot-leakage/SKILL.md +58 -0
- package/skills/trim-cot-leakage/trigger-cases.json +23 -0
- package/skills/web-craft/SKILL.md +103 -0
- package/skills/web-craft/references/craft-checklist.md +75 -0
- package/skills/web-craft/references/design-direction.md +122 -0
- package/skills/web-craft/references/h5-mobile.md +100 -0
- package/skills/web-craft/references/motion.md +136 -0
- package/skills/web-craft/references/recipes.md +74 -0
- package/skills/web-craft/templates/wedding-invitation.html +1180 -0
- package/skills/web-craft/trigger-cases.json +14 -0
- package/skills/web-scraping/trigger-cases.json +34 -0
- package/skills/web-search/SKILL.md +11 -10
- package/skills/web-search/trigger-cases.json +31 -0
- package/skills/weekly-report/SKILL.md +134 -0
- package/skills/weekly-report/trigger-cases.json +11 -0
- package/skills/write-tests/trigger-cases.json +31 -0
- package/skills/xlsx-analysis/SKILL.md +143 -77
- package/skills/xlsx-analysis/scripts/__pycache__/data_profile.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/__pycache__/xlsx_build.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/__pycache__/xlsx_check.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/__pycache__/xlsx_layout.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/__pycache__/xlsx_toolkit.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/data_profile.py +391 -0
- package/skills/xlsx-analysis/scripts/xlsx_battery.py +389 -0
- package/skills/xlsx-analysis/scripts/xlsx_build.py +522 -0
- package/skills/xlsx-analysis/scripts/xlsx_check.py +924 -0
- package/skills/xlsx-analysis/scripts/xlsx_layout.py +235 -0
- package/skills/xlsx-analysis/scripts/xlsx_style.py +28 -66
- package/skills/xlsx-analysis/scripts/xlsx_toolkit.py +61 -5
- package/skills/xlsx-analysis/trigger-cases.json +59 -0
- package/squads/hc-defense.md +47 -0
- package/squads/hc-rdarchive.md +110 -0
- package/squads/hc-redteam.md +50 -0
- package/squads/hc-weekly.md +125 -0
- package/src/account.js +1 -1
- package/src/acp.js +1 -0
- package/src/advisor.js +1 -1
- package/src/agent.js +1 -1
- package/src/api.js +1 -1
- package/src/archaeology.js +1 -0
- package/src/ask-ui.js +1 -0
- package/src/assets-import.js +1 -1
- package/src/autofix.js +1 -1
- package/src/automation-tools.js +1 -1
- package/src/automation.js +1 -1
- package/src/autorun.js +1 -1
- package/src/banner.js +1 -1
- package/src/capability-probe.js +1 -0
- package/src/checkpoints.js +1 -1
- package/src/code-tools.js +1 -0
- package/src/codeindex.js +1 -1
- package/src/codemode.js +1 -0
- package/src/command-bridge.js +1 -0
- package/src/command-ui.js +1 -0
- package/src/commands.js +1 -1
- package/src/compaction.js +1 -1
- package/src/computer.js +1 -1
- package/src/config.js +1 -1
- package/src/consult.js +1 -1
- package/src/context-report.js +1 -1
- package/src/context-window.js +1 -0
- package/src/context.js +1 -1
- package/src/crew.js +1 -0
- package/src/crush.js +1 -0
- package/src/daemon.js +1 -1
- package/src/decisions.js +1 -1
- package/src/depaudit.js +1 -0
- package/src/device.js +1 -1
- package/src/diagram-draw.js +1 -0
- package/src/diagram-layouts.js +1 -0
- package/src/diagram-raster.js +1 -0
- package/src/diagram.js +1 -0
- package/src/dictation.js +1 -0
- package/src/diffview.js +1 -1
- package/src/doctor.js +1 -1
- package/src/docx-tools.js +1 -0
- package/src/engineering.js +1 -0
- package/src/errkind.js +1 -1
- package/src/evidence.js +1 -0
- package/src/executors.js +1 -1
- package/src/expert-catalog.js +1 -1
- package/src/experts-store.js +1 -1
- package/src/experts.js +1 -1
- package/src/external-agents.js +1 -0
- package/src/forks.js +1 -1
- package/src/fs-observe.js +1 -0
- package/src/gitflow.js +1 -1
- package/src/goalround.js +1 -0
- package/src/hooks.js +1 -1
- package/src/ide.js +1 -1
- package/src/input.js +1 -1
- package/src/insights.js +1 -1
- package/src/jobs.js +1 -0
- package/src/kbsync.js +1 -1
- package/src/lsp.js +1 -0
- package/src/mcp-apps.js +1 -0
- package/src/mcp.js +1 -1
- package/src/memory.js +1 -1
- package/src/notify.js +1 -1
- package/src/permissions.js +1 -1
- package/src/plan-limits.js +1 -0
- package/src/policy.js +1 -0
- package/src/pptx-tools.js +1 -0
- package/src/presence.js +1 -1
- package/src/privatedir.js +1 -0
- package/src/pyruntime.js +1 -1
- package/src/radar.js +1 -0
- package/src/render.js +1 -1
- package/src/repl.js +1 -1
- package/src/report-tools.js +1 -0
- package/src/routing.js +1 -0
- package/src/sandbox-probe.js +1 -0
- package/src/sandbox-win-launcher.mjs +156 -0
- package/src/sandbox.js +1 -0
- package/src/scan.js +1 -1
- package/src/schedule.js +1 -1
- package/src/scopecreep.js +1 -0
- package/src/sdk.js +1 -0
- package/src/selection.js +1 -0
- package/src/session-events.js +1 -0
- package/src/session.js +1 -1
- package/src/sessionindex.js +1 -0
- package/src/sessionlog.js +1 -0
- package/src/skill-catalog.js +1 -0
- package/src/skill-lint.js +1 -0
- package/src/skill-optimize.js +1 -0
- package/src/skill-scan.js +1 -0
- package/src/skills.js +1 -1
- package/src/spill.js +1 -0
- package/src/squad.js +1 -1
- package/src/subagent.js +1 -1
- package/src/surface-state.js +1 -0
- package/src/tapd.js +1 -0
- package/src/terminal-select.js +1 -0
- package/src/terminal.js +1 -0
- package/src/test-runner.js +1 -0
- package/src/todo.js +1 -1
- package/src/toolpipe.js +1 -0
- package/src/tools.js +1 -1
- package/src/toon.js +1 -0
- package/src/transcript.js +1 -1
- package/src/tui/app.js +1 -1
- package/src/tui/command-menu.js +1 -0
- package/src/tui/progress.js +1 -0
- package/src/tui/scroll.js +1 -0
- package/src/tui/welcome.js +1 -0
- package/src/tui/workbench.js +1 -0
- package/src/ui-spec.js +1 -0
- package/src/uitree.js +1 -0
- package/src/uninstall.js +1 -1
- package/src/vision.js +1 -1
- package/src/visual.js +1 -1
- package/src/voice-form.js +1 -0
- package/src/voice.js +1 -0
- package/src/watch.js +1 -1
- package/src/web-audit.js +1 -0
- package/src/web-cdp.js +1 -0
- package/src/web-inspect.js +1 -0
- package/src/websearch.js +1 -0
- package/src/weekly.js +1 -0
- package/src/workflow.js +1 -0
- package/src/worklog.js +1 -0
- package/src/xlsx-tools.js +1 -0
- package/ui/command-picker.js +79 -0
- package/skills/ab-testing/scripts/__pycache__/ab_test.cpython-312.pyc +0 -0
- package/skills/accounting-ops/scripts/__pycache__/acct_tools.cpython-312.pyc +0 -0
- package/skills/anomaly-detection/scripts/__pycache__/anomaly.cpython-312.pyc +0 -0
- package/skills/audit-assist/scripts/__pycache__/audit_sampling.cpython-312.pyc +0 -0
- package/skills/banking-credit/scripts/__pycache__/credit_metrics.cpython-312.pyc +0 -0
- package/skills/data-report-pro/scripts/__pycache__/bigdata.cpython-312.pyc +0 -0
- package/skills/data-wrangling/scripts/__pycache__/join_tools.cpython-312.pyc +0 -0
- package/skills/ecommerce-ops/scripts/__pycache__/gmv_decompose.cpython-312.pyc +0 -0
- package/skills/funnel-cohort/scripts/__pycache__/funnel.cpython-312.pyc +0 -0
- package/skills/management-accounting/scripts/__pycache__/costing.cpython-312.pyc +0 -0
- package/skills/manufacturing-quality/scripts/__pycache__/spc.cpython-312.pyc +0 -0
- package/skills/marketing-analytics/scripts/__pycache__/rfm.cpython-312.pyc +0 -0
- package/skills/optimization-solver/scripts/__pycache__/solver.cpython-312.pyc +0 -0
- package/skills/pivot-crosstab/scripts/__pycache__/pivot_tools.cpython-312.pyc +0 -0
- package/skills/portfolio-analysis/scripts/__pycache__/portfolio.cpython-312.pyc +0 -0
- package/skills/procurement-supply/scripts/__pycache__/supply.cpython-312.pyc +0 -0
- package/skills/production-planning/scripts/__pycache__/mrp_capacity.cpython-312.pyc +0 -0
- package/skills/project-management/scripts/__pycache__/cpm.cpython-312.pyc +0 -0
- package/skills/quant-analysis/scripts/__pycache__/quant.cpython-312.pyc +0 -0
- package/skills/real-estate-property/scripts/__pycache__/property_calc.cpython-312.pyc +0 -0
- package/skills/regression-forecast/scripts/__pycache__/regress.cpython-312.pyc +0 -0
- package/skills/securities-research/scripts/__pycache__/valuation.cpython-312.pyc +0 -0
- package/skills/statistical-testing/scripts/__pycache__/stat_tests.cpython-312.pyc +0 -0
- package/skills/treasury-mgmt/scripts/__pycache__/cashflow_forecast.cpython-312.pyc +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "arch-diagram",
|
|
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": "做一份 PPT 汇报材料",
|
|
22
|
+
"shouldTrigger": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "neg-2",
|
|
26
|
+
"prompt": "写一段前端组件的样式",
|
|
27
|
+
"shouldTrigger": false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "arch-distributed",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "跨服务事务怎么设计,要不要上 TCC",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "分布式 ID 怎么生成,时钟回拨怎么办",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "要不要上分布式锁,数据不一致怎么排查",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "做一次单机 JVM 调优",
|
|
22
|
+
"shouldTrigger": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "neg-2",
|
|
26
|
+
"prompt": "设计一张宽表的分区策略",
|
|
27
|
+
"shouldTrigger": false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "arch-multitenant",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "SaaS 多租户怎么做数据隔离,共表还是分库",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "大客户要独立部署,租户定制边界怎么定",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "noisy neighbor 怎么做配额治理",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "设计一个用户登录的鉴权流程",
|
|
22
|
+
"shouldTrigger": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "neg-2",
|
|
26
|
+
"prompt": "做一次缓存穿透的防护",
|
|
27
|
+
"shouldTrigger": false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: audio-brief
|
|
3
|
+
description: 把文稿改写成口播稿并合成音频简报(日报/周报/监视简报转成能在路上听的音频)。当用户说"念给我听/做成音频/语音播报/路上听/生成播客/口播稿",或要求定时任务的产出附一份音频时使用。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 音频简报:把要看的东西变成能听的东西
|
|
8
|
+
|
|
9
|
+
自动化任务每天产出日报、周报、监视简报,而这些东西的阅读场景恰恰是**上班路上、会议间隙**——
|
|
10
|
+
两个不方便看屏幕的场景。这个技能把已有的文字产出加一路音频输出。
|
|
11
|
+
|
|
12
|
+
**它是文字简报的附加物,不是替代物。**音频不可检索、不可引用、不能跳读,
|
|
13
|
+
文字版必须照旧产出。
|
|
14
|
+
|
|
15
|
+
## 两步走,分工不能混
|
|
16
|
+
|
|
17
|
+
| 步骤 | 谁做 | 为什么 |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| ① 把文稿改写成**口播稿** | **你(模型)** | 需要判断哪些能省、数字怎么读、段落怎么过渡 |
|
|
20
|
+
| ② 切分 → 逐段合成 → 拼接 | **内核工具** | 纯确定性工作,交给模型编排只会每次做法都不一样 |
|
|
21
|
+
|
|
22
|
+
不要自己写循环去调 TTS,也不要让用户手动拼音频。
|
|
23
|
+
|
|
24
|
+
## 第一步:改写口播稿
|
|
25
|
+
|
|
26
|
+
**直接把 Markdown 丢进 TTS 是不行的**——听众会听到「井号井号 三 本周概况」「星号星号 重点 星号星号」。
|
|
27
|
+
清理标记内核会做,但**语体**要你改。六条规则:
|
|
28
|
+
|
|
29
|
+
1. **短句**。书面语一句能套三个从句,听觉一次只能装一个意思。见到长句就断开。
|
|
30
|
+
2. **数字读法**。`23.5%` 写成「百分之二十三点五」;`2026-08-20` 写成「八月二十号」;
|
|
31
|
+
`¥1,234,567` 写成「一百二十三万四千多」——**听众记不住精确到个位的大数**,播报要给量级。
|
|
32
|
+
3. **去掉纯视觉元素**。表格改叙述(「三个部门里销售部涨得最多」),图表引用改结论,
|
|
33
|
+
链接直接删(念一串 URL 是灾难)。
|
|
34
|
+
4. **补过渡**。文字靠标题分节,语音没有标题。段落之间要有「先说第一件事」「接下来是本周的异常」
|
|
35
|
+
这类路标,否则听众三十秒后就不知道听到哪了。
|
|
36
|
+
5. **开头一句话说清这是什么**。「这是八月二十号的经营日报,一共三件事。」
|
|
37
|
+
听众按下播放时没有屏幕给他上下文。
|
|
38
|
+
6. **结尾给行动**。「需要你今天确认的是第二件事。」听完不知道要干嘛的播报等于没听。
|
|
39
|
+
|
|
40
|
+
**长度纪律**:口播稿控制在原文的三到五成。一份两千字的日报,口播稿六百到一千字(约三到五分钟)。
|
|
41
|
+
超过五分钟的播报没人听得完——宁可只播「今天最要紧的三件事」,也不要把全文念一遍。
|
|
42
|
+
|
|
43
|
+
## 第二步:合成
|
|
44
|
+
|
|
45
|
+
改写完的口播稿交给内核工具合成。工具会:按句切分(默认每段 400 字)→ 逐段调 TTS →
|
|
46
|
+
按序拼接成一个音频文件。三条内建纪律:
|
|
47
|
+
|
|
48
|
+
- **超上限直接拒绝**,不静默截断(默认 120 段,约四万八千字)。
|
|
49
|
+
用户以为整份都念了、实际只念了三分之一,比明确报错糟得多——他不会去核对音频长度。
|
|
50
|
+
- **任一段失败即整体失败**,不返回半截音频。一段没合成上的播报听起来只是「跳了一句」,
|
|
51
|
+
听的人根本不知道自己漏了什么。
|
|
52
|
+
- **不支持 wav / pcm**:每段自带文件头,裸拼只有开头能播,故直接拒绝而不是给一个坏文件。
|
|
53
|
+
|
|
54
|
+
## 什么时候不要用
|
|
55
|
+
|
|
56
|
+
- **需要引用、需要检索、需要跳着看的内容**——那是文字的活。
|
|
57
|
+
- **一次性的短回答**(几十个字):交互式朗读就够了,不必走这条链路。
|
|
58
|
+
- **默认给所有定时任务加音频**:一份日报要几十次 TTS 调用,按次计费。
|
|
59
|
+
应当由用户对**特定任务**显式开启。
|
|
60
|
+
|
|
61
|
+
## 与其它技能的接力
|
|
62
|
+
|
|
63
|
+
- 上游:`office-automation`(定时产出日报/周报)、`meeting-minutes`(纪要)、
|
|
64
|
+
`data-report-pro`(数据简报)——它们出文字,本技能出音频。
|
|
65
|
+
- 投递:音频作为交付物落盘;要发给别人走通知中心的邮件渠道(附链接,不要附几 MB 的音频体)。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "audio-brief",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "把这份日报念给我听,路上听",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "做成音频简报,生成口播稿",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "定时任务的产出附一份语音播报",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "把这段文字翻译成英文",
|
|
22
|
+
"shouldTrigger": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "neg-2",
|
|
26
|
+
"prompt": "写一份会议纪要",
|
|
27
|
+
"shouldTrigger": false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "audit-assist",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "帮我做审计抽凭和穿行测试",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "年审底稿和函证怎么管理",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "内控测试的实质性程序怎么设计",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "做一次税务汇算清缴",
|
|
22
|
+
"shouldTrigger": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "neg-2",
|
|
26
|
+
"prompt": "写一份投资尽调报告",
|
|
27
|
+
"shouldTrigger": false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "audit-chain",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "年审从头配合到出报告,整条链怎么走",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "外部检查要应对,整条审计链怎么排",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "这条舞弊线索要查到底,流程怎么排",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "帮我做审计抽凭和穿行测试",
|
|
22
|
+
"shouldTrigger": false,
|
|
23
|
+
"lexical": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "neg-2",
|
|
27
|
+
"prompt": "写一份税务申报说明",
|
|
28
|
+
"shouldTrigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "banking-credit",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "写一份授信调查报告",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "这家借款企业的偿债能力和现金流覆盖怎么测算",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "贷后检查要看哪些,担保怎么分析",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "做一份上市辅导材料",
|
|
22
|
+
"shouldTrigger": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "neg-2",
|
|
26
|
+
"prompt": "设计一个风控规则引擎",
|
|
27
|
+
"shouldTrigger": false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "brand-design",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "帮我写一份设计需求 Brief",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "品牌起名怎么评估,VI 规范怎么定",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "品牌设计稿评审要看哪些点",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "画一张系统架构图",
|
|
22
|
+
"shouldTrigger": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "neg-2",
|
|
26
|
+
"prompt": "写一份新媒体内容日历",
|
|
27
|
+
"shouldTrigger": false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "business-plan",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "帮我写一份商业计划书",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "路演给投资人讲的故事怎么组织",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "市场规模怎么测算,商业模式画布怎么填",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "写一份项目立项申请",
|
|
22
|
+
"shouldTrigger": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "neg-2",
|
|
26
|
+
"prompt": "做一次财务报表分析",
|
|
27
|
+
"shouldTrigger": false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "capital-ops",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "做一次投资测算和融资尽调准备",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "增资减资流程,ESOP 股权激励怎么落地",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "公司要注销清算,流程是什么",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "写一份授信调查报告",
|
|
22
|
+
"shouldTrigger": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "neg-2",
|
|
26
|
+
"prompt": "做一次月度结账",
|
|
27
|
+
"shouldTrigger": false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "cicd-pipeline",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "CI 老红,构建慢,流水线缓存怎么优化",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "流水线怎么 as code,密钥怎么不裸奔",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "runner 排队严重,矩阵并行和测试分片怎么配",
|
|
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,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-archaeology
|
|
3
|
+
description: 代码考古——翻 git 历史重建「这段代码当初为什么被加进来」:引入提交、历次改动性质、常一起改的文件、当前归属、以及提交信息里的意图线索(工单、事故、性能、安全、兼容)。当用户问"这为什么在这儿/当初为什么这么写/这段历史遗留还需要吗/能不能删掉/这个兼容分支的来历/谁最清楚这块"时使用。注意:问「这段代码在做什么」是讲解现状,不归本技能。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 代码考古
|
|
8
|
+
|
|
9
|
+
看到一段看不懂的判断、一个没人解释过的魔数、一段标着「临时」却活了三年的兼容代码——
|
|
10
|
+
最常见的两种处置都是错的:照着现状硬猜一个理由,或者干脆删掉试试。
|
|
11
|
+
|
|
12
|
+
答案通常一直躺在 git 历史里。这个技能负责把史料翻出来。
|
|
13
|
+
|
|
14
|
+
## 何时使用
|
|
15
|
+
|
|
16
|
+
- 看到一段看不懂的代码、兼容分支、魔数
|
|
17
|
+
- 要决定「这段历史遗留还能不能删」
|
|
18
|
+
- 接手陌生模块,想知道该问谁
|
|
19
|
+
- 用户问「这为什么在这儿」「这还需要吗」
|
|
20
|
+
|
|
21
|
+
## 怎么用
|
|
22
|
+
|
|
23
|
+
1. 调 `code_archaeology`,给文件路径;只关心某一段就带上 `from`/`to` 行号。
|
|
24
|
+
2. **先读史料,再下结论**。看四样东西:
|
|
25
|
+
- **引入提交**:当初是为了什么加的
|
|
26
|
+
- **改动性质分布**:全是 fix 说明这块一直在出问题;全是 refactor 说明形态还没稳定
|
|
27
|
+
- **意图线索**:工单号、事故、性能、安全、兼容——这些是「当时确实有个具体缘由」的证据,值得顺藤摸瓜
|
|
28
|
+
- **伴生文件**:反复同改意味着隐式耦合,改这个多半也得看它们
|
|
29
|
+
3. 给结论时**必须把推断的部分标出来**(见下)。
|
|
30
|
+
|
|
31
|
+
## 一条不可让步的纪律:史料 ≠ 推测
|
|
32
|
+
|
|
33
|
+
git 给的是**事实**:谁、何时、改了什么、提交信息怎么写的。
|
|
34
|
+
「为什么」几乎总要靠推断。两者必须在你的回答里分开:
|
|
35
|
+
|
|
36
|
+
- ✅「引入提交写的是『修复 #77 的越界』,**据此推测**这个边界判断是为了防越界」
|
|
37
|
+
- ❌「这个边界判断是为了防越界」
|
|
38
|
+
|
|
39
|
+
把推测写成事实,是考古这类工作最容易造成的伤害——后来的人会拿着一个编出来的理由去做决定,
|
|
40
|
+
而那比不知道更糟。**线索不足时就如实说「历史里看不出来,建议问 XXX」**,不要硬编一个说法。
|
|
41
|
+
|
|
42
|
+
同理,`当前归属` 回答的是「现在谁的代码最多」,**不等于「谁最懂」**——
|
|
43
|
+
一次格式化就能让某人变成全仓最大归属者。它是问人的起点,不是结论。
|
|
44
|
+
|
|
45
|
+
## 与决策图谱合流
|
|
46
|
+
|
|
47
|
+
考古得出的结论可以写进决策图谱(`record_decision`),让时间线向前延伸到工具启用之前。
|
|
48
|
+
写入时**必须**标明它是事后推断而非当时记录(工具已自动置 `origin: archaeology` 并降低置信度)——
|
|
49
|
+
「当时真的记下来的」与「事后从历史里推出来的」混在一起,图谱的可信度就毁了。
|
|
50
|
+
|
|
51
|
+
## 边界
|
|
52
|
+
|
|
53
|
+
- 只读 git 历史,不改任何文件。
|
|
54
|
+
- 历史被压扁过(squash / 仓库迁移)时线索会很薄,此时如实说明,不要拿三条提交硬编一个故事。
|
|
55
|
+
- 它不审代码质量(那是 `code-review`),也不判断改动范围(那是 `scope-creep`)。
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cases": [
|
|
3
|
+
{ "id": "why-here", "prompt": "这个边界判断为什么在这儿,当初是为了解决什么", "shouldTrigger": true },
|
|
4
|
+
{ "id": "legacy-removable", "prompt": "这段历史遗留的兼容代码还需要吗,能不能删掉", "shouldTrigger": true },
|
|
5
|
+
{ "id": "who-knows", "prompt": "这块谁最清楚,我想问问它的来历", "shouldTrigger": true },
|
|
6
|
+
{ "id": "explain-what", "prompt": "这段代码是干嘛的,帮我理解一下逻辑", "shouldTrigger": false },
|
|
7
|
+
{ "id": "review-quality", "prompt": "帮我审查一下这段代码有没有问题", "shouldTrigger": false }
|
|
8
|
+
]
|
|
9
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-quality
|
|
3
|
+
description: 代码体检与自查自修:code_inspect 机器排查代码质量——空捕获吞异常、注释与实现对不上、Java 事务失效与代理陷阱(@Transactional 落私有方法/同类自调用/吞异常不回滚)、BigDecimal 精度、圈复杂度与函数过长、重复代码块、console.log 调试残留、测试 .only 残留与断言恒真、缺单元测试覆盖、硬编码密钥与 SQL 拼接;五类可自动修,逻辑与安全类报给人改;test_plan 在补单元测试前算清该测几条路、哪些边界、用什么框架。刚写完或改完代码后自查逻辑与注释、清理调试残留、补单测、交付前把关时载入。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 代码自查自检自修
|
|
8
|
+
|
|
9
|
+
**代码的事故和文档的事故不一样**:文档出问题是看得见的(文字出框、编号跳号),
|
|
10
|
+
代码出问题是**看起来很对**——注释写着 `@param userId`,函数三个月前已经改叫 `id`;
|
|
11
|
+
`catch` 里空着,线上故障被静默吞掉;测试里留了个 `.only`,CI 从此只跑一个用例还一直是绿的。
|
|
12
|
+
|
|
13
|
+
这些东西不会在保存时报错,评审时一眼扫过去也像对的。
|
|
14
|
+
**AI 生成的代码尤其如此**:流畅、成体系、命名漂亮,那种"顺滑感"会让评审的人放松警惕。
|
|
15
|
+
所以自查不能靠"再读一遍感觉没问题",要靠机器过一遍。
|
|
16
|
+
|
|
17
|
+
## 用法
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
code_inspect(path) # 体检(不给 path 则整个工作目录)
|
|
21
|
+
code_inspect(path, only="logic,security") # 只看某几类
|
|
22
|
+
code_inspect(path, fix=true) # 顺带自动修那五类
|
|
23
|
+
code_inspect(path, strict=true) # 交付前把关:建议项也提升为必修
|
|
24
|
+
test_plan(path) # 写单测之前:先算清该测什么
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
规则全表随时可查(从实现里现取,不会与文档漂移):
|
|
28
|
+
`python3 skills/code-quality/scripts/code_check.py --rules`
|
|
29
|
+
|
|
30
|
+
**改完代码就跑一次**,别等用户问。回合收尾时系统会对你改过的源码自动体检一遍,
|
|
31
|
+
有必修项会打回来要求修完——与其被打回,不如自己先查。
|
|
32
|
+
|
|
33
|
+
## 七类规则怎么读
|
|
34
|
+
|
|
35
|
+
| 类 | 抓什么 | 为什么它值得一条规则 |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| **logic** 逻辑 | 空捕获、恒真条件、条件里写了 `=`、自我比较、死代码、可变默认参数、循环内 await、Java 用 `==` 比字符串、浮点比相等 | 这些是**会出事**的,不是风格问题 |
|
|
38
|
+
| **comment** 注释 | 文档写的形参函数里没有、说有返回值却从不返回、文档名字是从别的函数抄来的、被注释掉的死代码、无主 TODO | **过期的注释比没注释危害大**:它让下一个读者基于错误前提改代码 |
|
|
39
|
+
| **readability** 可读性 | 函数过长、嵌套过深、圈复杂度、参数过多、魔法数字 | 阈值是"该停下来看一眼"的信号,不是"必须拆"的判决 |
|
|
40
|
+
| **structure** 结构 | 重复代码块、硬编码本机路径、调试输出残留 | 重复=改的时候要记得改两处,而人总会忘一处 |
|
|
41
|
+
| **test** 测试 | `.only` 残留、恒真断言、没有断言的测试、公共函数无覆盖 | 一个恒真断言让整个用例变成装饰品 |
|
|
42
|
+
| **security** 安全 | 硬编码密钥、SQL 拼接、命令注入、eval、弱随机做令牌 | 误报代价高,所以每条都带排除;报出来的基本都值得看一眼 |
|
|
43
|
+
| **consistency** 一致性 | 同名函数在多处签名漂移 | 单文件看不见,它只有把多个文件放一起才成立 |
|
|
44
|
+
|
|
45
|
+
严重度三档:**必修(error)** 会出事或会骗人 · **建议(warn)** 该改但不拦交付 · **提示(info)** 风格偏好。
|
|
46
|
+
|
|
47
|
+
**必修项清零之前不要说「已完成」。**
|
|
48
|
+
|
|
49
|
+
## 分语言专属规则(Java 33 · Python 30 · JS/TS/Vue 20 · C# 20)
|
|
50
|
+
|
|
51
|
+
通用七类对所有语言都跑,此外每种主力语言另有一组**专属规则**——
|
|
52
|
+
它们的共同点是通用规则一条也看不见,却恰恰是各自语言里最会出事的地方:
|
|
53
|
+
|
|
54
|
+
- **Java**:@Transactional 落私有方法/未配 rollbackFor/吞异常/事务内起线程、
|
|
55
|
+
**同类自调用 @Transactional·@Async**(走 this 不走代理,注解等于没写)、
|
|
56
|
+
BigDecimal 双坑、static SimpleDateFormat、MyBatis `${}`;
|
|
57
|
+
- **Python**(走真 AST,判得最准):类属性共享可变、闭包捕获循环变量、
|
|
58
|
+
**`except` 顺序错致子类分支永不执行**、生产代码用 assert、`open()` 无 encoding、
|
|
59
|
+
pandas 链式赋值与读表不指定 dtype(**事故不改外观、只改数字**);
|
|
60
|
+
- **JS/TS/Vue**:`.forEach(async …)`、`a?.b.c` 只防了第一层、`x === NaN`、
|
|
61
|
+
`as any` 与 `@ts-ignore`、**v-for 无 :key / v-if 与 v-for 同元素 / v-html**、
|
|
62
|
+
直接改 props、解构 reactive;
|
|
63
|
+
- **C#**:**`async void`**(异常无人能接)、**`.Result`/`.Wait()`**(必然死锁,本地却测不出)、
|
|
64
|
+
**`throw ex;`**(重置堆栈,正确写法 `throw;` 反而更短)、`DateTime.Now`、`double` 算钱、
|
|
65
|
+
`lock(this)`、LINQ 多次枚举、DbContext 注册成 Singleton、`async void` 测试方法。
|
|
66
|
+
|
|
67
|
+
细表见 `references/languages.md`;完整清单随时从实现里现取:
|
|
68
|
+
`code_check.py --rules`(规则文件是动态发现的,不会与文档漂移)。
|
|
69
|
+
|
|
70
|
+
## 能自动修的只有五类——其余为什么不能
|
|
71
|
+
|
|
72
|
+
`fix=true` 只动这五样:`.only` 残留、行尾空白、被注释掉的死代码、调试输出、空 `finally`。
|
|
73
|
+
共同点是**改完行为要么不变、要么是恢复本该有的行为**。
|
|
74
|
+
|
|
75
|
+
两条看着能自动修、但**刻意不修**的:
|
|
76
|
+
|
|
77
|
+
- `a == b` → `a === b`:**会改变行为**。`"1" == 1` 为真,`"1" === 1` 为假。
|
|
78
|
+
代码若正依赖松散比较,一键修完当场出故障。
|
|
79
|
+
- `count = count;` 删掉:看着无害,但它多半是**漏写了 `this.`** 的现场证据。
|
|
80
|
+
删掉等于把线索抹了,bug 还在,只是再也查不到。
|
|
81
|
+
|
|
82
|
+
逻辑、注释与实现不符、缺测试、安全——这几类工具一律不碰,报给你,**你来判断怎么改**。
|
|
83
|
+
一个会自动改坏代码的修复器比没有修复器危险,因为人会停止复核它的改动。
|
|
84
|
+
|
|
85
|
+
## 注释是怎么骗人的
|
|
86
|
+
|
|
87
|
+
体检里最有价值的一条是 `comment.param-mismatch`:文档里写的形参,函数签名里根本没有。
|
|
88
|
+
它几乎总是同一个故事——**形参改过名,注释没跟着改**。
|
|
89
|
+
|
|
90
|
+
写注释时记住分工:
|
|
91
|
+
- **代码写「做什么」,注释写「为什么」**。把代码念一遍的注释(`// 设置 name` 配 `user.name = x`)等于噪声,体检会报。
|
|
92
|
+
- 在每个**转折处**写一句:为什么选了这个方案而不是那个、绕开了哪个坑、这段的前提是什么。
|
|
93
|
+
- 改了签名就改文档,两者是一份东西的两半。
|
|
94
|
+
|
|
95
|
+
## 写单测:先算清该测什么
|
|
96
|
+
|
|
97
|
+
直接开写的产出通常是一堆"调一次、断言不为 null"——覆盖率上去了,缺陷一个也拦不住。
|
|
98
|
+
原因是没先回答"这个函数到底有几条路、边界在哪"。
|
|
99
|
+
|
|
100
|
+
`test_plan(path)` 把这部分算出来给你:
|
|
101
|
+
|
|
102
|
+
- 哪些对外函数测试里从没出现过(按圈复杂度排序,**分支多的先补**)
|
|
103
|
+
- 每个函数至少需要几个用例才能覆盖各分支
|
|
104
|
+
- 每个参数该试哪些边界(按名字推断:`orders` 试空数组、`amount` 试负数与零、`deadline` 试时区边界)
|
|
105
|
+
- 有没有异常路径 / 异步失败路径 / 需要替身的外部依赖
|
|
106
|
+
- **这个项目的框架、测试目录、命名约定、参照文件**——照着既有约定写,不要自创一套
|
|
107
|
+
|
|
108
|
+
写完再跑一次 `code_inspect`:恒真断言、没有断言的用例、`.only` 残留归那边管,
|
|
109
|
+
而这三样正是写测试时最容易顺手留下的。
|
|
110
|
+
|
|
111
|
+
**警惕自证循环**:你同时写实现和测试时,测试会"验证"你的实现——包括错的部分。
|
|
112
|
+
正路是先定验收用例(或让人审你起草的用例),再写实现。
|
|
113
|
+
|
|
114
|
+
## 误报怎么办
|
|
115
|
+
|
|
116
|
+
确认某一条确实是误报,就地豁免:
|
|
117
|
+
|
|
118
|
+
```js
|
|
119
|
+
// code-inspect-ignore: security.command-injection cmd 来自内部白名单,已核实
|
|
120
|
+
return execSync(`command -v ${cmd}`);
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
不写规则名则豁免该行全部规则。**顺手写下理由**——豁免是一条决定,
|
|
124
|
+
下一个读到它的人(和下一次的你)需要知道这个决定的依据。
|
|
125
|
+
|
|
126
|
+
但先想清楚:这一条真的是误报,还是你不想改?把真问题豁免掉,这个工具就白装了。
|
|
127
|
+
|
|
128
|
+
## 自己写的代码怎么过自己这一关
|
|
129
|
+
|
|
130
|
+
1. 写完就 `code_inspect(改过的文件)`,别等被打回;
|
|
131
|
+
2. 必修项逐条改,改完**复检确认清零**——"应该修好了"不算;
|
|
132
|
+
3. 建议项看一眼:函数超过 80 行、圈复杂度过 15,多半真的该拆;
|
|
133
|
+
4. 新增对外函数就 `test_plan` 一遍,至少补正常路径 + 一个边界;
|
|
134
|
+
5. 交付前 `strict=true` 再过一次。
|
|
135
|
+
|
|
136
|
+
**引擎改了必须重跑压测台**:`python3 scripts/code_battery.py 300`
|
|
137
|
+
(反向造缺陷覆盖全部 46 条规则 + 反误报 + 修复闭环 + 正向跑批)。
|
|
138
|
+
只会说"未发现问题"的体检器比没有体检器更糟——它给人一个虚假的"已检查"印象。
|