create-yss-spec 2.2.8 → 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/SKILL.md +2 -0
- package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +6 -0
- 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 +71 -10
- package/template/.agents/skills/yss-router/references/slice-implementation-contract.md +14 -0
- package/template/.agents/skills/yss-router/references/yss-skill-execution-result.md +5 -0
- 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/SKILL.md +2 -0
- package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +6 -0
- 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 +71 -10
- package/template/.claude/skills/yss-router/references/slice-implementation-contract.md +14 -0
- package/template/.claude/skills/yss-router/references/yss-skill-execution-result.md +5 -0
- 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/SKILL.md +2 -0
- package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +6 -0
- 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 +71 -10
- package/template/.codex/skills/yss-router/references/slice-implementation-contract.md +14 -0
- package/template/.codex/skills/yss-router/references/yss-skill-execution-result.md +5 -0
- 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/SKILL.md +2 -0
- package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +6 -0
- 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 +71 -10
- package/template/.cursor/skills/yss-router/references/slice-implementation-contract.md +14 -0
- package/template/.cursor/skills/yss-router/references/yss-skill-execution-result.md +5 -0
- 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/SKILL.md +2 -0
- package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +6 -0
- 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 +71 -10
- package/template/.hermes/skills/yss-router/references/slice-implementation-contract.md +14 -0
- package/template/.hermes/skills/yss-router/references/yss-skill-execution-result.md +5 -0
- 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/SKILL.md +2 -0
- package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +6 -0
- 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 +71 -10
- package/template/.pi/skills/yss-router/references/slice-implementation-contract.md +14 -0
- package/template/.pi/skills/yss-router/references/yss-skill-execution-result.md +5 -0
- 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/SKILL.md +2 -0
- package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +6 -0
- 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 +71 -10
- package/template/.qoder/skills/yss-router/references/slice-implementation-contract.md +14 -0
- package/template/.qoder/skills/yss-router/references/yss-skill-execution-result.md +5 -0
- 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/SKILL.md +2 -0
- package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +84 -12
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +6 -0
- 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 +71 -10
- package/template/.trae/skills/yss-router/references/slice-implementation-contract.md +14 -0
- package/template/.trae/skills/yss-router/references/yss-skill-execution-result.md +5 -0
- 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/AGENTS.md +1 -0
- package/template/CONTEXT.md +2 -2
- package/template/DESIGN.md +203 -0
- package/template/README.md +3 -0
- package/template/docs/agents/digital-human-roles.md +1 -1
- package/template/docs/agents/digital-human-roles.yaml +18 -22
- package/template/docs/agents/skills-maintenance.md +7 -4
- package/template/docs/agents/yss-plugin-dependency-contract.md +45 -0
- package/template/docs/agents/yss-skill-registry.yaml +37 -2
- package/template/docs/agents/yss-ui-skills-integration.md +24 -0
- package/template/docs/architecture/templates/engineering-baseline-review-template.md +19 -0
- package/template/docs/design/README.md +12 -1
- package/template/docs/design/design-system-sync.yaml +12 -0
- package/template/docs/design/design.md +22 -2
- package/template/docs/design/preview-dark.html +15 -0
- package/template/docs/design/preview.html +20 -0
- package/template/docs/design/tokens/.design-md-projection.json +13 -0
- package/template/docs/discovery/reports/agent-governance-options.md +71 -0
- package/template/docs/process/harness-process-tailoring.md +7 -0
- package/template/docs/process/lifecycle-registry-baseline.json +1 -1
- package/template/docs/process/lifecycle-registry.yaml +1 -1
- package/template/docs/process/template-verification-profiles.yaml +18 -0
- package/template/docs/templates/build-architecture-checklist-template.md +2 -0
- package/template/docs/templates/implementation-routing-template.md +28 -3
- package/template/docs/templates/review-report-template.md +2 -2
- package/template/docs/user-guide/yss-ui-mcp.md +43 -0
- package/template/docs/user-guide//346/210/230/346/234/257/350/256/276/350/256/241/345/255/220/351/241/271/347/233/256/347/224/250/346/210/267/346/211/213/345/206/214.md +218 -0
- package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214.md +55 -2
- package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214/347/264/242/345/274/225.md +21 -0
- package/template/scripts/lib/digital-human-roles.mjs +0 -1
- 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 +72 -1
- package/template/scripts/lib/skill-supply-chain.mjs +72 -1
- package/template/scripts/verify-digital-human-roles-scenarios +1 -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 +5 -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
package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs
CHANGED
|
@@ -12,19 +12,252 @@ import { GITLINK_MODE, gitLsFilesStage } from "../../../../scripts/lib/repositor
|
|
|
12
12
|
|
|
13
13
|
const scripts = path.dirname(fileURLToPath(import.meta.url));
|
|
14
14
|
const generator = path.join(scripts, "generate_scaffold.mjs");
|
|
15
|
+
const workflow = path.join(scripts, "generate_and_verify_scaffold.mjs");
|
|
15
16
|
const command = (args, options = {}) => new Promise((resolve) => execFile(process.execPath, [generator, ...args], { encoding: "utf8", ...options }, (error, stdout, stderr) => resolve({ code: error?.code ?? 0, stdout, stderr })));
|
|
17
|
+
const workflowCommand = (args, options = {}) => new Promise((resolve) => execFile(process.execPath, [workflow, ...args], { encoding: "utf8", ...options }, (error, stdout, stderr) => resolve({ code: error?.code ?? 0, stdout, stderr })));
|
|
16
18
|
function contract(outputDir, overrides = {}) {
|
|
17
|
-
return {
|
|
19
|
+
return {
|
|
20
|
+
schema_version: 2,
|
|
21
|
+
contract_id: "scaffold-1",
|
|
22
|
+
contract_version: 1,
|
|
23
|
+
scaffold_request_id: "scaffold-request-1",
|
|
24
|
+
status: "approved",
|
|
25
|
+
router_draft_ref: "router-1",
|
|
26
|
+
lifecycle_approval_ref: "approval-1",
|
|
27
|
+
persisted_ref: "persisted-1",
|
|
28
|
+
current_version: 1,
|
|
29
|
+
implementation_repository: "external",
|
|
30
|
+
backend_repository: "external",
|
|
31
|
+
scaffold_status: "required",
|
|
32
|
+
project_name: "demo-service",
|
|
33
|
+
target_output_dir: outputDir,
|
|
34
|
+
base_package: "com.yss.demo",
|
|
35
|
+
maven_coordinates: {
|
|
36
|
+
group_id: "com.yss.datamiddle",
|
|
37
|
+
project_version: "1.0.0-SNAPSHOT",
|
|
38
|
+
parent: { group_id: "com.yss.datamiddle", artifact_id: "yss-datamiddle-parent", version: "2.0.0-SNAPSHOT" },
|
|
39
|
+
yss_components_version: "2.0.0-SNAPSHOT"
|
|
40
|
+
},
|
|
41
|
+
profiles: {
|
|
42
|
+
architecture: "target-domain-model",
|
|
43
|
+
persistence: "mybatis-plus",
|
|
44
|
+
database: "mysql",
|
|
45
|
+
platform: "spring-boot-2.7-jdk8",
|
|
46
|
+
validation_namespace: "javax",
|
|
47
|
+
dto_placement: "web",
|
|
48
|
+
repository: "yss-internal"
|
|
49
|
+
},
|
|
50
|
+
allowed_write_paths: ["."],
|
|
51
|
+
expected_evidence_files: [".yss/scaffold-generation.json"],
|
|
52
|
+
verification_commands: ["./mvnw validate", "./mvnw test", "./mvnw package"],
|
|
53
|
+
approval: { approval_ref: "approval-1", approver: "reviewer", persisted_ref: "persisted-1", current_version: 1 },
|
|
54
|
+
work_unit: { id: "unit-1", behavior: "scaffold", primary_skill: "yss-ddd-scaffold-generator", supporting_skills: ["yss-router"], tdd_mode: "controlled-generation", allowed_write_paths: ["."], expected_evidence: ["manifest"], verification_commands: ["./mvnw validate", "./mvnw test", "./mvnw package"], controlled_generation: true },
|
|
55
|
+
generation_policy: { mode: "initialize-only", existing_target: "unsupported", old_project_migration: "unsupported", template_upgrade: "unsupported" },
|
|
56
|
+
...overrides
|
|
57
|
+
};
|
|
18
58
|
}
|
|
19
|
-
async function fixture() { const root = await mkdtemp(path.join(os.tmpdir(), "yss-scaffold-node-")); const output = path.join(root, "implementation"); await mkdir(output); const contractFile = path.join(root, "contract.json"); await writeFile(contractFile, `${JSON.stringify(contract(output), null, 2)}\n`); return { root, output, contractFile, args: ["--project-name", "demo-service", "--base-package", "com.yss.demo", "--output-dir", output, "--database", "mysql", "--contract-id", "scaffold-1", "--contract-version", "1", "--approval-ref", "approval-1", "--router-draft-ref", "router-1", "--persisted-ref", "persisted-1", "--contract-file", contractFile] }; }
|
|
59
|
+
async function fixture(contractOverrides = {}) { const root = await mkdtemp(path.join(os.tmpdir(), "yss-scaffold-node-")); const output = path.join(root, "implementation"); await mkdir(output); const contractFile = path.join(root, "contract.json"); await writeFile(contractFile, `${JSON.stringify(contract(output, contractOverrides), null, 2)}\n`); return { root, output, contractFile, args: ["--project-name", "demo-service", "--base-package", "com.yss.demo", "--output-dir", output, "--database", "mysql", "--contract-id", "scaffold-1", "--contract-version", "1", "--approval-ref", "approval-1", "--router-draft-ref", "router-1", "--persisted-ref", "persisted-1", "--contract-file", contractFile, "--group-id", "com.yss.datamiddle", "--project-version", "1.0.0-SNAPSHOT", "--parent-group-id", "com.yss.datamiddle", "--parent-artifact-id", "yss-datamiddle-parent", "--parent-version", "2.0.0-SNAPSHOT", "--yss-components-version", "2.0.0-SNAPSHOT"] }; }
|
|
20
60
|
|
|
21
|
-
|
|
61
|
+
const controlledEnvironment = {
|
|
62
|
+
...process.env,
|
|
63
|
+
YSS_MAVEN_REPOSITORY_URL: "https://repo.example.invalid/repository/maven-public/",
|
|
64
|
+
MAVEN_REPO_USERNAME: "test-user",
|
|
65
|
+
MAVEN_REPO_PASSWORD: "test-password"
|
|
66
|
+
};
|
|
67
|
+
function targetManifest(overrides = {}) {
|
|
68
|
+
return {
|
|
69
|
+
schema_version: 2,
|
|
70
|
+
contract_id: "id",
|
|
71
|
+
contract_version: 1,
|
|
72
|
+
scaffold_request_id: "request",
|
|
73
|
+
contract_digest: "a".repeat(64),
|
|
74
|
+
approval_ref: "approval",
|
|
75
|
+
approver: "reviewer",
|
|
76
|
+
lifecycle_approval_ref: "approval",
|
|
77
|
+
router_draft_ref: "router",
|
|
78
|
+
persisted_ref: "persisted",
|
|
79
|
+
contract_file_ref: "contract",
|
|
80
|
+
current_version: 1,
|
|
81
|
+
allowed_write_paths: ["."],
|
|
82
|
+
expected_evidence_files: ["manifest"],
|
|
83
|
+
verification_commands: ["./mvnw validate", "./mvnw test", "./mvnw package"],
|
|
84
|
+
generation_mode: "controlled-generation",
|
|
85
|
+
completion_level: "generated",
|
|
86
|
+
profiles: { architecture: "target-domain-model", repository: "yss-internal" },
|
|
87
|
+
ownership: { generated_files: [] },
|
|
88
|
+
readiness: { downstream_skills: {}, architecture_ruleset: "b".repeat(64) },
|
|
89
|
+
generation_policy: { mode: "initialize-only", existing_target: "unsupported", old_project_migration: "unsupported", template_upgrade: "unsupported" },
|
|
90
|
+
maven_coordinates_source: "approved-contract",
|
|
91
|
+
...overrides
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
async function prepareVerifierProject(project, manifest = targetManifest()) {
|
|
95
|
+
await mkdir(path.join(project, ".yss"), { recursive: true });
|
|
96
|
+
await mkdir(path.join(project, ".mvn"), { recursive: true });
|
|
97
|
+
await writeFile(path.join(project, ".mvn", "maven.config"), "-s .mvn/settings.xml\n-P yss-internal\n");
|
|
98
|
+
await writeFile(path.join(project, ".mvn", "settings.xml"), "<settings/>\n");
|
|
99
|
+
await writeFile(path.join(project, ".yss", "scaffold-generation.json"), `${JSON.stringify(manifest)}\n`);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
test("生成批准的服务级 target profile 骨架,并写入可追溯 Manifest v2", async (t) => { const data = await fixture(); t.after(() => rm(data.root, { recursive: true, force: true })); const result = await command(data.args); assert.equal(result.code, 0, result.stderr); const project = path.join(data.output, "demo-service"); const manifest = JSON.parse(await readFile(path.join(project, ".yss/scaffold-generation.json"), "utf8")); assert.equal(manifest.schema_version, 2); assert.equal(manifest.scaffold_request_id, "scaffold-request-1"); assert.equal(manifest.slice_id, undefined); assert.equal(manifest.completion_level, "generated"); assert.equal(manifest.profiles.architecture, "target-domain-model"); assert.deepEqual(manifest.generation_policy, { mode: "initialize-only", existing_target: "unsupported", old_project_migration: "unsupported", template_upgrade: "unsupported" }); assert.match(manifest.generator.template_digest, /^[a-f0-9]{64}$/); assert.match(manifest.contract_digest, /^[a-f0-9]{64}$/); assert.ok(manifest.ownership.generated_files.length > 8); assert.ok(manifest.ownership.generated_files.every((item) => item.owner === "generator" && /^[a-f0-9]{64}$/.test(item.sha256))); assert.equal(manifest.generation_mode, "controlled-generation"); assert.deepEqual(manifest.verification_commands, ["./mvnw validate", "./mvnw test", "./mvnw package"]); assert.equal(manifest.bootstrap_main_class, "com.yss.demo.DemoServiceApplication"); assert.equal(manifest.bootstrap_main_source, "demo-service-bootstrap/src/main/java/com/yss/demo/DemoServiceApplication.java"); assert.match(await readFile(path.join(project, manifest.bootstrap_main_source), "utf8"), /class DemoServiceApplication/); assert.match(await readFile(path.join(project, "pom.xml"), "utf8"), /demo-service/); });
|
|
103
|
+
|
|
104
|
+
test("schema v1 scaffold contract is unsupported and is never upgraded", async (t) => {
|
|
105
|
+
const data = await fixture({ schema_version: 1 });
|
|
106
|
+
t.after(() => rm(data.root, { recursive: true, force: true }));
|
|
107
|
+
const result = await command(data.args);
|
|
108
|
+
assert.equal(result.code, 1);
|
|
109
|
+
assert.match(result.stderr, /unsupported: scaffold contract schema_version=1/);
|
|
110
|
+
assert.equal(existsSync(path.join(data.output, "demo-service")), false);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
test("一键工作流只有在真实 Maven 三命令全部通过后才报告完成", { timeout: 300_000 }, async (t) => {
|
|
114
|
+
if (!["YSS_MAVEN_REPOSITORY_URL", "MAVEN_REPO_USERNAME", "MAVEN_REPO_PASSWORD"].every((name) => process.env[name])) {
|
|
115
|
+
t.skip("缺少受控 YSS Maven 仓库环境,真实 Wrapper 验证由 L3 环境门禁执行");
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const data = await fixture();
|
|
119
|
+
t.after(() => rm(data.root, { recursive: true, force: true }));
|
|
120
|
+
const evidence = path.join(data.root, "workflow-evidence");
|
|
121
|
+
const result = await workflowCommand([...data.args, "--evidence-dir", evidence]);
|
|
122
|
+
assert.equal(result.code, 0, result.stderr);
|
|
123
|
+
assert.match(result.stdout, /脚手架生成与验证完成/);
|
|
124
|
+
const verification = JSON.parse(await readFile(path.join(evidence, "scaffold-verification.json"), "utf8"));
|
|
125
|
+
const workflowReport = JSON.parse(await readFile(path.join(evidence, "scaffold-workflow.json"), "utf8"));
|
|
126
|
+
assert.equal(verification.status, "passed");
|
|
127
|
+
assert.deepEqual(verification.commands.map((item) => item.command), ["./mvnw validate", "./mvnw test", "./mvnw package"]);
|
|
128
|
+
assert.ok(verification.commands.every((item) => item.exit_code === 0));
|
|
129
|
+
assert.equal(verification.preflight.project_settings_wired, true);
|
|
130
|
+
assert.equal(verification.preflight.repository_profile_wired, true);
|
|
131
|
+
assert.equal(workflowReport.status, "completed");
|
|
132
|
+
assert.equal(workflowReport.verification_ref, path.join(evidence, "scaffold-verification.json"));
|
|
133
|
+
const manifest = JSON.parse(await readFile(path.join(data.output, "demo-service", ".yss", "scaffold-generation.json"), "utf8"));
|
|
134
|
+
assert.equal(manifest.completion_level, "empty-scaffold-verified");
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
test("显式 Maven 坐标贯穿批准合同、生成参数、全部 POM 和生成清单", async (t) => {
|
|
138
|
+
const mavenCoordinates = {
|
|
139
|
+
group_id: "com.example.metadata",
|
|
140
|
+
project_version: "1.2.3-SNAPSHOT",
|
|
141
|
+
parent: {
|
|
142
|
+
group_id: "com.yss.datamiddle",
|
|
143
|
+
artifact_id: "yss-datamiddle-parent",
|
|
144
|
+
version: "2.0.0-SNAPSHOT"
|
|
145
|
+
},
|
|
146
|
+
yss_components_version: "2.0.0-SNAPSHOT"
|
|
147
|
+
};
|
|
148
|
+
const data = await fixture({ maven_coordinates: mavenCoordinates });
|
|
149
|
+
t.after(() => rm(data.root, { recursive: true, force: true }));
|
|
150
|
+
const result = await command([
|
|
151
|
+
...data.args,
|
|
152
|
+
"--group-id", mavenCoordinates.group_id,
|
|
153
|
+
"--project-version", mavenCoordinates.project_version,
|
|
154
|
+
"--parent-group-id", mavenCoordinates.parent.group_id,
|
|
155
|
+
"--parent-artifact-id", mavenCoordinates.parent.artifact_id,
|
|
156
|
+
"--parent-version", mavenCoordinates.parent.version,
|
|
157
|
+
"--yss-components-version", mavenCoordinates.yss_components_version
|
|
158
|
+
]);
|
|
159
|
+
assert.equal(result.code, 0, result.stderr);
|
|
160
|
+
|
|
161
|
+
const project = path.join(data.output, "demo-service");
|
|
162
|
+
const pomFiles = [
|
|
163
|
+
"pom.xml",
|
|
164
|
+
"demo-service-domain/pom.xml",
|
|
165
|
+
"demo-service-application/pom.xml",
|
|
166
|
+
"demo-service-infrastructure/pom.xml",
|
|
167
|
+
"demo-service-adapter/pom.xml",
|
|
168
|
+
"demo-service-adapter/demo-service-web/pom.xml",
|
|
169
|
+
"demo-service-bootstrap/pom.xml"
|
|
170
|
+
];
|
|
171
|
+
const poms = await Promise.all(pomFiles.map((file) => readFile(path.join(project, file), "utf8")));
|
|
172
|
+
assert.ok(poms.every((pom) => pom.includes(mavenCoordinates.group_id)), "全部项目内坐标必须使用合同 groupId");
|
|
173
|
+
assert.ok(poms.every((pom) => pom.includes(mavenCoordinates.project_version)), "全部项目内坐标必须使用合同版本");
|
|
174
|
+
const manifest = JSON.parse(await readFile(path.join(project, ".yss/scaffold-generation.json"), "utf8"));
|
|
175
|
+
assert.deepEqual(manifest.maven_coordinates, mavenCoordinates);
|
|
176
|
+
assert.equal(manifest.maven_coordinates_source, "approved-contract");
|
|
177
|
+
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
test("生成工程声明命名仓库 profile、target DDD 依赖边界和构建门禁", async (t) => {
|
|
181
|
+
const data = await fixture();
|
|
182
|
+
t.after(() => rm(data.root, { recursive: true, force: true }));
|
|
183
|
+
const result = await command(data.args);
|
|
184
|
+
assert.equal(result.code, 0, result.stderr);
|
|
185
|
+
const project = path.join(data.output, "demo-service");
|
|
186
|
+
const mavenConfig = await readFile(path.join(project, ".mvn/maven.config"), "utf8");
|
|
187
|
+
const settings = await readFile(path.join(project, ".mvn/settings.xml"), "utf8");
|
|
188
|
+
assert.match(mavenConfig, /-s \.mvn\/settings\.xml/);
|
|
189
|
+
assert.match(mavenConfig, /-P yss-internal/);
|
|
190
|
+
assert.doesNotMatch(settings, /192\.168\.|<activeProfile>aliyun-only<\/activeProfile>/);
|
|
191
|
+
assert.match(settings, /\$\{env\.YSS_MAVEN_REPOSITORY_URL\}/);
|
|
192
|
+
assert.match(settings, /\$\{env\.MAVEN_REPO_USERNAME\}/);
|
|
193
|
+
assert.match(settings, /\$\{env\.MAVEN_REPO_PASSWORD\}/);
|
|
194
|
+
|
|
195
|
+
const domainPom = await readFile(path.join(project, "demo-service-domain/pom.xml"), "utf8");
|
|
196
|
+
const infrastructurePom = await readFile(path.join(project, "demo-service-infrastructure/pom.xml"), "utf8");
|
|
197
|
+
const bootstrapPom = await readFile(path.join(project, "demo-service-bootstrap/pom.xml"), "utf8");
|
|
198
|
+
assert.doesNotMatch(domainPom, /yss-component-(?:dto|exception)|jackson-databind|swagger-annotations|validation-api/);
|
|
199
|
+
assert.match(infrastructurePom, /yss-component-mybatis-plus-starter/);
|
|
200
|
+
assert.match(infrastructurePom, /spring-boot-starter-jdbc/);
|
|
201
|
+
assert.match(bootstrapPom, /spring-boot-starter-actuator/);
|
|
202
|
+
assert.match(bootstrapPom, /spring-boot-starter-test/);
|
|
203
|
+
const webPom = await readFile(path.join(project, "demo-service-adapter", "demo-service-web", "pom.xml"), "utf8");
|
|
204
|
+
assert.match(webPom, /yss-component-dto/);
|
|
205
|
+
assert.match(webPom, /yss-component-exception/);
|
|
206
|
+
assert.match(webPom, /io\.swagger\.core\.v3/);
|
|
207
|
+
const parentPom = await readFile(path.join(project, "pom.xml"), "utf8");
|
|
208
|
+
assert.match(parentPom, /lombok-mapstruct-binding/);
|
|
209
|
+
assert.match(parentPom, /maven-enforcer-plugin/);
|
|
210
|
+
assert.match(parentPom, /maven-compiler-plugin/);
|
|
211
|
+
assert.match(parentPom, /archunit-junit5/);
|
|
212
|
+
});
|
|
22
213
|
|
|
23
|
-
test("
|
|
214
|
+
test("生成工程固定平台 profile、Wrapper checksum,并把调试日志隔离到 local 配置", async (t) => {
|
|
215
|
+
const data = await fixture();
|
|
216
|
+
t.after(() => rm(data.root, { recursive: true, force: true }));
|
|
217
|
+
const result = await command(data.args);
|
|
218
|
+
assert.equal(result.code, 0, result.stderr);
|
|
219
|
+
const project = path.join(data.output, "demo-service");
|
|
220
|
+
const wrapper = await readFile(path.join(project, ".mvn", "wrapper", "maven-wrapper.properties"), "utf8");
|
|
221
|
+
assert.match(wrapper, /^wrapperSha256Sum=[a-f0-9]{64}$/m);
|
|
222
|
+
assert.match(wrapper, /^distributionSha256Sum=[a-f0-9]{64}$/m);
|
|
223
|
+
const application = await readFile(path.join(project, "demo-service-bootstrap", "src", "main", "resources", "application.yml"), "utf8");
|
|
224
|
+
assert.doesNotMatch(application, /StdOutImpl|DEBUG/);
|
|
225
|
+
const local = await readFile(path.join(project, "demo-service-bootstrap", "src", "main", "resources", "application-local.yml"), "utf8");
|
|
226
|
+
assert.match(local, /StdOutImpl/);
|
|
227
|
+
assert.match(local, /DEBUG/);
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
test("initialize-only 在写文件前拒绝任何已存在目标和 --force", async (t) => { const data = await fixture(); t.after(() => rm(data.root, { recursive: true, force: true })); const rejected = await command(data.args.map((value) => value === data.contractFile ? path.join(data.root, "missing.json") : value)); assert.equal(rejected.code, 1); assert.match(rejected.stderr, /合同/); await mkdir(path.join(data.output, "demo-service")); await writeFile(path.join(data.output, "demo-service", "keep.txt"), "keep"); const noForce = await command(data.args); assert.equal(noForce.code, 1); assert.match(noForce.stderr, /initialize-only/); const forced = await command([...data.args, "--force"]); assert.equal(forced.code, 1); assert.match(forced.stderr, /initialize-only/); assert.equal(await readFile(path.join(data.output, "demo-service", "keep.txt"), "utf8"), "keep"); });
|
|
231
|
+
|
|
232
|
+
test("拒绝基础包名与批准合同不一致", async (t) => {
|
|
233
|
+
const data = await fixture({ base_package: "com.example.approved" });
|
|
234
|
+
t.after(() => rm(data.root, { recursive: true, force: true }));
|
|
235
|
+
const result = await command(data.args);
|
|
236
|
+
assert.equal(result.code, 1);
|
|
237
|
+
assert.match(result.stderr, /--base-package 与脚手架合同不一致/);
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
test("合同 project_name、profile 和 allowed_write_paths 必须约束实际输出", async (t) => {
|
|
241
|
+
const wrongName = await fixture({ project_name: "other-service" });
|
|
242
|
+
t.after(() => rm(wrongName.root, { recursive: true, force: true }));
|
|
243
|
+
const nameResult = await command(wrongName.args);
|
|
244
|
+
assert.equal(nameResult.code, 1);
|
|
245
|
+
assert.match(nameResult.stderr, /--project-name 与脚手架合同不一致/);
|
|
24
246
|
|
|
25
|
-
|
|
247
|
+
const wrongProfile = await fixture({ profiles: { ...contract("unused").profiles, persistence: "mybatis" } });
|
|
248
|
+
t.after(() => rm(wrongProfile.root, { recursive: true, force: true }));
|
|
249
|
+
const profileResult = await command(wrongProfile.args);
|
|
250
|
+
assert.equal(profileResult.code, 1);
|
|
251
|
+
assert.match(profileResult.stderr, /unsupported persistence profile/);
|
|
252
|
+
|
|
253
|
+
const wrongPath = await fixture({ allowed_write_paths: ["another-service"], work_unit: { ...contract("unused").work_unit, allowed_write_paths: ["another-service"] } });
|
|
254
|
+
t.after(() => rm(wrongPath.root, { recursive: true, force: true }));
|
|
255
|
+
const pathResult = await command(wrongPath.args);
|
|
256
|
+
assert.equal(pathResult.code, 1);
|
|
257
|
+
assert.match(pathResult.stderr, /allowed_write_paths/);
|
|
258
|
+
});
|
|
26
259
|
|
|
27
|
-
test("
|
|
260
|
+
test("initialize-only 拒绝以 --force 覆盖 .gitmodules 登记的挂载点", async (t) => {
|
|
28
261
|
const data = await fixture();
|
|
29
262
|
t.after(() => rm(data.root, { recursive: true, force: true }));
|
|
30
263
|
const superproject = path.join(data.root, "harness");
|
|
@@ -33,9 +266,9 @@ test("拒绝覆盖 .gitmodules 登记的 git-submodule 挂载点", async (t) =>
|
|
|
33
266
|
await writeFile(path.join(superproject, ".gitmodules"), "[submodule \"demo-service\"]\n\tpath = apps/backend/demo-service\n\turl = https://example.invalid/demo-service.git\n");
|
|
34
267
|
const contractFile = path.join(data.root, "gitlink-contract.json");
|
|
35
268
|
await writeFile(contractFile, `${JSON.stringify(contract(output), null, 2)}\n`);
|
|
36
|
-
const result = await command(["--project-name", "demo-service", "--base-package", "com.yss.demo", "--output-dir", output, "--database", "mysql", "--contract-id", "scaffold-1", "--contract-version", "1", "--approval-ref", "approval-1", "--router-draft-ref", "router-1", "--persisted-ref", "persisted-1", "--contract-file", contractFile, "--force"
|
|
269
|
+
const result = await command(["--project-name", "demo-service", "--base-package", "com.yss.demo", "--output-dir", output, "--database", "mysql", "--contract-id", "scaffold-1", "--contract-version", "1", "--approval-ref", "approval-1", "--router-draft-ref", "router-1", "--persisted-ref", "persisted-1", "--contract-file", contractFile, "--force"]);
|
|
37
270
|
assert.equal(result.code, 1, result.stderr);
|
|
38
|
-
assert.match(`${result.stdout}\n${result.stderr}`, /gitlink 不得由脚手架覆盖/);
|
|
271
|
+
assert.match(`${result.stdout}\n${result.stderr}`, /initialize-only|gitlink 不得由脚手架覆盖/);
|
|
39
272
|
});
|
|
40
273
|
|
|
41
274
|
test("拒绝在 detached HEAD 子仓工作树内当成普通目录生成", async (t) => {
|
|
@@ -63,16 +296,93 @@ test("--force 覆盖真实 gitlink 不得走普通目录覆盖路径", async (t)
|
|
|
63
296
|
const output = path.join(empty.superproject, "apps/backend");
|
|
64
297
|
const contractFile = path.join(data.root, "empty-gitlink-contract.json");
|
|
65
298
|
await writeFile(contractFile, `${JSON.stringify(contract(output), null, 2)}\n`);
|
|
66
|
-
const result = await command(["--project-name", "billing-service", "--base-package", "com.yss.demo", "--output-dir", output, "--database", "mysql", "--contract-id", "scaffold-1", "--contract-version", "1", "--approval-ref", "approval-1", "--router-draft-ref", "router-1", "--persisted-ref", "persisted-1", "--contract-file", contractFile, "--force"
|
|
299
|
+
const result = await command(["--project-name", "billing-service", "--base-package", "com.yss.demo", "--output-dir", output, "--database", "mysql", "--contract-id", "scaffold-1", "--contract-version", "1", "--approval-ref", "approval-1", "--router-draft-ref", "router-1", "--persisted-ref", "persisted-1", "--contract-file", contractFile, "--force"]);
|
|
67
300
|
const text = `${result.stdout}\n${result.stderr}`;
|
|
68
301
|
assert.equal(result.code, 1, text);
|
|
69
302
|
assert.doesNotMatch(text, /请显式传入 --force/);
|
|
70
|
-
assert.match(text,
|
|
303
|
+
assert.match(text, /initialize-only|--force 不得把 git-submodule 挂载点当成普通目录覆盖|gitlink 不得/);
|
|
71
304
|
assert.equal(existsSync(path.join(output, "billing-service", "pom.xml")), false);
|
|
72
305
|
assert.equal((await readdir(output)).some((name) => name.includes("backup")), false);
|
|
73
306
|
assert.equal(gitLsFilesStage(empty.superproject, empty.mount)?.mode, GITLINK_MODE);
|
|
74
307
|
});
|
|
75
308
|
|
|
76
|
-
test("验证器记录三条 wrapper 命令的成功和失败证据", async (t) => { const root = await mkdtemp(path.join(os.tmpdir(), "yss-scaffold-verifier-")); t.after(() => rm(root, { recursive: true, force: true })); const project = path.join(root, "project"); await
|
|
309
|
+
test("验证器记录三条 wrapper 命令的成功和失败证据", async (t) => { const root = await mkdtemp(path.join(os.tmpdir(), "yss-scaffold-verifier-")); t.after(() => rm(root, { recursive: true, force: true })); const project = path.join(root, "project"); await prepareVerifierProject(project); const wrapper = path.join(project, "mvnw"); await writeFile(wrapper, "#!/bin/sh\n[ \"$1\" = test ] && exit 2\nprintf 'ran %s\\n' \"$1\"\n"); await chmod(wrapper, 0o755); const evidence = path.join(root, "evidence"); const report = await run(project, evidence, controlledEnvironment); assert.equal(report.status, "failed"); assert.equal(report.failure_category, "test-failure"); assert.equal(report.commands[1].failure_category, "test-failure"); assert.equal(report.preflight.wrapper_executable, true); assert.deepEqual(report.commands.map((item) => item.exit_code), [0, 2, 0]); assert.match(await readFile(path.join(evidence, "mvnw-test.stderr.log"), "utf8"), /^$/); });
|
|
77
310
|
|
|
78
|
-
test("
|
|
311
|
+
test("验证器把内部仓库解析失败与编译失败分开报告", async (t) => {
|
|
312
|
+
const root = await mkdtemp(path.join(os.tmpdir(), "yss-scaffold-repository-failure-"));
|
|
313
|
+
t.after(() => rm(root, { recursive: true, force: true }));
|
|
314
|
+
const project = path.join(root, "project");
|
|
315
|
+
await prepareVerifierProject(project);
|
|
316
|
+
const wrapper = path.join(project, "mvnw");
|
|
317
|
+
await writeFile(wrapper, "#!/bin/sh\nprintf 'Non-resolvable parent POM: Could not transfer artifact\\n'\nexit 1\n");
|
|
318
|
+
await chmod(wrapper, 0o755);
|
|
319
|
+
const report = await run(project, path.join(root, "evidence"), controlledEnvironment);
|
|
320
|
+
assert.equal(report.status, "failed");
|
|
321
|
+
assert.equal(report.failure_category, "repository-access");
|
|
322
|
+
assert.ok(report.commands.every((item) => item.failure_category === "repository-access"));
|
|
323
|
+
assert.equal(typeof report.preflight.maven_repository_credentials_configured, "boolean");
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
test("验证器单独标记 Java 编译失败和 Bootstrap 主类缺失", async (t) => {
|
|
327
|
+
const cases = [
|
|
328
|
+
{ output: "[ERROR] COMPILATION ERROR", expected: "compilation" },
|
|
329
|
+
{ output: "Unable to find main class", expected: "bootstrap-entrypoint" }
|
|
330
|
+
];
|
|
331
|
+
for (const item of cases) {
|
|
332
|
+
const root = await mkdtemp(path.join(os.tmpdir(), "yss-scaffold-build-failure-"));
|
|
333
|
+
t.after(() => rm(root, { recursive: true, force: true }));
|
|
334
|
+
const project = path.join(root, "project");
|
|
335
|
+
await prepareVerifierProject(project);
|
|
336
|
+
const wrapper = path.join(project, "mvnw");
|
|
337
|
+
await writeFile(wrapper, `#!/bin/sh\n[ "$1" = package ] || exit 0\nprintf '%s\\n' '${item.output}' >&2\nexit 1\n`);
|
|
338
|
+
await chmod(wrapper, 0o755);
|
|
339
|
+
const report = await run(project, path.join(root, "evidence"), controlledEnvironment);
|
|
340
|
+
assert.equal(report.failure_category, item.expected);
|
|
341
|
+
assert.equal(report.commands[2].failure_category, item.expected);
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
test("验证器在全部 Maven 命令成功时通过并保留日志引用", async (t) => { const root = await mkdtemp(path.join(os.tmpdir(), "yss-scaffold-verifier-success-")); t.after(() => rm(root, { recursive: true, force: true })); const project = path.join(root, "project"); await prepareVerifierProject(project); const wrapper = path.join(project, "mvnw"); await writeFile(wrapper, "#!/bin/sh\nprintf 'ran %s\\n' \"$1\"\n"); await chmod(wrapper, 0o755); const report = await run(project, path.join(root, "evidence"), controlledEnvironment); assert.equal(report.status, "passed"); assert.ok(report.commands.every((item) => item.exit_code === 0 && item.stdout_ref.endsWith(".stdout.log"))); });
|
|
346
|
+
|
|
347
|
+
test("Manifest v2 在缺少受控仓库环境时先于 Maven 执行阻断", async (t) => {
|
|
348
|
+
const root = await mkdtemp(path.join(os.tmpdir(), "yss-scaffold-v2-preflight-"));
|
|
349
|
+
t.after(() => rm(root, { recursive: true, force: true }));
|
|
350
|
+
const project = path.join(root, "project");
|
|
351
|
+
await prepareVerifierProject(project);
|
|
352
|
+
const wrapper = path.join(project, "mvnw");
|
|
353
|
+
await writeFile(wrapper, "#!/bin/sh\nprintf 'must not run'\nexit 99\n");
|
|
354
|
+
await chmod(wrapper, 0o755);
|
|
355
|
+
const report = await run(project, path.join(root, "evidence"), { ...process.env, YSS_MAVEN_REPOSITORY_URL: "", MAVEN_REPO_USERNAME: "", MAVEN_REPO_PASSWORD: "" });
|
|
356
|
+
assert.equal(report.status, "failed");
|
|
357
|
+
assert.equal(report.failure_category, "verification-preflight");
|
|
358
|
+
assert.deepEqual(report.commands, []);
|
|
359
|
+
assert.ok(report.preflight.failures.includes("repository-url-not-configured"));
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
test("Manifest schema v1 is unsupported and verifier never executes its wrapper", async (t) => {
|
|
363
|
+
const root = await mkdtemp(path.join(os.tmpdir(), "yss-scaffold-v1-unsupported-"));
|
|
364
|
+
t.after(() => rm(root, { recursive: true, force: true }));
|
|
365
|
+
const project = path.join(root, "project");
|
|
366
|
+
await prepareVerifierProject(project, { schema_version: 1, contract_id: "legacy", contract_version: 1 });
|
|
367
|
+
const wrapper = path.join(project, "mvnw");
|
|
368
|
+
await writeFile(wrapper, "#!/bin/sh\nprintf 'must not run' > wrapper-ran\n");
|
|
369
|
+
await chmod(wrapper, 0o755);
|
|
370
|
+
await assert.rejects(() => run(project, path.join(root, "evidence"), controlledEnvironment), /unsupported: scaffold Manifest schema_version=1/);
|
|
371
|
+
assert.equal(existsSync(path.join(project, "wrapper-ran")), false);
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
test("验证日志会脱敏 Maven 仓库凭据", async (t) => {
|
|
375
|
+
const root = await mkdtemp(path.join(os.tmpdir(), "yss-scaffold-redaction-"));
|
|
376
|
+
t.after(() => rm(root, { recursive: true, force: true }));
|
|
377
|
+
const project = path.join(root, "project");
|
|
378
|
+
await prepareVerifierProject(project);
|
|
379
|
+
const wrapper = path.join(project, "mvnw");
|
|
380
|
+
await writeFile(wrapper, "#!/bin/sh\nprintf '%s %s\\n' \"$MAVEN_REPO_USERNAME\" \"$MAVEN_REPO_PASSWORD\"\n");
|
|
381
|
+
await chmod(wrapper, 0o755);
|
|
382
|
+
const sensitiveEnvironment = { ...controlledEnvironment, MAVEN_REPO_USERNAME: "sensitive-user", MAVEN_REPO_PASSWORD: "sensitive-password" };
|
|
383
|
+
const evidence = path.join(root, "evidence");
|
|
384
|
+
await run(project, evidence, sensitiveEnvironment);
|
|
385
|
+
const log = await readFile(path.join(evidence, "mvnw-validate.stdout.log"), "utf8");
|
|
386
|
+
assert.doesNotMatch(log, /sensitive-user|sensitive-password/);
|
|
387
|
+
assert.match(log, /\[REDACTED:MAVEN_REPO_USERNAME\].*\[REDACTED:MAVEN_REPO_PASSWORD\]/);
|
|
388
|
+
});
|
|
@@ -25,7 +25,7 @@ description: Use when YSS 产品设计系统与 Ant Design 企业级 UI 风格
|
|
|
25
25
|
2. 读取已有资产:`docs/design/design.md`、相关 Spec、交互说明、状态矩阵、OpenAPI Draft、现有页面代码。
|
|
26
26
|
3. 按设计系统基线约束输出或修改产物:颜色、排版、间距、圆角、动效、组件、状态、响应式。
|
|
27
27
|
4. 若是产品设计阶段,先使用 `yss-prototype-stage`;Codex 以 `product-design:index` 为主入口,其他 Agent 必须交付等价合同资产和证据。
|
|
28
|
-
5. 若是前端实现阶段,配合 `yss-ui`、`yss-components`、`yss-formily
|
|
28
|
+
5. 若是前端实现阶段,配合 `yss-ui`、`yss-ui-business-page-generation`、`yss-components`、`yss-formily`;生命周期编排和旧触发词兼容再使用 `yss-page-module-development`,但本技能负责风格与体验一致性门禁。
|
|
29
29
|
6. 若发现现有设计系统文档不足,先更新 `docs/design/design.md`,再让实现或评审引用该文档。
|
|
30
30
|
|
|
31
31
|
## 核心基线
|
|
@@ -85,7 +85,7 @@ description: Use when YSS 产品设计系统与 Ant Design 企业级 UI 风格
|
|
|
85
85
|
| 低保真原型进入高保真前评审 | `prototype-review` |
|
|
86
86
|
| 低保真评审通过后的高保真 HTML 原型 | `yss-prototype-stage`;`high-fidelity-html-prototype` 仅兼容入口 |
|
|
87
87
|
| 低保真线框或流程图 | `product-design:index` |
|
|
88
|
-
| 前端页面实现 | `yss-ui` / `yss-page-module-development` |
|
|
88
|
+
| 前端页面实现 | `yss-ui` / `yss-ui-business-page-generation`;生命周期兼容使用 `yss-page-module-development` |
|
|
89
89
|
| 表单 schema | `yss-formily` |
|
|
90
90
|
| YTable / YTree / 高度自适应 | `yss-components` / `yss-use-table-height` / `yss-use-tree-height` |
|
|
91
91
|
| 原型阶段的 Ant Design v6 组件 / token / demo 查询 | `yss-antd-design`(只用于原型设计构建;前端落地改用 `yss-ui`) |
|
|
@@ -214,8 +214,8 @@ React + Ant Design:
|
|
|
214
214
|
|
|
215
215
|
YSS UI / Vue:
|
|
216
216
|
|
|
217
|
-
- 业务页面优先走 `yss-ui` 和 `yss-page-module-development`。
|
|
218
|
-
-
|
|
217
|
+
- 业务页面优先走 `yss-ui` 和 `yss-ui-business-page-generation`;生命周期编排和旧触发词兼容使用 `yss-page-module-development`。
|
|
218
|
+
- 新业务表单使用 `YFormily` schema;`YssFormily` 仅用于历史兼容。
|
|
219
219
|
- 表格使用 `YTable`,列定义使用项目约定字段。
|
|
220
220
|
- 高度自适应使用 `useTableHeight` / `useTreeHeight`。
|
|
221
221
|
- 请求、分页、筛选参数下沉到 Hook。
|
|
@@ -7,7 +7,7 @@ description: 用于构建或重构 YSS 领域层代码。当用户要求设计
|
|
|
7
7
|
|
|
8
8
|
这是一个领域实现 skill。核心目标是消费已批准的战术模型,将领域行为落实为代码;战术模型的设计与批准由 `yss-tactical-design` 和 `yss-product-lifecycle` 负责。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
本 skill 在新脚手架链路只支持 `target-domain-model`。`core/client/repository`、贫血对象和 VO 型 Gateway 对该链路均为 `unsupported`,不提供旧架构分支。
|
|
11
11
|
|
|
12
12
|
## 何时使用
|
|
13
13
|
|
|
@@ -41,7 +41,7 @@ description: 用于构建或重构 YSS 领域层代码。当用户要求设计
|
|
|
41
41
|
- Gateway 只暴露领域能力,不暴露持久化细节。
|
|
42
42
|
- 对关键状态流转给出明确方法,如 `publish()`、`cancel()`、`terminate()`。
|
|
43
43
|
- 明确 Aggregate Root、Entity identity、Value Object、不变量、Domain Event 和一致性边界;没有业务行为时不要伪造富领域模型。
|
|
44
|
-
-
|
|
44
|
+
- 发现旧架构时停止套用新脚手架合同并返回 `unsupported`;旧项目继续按原工程维护,现代化改造单独立项。
|
|
45
45
|
|
|
46
46
|
## 质量要求
|
|
47
47
|
|
|
@@ -58,7 +58,7 @@ description: 用于构建或重构 YSS 领域层代码。当用户要求设计
|
|
|
58
58
|
|
|
59
59
|
## 分层开发规范
|
|
60
60
|
|
|
61
|
-
脚手架生成或进入 Domain 实现前,必须加载 `references/domain-layer-guide.md`:其中定义
|
|
61
|
+
脚手架生成或进入 Domain 实现前,必须加载 `references/domain-layer-guide.md`:其中定义 Aggregate、Domain Gateway、Domain Error、依赖门禁与旧架构 `unsupported` 边界;HTTP DTO/VO 明确不属于 Domain。
|
|
62
62
|
|
|
63
63
|
## 阶段 7 合同
|
|
64
64
|
|