create-yss-spec 3.4.7 → 3.4.9
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/README.md +1 -1
- package/package.json +1 -1
- package/template/.agents/skills/.strategic-design-skills-manifest.json +5 -5
- package/template/.agents/skills/alibaba-java-code-style/SKILL.md +2 -2
- package/template/.agents/skills/archify/SKILL.md +2 -19
- package/template/.agents/skills/archify/references/geometry-and-routing.md +20 -0
- package/template/.agents/skills/code-review/SKILL.md +3 -33
- package/template/.agents/skills/code-review/references/candidate-capture.md +33 -0
- package/template/.agents/skills/code-review/references/yss-review-standards.md +20 -0
- package/template/.agents/skills/codebase-design/SKILL.md +2 -2
- package/template/.agents/skills/competitive-intelligence/SKILL.md +1 -1
- package/template/.agents/skills/diagnosing-bugs/SKILL.md +6 -2
- package/template/.agents/skills/formily-foundation/SKILL.md +1 -1
- package/template/.agents/skills/formily-step-flow/SKILL.md +3 -2
- package/template/.agents/skills/frontend-commit/SKILL.md +6 -6
- package/template/.agents/skills/grilling/SKILL.md +2 -2
- package/template/.agents/skills/implement/SKILL.md +1 -1
- package/template/.agents/skills/implementation-repo-onboarding/SKILL.md +3 -3
- package/template/.agents/skills/implementation-repo-onboarding/references/write-scope.md +5 -0
- package/template/.agents/skills/improve-codebase-architecture/SKILL.md +10 -6
- package/template/.agents/skills/java-backend-commit/SKILL.md +5 -5
- package/template/.agents/skills/llm-wiki/SKILL.md +1 -1
- package/template/.agents/skills/lombok/SKILL.md +1 -1
- package/template/.agents/skills/mapstruct/SKILL.md +3 -1
- package/template/.agents/skills/prototype/SKILL.md +1 -1
- package/template/.agents/skills/prototype-review/SKILL.md +1 -1
- package/template/.agents/skills/resolving-merge-conflicts/SKILL.md +2 -2
- package/template/.agents/skills/tdd/SKILL.md +1 -1
- package/template/.agents/skills/to-questionnaire/SKILL.md +4 -2
- package/template/.agents/skills/to-spec/SKILL.md +3 -3
- package/template/.agents/skills/to-tickets/SKILL.md +7 -7
- package/template/.agents/skills/using-git-worktrees/SKILL.md +13 -11
- package/template/.agents/skills/wait-what/SKILL.md +1 -1
- package/template/.agents/skills/wayfinder/SKILL.md +4 -2
- package/template/.agents/skills/writing-for-agents/SKILL.md +9 -73
- package/template/.agents/skills/writing-for-agents/references/writing-principles.md +76 -0
- package/template/.agents/skills/yss-api-integration/SKILL.md +2 -2
- package/template/.agents/skills/yss-application/SKILL.md +12 -0
- package/template/.agents/skills/yss-application/references/application-layer-guide.md +7 -0
- package/template/.agents/skills/yss-audit-log/SKILL.md +3 -1
- package/template/.agents/skills/yss-audit-log/assets/AuditLogAspect.java +1 -0
- package/template/.agents/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +1 -0
- package/template/.agents/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +1 -0
- package/template/.agents/skills/yss-audit-log/assets/YssAuditPublishService.java +1 -0
- package/template/.agents/skills/yss-backend-spec-review/SKILL.md +44 -0
- package/template/.agents/skills/yss-backend-spec-review/references/check-inputs.md +21 -0
- package/template/.agents/skills/yss-backend-spec-review/references/remediation-workflow.md +48 -0
- package/template/.agents/skills/yss-backend-spec-review/references/standards-coverage.md +39 -0
- package/template/.agents/skills/yss-backend-spec-review/tests/routing.test.mjs +19 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +7 -34
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +60 -23
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +6 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +4 -2
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/command-examples.md +32 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md +7 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/generator-maintenance.md +7 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +6 -10
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +12 -16
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +36 -87
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +4 -3
- package/template/.agents/skills/yss-design-system/SKILL.md +2 -2
- package/template/.agents/skills/yss-domain/SKILL.md +17 -5
- package/template/.agents/skills/yss-domain/references/domain-layer-guide.md +10 -3
- package/template/.agents/skills/yss-domain/references/existing-project.md +5 -0
- package/template/.agents/skills/yss-dto/SKILL.md +13 -10
- package/template/.agents/skills/yss-dto/references/wire-validation-checklist.md +14 -0
- package/template/.agents/skills/yss-exception/SKILL.md +2 -2
- package/template/.agents/skills/yss-formily-schema-generator/SKILL.md +12 -12
- package/template/.agents/skills/yss-hook/SKILL.md +8 -44
- package/template/.agents/skills/yss-hook/references/use-request.md +42 -0
- package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +1 -5
- package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -0
- package/template/.agents/skills/yss-implementation-contract-compiler/references/strategic-handoff-routing.md +7 -0
- package/template/.agents/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +5 -1
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/assets/templates/architecture-rules-test.java.template +66 -0
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +4 -2
- package/template/.agents/skills/yss-mybatis/SKILL.md +14 -0
- package/template/.agents/skills/yss-openapi-draft-review/SKILL.md +1 -1
- package/template/.agents/skills/yss-openapi-governance/SKILL.md +1 -32
- package/template/.agents/skills/yss-openapi-governance/references/governance-output.md +34 -0
- package/template/.agents/skills/yss-product-lifecycle/SKILL.md +1 -1
- package/template/.agents/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.agents/skills/yss-prototype-stage/references/existing-ui-entry.md +7 -0
- package/template/.agents/skills/yss-repository/SKILL.md +13 -1
- package/template/.agents/skills/yss-repository/references/profiles/existing-domain-driven-maven.md +7 -0
- package/template/.agents/skills/yss-repository/references/profiles/existing-layered-mvc-maven.md +7 -0
- package/template/.agents/skills/yss-repository/references/profiles/target-domain-model.md +10 -2
- package/template/.agents/skills/yss-repository/tests/profile-routing.test.mjs +3 -1
- package/template/.agents/skills/yss-stage-decision/SKILL.md +1 -1
- package/template/.agents/skills/yss-stage-decision/references/strategic-handoff-routing.md +3 -0
- package/template/.agents/skills/yss-tactical-design/SKILL.md +1 -3
- package/template/.agents/skills/yss-tactical-design/references/strategic-handoff-routing.md +5 -0
- package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +5 -3
- package/template/.agents/skills/yss-validation/SKILL.md +1 -1
- package/template/.agents/skills/yss-web-controller/SKILL.md +16 -7
- package/template/.agents/skills/yss-web-controller/references/web-adapter-layer-guide.md +8 -0
- package/template/.agents/skills/ytable-usage/SKILL.md +2 -2
- package/template/.codex/skills/alibaba-java-code-style/SKILL.md +2 -2
- package/template/.codex/skills/archify/SKILL.md +2 -19
- package/template/.codex/skills/archify/references/geometry-and-routing.md +20 -0
- package/template/.codex/skills/code-review/SKILL.md +3 -33
- package/template/.codex/skills/code-review/references/candidate-capture.md +33 -0
- package/template/.codex/skills/code-review/references/yss-review-standards.md +20 -0
- package/template/.codex/skills/codebase-design/SKILL.md +2 -2
- package/template/.codex/skills/competitive-intelligence/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/mcp/server.cjs +2 -1
- package/template/.codex/skills/data-analytics/skills/analyze-data-quality/SKILL.md +9 -32
- package/template/.codex/skills/data-analytics/skills/analyze-data-quality/references/quality-checks.md +29 -0
- package/template/.codex/skills/data-analytics/skills/build-dashboard/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/build-report/SKILL.md +4 -4
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/SKILL.md +12 -22
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/cli.py +5 -10
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/plan.py +47 -49
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/tests/test_delivery_plan.py +45 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/SKILL.md +4 -5
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/build-report/specifications/mcp-app-report.md +1 -1
- package/template/.codex/skills/data-analytics/skills/design-kpis/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/gather-business-context/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/index/SKILL.md +4 -4
- package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/kpi-reporting/SKILL.md +2 -2
- package/template/.codex/skills/data-analytics/skills/market-sizing/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/metric-diagnostics/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/product-business-analysis/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/spreadsheets/SKILL.md +4 -4
- package/template/.codex/skills/data-analytics/skills/user-context/SKILL.md +16 -14
- package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/automation-config.md +1 -1
- package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-examples.md +1 -1
- package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding.md +7 -7
- package/template/.codex/skills/data-analytics/skills/user-context/references/source-category-runtime.md +7 -7
- package/template/.codex/skills/data-analytics/skills/user-context/scripts/data_analytics_preflight.py +4 -2
- package/template/.codex/skills/data-analytics/skills/user-context/scripts/validate_user_context_preflight.py +5 -5
- package/template/.codex/skills/data-analytics/skills/user-context/tests/test_state_helpers.py +3 -3
- package/template/.codex/skills/data-analytics/skills/validate-data/SKILL.md +7 -71
- package/template/.codex/skills/data-analytics/skills/validate-data/references/validation-methods.md +70 -0
- package/template/.codex/skills/data-analytics/skills/visualize-data/SKILL.md +4 -4
- package/template/.codex/skills/data-analytics/src/analytics-app/App.tsx +1 -1
- package/template/.codex/skills/data-analytics/src/analytics-app-core.md +1 -1
- package/template/.codex/skills/diagnosing-bugs/SKILL.md +6 -2
- package/template/.codex/skills/formily-foundation/SKILL.md +1 -1
- package/template/.codex/skills/formily-step-flow/SKILL.md +3 -2
- package/template/.codex/skills/frontend-commit/SKILL.md +6 -6
- package/template/.codex/skills/grilling/SKILL.md +2 -2
- package/template/.codex/skills/implement/SKILL.md +1 -1
- package/template/.codex/skills/implementation-repo-onboarding/SKILL.md +3 -3
- package/template/.codex/skills/implementation-repo-onboarding/references/write-scope.md +5 -0
- package/template/.codex/skills/improve-codebase-architecture/SKILL.md +10 -6
- package/template/.codex/skills/java-backend-commit/SKILL.md +5 -5
- package/template/.codex/skills/llm-wiki/SKILL.md +1 -1
- package/template/.codex/skills/lombok/SKILL.md +1 -1
- package/template/.codex/skills/mapstruct/SKILL.md +3 -1
- package/template/.codex/skills/product-design/references/critical-overrides.md +3 -4
- package/template/.codex/skills/product-design/skills/audit/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/design-qa/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/get-context/SKILL.md +2 -1
- package/template/.codex/skills/product-design/skills/ideate/SKILL.md +2 -50
- package/template/.codex/skills/product-design/skills/ideate/references/image-prompt-patterns.md +51 -0
- package/template/.codex/skills/product-design/skills/image-to-code/SKILL.md +6 -6
- package/template/.codex/skills/product-design/skills/index/SKILL.md +2 -2
- package/template/.codex/skills/product-design/skills/prototype/SKILL.md +6 -6
- package/template/.codex/skills/product-design/skills/url-to-code/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/user-context/SKILL.md +1 -1
- package/template/.codex/skills/prototype/SKILL.md +1 -1
- package/template/.codex/skills/prototype-review/SKILL.md +1 -1
- package/template/.codex/skills/resolving-merge-conflicts/SKILL.md +2 -2
- package/template/.codex/skills/tdd/SKILL.md +1 -1
- package/template/.codex/skills/to-questionnaire/SKILL.md +4 -2
- package/template/.codex/skills/to-spec/SKILL.md +3 -3
- package/template/.codex/skills/to-tickets/SKILL.md +7 -7
- package/template/.codex/skills/using-git-worktrees/SKILL.md +13 -11
- package/template/.codex/skills/wait-what/SKILL.md +1 -1
- package/template/.codex/skills/wayfinder/SKILL.md +4 -2
- package/template/.codex/skills/writing-for-agents/SKILL.md +9 -73
- package/template/.codex/skills/writing-for-agents/references/writing-principles.md +76 -0
- package/template/.codex/skills/yss-api-integration/SKILL.md +2 -2
- package/template/.codex/skills/yss-application/SKILL.md +12 -0
- package/template/.codex/skills/yss-application/references/application-layer-guide.md +7 -0
- package/template/.codex/skills/yss-audit-log/SKILL.md +3 -1
- package/template/.codex/skills/yss-audit-log/assets/AuditLogAspect.java +1 -0
- package/template/.codex/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +1 -0
- package/template/.codex/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +1 -0
- package/template/.codex/skills/yss-audit-log/assets/YssAuditPublishService.java +1 -0
- package/template/.codex/skills/yss-backend-spec-review/SKILL.md +44 -0
- package/template/.codex/skills/yss-backend-spec-review/references/check-inputs.md +21 -0
- package/template/.codex/skills/yss-backend-spec-review/references/remediation-workflow.md +48 -0
- package/template/.codex/skills/yss-backend-spec-review/references/standards-coverage.md +39 -0
- package/template/.codex/skills/yss-backend-spec-review/tests/routing.test.mjs +19 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +7 -34
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +60 -23
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +6 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +4 -2
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/command-examples.md +32 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md +7 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/generator-maintenance.md +7 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +6 -10
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +12 -16
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +36 -87
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +4 -3
- package/template/.codex/skills/yss-design-system/SKILL.md +2 -2
- package/template/.codex/skills/yss-domain/SKILL.md +17 -5
- package/template/.codex/skills/yss-domain/references/domain-layer-guide.md +10 -3
- package/template/.codex/skills/yss-domain/references/existing-project.md +5 -0
- package/template/.codex/skills/yss-dto/SKILL.md +13 -10
- package/template/.codex/skills/yss-dto/references/wire-validation-checklist.md +14 -0
- package/template/.codex/skills/yss-exception/SKILL.md +2 -2
- package/template/.codex/skills/yss-formily-schema-generator/SKILL.md +12 -12
- package/template/.codex/skills/yss-hook/SKILL.md +8 -44
- package/template/.codex/skills/yss-hook/references/use-request.md +42 -0
- package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +1 -5
- package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -0
- package/template/.codex/skills/yss-implementation-contract-compiler/references/strategic-handoff-routing.md +7 -0
- package/template/.codex/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +5 -1
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/assets/templates/architecture-rules-test.java.template +66 -0
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +4 -2
- package/template/.codex/skills/yss-mybatis/SKILL.md +14 -0
- package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +1 -1
- package/template/.codex/skills/yss-openapi-governance/SKILL.md +1 -32
- package/template/.codex/skills/yss-openapi-governance/references/governance-output.md +34 -0
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +1 -1
- package/template/.codex/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.codex/skills/yss-prototype-stage/references/existing-ui-entry.md +7 -0
- package/template/.codex/skills/yss-repository/SKILL.md +13 -1
- package/template/.codex/skills/yss-repository/references/profiles/existing-domain-driven-maven.md +7 -0
- package/template/.codex/skills/yss-repository/references/profiles/existing-layered-mvc-maven.md +7 -0
- package/template/.codex/skills/yss-repository/references/profiles/target-domain-model.md +10 -2
- package/template/.codex/skills/yss-repository/tests/profile-routing.test.mjs +3 -1
- package/template/.codex/skills/yss-stage-decision/SKILL.md +1 -1
- package/template/.codex/skills/yss-stage-decision/references/strategic-handoff-routing.md +3 -0
- package/template/.codex/skills/yss-tactical-design/SKILL.md +1 -3
- package/template/.codex/skills/yss-tactical-design/references/strategic-handoff-routing.md +5 -0
- package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +5 -3
- package/template/.codex/skills/yss-validation/SKILL.md +1 -1
- package/template/.codex/skills/yss-web-controller/SKILL.md +16 -7
- package/template/.codex/skills/yss-web-controller/references/web-adapter-layer-guide.md +8 -0
- package/template/.codex/skills/ytable-usage/SKILL.md +2 -2
- package/template/.cursor/skills/alibaba-java-code-style/SKILL.md +2 -2
- package/template/.cursor/skills/archify/SKILL.md +2 -19
- package/template/.cursor/skills/archify/references/geometry-and-routing.md +20 -0
- package/template/.cursor/skills/code-review/SKILL.md +3 -33
- package/template/.cursor/skills/code-review/references/candidate-capture.md +33 -0
- package/template/.cursor/skills/code-review/references/yss-review-standards.md +20 -0
- package/template/.cursor/skills/codebase-design/SKILL.md +2 -2
- package/template/.cursor/skills/competitive-intelligence/SKILL.md +1 -1
- package/template/.cursor/skills/diagnosing-bugs/SKILL.md +6 -2
- package/template/.cursor/skills/formily-foundation/SKILL.md +1 -1
- package/template/.cursor/skills/formily-step-flow/SKILL.md +3 -2
- package/template/.cursor/skills/frontend-commit/SKILL.md +6 -6
- package/template/.cursor/skills/grilling/SKILL.md +2 -2
- package/template/.cursor/skills/implement/SKILL.md +1 -1
- package/template/.cursor/skills/implementation-repo-onboarding/SKILL.md +3 -3
- package/template/.cursor/skills/implementation-repo-onboarding/references/write-scope.md +5 -0
- package/template/.cursor/skills/improve-codebase-architecture/SKILL.md +10 -6
- package/template/.cursor/skills/java-backend-commit/SKILL.md +5 -5
- package/template/.cursor/skills/llm-wiki/SKILL.md +1 -1
- package/template/.cursor/skills/lombok/SKILL.md +1 -1
- package/template/.cursor/skills/mapstruct/SKILL.md +3 -1
- package/template/.cursor/skills/prototype/SKILL.md +1 -1
- package/template/.cursor/skills/prototype-review/SKILL.md +1 -1
- package/template/.cursor/skills/resolving-merge-conflicts/SKILL.md +2 -2
- package/template/.cursor/skills/tdd/SKILL.md +1 -1
- package/template/.cursor/skills/to-questionnaire/SKILL.md +4 -2
- package/template/.cursor/skills/to-spec/SKILL.md +3 -3
- package/template/.cursor/skills/to-tickets/SKILL.md +7 -7
- package/template/.cursor/skills/using-git-worktrees/SKILL.md +13 -11
- package/template/.cursor/skills/wait-what/SKILL.md +1 -1
- package/template/.cursor/skills/wayfinder/SKILL.md +4 -2
- package/template/.cursor/skills/writing-for-agents/SKILL.md +9 -73
- package/template/.cursor/skills/writing-for-agents/references/writing-principles.md +76 -0
- package/template/.cursor/skills/yss-api-integration/SKILL.md +2 -2
- package/template/.cursor/skills/yss-application/SKILL.md +12 -0
- package/template/.cursor/skills/yss-application/references/application-layer-guide.md +7 -0
- package/template/.cursor/skills/yss-audit-log/SKILL.md +3 -1
- package/template/.cursor/skills/yss-audit-log/assets/AuditLogAspect.java +1 -0
- package/template/.cursor/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +1 -0
- package/template/.cursor/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +1 -0
- package/template/.cursor/skills/yss-audit-log/assets/YssAuditPublishService.java +1 -0
- package/template/.cursor/skills/yss-backend-spec-review/SKILL.md +44 -0
- package/template/.cursor/skills/yss-backend-spec-review/references/check-inputs.md +21 -0
- package/template/.cursor/skills/yss-backend-spec-review/references/remediation-workflow.md +48 -0
- package/template/.cursor/skills/yss-backend-spec-review/references/standards-coverage.md +39 -0
- package/template/.cursor/skills/yss-backend-spec-review/tests/routing.test.mjs +19 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +7 -34
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +60 -23
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +6 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +4 -2
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/command-examples.md +32 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md +7 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/generator-maintenance.md +7 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +6 -10
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +12 -16
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +36 -87
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +4 -3
- package/template/.cursor/skills/yss-design-system/SKILL.md +2 -2
- package/template/.cursor/skills/yss-domain/SKILL.md +17 -5
- package/template/.cursor/skills/yss-domain/references/domain-layer-guide.md +10 -3
- package/template/.cursor/skills/yss-domain/references/existing-project.md +5 -0
- package/template/.cursor/skills/yss-dto/SKILL.md +13 -10
- package/template/.cursor/skills/yss-dto/references/wire-validation-checklist.md +14 -0
- package/template/.cursor/skills/yss-exception/SKILL.md +2 -2
- package/template/.cursor/skills/yss-formily-schema-generator/SKILL.md +12 -12
- package/template/.cursor/skills/yss-hook/SKILL.md +8 -44
- package/template/.cursor/skills/yss-hook/references/use-request.md +42 -0
- package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +1 -5
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -0
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/strategic-handoff-routing.md +7 -0
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +5 -1
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/assets/templates/architecture-rules-test.java.template +66 -0
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +4 -2
- package/template/.cursor/skills/yss-mybatis/SKILL.md +14 -0
- package/template/.cursor/skills/yss-openapi-draft-review/SKILL.md +1 -1
- package/template/.cursor/skills/yss-openapi-governance/SKILL.md +1 -32
- package/template/.cursor/skills/yss-openapi-governance/references/governance-output.md +34 -0
- package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +1 -1
- package/template/.cursor/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.cursor/skills/yss-prototype-stage/references/existing-ui-entry.md +7 -0
- package/template/.cursor/skills/yss-repository/SKILL.md +13 -1
- package/template/.cursor/skills/yss-repository/references/profiles/existing-domain-driven-maven.md +7 -0
- package/template/.cursor/skills/yss-repository/references/profiles/existing-layered-mvc-maven.md +7 -0
- package/template/.cursor/skills/yss-repository/references/profiles/target-domain-model.md +10 -2
- package/template/.cursor/skills/yss-repository/tests/profile-routing.test.mjs +3 -1
- package/template/.cursor/skills/yss-stage-decision/SKILL.md +1 -1
- package/template/.cursor/skills/yss-stage-decision/references/strategic-handoff-routing.md +3 -0
- package/template/.cursor/skills/yss-tactical-design/SKILL.md +1 -3
- package/template/.cursor/skills/yss-tactical-design/references/strategic-handoff-routing.md +5 -0
- package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +5 -3
- package/template/.cursor/skills/yss-validation/SKILL.md +1 -1
- package/template/.cursor/skills/yss-web-controller/SKILL.md +16 -7
- package/template/.cursor/skills/yss-web-controller/references/web-adapter-layer-guide.md +8 -0
- package/template/.cursor/skills/ytable-usage/SKILL.md +2 -2
- package/template/.pi/skills/alibaba-java-code-style/SKILL.md +2 -2
- package/template/.pi/skills/archify/SKILL.md +2 -19
- package/template/.pi/skills/archify/references/geometry-and-routing.md +20 -0
- package/template/.pi/skills/code-review/SKILL.md +3 -33
- package/template/.pi/skills/code-review/references/candidate-capture.md +33 -0
- package/template/.pi/skills/code-review/references/yss-review-standards.md +20 -0
- package/template/.pi/skills/codebase-design/SKILL.md +2 -2
- package/template/.pi/skills/competitive-intelligence/SKILL.md +1 -1
- package/template/.pi/skills/diagnosing-bugs/SKILL.md +6 -2
- package/template/.pi/skills/formily-foundation/SKILL.md +1 -1
- package/template/.pi/skills/formily-step-flow/SKILL.md +3 -2
- package/template/.pi/skills/frontend-commit/SKILL.md +6 -6
- package/template/.pi/skills/grilling/SKILL.md +2 -2
- package/template/.pi/skills/implement/SKILL.md +1 -1
- package/template/.pi/skills/implementation-repo-onboarding/SKILL.md +3 -3
- package/template/.pi/skills/implementation-repo-onboarding/references/write-scope.md +5 -0
- package/template/.pi/skills/improve-codebase-architecture/SKILL.md +10 -6
- package/template/.pi/skills/java-backend-commit/SKILL.md +5 -5
- package/template/.pi/skills/llm-wiki/SKILL.md +1 -1
- package/template/.pi/skills/lombok/SKILL.md +1 -1
- package/template/.pi/skills/mapstruct/SKILL.md +3 -1
- package/template/.pi/skills/prototype/SKILL.md +1 -1
- package/template/.pi/skills/prototype-review/SKILL.md +1 -1
- package/template/.pi/skills/resolving-merge-conflicts/SKILL.md +2 -2
- package/template/.pi/skills/tdd/SKILL.md +1 -1
- package/template/.pi/skills/to-questionnaire/SKILL.md +4 -2
- package/template/.pi/skills/to-spec/SKILL.md +3 -3
- package/template/.pi/skills/to-tickets/SKILL.md +7 -7
- package/template/.pi/skills/using-git-worktrees/SKILL.md +13 -11
- package/template/.pi/skills/wait-what/SKILL.md +1 -1
- package/template/.pi/skills/wayfinder/SKILL.md +4 -2
- package/template/.pi/skills/writing-for-agents/SKILL.md +9 -73
- package/template/.pi/skills/writing-for-agents/references/writing-principles.md +76 -0
- package/template/.pi/skills/yss-api-integration/SKILL.md +2 -2
- package/template/.pi/skills/yss-application/SKILL.md +12 -0
- package/template/.pi/skills/yss-application/references/application-layer-guide.md +7 -0
- package/template/.pi/skills/yss-audit-log/SKILL.md +3 -1
- package/template/.pi/skills/yss-audit-log/assets/AuditLogAspect.java +1 -0
- package/template/.pi/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +1 -0
- package/template/.pi/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +1 -0
- package/template/.pi/skills/yss-audit-log/assets/YssAuditPublishService.java +1 -0
- package/template/.pi/skills/yss-backend-spec-review/SKILL.md +44 -0
- package/template/.pi/skills/yss-backend-spec-review/references/check-inputs.md +21 -0
- package/template/.pi/skills/yss-backend-spec-review/references/remediation-workflow.md +48 -0
- package/template/.pi/skills/yss-backend-spec-review/references/standards-coverage.md +39 -0
- package/template/.pi/skills/yss-backend-spec-review/tests/routing.test.mjs +19 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +7 -34
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +60 -23
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +6 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +4 -2
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/command-examples.md +32 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md +7 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/generator-maintenance.md +7 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +6 -10
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +12 -16
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +36 -87
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +4 -3
- package/template/.pi/skills/yss-design-system/SKILL.md +2 -2
- package/template/.pi/skills/yss-domain/SKILL.md +17 -5
- package/template/.pi/skills/yss-domain/references/domain-layer-guide.md +10 -3
- package/template/.pi/skills/yss-domain/references/existing-project.md +5 -0
- package/template/.pi/skills/yss-dto/SKILL.md +13 -10
- package/template/.pi/skills/yss-dto/references/wire-validation-checklist.md +14 -0
- package/template/.pi/skills/yss-exception/SKILL.md +2 -2
- package/template/.pi/skills/yss-formily-schema-generator/SKILL.md +12 -12
- package/template/.pi/skills/yss-hook/SKILL.md +8 -44
- package/template/.pi/skills/yss-hook/references/use-request.md +42 -0
- package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +1 -5
- package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -0
- package/template/.pi/skills/yss-implementation-contract-compiler/references/strategic-handoff-routing.md +7 -0
- package/template/.pi/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +5 -1
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/assets/templates/architecture-rules-test.java.template +66 -0
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +4 -2
- package/template/.pi/skills/yss-mybatis/SKILL.md +14 -0
- package/template/.pi/skills/yss-openapi-draft-review/SKILL.md +1 -1
- package/template/.pi/skills/yss-openapi-governance/SKILL.md +1 -32
- package/template/.pi/skills/yss-openapi-governance/references/governance-output.md +34 -0
- package/template/.pi/skills/yss-product-lifecycle/SKILL.md +1 -1
- package/template/.pi/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.pi/skills/yss-prototype-stage/references/existing-ui-entry.md +7 -0
- package/template/.pi/skills/yss-repository/SKILL.md +13 -1
- package/template/.pi/skills/yss-repository/references/profiles/existing-domain-driven-maven.md +7 -0
- package/template/.pi/skills/yss-repository/references/profiles/existing-layered-mvc-maven.md +7 -0
- package/template/.pi/skills/yss-repository/references/profiles/target-domain-model.md +10 -2
- package/template/.pi/skills/yss-repository/tests/profile-routing.test.mjs +3 -1
- package/template/.pi/skills/yss-stage-decision/SKILL.md +1 -1
- package/template/.pi/skills/yss-stage-decision/references/strategic-handoff-routing.md +3 -0
- package/template/.pi/skills/yss-tactical-design/SKILL.md +1 -3
- package/template/.pi/skills/yss-tactical-design/references/strategic-handoff-routing.md +5 -0
- package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +5 -3
- package/template/.pi/skills/yss-validation/SKILL.md +1 -1
- package/template/.pi/skills/yss-web-controller/SKILL.md +16 -7
- package/template/.pi/skills/yss-web-controller/references/web-adapter-layer-guide.md +8 -0
- package/template/.pi/skills/ytable-usage/SKILL.md +2 -2
- package/template/docs/agents/yss-skill-registry.yaml +13 -0
- package/template/docs/engineering/backend-platforms.md +14 -0
- package/template/docs/process/schemas/digital-human-task-package.schema.json +713 -100
- package/template/docs/process/schemas/slice-implementation-contract-v3.schema.json +41 -0
- package/template/scripts/backend-standards-coverage +26 -0
- package/template/scripts/lib/backend-platform-provenance.mjs +1 -1
- package/template/scripts/lib/backend-platform-verification.mjs +2 -2
- package/template/scripts/lib/backend-platform.mjs +62 -0
- package/template/scripts/lib/backend-review.mjs +140 -0
- package/template/scripts/lib/backend-standards-coverage.mjs +237 -0
- package/template/scripts/lib/first-slice-artifacts.mjs +47 -0
- package/template/scripts/lib/first-slice-tests.mjs +24 -0
- package/template/scripts/lib/lifecycle-transition.mjs +9 -0
- package/template/scripts/lib/maintenance-candidate.mjs +160 -0
- package/template/scripts/lib/profile-skill-sync.mjs +46 -5
- package/template/scripts/lib/slice-execution-preflight.mjs +43 -0
- package/template/scripts/slice-contract +7 -3
- package/template/scripts/verify-backend-platform-matrix +8 -2
- package/template/skills-lock.json +77 -63
- package/template/yss-public-skills.json +4 -2
- package/template.manifest.json +0 -1
- package/template.snapshot.json +5 -5
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# 已批准的 useRequest 实现细则
|
|
2
|
+
|
|
3
|
+
仅项目已批准 `vue-hooks-plus/useRequest` 且当前任务使用它时读取。版本事实以项目锁定依赖为准。
|
|
4
|
+
|
|
5
|
+
`useRequest` 接收返回 `Promise<TData>` 的 service,并以插件组合管理 `loading`、`data`、`error`、`params`。自动模式默认在组件初始化时执行;`manual: true` 时用 `run` 或 `runAsync` 发起请求。
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { useRequest } from 'vue-hooks-plus';
|
|
9
|
+
|
|
10
|
+
const { data, error, loading, params, run, runAsync, refresh, mutate, cancel } = useRequest(
|
|
11
|
+
searchReports,
|
|
12
|
+
{
|
|
13
|
+
manual: true,
|
|
14
|
+
debounceWait: 300,
|
|
15
|
+
onSuccess: (result, requestParams) => {
|
|
16
|
+
tableData.value = result.list;
|
|
17
|
+
pagination.total = result.total;
|
|
18
|
+
},
|
|
19
|
+
onError: (cause) => { requestError.value = cause; },
|
|
20
|
+
},
|
|
21
|
+
);
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
- `run` 会捕获异常并交给 `onError`;`runAsync` 返回 `Promise`,调用处必须自行 `catch`。`refresh` / `refreshAsync` 使用上一次 `params` 重发请求;不要在页面重拼参数。
|
|
25
|
+
- `mutate(nextData | updater)` 用于乐观更新;启用 `rollbackOnError` 时,远端失败会恢复更新前数据。先保存局部错误 / 刷新策略,不能只依赖乐观 UI。
|
|
26
|
+
- `cancel()` 会忽略当前 Promise 的结果和错误,并会取消仍在等待执行的防抖调用;它**不会**终止底层 Promise。若 transport 支持真正中止,service 才能额外使用其已验证的 `AbortSignal` 支持。
|
|
27
|
+
- 搜索场景优先 `debounceWait`(毫秒),并按需要配置 `debounceLeading`、`debounceTrailing`、`debounceMaxWait`。组件卸载与后一次请求的竞态响应会被库忽略;需要提前停止时调用 `cancel()`。不要再叠加自定义 timer / 序号,除非已验证当前版本或 transport 存在库无法覆盖的缺口。
|
|
28
|
+
- `useRequest` 的并发语义在文档版本间出现差异:页面说明从 v2.4.0 起手动调用可独立执行,而 Options 表仍列出 `concurrent`(默认 `false`)控制新旧请求关系。启用并发前,必须以项目锁定版本的类型、测试与行为为准;搜索和同一资源写入默认采用单一最新请求策略。
|
|
29
|
+
|
|
30
|
+
### 3.1 缓存、刷新与重试
|
|
31
|
+
|
|
32
|
+
- `cacheKey` 成功后会全局共享 data 和 params:同 key 的并发实例共用 Promise、数据同步。因此 key 必须包含稳定的业务身份与影响结果的参数;不同租户、用户、筛选条件或权限视图不能共用 key。副作用、实时性强或权限敏感结果默认不启用共享缓存。
|
|
33
|
+
- `staleTime` 内数据视为新鲜,不重新请求;`cacheTime` 到期清除缓存。没有 `staleTime` 时,重新挂载会先展示缓存、再后台请求(SWR)。编辑 / 提交成功后的显式 `refresh` 优先于等待 SWR。
|
|
34
|
+
- `refreshOnWindowFocus: true` 在 `visibilitychange` / `focus` 后刷新,使用 `focusTimespan`(默认 5000ms)限频。只给允许后台重取的读模型开启;编辑中的表单、一次性动作和高成本查询默认关闭。
|
|
35
|
+
- `retryCount` 控制失败后的重试次数,`-1` 为无限重试;未设 `retryInterval` 时按 2s、4s…且最高 30s 的指数退避。仅对暂时性网络 / 可恢复服务错误设置有限重试;认证授权、参数校验、业务拒绝、显式取消和非幂等写操作禁止自动重试。`cancel()` 可停止正在等待的重试。
|
|
36
|
+
- `loadingDelay` 可延迟 loading 变为 `true`,避免短请求闪烁;它不延迟请求,也不能作为防抖替代。
|
|
37
|
+
|
|
38
|
+
### 3.2 请求轮询与依赖刷新
|
|
39
|
+
|
|
40
|
+
- `pollingInterval > 0` 启用请求轮询;每次请求完成后等待间隔再发下一次。`manual: true` 时,先 `run/runAsync` 才启动。`pollingWhenHidden` 默认 `true`;仅在业务允许后台继续请求时保留,需暂停则显式设为 `false`。`pollingErrorRetryCount` 默认 `-1`,必须为生产读模型配置有限值或明确停止条件。
|
|
41
|
+
- 同一数据源只能选择 `useRequest` 轮询或 YSS `usePollingTask` 之一,禁止嵌套或同时运行。手动刷新前 `cancel()` 当前请求 / 轮询,执行带 loading 的 `refresh`,再依据明确业务规则恢复轮询。
|
|
42
|
+
- `refreshDeps` 仅在非 manual 自动模式生效;传入 `WatchSource[]` 精确声明依赖,或在理解捕获范围后用 `true` 自动收集。筛选列表通常使用显式 `query` 并在筛选变化时重置页码,不以 `refreshDeps` 隐式驱动复杂参数。
|
|
@@ -66,11 +66,7 @@ description: "编译或重验 YSS Slice Implementation Contract、最小 Skill
|
|
|
66
66
|
|
|
67
67
|
## 战略交接快照包
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
来自战略交接包的技术设计合同(DDD / MVC)必须绑定 `strategic_handoff` 导入收据、包摘要、正式目标对账及逐条承接 rows。来自导入包时禁止仅填 `upstream_current: true`。批准前执行 `scripts/verify-strategic-handoff-consumption --root <target> <tactical>`;存在受控延期时按切片执行 `--slice <slice-id>`,实际核验通过且合同批准后才可继续相关切片。最新源规则、关键场景或资产变化使依赖项 stale;未知依赖扩大阻断,业务冲突回交战略方。结果绑定当前包与战术摘要,不能复用旧输出宣布 ready-for-agent。
|
|
72
|
-
|
|
73
|
-
Slice v3 的任务进度、缺口和实时就绪结果不回写合同。源事实集中在 basis,Skill 闭包只在 resolution 保存,工作单元继承共同约束;独立工程审查与已有用户确认共同交生命周期批准。详见合同引用。
|
|
69
|
+
消费战略包时必须绑定导入收据、包摘要、目标对账和逐条承接。按 [跨仓承接核验](references/strategic-handoff-routing.md) 执行;源变化使依赖项 stale,未知依赖扩大阻断,编译器不能补字段后沿用旧批准。
|
|
74
70
|
|
|
75
71
|
## 后端脚手架平台承接
|
|
76
72
|
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
| Capability | Primary skill | Task modes |
|
|
20
20
|
| --- | --- | --- |
|
|
21
|
+
| `governance.backend-spec-conformance` | `yss-backend-spec-review` | `guidance`, `troubleshooting`, `review-input` |
|
|
21
22
|
| `writing.lifecycle-document` | `i-have-adhd` | `guidance` |
|
|
22
23
|
| `architecture.technical-design` | `yss-technical-design` | `guidance`, `integration`, `review-input` |
|
|
23
24
|
| `architecture.mvc-design` | `yss-technical-design` | `guidance`, `integration`, `review-input` |
|
|
@@ -57,6 +58,7 @@
|
|
|
57
58
|
|
|
58
59
|
| Recipe | Capabilities |
|
|
59
60
|
| --- | --- |
|
|
61
|
+
| `backend.spec-conformance` | `governance.backend-spec-conformance`, `quality.java-code-style` |
|
|
60
62
|
| `backend.ddd-domain-behavior` | `layer.domain`, `layer.application`, `quality.java-code-style` |
|
|
61
63
|
| `backend.ddd-persistence-mybatis` | `layer.persistence`, `framework.mybatis`, `codegen.mapstruct`, `codegen.lombok`, `quality.java-code-style` |
|
|
62
64
|
| `backend.ddd-http-api` | `layer.web-adapter`, `contract.dto-wire`, `contract.request-validation`, `contract.error-mapping`, `codegen.mapstruct`, `codegen.lombok`, `quality.java-code-style` |
|
|
@@ -106,6 +108,9 @@
|
|
|
106
108
|
|
|
107
109
|
| Skill | Dependency | Type | Condition |
|
|
108
110
|
| --- | --- | --- | --- |
|
|
111
|
+
| `yss-backend-spec-review` | `alibaba-java-code-style` | `context-required` | — |
|
|
112
|
+
| `yss-backend-spec-review` | `yss-implementation-contract-compiler` | `coordination-only` | — |
|
|
113
|
+
| `yss-backend-spec-review` | `code-review` | `review-only` | — |
|
|
109
114
|
| `prototype-review` | `i-have-adhd` | `context-conditional` | `lifecycle-document-output` |
|
|
110
115
|
| `yss-implementation-contract-compiler` | `i-have-adhd` | `context-conditional` | `lifecycle-document-output` |
|
|
111
116
|
| `yss-openapi-governance` | `i-have-adhd` | `context-conditional` | `lifecycle-document-output` |
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
## 战略交接快照包
|
|
2
|
+
|
|
3
|
+
跨仓交接使用 `scripts/strategic-handoff export / verify / import`。正式导出前补齐源战略的稳定规则 ID、关键场景和当前批准绑定;源资产原字节冻结、包内路径通过清单解析。目标导入只产生快照和对账/承接草案,正式 reconciliation 通过后才能进入战术设计。流程与字段见 `docs/process/strategic-handoff-package.md`。
|
|
4
|
+
|
|
5
|
+
来自战略交接包的技术设计合同(DDD / MVC)必须绑定 `strategic_handoff` 导入收据、包摘要、正式目标对账及逐条承接 rows。来自导入包时禁止仅填 `upstream_current: true`。批准前执行 `scripts/verify-strategic-handoff-consumption --root <target> <tactical>`;存在受控延期时按切片执行 `--slice <slice-id>`,实际核验通过且合同批准后才可继续相关切片。最新源规则、关键场景或资产变化使依赖项 stale;未知依赖扩大阻断,业务冲突回交战略方。结果绑定当前包与战术摘要,不能复用旧输出宣布 ready-for-agent。
|
|
6
|
+
|
|
7
|
+
Slice v3 的任务进度、缺口和实时就绪结果不回写合同。源事实集中在 basis,Skill 闭包只在 resolution 保存,工作单元继承共同约束;独立工程审查与已有用户确认共同交生命周期批准。详见合同引用。
|
|
@@ -32,7 +32,9 @@ execution_result:
|
|
|
32
32
|
result:
|
|
33
33
|
executed_at:
|
|
34
34
|
constraint_results:
|
|
35
|
-
-
|
|
35
|
+
- constraint_id: # 后端审查时为 canonical 稳定 ID
|
|
36
|
+
applicability_basis: [] # 后端覆盖工具派生依据
|
|
37
|
+
constraint:
|
|
36
38
|
status: passed | failed | not-applicable
|
|
37
39
|
evidence_ref:
|
|
38
40
|
doubt_driven_review:
|
|
@@ -70,3 +72,5 @@ execution_result:
|
|
|
70
72
|
专项 skill 自报 `implemented` 不等于最终通过,生命周期编排器和独立 Reviewer 必须复核。
|
|
71
73
|
|
|
72
74
|
`verification_results` 不得为空,每项必须包含非空 `command`、`result` 和 `executed_at`。路径校验按完整目录边界判断,`apps/backend/project1-escape` 不属于 `apps/backend/project1/`;Harness 内路径还必须通过项目路径策略。完整重路由时旧合同必须标记 `stale`,新合同版本递增并保留旧合同引用、失效原因和触发器。
|
|
75
|
+
|
|
76
|
+
后端独立审查在既有 constraint_results 中消费稳定规则 ID、规则/代码/证据摘要与完整适用性集合;输入增加 scope_kind 与 standards_coverage_ref/digest。见 yss-backend-spec-review/references/standards-coverage.md。实现者结果不代替独立 code-review;历史未携带新字段的报告只读兼容。
|
|
@@ -20,11 +20,11 @@ description: 在生命周期已批准的脚手架合同下生成通用 YSS 分
|
|
|
20
20
|
|
|
21
21
|
调用本技能前由生命周期编排器展示 `scripts/backend-platforms` 的精确版本清单及兼容状态,并通过 `gate.backend-architecture-platform-approved` 把架构、Spring Boot、Java 和 YSS 父 POM/BOM 合并展示、取得真实用户确认;生成器不提问、不猜版本、不使用 `x` 或 `latest`。已有批准且当前的选择展示摘要后复用;既有工程核验并复用登记值,不触发该门禁。
|
|
22
22
|
|
|
23
|
-
-
|
|
23
|
+
- 精确候选版本与可选状态只读取 `scripts/backend-platforms` 和共享平台清单,不在此复制版本表;候选不等于可生成。
|
|
24
24
|
- 独立子项目可继承主项目组合或覆盖,必须逐项目确认(允许一次确认明确列出的项目);同一 Maven Reactor 使用一个平台。
|
|
25
25
|
- 只开放共享兼容清单中已有真实 YSS 构建、依赖和启动证据的组合。缺少兼容父 POM、BOM、starter 或相应能力证据即 `blocked`;不替换官方组件、不降级回退。
|
|
26
26
|
- 新生成合同必须有 `platform_configuration` v2,与架构决策、Maven 坐标及兼容条目摘要一致。Boot、Java、YSS 坐标或依赖配方变化时回生命周期重新确认并编译合同;仅追加同配置验证记录不重复确认,仍核验证据有效性。
|
|
27
|
-
- Spring MVC、Servlet、Validation、Jackson 和 starter 坐标消费共享平台清单;
|
|
27
|
+
- Spring MVC、Servlet、Validation、Jackson 和 starter 坐标消费共享平台清单;Java 下限和允许组合由当前平台条目决定。Jakarta 转换不包括 `javax.sql` 等 Java SE API。
|
|
28
28
|
- 平台候选维护验证产物标记 `platform_verification=candidate`,不能交给业务生成、升级完成等级或进入首切片验证。测试夹具不证明 YSS 兼容。
|
|
29
29
|
|
|
30
30
|
版本清单、合同字段、候选验证和支持晋级规则见 仓库共享合同 `docs/engineering/backend-platforms.md`。
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
package {{base_package}}.architecture;
|
|
2
|
+
|
|
3
|
+
import com.tngtech.archunit.core.domain.JavaClass;
|
|
4
|
+
import com.tngtech.archunit.core.domain.JavaClasses;
|
|
5
|
+
import com.tngtech.archunit.core.domain.Dependency;
|
|
6
|
+
import com.tngtech.archunit.core.importer.ImportOption;
|
|
7
|
+
import com.tngtech.archunit.junit.AnalyzeClasses;
|
|
8
|
+
import com.tngtech.archunit.junit.ArchTest;
|
|
9
|
+
|
|
10
|
+
/** 空骨架可无业务类型;首切片由批准合同传入职责包和必须加载的实际类型。 */
|
|
11
|
+
@AnalyzeClasses(packages = "{{base_package}}", importOptions = ImportOption.DoNotIncludeTests.class)
|
|
12
|
+
class LayeredMvcArchitectureTest {
|
|
13
|
+
private static boolean inPackage(JavaClass type, String prefixes) {
|
|
14
|
+
for (String prefix : prefixes.split(",")) {
|
|
15
|
+
if (!prefix.isEmpty() && (type.getPackageName().equals(prefix)
|
|
16
|
+
|| type.getPackageName().startsWith(prefix + "."))) return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
private static boolean role(JavaClass type, String name, String defaults) {
|
|
22
|
+
return inPackage(type, defaults) || inPackage(type, System.getProperty("yss.arch." + name, ""));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
private static boolean controller(JavaClass type) {
|
|
26
|
+
return type.isAnnotatedWith("org.springframework.web.bind.annotation.RestController")
|
|
27
|
+
|| type.isAnnotatedWith("org.springframework.stereotype.Controller")
|
|
28
|
+
|| type.isMetaAnnotatedWith("org.springframework.stereotype.Controller");
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
private static void reject(boolean forbidden, Dependency dependency) {
|
|
32
|
+
if (forbidden) throw new AssertionError(dependency.getDescription());
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@ArchTest
|
|
36
|
+
static void boundaries(JavaClasses classes) {
|
|
37
|
+
for (JavaClass origin : classes) {
|
|
38
|
+
boolean application = role(origin, "application", "{{base_package}}.service,{{base_package}}.core");
|
|
39
|
+
boolean infrastructure = role(origin, "infrastructure", "{{base_package}}.repository");
|
|
40
|
+
for (Dependency dependency : origin.getDirectDependenciesFromSelf()) {
|
|
41
|
+
JavaClass target = dependency.getTargetClass();
|
|
42
|
+
boolean targetWeb = controller(target) || role(target, "web",
|
|
43
|
+
"{{base_package}}.server,{{base_package}}.rest,{{base_package}}.adapter.web");
|
|
44
|
+
boolean targetInfrastructure = role(target, "infrastructure", "{{base_package}}.repository");
|
|
45
|
+
reject(application && targetWeb, dependency);
|
|
46
|
+
reject(infrastructure && (targetWeb || role(target, "application",
|
|
47
|
+
"{{base_package}}.service,{{base_package}}.core")), dependency);
|
|
48
|
+
reject(controller(origin) && targetInfrastructure, dependency);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (Boolean.getBoolean("yss.firstSlice")) {
|
|
52
|
+
if (Boolean.getBoolean("yss.arch.requireController")) {
|
|
53
|
+
boolean foundController = false;
|
|
54
|
+
for (JavaClass type : classes) if (controller(type)) foundController = true;
|
|
55
|
+
if (!foundController) throw new AssertionError("Web slice did not load an actual Controller");
|
|
56
|
+
}
|
|
57
|
+
String required = System.getProperty("yss.arch.requiredTypes", "");
|
|
58
|
+
if (required.isEmpty()) throw new AssertionError("first slice requires contract-bound types");
|
|
59
|
+
for (String name : required.split(",")) {
|
|
60
|
+
boolean found = false;
|
|
61
|
+
for (JavaClass type : classes) if (type.getName().equals(name)) found = true;
|
|
62
|
+
if (!found) throw new AssertionError("architecture scope did not load " + name);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs
CHANGED
|
@@ -120,7 +120,7 @@ function parentPom(contract, modules, platform) {
|
|
|
120
120
|
<properties><java.version>${v.java_version}</java.version><spring-boot.version>${v.boot_version}</spring-boot.version><maven.compiler.source>${v.java_version}</maven.compiler.source><maven.compiler.target>${v.java_version}</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><yss-components.version>${xml(c.yss_components_version)}</yss-components.version></properties>
|
|
121
121
|
<modules>${modules.map((module) => `<module>${contract.project_name}-${module}</module>`).join("")}</modules>
|
|
122
122
|
<dependencyManagement><dependencies>${dependency("org.springframework.boot", "spring-boot-dependencies", v.boot_version, "import").replace("</dependency>", "<type>pom</type></dependency>")}${dependency("com.yss.cloud", "yss-components-bom", "${yss-components.version}", "import").replace("</dependency>", "<type>pom</type></dependency>")}</dependencies></dependencyManagement>
|
|
123
|
-
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-enforcer-plugin</artifactId><version>${v.enforcer_version}</version><executions><execution><id>enforce-platform</id><goals><goal>enforce</goal></goals><configuration><rules><requireJavaVersion><version>${v.java_range}</version></requireJavaVersion><requireMavenVersion><version>[3.6.3,)</version></requireMavenVersion><dependencyConvergence/></rules></configuration></execution></executions></plugin></plugins><pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${v.boot_version}</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>${v.surefire_version}</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${v.compiler_version}</version><configuration><source>${v.java_version}</source><target>${v.java_version}</target><parameters>true</parameters><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${v.lombok_version}</version></path><path><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${v.mapstruct_version}</version></path><path><groupId>org.projectlombok</groupId><artifactId>lombok-mapstruct-binding</artifactId><version
|
|
123
|
+
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-enforcer-plugin</artifactId><version>${v.enforcer_version}</version><executions><execution><id>enforce-platform</id><goals><goal>enforce</goal></goals><configuration><rules><requireJavaVersion><version>${v.java_range}</version></requireJavaVersion><requireMavenVersion><version>[3.6.3,)</version></requireMavenVersion><dependencyConvergence/></rules></configuration></execution></executions></plugin></plugins><pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${v.boot_version}</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>${v.surefire_version}</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${v.compiler_version}</version><configuration><source>${v.java_version}</source><target>${v.java_version}</target><parameters>true</parameters><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${v.lombok_version}</version></path><path><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${v.mapstruct_version}</version></path><path><groupId>org.projectlombok</groupId><artifactId>lombok-mapstruct-binding</artifactId><version>${v.lombok_mapstruct_binding_version}</version></path></annotationProcessorPaths></configuration></plugin></plugins></pluginManagement></build>
|
|
124
124
|
</project>`;
|
|
125
125
|
}
|
|
126
126
|
|
|
@@ -130,6 +130,7 @@ function modulePom(contract, module, modules, platform) {
|
|
|
130
130
|
const dependencies = [];
|
|
131
131
|
if (module === "server") {
|
|
132
132
|
dependencies.push(own(applicationModule), dependency("org.springframework.boot", platform.web_starter), dependency("org.springframework.boot", "spring-boot-starter-validation"), dependency("org.springframework.boot", "spring-boot-starter-test", null, "test"), dependency("com.tngtech.archunit", "archunit-junit5", platform.versions.archunit, "test"));
|
|
133
|
+
dependencies.push(dependency("org.projectlombok", "lombok", platform.versions.lombok, "test"));
|
|
133
134
|
if (platform.web_test_starter !== "spring-boot-starter-test") dependencies.push(dependency("org.springframework.boot", platform.web_test_starter, null, "test"));
|
|
134
135
|
if (modules.includes("client")) dependencies.push(own("client"));
|
|
135
136
|
dependencies.push(dependency("com.h2database", "h2", null, "test"), dependency("org.mapstruct", "mapstruct", platform.versions.mapstruct), dependency("com.yss.cloud", "yss-component-dto"));
|
|
@@ -263,7 +264,8 @@ export async function generate(options, { skillId = SKILL_ID, architectureProfil
|
|
|
263
264
|
await put(projectRoot, `${serverRoot}/src/main/resources/application-scaffold-local.yml`, localDatabaseConfiguration(options.projectName));
|
|
264
265
|
await put(projectRoot, `${serverRoot}/src/test/resources/application-scaffold-test.yml`, localDatabaseConfiguration(`${options.projectName}_test`));
|
|
265
266
|
await put(projectRoot, `${serverRoot}/src/test/java/${packagePath}/${applicationClass}Test.java`, `package ${options.basePackage};\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.ActiveProfiles;\n\n@SpringBootTest\n@ActiveProfiles("scaffold-test")\nclass ${applicationClass}Test {\n @Test\n void contextLoads() {\n }\n}`);
|
|
266
|
-
await
|
|
267
|
+
const architectureTemplate = await readFile(path.join(SKILL_ROOT, "assets/templates/architecture-rules-test.java.template"), "utf8");
|
|
268
|
+
await put(projectRoot, `${serverRoot}/src/test/java/${packagePath}/architecture/LayeredMvcArchitectureTest.java`, architectureTemplate.replaceAll("{{base_package}}", options.basePackage));
|
|
267
269
|
await put(projectRoot, `${serverRoot}/src/test/java/${packagePath}/PlatformIntegrationTest.java`, platformSmokeTest(options.basePackage, platform, contract.module_profile.requested_capabilities));
|
|
268
270
|
const wrapper = path.join(REPOSITORY_ROOT, ".agents/skills/yss-ddd-scaffold-generator/assets/wrapper");
|
|
269
271
|
await cp(wrapper, projectRoot, { recursive: true });
|
|
@@ -16,11 +16,21 @@ description: 用于 YSS MyBatis / MyBatis-Plus 组件能力核验、接入决策
|
|
|
16
16
|
|
|
17
17
|
## 稳定决策规则
|
|
18
18
|
|
|
19
|
+
<a id="mybatis.binding"></a>
|
|
20
|
+
<!-- yss-rule {"id":"mybatis.binding","when":"mybatis","level":"mandatory","evidence":"code-and-verification"} -->
|
|
19
21
|
- 基类、Mapper 注解、XML 位置和扫描范围以批准 Profile、当前工程基线及当前组件源码共同决定;不得在既有体系外再造 Mapper 抽象。
|
|
22
|
+
<a id="mybatis.pagination"></a>
|
|
23
|
+
<!-- yss-rule {"id":"mybatis.pagination","when":"pagination","level":"mandatory","evidence":"code-and-verification"} -->
|
|
20
24
|
- 一条查询 seam 只能有一个分页责任模型。核对实际插件/切面开关、拦截范围、参数绑定条件和返回 total 的责任,不以“依赖已引入”代替行为验证。
|
|
25
|
+
<a id="mybatis.batch"></a>
|
|
26
|
+
<!-- yss-rule {"id":"mybatis.batch","when":"batch","level":"mandatory","evidence":"code-and-verification"} -->
|
|
21
27
|
- 批量写入必须证明是组件当前支持的 SQL 级批量能力,并验证分批大小、字段填充、主键和数据库方言;循环单条写入不能冒充批量 SQL。
|
|
22
28
|
- 多数据源实例创建不等于动态路由、线程上下文切换或事务传播。先做 capability check;组件未提供的路由能力必须由批准的上层适配承担。
|
|
29
|
+
<a id="mybatis.mapping"></a>
|
|
30
|
+
<!-- yss-rule {"id":"mybatis.mapping","when":"mybatis","level":"mandatory","evidence":"code-and-verification"} -->
|
|
23
31
|
- Mapper/XML、逻辑删除、审计字段、主键策略、动态排序/分组白名单和参数绑定必须与数据合同一致;任何 SQL/DDL/索引新影响返回 `new_impacts`。
|
|
32
|
+
<a id="mybatis.transaction"></a>
|
|
33
|
+
<!-- yss-rule {"id":"mybatis.transaction","when":"mybatis","level":"mandatory","evidence":"code-and-verification"} -->
|
|
24
34
|
- 事务边界归批准的 Application 用例或 MVC service/core;Repository 不临时声明新的业务事务。
|
|
25
35
|
|
|
26
36
|
## 任务分流
|
|
@@ -55,3 +65,7 @@ description: 用于 YSS MyBatis / MyBatis-Plus 组件能力核验、接入决策
|
|
|
55
65
|
## 平台与源码门禁
|
|
56
66
|
|
|
57
67
|
接入、修改、代码生成或给出精确类名/配置前,读取 [后端组件平台与源码门禁](../yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md),从批准的 `platform_configuration.component_platform_line` 选择 `source-index.boot2-java8.md` 或 `source-index.boot3-java17.md`,并以 `--skill yss-mybatis --platform-line <line> --source-root <matching-root>` 运行统一 freshness 校验。平台线与源码根不匹配、组件 tree 不一致、组件子树 dirty、索引缺少平台信号,或 Manifest / 组件 GAV 缺少 verified 兼容证据时返回 `blocked`;不得回退另一代索引,也不在业务实现中升级、降级或替换 YSS 组件。既有工程只读分诊可继续,但不得据此宣称跨 Boot/JDK 兼容。
|
|
68
|
+
|
|
69
|
+
## 持久化选择记录
|
|
70
|
+
|
|
71
|
+
在已有数据合同 / persistence_strategy 中记录:实际 Mapper 基类、组件源码与平台绑定、分页唯一责任者、主键与审计填充,以及命中批量时的 SQL 入口、分批大小和方言证据。`BaseMapper` 与组件扩展基类按所需能力选择,不因命名不同判违规;依赖存在和循环 insert 均不证明批量能力。未命中的能力不强制生成。
|
|
@@ -51,7 +51,7 @@ Block if any of these are true:
|
|
|
51
51
|
- Pagination does not align with the `PageResult` profile or documented exception, or exposes `offset` / `needTotalCount` / `tempTotalCount` as client input.
|
|
52
52
|
- A response omits `x-yss-response-wrapper`, uses the compatibility `com.yss.cloud.dto.response` package for a new contract, writes Java generic notation as an OAS schema, or fails `YssResultMeta` + `allOf` + concrete `data` mapping.
|
|
53
53
|
- `code` is modeled as arbitrary object, `dataType` loses explicit nullability, or computed fields such as `totalPages` lack target wire evidence.
|
|
54
|
-
-
|
|
54
|
+
- An in-scope behavior lacks a contract-test seam. Select import, mapping coverage, validation, review, publish, export or optimistic-locking seams only when the Spec/API actually includes that behavior; record a reasoned not-applicable for absent operations. A read-only query does not acquire write/import/publish requirements.
|
|
55
55
|
- YAML contains lifecycle frontmatter / root metadata, or the proposed JSON client input is not explicitly deferred until Freeze and governance export.
|
|
56
56
|
|
|
57
57
|
## Output Contract
|
|
@@ -113,35 +113,4 @@ pnpm exec redocly bundle \
|
|
|
113
113
|
|
|
114
114
|
## 输出契约
|
|
115
115
|
|
|
116
|
-
|
|
117
|
-
### Governance Result
|
|
118
|
-
<Draft / Approved for Freeze / Blocked / JSON Exported>
|
|
119
|
-
|
|
120
|
-
### YAML Authority
|
|
121
|
-
- YAML: <docs/.scratch/<feature>/api/<feature>.yaml>
|
|
122
|
-
- OAS: 3.1.0
|
|
123
|
-
- YAML SHA-256: <sha256>
|
|
124
|
-
- Freeze record: <path / ref>
|
|
125
|
-
|
|
126
|
-
### Validation
|
|
127
|
-
- Lint command and result: <locked pnpm command / result>
|
|
128
|
-
- Validation record: <docs/.scratch/<feature>/api/<feature>-validation.yaml / verifier result / matching YAML SHA-256>
|
|
129
|
-
- YSS DTO wire profile: <`.agents/skills/yss-dto/references/openapi-wire-profile.yaml`, schema_version, verifier result>
|
|
130
|
-
- P0 field traceability: <source / operationId / schema / property path / shape / requiredness / constraints / error-test summary>
|
|
131
|
-
- Wrapper conformance: <`x-yss-response-wrapper`, `YssResultMeta`, `allOf`, concrete data schema, direction and forbidden-field result>
|
|
132
|
-
- `$ref` policy / approved exceptions: <details>
|
|
133
|
-
- Blocking findings: <file:line grounded finding>
|
|
134
|
-
|
|
135
|
-
### JSON Derivative
|
|
136
|
-
- JSON: <docs/.scratch/<feature>/api/<feature>.json>
|
|
137
|
-
- JSON SHA-256: <sha256>
|
|
138
|
-
- Redocly CLI / lockfile: <version and lock reference>
|
|
139
|
-
- Bundle command and metafile: <command / path>
|
|
140
|
-
- JSON validation result: <pass / blocked>
|
|
141
|
-
|
|
142
|
-
### Downstream Handoff
|
|
143
|
-
- Canonical JSON / frontend materialization SHA-256: <same sha / blocked>
|
|
144
|
-
- Frontend materialization path: <frontend/openapi/openapi.json / blocked>
|
|
145
|
-
- Existing frontend code generation: <manual command in target repository / blocked reason>
|
|
146
|
-
- Template boundary: <no frontend configuration, code-generation execution, or CI change>
|
|
147
|
-
```
|
|
116
|
+
执行治理或导出时,按 [输出契约](references/governance-output.md) 记录 YAML 权威、当前校验证据、JSON 派生与交接。不能只给自然语言完成声明;未冻结时不生成可供实现消费的 JSON。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
## 输出契约
|
|
2
|
+
|
|
3
|
+
```markdown
|
|
4
|
+
### Governance Result
|
|
5
|
+
<Draft / Approved for Freeze / Blocked / JSON Exported>
|
|
6
|
+
|
|
7
|
+
### YAML Authority
|
|
8
|
+
- YAML: <docs/.scratch/<feature>/api/<feature>.yaml>
|
|
9
|
+
- OAS: 3.1.0
|
|
10
|
+
- YAML SHA-256: <sha256>
|
|
11
|
+
- Freeze record: <path / ref>
|
|
12
|
+
|
|
13
|
+
### Validation
|
|
14
|
+
- Lint command and result: <locked pnpm command / result>
|
|
15
|
+
- Validation record: <docs/.scratch/<feature>/api/<feature>-validation.yaml / verifier result / matching YAML SHA-256>
|
|
16
|
+
- YSS DTO wire profile: <`.agents/skills/yss-dto/references/openapi-wire-profile.yaml`, schema_version, verifier result>
|
|
17
|
+
- P0 field traceability: <source / operationId / schema / property path / shape / requiredness / constraints / error-test summary>
|
|
18
|
+
- Wrapper conformance: <`x-yss-response-wrapper`, `YssResultMeta`, `allOf`, concrete data schema, direction and forbidden-field result>
|
|
19
|
+
- `$ref` policy / approved exceptions: <details>
|
|
20
|
+
- Blocking findings: <file:line grounded finding>
|
|
21
|
+
|
|
22
|
+
### JSON Derivative
|
|
23
|
+
- JSON: <docs/.scratch/<feature>/api/<feature>.json>
|
|
24
|
+
- JSON SHA-256: <sha256>
|
|
25
|
+
- Redocly CLI / lockfile: <version and lock reference>
|
|
26
|
+
- Bundle command and metafile: <command / path>
|
|
27
|
+
- JSON validation result: <pass / blocked>
|
|
28
|
+
|
|
29
|
+
### Downstream Handoff
|
|
30
|
+
- Canonical JSON / frontend materialization SHA-256: <same sha / blocked>
|
|
31
|
+
- Frontend materialization path: <frontend/openapi/openapi.json / blocked>
|
|
32
|
+
- Existing frontend code generation: <manual command in target repository / blocked reason>
|
|
33
|
+
- Template boundary: <no frontend configuration, code-generation execution, or CI change>
|
|
34
|
+
```
|
|
@@ -67,7 +67,7 @@ Plan 入口读取 `docs/plan/README.md` 和 `docs/process/plan-migration.md`,
|
|
|
67
67
|
1. 从真实资产重建当前状态,查询当前 mode、stage、work-unit 及必要合同子树。
|
|
68
68
|
2. 评估影响面、上游新鲜度、门禁和阻塞,选择第一个未阻塞工作单元;不把 `not-applicable` 当作豁免。
|
|
69
69
|
3. 原生工作单元由主控持有正式资产;专项工作通过结构化任务包派发,只调用编排合同允许的 model-invoked skill。
|
|
70
|
-
4.
|
|
70
|
+
4. `grill-with-docs`、`to-spec`、`to-tickets`、`implement` 等兼容入口只可由用户显式调用。主控先预检输入、路径和门禁;入口按 `matt_invocation_boundary` 写入其产物并回交验收,不批准或改变 Ticket 就绪状态。原生资产仍归主控。
|
|
71
71
|
5. 先对照用户目标逐项验收,检查遗漏诉求、错误假设与尚未解决的问题,再验收 `Workflow Execution Result`:工作单元、合同、允许写路径、`context_reconciliation`、证据、实际验证、延期 seam、漂移和下一路由必须可核验。实现派发额外绑定当前 Slice Implementation Contract v3;其他阶段不得伪造该合同。
|
|
72
72
|
6. 在授权边界内继续下一工作单元;遇到人工决定、新授权、证据冲突、专项失败或合并/发布结论时暂停。暂停不得阻断无依赖的独立工作。
|
|
73
73
|
|
|
@@ -66,11 +66,7 @@ Design QA 合并 visual、layout、interaction、content、accessibility、cross
|
|
|
66
66
|
|
|
67
67
|
## 既有 UI 的交接入口
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
通过 `gate.product-design-approved` 的现有用户决定协议确认当前基线 manifest 原字节,Handoff v5 明确声明 `ui_baseline_kind: existing-ui-baseline`。截图、代码可运行或旧原型批准都不能替代该确认;本技能只能准备审阅资产,不代答或批准。发现任何 UI 改动,包括后端行为导致的体验变化,回到上述原型流程;新设计继续保留现有原型与验证要求。
|
|
72
|
-
|
|
73
|
-
消费者以 `scripts/preflight-delivery` 检查交付前提,再由 `scripts/lib/ui-baseline.mjs` 分派原型与既有基线。前端使用 Strategic Preflight v2 和 Delivery Acceptance v3 的通用 `baseline_case_ids` 承接;通过仅说明输入可核验,不授予写代码权限。
|
|
69
|
+
确认 UI、交互、状态和权限体验均无改动的跨仓既有工程,读取 [既有 UI 分支](references/existing-ui-entry.md),使用 existing-ui-baseline v1 和当前真实用户确认。任何 UI 改动回到上面的原型流程;输入核验不授予实现权限。
|
|
74
70
|
|
|
75
71
|
## AntD 组件补充
|
|
76
72
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
## 既有 UI 的交接入口
|
|
2
|
+
|
|
3
|
+
现有工程需要跨仓交接且确认 UI、交互、状态和权限体验均无改动时,先读取 `docs/process/existing-ui-baseline.md`,使用独立 `existing-ui-baseline` v1,不进入 H1/H2 原型构建。绑定固定源码、锁文件、实际构建、原始动作、PNG 截图和真实 API 交换证据;可离线审阅不等于可离线运行原型。
|
|
4
|
+
|
|
5
|
+
通过 `gate.product-design-approved` 的现有用户决定协议确认当前基线 manifest 原字节,Handoff v5 明确声明 `ui_baseline_kind: existing-ui-baseline`。截图、代码可运行或旧原型批准都不能替代该确认;本技能只能准备审阅资产,不代答或批准。发现任何 UI 改动,包括后端行为导致的体验变化,回到上述原型流程;新设计继续保留现有原型与验证要求。
|
|
6
|
+
|
|
7
|
+
消费者以 `scripts/preflight-delivery` 检查交付前提,再由 `scripts/lib/ui-baseline.mjs` 分派原型与既有基线。前端使用 Strategic Preflight v2 和 Delivery Acceptance v3 的通用 `baseline_case_ids` 承接;通过仅说明输入可核验,不授予写代码权限。
|
|
@@ -10,21 +10,31 @@ description: 用于按批准的 YSS 架构与持久化合同实现或重构 PO
|
|
|
10
10
|
## 架构分流
|
|
11
11
|
|
|
12
12
|
1. 读取当前 Slice Implementation Contract 的 `architecture_identity`、`persistence_profile`、实现仓登记、数据合同、`allowed_write_paths` 和预期证据。
|
|
13
|
-
2.
|
|
13
|
+
2. 将架构身份与当前工程基线、既有工程观测(生成 Manifest 只证明历史来源)和 `docs/agents/yss-skill-registry.yaml` 核对;成熟度以注册表为准,不能把 `draft` 称为已支持。
|
|
14
14
|
3. 根据 `architecture_profile` **且只**加载一个文件:
|
|
15
15
|
- [target-domain-model](references/profiles/target-domain-model.md)
|
|
16
16
|
- [layered-mvc-service](references/profiles/layered-mvc-service.md)
|
|
17
17
|
- [mvc-data-analysis-v1](references/profiles/mvc-data-analysis-v1.md)
|
|
18
|
+
- [existing-domain-driven-maven](references/profiles/existing-domain-driven-maven.md)
|
|
19
|
+
- [existing-layered-mvc-maven](references/profiles/existing-layered-mvc-maven.md)
|
|
18
20
|
4. Profile 缺失、身份冲突、Manifest 漂移或数据输入不完整时返回 `blocked` / `drift` / `new_impacts`,不得选择“最像”的分支继续。
|
|
19
21
|
|
|
20
22
|
## 共用规则
|
|
21
23
|
|
|
24
|
+
<a id="repository.ownership"></a>
|
|
25
|
+
<!-- yss-rule {"id":"repository.ownership","when":"persistence","level":"mandatory","evidence":"code-and-verification"} -->
|
|
22
26
|
- 只实现批准合同已有的结构与 seam,不创建或改写 Domain Gateway、Application Query Port、service/core 接口或 Web/API DTO。
|
|
23
27
|
- 持久化 Profile 命中 MyBatis 时加载 `yss-mybatis`,以当前组件能力索引核验基类、分页、批量、扫描、XML 和数据源行为;本 Skill 不复制这些规则。
|
|
24
28
|
- POJO、转换和 Java 规范分别消费 Registry 编译出的 `lombok`、`mapstruct`、`alibaba-java-code-style`;不在此重复其注解和处理器规则。
|
|
29
|
+
<a id="repository.mapping"></a>
|
|
30
|
+
<!-- yss-rule {"id":"repository.mapping","when":"persistence","level":"mandatory","evidence":"code-and-verification"} -->
|
|
25
31
|
- 数据合同必须显式覆盖主键、逻辑删除、审计字段、空值、枚举/值对象映射和敏感字段;动态排序、分组与过滤必须使用批准白名单和参数绑定。
|
|
32
|
+
<a id="repository.transaction"></a>
|
|
33
|
+
<!-- yss-rule {"id":"repository.transaction","when":"persistence","level":"mandatory","evidence":"code-and-verification"} -->
|
|
26
34
|
- 事务归所选 Profile 的用例边界。Repository/Gateway Adapter 不临时新增业务事务,也不把数据库异常原文或凭据暴露给上层。
|
|
27
35
|
- 基础机械结构只有在合同标记 `controlled-generation`、metadata 完整且目标文件不存在时才可受控生成;查询语义、分页、并发、事务和迁移行为使用 `behavior-tdd`。
|
|
36
|
+
<a id="repository.sql"></a>
|
|
37
|
+
<!-- yss-rule {"id":"repository.sql","when":"persistence","level":"mandatory","evidence":"code-and-verification"} -->
|
|
28
38
|
- 发现 SQL、DDL、索引、数据模型或 API schema 新影响时立即暂停并返回 `new_impacts`,不能以 TODO 代替合同重编译。
|
|
29
39
|
|
|
30
40
|
## 产物与证据
|
|
@@ -46,3 +56,5 @@ description: 用于按批准的 YSS 架构与持久化合同实现或重构 PO
|
|
|
46
56
|
## 新脚手架平台约束
|
|
47
57
|
|
|
48
58
|
消费批准切片架构身份中的 `platform_configuration`,并与工程 Manifest、effective POM 和依赖树核对。命中 MyBatis 时,`framework.mybatis` 必须从该配置指向的 compatibility 条目解析出对当前架构有效的 `component_binding`;构件、摘要、源码 tree、证据或绑定状态不一致时回合同编译器阻断。Validation namespace、Jackson、starter 和处理器版本只消费解析后的精确平台事实,不在本 Skill 中按 Boot 大版本推导。不得在业务实现中升级、降级或替换 YSS 组件;平台迁移使用独立迁移工作单元。详见仓库共享合同 `docs/engineering/backend-platforms.md`。
|
|
59
|
+
|
|
60
|
+
只读审计可先盘点、记录缺失合同;不得用实施前置要求阻止发现既有违规。整改仍需批准合同,不因缺少生成 Manifest 阻断已有效登记的既有工程。
|
package/template/.pi/skills/yss-repository/references/profiles/existing-domain-driven-maven.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# existing-domain-driven-maven
|
|
2
|
+
|
|
3
|
+
复用注册表中的既有 DDD 身份及当前工程基线、观测 Manifest、build_units/role_paths。实际源码根和端口责任决定落点,不要求生成目录、类名或脚手架 Manifest。
|
|
4
|
+
|
|
5
|
+
领域聚合经 Domain Gateway,展示读模型经 Application Query Port;Infrastructure 只实现已有端口。
|
|
6
|
+
|
|
7
|
+
遵守主 Skill 的数据映射、白名单、参数绑定和持久化往返规则;业务事务归已批准用例层。Mapper 能力按 yss-mybatis 当前平台证据选择。无分页/批量需求不建空实现。角色无法映射记录 missing_evidence;改变端口、数据或架构回合同编译器。
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# existing-layered-mvc-maven
|
|
2
|
+
|
|
3
|
+
复用注册表中的既有 MVC 身份及当前工程基线、观测 Manifest、build_units/role_paths。实际源码根和端口责任决定落点,不要求生成目录、类名或脚手架 Manifest。
|
|
4
|
+
|
|
5
|
+
持久层实现已登记的 service/core 用例接口;不创建 DDD Gateway、聚合或 Application Query Port。
|
|
6
|
+
|
|
7
|
+
遵守主 Skill 的数据映射、白名单、参数绑定和持久化往返规则;业务事务归已批准用例层。Mapper 能力按 yss-mybatis 当前平台证据选择。无分页/批量需求不建空实现。角色无法映射记录 missing_evidence;改变端口、数据或架构回合同编译器。
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
## 前置与所有权
|
|
6
6
|
|
|
7
|
-
- 写模型必须已有批准的 Domain Gateway
|
|
7
|
+
- 写模型必须已有批准的 Domain Gateway;展示读模型必须已有批准的 Application Query Port。缺失或需要改变签名时返回 `new_impacts`,由 `yss-domain` / `yss-application` 和实现合同编译器处理。
|
|
8
8
|
- Infrastructure 实现既有端口,拥有 PO、Repository/Mapper、XML、持久化 Convertor、GatewayImpl 和 QueryAdapter;不拥有领域规则、HTTP DTO 或业务事务。
|
|
9
|
-
- Domain Gateway 只交换 Aggregate、Domain Model
|
|
9
|
+
- Domain Gateway 只交换 Aggregate、Domain Model、领域值和标识;展示分页、列表和读模型走 Application Query Port,`PageQuery` 不进入 Domain。
|
|
10
10
|
|
|
11
11
|
## 结构决策
|
|
12
12
|
|
|
@@ -21,3 +21,11 @@
|
|
|
21
21
|
- 经 Domain Gateway 保存后可重新加载语义等价的 Aggregate。
|
|
22
22
|
- Query Port 覆盖分页 total、空结果、排序/过滤白名单和字段转换。
|
|
23
23
|
- Mapper/Repository 使用批准数据库 fixture;H2 不能证明生产方言。
|
|
24
|
+
|
|
25
|
+
## 持久化决策与映射
|
|
26
|
+
|
|
27
|
+
- 在既有 persistence_strategy / 数据合同中明确 Mapper 基类及源码依据、主键、逻辑删除、审计填充、并发版本、敏感字段、分页责任和命中时的批量策略。未命中分页或批量时写明理由,不创建空适配器。
|
|
28
|
+
- 多表聚合按同一 Application 事务保存,重载后比较身份、值对象、集合与业务状态;并发写入按批准策略验证冲突或幂等结果。
|
|
29
|
+
- 机械字段使用 Spring MapStruct Bean;聚合重建可通过显式工厂或自定义映射方法。业务状态校验由领域入口拥有,禁止为了映射而开放破坏不变量的 setter。
|
|
30
|
+
- 创建与更新的 null 语义、枚举未知值和审计字段保留必须有测试;转换器不得静默创造业务默认值或吞掉非法持久化状态。
|
|
31
|
+
- 包名与类型后缀来自批准工程基线;Mapper 与 Repository 的命名不能替代职责、运行时发现和行为验证。
|
|
@@ -2,6 +2,7 @@ import assert from "node:assert/strict";
|
|
|
2
2
|
import { access, readFile, readdir } from "node:fs/promises";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import test from "node:test";
|
|
5
|
+
import { parseDocument } from "../../../../scripts/vendor/yaml.mjs";
|
|
5
6
|
import { fileURLToPath } from "node:url";
|
|
6
7
|
|
|
7
8
|
const repositorySkillRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
@@ -15,7 +16,8 @@ async function text(target) {
|
|
|
15
16
|
test("repository router exposes exactly the registered profile entry points", async () => {
|
|
16
17
|
const profilesRoot = path.join(repositorySkillRoot, "references/profiles");
|
|
17
18
|
const profiles = (await readdir(profilesRoot)).filter((name) => name.endsWith(".md")).sort();
|
|
18
|
-
|
|
19
|
+
const registry = parseDocument(await text(path.join(projectRoot, "docs/agents/yss-skill-registry.yaml"))).toJS();
|
|
20
|
+
assert.deepEqual(profiles, [...Object.keys(registry.architecture_profiles), ...Object.keys(registry.existing_project_profiles)].map(id => `${id}.md`).sort());
|
|
19
21
|
|
|
20
22
|
const skill = await text(path.join(repositorySkillRoot, "SKILL.md"));
|
|
21
23
|
for (const profile of profiles) assert.match(skill, new RegExp(`references/profiles/${profile.replace(".md", "")}`));
|
|
@@ -69,4 +69,4 @@ Plan 的目标与退出条件由 `docs/process/lifecycle-registry.yaml` 持有
|
|
|
69
69
|
|
|
70
70
|
## 战略交接快照包
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
跨仓交付或恢复时读取 [战略交接合同](references/strategic-handoff-routing.md)。只接受当前可核验包与承接结果;用户决定、版本失效和批准边界仍由主控持有。
|
|
@@ -36,9 +36,7 @@ description: 在 YSS 技术分析阶段将批准的战略领域输入细化为
|
|
|
36
36
|
|
|
37
37
|
## 战略交接快照包
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
战术合同必须绑定 `strategic_handoff` 导入收据、包摘要、正式目标对账及逐条承接 rows。来自导入包时禁止仅填 `upstream_current: true`。批准前执行 `scripts/verify-strategic-handoff-consumption --root <target> <tactical>`;存在受控延期时按切片执行 `--slice <slice-id>`,实际核验通过且合同批准后才可继续相关切片。最新源规则、关键场景或资产变化使依赖项 stale;未知依赖扩大阻断,业务冲突回交战略方。结果绑定当前包与战术摘要,不能复用旧输出宣布 ready-for-agent。
|
|
39
|
+
仅在输入来自战略交接包时,读取 [战略承接核验](references/strategic-handoff-routing.md),绑定收据、摘要和逐规则承接;源变化或未知依赖阻断并回交主控。
|
|
42
40
|
|
|
43
41
|
## 后端脚手架平台承接
|
|
44
42
|
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
## 战略交接快照包
|
|
2
|
+
|
|
3
|
+
跨仓交接使用 `scripts/strategic-handoff export / verify / import`。正式导出前补齐源战略的稳定规则 ID、关键场景和当前批准绑定;源资产原字节冻结、包内路径通过清单解析。目标导入只产生快照和对账/承接草案,正式 reconciliation 通过后才能进入战术设计。流程与字段见 `docs/process/strategic-handoff-package.md`。
|
|
4
|
+
|
|
5
|
+
战术合同必须绑定 `strategic_handoff` 导入收据、包摘要、正式目标对账及逐条承接 rows。来自导入包时禁止仅填 `upstream_current: true`。批准前执行 `scripts/verify-strategic-handoff-consumption --root <target> <tactical>`;存在受控延期时按切片执行 `--slice <slice-id>`,实际核验通过且合同批准后才可继续相关切片。最新源规则、关键场景或资产变化使依赖项 stale;未知依赖扩大阻断,业务冲突回交战略方。结果绑定当前包与战术摘要,不能复用旧输出宣布 ready-for-agent。
|
|
@@ -18,7 +18,9 @@ description: "生成或改造完整 YSS UI CRUD、列表、表单、详情或左
|
|
|
18
18
|
- 只写文档、提交信息或发版流程,不生成业务页面代码。
|
|
19
19
|
- 用户明确要求不用 YSS UI 组件库。
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## 按影响读取参考
|
|
22
|
+
|
|
23
|
+
先读组件来源与当前实现合同;仅加载当前页面实际使用的组件、Hook、Utils 与交付验证资料,不预读所有专项技能。
|
|
22
24
|
|
|
23
25
|
- 组件来源速查:`./references/component-map.md`
|
|
24
26
|
- Hooks 速查:`./references/hooks-map.md`
|
|
@@ -56,7 +58,7 @@ description: "生成或改造完整 YSS UI CRUD、列表、表单、详情或左
|
|
|
56
58
|
- 新增/导入/批量操作等主操作直接放入 `#toolbar-right` 插槽;**无需配置 `:toolbar-config="{ custom: true }"`**,避免无端展示列设置图标;**仅在业务明确需要列设置时才传入 `:toolbar-config="{ custom: true }"`**。
|
|
57
59
|
- 删除确认默认使用 `YTable actionConfig.buttons[].isConfirm` 按钮项或 AntDV `Popconfirm` 气泡确认,禁止默认使用居中 `Modal.confirm`。
|
|
58
60
|
- 样式抽离到 `style.less`,在 SFC 中使用 `<style scoped lang="less">@import './style.less';</style>`。
|
|
59
|
-
- `index.vue`
|
|
61
|
+
- `index.vue` 按职责保持可读;状态或副作用使视图难以理解时拆分,不以固定行数作为验收门禁;状态、API、副作用和处理方法进入 `hooks/`,列定义和静态配置进入 `constant.ts`。
|
|
60
62
|
- 页面目录默认使用 `index.vue + constant.ts + style.less + hooks/`;只有存在多个私有视图或大量独立类型时才增加 `components/` 和 `type.ts`。`index.vue` 只做 Hook 组合、视图编排和事件转发。
|
|
61
63
|
- 列表查询只维护一份 `currentParams`;查询、重置、树节点切换均回到第一页,翻页保留筛选条件,批量操作成功后清空选中态。组件 API 服从 `ytable-usage` / `ytree-usage`,请求和竞态服从 `yss-hook`。
|
|
62
64
|
- Modal/Drawer 表单的 `open/mode/currentId/formModel/submitting`、回填、提交和关闭收敛在同一业务 Hook。新增/编辑数据在打开容器前准备,容器关闭时销毁并清理;默认依赖响应式 `mode`/model,不用动态 `:key` 强制重挂载。
|
|
@@ -84,7 +86,7 @@ src/views/{module-name}/
|
|
|
84
86
|
|
|
85
87
|
## 生成流程
|
|
86
88
|
|
|
87
|
-
1.
|
|
89
|
+
1. 读取组件来源速查;页面使用 Hook 或 Utils 时才追加相应 reference。按上述文档检索顺序核对真实 API 与导出,禁止根据旧示例猜测。
|
|
88
90
|
2. 读取 `theme-token-usage`,检查项目真实主题变量与运行时同步链路。
|
|
89
91
|
3. 若有截图或旧项目路径,先读取已批准且 digest 当前的 Visual Baseline manifest 和 `frontend_implementation_plan`,按 `case_id` 提取布局、状态、交互、响应式与控件类型验收项;缺失或摘要漂移时返回 `blocked`,不得凭目录或截图猜测。
|
|
90
92
|
4. 按需求类型加载细分 skill:列表读 `ytable-usage` 与 `yss-hook`;表单读 `yss-formily`;编辑表格读 `yedit-table-usage`;树读 `ytree-usage`;导出下载读 `file-export-download`。
|
|
@@ -20,7 +20,7 @@ Read `references/source-index.md` as a path-hint index whenever the task depends
|
|
|
20
20
|
## Workflow
|
|
21
21
|
|
|
22
22
|
1. Identify whether the task is JSR-303 annotation validation or an expression/EL parser request.
|
|
23
|
-
2.
|
|
23
|
+
2. Select the approved platform index and inspect the actual POM, validation message resources, consuming Controller annotations and matching exception Advice. The current module README is empty; do not treat reading it as prerequisite evidence.
|
|
24
24
|
3. 当前组件仓不存在历史 `yss-component-validation-engine-parent`;表达式、LiteFlow EL 或 `ExpressParserFactory` 请求返回 `blocked`,先确认真实组件来源和生命周期影响,不以旧索引或通用知识生成实现。
|
|
25
25
|
4. Keep validation failures mapped to the service/API error contract used by the local project.
|
|
26
26
|
5. 消费工程基线选择 javax/jakarta,不自行升级 Java/Boot。MVC 输入校验放在 server/client,业务不变量由 service/core 验证;不生成 DDD Domain。HTTP 失败形态由 server 的合同测试验证。
|