create-yss-spec 2.1.0 → 2.1.2
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 +2 -2
- package/src/cli.js +2 -30
- package/src/template-hash.js +44 -0
- package/template/.agents/skills/cross-repo-implementation-routing/SKILL.md +4 -3
- package/template/.agents/skills/implementation-repo-onboarding/SKILL.md +4 -2
- package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
- package/template/.agents/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
- package/template/.agents/skills/yss-product-lifecycle/SKILL.md +28 -0
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +9 -0
- package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +2 -0
- package/template/.agents/skills/yss-router/SKILL.md +4 -0
- package/template/.agents/skills/yss-router/references/router-contract.yaml +48 -2
- package/template/.agents/skills/yss-router/references/slice-implementation-contract.md +2 -0
- package/template/.agents/skills/yss-router/references/yss-skill-execution-result.md +1 -1
- package/template/.claude/skills/cross-repo-implementation-routing/SKILL.md +4 -3
- package/template/.claude/skills/implementation-repo-onboarding/SKILL.md +4 -2
- package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
- package/template/.claude/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
- package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
- package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
- package/template/.claude/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
- package/template/.claude/skills/yss-product-lifecycle/SKILL.md +28 -0
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +9 -0
- package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +2 -0
- package/template/.claude/skills/yss-router/SKILL.md +4 -0
- package/template/.claude/skills/yss-router/references/router-contract.yaml +48 -2
- package/template/.claude/skills/yss-router/references/slice-implementation-contract.md +2 -0
- package/template/.claude/skills/yss-router/references/yss-skill-execution-result.md +1 -1
- package/template/.codex/skills/cross-repo-implementation-routing/SKILL.md +4 -3
- package/template/.codex/skills/implementation-repo-onboarding/SKILL.md +4 -2
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
- package/template/.codex/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +28 -0
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +9 -0
- package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +2 -0
- package/template/.codex/skills/yss-router/SKILL.md +4 -0
- package/template/.codex/skills/yss-router/references/router-contract.yaml +48 -2
- package/template/.codex/skills/yss-router/references/slice-implementation-contract.md +2 -0
- package/template/.codex/skills/yss-router/references/yss-skill-execution-result.md +1 -1
- package/template/.hermes/skills/cross-repo-implementation-routing/SKILL.md +4 -3
- package/template/.hermes/skills/implementation-repo-onboarding/SKILL.md +4 -2
- package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
- package/template/.hermes/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
- package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
- package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
- package/template/.hermes/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
- package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +28 -0
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +9 -0
- package/template/.hermes/skills/yss-product-lifecycle/references/state-model.md +2 -0
- package/template/.hermes/skills/yss-router/SKILL.md +4 -0
- package/template/.hermes/skills/yss-router/references/router-contract.yaml +48 -2
- package/template/.hermes/skills/yss-router/references/slice-implementation-contract.md +2 -0
- package/template/.hermes/skills/yss-router/references/yss-skill-execution-result.md +1 -1
- package/template/.pi/skills/cross-repo-implementation-routing/SKILL.md +4 -3
- package/template/.pi/skills/implementation-repo-onboarding/SKILL.md +4 -2
- package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
- package/template/.pi/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
- package/template/.pi/skills/yss-product-lifecycle/SKILL.md +28 -0
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +9 -0
- package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +2 -0
- package/template/.pi/skills/yss-router/SKILL.md +4 -0
- package/template/.pi/skills/yss-router/references/router-contract.yaml +48 -2
- package/template/.pi/skills/yss-router/references/slice-implementation-contract.md +2 -0
- package/template/.pi/skills/yss-router/references/yss-skill-execution-result.md +1 -1
- package/template/.qoder/skills/cross-repo-implementation-routing/SKILL.md +4 -3
- package/template/.qoder/skills/implementation-repo-onboarding/SKILL.md +4 -2
- package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
- package/template/.qoder/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
- package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
- package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
- package/template/.qoder/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
- package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +28 -0
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +9 -0
- package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +2 -0
- package/template/.qoder/skills/yss-router/SKILL.md +4 -0
- package/template/.qoder/skills/yss-router/references/router-contract.yaml +48 -2
- package/template/.qoder/skills/yss-router/references/slice-implementation-contract.md +2 -0
- package/template/.qoder/skills/yss-router/references/yss-skill-execution-result.md +1 -1
- package/template/.trae/skills/cross-repo-implementation-routing/SKILL.md +4 -3
- package/template/.trae/skills/implementation-repo-onboarding/SKILL.md +4 -2
- package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +25 -5
- package/template/.trae/skills/yss-ddd-scaffold-generator/agents/openai.yaml +1 -1
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +25 -36
- package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py +474 -258
- package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py +155 -0
- package/template/.trae/skills/yss-frontend-scaffold-generator/SKILL.md +2 -1
- package/template/.trae/skills/yss-product-lifecycle/SKILL.md +28 -0
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +70 -2
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +9 -0
- package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +2 -0
- package/template/.trae/skills/yss-router/SKILL.md +4 -0
- package/template/.trae/skills/yss-router/references/router-contract.yaml +48 -2
- package/template/.trae/skills/yss-router/references/slice-implementation-contract.md +2 -0
- package/template/.trae/skills/yss-router/references/yss-skill-execution-result.md +1 -1
- package/template/AGENTS.md +12 -8
- package/template/docs/architecture/templates/engineering-baseline-review-template.md +14 -0
- package/template/docs/process/implementation-repo-integration.md +17 -0
- package/template/docs/process/lifecycle-artifact-map.md +3 -3
- package/template/docs/templates/build-architecture-checklist-template.md +7 -1
- package/template/docs/templates/cross-repo-slice-template.md +2 -0
- package/template/docs/templates/implementation-repo-registry-template.md +14 -0
- package/template/docs/templates/implementation-routing-template.md +35 -6
- package/template/docs/user-guide//344/272/247/345/223/201/347/224/237/345/221/275/345/221/250/346/234/237/345/267/245/344/275/234/346/265/201.md +4 -3
- package/template/docs/user-guide//347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +10 -2
- package/template/scripts/implementation-path-policy.rb +50 -0
- package/template/scripts/sync-skills +5 -0
- package/template/scripts/update-skill-lock +7 -1
- package/template/scripts/verify-implementation-path-scenarios +43 -0
- package/template/scripts/verify-lifecycle-scenarios +18 -0
- package/template/scripts/verify-matt-yss-integration-scenarios +1 -1
- package/template/scripts/verify-prototype-backend-scaffold-scenarios +239 -0
- package/template/scripts/verify-scaffold-generator-scenarios +438 -0
- package/template/scripts/verify-template +11 -0
- package/template/scripts/verify-yss-router-scenarios +76 -23
- package/template/skills-lock.json +6 -6
- package/template.snapshot.json +4 -4
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
- package/template/.claude/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
- package/template/.hermes/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
- package/template/.qoder/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/adapter/UserController.java.template +0 -84
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/application/UserConvertor.java.template +0 -21
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/application/UserService.java.template +0 -48
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/application/UserServiceImpl.java.template +0 -87
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/bootstrap/YssDatamiddleApplication.java.template +0 -28
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/data.sql.template +0 -2
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/config/schema.sql.template +0 -27
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/domain/User.java.template +0 -17
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserAddCmd.java.template +0 -27
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserGateway.java.template +0 -54
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserPageQuery.java.template +0 -12
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserUpdateCmd.java.template +0 -21
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/domain/UserVO.java.template +0 -52
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/AuditableEntity.java.template +0 -25
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/PageUtil.java.template +0 -13
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserGatewayImpl.java.template +0 -85
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPO.java.template +0 -35
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserPOConvertor.java.template +0 -28
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/UserRepository.java.template +0 -7
- package/template/.trae/skills/yss-ddd-scaffold-generator/assets/templates/infrastructure/YssDataMybatisConfig.java.template +0 -8
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ npx create-yss-spec@latest
|
|
|
33
33
|
- 旧、新资产内容冲突或清单 schema / mode 非法时 fail closed
|
|
34
34
|
- 保留模板的共享 skill 投影;生成实例可在尚未 `git init` 时运行模板校验
|
|
35
35
|
|
|
36
|
-
本次新增能力按 `2.1.
|
|
36
|
+
本次新增能力按 `2.1.2` 发布。`templateCommit` 会写入实例 metadata;“最新模板”指用户执行的 `npx create-yss-spec@latest` 所携带的最新已发布快照,CLI 运行时不会拉取模板仓库。
|
|
37
37
|
|
|
38
38
|
## 接管已有项目
|
|
39
39
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-yss-spec",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.2",
|
|
4
4
|
"description": "Initialize a YSS spec project template repository",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"template.snapshot.json"
|
|
19
19
|
],
|
|
20
20
|
"bin": {
|
|
21
|
-
"create-yss-spec": "
|
|
21
|
+
"create-yss-spec": "bin/create-yss-spec.js"
|
|
22
22
|
},
|
|
23
23
|
"scripts": {
|
|
24
24
|
"sync-template": "node scripts/sync-template.js",
|
package/src/cli.js
CHANGED
|
@@ -4,6 +4,7 @@ const os = require("node:os");
|
|
|
4
4
|
const path = require("node:path");
|
|
5
5
|
const readline = require("node:readline/promises");
|
|
6
6
|
const { spawnSync } = require("node:child_process");
|
|
7
|
+
const { treeHash } = require("./template-hash");
|
|
7
8
|
|
|
8
9
|
const PACKAGE_ROOT = path.resolve(__dirname, "..");
|
|
9
10
|
const PACKAGE_MANIFEST = JSON.parse(
|
|
@@ -489,35 +490,6 @@ function fileHash(filePath) {
|
|
|
489
490
|
return sha256(fs.readFileSync(filePath));
|
|
490
491
|
}
|
|
491
492
|
|
|
492
|
-
function treeHash(rootPath) {
|
|
493
|
-
const digest = crypto.createHash("sha256");
|
|
494
|
-
|
|
495
|
-
function visit(currentPath, relativeDir = "") {
|
|
496
|
-
for (const entry of fs
|
|
497
|
-
.readdirSync(currentPath, { withFileTypes: true })
|
|
498
|
-
.sort((left, right) => left.name.localeCompare(right.name))) {
|
|
499
|
-
if (entry.name === ".DS_Store") {
|
|
500
|
-
continue;
|
|
501
|
-
}
|
|
502
|
-
const relativePath = relativeDir
|
|
503
|
-
? `${relativeDir}/${entry.name}`
|
|
504
|
-
: entry.name;
|
|
505
|
-
const absolutePath = path.join(currentPath, entry.name);
|
|
506
|
-
if (entry.isDirectory()) {
|
|
507
|
-
digest.update(`dir:${relativePath}\0`);
|
|
508
|
-
visit(absolutePath, relativePath);
|
|
509
|
-
} else if (entry.isFile()) {
|
|
510
|
-
digest.update(`file:${relativePath}\0`);
|
|
511
|
-
digest.update(fs.readFileSync(absolutePath));
|
|
512
|
-
digest.update("\0");
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
visit(rootPath);
|
|
518
|
-
return digest.digest("hex");
|
|
519
|
-
}
|
|
520
|
-
|
|
521
493
|
function pathKind(absolutePath) {
|
|
522
494
|
let stat;
|
|
523
495
|
try {
|
|
@@ -1744,7 +1716,7 @@ function runSync(argv = []) {
|
|
|
1744
1716
|
}
|
|
1745
1717
|
|
|
1746
1718
|
function printHelp() {
|
|
1747
|
-
console.log(`create-yss-spec
|
|
1719
|
+
console.log(`create-yss-spec ${PACKAGE_MANIFEST.version}
|
|
1748
1720
|
|
|
1749
1721
|
初始化:create-yss-spec --project-name <name> --business-domain <domain> --target-dir <dir>
|
|
1750
1722
|
接管已有项目:create-yss-spec attach --target-dir <dir> --project-name <name> --business-domain <domain> --dry-run|--apply [--force]
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
const crypto = require("node:crypto");
|
|
2
|
+
const fs = require("node:fs");
|
|
3
|
+
const path = require("node:path");
|
|
4
|
+
|
|
5
|
+
function compareNames(left, right) {
|
|
6
|
+
if (left < right) {
|
|
7
|
+
return -1;
|
|
8
|
+
}
|
|
9
|
+
if (left > right) {
|
|
10
|
+
return 1;
|
|
11
|
+
}
|
|
12
|
+
return 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function treeHash(rootPath) {
|
|
16
|
+
const digest = crypto.createHash("sha256");
|
|
17
|
+
|
|
18
|
+
function visit(currentPath, relativeDir = "") {
|
|
19
|
+
for (const entry of fs
|
|
20
|
+
.readdirSync(currentPath, { withFileTypes: true })
|
|
21
|
+
.sort((left, right) => compareNames(left.name, right.name))) {
|
|
22
|
+
if (entry.name === ".DS_Store") {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const relativePath = relativeDir
|
|
26
|
+
? `${relativeDir}/${entry.name}`
|
|
27
|
+
: entry.name;
|
|
28
|
+
const absolutePath = path.join(currentPath, entry.name);
|
|
29
|
+
if (entry.isDirectory()) {
|
|
30
|
+
digest.update(`dir:${relativePath}\0`);
|
|
31
|
+
visit(absolutePath, relativePath);
|
|
32
|
+
} else if (entry.isFile()) {
|
|
33
|
+
digest.update(`file:${relativePath}\0`);
|
|
34
|
+
digest.update(fs.readFileSync(absolutePath));
|
|
35
|
+
digest.update("\0");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
visit(rootPath);
|
|
41
|
+
return digest.digest("hex");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
module.exports = { treeHash };
|
|
@@ -19,9 +19,10 @@ description: Use when a Harness change or vertical slice may require work across
|
|
|
19
19
|
1. 读取 `docs/process/implementation-repo-integration.md` 和当前 change 资产。
|
|
20
20
|
2. 判断影响面:Harness-only、backend-only、frontend-only、backend+frontend、contract-only、release-only。
|
|
21
21
|
3. 确认每个受影响实现仓库已有登记记录;缺失则阻断并要求 onboarding。
|
|
22
|
-
4.
|
|
23
|
-
5.
|
|
24
|
-
6.
|
|
22
|
+
4. 核对项目根路径:Harness 内项目必须是 `apps/backend/<project>/` 或 `apps/frontend/<project>/`;`apps/backend/`、`apps/frontend/` 只能作为容器,`app/backend/`、`app/frontend/` 及其子路径必须阻断。外部仓库记录各自的真实项目根。
|
|
23
|
+
5. 输出最小任务分配:Harness 文档 / OpenAPI / 后端 MR / 前端 MR / 验证 / 发布。
|
|
24
|
+
6. 按 `docs/templates/cross-repo-slice-template.md` 生成切片记录草案。
|
|
25
|
+
7. 给出 fresh verification 命令和阶段 checkpoint 回写字段。
|
|
25
26
|
|
|
26
27
|
## Routing Matrix
|
|
27
28
|
|
|
@@ -20,8 +20,9 @@ description: Use when connecting an existing frontend, backend, fullstack, or ot
|
|
|
20
20
|
2. 如果输入是本地路径,只读检查 Git remote、当前分支、目录结构、构建文件和测试脚本。
|
|
21
21
|
3. 如果输入是远端 URL,优先使用只读 Git 查询;需要 clone 时只能 clone 到临时目录,不能 clone 到 Harness 仓库内。
|
|
22
22
|
4. 识别技术栈、包管理器、CI、测试命令、构建命令、OpenAPI 接入和设计 token 接入。
|
|
23
|
-
5.
|
|
24
|
-
6.
|
|
23
|
+
5. 判定实现位置:Harness 内只能使用 `apps/backend/<project>/` 或 `apps/frontend/<project>/`;`apps/backend/`、`apps/frontend/` 仅为容器,`app/backend/`、`app/frontend/` 及其子路径必须标记为阻断。外部实现仓库记录真实项目根路径,不套用 Harness 占位路径。
|
|
24
|
+
6. 按 `docs/templates/implementation-repo-registry-template.md` 输出实现仓库登记内容。
|
|
25
|
+
7. 列出 `known_gaps`、人审点、fresh verification 命令和需要回写到 Harness change / Issue / checkpoint 的信息。
|
|
25
26
|
|
|
26
27
|
## Baseline Checks
|
|
27
28
|
|
|
@@ -37,6 +38,7 @@ description: Use when connecting an existing frontend, backend, fullstack, or ot
|
|
|
37
38
|
- 不直接提交、推送、创建 MR / PR 或修改实现仓库。
|
|
38
39
|
- 不把实现仓库源码复制进 Harness 仓库。
|
|
39
40
|
- 不把缺失命令编造为已存在;找不到时标记 `unknown` 或 `需人工确认`。
|
|
41
|
+
- 不得把 `app/backend/`、`app/frontend/` 或 `apps/backend/`、`apps/frontend/` 容器根登记为可生成项目根。
|
|
40
42
|
- 触碰认证、授权、SQL、迁移、加密、公共基础库 API 时标记 `TODO-HUMAN-REVIEW`。
|
|
41
43
|
|
|
42
44
|
## Output
|
|
@@ -24,11 +24,14 @@ description: 用于生成完整的 YSS DDD 多模块后端脚手架。当用户
|
|
|
24
24
|
## 优先流程
|
|
25
25
|
|
|
26
26
|
1. 确认项目名、基础包名、输出目录、数据库类型。
|
|
27
|
+
Harness 内输出目录必须是 `apps/backend/` 容器,生成器再以 `project_name` 创建 `apps/backend/<project>/`;禁止使用 `app/backend/`、`app/frontend/` 或把 `apps/backend/` 之外的容器根当作后端项目根。
|
|
27
28
|
2. 运行 `scripts/generate_scaffold.py` 生成骨架。
|
|
28
29
|
3. 检查生成的模块名、POM、配置文件、Smart Doc 配置和包路径。
|
|
29
|
-
4.
|
|
30
|
+
4. 由生命周期受控工作单元在生成项目根目录实际执行 `./mvnw validate`、`./mvnw test` 和 `./mvnw package`;生成器打印的下一步命令不构成验证证据。
|
|
30
31
|
5. 如需继续细化,再追加其他 YSS skill 补全领域、仓储和 Web。
|
|
31
32
|
|
|
33
|
+
受控验证命令由本 skill 的 `scripts/run_scaffold_verification.py` 固定执行;验证器先检查 `.yss/scaffold-generation.json` 的合同元数据,再在指定 evidence 目录写入每条命令的 stdout/stderr、`exit_code`、耗时、执行时间和 `scaffold-verification.json`;任何一条命令失败或未执行都必须阻断。
|
|
34
|
+
|
|
32
35
|
## 推荐命令
|
|
33
36
|
|
|
34
37
|
```bash
|
|
@@ -36,7 +39,13 @@ python3 scripts/generate_scaffold.py \
|
|
|
36
39
|
--project-name my-service \
|
|
37
40
|
--base-package com.yss.myservice \
|
|
38
41
|
--output-dir /path/to/implementation-repo \
|
|
39
|
-
--database mysql
|
|
42
|
+
--database mysql \
|
|
43
|
+
--contract-id <approved-scaffold-contract-id> \
|
|
44
|
+
--contract-version <current-version> \
|
|
45
|
+
--approval-ref <lifecycle-approval-ref> \
|
|
46
|
+
--router-draft-ref <router-draft-ref> \
|
|
47
|
+
--persisted-ref <persisted-contract-ref> \
|
|
48
|
+
--contract-file /path/to/persisted-scaffold-contract.json
|
|
40
49
|
```
|
|
41
50
|
|
|
42
51
|
## 生成结果应包含
|
|
@@ -47,20 +56,28 @@ python3 scripts/generate_scaffold.py \
|
|
|
47
56
|
- `*-infrastructure`
|
|
48
57
|
- `*-adapter`
|
|
49
58
|
- `*-bootstrap`
|
|
50
|
-
-
|
|
59
|
+
- 基础配置、机械模板、构建脚本
|
|
51
60
|
- `bootstrap/src/main/resources/smart-doc.json` 基础配置
|
|
52
61
|
|
|
53
62
|
## 使用约束
|
|
54
63
|
|
|
55
|
-
-
|
|
56
|
-
-
|
|
64
|
+
- 先在生命周期批准的脚手架受控生成合同下生成骨架,再做业务化定制;不要直接把脚手架当最终代码交付。
|
|
65
|
+
- 永不生成 `User CRUD` 示例;`--with-example` 已禁用,业务代码必须按批准的 Slice Implementation Contract 逐切片实现。
|
|
57
66
|
- 若仓库已经存在相同工程,先核对覆盖范围。
|
|
58
67
|
- 输出目录必须显式指定;非空目录默认拒绝写入,确认覆盖时才使用 `--force`。
|
|
68
|
+
- Harness 内多项目布局必须使用 `apps/backend/<project>/`;`apps/backend/` 只能是生成器的父容器,`app/backend/`、`app/frontend/` 及其子路径一律拒绝。
|
|
59
69
|
- 不要在 skill 里硬编码用户业务字段或真实连接信息。
|
|
60
70
|
- 生成后要检查依赖关系是否仍符合分层约束。
|
|
61
71
|
- 生成后必须继续使用 `yss-backend-scaffold-parent` 校验工程基线,再按垂直切片加载 `yss-domain`、`yss-repository`、`yss-web-controller` 等局部技能。
|
|
62
72
|
- 当前脚手架第一阶段仅支持经过验证的 `mysql`;未提供完整模板和验证的数据库类型不得伪装成已支持。
|
|
63
73
|
- 生成后的后端工程必须使用项目根目录 `./mvnw ...` 执行构建、测试、运行、OpenAPI 生成和 CI 验证;不得在 README、实施记录、Ticket、Review 或 Release 中默认写裸 `mvn ...`。既有仓库确实无法使用 wrapper 时,必须记录受控例外。
|
|
74
|
+
- 原型确认后,`scaffold_status=required` 才能进入本 skill;本 skill 的生成边界是工程结构、POM、配置、Wrapper、Smart Doc 和机械模板,不是业务实现。
|
|
75
|
+
- 脚手架合同必须携带 `contract_id`、`contract_version`、Router draft 引用、生命周期批准引用、持久化引用、当前版本、允许写路径、预期证据文件和验证命令;字段缺失或版本过期时阻断。
|
|
76
|
+
- 运行生成器必须传入 `--contract-file`;生成器会校验合同 `status=approved`、`current_version`、`primary_skill`、`controlled-generation` 和固定三条验证命令,不接受仅凭任意字符串引用的放行。
|
|
77
|
+
- 生成项目必须写入非业务元数据清单 `.yss/scaffold-generation.json`,回勾合同 ID、版本、批准引用、生成输入、受控模式和固定验证命令;清单缺失时不得交给后续 Router。
|
|
78
|
+
- 严禁把领域规则、状态机、权限、事务、复杂查询、错误映射、业务字段或用户可见行为塞进脚手架生成步骤。`./mvnw validate`、输出目录存在或“生成成功”都不等于生命周期批准、架构放行或 `ready-for-agent`。
|
|
79
|
+
- 生命周期脚手架生成必须关闭 `--with-example`,不得把 User CRUD 或业务字段当作样板;非空目标目录使用 `--force` 默认禁止,除非覆盖范围、备份、回滚点和批准引用已经进入当前合同。
|
|
80
|
+
- 脚手架完成后,所有后续生成的后端代码必须回到 `yss-router`,消费批准且版本当前的 Slice Implementation Contract 和对应 YSS skill;业务行为使用 `behavior-tdd`,机械生成才使用 `controlled-generation`。
|
|
64
81
|
- `.mvn/settings.xml` 只能通过 `${env.MAVEN_REPO_USERNAME}` 和 `${env.MAVEN_REPO_PASSWORD}` 读取 Maven 仓库凭据;内部仓库构建前由 CI 或本地安全环境注入变量,禁止把 Maven 仓库用户名、明文密码或 Maven 加密密码写入 skill、模板或生成工程。
|
|
65
82
|
- 涉及 API 契约时,先确认 `docs/.scratch/<feature>/api/<feature>.yaml` 中的 OpenAPI Draft / Freeze 状态;不要用脚手架生成结果反向替代产品契约设计。
|
|
66
83
|
|
|
@@ -80,6 +97,7 @@ python3 scripts/generate_scaffold.py \
|
|
|
80
97
|
## 按需读取
|
|
81
98
|
|
|
82
99
|
- 主脚本:`scripts/generate_scaffold.py`
|
|
100
|
+
- 受控验证器:`scripts/run_scaffold_verification.py`
|
|
83
101
|
- 模板目录:`assets/templates/`
|
|
84
102
|
- 分层细化参考:`references/yss-backend-scaffold-parent/` 及其子 skill
|
|
85
103
|
|
|
@@ -87,4 +105,6 @@ python3 scripts/generate_scaffold.py \
|
|
|
87
105
|
|
|
88
106
|
- 仅在实现仓库/输出目录、`scaffold_status=required` 和批准合同明确时运行。
|
|
89
107
|
- 工程骨架属于 `controlled-generation`,必须记录生成器输入、预期文件和 `./mvnw ...` 编译/测试结果;不得将业务状态机、权限、事务或查询逻辑混入生成步骤。
|
|
108
|
+
- 生成结果必须包含 `.yss/scaffold-generation.json`,并由验证器回勾该清单;清单与批准合同不一致时阻断。
|
|
109
|
+
- `./mvnw validate`、`./mvnw test`、`./mvnw package` 必须由受控工作单元真实执行,并记录每条命令的 `exit_code`、耗时、stdout/stderr 引用和执行时间;只列命令计划、生成器成功或打印输出均视为缺失证据并阻断。
|
|
90
110
|
- 生成后按统一 `YSS Skill Execution Result` 返回 changed/evidence files、实际验证结果和新增影响,再由 Router 为业务工作单元重新路由。
|
|
@@ -2,4 +2,4 @@ version: 1
|
|
|
2
2
|
interface:
|
|
3
3
|
display_name: "YSS DDD Scaffold"
|
|
4
4
|
short_description: "生成多模块 YSS DDD 后端脚手架与工程骨架规范"
|
|
5
|
-
default_prompt: "Use $yss-ddd-scaffold-generator to create a
|
|
5
|
+
default_prompt: "Use $yss-ddd-scaffold-generator only with a lifecycle-approved scaffold contract JSON to create a pure YSS DDD backend skeleton with domain, application, infrastructure, adapter, and bootstrap module boundaries; route all business code back through yss-router and the applicable YSS skills."
|
|
@@ -13,15 +13,24 @@ python3 .agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.py \
|
|
|
13
13
|
--project-name user-service \
|
|
14
14
|
--base-package com.yss.user \
|
|
15
15
|
--output-dir /path/to/implementation-repo \
|
|
16
|
-
--database mysql
|
|
16
|
+
--database mysql \
|
|
17
|
+
--contract-id <approved-scaffold-contract-id> \
|
|
18
|
+
--contract-version <current-version> \
|
|
19
|
+
--approval-ref <lifecycle-approval-ref> \
|
|
20
|
+
--router-draft-ref <router-draft-ref> \
|
|
21
|
+
--persisted-ref <persisted-contract-ref> \
|
|
22
|
+
--contract-file /path/to/persisted-scaffold-contract.json
|
|
17
23
|
```
|
|
18
24
|
|
|
25
|
+
上述合同参数必须替换为生命周期已批准且已持久化的当前脚手架合同;缺少时生成器会拒绝写入。
|
|
26
|
+
|
|
19
27
|
### 1.2 生成的项目结构
|
|
20
28
|
|
|
21
29
|
```
|
|
22
30
|
output/user-service/
|
|
23
31
|
├── pom.xml
|
|
24
32
|
├── README.md
|
|
33
|
+
├── .yss/scaffold-generation.json
|
|
25
34
|
├── user-service-domain/
|
|
26
35
|
├── user-service-application/
|
|
27
36
|
├── user-service-infrastructure/
|
|
@@ -39,7 +48,17 @@ cd output/user-service
|
|
|
39
48
|
./mvnw clean compile
|
|
40
49
|
```
|
|
41
50
|
|
|
42
|
-
### 2.2
|
|
51
|
+
### 2.2 受控验证
|
|
52
|
+
|
|
53
|
+
从生命周期工作目录执行固定验证器;它会在项目 evidence 目录实际运行三条 wrapper 命令并写入结果,不能用生成器打印的命令替代:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
python3 .agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.py \
|
|
57
|
+
--project-root /path/to/implementation-repo/user-service \
|
|
58
|
+
--evidence-dir /path/to/implementation-repo/user-service/docs/evidence/scaffold
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 2.3 运行项目
|
|
43
62
|
|
|
44
63
|
```bash
|
|
45
64
|
# 方式1: 使用 Maven 插件
|
|
@@ -50,45 +69,15 @@ cd output/user-service
|
|
|
50
69
|
java -jar user-service-bootstrap/target/user-service-bootstrap-1.0.0-SNAPSHOT.jar
|
|
51
70
|
```
|
|
52
71
|
|
|
53
|
-
### 2.
|
|
72
|
+
### 2.4 验证基础工程
|
|
54
73
|
|
|
55
74
|
```bash
|
|
56
|
-
#
|
|
75
|
+
# 纯脚手架不包含业务 Controller;这里只验证启动工程是否可访问
|
|
57
76
|
curl http://localhost:8080/actuator/health
|
|
58
|
-
|
|
59
|
-
# 查询用户列表
|
|
60
|
-
curl -X POST http://localhost:8080/api/users/page \
|
|
61
|
-
-H "Content-Type: application/json" \
|
|
62
|
-
-d '{
|
|
63
|
-
"pageNum": 1,
|
|
64
|
-
"pageSize": 10
|
|
65
|
-
}'
|
|
66
|
-
|
|
67
|
-
# 新增用户
|
|
68
|
-
curl -X POST http://localhost:8080/api/users \
|
|
69
|
-
-H "Content-Type: application/json" \
|
|
70
|
-
-d '{
|
|
71
|
-
"username": "zhangsan",
|
|
72
|
-
"email": "zhangsan@example.com"
|
|
73
|
-
}'
|
|
74
|
-
|
|
75
|
-
# 查询用户详情
|
|
76
|
-
curl http://localhost:8080/api/users/1
|
|
77
|
-
|
|
78
|
-
# 更新用户
|
|
79
|
-
curl -X PUT http://localhost:8080/api/users \
|
|
80
|
-
-H "Content-Type: application/json" \
|
|
81
|
-
-d '{
|
|
82
|
-
"id": 1,
|
|
83
|
-
"username": "zhangsan",
|
|
84
|
-
"email": "zhangsan@yss.com",
|
|
85
|
-
"status": 1
|
|
86
|
-
}'
|
|
87
|
-
|
|
88
|
-
# 删除用户
|
|
89
|
-
curl -X DELETE http://localhost:8080/api/users/1
|
|
90
77
|
```
|
|
91
78
|
|
|
79
|
+
业务 API、数据表和初始化数据不属于脚手架输出。完成 OpenAPI Freeze、Slice Implementation Contract 和生命周期批准后,按 `yss-router` 选择的 YSS skill 在对应垂直切片中实现并补充契约测试。
|
|
80
|
+
|
|
92
81
|
## 3. 添加新实体
|
|
93
82
|
|
|
94
83
|
### 3.1 创建 Domain 层对象
|