create-yss-spec 2.2.9 → 2.2.10
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/mcp_config.json +8 -0
- package/template/.agents/rules/yss-ai-skills.md +3 -1
- package/template/.agents/skills/.yss-skills-manifest.json +51 -25
- package/template/.agents/skills/code-review/references/yss-review-standards.md +3 -3
- package/template/.agents/skills/component-selection-imports/SKILL.md +2 -2
- package/template/.agents/skills/frontend-commit/SKILL.md +1 -1
- package/template/.agents/skills/yss-api-integration/SKILL.md +85 -339
- package/template/.agents/skills/yss-application/SKILL.md +7 -5
- package/template/.agents/skills/yss-application/references/application-layer-guide.md +60 -105
- package/template/.agents/skills/yss-components/SKILL.md +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
- package/template/.agents/skills/yss-design-system/SKILL.md +2 -2
- package/template/.agents/skills/yss-design-system/references/design-system.md +2 -2
- package/template/.agents/skills/yss-domain/SKILL.md +3 -3
- package/template/.agents/skills/yss-domain/references/domain-layer-guide.md +61 -236
- package/template/.agents/skills/yss-dto/SKILL.md +5 -5
- package/template/.agents/skills/yss-dto/references/README.md +2 -2
- package/template/.agents/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
- package/template/.agents/skills/yss-exception/SKILL.md +2 -0
- package/template/.agents/skills/yss-formily/SKILL.md +1 -1
- package/template/.agents/skills/yss-mybatis/SKILL.md +2 -2
- package/template/.agents/skills/yss-page-module-development/SKILL.md +2 -0
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
- package/template/.agents/skills/yss-repository/SKILL.md +7 -5
- package/template/.agents/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
- package/template/.agents/skills/yss-router/references/router-contract.yaml +41 -7
- package/template/.agents/skills/yss-ui/SKILL.md +6 -5
- package/template/.agents/skills/yss-ui/references/component-routing.md +1 -1
- package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +159 -0
- package/template/.agents/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
- package/template/.agents/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
- package/template/.agents/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
- package/template/.agents/skills/yss-use-table-height/SKILL.md +78 -297
- package/template/.agents/skills/yss-use-tree-height/SKILL.md +51 -393
- package/template/.agents/skills/yss-web-controller/SKILL.md +12 -11
- package/template/.agents/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
- package/template/.agents/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
- package/template/{.claude/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template → .agents/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template} +7 -11
- package/template/.agents/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
- package/template/.agents/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
- package/template/.agents/skills/yss-web-controller/assets/templates/{domain/dto/cmd/AddCmd.java.template → web/dto/UpdateRequest.java.template} +7 -11
- package/template/.agents/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
- package/template/.agents/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
- package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
- package/template/.claude/skills/code-review/references/yss-review-standards.md +3 -3
- package/template/.claude/skills/component-selection-imports/SKILL.md +2 -2
- package/template/.claude/skills/frontend-commit/SKILL.md +1 -1
- package/template/.claude/skills/yss-api-integration/SKILL.md +85 -339
- package/template/.claude/skills/yss-application/SKILL.md +7 -5
- package/template/.claude/skills/yss-application/references/application-layer-guide.md +60 -105
- package/template/.claude/skills/yss-components/SKILL.md +1 -1
- package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
- package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
- package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
- package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
- package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
- package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
- package/template/.claude/skills/yss-design-system/SKILL.md +2 -2
- package/template/.claude/skills/yss-design-system/references/design-system.md +2 -2
- package/template/.claude/skills/yss-domain/SKILL.md +3 -3
- package/template/.claude/skills/yss-domain/references/domain-layer-guide.md +61 -236
- package/template/.claude/skills/yss-dto/SKILL.md +5 -5
- package/template/.claude/skills/yss-dto/references/README.md +2 -2
- package/template/.claude/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
- package/template/.claude/skills/yss-exception/SKILL.md +2 -0
- package/template/.claude/skills/yss-formily/SKILL.md +1 -1
- package/template/.claude/skills/yss-mybatis/SKILL.md +2 -2
- package/template/.claude/skills/yss-page-module-development/SKILL.md +2 -0
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
- package/template/.claude/skills/yss-repository/SKILL.md +7 -5
- package/template/.claude/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
- package/template/.claude/skills/yss-router/references/router-contract.yaml +41 -7
- package/template/.claude/skills/yss-ui/SKILL.md +6 -5
- package/template/.claude/skills/yss-ui/references/component-routing.md +1 -1
- package/template/.claude/skills/yss-ui-business-page-generation/SKILL.md +159 -0
- package/template/.claude/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
- package/template/.claude/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
- package/template/.claude/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
- package/template/.claude/skills/yss-use-table-height/SKILL.md +78 -297
- package/template/.claude/skills/yss-use-tree-height/SKILL.md +51 -393
- package/template/.claude/skills/yss-web-controller/SKILL.md +12 -11
- package/template/.claude/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
- package/template/.claude/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
- package/template/{.codex/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template → .claude/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template} +7 -11
- package/template/.claude/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
- package/template/.claude/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
- package/template/{.cursor/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template → .claude/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template} +7 -11
- package/template/.claude/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
- package/template/.claude/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
- package/template/.claude/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
- package/template/.codex/skills/code-review/references/yss-review-standards.md +3 -3
- package/template/.codex/skills/component-selection-imports/SKILL.md +2 -2
- package/template/.codex/skills/frontend-commit/SKILL.md +1 -1
- package/template/.codex/skills/yss-api-integration/SKILL.md +85 -339
- package/template/.codex/skills/yss-application/SKILL.md +7 -5
- package/template/.codex/skills/yss-application/references/application-layer-guide.md +60 -105
- package/template/.codex/skills/yss-components/SKILL.md +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
- package/template/.codex/skills/yss-design-system/SKILL.md +2 -2
- package/template/.codex/skills/yss-design-system/references/design-system.md +2 -2
- package/template/.codex/skills/yss-domain/SKILL.md +3 -3
- package/template/.codex/skills/yss-domain/references/domain-layer-guide.md +61 -236
- package/template/.codex/skills/yss-dto/SKILL.md +5 -5
- package/template/.codex/skills/yss-dto/references/README.md +2 -2
- package/template/.codex/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
- package/template/.codex/skills/yss-exception/SKILL.md +2 -0
- package/template/.codex/skills/yss-formily/SKILL.md +1 -1
- package/template/.codex/skills/yss-mybatis/SKILL.md +2 -2
- package/template/.codex/skills/yss-page-module-development/SKILL.md +2 -0
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
- package/template/.codex/skills/yss-repository/SKILL.md +7 -5
- package/template/.codex/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
- package/template/.codex/skills/yss-router/references/router-contract.yaml +41 -7
- package/template/.codex/skills/yss-ui/SKILL.md +6 -5
- package/template/.codex/skills/yss-ui/references/component-routing.md +1 -1
- package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +159 -0
- package/template/.codex/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
- package/template/.codex/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
- package/template/.codex/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
- package/template/.codex/skills/yss-use-table-height/SKILL.md +78 -297
- package/template/.codex/skills/yss-use-tree-height/SKILL.md +51 -393
- package/template/.codex/skills/yss-web-controller/SKILL.md +12 -11
- package/template/.codex/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
- package/template/.codex/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
- package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
- package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
- package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
- package/template/.codex/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
- package/template/.codex/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
- package/template/.codex/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
- package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
- package/template/.cursor/mcp.json +8 -0
- package/template/.cursor/skills/code-review/references/yss-review-standards.md +3 -3
- package/template/.cursor/skills/component-selection-imports/SKILL.md +2 -2
- package/template/.cursor/skills/frontend-commit/SKILL.md +1 -1
- package/template/.cursor/skills/yss-api-integration/SKILL.md +85 -339
- package/template/.cursor/skills/yss-application/SKILL.md +7 -5
- package/template/.cursor/skills/yss-application/references/application-layer-guide.md +60 -105
- package/template/.cursor/skills/yss-components/SKILL.md +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
- package/template/.cursor/skills/yss-design-system/SKILL.md +2 -2
- package/template/.cursor/skills/yss-design-system/references/design-system.md +2 -2
- package/template/.cursor/skills/yss-domain/SKILL.md +3 -3
- package/template/.cursor/skills/yss-domain/references/domain-layer-guide.md +61 -236
- package/template/.cursor/skills/yss-dto/SKILL.md +5 -5
- package/template/.cursor/skills/yss-dto/references/README.md +2 -2
- package/template/.cursor/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
- package/template/.cursor/skills/yss-exception/SKILL.md +2 -0
- package/template/.cursor/skills/yss-formily/SKILL.md +1 -1
- package/template/.cursor/skills/yss-mybatis/SKILL.md +2 -2
- package/template/.cursor/skills/yss-page-module-development/SKILL.md +2 -0
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
- package/template/.cursor/skills/yss-repository/SKILL.md +7 -5
- package/template/.cursor/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
- package/template/.cursor/skills/yss-router/references/router-contract.yaml +41 -7
- package/template/.cursor/skills/yss-ui/SKILL.md +6 -5
- package/template/.cursor/skills/yss-ui/references/component-routing.md +1 -1
- package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +159 -0
- package/template/.cursor/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
- package/template/.cursor/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
- package/template/.cursor/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
- package/template/.cursor/skills/yss-use-table-height/SKILL.md +78 -297
- package/template/.cursor/skills/yss-use-tree-height/SKILL.md +51 -393
- package/template/.cursor/skills/yss-web-controller/SKILL.md +12 -11
- package/template/.cursor/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
- package/template/.cursor/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
- package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
- package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
- package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
- package/template/.cursor/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
- package/template/.cursor/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
- package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
- package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
- package/template/.cursorrules +9 -5
- package/template/.gemini/settings.json +8 -0
- package/template/.hermes/skills/code-review/references/yss-review-standards.md +3 -3
- package/template/.hermes/skills/component-selection-imports/SKILL.md +2 -2
- package/template/.hermes/skills/frontend-commit/SKILL.md +1 -1
- package/template/.hermes/skills/yss-api-integration/SKILL.md +85 -339
- package/template/.hermes/skills/yss-application/SKILL.md +7 -5
- package/template/.hermes/skills/yss-application/references/application-layer-guide.md +60 -105
- package/template/.hermes/skills/yss-components/SKILL.md +1 -1
- package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
- package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
- package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
- package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
- package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
- package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
- package/template/.hermes/skills/yss-design-system/SKILL.md +2 -2
- package/template/.hermes/skills/yss-design-system/references/design-system.md +2 -2
- package/template/.hermes/skills/yss-domain/SKILL.md +3 -3
- package/template/.hermes/skills/yss-domain/references/domain-layer-guide.md +61 -236
- package/template/.hermes/skills/yss-dto/SKILL.md +5 -5
- package/template/.hermes/skills/yss-dto/references/README.md +2 -2
- package/template/.hermes/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
- package/template/.hermes/skills/yss-exception/SKILL.md +2 -0
- package/template/.hermes/skills/yss-formily/SKILL.md +1 -1
- package/template/.hermes/skills/yss-mybatis/SKILL.md +2 -2
- package/template/.hermes/skills/yss-page-module-development/SKILL.md +2 -0
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
- package/template/.hermes/skills/yss-repository/SKILL.md +7 -5
- package/template/.hermes/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
- package/template/.hermes/skills/yss-router/references/router-contract.yaml +41 -7
- package/template/.hermes/skills/yss-ui/SKILL.md +6 -5
- package/template/.hermes/skills/yss-ui/references/component-routing.md +1 -1
- package/template/.hermes/skills/yss-ui-business-page-generation/SKILL.md +159 -0
- package/template/.hermes/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
- package/template/.hermes/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
- package/template/.hermes/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
- package/template/.hermes/skills/yss-use-table-height/SKILL.md +78 -297
- package/template/.hermes/skills/yss-use-tree-height/SKILL.md +51 -393
- package/template/.hermes/skills/yss-web-controller/SKILL.md +12 -11
- package/template/.hermes/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
- package/template/.hermes/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
- package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
- package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
- package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
- package/template/.hermes/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
- package/template/.hermes/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
- package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
- package/template/.hermes/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
- package/template/.kiro/settings/mcp.json +8 -0
- package/template/.mcp.json +8 -0
- package/template/.pi/skills/code-review/references/yss-review-standards.md +3 -3
- package/template/.pi/skills/component-selection-imports/SKILL.md +2 -2
- package/template/.pi/skills/frontend-commit/SKILL.md +1 -1
- package/template/.pi/skills/yss-api-integration/SKILL.md +85 -339
- package/template/.pi/skills/yss-application/SKILL.md +7 -5
- package/template/.pi/skills/yss-application/references/application-layer-guide.md +60 -105
- package/template/.pi/skills/yss-components/SKILL.md +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
- package/template/.pi/skills/yss-design-system/SKILL.md +2 -2
- package/template/.pi/skills/yss-design-system/references/design-system.md +2 -2
- package/template/.pi/skills/yss-domain/SKILL.md +3 -3
- package/template/.pi/skills/yss-domain/references/domain-layer-guide.md +61 -236
- package/template/.pi/skills/yss-dto/SKILL.md +5 -5
- package/template/.pi/skills/yss-dto/references/README.md +2 -2
- package/template/.pi/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
- package/template/.pi/skills/yss-exception/SKILL.md +2 -0
- package/template/.pi/skills/yss-formily/SKILL.md +1 -1
- package/template/.pi/skills/yss-mybatis/SKILL.md +2 -2
- package/template/.pi/skills/yss-page-module-development/SKILL.md +2 -0
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
- package/template/.pi/skills/yss-repository/SKILL.md +7 -5
- package/template/.pi/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
- package/template/.pi/skills/yss-router/references/router-contract.yaml +41 -7
- package/template/.pi/skills/yss-ui/SKILL.md +6 -5
- package/template/.pi/skills/yss-ui/references/component-routing.md +1 -1
- package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +159 -0
- package/template/.pi/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
- package/template/.pi/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
- package/template/.pi/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
- package/template/.pi/skills/yss-use-table-height/SKILL.md +78 -297
- package/template/.pi/skills/yss-use-tree-height/SKILL.md +51 -393
- package/template/.pi/skills/yss-web-controller/SKILL.md +12 -11
- package/template/.pi/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
- package/template/.pi/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
- package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
- package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
- package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
- package/template/.pi/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
- package/template/.pi/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
- package/template/.pi/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
- package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
- package/template/.qoder/skills/code-review/references/yss-review-standards.md +3 -3
- package/template/.qoder/skills/component-selection-imports/SKILL.md +2 -2
- package/template/.qoder/skills/frontend-commit/SKILL.md +1 -1
- package/template/.qoder/skills/yss-api-integration/SKILL.md +85 -339
- package/template/.qoder/skills/yss-application/SKILL.md +7 -5
- package/template/.qoder/skills/yss-application/references/application-layer-guide.md +60 -105
- package/template/.qoder/skills/yss-components/SKILL.md +1 -1
- package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
- package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
- package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
- package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
- package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
- package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
- package/template/.qoder/skills/yss-design-system/SKILL.md +2 -2
- package/template/.qoder/skills/yss-design-system/references/design-system.md +2 -2
- package/template/.qoder/skills/yss-domain/SKILL.md +3 -3
- package/template/.qoder/skills/yss-domain/references/domain-layer-guide.md +61 -236
- package/template/.qoder/skills/yss-dto/SKILL.md +5 -5
- package/template/.qoder/skills/yss-dto/references/README.md +2 -2
- package/template/.qoder/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
- package/template/.qoder/skills/yss-exception/SKILL.md +2 -0
- package/template/.qoder/skills/yss-formily/SKILL.md +1 -1
- package/template/.qoder/skills/yss-mybatis/SKILL.md +2 -2
- package/template/.qoder/skills/yss-page-module-development/SKILL.md +2 -0
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
- package/template/.qoder/skills/yss-repository/SKILL.md +7 -5
- package/template/.qoder/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
- package/template/.qoder/skills/yss-router/references/router-contract.yaml +41 -7
- package/template/.qoder/skills/yss-ui/SKILL.md +6 -5
- package/template/.qoder/skills/yss-ui/references/component-routing.md +1 -1
- package/template/.qoder/skills/yss-ui-business-page-generation/SKILL.md +159 -0
- package/template/.qoder/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
- package/template/.qoder/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
- package/template/.qoder/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
- package/template/.qoder/skills/yss-use-table-height/SKILL.md +78 -297
- package/template/.qoder/skills/yss-use-tree-height/SKILL.md +51 -393
- package/template/.qoder/skills/yss-web-controller/SKILL.md +12 -11
- package/template/.qoder/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
- package/template/.qoder/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
- package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
- package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
- package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
- package/template/.qoder/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
- package/template/.qoder/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
- package/template/.qoder/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
- package/template/.qoder/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
- package/template/.trae/skills/code-review/references/yss-review-standards.md +3 -3
- package/template/.trae/skills/component-selection-imports/SKILL.md +2 -2
- package/template/.trae/skills/frontend-commit/SKILL.md +1 -1
- package/template/.trae/skills/yss-api-integration/SKILL.md +85 -339
- package/template/.trae/skills/yss-application/SKILL.md +7 -5
- package/template/.trae/skills/yss-application/references/application-layer-guide.md +60 -105
- package/template/.trae/skills/yss-components/SKILL.md +1 -1
- package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +27 -13
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/application-local.yml.template +8 -0
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +2 -3
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/java/architecture-rules-test.java.template +36 -0
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/java/bootstrap-application.java.template +15 -0
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +3 -3
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +13 -4
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +24 -4
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +6 -20
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +26 -6
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +70 -10
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +24 -10
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +2 -3
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +18 -105
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +4 -2
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +78 -156
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +83 -389
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +20 -188
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +41 -122
- package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +191 -0
- package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +126 -0
- package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +139 -42
- package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +87 -7
- package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +322 -12
- package/template/.trae/skills/yss-design-system/SKILL.md +2 -2
- package/template/.trae/skills/yss-design-system/references/design-system.md +2 -2
- package/template/.trae/skills/yss-domain/SKILL.md +3 -3
- package/template/.trae/skills/yss-domain/references/domain-layer-guide.md +61 -236
- package/template/.trae/skills/yss-dto/SKILL.md +5 -5
- package/template/.trae/skills/yss-dto/references/README.md +2 -2
- package/template/.trae/skills/yss-dto/references/openapi-wire-profile.yaml +3 -3
- package/template/.trae/skills/yss-exception/SKILL.md +2 -0
- package/template/.trae/skills/yss-formily/SKILL.md +1 -1
- package/template/.trae/skills/yss-mybatis/SKILL.md +2 -2
- package/template/.trae/skills/yss-page-module-development/SKILL.md +2 -0
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +42 -11
- package/template/.trae/skills/yss-repository/SKILL.md +7 -5
- package/template/.trae/skills/yss-repository/references/infrastructure-layer-guide.md +70 -155
- package/template/.trae/skills/yss-router/references/router-contract.yaml +41 -7
- package/template/.trae/skills/yss-ui/SKILL.md +6 -5
- package/template/.trae/skills/yss-ui/references/component-routing.md +1 -1
- package/template/.trae/skills/yss-ui-business-page-generation/SKILL.md +159 -0
- package/template/.trae/skills/yss-ui-business-page-generation/references/component-map.md +39 -0
- package/template/.trae/skills/yss-ui-business-page-generation/references/hooks-map.md +70 -0
- package/template/.trae/skills/yss-ui-business-page-generation/references/utils-map.md +51 -0
- package/template/.trae/skills/yss-use-table-height/SKILL.md +78 -297
- package/template/.trae/skills/yss-use-tree-height/SKILL.md +51 -393
- package/template/.trae/skills/yss-web-controller/SKILL.md +12 -11
- package/template/.trae/skills/yss-web-controller/assets/templates/Controller.java.template +15 -16
- package/template/.trae/skills/yss-web-controller/assets/templates/WebConvertor.java.template +21 -11
- package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/CreateRequest.java.template +19 -0
- package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template +24 -0
- package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/Response.java.template +18 -0
- package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/UpdateRequest.java.template +19 -0
- package/template/.trae/skills/yss-web-controller/references/web-adapter-layer-guide.md +61 -145
- package/template/.trae/skills/yss-web-controller/scripts/generate_controller.mjs +45 -17
- package/template/.trae/skills/yss-web-controller/scripts/generate_controller.test.mjs +44 -3
- package/template/.vscode/mcp.json +8 -0
- package/template/README.md +3 -0
- package/template/docs/agents/digital-human-roles.yaml +1 -1
- package/template/docs/agents/skills-maintenance.md +7 -4
- package/template/docs/agents/yss-skill-registry.yaml +7 -1
- package/template/docs/agents/yss-ui-skills-integration.md +24 -0
- package/template/docs/process/template-verification-profiles.yaml +11 -0
- package/template/docs/templates/implementation-routing-template.md +5 -3
- package/template/docs/templates/review-report-template.md +2 -2
- package/template/docs/user-guide/yss-ui-mcp.md +43 -0
- package/template/scripts/lib/scenario-checks.mjs +3 -3
- package/template/scripts/lib/skill-governance.mjs +36 -2
- package/template/scripts/lib/skill-registry.mjs +2 -1
- package/template/scripts/lib/skill-supply-chain.mjs +72 -1
- package/template/scripts/verify-scaffold-generator-scenarios +150 -44
- package/template/scripts/verify-skill-governance +1 -1
- package/template/scripts/verify-upstream-skill-source +38 -3
- package/template/scripts/verify-yss-dto-openapi-profile +4 -2
- package/template/skills-lock.json +159 -84
- package/template/yss-public-skills.json +2 -0
- package/template.manifest.json +4 -0
- package/template.snapshot.json +5 -5
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
- package/template/.agents/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
- package/template/.agents/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
- package/template/.agents/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
- package/template/.claude/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
- package/template/.claude/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
- package/template/.claude/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
- package/template/.codex/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
- package/template/.codex/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
- package/template/.codex/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
- package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
- package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
- package/template/.cursor/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
- package/template/.hermes/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
- package/template/.hermes/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
- package/template/.hermes/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
- package/template/.hermes/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
- package/template/.pi/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
- package/template/.pi/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
- package/template/.pi/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
- package/template/.pi/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
- package/template/.qoder/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
- package/template/.qoder/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
- package/template/.qoder/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
- package/template/.qoder/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +0 -84
- package/template/.trae/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +0 -23
- package/template/.trae/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +0 -23
- package/template/.trae/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +0 -21
- package/template/.trae/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +0 -20
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package ${base_package}.rest.dto.request;
|
|
2
|
+
|
|
3
|
+
import com.yss.cloud.dto.CommandDTO;
|
|
4
|
+
import lombok.Getter;
|
|
5
|
+
import lombok.Setter;
|
|
6
|
+
import ${validation_namespace}.validation.constraints.NotBlank;
|
|
7
|
+
import ${validation_namespace}.validation.constraints.NotNull;
|
|
8
|
+
import java.util.Date;
|
|
9
|
+
import java.math.BigDecimal;
|
|
10
|
+
import java.time.LocalDateTime;
|
|
11
|
+
import java.time.LocalDate;
|
|
12
|
+
|
|
13
|
+
/** ${domain_desc}新增请求。字段来自批准的 OpenAPI allowlist。 */
|
|
14
|
+
@Getter
|
|
15
|
+
@Setter
|
|
16
|
+
public class ${domain_class}CreateRequest extends CommandDTO {
|
|
17
|
+
|
|
18
|
+
${field_declarations}
|
|
19
|
+
}
|
package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/PageRequest.java.template
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
package ${base_package}.rest.dto.request;
|
|
2
|
+
|
|
3
|
+
import com.yss.cloud.dto.QueryDTO;
|
|
4
|
+
import lombok.Getter;
|
|
5
|
+
import lombok.Setter;
|
|
6
|
+
import java.util.Date;
|
|
7
|
+
import java.math.BigDecimal;
|
|
8
|
+
import java.time.LocalDateTime;
|
|
9
|
+
import java.time.LocalDate;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* ${domain_desc}分页请求。仅暴露已冻结的 HTTP 查询字段。
|
|
13
|
+
*/
|
|
14
|
+
@Getter
|
|
15
|
+
@Setter
|
|
16
|
+
public class ${domain_class}PageRequest extends QueryDTO {
|
|
17
|
+
private int pageIndex = 1;
|
|
18
|
+
private int pageSize = 20;
|
|
19
|
+
private String orderBy;
|
|
20
|
+
private String orderDirection;
|
|
21
|
+
private String groupBy;
|
|
22
|
+
|
|
23
|
+
${field_declarations}
|
|
24
|
+
}
|
package/template/.trae/skills/yss-web-controller/assets/templates/web/dto/Response.java.template
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
package ${base_package}.rest.dto.response;
|
|
2
|
+
|
|
3
|
+
import lombok.Getter;
|
|
4
|
+
import lombok.Setter;
|
|
5
|
+
import java.io.Serializable;
|
|
6
|
+
import java.util.Date;
|
|
7
|
+
import java.math.BigDecimal;
|
|
8
|
+
import java.time.LocalDateTime;
|
|
9
|
+
import java.time.LocalDate;
|
|
10
|
+
|
|
11
|
+
/** ${domain_desc}公开响应。字段来自批准的 OpenAPI allowlist。 */
|
|
12
|
+
@Getter
|
|
13
|
+
@Setter
|
|
14
|
+
public class ${domain_class}Response implements Serializable {
|
|
15
|
+
private static final long serialVersionUID = 1L;
|
|
16
|
+
|
|
17
|
+
${field_declarations}
|
|
18
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package ${base_package}.rest.dto.request;
|
|
2
|
+
|
|
3
|
+
import com.yss.cloud.dto.CommandDTO;
|
|
4
|
+
import lombok.Getter;
|
|
5
|
+
import lombok.Setter;
|
|
6
|
+
import ${validation_namespace}.validation.constraints.NotBlank;
|
|
7
|
+
import ${validation_namespace}.validation.constraints.NotNull;
|
|
8
|
+
import java.util.Date;
|
|
9
|
+
import java.math.BigDecimal;
|
|
10
|
+
import java.time.LocalDateTime;
|
|
11
|
+
import java.time.LocalDate;
|
|
12
|
+
|
|
13
|
+
/** ${domain_desc}更新请求。字段来自批准的 OpenAPI allowlist。 */
|
|
14
|
+
@Getter
|
|
15
|
+
@Setter
|
|
16
|
+
public class ${domain_class}UpdateRequest extends CommandDTO {
|
|
17
|
+
|
|
18
|
+
${field_declarations}
|
|
19
|
+
}
|
|
@@ -1,168 +1,84 @@
|
|
|
1
|
-
|
|
2
|
-
Web 适配器负责通过 HTTP 公开业务功能、处理输入验证和格式化响应。
|
|
1
|
+
# YSS Web Adapter Target Profile 指南
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
Web Adapter 负责 HTTP 边界、Wire DTO、校验、YSS Result 包装、WebConvertor 和异常翻译。它只调用 Application,不直接访问 Domain Gateway、Repository 或 PO。
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
- **Input Validation**: Validate request bodies and parameters using JSR-303/380 annotations (`@Valid`, `@NotNull`, etc.).
|
|
8
|
-
- **Response Formatting**: Wrap business results into standard `Result` objects (`SingleResult`, `PageResult`, `MultiResult`).
|
|
9
|
-
- **Orchestration Delegation**: Delegate business logic to the **Application Service**. Simple queries can be delegated directly to the **Domain Gateway** (CQRS pattern).
|
|
10
|
-
|
|
11
|
-
## 2. 代码结构 (Code Structure)
|
|
12
|
-
|
|
13
|
-
Web Adapters are typically located in the `bootstrap` module or a dedicated `web` module.
|
|
5
|
+
## 1. 包结构
|
|
14
6
|
|
|
7
|
+
```text
|
|
8
|
+
{base_package}.rest
|
|
9
|
+
├── dto
|
|
10
|
+
│ ├── request
|
|
11
|
+
│ └── response
|
|
12
|
+
├── convertor
|
|
13
|
+
├── exception
|
|
14
|
+
└── *Controller.java
|
|
15
15
|
```
|
|
16
|
-
com.yss.{module}.rest
|
|
17
|
-
├── {Domain}Controller.java # Main REST Controller
|
|
18
|
-
└── {Domain}ReportController.java # Optional: For reporting/stats APIs
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## 3. 开发规范 (Development Guidelines)
|
|
22
|
-
|
|
23
|
-
### 3.1 Controller 定义
|
|
24
|
-
|
|
25
|
-
- **注解**: 使用 `@RestController`。
|
|
26
|
-
- **路径**: `@RequestMapping("/api/{module}/{domain}")` (e.g., `/api/quality/rule`).
|
|
27
|
-
- **依赖注入**: 使用 Lombok `@RequiredArgsConstructor` 进行构造器注入。
|
|
28
|
-
- **命名**: `{Domain}Controller` (e.g., `QualityRuleController`).
|
|
29
|
-
|
|
30
|
-
### 3.2 依赖注入原则
|
|
31
16
|
|
|
32
|
-
|
|
33
|
-
- **读操作 (Query)**: 允许直接注入 **Domain Gateway** (`XxxGateway`) 以减少样板代码 (CQRS)。
|
|
17
|
+
DTO 固定属于 Web module。独立 client module 与把 client DTO 放进 Domain module 均为 `unsupported`;如未来确需发布复用制品,必须另行设计并批准新的 Target Profile,不能由当前脚手架推断或回退。
|
|
34
18
|
|
|
35
|
-
|
|
19
|
+
## 2. Wire 合同
|
|
36
20
|
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
- `PageResult<T>`: 分页数据。
|
|
43
|
-
- **Validation**: 必须在参数前添加 `@Valid` 注解。
|
|
21
|
+
- Request/Response 字段必须来自冻结 OpenAPI 和批准 allowlist。
|
|
22
|
+
- 数据库 metadata 只补充 Java 类型候选,不能自行扩大公开字段。
|
|
23
|
+
- Web Page Request 不继承含内部协作字段的 `PageQuery`;只暴露批准的 `pageIndex/pageSize/orderBy/orderDirection/groupBy` 及业务查询字段。
|
|
24
|
+
- `orderBy` / `groupBy` 必须在 Application/Infrastructure 映射到数据库列白名单。
|
|
25
|
+
- `offset`、`needTotalCount`、`tempTotalCount` 禁止进入 HTTP 绑定面。
|
|
44
26
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
- **不要**在 Controller 中捕获通用异常 (`Exception`)。
|
|
48
|
-
- 让全局异常处理器 (`GlobalExceptionHandler`) 统一处理运行时异常。
|
|
49
|
-
- 仅在需要特定 HTTP 状态码转换时捕获特定异常。
|
|
50
|
-
|
|
51
|
-
## 4. 代码示例 (Code Examples)
|
|
52
|
-
|
|
53
|
-
### 4.1 标准 CRUD Controller
|
|
27
|
+
## 3. Controller
|
|
54
28
|
|
|
55
29
|
```java
|
|
56
|
-
package com.yss.{module}.rest;
|
|
57
|
-
|
|
58
|
-
import com.yss.cloud.dto.result.MultiResult;
|
|
59
|
-
import com.yss.cloud.dto.result.PageResult;
|
|
60
|
-
import com.yss.cloud.dto.result.SingleResult;
|
|
61
|
-
import com.yss.{module}.client.dto.cmd.{Domain}AddCmd;
|
|
62
|
-
import com.yss.{module}.client.dto.cmd.{Domain}UpdateCmd;
|
|
63
|
-
import com.yss.{module}.client.dto.cmd.{Domain}StatusCmd;
|
|
64
|
-
import com.yss.{module}.client.dto.query.{Domain}Page;
|
|
65
|
-
import com.yss.{module}.client.vo.{Domain}VO;
|
|
66
|
-
import com.yss.{module}.core.service.{Domain}Service;
|
|
67
|
-
// Optional: Import Gateway for direct queries
|
|
68
|
-
// import com.yss.{module}.domain.gateway.{Domain}Gateway;
|
|
69
|
-
import lombok.RequiredArgsConstructor;
|
|
70
|
-
import org.springframework.web.bind.annotation.*;
|
|
71
|
-
|
|
72
|
-
import javax.validation.Valid;
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* {Domain} 管理控制器
|
|
76
|
-
*
|
|
77
|
-
* @author {User}
|
|
78
|
-
*/
|
|
79
30
|
@RestController
|
|
80
|
-
@RequestMapping("/api/
|
|
31
|
+
@RequestMapping("/api/quality/quality-rule")
|
|
81
32
|
@RequiredArgsConstructor
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
private final
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* 分页查询 {Domain}
|
|
89
|
-
*
|
|
90
|
-
* @param query 查询条件
|
|
91
|
-
* @return 分页结果
|
|
92
|
-
*/
|
|
93
|
-
@PostMapping("/page")
|
|
94
|
-
public PageResult<{Domain}VO> page(@Valid @RequestBody {Domain}Page query) {
|
|
95
|
-
return {domainVar}Service.page(query);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* 根据ID查询详情
|
|
100
|
-
*
|
|
101
|
-
* @param id 主键ID
|
|
102
|
-
* @return 详情对象
|
|
103
|
-
*/
|
|
104
|
-
@GetMapping("/detail/{id}")
|
|
105
|
-
public SingleResult<{Domain}VO> detail(@PathVariable String id) {
|
|
106
|
-
return SingleResult.of({domainVar}Service.detail(id));
|
|
107
|
-
}
|
|
33
|
+
@Tag(name = "质量规则管理")
|
|
34
|
+
public class QualityRuleController {
|
|
35
|
+
private final QualityRuleService service;
|
|
36
|
+
private final QualityRuleWebConvertor webConvertor;
|
|
108
37
|
|
|
109
|
-
/**
|
|
110
|
-
* 新增 {Domain}
|
|
111
|
-
*
|
|
112
|
-
* @param cmd 新增命令
|
|
113
|
-
* @return 新增结果 (通常是ID或完整对象)
|
|
114
|
-
*/
|
|
115
38
|
@PostMapping
|
|
116
|
-
public SingleResult<Long>
|
|
117
|
-
return SingleResult.of(
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* 更新 {Domain}
|
|
122
|
-
*
|
|
123
|
-
* @param cmd 更新命令
|
|
124
|
-
* @return 更新结果
|
|
125
|
-
*/
|
|
126
|
-
@PutMapping
|
|
127
|
-
public SingleResult<Boolean> update(@Valid @RequestBody {Domain}UpdateCmd cmd) {
|
|
128
|
-
{domainVar}Service.update(cmd);
|
|
129
|
-
return SingleResult.of(true);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* 状态变更 (启用/禁用)
|
|
134
|
-
*
|
|
135
|
-
* @param cmd 状态命令
|
|
136
|
-
* @return 变更后的状态
|
|
137
|
-
*/
|
|
138
|
-
@PostMapping("/enabled")
|
|
139
|
-
public SingleResult<Integer> switchStatus(@Valid @RequestBody {Domain}StatusCmd cmd) {
|
|
140
|
-
{domainVar}Service.switchStatus(cmd);
|
|
141
|
-
return SingleResult.of(cmd.getStatus());
|
|
39
|
+
public SingleResult<Long> create(@Valid @RequestBody QualityRuleCreateRequest request) {
|
|
40
|
+
return SingleResult.of(service.create(webConvertor.toCreateCommand(request)));
|
|
142
41
|
}
|
|
143
42
|
}
|
|
144
43
|
```
|
|
145
44
|
|
|
146
|
-
|
|
45
|
+
- 只使用 OpenAPI 3 `io.swagger.v3.oas.annotations`;Swagger 2 为 `unsupported`,不存在 legacy Profile。
|
|
46
|
+
- Controller 不捕获通用 `Exception`,不写业务规则,不手工执行持久化分页。
|
|
47
|
+
- Controller seam 只出现 Web Request/Response 和 Application Service。
|
|
48
|
+
|
|
49
|
+
## 4. WebConvertor
|
|
147
50
|
|
|
148
51
|
```java
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
*/
|
|
155
|
-
@PostMapping("/execute")
|
|
156
|
-
public SingleResult<String> execute(@Valid @RequestBody {Domain}ExecuteCmd cmd) {
|
|
157
|
-
// 调用 Service 处理复杂业务逻辑
|
|
158
|
-
return SingleResult.of(
|
|
159
|
-
{domainVar}Service.execute(cmd)
|
|
160
|
-
);
|
|
161
|
-
}
|
|
52
|
+
@Mapper(componentModel = "spring")
|
|
53
|
+
public interface QualityRuleWebConvertor {
|
|
54
|
+
QualityRuleCreateCommand toCreateCommand(QualityRuleCreateRequest source);
|
|
55
|
+
QualityRuleResponse toResponse(QualityRuleResult source);
|
|
56
|
+
}
|
|
162
57
|
```
|
|
163
58
|
|
|
164
|
-
|
|
59
|
+
- 使用构造器注入,不定义静态 `INSTANCE`。
|
|
60
|
+
- Request → Application Command/Query;Application Result → Response。
|
|
61
|
+
- 不导入 Domain Model 或 Repository PO。
|
|
62
|
+
- 父 POM 必须配置 MapStruct processor、Lombok 与 `lombok-mapstruct-binding`,验证生成实现真实编译。
|
|
63
|
+
|
|
64
|
+
## 5. Exception Translator
|
|
65
|
+
|
|
66
|
+
- Domain/Application 错误经专门 Translator 映射为冻结 API 的 HTTP status、YSS error code 和消毒后的公开消息。
|
|
67
|
+
- known business、known system、unknown/runtime 三类都必须有 MockMvc/HTTP contract test。
|
|
68
|
+
- unknown/runtime 保留内部 cause/stack 用于日志,但公开响应禁止返回 `getLocalizedMessage()`。
|
|
69
|
+
- 复用 YSS global handler 前必须实测 auto-configuration 和 precedence;未经验证不能仅凭依赖存在宣称生效。
|
|
70
|
+
|
|
71
|
+
## 6. 生成门禁
|
|
72
|
+
|
|
73
|
+
- `generate_controller.mjs` 必须消费 `status=approved` 的 Web generation contract。
|
|
74
|
+
- 合同必须声明 `base_package`、`module_name`、`domain_segment`、`target-domain-model`、平台/validation Profile、`dto_placement=web`、OpenAPI Freeze 引用和每张表的 create/update/query/response allowlist;CLI 身份必须逐项匹配。
|
|
75
|
+
- 生成器是 initialize-only,必须在写入前规划全部目标;任一文件已存在或传入 `--force` 时整体阻断,不允许“跳过已有文件后继续生成”的部分成功。
|
|
76
|
+
- 权限、校验语义、异常行为和复杂查询仍使用 `behavior-tdd`,不能由 metadata 猜测。
|
|
77
|
+
|
|
78
|
+
## 7. 验证
|
|
165
79
|
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
-
|
|
80
|
+
- Controller 只依赖 Application。
|
|
81
|
+
- WebConvertor 无 Domain/Infrastructure import,并由 Spring 注入。
|
|
82
|
+
- Wire forbidden fields 无法绑定。
|
|
83
|
+
- OpenAPI 3 注解、YSS Result wrapper、Validation namespace 与平台 Profile 一致。
|
|
84
|
+
- 执行项目根 `./mvnw test/package`,并保留 HTTP/serialization/exception 证据。
|
|
@@ -4,18 +4,22 @@ import path from "node:path";
|
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
|
|
6
6
|
const TYPE_MAPPING = { bigint: "Long", int: "Integer", integer: "Integer", smallint: "Integer", tinyint: "Integer", number: "Long", numeric: "BigDecimal", decimal: "BigDecimal", float: "Float", double: "Double", real: "Float", varchar: "String", varchar2: "String", nvarchar2: "String", char: "String", nchar: "String", text: "String", clob: "String", nclob: "String", date: "LocalDateTime", datetime: "LocalDateTime", timestamp: "LocalDateTime", "timestamp with time zone": "LocalDateTime", boolean: "Boolean", bool: "Boolean", bit: "Boolean", json: "String", jsonb: "String", uuid: "String" };
|
|
7
|
-
const
|
|
8
|
-
|
|
7
|
+
const PLATFORM_VALIDATION_NAMESPACES = {
|
|
8
|
+
"spring-boot-2.7-jdk8": "javax",
|
|
9
|
+
"spring-boot-3-jdk17": "jakarta"
|
|
10
|
+
};
|
|
11
|
+
const required = ["metadata-file", "contract-file", "base-package", "module-name", "domain-segment"];
|
|
12
|
+
const valued = new Set([...required, "output-dir", "web-project-dir", "web-output-dir", "author", "application-service-package", "validation-namespace"]);
|
|
9
13
|
|
|
10
14
|
function usage() {
|
|
11
|
-
return "Usage: node generate_controller.mjs --metadata-file FILE --base-package PACKAGE --module-name NAME --domain-segment SEGMENT [--output-dir DIR] [--
|
|
15
|
+
return "Usage: node generate_controller.mjs --metadata-file FILE --contract-file FILE --base-package PACKAGE --module-name NAME --domain-segment SEGMENT [--output-dir DIR] [--web-project-dir DIR] [--web-output-dir DIR] [--author NAME] [--application-service-package PACKAGE] [--validation-namespace javax|jakarta]";
|
|
12
16
|
}
|
|
13
17
|
export function parseArgs(argv) {
|
|
14
18
|
const args = { "output-dir": "./output", author: "System", "validation-namespace": "javax", force: false };
|
|
15
19
|
for (let index = 0; index < argv.length; index += 1) {
|
|
16
20
|
const token = argv[index];
|
|
17
21
|
if (token === "--help" || token === "-h") return { help: true };
|
|
18
|
-
if (token === "--force")
|
|
22
|
+
if (token === "--force") throw new Error("unsupported: initialize-only Web 生成禁止 --force、已有目标覆盖和旧项目迁移");
|
|
19
23
|
if (!token.startsWith("--") || !valued.has(token.slice(2))) throw new Error(`unrecognized argument: ${token}`);
|
|
20
24
|
const value = argv[++index];
|
|
21
25
|
if (!value || value.startsWith("--")) throw new Error(`argument ${token} requires a value`);
|
|
@@ -32,9 +36,11 @@ const packagePath = (value) => value.replaceAll(".", path.sep);
|
|
|
32
36
|
const ensureSubdir = (root, name) => path.basename(path.normalize(root)) === name ? root : path.join(root, name);
|
|
33
37
|
const javaType = (sqlType = "") => TYPE_MAPPING[sqlType.toLowerCase().split("(")[0]] || "String";
|
|
34
38
|
|
|
35
|
-
function fields(columns, {
|
|
36
|
-
const
|
|
37
|
-
return
|
|
39
|
+
function fields(columns, selected, { command = false } = {}) {
|
|
40
|
+
const byName = new Map(columns.map((column) => [String(column.name), column]));
|
|
41
|
+
return selected.map((field) => {
|
|
42
|
+
const column = byName.get(field);
|
|
43
|
+
if (!column) throw new Error(`approved field is absent from metadata: ${field}`);
|
|
38
44
|
const type = javaType(column.sql_type);
|
|
39
45
|
const name = lowerCamel(column.name);
|
|
40
46
|
const comment = column.comment || "";
|
|
@@ -48,30 +54,52 @@ async function exists(target) { try { await access(target); return true; } catch
|
|
|
48
54
|
|
|
49
55
|
export async function generate(args, logger = console) {
|
|
50
56
|
if (!await exists(args["metadata-file"])) throw new Error(`Metadata file not found: ${args["metadata-file"]}`);
|
|
57
|
+
if (!await exists(args["contract-file"])) throw new Error(`Contract file not found: ${args["contract-file"]}`);
|
|
51
58
|
let metadata;
|
|
52
59
|
try { metadata = JSON.parse(await readFile(args["metadata-file"], "utf8")); } catch (error) { throw new Error(`Error reading metadata file: ${error.message}`); }
|
|
60
|
+
let contract;
|
|
61
|
+
try { contract = JSON.parse(await readFile(args["contract-file"], "utf8")); } catch (error) { throw new Error(`Error reading contract file: ${error.message}`); }
|
|
62
|
+
if (contract.schema_version !== 1 || contract.status !== "approved") throw new Error("web generation contract must be schema_version=1 and approved");
|
|
63
|
+
if (contract.architecture_profile !== "target-domain-model" || contract.dto_placement !== "web") throw new Error("web generation only supports target-domain-model with dto_placement=web");
|
|
64
|
+
if (!contract.openapi_freeze_ref || !contract.fields || typeof contract.fields !== "object") throw new Error("approved web generation contract requires openapi_freeze_ref and fields");
|
|
65
|
+
if (!contract.base_package || !contract.module_name || !contract.domain_segment) throw new Error("approved web generation contract requires base_package, module_name, and domain_segment");
|
|
66
|
+
if (contract.base_package !== args["base-package"] || contract.module_name !== args["module-name"] || contract.domain_segment !== args["domain-segment"]) throw new Error("CLI generation identity does not match the approved web generation contract");
|
|
67
|
+
if (!(contract.platform_profile in PLATFORM_VALIDATION_NAMESPACES)) throw new Error("unsupported platform_profile in approved web generation contract");
|
|
68
|
+
if (PLATFORM_VALIDATION_NAMESPACES[contract.platform_profile] !== contract.validation_namespace) throw new Error("platform_profile and validation_namespace are inconsistent");
|
|
69
|
+
if (contract.validation_namespace !== args["validation-namespace"]) throw new Error("--validation-namespace must match the approved web generation contract");
|
|
53
70
|
const tables = metadata.tables || [];
|
|
54
71
|
if (!tables.length) { logger.warn("Warning: No tables found in metadata."); return []; }
|
|
55
72
|
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
56
73
|
const templatesDir = path.resolve(scriptDir, "../assets/templates");
|
|
57
74
|
const template = async (name) => { const target = path.join(templatesDir, name); if (!await exists(target)) throw new Error(`Template not found: ${target}`); return readFile(target, "utf8"); };
|
|
58
|
-
const
|
|
75
|
+
const templateNames = ["Controller.java.template", "WebConvertor.java.template", "web/dto/Response.java.template", "web/dto/CreateRequest.java.template", "web/dto/UpdateRequest.java.template", "web/dto/PageRequest.java.template"];
|
|
76
|
+
const templates = Object.fromEntries(await Promise.all(templateNames.map(async (name) => [name, await template(name)])));
|
|
59
77
|
const basePath = packagePath(args["base-package"]);
|
|
60
|
-
const domainBase = args["domain-output-dir"] || (args["domain-project-dir"] ? path.join(args["domain-project-dir"], "src", "main", "java", basePath) : path.join(args["output-dir"], basePath));
|
|
61
78
|
const webBase = args["web-output-dir"] || (args["web-project-dir"] ? path.join(args["web-project-dir"], "src", "main", "java", basePath) : path.join(args["output-dir"], basePath));
|
|
62
|
-
const domainRoot = ensureSubdir(domainBase, "client");
|
|
63
79
|
const webRoot = ensureSubdir(webBase, "rest");
|
|
64
|
-
const
|
|
65
|
-
const
|
|
80
|
+
const planned = [];
|
|
81
|
+
const plan = (target, contents) => planned.push({ target, contents });
|
|
66
82
|
for (const table of tables) {
|
|
67
83
|
const domainClass = pascal(table.table_name); const domainVar = lowerCamel(table.table_name); const domainDesc = String(table.table_comment || domainClass).trim().replaceAll("\n", " ");
|
|
84
|
+
const approvedFields = contract.fields[table.table_name];
|
|
85
|
+
if (!approvedFields || ["create", "update", "query", "response"].some((name) => !Array.isArray(approvedFields[name]))) throw new Error(`approved web field contract is missing for table: ${table.table_name}`);
|
|
68
86
|
const applicationPackage = args["application-service-package"] || `${args["base-package"]}.application.service`;
|
|
69
|
-
const context = { base_package: args["base-package"], module_name: args["module-name"], domain_class: domainClass, domain_var: domainVar, domain_desc: domainDesc, domain_url_path: kebab(table.table_name), domain_pkg_name: args["domain-segment"], author: args.author, dto_imports: [`import ${args["base-package"]}.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
for (const [templateName, target, declaration] of [["
|
|
87
|
+
const context = { base_package: args["base-package"], module_name: args["module-name"], domain_class: domainClass, domain_var: domainVar, domain_desc: domainDesc, domain_url_path: kebab(table.table_name), domain_pkg_name: args["domain-segment"], author: args.author, dto_imports: [`import ${args["base-package"]}.rest.dto.request.${domainClass}CreateRequest;`, `import ${args["base-package"]}.rest.dto.request.${domainClass}UpdateRequest;`, `import ${args["base-package"]}.rest.dto.request.${domainClass}PageRequest;`, `import ${args["base-package"]}.rest.dto.response.${domainClass}Response;`].join("\n"), application_type_imports: [`import ${args["base-package"]}.application.command.${domainClass}CreateCommand;`, `import ${args["base-package"]}.application.command.${domainClass}UpdateCommand;`, `import ${args["base-package"]}.application.query.${domainClass}PageQuery;`, `import ${args["base-package"]}.application.result.${domainClass}Result;`].join("\n"), application_service_import: `import ${applicationPackage}.${domainClass}Service;`, web_convertor_import: `import ${args["base-package"]}.rest.convertor.${domainClass}WebConvertor;`, web_convertor_class: `${domainClass}WebConvertor`, application_service_field: `private final ${domainClass}Service ${domainVar}Service;`, query_call: `${domainVar}Service.page(webConvertor.toPageQuery(request))`, detail_call: `${domainVar}Service.detail(id)`, add_call: `${domainVar}Service.add(webConvertor.toCreateCommand(request))`, update_call: `${domainVar}Service.update(webConvertor.toUpdateCommand(request))`, delete_call: `${domainVar}Service.delete(id)`, response_class: `${domainClass}Response`, create_request_class: `${domainClass}CreateRequest`, update_request_class: `${domainClass}UpdateRequest`, page_request_class: `${domainClass}PageRequest`, validation_namespace: args["validation-namespace"] };
|
|
88
|
+
plan(path.join(webRoot, `${domainClass}Controller.java`), render(templates["Controller.java.template"], context));
|
|
89
|
+
plan(path.join(webRoot, "convertor", `${domainClass}WebConvertor.java`), render(templates["WebConvertor.java.template"], context));
|
|
90
|
+
for (const [templateName, target, declaration] of [["web/dto/Response.java.template", path.join(webRoot, "dto", "response", `${domainClass}Response.java`), fields(table.columns || [], approvedFields.response)], ["web/dto/CreateRequest.java.template", path.join(webRoot, "dto", "request", `${domainClass}CreateRequest.java`), fields(table.columns || [], approvedFields.create, { command: true })], ["web/dto/UpdateRequest.java.template", path.join(webRoot, "dto", "request", `${domainClass}UpdateRequest.java`), fields(table.columns || [], approvedFields.update, { command: true })], ["web/dto/PageRequest.java.template", path.join(webRoot, "dto", "request", `${domainClass}PageRequest.java`), fields(table.columns || [], approvedFields.query)]]) plan(target, render(templates[templateName], { ...context, field_declarations: declaration }));
|
|
73
91
|
}
|
|
74
|
-
|
|
92
|
+
const targets = planned.map(({ target }) => target);
|
|
93
|
+
if (new Set(targets).size !== targets.length) throw new Error("approved metadata produces duplicate target files");
|
|
94
|
+
const existing = [];
|
|
95
|
+
for (const target of targets) if (await exists(target)) existing.push(target);
|
|
96
|
+
if (existing.length) throw new Error(`initialize-only Web generation refuses existing targets: ${existing.join(", ")}`);
|
|
97
|
+
for (const { target, contents } of planned) {
|
|
98
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
99
|
+
await writeFile(target, contents, "utf8");
|
|
100
|
+
logger.log(`Generated: ${target}`);
|
|
101
|
+
}
|
|
102
|
+
return targets;
|
|
75
103
|
}
|
|
76
104
|
async function main() { try { const args = parseArgs(process.argv.slice(2)); if (args.help) { console.log(usage()); return; } await generate(args); } catch (error) { console.error(`Error: ${error.message}`); process.exitCode = 1; } }
|
|
77
105
|
if (process.argv[1] === fileURLToPath(import.meta.url)) await main();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
|
-
import { mkdtemp, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { mkdir, mkdtemp, readFile, writeFile } from "node:fs/promises";
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import test from "node:test";
|
|
@@ -8,12 +8,53 @@ import { generate, parseArgs } from "./generate_controller.mjs";
|
|
|
8
8
|
test("generates application-service controller with requested validation profile", async () => {
|
|
9
9
|
const root = await mkdtemp(path.join(tmpdir(), "yss-controller-"));
|
|
10
10
|
const metadata = path.join(root, "metadata.json");
|
|
11
|
+
const contract = path.join(root, "web-contract.json");
|
|
11
12
|
await writeFile(metadata, JSON.stringify({ tables: [{ table_name: "quality_rule", table_comment: "质量规则", columns: [{ name: "id", sql_type: "bigint", primary: true, nullable: false }, { name: "rule_name", sql_type: "varchar(64)", nullable: false }] }] }));
|
|
12
|
-
await
|
|
13
|
+
await writeFile(contract, JSON.stringify({ schema_version: 1, status: "approved", base_package: "com.yss.demo", module_name: "demo", domain_segment: "quality", architecture_profile: "target-domain-model", platform_profile: "spring-boot-3-jdk17", validation_namespace: "jakarta", dto_placement: "web", openapi_freeze_ref: "openapi://quality-rule@1", fields: { quality_rule: { create: ["rule_name"], update: ["id", "rule_name"], query: ["rule_name"], response: ["id", "rule_name"] } } }));
|
|
14
|
+
await generate(parseArgs(["--metadata-file", metadata, "--contract-file", contract, "--base-package", "com.yss.demo", "--module-name", "demo", "--domain-segment", "quality", "--output-dir", path.join(root, "out"), "--application-service-package", "com.yss.demo.application.service", "--validation-namespace", "jakarta"]), { log() {}, warn() {} });
|
|
13
15
|
const controller = await readFile(path.join(root, "out", "com", "yss", "demo", "rest", "QualityRuleController.java"), "utf8");
|
|
16
|
+
const convertor = await readFile(path.join(root, "out", "com", "yss", "demo", "rest", "convertor", "QualityRuleWebConvertor.java"), "utf8");
|
|
17
|
+
const createRequest = await readFile(path.join(root, "out", "com", "yss", "demo", "rest", "dto", "request", "QualityRuleCreateRequest.java"), "utf8");
|
|
14
18
|
assert.match(controller, /import com\.yss\.demo\.application\.service\.QualityRuleService;/);
|
|
15
19
|
assert.match(controller, /import jakarta\.validation\.Valid;/);
|
|
16
|
-
assert.
|
|
20
|
+
assert.match(controller, /webConvertor\.toCreateCommand\(request\)/);
|
|
21
|
+
assert.match(convertor, /@Mapper\(componentModel = "spring"\)/);
|
|
22
|
+
assert.match(convertor, /application\.command\.QualityRuleCreateCommand/);
|
|
23
|
+
assert.match(convertor, /application\.result\.QualityRuleResult/);
|
|
24
|
+
assert.doesNotMatch(`${controller}\n${convertor}`, /Gateway|\.domain\.|Mappers\.getMapper|INSTANCE/);
|
|
25
|
+
assert.match(createRequest, /private String ruleName;/);
|
|
26
|
+
assert.doesNotMatch(createRequest, /private Long id;|@Data/);
|
|
17
27
|
});
|
|
18
28
|
|
|
19
29
|
test("rejects missing required CLI arguments", () => assert.throws(() => parseArgs(["--module-name", "demo"]), /required/));
|
|
30
|
+
|
|
31
|
+
test("requires an approved target-profile field contract and refuses force overwrite", async () => {
|
|
32
|
+
const root = await mkdtemp(path.join(tmpdir(), "yss-controller-contract-"));
|
|
33
|
+
const metadata = path.join(root, "metadata.json");
|
|
34
|
+
const contract = path.join(root, "web-contract.json");
|
|
35
|
+
await writeFile(metadata, JSON.stringify({ tables: [{ table_name: "quality_rule", columns: [{ name: "id", sql_type: "bigint", primary: true, nullable: false }] }] }));
|
|
36
|
+
await writeFile(contract, JSON.stringify({ schema_version: 1, status: "draft", base_package: "com.yss.demo", module_name: "demo", domain_segment: "quality", architecture_profile: "target-domain-model", platform_profile: "spring-boot-2.7-jdk8", validation_namespace: "javax", dto_placement: "web", openapi_freeze_ref: "openapi://quality-rule@1", fields: { quality_rule: { create: [], update: ["id"], query: [], response: ["id"] } } }));
|
|
37
|
+
const base = ["--metadata-file", metadata, "--contract-file", contract, "--base-package", "com.yss.demo", "--module-name", "demo", "--domain-segment", "quality", "--output-dir", path.join(root, "out")];
|
|
38
|
+
await assert.rejects(() => generate(parseArgs(base), { log() {}, warn() {} }), /approved/);
|
|
39
|
+
await writeFile(contract, JSON.stringify({ schema_version: 1, status: "approved", base_package: "com.yss.demo", module_name: "demo", domain_segment: "quality", architecture_profile: "target-domain-model", platform_profile: "spring-boot-2.7-jdk8", validation_namespace: "javax", dto_placement: "web", openapi_freeze_ref: "openapi://quality-rule@1", fields: { quality_rule: { create: [], update: ["id"], query: [], response: ["id"] } } }));
|
|
40
|
+
await writeFile(contract, JSON.stringify({ schema_version: 1, status: "approved", base_package: "com.yss.demo", module_name: "demo", domain_segment: "quality", architecture_profile: "target-domain-model", platform_profile: "spring-boot-3-jdk17", validation_namespace: "javax", dto_placement: "web", openapi_freeze_ref: "openapi://quality-rule@1", fields: { quality_rule: { create: [], update: ["id"], query: [], response: ["id"] } } }));
|
|
41
|
+
await assert.rejects(() => generate(parseArgs(base), { log() {}, warn() {} }), /platform_profile and validation_namespace/);
|
|
42
|
+
assert.throws(() => parseArgs([...base, "--force"]), /initialize-only/);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
test("binds generation identity to the approved contract and fails before writing when any target exists", async () => {
|
|
46
|
+
const root = await mkdtemp(path.join(tmpdir(), "yss-controller-initialize-only-"));
|
|
47
|
+
const metadata = path.join(root, "metadata.json");
|
|
48
|
+
const contract = path.join(root, "web-contract.json");
|
|
49
|
+
const output = path.join(root, "out");
|
|
50
|
+
await writeFile(metadata, JSON.stringify({ tables: [{ table_name: "quality_rule", columns: [{ name: "id", sql_type: "bigint", nullable: false }] }] }));
|
|
51
|
+
await writeFile(contract, JSON.stringify({ schema_version: 1, status: "approved", base_package: "com.yss.demo", module_name: "demo", domain_segment: "quality", architecture_profile: "target-domain-model", platform_profile: "spring-boot-2.7-jdk8", validation_namespace: "javax", dto_placement: "web", openapi_freeze_ref: "openapi://quality-rule@1", fields: { quality_rule: { create: [], update: ["id"], query: [], response: ["id"] } } }));
|
|
52
|
+
const args = ["--metadata-file", metadata, "--contract-file", contract, "--base-package", "com.yss.demo", "--module-name", "demo", "--domain-segment", "quality", "--output-dir", output];
|
|
53
|
+
await assert.rejects(() => generate(parseArgs(args.map((value) => value === "demo" ? "other" : value)), { log() {}, warn() {} }), /approved web generation contract/);
|
|
54
|
+
const existing = path.join(output, "com/yss/demo/rest/QualityRuleController.java");
|
|
55
|
+
await mkdir(path.dirname(existing), { recursive: true });
|
|
56
|
+
await writeFile(existing, "user-owned\n");
|
|
57
|
+
await assert.rejects(() => generate(parseArgs(args), { log() {}, warn() {} }), /initialize-only/);
|
|
58
|
+
assert.equal(await readFile(existing, "utf8"), "user-owned\n");
|
|
59
|
+
await assert.rejects(() => readFile(path.join(output, "com/yss/demo/rest/convertor/QualityRuleWebConvertor.java"), "utf8"), /ENOENT/);
|
|
60
|
+
});
|
package/template/README.md
CHANGED
|
@@ -48,6 +48,8 @@
|
|
|
48
48
|
|
|
49
49
|
YSS skills 的公开发布投影维护在 [iloveZzz/yss-spec-dev-skills](https://github.com/iloveZzz/yss-spec-dev-skills),发布清单和导出命令见 [skills 维护说明](./docs/agents/skills-maintenance.md)。
|
|
50
50
|
|
|
51
|
+
YSS UI 组件知识同时通过项目级 MCP 配置提供;支持的客户端、Codex 全局安装和自检方法见 [YSS UI MCP 接入](./docs/user-guide/yss-ui-mcp.md)。
|
|
52
|
+
|
|
51
53
|
## 模板初始化 CLI
|
|
52
54
|
|
|
53
55
|
`create-yss-spec` 的目标维护位置是独立 GitHub 仓库 [iloveZzz/create-yss-spec](https://github.com/iloveZzz/create-yss-spec)。本仓库不再包含 CLI 源码、测试、发布配置或开发过程记录。CLI 的使用方法已经合并到统一用户手册:
|
|
@@ -113,6 +115,7 @@ scripts/verify-template-fast
|
|
|
113
115
|
| [docs/process/implementation-repo-integration.md](./docs/process/implementation-repo-integration.md) | 外部前端 / 后端实现仓库接入与跨仓库切片绑定 |
|
|
114
116
|
| [docs/agents/README.md](./docs/agents/README.md) | Agent 协作文档目录说明 |
|
|
115
117
|
| [docs/agents/skills-maintenance.md](./docs/agents/skills-maintenance.md) | Agent skills 安装与维护 |
|
|
118
|
+
| [docs/user-guide/yss-ui-mcp.md](./docs/user-guide/yss-ui-mcp.md) | YSS UI MCP 项目配置、全局安装边界与自检 |
|
|
116
119
|
| [docs/discovery/IDEATION.md](./docs/discovery/IDEATION.md) | 机会构想方法 |
|
|
117
120
|
| [docs/architecture/README.md](./docs/architecture/README.md) | 架构设计 + 审查清单 |
|
|
118
121
|
| [docs/testing/README.md](./docs/testing/README.md) | 测试策略 |
|
|
@@ -137,7 +137,7 @@ roles:
|
|
|
137
137
|
title: YSS 前端工程师
|
|
138
138
|
stages: [stage.product-design, stage.system-data-engineering, stage.ticket-formalization, stage.vertical-slice-implementation, stage.verification-release-retrospective]
|
|
139
139
|
draft_artifact_ids: [artifact.frontend-implementation-plan]
|
|
140
|
-
core_skills: [yss-ui, yss-page-module-development, yss-components, yss-formily, formily-foundation, formily-linkage-effects, formily-mode-slot-detail, formily-step-flow, ytable-usage, ytree-usage, yedit-table-usage, yss-api-integration, yss-hook, theme-token-usage, page-skeleton, page-list-module, page-form-module, component-selection-imports, vue3-best-practices, tdd]
|
|
140
|
+
core_skills: [yss-ui, yss-ui-business-page-generation, yss-page-module-development, yss-components, yss-formily, formily-foundation, formily-linkage-effects, formily-mode-slot-detail, formily-step-flow, ytable-usage, ytree-usage, yedit-table-usage, yss-api-integration, yss-hook, theme-token-usage, page-skeleton, page-list-module, page-form-module, component-selection-imports, vue3-best-practices, tdd]
|
|
141
141
|
forbidden_skills: [yss-domain, yss-application, yss-repository, yss-mybatis, yss-web-controller, yss-ddd-scaffold-generator, java-backend-commit]
|
|
142
142
|
description: >-
|
|
143
143
|
Own Vue page modules, frontend tests, and frontend_implementation_plan.
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
| `mattpocock/skills` | `0ab1b63a410a03d3627979a109c8695de27af954` / `skills/engineering` 及锁文件记录的关联路径 | 通用工程流程及关联 skills |
|
|
19
19
|
| `anthropics/knowledge-work-plugins` | `sales/skills/competitive-intelligence` | 竞品与市场事实研究 |
|
|
20
20
|
| `tt-a1i/archify` | `199360cc6687a7857b54dd188d4922b09e466a4b` / `archify` | 条件式、可验证的技术架构图;YSS 适配见 `docs/agents/archify-integration.md` |
|
|
21
|
+
| `iloveZzz/yss-ui` | `.agents/skills/.yss-skills-manifest.json` 锁定的 revision / `packages/skills` | 22 个 `categories.app` 业务前端 skills;排除组件库内部 `categories.library` 和后端提交 skill,适配见 `docs/agents/yss-ui-skills-integration.md` |
|
|
21
22
|
| 项目本地 | `.agents/skills` 或平台专属 root | YSS 适配与项目治理 skills |
|
|
22
23
|
|
|
23
24
|
`skills-lock.json` 是技能清单、来源、上游哈希、当前有效内容哈希和投影目标的权威记录:
|
|
@@ -44,10 +45,11 @@
|
|
|
44
45
|
scripts/update-skill-lock
|
|
45
46
|
```
|
|
46
47
|
|
|
47
|
-
|
|
48
|
+
若来源来自可访问的上游 checkout,还应显式校验锁定 revision 与每个上游目录哈希:
|
|
48
49
|
|
|
49
50
|
```bash
|
|
50
|
-
scripts/verify-upstream-skill-source --source-root <matt-skills-checkout>
|
|
51
|
+
scripts/verify-upstream-skill-source --source=mattpocock/skills --source-root <matt-skills-checkout>
|
|
52
|
+
scripts/verify-upstream-skill-source --source=iloveZzz/yss-ui --source-root <yss-ui-checkout>
|
|
51
53
|
```
|
|
52
54
|
|
|
53
55
|
新增共享 skill 时先显式登记:`scripts/update-skill-lock --add=<skill-name>`;新增平台专属 skill 使用 `scripts/update-skill-lock --add-platform=<root>:<skill-name>`。脚本不会把工作区中偶然出现的未跟踪目录自动纳入发布清单。
|
|
@@ -74,8 +76,9 @@
|
|
|
74
76
|
```bash
|
|
75
77
|
scripts/sync-skills --check
|
|
76
78
|
scripts/update-skill-lock --check
|
|
77
|
-
# 可选:对照锁文件中的
|
|
78
|
-
scripts/verify-upstream-skill-source --source-root <matt-skills-checkout>
|
|
79
|
+
# 可选:对照锁文件中的 source revision 与上游目录哈希
|
|
80
|
+
scripts/verify-upstream-skill-source --source=mattpocock/skills --source-root <matt-skills-checkout>
|
|
81
|
+
scripts/verify-upstream-skill-source --source=iloveZzz/yss-ui --source-root <yss-ui-checkout>
|
|
79
82
|
```
|
|
80
83
|
|
|
81
84
|
前者检查所有共享投影是否指向或匹配权威内容,后者检查 `skills-lock.json` 是否与当前完整目录树一致。过时技能不会保留兼容别名;旧 skill 名称和入口按 [`docs/agents/skill-migrations.md`](./skill-migrations.md) 一次性迁移,项目文件升级由 `create-yss-spec attach` / `sync` 处理。
|
|
@@ -447,7 +447,7 @@ skills:
|
|
|
447
447
|
layer: specialist
|
|
448
448
|
maturity: supported
|
|
449
449
|
instance_default_discoverable: false
|
|
450
|
-
aliases: [page-module-development
|
|
450
|
+
aliases: [page-module-development]
|
|
451
451
|
impacts: [frontend]
|
|
452
452
|
- id: yss-product-lifecycle
|
|
453
453
|
layer: core
|
|
@@ -503,6 +503,12 @@ skills:
|
|
|
503
503
|
instance_default_discoverable: false
|
|
504
504
|
aliases: []
|
|
505
505
|
impacts: [frontend]
|
|
506
|
+
- id: yss-ui-business-page-generation
|
|
507
|
+
layer: specialist
|
|
508
|
+
maturity: supported
|
|
509
|
+
instance_default_discoverable: false
|
|
510
|
+
aliases: []
|
|
511
|
+
impacts: [frontend]
|
|
506
512
|
- id: yss-up-springboot3
|
|
507
513
|
layer: specialist
|
|
508
514
|
maturity: supported
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# YSS UI 前端 Skills 集成合同
|
|
2
|
+
|
|
3
|
+
本模板以 `iloveZzz/yss-ui` 的 `packages/skills` 为上游来源,以 `.agents/skills/.yss-skills-manifest.json` 冻结来源 revision、包版本、目录映射和上游树哈希。`.agents/skills` 仍是模板内跨 Agent 共享内容的唯一权威目录;其他 Agent root 只接收生成投影。
|
|
4
|
+
|
|
5
|
+
## 范围
|
|
6
|
+
|
|
7
|
+
- 只集成 yss-ui `skills.config.json` 中 `categories.app` 的业务项目 skills,并排除后端 `java-backend-commit`,当前共 22 个。
|
|
8
|
+
- `categories.library` 的 10 个组件库内部维护 skills 全部不进入模板;该分组同时位于上游 `excludeFromDefaultSync`。
|
|
9
|
+
- `api-integration`、`page-module-development`、`use-table-height`、`use-tree-height` 在模板中分别映射为 `yss-api-integration`、`yss-page-module-development`、`yss-use-table-height`、`yss-use-tree-height`,旧名称只作为 registry alias。
|
|
10
|
+
- `java-backend-commit` 明确不属于本合同;其内容、路由与锁定信息不随本前端同步更新。
|
|
11
|
+
- 允许模板基于生命周期、组件路由和证据门禁做受控适配;适配后的 `effectiveHash` 与上游 `upstreamHash` 同时进入 `skills-lock.json`。
|
|
12
|
+
|
|
13
|
+
## 更新步骤
|
|
14
|
+
|
|
15
|
+
1. 在临时 checkout 中确认 `iloveZzz/yss-ui` 的目标 revision,并更新 `.agents/skills/.yss-skills-manifest.json`。
|
|
16
|
+
2. 将新增或替换内容只写入 `.agents/skills/<canonical-name>`,不得直接编辑平台投影。
|
|
17
|
+
3. 新增 skill 使用 `scripts/update-skill-lock --add=<canonical-name>` 显式登记。
|
|
18
|
+
4. 运行 `scripts/sync-skills` 与 `scripts/update-skill-lock`。
|
|
19
|
+
5. 使用 `scripts/verify-upstream-skill-source --source=iloveZzz/yss-ui --source-root=<checkout>` 验证 revision、清单和树哈希。
|
|
20
|
+
6. 执行 `scripts/verify-template-fast`;首次冻结或正式发布前执行 `scripts/verify-template`。
|
|
21
|
+
|
|
22
|
+
## MCP
|
|
23
|
+
|
|
24
|
+
项目级 MCP 配置路径和容器字段同样由 manifest 固定,配置内容必须使用 `npx -y @yss-ui/mcp`。需要全局配置的运行时只提供人工安装说明,模板不得自动修改用户主目录。
|