create-yss-spec 3.5.6 → 3.5.8
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/bin/create-yss-spec.js +3 -1
- package/cli-core.lock.json +10 -6
- package/package.json +4 -1
- package/src/api/_sync-service.js +3 -1
- package/src/command-runner.mjs +44 -9
- package/src/content-identity.js +111 -0
- package/src/runtime-store.mjs +650 -0
- package/src/template/asset-runtime.js +4 -1
- package/src/template/instance-runtime.js +23 -7
- package/src/validation/metadata.js +8 -0
- package/template/.agents/skills/.strategic-design-skills-manifest.json +1 -1
- package/template/.agents/skills/alibaba-java-code-style/SKILL.md +30 -36
- package/template/.agents/skills/archify/SKILL.md +2 -2
- package/template/.agents/skills/archify/scripts/yss-safe-deliver.mjs +10 -6
- package/template/.agents/skills/archify/test/yss-safe-deliver.test.mjs +9 -2
- package/template/.agents/skills/code-review/SKILL.md +19 -11
- package/template/.agents/skills/code-review/references/candidate-capture.md +1 -1
- package/template/.agents/skills/code-review/references/legacy-convergence.md +3 -1
- package/template/.agents/skills/code-review/references/review-axis-checklists.md +2 -0
- package/template/.agents/skills/code-review/references/yss-review-standards.md +4 -2
- package/template/.agents/skills/competitive-intelligence/SKILL.md +32 -74
- package/template/.agents/skills/file-export-download/SKILL.md +4 -73
- package/template/.agents/skills/file-export-download/references/binary-contract-example.md +26 -0
- package/template/.agents/skills/file-export-download/references/download-call-example.md +45 -0
- package/template/.agents/skills/formily-foundation/SKILL.md +6 -105
- package/template/.agents/skills/formily-foundation/references/async-save-example.md +57 -0
- package/template/.agents/skills/formily-foundation/references/query-layout.md +50 -0
- package/template/.agents/skills/formily-linkage-effects/SKILL.md +3 -116
- package/template/.agents/skills/formily-linkage-effects/references/linkage-example.md +116 -0
- package/template/.agents/skills/formily-mode-slot-detail/SKILL.md +3 -81
- package/template/.agents/skills/formily-mode-slot-detail/references/mode-slot-example.md +81 -0
- package/template/.agents/skills/formily-step-flow/SKILL.md +3 -143
- package/template/.agents/skills/formily-step-flow/references/step-flow-example.md +143 -0
- package/template/.agents/skills/handoff/SKILL.md +3 -1
- package/template/.agents/skills/i-have-adhd/SKILL.md +2 -2
- package/template/.agents/skills/i-have-adhd/references/yss-adaptation.md +2 -2
- package/template/.agents/skills/i-have-adhd/tests/verify-integration.mjs +7 -2
- package/template/.agents/skills/implement/SKILL.md +2 -2
- package/template/.agents/skills/llm-wiki/references/transactions.md +2 -2
- package/template/.agents/skills/llm-wiki/scripts/core.mjs +40 -2
- package/template/.agents/skills/llm-wiki/scripts/transaction.mjs +30 -27
- package/template/.agents/skills/llm-wiki/scripts/v2.test.mjs +38 -2
- package/template/.agents/skills/lombok/SKILL.md +2 -0
- package/template/.agents/skills/mapstruct/SKILL.md +2 -0
- package/template/.agents/skills/tdd/SKILL.md +2 -2
- package/template/.agents/skills/theme-token-usage/SKILL.md +6 -5
- package/template/.agents/skills/wayfinder/references/chart-map.md +2 -2
- package/template/.agents/skills/wayfinder/references/ticket-types.md +1 -1
- package/template/.agents/skills/yss-api-integration/SKILL.md +13 -50
- package/template/.agents/skills/yss-api-integration/references/orval-list-example.md +38 -0
- package/template/.agents/skills/yss-application/SKILL.md +11 -5
- package/template/.agents/skills/yss-audit-log/SKILL.md +8 -6
- package/template/.agents/skills/yss-audit-log/references/README.md +5 -5
- package/template/.agents/skills/yss-cache/SKILL.md +4 -4
- package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +7 -8
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +13 -6
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/command-examples.md +2 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +28 -1
- package/template/.agents/skills/yss-design-system/SKILL.md +2 -2
- package/template/.agents/skills/yss-distributed-id/SKILL.md +4 -4
- package/template/.agents/skills/yss-dto/SKILL.md +9 -9
- package/template/.agents/skills/yss-dto/references/README.md +4 -4
- package/template/.agents/skills/yss-dto/references/wire-validation-checklist.md +4 -4
- package/template/.agents/skills/yss-excel-mvc/SKILL.md +4 -4
- package/template/.agents/skills/yss-exception/SKILL.md +42 -48
- package/template/.agents/skills/yss-formily-schema-generator/SKILL.md +26 -170
- package/template/.agents/skills/yss-formily-schema-generator/references/workflow.md +49 -193
- package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +14 -10
- package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +2 -6
- package/template/.agents/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +15 -1
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +1 -1
- package/template/.agents/skills/yss-mybatis/SKILL.md +4 -4
- package/template/.agents/skills/yss-openapi-draft-review/SKILL.md +6 -4
- package/template/.agents/skills/yss-openapi-draft-review/references/review-output.md +2 -0
- package/template/.agents/skills/yss-openapi-draft-review/references/semantic-review.md +3 -3
- package/template/.agents/skills/yss-openapi-governance/SKILL.md +5 -7
- package/template/.agents/skills/yss-openapi-governance/references/governance-output.md +2 -0
- package/template/.agents/skills/yss-openapi-governance/references/governance-workflow.md +3 -3
- package/template/.agents/skills/yss-product-lifecycle/SKILL.md +23 -21
- package/template/.agents/skills/yss-product-lifecycle/references/artifact-dependencies.md +1 -1
- package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +25 -5
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +100 -4
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +35 -12
- package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +3 -1
- package/template/.agents/skills/yss-product-lifecycle/references/user-decisions.md +3 -3
- package/template/.agents/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.agents/skills/yss-repository/SKILL.md +2 -2
- package/template/.agents/skills/yss-research/SKILL.md +39 -48
- package/template/.agents/skills/yss-research/assets/competitive-evidence-template.yaml +146 -0
- package/template/.agents/skills/yss-research/references/competitive-analysis.md +76 -0
- package/template/.agents/skills/yss-research/references/competitive-analysis.schema.json +324 -0
- package/template/.agents/skills/yss-research/references/evidence-contract.md +8 -0
- package/template/.agents/skills/yss-research/scripts/lib/competitive-analysis.mjs +185 -0
- package/template/.agents/skills/yss-research/scripts/render-competitive-outputs.mjs +16 -0
- package/template/.agents/skills/yss-research/scripts/validate-research-package.mjs +6 -2
- package/template/.agents/skills/yss-research/tests/competitive-scenarios.test.mjs +270 -0
- package/template/.agents/skills/yss-resilience4j/SKILL.md +25 -31
- package/template/.agents/skills/yss-security-algorithm/SKILL.md +37 -43
- package/template/.agents/skills/yss-skill-source-index-refresh/SKILL.md +29 -36
- package/template/.agents/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +1 -1
- package/template/.agents/skills/yss-stage-decision/SKILL.md +2 -5
- package/template/.agents/skills/yss-tactical-design/SKILL.md +1 -1
- package/template/.agents/skills/yss-tactical-design/references/output-template.md +3 -3
- package/template/.agents/skills/yss-tactical-design/references/tactical-design-contract.md +1 -1
- package/template/.agents/skills/yss-technical-design/SKILL.md +6 -5
- package/template/.agents/skills/yss-ui/SKILL.md +7 -1
- package/template/.agents/skills/yss-ui/assets/docs/guide/gitlab-ci-integration.md +2 -2
- package/template/.agents/skills/yss-ui/references/checklist.md +38 -96
- package/template/.agents/skills/yss-ui/references/component-routing.md +3 -1
- package/template/.agents/skills/yss-ui/references/quick-recipes.md +17 -272
- package/template/.agents/skills/yss-ui/references/specialized-components.md +3 -3
- package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +1 -1
- package/template/.agents/skills/yss-up-springboot3/SKILL.md +19 -21
- package/template/.agents/skills/yss-userinfo/SKILL.md +27 -33
- package/template/.agents/skills/yss-validation/SKILL.md +26 -32
- package/template/.agents/skills/yss-web-controller/SKILL.md +11 -44
- package/template/.agents/skills/yss-web-controller/references/crud-generation.md +38 -0
- package/template/.agents/skills/ytable-usage/SKILL.md +2 -2
- package/template/.agents/skills/ytree-usage/SKILL.md +2 -80
- package/template/.agents/skills/ytree-usage/references/tree-and-confirmation-example.md +81 -0
- package/template/.codex/skills/alibaba-java-code-style/SKILL.md +30 -36
- package/template/.codex/skills/archify/SKILL.md +2 -2
- package/template/.codex/skills/archify/scripts/yss-safe-deliver.mjs +10 -6
- package/template/.codex/skills/archify/test/yss-safe-deliver.test.mjs +9 -2
- package/template/.codex/skills/code-review/SKILL.md +19 -11
- package/template/.codex/skills/code-review/references/candidate-capture.md +1 -1
- package/template/.codex/skills/code-review/references/legacy-convergence.md +3 -1
- package/template/.codex/skills/code-review/references/review-axis-checklists.md +2 -0
- package/template/.codex/skills/code-review/references/yss-review-standards.md +4 -2
- package/template/.codex/skills/competitive-intelligence/SKILL.md +32 -74
- package/template/.codex/skills/file-export-download/SKILL.md +4 -73
- package/template/.codex/skills/file-export-download/references/binary-contract-example.md +26 -0
- package/template/.codex/skills/file-export-download/references/download-call-example.md +45 -0
- package/template/.codex/skills/formily-foundation/SKILL.md +6 -105
- package/template/.codex/skills/formily-foundation/references/async-save-example.md +57 -0
- package/template/.codex/skills/formily-foundation/references/query-layout.md +50 -0
- package/template/.codex/skills/formily-linkage-effects/SKILL.md +3 -116
- package/template/.codex/skills/formily-linkage-effects/references/linkage-example.md +116 -0
- package/template/.codex/skills/formily-mode-slot-detail/SKILL.md +3 -81
- package/template/.codex/skills/formily-mode-slot-detail/references/mode-slot-example.md +81 -0
- package/template/.codex/skills/formily-step-flow/SKILL.md +3 -143
- package/template/.codex/skills/formily-step-flow/references/step-flow-example.md +143 -0
- package/template/.codex/skills/handoff/SKILL.md +3 -1
- package/template/.codex/skills/i-have-adhd/SKILL.md +2 -2
- package/template/.codex/skills/i-have-adhd/references/yss-adaptation.md +2 -2
- package/template/.codex/skills/i-have-adhd/tests/verify-integration.mjs +7 -2
- package/template/.codex/skills/implement/SKILL.md +2 -2
- package/template/.codex/skills/llm-wiki/references/transactions.md +2 -2
- package/template/.codex/skills/llm-wiki/scripts/core.mjs +40 -2
- package/template/.codex/skills/llm-wiki/scripts/transaction.mjs +30 -27
- package/template/.codex/skills/llm-wiki/scripts/v2.test.mjs +38 -2
- package/template/.codex/skills/lombok/SKILL.md +2 -0
- package/template/.codex/skills/mapstruct/SKILL.md +2 -0
- package/template/.codex/skills/product-design/references/communication-protocol.md +3 -3
- package/template/.codex/skills/product-design/references/critical-overrides.md +4 -5
- package/template/.codex/skills/product-design/skills/audit/SKILL.md +2 -4
- package/template/.codex/skills/product-design/skills/get-context/SKILL.md +6 -8
- package/template/.codex/skills/product-design/skills/ideate/SKILL.md +3 -3
- package/template/.codex/skills/product-design/skills/image-to-code/SKILL.md +3 -5
- package/template/.codex/skills/product-design/skills/index/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/prototype/SKILL.md +2 -4
- package/template/.codex/skills/product-design/skills/research/SKILL.md +4 -6
- package/template/.codex/skills/product-design/skills/research/assets/research-brief-template.md +3 -3
- package/template/.codex/skills/product-design/skills/share/SKILL.md +2 -4
- package/template/.codex/skills/product-design/skills/url-to-code/SKILL.md +2 -4
- package/template/.codex/skills/product-design/skills/user-context/SKILL.md +1 -1
- package/template/.codex/skills/tdd/SKILL.md +2 -2
- package/template/.codex/skills/theme-token-usage/SKILL.md +6 -5
- package/template/.codex/skills/wayfinder/references/chart-map.md +2 -2
- package/template/.codex/skills/wayfinder/references/ticket-types.md +1 -1
- package/template/.codex/skills/yss-api-integration/SKILL.md +13 -50
- package/template/.codex/skills/yss-api-integration/references/orval-list-example.md +38 -0
- package/template/.codex/skills/yss-application/SKILL.md +11 -5
- package/template/.codex/skills/yss-audit-log/SKILL.md +8 -6
- package/template/.codex/skills/yss-audit-log/references/README.md +5 -5
- package/template/.codex/skills/yss-cache/SKILL.md +4 -4
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +7 -8
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +13 -6
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/command-examples.md +2 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +28 -1
- package/template/.codex/skills/yss-design-system/SKILL.md +2 -2
- package/template/.codex/skills/yss-distributed-id/SKILL.md +4 -4
- package/template/.codex/skills/yss-dto/SKILL.md +9 -9
- package/template/.codex/skills/yss-dto/references/README.md +4 -4
- package/template/.codex/skills/yss-dto/references/wire-validation-checklist.md +4 -4
- package/template/.codex/skills/yss-excel-mvc/SKILL.md +4 -4
- package/template/.codex/skills/yss-exception/SKILL.md +42 -48
- package/template/.codex/skills/yss-formily-schema-generator/SKILL.md +26 -170
- package/template/.codex/skills/yss-formily-schema-generator/references/workflow.md +49 -193
- package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +14 -10
- package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +2 -6
- package/template/.codex/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +15 -1
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +1 -1
- package/template/.codex/skills/yss-mybatis/SKILL.md +4 -4
- package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +6 -4
- package/template/.codex/skills/yss-openapi-draft-review/references/review-output.md +2 -0
- package/template/.codex/skills/yss-openapi-draft-review/references/semantic-review.md +3 -3
- package/template/.codex/skills/yss-openapi-governance/SKILL.md +5 -7
- package/template/.codex/skills/yss-openapi-governance/references/governance-output.md +2 -0
- package/template/.codex/skills/yss-openapi-governance/references/governance-workflow.md +3 -3
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +23 -21
- package/template/.codex/skills/yss-product-lifecycle/references/artifact-dependencies.md +1 -1
- package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +25 -5
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +100 -4
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +35 -12
- package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +3 -1
- package/template/.codex/skills/yss-product-lifecycle/references/user-decisions.md +3 -3
- package/template/.codex/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.codex/skills/yss-repository/SKILL.md +2 -2
- package/template/.codex/skills/yss-research/SKILL.md +39 -48
- package/template/.codex/skills/yss-research/assets/competitive-evidence-template.yaml +146 -0
- package/template/.codex/skills/yss-research/references/competitive-analysis.md +76 -0
- package/template/.codex/skills/yss-research/references/competitive-analysis.schema.json +324 -0
- package/template/.codex/skills/yss-research/references/evidence-contract.md +8 -0
- package/template/.codex/skills/yss-research/scripts/lib/competitive-analysis.mjs +185 -0
- package/template/.codex/skills/yss-research/scripts/render-competitive-outputs.mjs +16 -0
- package/template/.codex/skills/yss-research/scripts/validate-research-package.mjs +6 -2
- package/template/.codex/skills/yss-research/tests/competitive-scenarios.test.mjs +270 -0
- package/template/.codex/skills/yss-resilience4j/SKILL.md +25 -31
- package/template/.codex/skills/yss-security-algorithm/SKILL.md +37 -43
- package/template/.codex/skills/yss-skill-source-index-refresh/SKILL.md +29 -36
- package/template/.codex/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +1 -1
- package/template/.codex/skills/yss-stage-decision/SKILL.md +2 -5
- package/template/.codex/skills/yss-tactical-design/SKILL.md +1 -1
- package/template/.codex/skills/yss-tactical-design/references/output-template.md +3 -3
- package/template/.codex/skills/yss-tactical-design/references/tactical-design-contract.md +1 -1
- package/template/.codex/skills/yss-technical-design/SKILL.md +6 -5
- package/template/.codex/skills/yss-ui/SKILL.md +7 -1
- package/template/.codex/skills/yss-ui/assets/docs/guide/gitlab-ci-integration.md +2 -2
- package/template/.codex/skills/yss-ui/references/checklist.md +38 -96
- package/template/.codex/skills/yss-ui/references/component-routing.md +3 -1
- package/template/.codex/skills/yss-ui/references/quick-recipes.md +17 -272
- package/template/.codex/skills/yss-ui/references/specialized-components.md +3 -3
- package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +1 -1
- package/template/.codex/skills/yss-up-springboot3/SKILL.md +19 -21
- package/template/.codex/skills/yss-userinfo/SKILL.md +27 -33
- package/template/.codex/skills/yss-validation/SKILL.md +26 -32
- package/template/.codex/skills/yss-web-controller/SKILL.md +11 -44
- package/template/.codex/skills/yss-web-controller/references/crud-generation.md +38 -0
- package/template/.codex/skills/ytable-usage/SKILL.md +2 -2
- package/template/.codex/skills/ytree-usage/SKILL.md +2 -80
- package/template/.codex/skills/ytree-usage/references/tree-and-confirmation-example.md +81 -0
- package/template/.cursor/skills/alibaba-java-code-style/SKILL.md +30 -36
- package/template/.cursor/skills/archify/SKILL.md +2 -2
- package/template/.cursor/skills/archify/scripts/yss-safe-deliver.mjs +10 -6
- package/template/.cursor/skills/archify/test/yss-safe-deliver.test.mjs +9 -2
- package/template/.cursor/skills/code-review/SKILL.md +19 -11
- package/template/.cursor/skills/code-review/references/candidate-capture.md +1 -1
- package/template/.cursor/skills/code-review/references/legacy-convergence.md +3 -1
- package/template/.cursor/skills/code-review/references/review-axis-checklists.md +2 -0
- package/template/.cursor/skills/code-review/references/yss-review-standards.md +4 -2
- package/template/.cursor/skills/competitive-intelligence/SKILL.md +32 -74
- package/template/.cursor/skills/file-export-download/SKILL.md +4 -73
- package/template/.cursor/skills/file-export-download/references/binary-contract-example.md +26 -0
- package/template/.cursor/skills/file-export-download/references/download-call-example.md +45 -0
- package/template/.cursor/skills/formily-foundation/SKILL.md +6 -105
- package/template/.cursor/skills/formily-foundation/references/async-save-example.md +57 -0
- package/template/.cursor/skills/formily-foundation/references/query-layout.md +50 -0
- package/template/.cursor/skills/formily-linkage-effects/SKILL.md +3 -116
- package/template/.cursor/skills/formily-linkage-effects/references/linkage-example.md +116 -0
- package/template/.cursor/skills/formily-mode-slot-detail/SKILL.md +3 -81
- package/template/.cursor/skills/formily-mode-slot-detail/references/mode-slot-example.md +81 -0
- package/template/.cursor/skills/formily-step-flow/SKILL.md +3 -143
- package/template/.cursor/skills/formily-step-flow/references/step-flow-example.md +143 -0
- package/template/.cursor/skills/handoff/SKILL.md +3 -1
- package/template/.cursor/skills/i-have-adhd/SKILL.md +2 -2
- package/template/.cursor/skills/i-have-adhd/references/yss-adaptation.md +2 -2
- package/template/.cursor/skills/i-have-adhd/tests/verify-integration.mjs +7 -2
- package/template/.cursor/skills/implement/SKILL.md +2 -2
- package/template/.cursor/skills/llm-wiki/references/transactions.md +2 -2
- package/template/.cursor/skills/llm-wiki/scripts/core.mjs +40 -2
- package/template/.cursor/skills/llm-wiki/scripts/transaction.mjs +30 -27
- package/template/.cursor/skills/llm-wiki/scripts/v2.test.mjs +38 -2
- package/template/.cursor/skills/lombok/SKILL.md +2 -0
- package/template/.cursor/skills/mapstruct/SKILL.md +2 -0
- package/template/.cursor/skills/tdd/SKILL.md +2 -2
- package/template/.cursor/skills/theme-token-usage/SKILL.md +6 -5
- package/template/.cursor/skills/wayfinder/references/chart-map.md +2 -2
- package/template/.cursor/skills/wayfinder/references/ticket-types.md +1 -1
- package/template/.cursor/skills/yss-api-integration/SKILL.md +13 -50
- package/template/.cursor/skills/yss-api-integration/references/orval-list-example.md +38 -0
- package/template/.cursor/skills/yss-application/SKILL.md +11 -5
- package/template/.cursor/skills/yss-audit-log/SKILL.md +8 -6
- package/template/.cursor/skills/yss-audit-log/references/README.md +5 -5
- package/template/.cursor/skills/yss-cache/SKILL.md +4 -4
- package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +7 -8
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +13 -6
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/command-examples.md +2 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +28 -1
- package/template/.cursor/skills/yss-design-system/SKILL.md +2 -2
- package/template/.cursor/skills/yss-distributed-id/SKILL.md +4 -4
- package/template/.cursor/skills/yss-dto/SKILL.md +9 -9
- package/template/.cursor/skills/yss-dto/references/README.md +4 -4
- package/template/.cursor/skills/yss-dto/references/wire-validation-checklist.md +4 -4
- package/template/.cursor/skills/yss-excel-mvc/SKILL.md +4 -4
- package/template/.cursor/skills/yss-exception/SKILL.md +42 -48
- package/template/.cursor/skills/yss-formily-schema-generator/SKILL.md +26 -170
- package/template/.cursor/skills/yss-formily-schema-generator/references/workflow.md +49 -193
- package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +14 -10
- package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +2 -6
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +15 -1
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +1 -1
- package/template/.cursor/skills/yss-mybatis/SKILL.md +4 -4
- package/template/.cursor/skills/yss-openapi-draft-review/SKILL.md +6 -4
- package/template/.cursor/skills/yss-openapi-draft-review/references/review-output.md +2 -0
- package/template/.cursor/skills/yss-openapi-draft-review/references/semantic-review.md +3 -3
- package/template/.cursor/skills/yss-openapi-governance/SKILL.md +5 -7
- package/template/.cursor/skills/yss-openapi-governance/references/governance-output.md +2 -0
- package/template/.cursor/skills/yss-openapi-governance/references/governance-workflow.md +3 -3
- package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +23 -21
- package/template/.cursor/skills/yss-product-lifecycle/references/artifact-dependencies.md +1 -1
- package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +25 -5
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +100 -4
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +35 -12
- package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +3 -1
- package/template/.cursor/skills/yss-product-lifecycle/references/user-decisions.md +3 -3
- package/template/.cursor/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.cursor/skills/yss-repository/SKILL.md +2 -2
- package/template/.cursor/skills/yss-research/SKILL.md +39 -48
- package/template/.cursor/skills/yss-research/assets/competitive-evidence-template.yaml +146 -0
- package/template/.cursor/skills/yss-research/references/competitive-analysis.md +76 -0
- package/template/.cursor/skills/yss-research/references/competitive-analysis.schema.json +324 -0
- package/template/.cursor/skills/yss-research/references/evidence-contract.md +8 -0
- package/template/.cursor/skills/yss-research/scripts/lib/competitive-analysis.mjs +185 -0
- package/template/.cursor/skills/yss-research/scripts/render-competitive-outputs.mjs +16 -0
- package/template/.cursor/skills/yss-research/scripts/validate-research-package.mjs +6 -2
- package/template/.cursor/skills/yss-research/tests/competitive-scenarios.test.mjs +270 -0
- package/template/.cursor/skills/yss-resilience4j/SKILL.md +25 -31
- package/template/.cursor/skills/yss-security-algorithm/SKILL.md +37 -43
- package/template/.cursor/skills/yss-skill-source-index-refresh/SKILL.md +29 -36
- package/template/.cursor/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +1 -1
- package/template/.cursor/skills/yss-stage-decision/SKILL.md +2 -5
- package/template/.cursor/skills/yss-tactical-design/SKILL.md +1 -1
- package/template/.cursor/skills/yss-tactical-design/references/output-template.md +3 -3
- package/template/.cursor/skills/yss-tactical-design/references/tactical-design-contract.md +1 -1
- package/template/.cursor/skills/yss-technical-design/SKILL.md +6 -5
- package/template/.cursor/skills/yss-ui/SKILL.md +7 -1
- package/template/.cursor/skills/yss-ui/assets/docs/guide/gitlab-ci-integration.md +2 -2
- package/template/.cursor/skills/yss-ui/references/checklist.md +38 -96
- package/template/.cursor/skills/yss-ui/references/component-routing.md +3 -1
- package/template/.cursor/skills/yss-ui/references/quick-recipes.md +17 -272
- package/template/.cursor/skills/yss-ui/references/specialized-components.md +3 -3
- package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +1 -1
- package/template/.cursor/skills/yss-up-springboot3/SKILL.md +19 -21
- package/template/.cursor/skills/yss-userinfo/SKILL.md +27 -33
- package/template/.cursor/skills/yss-validation/SKILL.md +26 -32
- package/template/.cursor/skills/yss-web-controller/SKILL.md +11 -44
- package/template/.cursor/skills/yss-web-controller/references/crud-generation.md +38 -0
- package/template/.cursor/skills/ytable-usage/SKILL.md +2 -2
- package/template/.cursor/skills/ytree-usage/SKILL.md +2 -80
- package/template/.cursor/skills/ytree-usage/references/tree-and-confirmation-example.md +81 -0
- package/template/.pi/skills/alibaba-java-code-style/SKILL.md +30 -36
- package/template/.pi/skills/archify/SKILL.md +2 -2
- package/template/.pi/skills/archify/scripts/yss-safe-deliver.mjs +10 -6
- package/template/.pi/skills/archify/test/yss-safe-deliver.test.mjs +9 -2
- package/template/.pi/skills/code-review/SKILL.md +19 -11
- package/template/.pi/skills/code-review/references/candidate-capture.md +1 -1
- package/template/.pi/skills/code-review/references/legacy-convergence.md +3 -1
- package/template/.pi/skills/code-review/references/review-axis-checklists.md +2 -0
- package/template/.pi/skills/code-review/references/yss-review-standards.md +4 -2
- package/template/.pi/skills/competitive-intelligence/SKILL.md +32 -74
- package/template/.pi/skills/file-export-download/SKILL.md +4 -73
- package/template/.pi/skills/file-export-download/references/binary-contract-example.md +26 -0
- package/template/.pi/skills/file-export-download/references/download-call-example.md +45 -0
- package/template/.pi/skills/formily-foundation/SKILL.md +6 -105
- package/template/.pi/skills/formily-foundation/references/async-save-example.md +57 -0
- package/template/.pi/skills/formily-foundation/references/query-layout.md +50 -0
- package/template/.pi/skills/formily-linkage-effects/SKILL.md +3 -116
- package/template/.pi/skills/formily-linkage-effects/references/linkage-example.md +116 -0
- package/template/.pi/skills/formily-mode-slot-detail/SKILL.md +3 -81
- package/template/.pi/skills/formily-mode-slot-detail/references/mode-slot-example.md +81 -0
- package/template/.pi/skills/formily-step-flow/SKILL.md +3 -143
- package/template/.pi/skills/formily-step-flow/references/step-flow-example.md +143 -0
- package/template/.pi/skills/handoff/SKILL.md +3 -1
- package/template/.pi/skills/i-have-adhd/SKILL.md +2 -2
- package/template/.pi/skills/i-have-adhd/references/yss-adaptation.md +2 -2
- package/template/.pi/skills/i-have-adhd/tests/verify-integration.mjs +7 -2
- package/template/.pi/skills/implement/SKILL.md +2 -2
- package/template/.pi/skills/llm-wiki/references/transactions.md +2 -2
- package/template/.pi/skills/llm-wiki/scripts/core.mjs +40 -2
- package/template/.pi/skills/llm-wiki/scripts/transaction.mjs +30 -27
- package/template/.pi/skills/llm-wiki/scripts/v2.test.mjs +38 -2
- package/template/.pi/skills/lombok/SKILL.md +2 -0
- package/template/.pi/skills/mapstruct/SKILL.md +2 -0
- package/template/.pi/skills/tdd/SKILL.md +2 -2
- package/template/.pi/skills/theme-token-usage/SKILL.md +6 -5
- package/template/.pi/skills/wayfinder/references/chart-map.md +2 -2
- package/template/.pi/skills/wayfinder/references/ticket-types.md +1 -1
- package/template/.pi/skills/yss-api-integration/SKILL.md +13 -50
- package/template/.pi/skills/yss-api-integration/references/orval-list-example.md +38 -0
- package/template/.pi/skills/yss-application/SKILL.md +11 -5
- package/template/.pi/skills/yss-audit-log/SKILL.md +8 -6
- package/template/.pi/skills/yss-audit-log/references/README.md +5 -5
- package/template/.pi/skills/yss-cache/SKILL.md +4 -4
- package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +7 -8
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +13 -6
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/command-examples.md +2 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +28 -1
- package/template/.pi/skills/yss-design-system/SKILL.md +2 -2
- package/template/.pi/skills/yss-distributed-id/SKILL.md +4 -4
- package/template/.pi/skills/yss-dto/SKILL.md +9 -9
- package/template/.pi/skills/yss-dto/references/README.md +4 -4
- package/template/.pi/skills/yss-dto/references/wire-validation-checklist.md +4 -4
- package/template/.pi/skills/yss-excel-mvc/SKILL.md +4 -4
- package/template/.pi/skills/yss-exception/SKILL.md +42 -48
- package/template/.pi/skills/yss-formily-schema-generator/SKILL.md +26 -170
- package/template/.pi/skills/yss-formily-schema-generator/references/workflow.md +49 -193
- package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +14 -10
- package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +2 -6
- package/template/.pi/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +15 -1
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +1 -1
- package/template/.pi/skills/yss-mybatis/SKILL.md +4 -4
- package/template/.pi/skills/yss-openapi-draft-review/SKILL.md +6 -4
- package/template/.pi/skills/yss-openapi-draft-review/references/review-output.md +2 -0
- package/template/.pi/skills/yss-openapi-draft-review/references/semantic-review.md +3 -3
- package/template/.pi/skills/yss-openapi-governance/SKILL.md +5 -7
- package/template/.pi/skills/yss-openapi-governance/references/governance-output.md +2 -0
- package/template/.pi/skills/yss-openapi-governance/references/governance-workflow.md +3 -3
- package/template/.pi/skills/yss-product-lifecycle/SKILL.md +23 -21
- package/template/.pi/skills/yss-product-lifecycle/references/artifact-dependencies.md +1 -1
- package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +25 -5
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +100 -4
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +35 -12
- package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +3 -1
- package/template/.pi/skills/yss-product-lifecycle/references/user-decisions.md +3 -3
- package/template/.pi/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.pi/skills/yss-repository/SKILL.md +2 -2
- package/template/.pi/skills/yss-research/SKILL.md +39 -48
- package/template/.pi/skills/yss-research/assets/competitive-evidence-template.yaml +146 -0
- package/template/.pi/skills/yss-research/references/competitive-analysis.md +76 -0
- package/template/.pi/skills/yss-research/references/competitive-analysis.schema.json +324 -0
- package/template/.pi/skills/yss-research/references/evidence-contract.md +8 -0
- package/template/.pi/skills/yss-research/scripts/lib/competitive-analysis.mjs +185 -0
- package/template/.pi/skills/yss-research/scripts/render-competitive-outputs.mjs +16 -0
- package/template/.pi/skills/yss-research/scripts/validate-research-package.mjs +6 -2
- package/template/.pi/skills/yss-research/tests/competitive-scenarios.test.mjs +270 -0
- package/template/.pi/skills/yss-resilience4j/SKILL.md +25 -31
- package/template/.pi/skills/yss-security-algorithm/SKILL.md +37 -43
- package/template/.pi/skills/yss-skill-source-index-refresh/SKILL.md +29 -36
- package/template/.pi/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +1 -1
- package/template/.pi/skills/yss-stage-decision/SKILL.md +2 -5
- package/template/.pi/skills/yss-tactical-design/SKILL.md +1 -1
- package/template/.pi/skills/yss-tactical-design/references/output-template.md +3 -3
- package/template/.pi/skills/yss-tactical-design/references/tactical-design-contract.md +1 -1
- package/template/.pi/skills/yss-technical-design/SKILL.md +6 -5
- package/template/.pi/skills/yss-ui/SKILL.md +7 -1
- package/template/.pi/skills/yss-ui/assets/docs/guide/gitlab-ci-integration.md +2 -2
- package/template/.pi/skills/yss-ui/references/checklist.md +38 -96
- package/template/.pi/skills/yss-ui/references/component-routing.md +3 -1
- package/template/.pi/skills/yss-ui/references/quick-recipes.md +17 -272
- package/template/.pi/skills/yss-ui/references/specialized-components.md +3 -3
- package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +1 -1
- package/template/.pi/skills/yss-up-springboot3/SKILL.md +19 -21
- package/template/.pi/skills/yss-userinfo/SKILL.md +27 -33
- package/template/.pi/skills/yss-validation/SKILL.md +26 -32
- package/template/.pi/skills/yss-web-controller/SKILL.md +11 -44
- package/template/.pi/skills/yss-web-controller/references/crud-generation.md +38 -0
- package/template/.pi/skills/ytable-usage/SKILL.md +2 -2
- package/template/.pi/skills/ytree-usage/SKILL.md +2 -80
- package/template/.pi/skills/ytree-usage/references/tree-and-confirmation-example.md +81 -0
- package/template/.template-spec/agents/backend-architecture-profiles.md +1 -1
- package/template/.template-spec/agents/digital-human-roles.md +5 -1
- package/template/.template-spec/agents/digital-human-roles.yaml +49 -1
- package/template/.template-spec/engineering/backend-platforms.json +1 -1
- package/template/.template-spec/plan/templates/competitive-analysis-template.md +38 -36
- package/template/.template-spec/plan/templates/competitive-matrix-template.md +37 -17
- package/template/.template-spec/process/document-writing.md +22 -3
- package/template/.template-spec/process/harness-process-tailoring.md +5 -1
- package/template/.template-spec/process/implementation-repo-integration.md +26 -8
- package/template/.template-spec/process/research-completion.md +2 -0
- package/template/.template-spec/process/runtime-storage.md +78 -0
- package/template/.template-spec/process/schemas/approval-context.schema.json +67 -0
- package/template/.template-spec/process/schemas/approval-record.schema.json +179 -16
- package/template/.template-spec/process/schemas/backend-delivery.schema.json +16 -0
- package/template/.template-spec/process/schemas/delivery-preflight-input.schema.json +4 -0
- package/template/.template-spec/process/schemas/digital-human-task-package.schema.json +236 -1
- package/template/.template-spec/process/schemas/implementation-repository-preparation-result.schema.json +335 -52
- package/template/.template-spec/process/schemas/lifecycle-checkpoint.schema.json +11 -0
- package/template/.template-spec/process/schemas/project-scaffold-contract.schema.json +3 -0
- package/template/.template-spec/process/schemas/review-bundle.schema.json +347 -35
- package/template/.template-spec/process/schemas/strategic-design-handoff-v3.schema.json +504 -0
- package/template/.template-spec/process/schemas/strategic-design-handoff-v4.schema.json +544 -8
- package/template/.template-spec/process/schemas/strategic-design-handoff-v5.schema.json +616 -0
- package/template/.template-spec/process/schemas/strategic-design-handoff.schema.json +616 -0
- package/template/.template-spec/process/schemas/strategic-handoff-domain-strategy-v3.schema.json +712 -109
- package/template/.template-spec/process/schemas/strategic-handoff-domain-strategy.schema.json +595 -90
- package/template/.template-spec/process/schemas/strategic-handoff-export-v2.schema.json +448 -0
- package/template/.template-spec/process/schemas/strategic-handoff-export.schema.json +392 -0
- package/template/.template-spec/process/schemas/strategic-handoff-stage-decision-package-v3.schema.json +556 -83
- package/template/.template-spec/process/schemas/strategic-handoff-stage-decision-package.schema.json +418 -57
- package/template/.template-spec/process/subagent-collaboration.md +7 -1
- package/template/.template-spec/templates/approval-record-template.json +7 -3
- package/template/.template-spec/templates/approval-record-template.yaml +8 -2
- package/template/.template-spec/templates/examples/lifecycle-writing-examples.md +92 -2
- package/template/.template-spec/templates/retro-report-template.md +10 -3
- package/template/.template-spec/templates/review-bundle-template.yaml +19 -10
- package/template/AGENTS.md +4 -3
- package/template/CONTEXT.md +2 -2
- package/template/README.md +2 -2
- package/template/scripts/advance-maintenance-iteration +51 -0
- package/template/scripts/lib/approval-checkpoint-discovery.mjs +26 -0
- package/template/scripts/lib/approval-consumption.mjs +35 -0
- package/template/scripts/lib/approval-current.mjs +111 -0
- package/template/scripts/lib/approval-record-io.mjs +56 -0
- package/template/scripts/lib/approval-record.mjs +79 -184
- package/template/scripts/lib/approved-execution-context.mjs +8 -6
- package/template/scripts/lib/asset-transactions.mjs +5 -1
- package/template/scripts/lib/backend-delivery.mjs +1 -1
- package/template/scripts/lib/backend-review.mjs +2 -1
- package/template/scripts/lib/backend-scaffold-prerequisites.mjs +3 -2
- package/template/scripts/lib/business-ticket-lifecycle.mjs +2 -1
- package/template/scripts/lib/checkpoint-commit.mjs +50 -0
- package/template/scripts/lib/command-runner.mjs +44 -9
- package/template/scripts/lib/content-identity.mjs +273 -0
- package/template/scripts/lib/delivery-preflight.mjs +2 -1
- package/template/scripts/lib/digital-human-roles.mjs +12 -5
- package/template/scripts/lib/drift-report.mjs +110 -0
- package/template/scripts/lib/existing-backend-architecture.mjs +4 -1
- package/template/scripts/lib/lifecycle-context-query.mjs +172 -11
- package/template/scripts/lib/lifecycle-controls.mjs +9 -19
- package/template/scripts/lib/lifecycle-presentation.mjs +5 -0
- package/template/scripts/lib/lifecycle-status.mjs +63 -12
- package/template/scripts/lib/lifecycle-transition.mjs +2 -1
- package/template/scripts/lib/maintenance-candidate.mjs +24 -30
- package/template/scripts/lib/maintenance-research.mjs +52 -8
- package/template/scripts/lib/maintenance-storage.mjs +81 -0
- package/template/scripts/lib/plan-spec-entry.mjs +2 -1
- package/template/scripts/lib/project-governance.mjs +2 -1
- package/template/scripts/lib/read-only-intake.mjs +44 -9
- package/template/scripts/lib/review-capabilities.mjs +234 -0
- package/template/scripts/lib/review-package.mjs +100 -0
- package/template/scripts/lib/runtime-store.mjs +650 -0
- package/template/scripts/lib/skill-registry.mjs +4 -4
- package/template/scripts/lib/strategic-handoff.mjs +22 -9
- package/template/scripts/lib/task-package.mjs +47 -16
- package/template/scripts/lifecycle-status +26 -1
- package/template/scripts/maintenance-path +11 -0
- package/template/scripts/prepare-review-package +8 -0
- package/template/scripts/project-ci +13 -3
- package/template/scripts/query-lifecycle-context +8 -1
- package/template/scripts/run-read-only-intake +2 -2
- package/template/scripts/runtime-store +40 -0
- package/template/scripts/verify-approval-record +21 -13
- package/template/scripts/verify-lifecycle-checkpoint +7 -3
- package/template/scripts/verify-project-instance +21 -1
- package/template/skills-lock.json +62 -61
- package/template.snapshot.json +4 -4
- package/vendor/cli-core/cli.mjs +2 -0
- package/vendor/cli-core/command-runner.mjs +44 -9
- package/vendor/cli-core/package.json +1 -1
- package/vendor/cli-core/runtime-store.mjs +650 -0
- package/vendor/cli-core/scaffold.mjs +4 -2
|
@@ -27,6 +27,7 @@ const COMMON = {
|
|
|
27
27
|
".template-spec/process/document-writing.md",
|
|
28
28
|
".template-spec/process/contract-reading.md",
|
|
29
29
|
".template-spec/process/structured-assets.md",
|
|
30
|
+
".template-spec/process/runtime-storage.md",
|
|
30
31
|
".template-spec/process/schemas/approval-record.schema.json",
|
|
31
32
|
".template-spec/process/schemas/review-bundle.schema.json",
|
|
32
33
|
".template-spec/process/templates/lifecycle-checkpoint-template.json",
|
|
@@ -53,6 +54,7 @@ const COMMON = {
|
|
|
53
54
|
".template-spec/process/templates/user-decision-template.yaml",
|
|
54
55
|
".template-spec/templates/local-parent-ticket-template.md",
|
|
55
56
|
".template-spec/templates/approval-record-template.yaml",
|
|
57
|
+
".template-spec/templates/review-bundle-template.yaml",
|
|
56
58
|
".template-spec/templates/review-report-template.md",
|
|
57
59
|
".template-spec/user-guide/用户手册.md",
|
|
58
60
|
],
|
|
@@ -69,7 +71,9 @@ const COMMON = {
|
|
|
69
71
|
"scripts/verify-approval-record",
|
|
70
72
|
"scripts/query-lifecycle-context",
|
|
71
73
|
"scripts/prepare-read-only-intake",
|
|
74
|
+
"scripts/prepare-review-package",
|
|
72
75
|
"scripts/run-read-only-intake",
|
|
76
|
+
"scripts/runtime-store",
|
|
73
77
|
"scripts/contract",
|
|
74
78
|
"scripts/check-plan-stage-coverage",
|
|
75
79
|
"scripts/stage-tracking",
|
|
@@ -139,7 +143,6 @@ const STAGES = Object.freeze({
|
|
|
139
143
|
".template-spec/process/delivery-preflight.md",
|
|
140
144
|
".template-spec/templates/release-note-template.md",
|
|
141
145
|
".template-spec/templates/retro-report-template.md",
|
|
142
|
-
".template-spec/templates/review-bundle-template.yaml",
|
|
143
146
|
],
|
|
144
147
|
scripts: ["scripts/preflight-delivery"],
|
|
145
148
|
skills: [],
|
|
@@ -8,6 +8,7 @@ const { treeHash } = require("../template-hash");
|
|
|
8
8
|
const { targetPath, pathKind, normalizeRelativePath } = require("../filesystem/path-utils");
|
|
9
9
|
const { validateTemplateSnapshot } = require("../validation/snapshot");
|
|
10
10
|
const { validateTemplateMetadata } = require("../validation/metadata");
|
|
11
|
+
const { identityForPaths } = require("../content-identity");
|
|
11
12
|
const { distributionForVariables, isIncludedInstancePath, selectedSkillLock, renderInstanceSkillSupplyChain, renderInstanceDesignSkillFile } = require("./distribution-runtime");
|
|
12
13
|
const { ASSET_PROFILE, assetPaths } = require("./asset-runtime");
|
|
13
14
|
const {
|
|
@@ -143,6 +144,7 @@ function readTargetIdentity(targetDir) {
|
|
|
143
144
|
}
|
|
144
145
|
|
|
145
146
|
function renderTemplateFile(relativePath, content, variables) {
|
|
147
|
+
const skillPreflight = "\n\n专项技能调用前,运行 `scripts/query-lifecycle-context --work-unit <当前工作单元> --check-skills`;多运行时用 `--agent-runtime`,已确认条件用 `--when`。未安装技能先核对结果中的补装计划,在既有任务授权内应用后重验;漂移、冲突和版本不匹配暂停当前调用,不自动覆盖或迁移。\n";
|
|
146
148
|
const distribution = variables.distribution || distributionForVariables(variables, BUNDLED_TEMPLATE_ROOT);
|
|
147
149
|
if (relativePath === "skills-lock.json") return selectedSkillLock(content, distribution);
|
|
148
150
|
if (relativePath === "scripts/lib/skill-supply-chain.mjs" && distribution.mode === "selected") return renderInstanceSkillSupplyChain(content);
|
|
@@ -155,9 +157,9 @@ function renderTemplateFile(relativePath, content, variables) {
|
|
|
155
157
|
}
|
|
156
158
|
if (relativePath === ".template-spec/user-guide/用户手册.md" && distribution.mode === "selected") {
|
|
157
159
|
if (distribution.assetProfile !== ASSET_PROFILE) {
|
|
158
|
-
return `# ${variables.projectName} 用户手册\n\n本仓是 \`project-instance\`,用于 ${variables.businessDomain} 的研发资产。先阅读根 [AGENTS.md](../../AGENTS.md)、[CONTEXT.md](../../CONTEXT.md) 与 [生命周期资产索引](../process/lifecycle-artifact-map.md)。\n\n阶段派发前,由 Agent 运行 \`create-yss-spec skills ensure <skill-id...> --plan\` 核对依赖,再运行 \`--apply\` 安装。旧实例继续沿用既有文件分发范围;增加平台使用 \`create-yss-spec skills runtime add <codex|cursor|pi> --plan/--apply\`。CLI
|
|
160
|
+
return `# ${variables.projectName} 用户手册\n\n本仓是 \`project-instance\`,用于 ${variables.businessDomain} 的研发资产。先阅读根 [AGENTS.md](../../AGENTS.md)、[CONTEXT.md](../../CONTEXT.md) 与 [生命周期资产索引](../process/lifecycle-artifact-map.md)。\n\n阶段派发前,由 Agent 运行 \`create-yss-spec skills ensure <skill-id...> --plan\` 核对依赖,再运行 \`--apply\` 安装。旧实例继续沿用既有文件分发范围;增加平台使用 \`create-yss-spec skills runtime add <codex|cursor|pi> --plan/--apply\`。CLI 快照必须与实例记录的模板提交一致;版本不匹配时先核对匹配的 CLI 或 \`create-yss-spec sync --plan\`,不自动扩展同步范围。\n\n项目校验运行 \`scripts/verify-project-instance\`。\n` + skillPreflight;
|
|
159
161
|
}
|
|
160
|
-
return `# ${variables.projectName} 用户手册\n\n本仓是 \`project-instance\`,用于 ${variables.businessDomain} 的研发资产。先阅读根 [AGENTS.md](../../AGENTS.md)、[CONTEXT.md](../../CONTEXT.md) 与 [生命周期资产索引](../process/lifecycle-artifact-map.md)。\n\n初始化安装分诊与 Plan
|
|
162
|
+
return `# ${variables.projectName} 用户手册\n\n本仓是 \`project-instance\`,用于 ${variables.businessDomain} 的研发资产。先阅读根 [AGENTS.md](../../AGENTS.md)、[CONTEXT.md](../../CONTEXT.md) 与 [生命周期资产索引](../process/lifecycle-artifact-map.md)。\n\n初始化安装分诊与 Plan 入口资产、入口 Skill 与所选 Agent 平台。进入后续阶段前,运行 \`create-yss-spec assets ensure <stage-id> --plan\` 核对文件,再运行 \`--apply\` 原子安装;专项 Skill 使用 \`create-yss-spec skills ensure <skill-id...> --plan/--apply\`,会补齐该 Skill 引用的实例文件。增加平台使用 \`create-yss-spec skills runtime add <codex|cursor|pi> --plan/--apply\`。CLI 快照必须与实例记录的模板提交一致;版本不匹配时先核对匹配的 CLI 或 \`create-yss-spec sync --plan\`,不自动扩展同步范围。\n\n项目校验运行 \`scripts/verify-project-instance\`;实例 CI 应执行该命令和项目实际的构建、测试。\n` + skillPreflight;
|
|
161
163
|
}
|
|
162
164
|
if (distribution.mode === "selected" && relativePath === ".template-spec/design/README.md") {
|
|
163
165
|
return content.replace(/^.*design-system-sync\.yaml.*\n/m, "");
|
|
@@ -188,9 +190,9 @@ function renderTemplateFile(relativePath, content, variables) {
|
|
|
188
190
|
const base = rendered.replace(/## 4\. \`template-source\` 模板维护路由[\s\S]*?(?=## 5\.)/, "")
|
|
189
191
|
.replace(/\| 影响面、\`not-applicable\`、模板维护强度 \|[^\n]*\n/, "| 影响面与 `not-applicable` | `.template-spec/process/harness-process-tailoring.md` |\n");
|
|
190
192
|
const guidance = distribution.assetProfile === ASSET_PROFILE
|
|
191
|
-
? "## 按需阶段资产与 Skill\n\n进入后续生命周期阶段前,运行 `create-yss-spec assets ensure <stage-id> --plan` 查看完整依赖,核对后运行 `--apply`。专项任务根据 .template-spec/agents/yss-skill-registry.yaml 选定 Skill,运行 `create-yss-spec skills ensure <skill-id...> --plan`,核对后运行 `--apply`。缺少阶段资产时先补装,不以缺文件推定门禁不适用。若 CLI
|
|
192
|
-
: "## 按需 Skill\n\n此实例继续沿用原文件分发范围。阶段派发或专项任务开始前,根据 .template-spec/agents/yss-skill-registry.yaml 选定 Skill,运行 `create-yss-spec skills ensure <skill-id...> --plan`,核对后运行 `--apply`。若 CLI
|
|
193
|
-
return `${base}\n${guidance}`;
|
|
193
|
+
? "## 按需阶段资产与 Skill\n\n进入后续生命周期阶段前,运行 `create-yss-spec assets ensure <stage-id> --plan` 查看完整依赖,核对后运行 `--apply`。专项任务根据 .template-spec/agents/yss-skill-registry.yaml 选定 Skill,运行 `create-yss-spec skills ensure <skill-id...> --plan`,核对后运行 `--apply`。缺少阶段资产时先补装,不以缺文件推定门禁不适用。若 CLI 快照与实例模板提交不一致,先核对匹配的 CLI 或 `create-yss-spec sync --plan`;不自动扩展同步范围。\n"
|
|
194
|
+
: "## 按需 Skill\n\n此实例继续沿用原文件分发范围。阶段派发或专项任务开始前,根据 .template-spec/agents/yss-skill-registry.yaml 选定 Skill,运行 `create-yss-spec skills ensure <skill-id...> --plan`,核对后运行 `--apply`。若 CLI 快照与实例模板提交不一致,先核对匹配的 CLI 或 `create-yss-spec sync --plan`;不自动扩展同步范围。\n";
|
|
195
|
+
return `${base}\n${guidance}${skillPreflight}`;
|
|
194
196
|
}
|
|
195
197
|
|
|
196
198
|
if (relativePath === "README.md") {
|
|
@@ -428,11 +430,16 @@ function loadTemplateMetadata(targetDir) {
|
|
|
428
430
|
|
|
429
431
|
function collectManagedFiles(desiredOperations) {
|
|
430
432
|
const managedFiles = {};
|
|
431
|
-
|
|
432
|
-
|
|
433
|
+
const files = desiredOperations.filter((operation) => operation.relativePath !== "README.md" && pathKind(operation.targetPath) === "file");
|
|
434
|
+
// One batched Git identity per repository, recorded alongside the legacy
|
|
435
|
+
// sha256 contentHash so older CLIs keep reading the same metadata.
|
|
436
|
+
const identities = identityForPaths(files.map((operation) => operation.targetPath));
|
|
437
|
+
for (const operation of files) {
|
|
438
|
+
const identity = identities.get(operation.targetPath);
|
|
433
439
|
managedFiles[operation.relativePath] = {
|
|
434
440
|
type: operation.type,
|
|
435
441
|
contentHash: fileHash(operation.targetPath),
|
|
442
|
+
...(identity ? { identity } : {}),
|
|
436
443
|
};
|
|
437
444
|
}
|
|
438
445
|
return managedFiles;
|
|
@@ -483,13 +490,22 @@ function buildNextSyncMetadata(metadata, syncPlan, {
|
|
|
483
490
|
delete nextManagedFiles["README.md"];
|
|
484
491
|
for (const relativePath of syncPlan.alreadyMissing || []) delete nextManagedFiles[relativePath];
|
|
485
492
|
for (const relativePath of syncPlan.pruned || []) delete nextManagedFiles[relativePath];
|
|
493
|
+
const desiredFiles = syncPlan.desiredOperations.filter((operation) => pathKind(operation.targetPath) === "file");
|
|
494
|
+
const identities = identityForPaths(desiredFiles.map((operation) => operation.targetPath));
|
|
486
495
|
for (const operation of syncPlan.desiredOperations) {
|
|
487
496
|
if (pathKind(operation.targetPath) !== "file") continue;
|
|
488
497
|
const currentHash = currentHashes?.[operation.relativePath] ?? fileHash(operation.targetPath);
|
|
489
498
|
if (currentHash === operation.desiredHash || operation.relativePath === "skills-lock.json") {
|
|
499
|
+
// Keep the recorded identity while the content hash is unchanged so a sync
|
|
500
|
+
// with nothing to do stays byte-identical (no churn, no needless backup).
|
|
501
|
+
const previousRecord = metadata.managedFiles?.[operation.relativePath];
|
|
502
|
+
const identity = previousRecord?.contentHash === currentHash && previousRecord.identity
|
|
503
|
+
? previousRecord.identity
|
|
504
|
+
: identities.get(operation.targetPath);
|
|
490
505
|
nextManagedFiles[operation.relativePath] = {
|
|
491
506
|
type: operation.type,
|
|
492
507
|
contentHash: currentHash,
|
|
508
|
+
...(identity ? { identity } : {}),
|
|
493
509
|
};
|
|
494
510
|
}
|
|
495
511
|
}
|
|
@@ -100,6 +100,14 @@ function validateTemplateMetadata(metadata, {
|
|
|
100
100
|
`模板元数据 managedFiles.${relativePath}.generatorVersion 必须是正整数`,
|
|
101
101
|
);
|
|
102
102
|
}
|
|
103
|
+
if (
|
|
104
|
+
record.identity !== undefined &&
|
|
105
|
+
!/^(git-sha1:[0-9a-f]{40}|git-sha256:[0-9a-f]{64}|sha256:[0-9a-f]{64})$/.test(record.identity)
|
|
106
|
+
) {
|
|
107
|
+
throw new Error(
|
|
108
|
+
`模板元数据 managedFiles.${relativePath}.identity 非法`,
|
|
109
|
+
);
|
|
110
|
+
}
|
|
103
111
|
}
|
|
104
112
|
|
|
105
113
|
if (metadata.metadataSchemaVersion === currentSchemaVersion) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"source": "iloveZzz/yss-harness-design-agent",
|
|
4
4
|
"source_type": "git-submodule",
|
|
5
5
|
"source_root": ".agents/skills",
|
|
6
|
-
"source_revision": "
|
|
6
|
+
"source_revision": "79e66e694a378d78f06c63399a494d0a69543ba3",
|
|
7
7
|
"adaptation_ref": ".template-source/agents/strategic-design-skills-integration.md",
|
|
8
8
|
"skills": [
|
|
9
9
|
{
|
|
@@ -3,50 +3,44 @@ name: alibaba-java-code-style
|
|
|
3
3
|
description: 应用阿里巴巴 Java 手册审查或实现 Java 代码;按当前项目框架与数据库基线选择适用规范。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# 阿里巴巴 Java 规范
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
本 Skill 从用户提供的《阿里巴巴 Java 开发手册》1.4.0 提炼适用规范。`mandatory` 违规阻断审查,除非仓库 `AGENTS.md`、安全约束或现有框架约定明确要求不同模式;例外须有依据。`recommended` / `reference` 保留建议等级,不因进入下文检查提要变为强制规则。
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## 工作流
|
|
11
11
|
|
|
12
|
-
1.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
2. Apply mandatory rules first, then use recommended rules to improve maintainability, performance, and readability.
|
|
17
|
-
3. When reviewing, report mandatory violations as findings. Mention recommended violations when they create real risk or are already in the changed area.
|
|
18
|
-
4. When implementing, prefer the repository's existing framework helpers and code generation skills over inventing new local infrastructure.
|
|
19
|
-
5. For auth, payment, encryption, SQL, migrations or public-library changes, check the current contract and actual authorization. Continue an already authorized repair with its required verification; produce a draft or `TODO-HUMAN-REVIEW` only for a real missing decision or approval, and identify that gap.
|
|
12
|
+
1. 按影响面读取对应规范:Java 命名、常量、OOP、集合、并发、控制流和注释读 [Java 编程](references/java-programming.md);异常、日志、测试或安全读 [可靠性与安全](references/reliability-test-security.md);MySQL、ORM/MyBatis、Maven、分层、服务器/JVM 或设计资产读 [工程与数据库](references/database-engineering-design.md)。
|
|
13
|
+
2. 先执行适用 mandatory,再按实际风险采用 recommended;审查报告保留规则等级。建议仅在产生真实风险或处于本次范围时报告。
|
|
14
|
+
3. 实现优先复用工程框架与已有生成能力,不新增重复基础设施。
|
|
15
|
+
4. 认证、付款、加密、SQL、迁移或公共库变更先核验当前合同及实际授权。已授权修复继续完成适用验证;仅真实缺决定或批准时形成草案 / `TODO-HUMAN-REVIEW`,并说明缺口。
|
|
20
16
|
|
|
21
|
-
##
|
|
17
|
+
## 适用原则
|
|
22
18
|
|
|
23
19
|
- 先消费 architecture_identity 与工程 Java/数据库基线。MVC 分层按 `.template-spec/agents/backend-architecture-profiles.md`;MySQL 专属方言规则仅对批准的 MySQL 存储生效,不能要求 H2 骨架引入 MySQL 驱动。YSS 包装、命名及处理器差异逐项记录基线例外,安全、权限、敏感信息与 SQL 参数绑定不得豁免。
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
##
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
Based on the user-provided PDF: `阿里巴巴 Java 开发手册` version 1.4.0, Alibaba Group technical team, update date 2018-05-20.
|
|
20
|
+
- 名称使用清晰英文标识并遵循当前 Java 分层约定。
|
|
21
|
+
- 核验 null、相等、包装类型比较、集合和并发的运行时边界,不能以编译通过代替行为正确。
|
|
22
|
+
- 日志有诊断用途,并控制 CPU、磁盘和告警成本。
|
|
23
|
+
- 单元测试自动、独立、可重复,围绕公开行为验证。
|
|
24
|
+
- SQL 使用参数绑定与显式 ORM 映射,不依赖字符串拼接。
|
|
25
|
+
- 按已登记架构保持职责:Web/controller 校验和适配,service/manager 编排业务,DAO/repository 持有持久化。
|
|
26
|
+
|
|
27
|
+
## 检查提要
|
|
28
|
+
|
|
29
|
+
- 命名与格式:camel case、常量、包名、括号、间距、行长、UTF-8/Unix 换行;类型后缀和 boolean 命名符合适用规范。
|
|
30
|
+
- 对象语义:`equals/hashCode`、包装类型比较、`toString`、`serialVersionUID`、构造器、可见性和访问器。
|
|
31
|
+
- 集合:`subList`、`Arrays.asList`、`toArray`、foreach 删除、null map 和 comparator 的边界。
|
|
32
|
+
- 并发:命名线程池、生产 `Executors` 工厂限制、锁顺序、日期格式和定时任务。
|
|
33
|
+
- 异常:正确分层、上下文与堆栈、避免重复日志、不吞异常、不用于普通控制流。
|
|
34
|
+
- 测试:断言、外部依赖隔离、`src/test/java` 与边界/正确/设计/错误场景。
|
|
35
|
+
- 安全:按真实输入与认证方式核验校验、授权、转义、CSRF、限流和 SQL 参数绑定,不能泛用某项检查豁免其他风险。
|
|
36
|
+
- MySQL:仅适用存储核验显式字段、映射、索引、时间戳与 `#{}` 绑定,以及危险级联、存储过程、`select *` 和分页边界。
|
|
37
|
+
|
|
38
|
+
## 来源
|
|
39
|
+
|
|
40
|
+
用户提供的《阿里巴巴 Java 开发手册》1.4.0,阿里巴巴集团技术团队,更新于 2018-05-20;具体条款等级保留在对应 references 中。
|
|
47
41
|
|
|
48
42
|
## 阶段 7 执行结果
|
|
49
43
|
|
|
50
44
|
- 消费当前合同版本、changed files 和 verification results,只审查合同允许范围。
|
|
51
|
-
-
|
|
45
|
+
- 适用 mandatory violation 返回 `violation`,附文件/位置/规则证据;高风险项仅在当前合同确有未满足人工决定或批准要求时保留 `TODO-HUMAN-REVIEW`。
|
|
52
46
|
- 按统一 `YSS Skill Execution Result` 返回审查证据、偏离和新增安全/SQL/公共 API 影响,不得仅输出“符合规范”。
|
|
@@ -25,10 +25,10 @@ When the current repository contains `yss-project.yaml`, these rules override th
|
|
|
25
25
|
node .agents/skills/archify/scripts/yss-safe-deliver.mjs <type> docs/architecture/diagrams/<diagram-id>/<diagram-id>.archify.json docs/architecture/diagrams/<diagram-id>/<diagram-id>.html --quality showcase
|
|
26
26
|
|
|
27
27
|
# template-source
|
|
28
|
-
node .agents/skills/archify/scripts/yss-safe-deliver.mjs <type>
|
|
28
|
+
node .agents/skills/archify/scripts/yss-safe-deliver.mjs <type> "$(scripts/maintenance-path diagrams/<diagram-id>/<diagram-id>.archify.json)" "$(scripts/maintenance-path diagrams/<diagram-id>/<diagram-id>.html)" --quality showcase
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
- For a `project-instance`, stable source and output must be the matching pair `docs/architecture/diagrams/<diagram-id>/<diagram-id>.archify.json` and `<diagram-id>.html`. For a `template-source`, use
|
|
31
|
+
- For a `project-instance`, stable source and output must be the matching pair `docs/architecture/diagrams/<diagram-id>/<diagram-id>.archify.json` and `<diagram-id>.html`. For a `template-source`, use the current workspace's external `maintenance:diagrams/<diagram-id>/` (resolve with `scripts/maintenance-path`). The wrapper writes `<diagram-id>.receipt.json` only after successful delivery. Temporary exploration may target the operating-system temporary directory.
|
|
32
32
|
- The safe wrapper rejects `--open`, non-HTML targets, symlink escapes, unrelated existing files, and stable source/output pairs outside those roots. Do not bypass it with the raw `deliver` or `preview` commands in a YSS repository.
|
|
33
33
|
|
|
34
34
|
## Fast authoring path
|
|
@@ -4,7 +4,7 @@ import { spawnSync } from 'node:child_process';
|
|
|
4
4
|
import fs from 'node:fs';
|
|
5
5
|
import os from 'node:os';
|
|
6
6
|
import path from 'node:path';
|
|
7
|
-
import { fileURLToPath } from 'node:url';
|
|
7
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
8
8
|
|
|
9
9
|
const scriptDirectory = path.dirname(fileURLToPath(import.meta.url));
|
|
10
10
|
const skillRoot = path.resolve(scriptDirectory, '..');
|
|
@@ -93,11 +93,12 @@ function assertReplaceableReceipt(receipt) {
|
|
|
93
93
|
if (parsed?.yssArchifyReceipt !== true) fail(`拒绝覆盖非 YSS Archify receipt: ${receipt}`);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
function stableContract(projectRoot, mode, input, output) {
|
|
96
|
+
async function stableContract(projectRoot, mode, input, output) {
|
|
97
97
|
const relativeBase = mode === 'project-instance'
|
|
98
98
|
? 'docs/architecture/diagrams'
|
|
99
|
-
: '
|
|
100
|
-
const base = path.join(projectRoot, relativeBase)
|
|
99
|
+
: 'maintenance:diagrams';
|
|
100
|
+
const base = mode === 'project-instance' ? path.join(projectRoot, relativeBase)
|
|
101
|
+
: (await import(pathToFileURL(path.join(projectRoot, 'scripts/lib/maintenance-storage.mjs')).href)).resolveMaintenanceOutput(relativeBase, { root: projectRoot });
|
|
101
102
|
const relativeOutput = path.relative(base, output);
|
|
102
103
|
const segments = relativeOutput.split(path.sep);
|
|
103
104
|
if (segments.length !== 2 || !diagramIdPattern.test(segments[0])) {
|
|
@@ -139,7 +140,10 @@ const temporaryBase = fs.realpathSync(os.tmpdir());
|
|
|
139
140
|
// parent symlink resolves into the OS temporary directory. Otherwise the
|
|
140
141
|
// temporary-delivery exception could be used to escape the stable output root.
|
|
141
142
|
const requestedWithinProject = requestedProjectRoot !== null;
|
|
142
|
-
const
|
|
143
|
+
const projectMode = projectRoot ? repositoryMode(projectRoot) : null;
|
|
144
|
+
const templateDiagramBase = projectMode === 'template-source'
|
|
145
|
+
? (await import(pathToFileURL(path.join(projectRoot, 'scripts/lib/maintenance-storage.mjs')).href)).resolveMaintenanceOutput('maintenance:diagrams', { root: projectRoot }) : null;
|
|
146
|
+
const isTemporary = !requestedWithinProject && isWithin(temporaryBase, output) && !(templateDiagramBase && isWithin(templateDiagramBase, output));
|
|
143
147
|
let mode = null;
|
|
144
148
|
let receipt;
|
|
145
149
|
let allowedBase;
|
|
@@ -150,7 +154,7 @@ if (isTemporary) {
|
|
|
150
154
|
} else {
|
|
151
155
|
if (!projectRoot) fail('稳定交付必须从包含 yss-project.yaml 的仓库内运行');
|
|
152
156
|
mode = repositoryMode(projectRoot);
|
|
153
|
-
const contract = stableContract(projectRoot, mode, input, output);
|
|
157
|
+
const contract = await stableContract(projectRoot, mode, input, output);
|
|
154
158
|
allowedBase = contract.base;
|
|
155
159
|
receipt = contract.receipt;
|
|
156
160
|
}
|
|
@@ -4,6 +4,7 @@ import fs from 'node:fs';
|
|
|
4
4
|
import os from 'node:os';
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
import test from 'node:test';
|
|
7
|
+
import { resolveMaintenanceOutput } from '../../../../scripts/lib/maintenance-storage.mjs';
|
|
7
8
|
import { fileURLToPath } from 'node:url';
|
|
8
9
|
|
|
9
10
|
const skillRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
@@ -12,6 +13,12 @@ const example = path.join(skillRoot, 'examples', 'web-app.architecture.json');
|
|
|
12
13
|
|
|
13
14
|
function repository(mode = 'project-instance') {
|
|
14
15
|
const root = fs.mkdtempSync(path.join(os.tmpdir(), 'yss-archify-safe-'));
|
|
16
|
+
if (mode === 'template-source') {
|
|
17
|
+
fs.mkdirSync(path.join(root, 'scripts/lib'), { recursive: true });
|
|
18
|
+
for (const name of ['maintenance-storage.mjs', 'runtime-store.mjs', 'repository-mode.mjs']) fs.copyFileSync(path.resolve(skillRoot, '../../../scripts/lib', name), path.join(root, 'scripts/lib', name));
|
|
19
|
+
fs.mkdirSync(path.join(root, 'scripts/vendor'), { recursive: true });
|
|
20
|
+
fs.copyFileSync(path.resolve(skillRoot, '../../../scripts/vendor/yaml.mjs'), path.join(root, 'scripts/vendor/yaml.mjs'));
|
|
21
|
+
}
|
|
15
22
|
fs.writeFileSync(path.join(root, 'yss-project.yaml'), `schema_version: 1\nrepository_mode: ${mode}\n`);
|
|
16
23
|
return root;
|
|
17
24
|
}
|
|
@@ -104,9 +111,9 @@ test('delivers a paired project artifact and an auditable receipt', () => {
|
|
|
104
111
|
assert.equal(receipt.archify.validation.warnings, 0);
|
|
105
112
|
});
|
|
106
113
|
|
|
107
|
-
test('uses the
|
|
114
|
+
test('uses the external workspace maintenance root for stable diagrams', () => {
|
|
108
115
|
const root = repository('template-source');
|
|
109
|
-
const directory =
|
|
116
|
+
const directory = resolveMaintenanceOutput('maintenance:diagrams/workflow-map', { root });
|
|
110
117
|
fs.mkdirSync(directory, { recursive: true });
|
|
111
118
|
const input = path.join(directory, 'workflow-map.archify.json');
|
|
112
119
|
const output = path.join(directory, 'workflow-map.html');
|
|
@@ -3,7 +3,7 @@ name: code-review
|
|
|
3
3
|
description: 审查分支、PR、固定候选或工作树改动,按仓库规范、Spec 及适用 UI 还原要求报告有证据的缺陷。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Review
|
|
6
|
+
Review a pinned candidate: all applicable axes initially, then affected conclusions and dependencies:
|
|
7
7
|
|
|
8
8
|
- **Standards** — does the code conform to this repo's documented coding standards **and**, for YSS slices, the specialist check inputs compiled in [yss-review-standards.md](references/yss-review-standards.md)?
|
|
9
9
|
- **Spec** — does the code faithfully implement the originating issue / spec?
|
|
@@ -11,13 +11,13 @@ Review of a pinned candidate against a fixed point on two core axes, plus UI fid
|
|
|
11
11
|
|
|
12
12
|
普通功能默认由一名与实现者独立的审查者完成 Standards、Spec 和适用的 UI fidelity 检查,分别报告结论。只有专业能力缺口、结论冲突、明确外部制度或用户指定时,才拆成多个审查者;多个无依赖审查可以并行。检查轴不等于会签人数,不能要求用户为每个轴重复确认。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
角色表编译 `review_context` / `skill_source.review_skills`(只读);见协作规则,不授予实现权限。
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
If `.template-spec/agents/issue-tracker.md` is missing, tell the user to run `/setup-matt-pocock-skills`; do not invoke another user-invoked skill yourself.
|
|
17
17
|
|
|
18
18
|
## 文档写作
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
撰写审查报告时,按 `lifecycle-document-output` 条件调用 `i-have-adhd`,读取 `.template-spec/process/document-writing.md` 的共用写法及审查指引;保留各审查轴的 findings、严重性、定位、证据及原裁决,不因压缩表达合并或降级。作用域仅限当前产物,派发时传递条件及引用。
|
|
21
21
|
|
|
22
22
|
## Process
|
|
23
23
|
|
|
@@ -38,27 +38,35 @@ Look for the originating spec, in this order:
|
|
|
38
38
|
|
|
39
39
|
Compile sources **before** review. For YSS implementation candidates follow [yss-review-standards.md](references/yss-review-standards.md): run machine checks that exist in the implementation repo; then collect repo docs (`CODING_STANDARDS.md` / `CONTRIBUTING.md` if present), every Slice `required_skills` skill file, the impact-conditioned specialist inputs (`alibaba-java-code-style`, `yss-ui`, `yss-domain`, …), and `.template-spec/templates/review-report-template.md`. Missing applicable coverage is `missing_evidence`, not a pass.
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
Resolve backend roots from the registered project and Slice scope; exclude frontend, vendor, unrelated submodules and unregistered roots. Assess both `yss-repository` and `yss-mybatis` for every backend candidate, including impact, selected Profile and current component source index per the standards reference. Without persistence impact, record concrete `not-applicable` reasons for both.
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
Anything in the repo that documents how code should be written, such as `CODING_STANDARDS.md` or `CONTRIBUTING.md`, remains a source. It does **not** replace YSS or Alibaba specialist inputs.
|
|
43
|
+
Repo coding documents remain sources alongside mandatory YSS / Alibaba inputs.
|
|
46
44
|
|
|
47
45
|
Standards 检查代码 diff 时读取 [Fowler smell baseline](references/smell-baseline.md)。仓库明确标准优先;smell 只作 judgement call,不升级为硬违规,机器已覆盖项不重复判断。
|
|
48
46
|
|
|
49
47
|
### 4. Complete each applicable review axis
|
|
50
48
|
|
|
51
|
-
|
|
49
|
+
默认由独立 Reviewer 完成下列两份检查提纲,按轴保留结论,不派发额外 subagent。需要多专业参与时,按角色表和协作协议派发对应提纲;只增加缺少的能力,不默认启动两个额外 Agent。下面的 sub-agent prompts 同样是单 Reviewer 的检查清单。
|
|
52
50
|
|
|
53
51
|
执行 Standards / Spec 轴时读取 [逐轴检查提纲](references/review-axis-checklists.md);单 Reviewer 同样使用它。实际派发时传入相同候选、证据和完整 smell baseline;Spec 缺失按提纲明确报告。
|
|
54
52
|
|
|
55
|
-
|
|
53
|
+
首轮完整覆盖;修复后依差异、受影响结论 / 行为及依赖定向复验并绑定当前候选,未受影响项有依据地复用。摘要、UI 或 `new_impacts` 不触发全轴兜底,未知先调查。历史两轮同样适用;细则见 [finding 闭环](references/yss-review-standards.md)。
|
|
56
54
|
|
|
57
55
|
### 5. Aggregate
|
|
58
56
|
|
|
59
57
|
仅任务包携带 `review_round`、明确采用历史冻结候选协议时,读取 [两轮收敛合同](references/legacy-convergence.md)。普通审查不因此新增候选冻结或额外审查者。
|
|
60
58
|
|
|
61
|
-
|
|
59
|
+
#### 报告与阻断
|
|
60
|
+
|
|
61
|
+
按 `## Standards`、`## Spec` 分别呈现原报告或等义整理后的结论;UI 影响另列 `## UI fidelity`。专项表填写在 `.template-spec/templates/review-report-template.md` 的 Standards 证据中,不增加第四轴,也不合并或跨轴重排 findings。适用专项行空白、遗漏 `required_skills` 或 mandatory violation 未关闭时,结果为 `blocked`,不能写 `completed`。
|
|
62
|
+
|
|
63
|
+
#### 修复后复审
|
|
64
|
+
|
|
65
|
+
Reviewer 保持只读,将 `violation`、机器检查失败和适用行空白交回原合同路径的实施者。修复后比较差异、重新捕获候选,复审受影响结论与依赖,并明确重新绑定未受影响的证据;不在审查会话中写实现来关闭 finding。
|
|
66
|
+
|
|
67
|
+
#### 合同失效与延期
|
|
68
|
+
|
|
69
|
+
`drift`、`new_impacts` 或 `required_skills` 不匹配时,将合同标为 `stale` 并回到 实现合同编译器 调查受影响要求;停止使用旧合同实现,不默认全轴重审。`not-applicable` 只用于未触发影响。mandatory 门禁不能豁免;按原合同修复,或在原流程允许延期时提供完整 `seam-deferred` 记录。
|
|
62
70
|
|
|
63
71
|
For Worktree mode, recapture the candidate digest after all applicable checks finish. If it differs from `candidate_digest`, mark the affected reports as reviewing a **stale candidate** and return `blocked`; the caller may start a new review against a new capture, but this invocation must not aggregate findings from different bytes. Recheck the same digest again at the completion/checkpoint boundary.
|
|
64
72
|
|
|
@@ -28,6 +28,6 @@ commit_list_command: <command>
|
|
|
28
28
|
|
|
29
29
|
For a Committed candidate, resolve `HEAD` to an immutable commit and tree before review. Its manifest must include `merge_base`, `tracked_diff_command` and `commit_list_command`. For a Worktree candidate, the manifest must additionally include `untracked_inventory_command`, `untracked_diff_command` and the exact `untracked_files` inventory.
|
|
30
30
|
|
|
31
|
-
For a Worktree candidate, capture the tracked binary diff and every untracked file's bytes once into an immutable snapshot, compute `candidate_digest`, and make that **captured candidate** available to the assigned reviewer(s). The following is normative, not illustrative: use the `yss-worktree-candidate-v1` byte stream. Start with ASCII `YSS-WORKTREE-CANDIDATE-V1` followed by one NUL byte. Append one tracked record: byte `0x54`, unsigned 64-bit big-endian binary-diff byte length, then the exact stdout bytes from `git diff --no-ext-diff --binary --full-index <merge-base>`. Then append one untracked record for each NUL-delimited raw path from `git ls-files -z --others --exclude-standard`, sorted bytewise by the raw path: byte `0x55`, unsigned 64-bit big-endian path length, raw path bytes, unsigned 32-bit big-endian `lstat` mode, entry-kind byte (`0x52` regular or `0x4c` symlink), unsigned 64-bit big-endian content length, then raw regular-file bytes or raw symlink-target bytes. Other entry kinds block capture. This is the sole length-prefixed framing and bytewise path order for the digest. SHA-256 is calculated over exactly this stream. New captures use a previously nonexistent directory
|
|
31
|
+
For a Worktree candidate, capture the tracked binary diff and every untracked file's bytes once into an immutable snapshot, compute `candidate_digest`, and make that **captured candidate** available to the assigned reviewer(s). The following is normative, not illustrative: use the `yss-worktree-candidate-v1` byte stream. Start with ASCII `YSS-WORKTREE-CANDIDATE-V1` followed by one NUL byte. Append one tracked record: byte `0x54`, unsigned 64-bit big-endian binary-diff byte length, then the exact stdout bytes from `git diff --no-ext-diff --binary --full-index <merge-base>`. Then append one untracked record for each NUL-delimited raw path from `git ls-files -z --others --exclude-standard`, sorted bytewise by the raw path: byte `0x55`, unsigned 64-bit big-endian path length, raw path bytes, unsigned 32-bit big-endian `lstat` mode, entry-kind byte (`0x52` regular or `0x4c` symlink), unsigned 64-bit big-endian content length, then raw regular-file bytes or raw symlink-target bytes. Other entry kinds block capture. This is the sole length-prefixed framing and bytewise path order for the digest. SHA-256 is calculated over exactly this stream. New template-maintenance captures use a previously nonexistent external `maintenance:candidates/<id>/` directory, resolved through the workspace maintenance storage, land atomically, and store exactly `candidate-manifest.yaml`, `candidate.bin` and `tracked.diff`; `candidate.bin` already contains every untracked byte, so do not duplicate hundreds of `untracked-content/000xxx` files. New template-maintenance captures reject explicit exclusions: the historical archive-path allowlist is retired, and maintenance material lives outside the repository. Historical schema v1 exclusion lists remain read-only compatible. Candidate manifest schema v2 uses `reference_base: bundle`, the workspace identity, and package-relative stream/diff references. The original candidate byte stream and digest remain unchanged; schema v1 remains read-only compatible. Project-instance and Slice candidates keep their registered repository scope and existing path permissions; the maintenance capture CLI does not grant external paths to them. Every assigned reviewer must consume the captured stream and must not independently treat a live worktree as the reviewed candidate.
|
|
32
32
|
|
|
33
33
|
Before going further, confirm the fixed point and merge-base resolve. A committed candidate must have a non-empty committed diff. A Worktree candidate is non-empty when either its tracked diff or untracked inventory is non-empty. A bad ref, missing candidate part or empty candidate should fail here — not during professional review. Do not silently downgrade Worktree review to `HEAD`-only review.
|
|
@@ -2,4 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
仅在入口所列条件命中时读取本文件。Markdown 链接相对本文件;行内 references/assets/schemas 路径相对 Skill 根目录。仓库脚本与 pnpm 命令从当前登记的项目根目录执行。
|
|
4
4
|
|
|
5
|
-
For template-maintenance task packages carrying `review_round`, preserve the frozen scope and apply the two-round convergence contract. A hard requirement added during review must cite a rule that already applied when the candidate was frozen; otherwise report it as `judgement-call` for the backlog. Round 1
|
|
5
|
+
For template-maintenance task packages carrying `review_round`, preserve the frozen scope and apply the two-round convergence contract. A hard requirement added during review must cite a rule that already applied when the candidate was frozen; otherwise report it as `judgement-call` for the backlog. First review covers all applicable checks. After Round 1 repairs, compare the old and new candidates, identify affected conclusions, behavior and dependencies, rereview only that scope, and bind every consumed conclusion to the new digest. Candidate byte changes invalidate the old candidate binding, not every underlying conclusion; reuse requires readable comparison evidence showing unchanged conditions, basis and dependencies. UI impact, `new_impacts` or unknown impact never selects all axes by default or as a fallback; investigate unknown impact before selecting the rereview scope.
|
|
6
|
+
|
|
7
|
+
For this explicitly selected legacy contract, if Round 2 still has an open `violation`, `drift` or `new_impacts`, the existing evaluator returns `needs-human`; do not silently start Round 3 or rewrite historical states. This compatibility limit is not enabled for ordinary review. Return the unresolved findings and readable evidence to the orchestrator, which separates professional wait, repair / rerouting and missing real decisions, and continues independent authorized work. A new user request still requires a real missing decision or authorization and reviewable assets. No prior approval or report is rewritten.
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
仅在入口所列条件命中时读取本文件。Markdown 链接相对本文件;行内 references/assets/schemas 路径相对 Skill 根目录。仓库脚本与 pnpm 命令从当前登记的项目根目录执行。
|
|
4
4
|
|
|
5
|
+
首轮完整覆盖每个适用轴。复审任务额外传入旧 / 新候选差异、受影响结论与行为、直接 / 传递依赖和待复验清单;下列提纲按该清单使用,未受影响结论保留比较证据并绑定当前候选。摘要变化、UI 或 `new_impacts` 不自动选择全部提纲;未知影响先调查。
|
|
6
|
+
|
|
5
7
|
**Standards sub-agent prompt** — include:
|
|
6
8
|
|
|
7
9
|
- The full candidate manifest, captured candidate, `candidate_digest`, diff/inventory commands and commit list. For Worktree candidates, explicitly include every untracked file.
|
|
@@ -55,8 +55,10 @@ YSS 页面模块约定(YTable、YFormily、页面骨架等)走 Standards,
|
|
|
55
55
|
|
|
56
56
|
| 类型 | 动作 |
|
|
57
57
|
|---|---|
|
|
58
|
-
| `violation`、机器检查失败、适用行空白、`missing_evidence` |
|
|
59
|
-
| `drift`、`new_impacts`、`required_skills` 与真实影响不一致 | 合同标 `stale
|
|
58
|
+
| `violation`、机器检查失败、适用行空白、`missing_evidence` | 实现者在**原合同允许路径**内修复;比较差异及受影响结论、行为和依赖,重新捕获并定向复审 / 验证,未受影响项有依据地复用并绑定当前候选 |
|
|
59
|
+
| `drift`、`new_impacts`、`required_skills` 与真实影响不一致 | 合同标 `stale`,先调查实际变化及依赖,再回 实现合同编译器 或更早生命周期阶段更新受影响合同;禁止在旧合同上继续编码,不默认全轴复审 |
|
|
60
|
+
|
|
61
|
+
首轮仍完整覆盖全部适用 Standards、Spec 和条件 UI fidelity。候选摘要变化、UI 影响或未知影响不构成全轴复审的默认或兜底;未知项先调查并阻断其依赖结论。复用证据必须可读,确认原检查条件、依据与依赖未变;当前完成结果重新绑定候选、合同和实际验证,不修改历史报告。
|
|
60
62
|
|
|
61
63
|
`not-applicable` 仅当影响面未命中。命中后的 mandatory 不得豁免;只允许修复,或写完整 `seam-deferred`(风险、责任人、后续 Ticket、验证计划、目标版本或发布日期)。禁止为日常 Alibaba / YSS 新增生物人豁免门禁;安全 / 公共 API 仍走既有 `TODO-HUMAN-REVIEW` 与生物人门禁。
|
|
62
64
|
|
|
@@ -1,94 +1,52 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: competitive-intelligence
|
|
3
|
-
description:
|
|
3
|
+
description: "执行竞品、市场定位、定价、功能差距与用户口碑调研;复用现有模板输出竞品功能矩阵和深度分析报告,向 Plan、Spec 与产品策略提供证据。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Competitive Intelligence
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
本项目请求的上游来源:`anthropics/knowledge-work-plugins`,`sales/skills/competitive-intelligence`。保留 YSS 适配;上游更新不能直接覆盖当前合同。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
竞品或市场事实影响 Plan、Spec 范围、定位、差异化、定价假设或路线取舍时使用本技能。`yss-research` 是统一入口和研究证据包所有者,本技能负责专项采集、比较与分析并回传引用结果。直接调用本技能时也按 `yss-research` 的 profile、模式和证据合同组织结果。
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
文档输出按 `lifecycle-document-output` 条件调用 `i-have-adhd`,读取 `.template-spec/process/document-writing.md`;只作用于当前产物。正文用简体中文,产品名、来源 URL、API 与 metadata 保持原样。
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
- Separate facts, evidence, and inference. Do not present strategy guesses as verified competitor intent.
|
|
16
|
-
- Prefer primary or near-primary sources: official product pages, docs, pricing pages, changelogs, release notes, filings, case studies, status pages, marketplace listings, reputable analyst reports, and dated customer reviews.
|
|
17
|
-
- Record dates for time-sensitive claims. Pricing, packaging, roadmap, customer logos, and feature availability can change quickly.
|
|
18
|
-
- Persistent project outputs should use Chinese body text by default. Keep competitor names, product names, URLs, API names, and quoted identifiers unchanged.
|
|
19
|
-
- Do not bypass paywalls, scrape private systems, or use confidential information. Public evidence only unless the user explicitly provides internal material.
|
|
14
|
+
## 模式与产物
|
|
20
15
|
|
|
21
|
-
|
|
16
|
+
读取 `.agents/skills/yss-research/references/competitive-analysis.md`,遵守以下输出选择:
|
|
22
17
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
- Official sources for product capabilities and pricing.
|
|
30
|
-
- Documentation and changelogs for depth and recency.
|
|
31
|
-
- Reviews, community posts, app marketplaces, and job posts for adoption and pain signals.
|
|
32
|
-
- Analyst, media, or public filings for market context when relevant.
|
|
33
|
-
3. Capture evidence with source links and dates:
|
|
34
|
-
- Feature / capability evidence.
|
|
35
|
-
- Pricing / packaging evidence.
|
|
36
|
-
- UX / onboarding evidence.
|
|
37
|
-
- Integration / ecosystem evidence.
|
|
38
|
-
- Customer segment and positioning evidence.
|
|
39
|
-
- Complaints, workarounds, or unmet needs.
|
|
40
|
-
4. Synthesize:
|
|
41
|
-
- Competitor positioning.
|
|
42
|
-
- Table-stakes capabilities.
|
|
43
|
-
- Differentiators and defensibility.
|
|
44
|
-
- Gaps and underserved jobs-to-be-done.
|
|
45
|
-
- Risks if we copy the competitor too closely.
|
|
46
|
-
- Product opportunities for Spec or roadmap.
|
|
47
|
-
5. Hand off to lifecycle assets:
|
|
48
|
-
- Update Plan findings in `docs/.scratch/<feature>/plan/`.
|
|
49
|
-
- Create or update a competitor matrix in `docs/.scratch/<feature>/plan/reports/`.
|
|
50
|
-
- Return stable user, pain, MVP, non-goal and success criteria to the current lifecycle/strategic owner for its native Plan and Spec work units. Compatibility entries remain explicit-user-only.
|
|
51
|
-
- Record uncertain claims as assumptions, not requirements.
|
|
18
|
+
| 请求 | 模式 | 默认输出 |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| 普通竞品探索 | `quick` | 聊天简报+精简功能矩阵,标明未审计 |
|
|
21
|
+
| 深度、严格、可复现或可审计研究 | `evidence-audited` | 完整矩阵+深度报告+研究双文件 |
|
|
22
|
+
| 明确只要矩阵或报告 | 按研究深度与用途确定 | 只输出指定阅读材料;审计模式保留研究双文件 |
|
|
23
|
+
| 正式生命周期批准输入 | `evidence-audited` | 指定阅读材料+可绑定证据包 |
|
|
52
24
|
|
|
53
|
-
|
|
25
|
+
不因选择单一产物而降级审计,也不把普通探索自动升级。竞品策略使用 `strategy-evidence`;技术能力、框架和协议事实按 `technical-evidence` 的一手来源要求审计。
|
|
54
26
|
|
|
55
|
-
|
|
27
|
+
完整矩阵使用 `.template-spec/plan/templates/competitive-matrix-template.md`,报告使用 `.template-spec/plan/templates/competitive-analysis-template.md`。审计模式在同一目录保留 `<slug>-research-brief.md`、`<slug>-evidence.yaml` 和选定的 `<slug>-competitive-matrix.md` / `<slug>-competitive-analysis.md`。报告是附属阅读材料,不替代研究简报。
|
|
56
28
|
|
|
57
|
-
|
|
58
|
-
## 竞品情报简报
|
|
29
|
+
## 执行
|
|
59
30
|
|
|
60
|
-
|
|
61
|
-
|
|
31
|
+
1. 明确研究要支持的决定、竞品 / 替代方案、用户、能力边界、地区、版本 / 套餐、截至日期和问题;优先消费用户提供或已登记材料,记录排除与访问失败。
|
|
32
|
+
2. 核验当前公开资料:产品与定价页、官方文档、更新日志、第一方案例、备案 / 披露和可追溯数据。口碑、采用与痛点可用带日期的评论、社区、市场记录和可检查方法的行业报告,保留来源类别、抽样及独立性限制。
|
|
33
|
+
3. 将事实、来源、观察和 Claim 回传统一证据台账,采集功能、定价 / 套餐、流程、集成、目标用户、定位、投诉与变通方案,寻找反向信号。
|
|
34
|
+
4. 审计模式在 `competitive_analysis` 中登记比较范围、竞品、能力和每个竞品 × 能力结果;矩阵及报告消费同一组结果。`supported / partial / absent / unknown` 分开表达,未查到资料写未知;部分支持须写限制,明确不支持须有适用范围内的已审计依据。
|
|
35
|
+
5. 审计模式从结构化结果渲染功能比较区,区外补充定位、流程、优势、风险、机会及 MVP 建议;`quick` 在聊天中综合简报与精简矩阵。结论引用 Claim / 来源,推断标明依据;来源冲突时保留冲突和置信度,不猜竞品意图。
|
|
36
|
+
6. 审计模式执行研究包校验并交回 `yss-research`;`quick` 回传未审计结果。交接保留事实及审计状态、反向信号、缺口与补证计划、候选术语、产品机会、MVP / 非目标及成功标准建议、下游所有者。由接收者核验后用于其原生工作单元。
|
|
62
37
|
|
|
63
|
-
|
|
64
|
-
- 竞品 / 替代方案:<list>
|
|
65
|
-
- 用户 / 市场:<scope>
|
|
66
|
-
- 时间范围:<date>
|
|
38
|
+
审计模式从仓库根运行渲染与校验:
|
|
67
39
|
|
|
68
|
-
|
|
69
|
-
- <
|
|
70
|
-
|
|
71
|
-
### 证据表
|
|
72
|
-
| 结论 | 证据 | 来源 | 日期 | 置信度 |
|
|
73
|
-
|---|---|---|---|---|
|
|
74
|
-
|
|
75
|
-
### 竞品矩阵
|
|
76
|
-
| 维度 | 竞品 A | 竞品 B | 我们的机会 |
|
|
77
|
-
|---|---|---|---|
|
|
78
|
-
|
|
79
|
-
### Spec 输入
|
|
80
|
-
- 用户 / 痛点:
|
|
81
|
-
- MVP 建议:
|
|
82
|
-
- 非目标范围:
|
|
83
|
-
- 验收或验证建议:
|
|
84
|
-
|
|
85
|
-
### 风险与待验证假设
|
|
86
|
-
- <assumption>
|
|
40
|
+
```bash
|
|
41
|
+
node .agents/skills/yss-research/scripts/render-competitive-outputs.mjs <slug>-evidence.yaml
|
|
42
|
+
node .agents/skills/yss-research/scripts/validate-research-package.mjs <slug>-research-brief.md <slug>-evidence.yaml
|
|
87
43
|
```
|
|
88
44
|
|
|
89
|
-
##
|
|
45
|
+
## 分析边界
|
|
90
46
|
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
47
|
+
- 比较结论记录产品、版本、套餐、地区与日期;未知范围明确写 `unknown`,不能默认为所有版本适用。
|
|
48
|
+
- 默认不生成数字排名。用户明确要求评分时先确认量表、维度 / 权重和依据;未知记不评分,不能计低分或零分。
|
|
49
|
+
- 功能对齐是证据信号,产品机会与优先级属于建议,不直接成为需求。候选术语回交 `domain-modeling`,Plan / Spec 由对应所有者更新;不写 `CONTEXT.md`、Spec、批准或 Ticket 状态。
|
|
50
|
+
- 使用公开证据或用户明确提供的内部材料;不绕过付费墙或访问私有系统,不将竞品专有内容、文本、截图或工作流直接复制到项目产物。
|
|
51
|
+
- 当前来源访问不可用时说明边界,仅根据可访问的固定资料作限定结论,或返回研究计划与假设;不声称已核验当前竞品事实。
|
|
52
|
+
- 结构校验只证明格式、引用和跨文件一致性,来源是否支持结论与推断是否合理仍需研究审核。
|