create-yss-spec 3.4.5 → 3.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -1
- package/template/.agents/skills/.strategic-design-skills-manifest.json +1 -1
- package/template/.agents/skills/.yss-skills-manifest.json +1 -8
- package/template/.agents/skills/formily-mode-slot-detail/SKILL.md +3 -4
- package/template/.agents/skills/yedit-table-usage/SKILL.md +2 -0
- package/template/.agents/skills/yss-application/SKILL.md +8 -6
- package/template/.agents/skills/yss-audit-log/SKILL.md +12 -7
- package/template/.agents/skills/yss-audit-log/references/source-index.boot2-java8.md +57 -0
- package/template/.agents/skills/yss-audit-log/references/source-index.boot3-java17.md +58 -0
- package/template/.agents/skills/yss-audit-log/references/source-index.md +6 -39
- package/template/.agents/skills/yss-cache/SKILL.md +5 -1
- package/template/.agents/skills/yss-cache/references/source-index.boot2-java8.md +81 -0
- package/template/.agents/skills/yss-cache/references/source-index.boot3-java17.md +83 -0
- package/template/.agents/skills/yss-cache/references/source-index.md +6 -63
- package/template/.agents/skills/yss-cache/scripts/check-skill-freshness.sh +20 -15
- package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +2 -2
- package/template/{.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md → .agents/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md} +0 -5
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +2 -2
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -3
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +1 -1
- package/template/.agents/skills/yss-design-system/SKILL.md +2 -2
- package/template/.agents/skills/yss-distributed-id/SKILL.md +4 -0
- package/template/.agents/skills/yss-distributed-id/references/source-index.boot2-java8.md +102 -0
- package/template/.agents/skills/yss-distributed-id/references/source-index.boot3-java17.md +90 -0
- package/template/.agents/skills/yss-distributed-id/references/source-index.md +6 -82
- package/template/.agents/skills/yss-dto/SKILL.md +2 -2
- package/template/.agents/skills/yss-dto/references/source-index.boot2-java8.md +67 -0
- package/template/.agents/skills/yss-dto/references/source-index.boot3-java17.md +70 -0
- package/template/.agents/skills/yss-dto/references/source-index.md +6 -51
- package/template/.agents/skills/yss-excel-mvc/SKILL.md +4 -0
- package/template/.agents/skills/yss-excel-mvc/references/source-index.boot2-java8.md +90 -0
- package/template/.agents/skills/yss-excel-mvc/references/source-index.boot3-java17.md +58 -0
- package/template/.agents/skills/yss-excel-mvc/references/source-index.md +6 -70
- package/template/.agents/skills/yss-exception/SKILL.md +12 -9
- package/template/.agents/skills/yss-exception/references/source-index.boot2-java8.md +50 -0
- package/template/.agents/skills/yss-exception/references/source-index.boot3-java17.md +50 -0
- package/template/.agents/skills/yss-exception/references/source-index.md +6 -31
- package/template/.agents/skills/yss-formily/SKILL.md +2 -2
- package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +1 -1
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +2 -2
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +158 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +3 -3
- package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +5 -0
- package/template/.agents/skills/yss-hook/SKILL.md +3 -2
- package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
- package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -6
- package/template/.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +27 -2
- package/template/.agents/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +2 -1
- package/template/.agents/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +60 -14
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +6 -5
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +2 -2
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/references/architecture.md +2 -0
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs +82 -0
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +23 -9
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +23 -6
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/tests/scaffold-generator.test.mjs +2 -0
- package/template/.agents/skills/yss-mybatis/SKILL.md +2 -2
- package/template/.agents/skills/yss-mybatis/references/source-index.boot2-java8.md +126 -0
- package/template/.agents/skills/yss-mybatis/references/source-index.boot3-java17.md +126 -0
- package/template/.agents/skills/yss-mybatis/references/source-index.md +6 -109
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +11 -11
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +2 -2
- package/template/.agents/skills/yss-repository/SKILL.md +1 -1
- package/template/.agents/skills/yss-resilience4j/SKILL.md +4 -0
- package/template/.agents/skills/yss-resilience4j/references/source-index.boot2-java8.md +48 -0
- package/template/.agents/skills/yss-resilience4j/references/source-index.boot3-java17.md +48 -0
- package/template/.agents/skills/yss-resilience4j/references/source-index.md +6 -29
- package/template/.agents/skills/yss-security-algorithm/SKILL.md +34 -10
- package/template/.agents/skills/yss-security-algorithm/references/source-index.boot2-java8.md +50 -0
- package/template/.agents/skills/yss-security-algorithm/references/source-index.boot3-java17.md +51 -0
- package/template/.agents/skills/yss-security-algorithm/references/source-index.md +6 -31
- package/template/.agents/skills/yss-skill-source-index-refresh/SKILL.md +12 -6
- package/template/.agents/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +27 -0
- package/template/.agents/skills/yss-skill-source-index-refresh/references/source-location.md +4 -4
- package/template/.agents/skills/yss-skill-source-index-refresh/references/source-map-config.md +13 -5
- package/template/.agents/skills/yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs +60 -0
- package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +250 -56
- package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +74 -7
- package/template/.agents/skills/yss-tactical-design/SKILL.md +1 -1
- package/template/.agents/skills/yss-tactical-design/references/output-template.md +1 -1
- package/template/.agents/skills/yss-technical-design/SKILL.md +3 -1
- package/template/.agents/skills/yss-technical-design/references/technical-design-contract.md +1 -1
- package/template/.agents/skills/yss-technical-design/scripts/generate-schema.mjs +1 -1
- package/template/.agents/skills/yss-technical-design/tests/run-scenarios.mjs +3 -1
- package/template/.agents/skills/yss-ui/SKILL.md +9 -6
- package/template/.agents/skills/yss-ui/references/component-routing.md +11 -4
- package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +5 -1
- package/template/.agents/skills/yss-ui-business-page-generation/references/hooks-map.md +3 -2
- package/template/.agents/skills/yss-up-springboot3/SKILL.md +23 -9
- package/template/.agents/skills/yss-userinfo/SKILL.md +21 -14
- package/template/.agents/skills/yss-userinfo/references/source-index.boot2-java8.md +49 -0
- package/template/.agents/skills/yss-userinfo/references/source-index.boot3-java17.md +54 -0
- package/template/.agents/skills/yss-userinfo/references/source-index.md +6 -30
- package/template/.agents/skills/yss-validation/SKILL.md +12 -17
- package/template/.agents/skills/yss-validation/references/source-index.boot2-java8.md +47 -0
- package/template/.agents/skills/yss-validation/references/source-index.boot3-java17.md +47 -0
- package/template/.agents/skills/yss-validation/references/source-index.md +6 -29
- package/template/.agents/skills/yss-web-controller/SKILL.md +4 -4
- package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
- package/template/.agents/skills/ytable-usage/SKILL.md +14 -7
- package/template/.agents/skills/ytree-usage/SKILL.md +1 -0
- package/template/.codex/skills/formily-mode-slot-detail/SKILL.md +3 -4
- package/template/.codex/skills/yedit-table-usage/SKILL.md +2 -0
- package/template/.codex/skills/yss-application/SKILL.md +8 -6
- package/template/.codex/skills/yss-audit-log/SKILL.md +12 -7
- package/template/.codex/skills/yss-audit-log/references/source-index.boot2-java8.md +57 -0
- package/template/.codex/skills/yss-audit-log/references/source-index.boot3-java17.md +58 -0
- package/template/.codex/skills/yss-audit-log/references/source-index.md +6 -39
- package/template/.codex/skills/yss-cache/SKILL.md +5 -1
- package/template/.codex/skills/yss-cache/references/source-index.boot2-java8.md +81 -0
- package/template/.codex/skills/yss-cache/references/source-index.boot3-java17.md +83 -0
- package/template/.codex/skills/yss-cache/references/source-index.md +6 -63
- package/template/.codex/skills/yss-cache/scripts/check-skill-freshness.sh +20 -15
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +2 -2
- package/template/{.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md → .codex/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md} +0 -5
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +2 -2
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -3
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +1 -1
- package/template/.codex/skills/yss-design-system/SKILL.md +2 -2
- package/template/.codex/skills/yss-distributed-id/SKILL.md +4 -0
- package/template/.codex/skills/yss-distributed-id/references/source-index.boot2-java8.md +102 -0
- package/template/.codex/skills/yss-distributed-id/references/source-index.boot3-java17.md +90 -0
- package/template/.codex/skills/yss-distributed-id/references/source-index.md +6 -82
- package/template/.codex/skills/yss-dto/SKILL.md +2 -2
- package/template/.codex/skills/yss-dto/references/source-index.boot2-java8.md +67 -0
- package/template/.codex/skills/yss-dto/references/source-index.boot3-java17.md +70 -0
- package/template/.codex/skills/yss-dto/references/source-index.md +6 -51
- package/template/.codex/skills/yss-excel-mvc/SKILL.md +4 -0
- package/template/.codex/skills/yss-excel-mvc/references/source-index.boot2-java8.md +90 -0
- package/template/.codex/skills/yss-excel-mvc/references/source-index.boot3-java17.md +58 -0
- package/template/.codex/skills/yss-excel-mvc/references/source-index.md +6 -70
- package/template/.codex/skills/yss-exception/SKILL.md +12 -9
- package/template/.codex/skills/yss-exception/references/source-index.boot2-java8.md +50 -0
- package/template/.codex/skills/yss-exception/references/source-index.boot3-java17.md +50 -0
- package/template/.codex/skills/yss-exception/references/source-index.md +6 -31
- package/template/.codex/skills/yss-formily/SKILL.md +2 -2
- package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +1 -1
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +2 -2
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +158 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +3 -3
- package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +5 -0
- package/template/.codex/skills/yss-hook/SKILL.md +3 -2
- package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
- package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -6
- package/template/.codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +27 -2
- package/template/.codex/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +2 -1
- package/template/.codex/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +60 -14
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +6 -5
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +2 -2
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/references/architecture.md +2 -0
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs +82 -0
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +23 -9
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +23 -6
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/tests/scaffold-generator.test.mjs +2 -0
- package/template/.codex/skills/yss-mybatis/SKILL.md +2 -2
- package/template/.codex/skills/yss-mybatis/references/source-index.boot2-java8.md +126 -0
- package/template/.codex/skills/yss-mybatis/references/source-index.boot3-java17.md +126 -0
- package/template/.codex/skills/yss-mybatis/references/source-index.md +6 -109
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +11 -11
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +2 -2
- package/template/.codex/skills/yss-repository/SKILL.md +1 -1
- package/template/.codex/skills/yss-resilience4j/SKILL.md +4 -0
- package/template/.codex/skills/yss-resilience4j/references/source-index.boot2-java8.md +48 -0
- package/template/.codex/skills/yss-resilience4j/references/source-index.boot3-java17.md +48 -0
- package/template/.codex/skills/yss-resilience4j/references/source-index.md +6 -29
- package/template/.codex/skills/yss-security-algorithm/SKILL.md +34 -10
- package/template/.codex/skills/yss-security-algorithm/references/source-index.boot2-java8.md +50 -0
- package/template/.codex/skills/yss-security-algorithm/references/source-index.boot3-java17.md +51 -0
- package/template/.codex/skills/yss-security-algorithm/references/source-index.md +6 -31
- package/template/.codex/skills/yss-skill-source-index-refresh/SKILL.md +12 -6
- package/template/.codex/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +27 -0
- package/template/.codex/skills/yss-skill-source-index-refresh/references/source-location.md +4 -4
- package/template/.codex/skills/yss-skill-source-index-refresh/references/source-map-config.md +13 -5
- package/template/.codex/skills/yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs +60 -0
- package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +250 -56
- package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +74 -7
- package/template/.codex/skills/yss-tactical-design/SKILL.md +1 -1
- package/template/.codex/skills/yss-tactical-design/references/output-template.md +1 -1
- package/template/.codex/skills/yss-technical-design/SKILL.md +3 -1
- package/template/.codex/skills/yss-technical-design/references/technical-design-contract.md +1 -1
- package/template/.codex/skills/yss-technical-design/scripts/generate-schema.mjs +1 -1
- package/template/.codex/skills/yss-technical-design/tests/run-scenarios.mjs +3 -1
- package/template/.codex/skills/yss-ui/SKILL.md +9 -6
- package/template/.codex/skills/yss-ui/references/component-routing.md +11 -4
- package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +5 -1
- package/template/.codex/skills/yss-ui-business-page-generation/references/hooks-map.md +3 -2
- package/template/.codex/skills/yss-up-springboot3/SKILL.md +23 -9
- package/template/.codex/skills/yss-userinfo/SKILL.md +21 -14
- package/template/.codex/skills/yss-userinfo/references/source-index.boot2-java8.md +49 -0
- package/template/.codex/skills/yss-userinfo/references/source-index.boot3-java17.md +54 -0
- package/template/.codex/skills/yss-userinfo/references/source-index.md +6 -30
- package/template/.codex/skills/yss-validation/SKILL.md +12 -17
- package/template/.codex/skills/yss-validation/references/source-index.boot2-java8.md +47 -0
- package/template/.codex/skills/yss-validation/references/source-index.boot3-java17.md +47 -0
- package/template/.codex/skills/yss-validation/references/source-index.md +6 -29
- package/template/.codex/skills/yss-web-controller/SKILL.md +4 -4
- package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
- package/template/.codex/skills/ytable-usage/SKILL.md +14 -7
- package/template/.codex/skills/ytree-usage/SKILL.md +1 -0
- package/template/.cursor/skills/formily-mode-slot-detail/SKILL.md +3 -4
- package/template/.cursor/skills/yedit-table-usage/SKILL.md +2 -0
- package/template/.cursor/skills/yss-application/SKILL.md +8 -6
- package/template/.cursor/skills/yss-audit-log/SKILL.md +12 -7
- package/template/.cursor/skills/yss-audit-log/references/source-index.boot2-java8.md +57 -0
- package/template/.cursor/skills/yss-audit-log/references/source-index.boot3-java17.md +58 -0
- package/template/.cursor/skills/yss-audit-log/references/source-index.md +6 -39
- package/template/.cursor/skills/yss-cache/SKILL.md +5 -1
- package/template/.cursor/skills/yss-cache/references/source-index.boot2-java8.md +81 -0
- package/template/.cursor/skills/yss-cache/references/source-index.boot3-java17.md +83 -0
- package/template/.cursor/skills/yss-cache/references/source-index.md +6 -63
- package/template/.cursor/skills/yss-cache/scripts/check-skill-freshness.sh +20 -15
- package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +2 -2
- package/template/{.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md → .cursor/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md} +0 -5
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +2 -2
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -3
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +1 -1
- package/template/.cursor/skills/yss-design-system/SKILL.md +2 -2
- package/template/.cursor/skills/yss-distributed-id/SKILL.md +4 -0
- package/template/.cursor/skills/yss-distributed-id/references/source-index.boot2-java8.md +102 -0
- package/template/.cursor/skills/yss-distributed-id/references/source-index.boot3-java17.md +90 -0
- package/template/.cursor/skills/yss-distributed-id/references/source-index.md +6 -82
- package/template/.cursor/skills/yss-dto/SKILL.md +2 -2
- package/template/.cursor/skills/yss-dto/references/source-index.boot2-java8.md +67 -0
- package/template/.cursor/skills/yss-dto/references/source-index.boot3-java17.md +70 -0
- package/template/.cursor/skills/yss-dto/references/source-index.md +6 -51
- package/template/.cursor/skills/yss-excel-mvc/SKILL.md +4 -0
- package/template/.cursor/skills/yss-excel-mvc/references/source-index.boot2-java8.md +90 -0
- package/template/.cursor/skills/yss-excel-mvc/references/source-index.boot3-java17.md +58 -0
- package/template/.cursor/skills/yss-excel-mvc/references/source-index.md +6 -70
- package/template/.cursor/skills/yss-exception/SKILL.md +12 -9
- package/template/.cursor/skills/yss-exception/references/source-index.boot2-java8.md +50 -0
- package/template/.cursor/skills/yss-exception/references/source-index.boot3-java17.md +50 -0
- package/template/.cursor/skills/yss-exception/references/source-index.md +6 -31
- package/template/.cursor/skills/yss-formily/SKILL.md +2 -2
- package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +1 -1
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +2 -2
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +158 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +3 -3
- package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +5 -0
- package/template/.cursor/skills/yss-hook/SKILL.md +3 -2
- package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -6
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +27 -2
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +2 -1
- package/template/.cursor/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +60 -14
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +6 -5
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +2 -2
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/references/architecture.md +2 -0
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs +82 -0
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +23 -9
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +23 -6
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/tests/scaffold-generator.test.mjs +2 -0
- package/template/.cursor/skills/yss-mybatis/SKILL.md +2 -2
- package/template/.cursor/skills/yss-mybatis/references/source-index.boot2-java8.md +126 -0
- package/template/.cursor/skills/yss-mybatis/references/source-index.boot3-java17.md +126 -0
- package/template/.cursor/skills/yss-mybatis/references/source-index.md +6 -109
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +11 -11
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +2 -2
- package/template/.cursor/skills/yss-repository/SKILL.md +1 -1
- package/template/.cursor/skills/yss-resilience4j/SKILL.md +4 -0
- package/template/.cursor/skills/yss-resilience4j/references/source-index.boot2-java8.md +48 -0
- package/template/.cursor/skills/yss-resilience4j/references/source-index.boot3-java17.md +48 -0
- package/template/.cursor/skills/yss-resilience4j/references/source-index.md +6 -29
- package/template/.cursor/skills/yss-security-algorithm/SKILL.md +34 -10
- package/template/.cursor/skills/yss-security-algorithm/references/source-index.boot2-java8.md +50 -0
- package/template/.cursor/skills/yss-security-algorithm/references/source-index.boot3-java17.md +51 -0
- package/template/.cursor/skills/yss-security-algorithm/references/source-index.md +6 -31
- package/template/.cursor/skills/yss-skill-source-index-refresh/SKILL.md +12 -6
- package/template/.cursor/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +27 -0
- package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-location.md +4 -4
- package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-map-config.md +13 -5
- package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs +60 -0
- package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +250 -56
- package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +74 -7
- package/template/.cursor/skills/yss-tactical-design/SKILL.md +1 -1
- package/template/.cursor/skills/yss-tactical-design/references/output-template.md +1 -1
- package/template/.cursor/skills/yss-technical-design/SKILL.md +3 -1
- package/template/.cursor/skills/yss-technical-design/references/technical-design-contract.md +1 -1
- package/template/.cursor/skills/yss-technical-design/scripts/generate-schema.mjs +1 -1
- package/template/.cursor/skills/yss-technical-design/tests/run-scenarios.mjs +3 -1
- package/template/.cursor/skills/yss-ui/SKILL.md +9 -6
- package/template/.cursor/skills/yss-ui/references/component-routing.md +11 -4
- package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +5 -1
- package/template/.cursor/skills/yss-ui-business-page-generation/references/hooks-map.md +3 -2
- package/template/.cursor/skills/yss-up-springboot3/SKILL.md +23 -9
- package/template/.cursor/skills/yss-userinfo/SKILL.md +21 -14
- package/template/.cursor/skills/yss-userinfo/references/source-index.boot2-java8.md +49 -0
- package/template/.cursor/skills/yss-userinfo/references/source-index.boot3-java17.md +54 -0
- package/template/.cursor/skills/yss-userinfo/references/source-index.md +6 -30
- package/template/.cursor/skills/yss-validation/SKILL.md +12 -17
- package/template/.cursor/skills/yss-validation/references/source-index.boot2-java8.md +47 -0
- package/template/.cursor/skills/yss-validation/references/source-index.boot3-java17.md +47 -0
- package/template/.cursor/skills/yss-validation/references/source-index.md +6 -29
- package/template/.cursor/skills/yss-web-controller/SKILL.md +4 -4
- package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
- package/template/.cursor/skills/ytable-usage/SKILL.md +14 -7
- package/template/.cursor/skills/ytree-usage/SKILL.md +1 -0
- package/template/.pi/skills/formily-mode-slot-detail/SKILL.md +3 -4
- package/template/.pi/skills/yedit-table-usage/SKILL.md +2 -0
- package/template/.pi/skills/yss-application/SKILL.md +8 -6
- package/template/.pi/skills/yss-audit-log/SKILL.md +12 -7
- package/template/.pi/skills/yss-audit-log/references/source-index.boot2-java8.md +57 -0
- package/template/.pi/skills/yss-audit-log/references/source-index.boot3-java17.md +58 -0
- package/template/.pi/skills/yss-audit-log/references/source-index.md +6 -39
- package/template/.pi/skills/yss-cache/SKILL.md +5 -1
- package/template/.pi/skills/yss-cache/references/source-index.boot2-java8.md +81 -0
- package/template/.pi/skills/yss-cache/references/source-index.boot3-java17.md +83 -0
- package/template/.pi/skills/yss-cache/references/source-index.md +6 -63
- package/template/.pi/skills/yss-cache/scripts/check-skill-freshness.sh +20 -15
- package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +2 -2
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/{yss-backend-scaffold-parent/SKILL.md → engineering-baseline.md} +0 -5
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +2 -2
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +1 -3
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +1 -1
- package/template/.pi/skills/yss-design-system/SKILL.md +2 -2
- package/template/.pi/skills/yss-distributed-id/SKILL.md +4 -0
- package/template/.pi/skills/yss-distributed-id/references/source-index.boot2-java8.md +102 -0
- package/template/.pi/skills/yss-distributed-id/references/source-index.boot3-java17.md +90 -0
- package/template/.pi/skills/yss-distributed-id/references/source-index.md +6 -82
- package/template/.pi/skills/yss-dto/SKILL.md +2 -2
- package/template/.pi/skills/yss-dto/references/source-index.boot2-java8.md +67 -0
- package/template/.pi/skills/yss-dto/references/source-index.boot3-java17.md +70 -0
- package/template/.pi/skills/yss-dto/references/source-index.md +6 -51
- package/template/.pi/skills/yss-excel-mvc/SKILL.md +4 -0
- package/template/.pi/skills/yss-excel-mvc/references/source-index.boot2-java8.md +90 -0
- package/template/.pi/skills/yss-excel-mvc/references/source-index.boot3-java17.md +58 -0
- package/template/.pi/skills/yss-excel-mvc/references/source-index.md +6 -70
- package/template/.pi/skills/yss-exception/SKILL.md +12 -9
- package/template/.pi/skills/yss-exception/references/source-index.boot2-java8.md +50 -0
- package/template/.pi/skills/yss-exception/references/source-index.boot3-java17.md +50 -0
- package/template/.pi/skills/yss-exception/references/source-index.md +6 -31
- package/template/.pi/skills/yss-formily/SKILL.md +2 -2
- package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +1 -1
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +1 -1
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +2 -2
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +158 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +3 -3
- package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +5 -0
- package/template/.pi/skills/yss-hook/SKILL.md +3 -2
- package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
- package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +4 -6
- package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +27 -2
- package/template/.pi/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +2 -1
- package/template/.pi/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +60 -14
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +6 -5
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +2 -2
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/references/architecture.md +2 -0
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs +82 -0
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +23 -9
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +23 -6
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/tests/scaffold-generator.test.mjs +2 -0
- package/template/.pi/skills/yss-mybatis/SKILL.md +2 -2
- package/template/.pi/skills/yss-mybatis/references/source-index.boot2-java8.md +126 -0
- package/template/.pi/skills/yss-mybatis/references/source-index.boot3-java17.md +126 -0
- package/template/.pi/skills/yss-mybatis/references/source-index.md +6 -109
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +11 -11
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +2 -2
- package/template/.pi/skills/yss-repository/SKILL.md +1 -1
- package/template/.pi/skills/yss-resilience4j/SKILL.md +4 -0
- package/template/.pi/skills/yss-resilience4j/references/source-index.boot2-java8.md +48 -0
- package/template/.pi/skills/yss-resilience4j/references/source-index.boot3-java17.md +48 -0
- package/template/.pi/skills/yss-resilience4j/references/source-index.md +6 -29
- package/template/.pi/skills/yss-security-algorithm/SKILL.md +34 -10
- package/template/.pi/skills/yss-security-algorithm/references/source-index.boot2-java8.md +50 -0
- package/template/.pi/skills/yss-security-algorithm/references/source-index.boot3-java17.md +51 -0
- package/template/.pi/skills/yss-security-algorithm/references/source-index.md +6 -31
- package/template/.pi/skills/yss-skill-source-index-refresh/SKILL.md +12 -6
- package/template/.pi/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +27 -0
- package/template/.pi/skills/yss-skill-source-index-refresh/references/source-location.md +4 -4
- package/template/.pi/skills/yss-skill-source-index-refresh/references/source-map-config.md +13 -5
- package/template/.pi/skills/yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs +60 -0
- package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +250 -56
- package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +74 -7
- package/template/.pi/skills/yss-tactical-design/SKILL.md +1 -1
- package/template/.pi/skills/yss-tactical-design/references/output-template.md +1 -1
- package/template/.pi/skills/yss-technical-design/SKILL.md +3 -1
- package/template/.pi/skills/yss-technical-design/references/technical-design-contract.md +1 -1
- package/template/.pi/skills/yss-technical-design/scripts/generate-schema.mjs +1 -1
- package/template/.pi/skills/yss-technical-design/tests/run-scenarios.mjs +3 -1
- package/template/.pi/skills/yss-ui/SKILL.md +9 -6
- package/template/.pi/skills/yss-ui/references/component-routing.md +11 -4
- package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +5 -1
- package/template/.pi/skills/yss-ui-business-page-generation/references/hooks-map.md +3 -2
- package/template/.pi/skills/yss-up-springboot3/SKILL.md +23 -9
- package/template/.pi/skills/yss-userinfo/SKILL.md +21 -14
- package/template/.pi/skills/yss-userinfo/references/source-index.boot2-java8.md +49 -0
- package/template/.pi/skills/yss-userinfo/references/source-index.boot3-java17.md +54 -0
- package/template/.pi/skills/yss-userinfo/references/source-index.md +6 -30
- package/template/.pi/skills/yss-validation/SKILL.md +12 -17
- package/template/.pi/skills/yss-validation/references/source-index.boot2-java8.md +47 -0
- package/template/.pi/skills/yss-validation/references/source-index.boot3-java17.md +47 -0
- package/template/.pi/skills/yss-validation/references/source-index.md +6 -29
- package/template/.pi/skills/yss-web-controller/SKILL.md +4 -4
- package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
- package/template/.pi/skills/ytable-usage/SKILL.md +14 -7
- package/template/.pi/skills/ytree-usage/SKILL.md +1 -0
- package/template/docs/agents/backend-architecture-profiles.md +1 -1
- package/template/docs/agents/digital-human-roles.yaml +3 -3
- package/template/docs/agents/skill-migrations.md +39 -3
- package/template/docs/agents/yss-skill-registry.yaml +93 -96
- package/template/docs/api/templates/openapi-draft-review-checklist.md +1 -1
- package/template/docs/architecture/templates/engineering-baseline-review-template.md +3 -3
- package/template/docs/architecture/templates/system-overview-design-template.md +1 -1
- package/template/docs/engineering/backend-platforms.json +662 -9
- package/template/docs/engineering/backend-platforms.md +33 -7
- package/template/docs/process/schemas/backend-architecture-identity.schema.json +102 -0
- package/template/docs/process/schemas/project-scaffold-contract.schema.json +16 -4
- package/template/docs/process/schemas/scaffold-architecture-decisions.schema.json +7 -0
- package/template/docs/process/schemas/slice-implementation-contract-v3.schema.json +143 -0
- package/template/docs/process/strategic-handoff-package.md +1 -1
- package/template/docs/templates/implementation-routing-template.md +1 -1
- package/template/docs/user-guide//346/212/200/346/234/257/350/256/276/350/256/241/347/224/250/346/210/267/346/214/207/345/215/227.md +2 -2
- package/template/scripts/backend-platforms +77 -8
- package/template/scripts/lib/backend-platform.mjs +232 -5
- package/template/scripts/lib/existing-backend-architecture.mjs +3 -2
- package/template/scripts/lib/implementation-contract-compiler.mjs +93 -9
- package/template/scripts/lib/skill-registry.mjs +170 -13
- package/template/scripts/lib/skill-supply-chain.mjs +1 -1
- package/template/scripts/lib/slice-contract-preparation.mjs +6 -5
- package/template/scripts/verify-backend-platform-matrix +1 -1
- package/template/skills-lock.json +38 -165
- package/template/yss-public-skills.json +1 -5
- package/template.snapshot.json +4 -4
- package/template/.agents/skills/component-selection-imports/SKILL.md +0 -64
- package/template/.agents/skills/page-form-module/SKILL.md +0 -168
- package/template/.agents/skills/page-list-module/SKILL.md +0 -137
- package/template/.agents/skills/page-skeleton/SKILL.md +0 -76
- package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +0 -34
- package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +0 -75
- package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/index.vue +0 -107
- package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +0 -256
- package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/style.less +0 -30
- package/template/.agents/skills/page-skeleton/examples/StandardListPage/constant.ts +0 -28
- package/template/.agents/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +0 -58
- package/template/.agents/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +0 -65
- package/template/.agents/skills/page-skeleton/examples/StandardListPage/index.vue +0 -91
- package/template/.agents/skills/page-skeleton/examples/StandardListPage/style.less +0 -49
- package/template/.agents/skills/vue3-best-practices/SKILL.md +0 -68
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +0 -22
- package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +0 -77
- package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/scripts/run_scaffold_verification.mjs +0 -9
- package/template/.agents/skills/yss-mvc-design/SKILL.md +0 -16
- package/template/.agents/skills/yss-mvc-design/agents/openai.yaml +0 -4
- package/template/.agents/skills/yss-use-table-height/SKILL.md +0 -130
- package/template/.agents/skills/yss-use-table-height/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-use-table-height/references/frontend-docs.md +0 -9
- package/template/.agents/skills/yss-use-tree-height/SKILL.md +0 -98
- package/template/.agents/skills/yss-use-tree-height/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-use-tree-height/references/frontend-docs.md +0 -9
- package/template/.codex/skills/component-selection-imports/SKILL.md +0 -64
- package/template/.codex/skills/page-form-module/SKILL.md +0 -168
- package/template/.codex/skills/page-list-module/SKILL.md +0 -137
- package/template/.codex/skills/page-skeleton/SKILL.md +0 -76
- package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +0 -34
- package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +0 -75
- package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/index.vue +0 -107
- package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +0 -256
- package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/style.less +0 -30
- package/template/.codex/skills/page-skeleton/examples/StandardListPage/constant.ts +0 -28
- package/template/.codex/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +0 -58
- package/template/.codex/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +0 -65
- package/template/.codex/skills/page-skeleton/examples/StandardListPage/index.vue +0 -91
- package/template/.codex/skills/page-skeleton/examples/StandardListPage/style.less +0 -49
- package/template/.codex/skills/vue3-best-practices/SKILL.md +0 -68
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +0 -22
- package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +0 -77
- package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/scripts/run_scaffold_verification.mjs +0 -9
- package/template/.codex/skills/yss-mvc-design/SKILL.md +0 -16
- package/template/.codex/skills/yss-mvc-design/agents/openai.yaml +0 -4
- package/template/.codex/skills/yss-use-table-height/SKILL.md +0 -130
- package/template/.codex/skills/yss-use-table-height/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-use-table-height/references/frontend-docs.md +0 -9
- package/template/.codex/skills/yss-use-tree-height/SKILL.md +0 -98
- package/template/.codex/skills/yss-use-tree-height/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-use-tree-height/references/frontend-docs.md +0 -9
- package/template/.cursor/skills/component-selection-imports/SKILL.md +0 -64
- package/template/.cursor/skills/page-form-module/SKILL.md +0 -168
- package/template/.cursor/skills/page-list-module/SKILL.md +0 -137
- package/template/.cursor/skills/page-skeleton/SKILL.md +0 -76
- package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +0 -34
- package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +0 -75
- package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/index.vue +0 -107
- package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +0 -256
- package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/style.less +0 -30
- package/template/.cursor/skills/page-skeleton/examples/StandardListPage/constant.ts +0 -28
- package/template/.cursor/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +0 -58
- package/template/.cursor/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +0 -65
- package/template/.cursor/skills/page-skeleton/examples/StandardListPage/index.vue +0 -91
- package/template/.cursor/skills/page-skeleton/examples/StandardListPage/style.less +0 -49
- package/template/.cursor/skills/vue3-best-practices/SKILL.md +0 -68
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +0 -5
- package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +0 -22
- package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +0 -77
- package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/scripts/run_scaffold_verification.mjs +0 -9
- package/template/.cursor/skills/yss-mvc-design/SKILL.md +0 -16
- package/template/.cursor/skills/yss-mvc-design/agents/openai.yaml +0 -4
- package/template/.cursor/skills/yss-use-table-height/SKILL.md +0 -130
- package/template/.cursor/skills/yss-use-table-height/agents/openai.yaml +0 -5
- package/template/.cursor/skills/yss-use-table-height/references/frontend-docs.md +0 -9
- package/template/.cursor/skills/yss-use-tree-height/SKILL.md +0 -98
- package/template/.cursor/skills/yss-use-tree-height/agents/openai.yaml +0 -5
- package/template/.cursor/skills/yss-use-tree-height/references/frontend-docs.md +0 -9
- package/template/.pi/skills/component-selection-imports/SKILL.md +0 -64
- package/template/.pi/skills/page-form-module/SKILL.md +0 -168
- package/template/.pi/skills/page-list-module/SKILL.md +0 -137
- package/template/.pi/skills/page-skeleton/SKILL.md +0 -76
- package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +0 -34
- package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +0 -75
- package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/index.vue +0 -107
- package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +0 -256
- package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/style.less +0 -30
- package/template/.pi/skills/page-skeleton/examples/StandardListPage/constant.ts +0 -28
- package/template/.pi/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +0 -58
- package/template/.pi/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +0 -65
- package/template/.pi/skills/page-skeleton/examples/StandardListPage/index.vue +0 -91
- package/template/.pi/skills/page-skeleton/examples/StandardListPage/style.less +0 -49
- package/template/.pi/skills/vue3-best-practices/SKILL.md +0 -68
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +0 -22
- package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +0 -77
- package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/scripts/run_scaffold_verification.mjs +0 -9
- package/template/.pi/skills/yss-mvc-design/SKILL.md +0 -16
- package/template/.pi/skills/yss-mvc-design/agents/openai.yaml +0 -4
- package/template/.pi/skills/yss-use-table-height/SKILL.md +0 -130
- package/template/.pi/skills/yss-use-table-height/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-use-table-height/references/frontend-docs.md +0 -9
- package/template/.pi/skills/yss-use-tree-height/SKILL.md +0 -98
- package/template/.pi/skills/yss-use-tree-height/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-use-tree-height/references/frontend-docs.md +0 -9
- /package/template/.agents/skills/{yss-mvc-design → yss-technical-design}/references/mvc-design.schema.json +0 -0
- /package/template/.codex/skills/{yss-mvc-design → yss-technical-design}/references/mvc-design.schema.json +0 -0
- /package/template/.cursor/skills/{yss-mvc-design → yss-technical-design}/references/mvc-design.schema.json +0 -0
- /package/template/.pi/skills/{yss-mvc-design → yss-technical-design}/references/mvc-design.schema.json +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
2
|
import test from "node:test";
|
|
3
|
+
import { readFileSync } from "node:fs";
|
|
3
4
|
import {
|
|
4
5
|
compileImplementationContract,
|
|
5
6
|
digestDocument,
|
|
@@ -8,6 +9,7 @@ import {
|
|
|
8
9
|
validateExecutionResult
|
|
9
10
|
} from "../../../../scripts/lib/implementation-contract-compiler.mjs";
|
|
10
11
|
import { loadSkillRegistry } from "../../../../scripts/lib/skill-registry.mjs";
|
|
12
|
+
import { loadBackendPlatforms, platformBinding } from "../../../../scripts/lib/backend-platform.mjs";
|
|
11
13
|
|
|
12
14
|
const registry = loadSkillRegistry();
|
|
13
15
|
const compilerContract = loadCompilerContract();
|
|
@@ -15,17 +17,18 @@ const fixed = "2026-09-04T00:00:00.000Z";
|
|
|
15
17
|
const identity = { architecture_family: "domain-driven", architecture_profile: "target-domain-model", generator_skill: "yss-ddd-scaffold-generator", requested_capabilities: [], resolved_modules: ["domain", "application", "infrastructure", "adapter", "bootstrap"], verification_database: "h2", production_database: "not-bound", contract_digest: "a".repeat(64) };
|
|
16
18
|
const architecture = { architecture_identity: identity, architecture_evidence: { engineering_baseline: identity, repository_registration: identity, manifest: identity } };
|
|
17
19
|
const compile = (input) => compileImplementationContract({ registry, compilerContract, compiledAt: fixed, ...architecture, ...input });
|
|
20
|
+
const stableComponentError = code => error => error?.code === code && new RegExp(`^component-capability: ${code}:`).test(error.message);
|
|
18
21
|
|
|
19
22
|
test("combines narrow recipes once and preserves deterministic output", () => {
|
|
20
23
|
const input = {
|
|
21
|
-
recipeIds: ["backend.ddd-
|
|
22
|
-
conditions: ["
|
|
24
|
+
recipeIds: ["backend.ddd-domain-behavior"],
|
|
25
|
+
conditions: ["conversion", "pojo"]
|
|
23
26
|
};
|
|
24
27
|
const first = compile(input);
|
|
25
28
|
const second = compile({ ...input, recipeIds: [...input.recipeIds].reverse(), conditions: [...input.conditions].reverse() });
|
|
26
29
|
assert.deepEqual(first, second);
|
|
27
|
-
assert.deepEqual(first.recipe_ids, ["backend.ddd-domain-behavior"
|
|
28
|
-
for (const skill of ["yss-domain", "yss-application", "
|
|
30
|
+
assert.deepEqual(first.recipe_ids, ["backend.ddd-domain-behavior"]);
|
|
31
|
+
for (const skill of ["yss-domain", "yss-application", "mapstruct", "lombok", "alibaba-java-code-style"]) {
|
|
29
32
|
assert.equal(first.required_skills.filter((candidate) => candidate === skill).length, 1, `${skill} should appear once`);
|
|
30
33
|
}
|
|
31
34
|
});
|
|
@@ -37,17 +40,43 @@ test("does not promote conditional or component dependencies without explicit in
|
|
|
37
40
|
assert.equal(persistence.required_skills.includes("mapstruct"), false);
|
|
38
41
|
assert.equal(persistence.required_skills.includes("lombok"), false);
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
assert.throws(
|
|
44
|
+
() => compile({ requiredCapabilities: ["contract.request-validation"], architecture_identity: undefined, architecture_evidence: undefined }),
|
|
45
|
+
/component-platform-binding-required/
|
|
46
|
+
);
|
|
44
47
|
});
|
|
45
48
|
|
|
46
49
|
test("loads only explicitly satisfied context-conditional dependencies", () => {
|
|
47
|
-
const
|
|
48
|
-
assert.equal(
|
|
49
|
-
assert.equal(
|
|
50
|
-
assert.equal(
|
|
50
|
+
const application = compile({ requiredCapabilities: ["layer.application"], conditions: ["conversion"] });
|
|
51
|
+
assert.equal(application.required_skills.includes("mapstruct"), true);
|
|
52
|
+
assert.equal(application.required_skills.includes("lombok"), false);
|
|
53
|
+
assert.equal(application.required_skills.includes("yss-mybatis"), false);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
test("requires a platform binding for every backend component capability", () => {
|
|
57
|
+
for (const capability of ["contract.dto-wire", "contract.request-validation", "contract.error-mapping", "framework.mybatis", "component.cache", "component.current-user-context", "component.audit-log", "component.excel-import-export", "component.distributed-id", "component.security-algorithm", "component.gateway-resilience"]) {
|
|
58
|
+
assert.throws(
|
|
59
|
+
() => compile({ requiredCapabilities: [capability], architecture_identity: undefined, architecture_evidence: undefined }),
|
|
60
|
+
stableComponentError("component-platform-binding-required"),
|
|
61
|
+
capability
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
test("public compiler entry preserves stable component error codes", () => {
|
|
67
|
+
const catalog = loadBackendPlatforms();
|
|
68
|
+
const boot2Profile = catalog.profiles.find(item => item.id === "spring-boot-2.7-jdk8");
|
|
69
|
+
const boot2Entry = catalog.compatibility.find(item => item.profile_id === boot2Profile.id);
|
|
70
|
+
const boot2 = platformBinding(boot2Profile, boot2Entry);
|
|
71
|
+
const withPlatform = platform_configuration => {
|
|
72
|
+
const architecture_identity = { ...identity, platform_configuration };
|
|
73
|
+
return { architecture_identity, architecture_evidence: { engineering_baseline: architecture_identity, repository_registration: architecture_identity, manifest: architecture_identity } };
|
|
74
|
+
};
|
|
75
|
+
assert.throws(() => compile({ requiredCapabilities: ["contract.dto-wire"], ...withPlatform(boot2) }), stableComponentError("component-evidence-missing"));
|
|
76
|
+
assert.throws(() => compile({ requiredCapabilities: ["component.cache"], ...withPlatform(boot2) }), stableComponentError("component-platform-generation-mismatch"));
|
|
77
|
+
const boot3Profile = catalog.profiles.find(item => item.id === "spring-boot-3.5-jdk17");
|
|
78
|
+
const boot3 = { ...boot2, profile_id: boot3Profile.id, spring_boot_version: boot3Profile.spring_boot_version, java_version: boot3Profile.java_version, compatibility_id: "unavailable-boot3-components" };
|
|
79
|
+
assert.throws(() => compile({ requiredCapabilities: ["contract.dto-wire"], ...withPlatform(boot3) }), stableComponentError("component-unavailable-for-platform"));
|
|
51
80
|
});
|
|
52
81
|
|
|
53
82
|
test("rejects recipes that reference skills and context-required cycles", () => {
|
|
@@ -62,12 +91,12 @@ test("rejects recipes that reference skills and context-required cycles", () =>
|
|
|
62
91
|
|
|
63
92
|
test("rejects removed ids and schema v1 without compatibility", () => {
|
|
64
93
|
assert.throws(() => compile({ recipeIds: ["yss-router"] }), /已移除 skill id/);
|
|
65
|
-
assert.throws(() => compileImplementationContract({ registry: { ...registry, schema_version: 1 }, compilerContract, requiredCapabilities: ["layer.domain"] }), /schema v1 已停止支持/);
|
|
94
|
+
assert.throws(() => compileImplementationContract({ registry: { ...registry, schema_version: 1 }, compilerContract, requiredCapabilities: ["layer.domain"] }), /schema v1\/v2 已停止支持/);
|
|
66
95
|
assert.throws(() => compileImplementationContract({ registry, compilerContract: { ...compilerContract, schema_version: 1 }, requiredCapabilities: ["layer.domain"] }), /schema v1 已停止支持/);
|
|
67
96
|
});
|
|
68
97
|
|
|
69
98
|
test("marks digest drift stale and validates v2 execution evidence", () => {
|
|
70
|
-
const resolution = compile({ requiredCapabilities: ["
|
|
99
|
+
const resolution = compile({ requiredCapabilities: ["quality.java-code-style"], architecture_identity: undefined, architecture_evidence: undefined });
|
|
71
100
|
const contract = { schema_version: 2, contract_id: "slice-1", contract_version: 1, resolution };
|
|
72
101
|
assert.deepEqual(evaluateContractFreshness(contract, { registry, compilerContract }), { freshness: "current", reasons: [] });
|
|
73
102
|
const changedRegistry = structuredClone(registry);
|
|
@@ -89,3 +118,20 @@ test("marks digest drift stale and validates v2 execution evidence", () => {
|
|
|
89
118
|
assert.deepEqual(validateExecutionResult(result, contract, { registry, compilerContract }), { status: "accepted", blockers: [] });
|
|
90
119
|
assert.deepEqual(validateExecutionResult({ ...result, new_impacts: [{ impact_type: "cache" }] }, contract, { registry, compilerContract }), { status: "blocked", blockers: ["new-impacts"] });
|
|
91
120
|
});
|
|
121
|
+
|
|
122
|
+
test("marks legacy component contracts without component bindings stale", () => {
|
|
123
|
+
const resolution = compile({ requiredCapabilities: ["quality.java-code-style"], architecture_identity: undefined, architecture_evidence: undefined });
|
|
124
|
+
resolution.required_capabilities = ["contract.dto-wire"];
|
|
125
|
+
resolution.required_skills = ["yss-dto"];
|
|
126
|
+
const contract = { schema_version: 2, contract_id: "legacy-component", contract_version: 1, resolution };
|
|
127
|
+
assert.ok(evaluateContractFreshness(contract, { registry, compilerContract }).reasons.includes("component-binding-drift"));
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
test("current lifecycle scaffold contract delegates platform facts to the catalog", () => {
|
|
131
|
+
const source = readFileSync(new URL("../../yss-product-lifecycle/references/orchestration-contract.yaml", import.meta.url), "utf8");
|
|
132
|
+
const current = source.slice(source.indexOf("backend_scaffold:"), source.indexOf(" required_inputs:", source.indexOf("backend_scaffold:")));
|
|
133
|
+
assert.match(current, /platform_binding: platform_configuration-v2/);
|
|
134
|
+
assert.doesNotMatch(current, /yss_components_version:\s*2\.0\.0-SNAPSHOT/);
|
|
135
|
+
assert.doesNotMatch(current, /spring-boot-3/);
|
|
136
|
+
assert.doesNotMatch(current, /validation_namespace:\s*javax/);
|
|
137
|
+
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yss-layered-mvc-scaffold-generator
|
|
3
|
-
description:
|
|
3
|
+
description: 在生命周期已批准的脚手架合同下生成通用 YSS 分层 MVC 后端,或按 mvc-data-analysis-v1 初始化六模块数据分析 project-instance。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# YSS Layered MVC Scaffold Generator
|
|
7
7
|
|
|
8
|
-
本 skill 只为已登记的全新 backend project
|
|
8
|
+
本 skill 只为已登记的全新 backend project 生成机械工程骨架,不生成业务 Controller、DTO、查询、状态机或 Mock 数据。普通 `layered-mvc-service` 不创建 `project-instance` 或初始化 Git;`mvc-data-analysis-v1` 按批准合同创建独立 project-instance、同级锁定 `skillUtils` 和未提交的 main Git。
|
|
9
9
|
|
|
10
10
|
## 进入条件
|
|
11
11
|
|
|
@@ -31,12 +31,13 @@ description: 用于在生命周期已批准的脚手架合同下生成按批准
|
|
|
31
31
|
|
|
32
32
|
## 架构与 Profile
|
|
33
33
|
|
|
34
|
-
- 固定核心模块:`server`、`service`、`repository`。
|
|
34
|
+
- `layered-mvc-service` 固定核心模块:`server`、`service`、`repository`。
|
|
35
35
|
- `external-integration` 增加 `adapter`。
|
|
36
36
|
- `published-client` 增加 `client`。
|
|
37
37
|
- `feign-client` 增加 `client`、`feign-client`。
|
|
38
38
|
- 平台来自批准的 `platform_configuration`;保留 YSS BOM、MyBatis-Plus,不固定单一 Boot/Java/Validation 命名空间。
|
|
39
|
-
- 固定
|
|
39
|
+
- `mvc-data-analysis-v1` 固定 `server/core/client/repository/adapter/feign-client` 六模块,要求 `context_handoff_ref`、摘要和 `init_git=true`,复制批准的根 `CONTEXT.md`、治理资产和锁定工具包;不得从交接内容创造术语。该 Profile 仍绑定平台目录与构件证据,不再通过历史初始化器绕过平台门禁。
|
|
40
|
+
- 两个 Profile 均固定 verification_database=h2、production_database=not-bound。测试使用 H2,本地运行显式启用 scaffold-local;不引入外部驱动/数据源。
|
|
40
41
|
|
|
41
42
|
能力解析规则、模块职责和依赖方向见 [architecture.md](references/architecture.md)。生成器必须同时校验 `requested_capabilities` 与 `resolved_modules`,不得自行补猜模块。
|
|
42
43
|
|
|
@@ -69,7 +70,7 @@ node scripts/generate_and_verify_scaffold.mjs \
|
|
|
69
70
|
## 硬约束
|
|
70
71
|
|
|
71
72
|
- 新生成只接受包含 API Contract Decision 的统一 schema v4;缺 API 字段的预发布 v4 不得静默接受。验证器可只读检查历史 Manifest v3,恢复必须另行完成所有权审计、技术/数据/API 设计补齐与当前批准。历史 v2/v3 均不用于新生成。
|
|
72
|
-
- `architecture_family` 必须为 `layered-mvc`,`generator_skill` 必须为本 skill
|
|
73
|
+
- `architecture_family` 必须为 `layered-mvc`,`generator_skill` 必须为本 skill。旧数据分析初始化合同必须标记 `stale` 并按 `mvc-data-analysis-v1` Profile 重编译,不自动替换或继承批准。
|
|
73
74
|
- 目标存在、`--force`、旧项目迁移、模板升级均为 `unsupported`。
|
|
74
75
|
- Harness 内只允许以 `apps/backend/` 为输出父容器;外部实现仓库使用已登记真实路径。
|
|
75
76
|
- 不生成业务示例。健康检查、上下文加载测试和架构测试只能验证机械工程能力,不定义用户可见 API。
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "YSS Layered MVC Scaffold Generator"
|
|
3
|
-
short_description: "Generate
|
|
4
|
-
default_prompt: "Use $yss-layered-mvc-scaffold-generator only after a user-confirmed architecture decision and a lifecycle-approved schema v4
|
|
3
|
+
short_description: "Generate approved MVC service or data-analysis profiles."
|
|
4
|
+
default_prompt: "Use $yss-layered-mvc-scaffold-generator only after a user-confirmed architecture decision and a lifecycle-approved schema v4 contract; generate layered-mvc-service or the native mvc-data-analysis-v1 project profile exactly as bound."
|
package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/references/architecture.md
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
|
|
12
12
|
合同保存 `requested_capabilities`、`resolved_modules` 和 `resolution_version: 1`。模块按 `server`、`service`、`repository`、`adapter`、`client`、`feign-client` 的稳定顺序生成。
|
|
13
13
|
|
|
14
|
+
`mvc-data-analysis-v1` 是本生成器的固定 Profile,不使用上述可选闭包:模块严格为 `server`、`core`、`client`、`repository`、`adapter`、`feign-client`。`core` 承载薄应用编排,不能依赖 `client`、Spring Web 或生产数据库驱动;CONTEXT handoff、project-instance 治理信封、同级 `skillUtils` 与独立 Git 必须在最终 rename 前完成。
|
|
15
|
+
|
|
14
16
|
## 职责和依赖
|
|
15
17
|
|
|
16
18
|
| 模块 | 职责 | 允许依赖 |
|
package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { spawnSync } from "node:child_process";
|
|
3
|
+
import { cp, lstat, mkdir, mkdtemp, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
|
|
7
|
+
const REPOSITORY_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../../..");
|
|
8
|
+
const digest = (value) => `sha256:${createHash("sha256").update(value).digest("hex")}`;
|
|
9
|
+
|
|
10
|
+
async function present(target) {
|
|
11
|
+
try { await lstat(target); return true; }
|
|
12
|
+
catch (error) { if (error.code === "ENOENT") return false; throw error; }
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async function put(target, text) {
|
|
16
|
+
await mkdir(path.dirname(target), { recursive: true });
|
|
17
|
+
await writeFile(target, `${text.trimEnd()}\n`);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function within(parent, target) {
|
|
21
|
+
const relative = path.relative(parent, target);
|
|
22
|
+
return relative === "" || (!relative.startsWith("..") && !path.isAbsolute(relative));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async function sharedTools(outputDir, contract) {
|
|
26
|
+
const destination = path.join(outputDir, "skillUtils");
|
|
27
|
+
if (!contract.allowed_write_paths.some((item) => within(path.resolve(outputDir, item), destination))) throw new Error("skillUtils 不在批准写范围内");
|
|
28
|
+
const lock = await readFile(path.join(REPOSITORY_ROOT, "skills-lock.json"));
|
|
29
|
+
if (await present(destination)) {
|
|
30
|
+
if (!await present(path.join(destination, "skill-utils.yaml")) || !lock.equals(await readFile(path.join(destination, "skills-lock.json")))) throw new Error("已有 skillUtils 不匹配;须独立批准刷新,初始化不会覆盖");
|
|
31
|
+
return digest(lock);
|
|
32
|
+
}
|
|
33
|
+
const staging = await mkdtemp(path.join(outputDir, ".skillUtils.staging-"));
|
|
34
|
+
try {
|
|
35
|
+
for (const relative of [".agents/skills", ".codex/skills", ".cursor/skills", ".pi/skills", "scripts", "docs/agents", "docs/process", "AGENTS.md", "skills-lock.json"]) {
|
|
36
|
+
await mkdir(path.dirname(path.join(staging, relative)), { recursive: true });
|
|
37
|
+
await cp(path.join(REPOSITORY_ROOT, relative), path.join(staging, relative), { recursive: true });
|
|
38
|
+
}
|
|
39
|
+
await put(path.join(staging, "skill-utils.yaml"), "schema_version: 1\nkind: yss-skill-utils\ncompatibility: skill-utils-v1\ncanonical_root: .agents/skills");
|
|
40
|
+
await rename(staging, destination);
|
|
41
|
+
} catch (error) {
|
|
42
|
+
await rm(staging, { recursive: true, force: true });
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
return digest(lock);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export async function finalizeDataAnalysisProfile({ projectRoot, contract, architectureIdentity, options }) {
|
|
49
|
+
if (!contract.context_handoff_ref || !contract.context_handoff_digest) throw new Error("缺少批准的 context_handoff_ref/context_handoff_digest");
|
|
50
|
+
const contractFile = path.resolve(options.contractFile);
|
|
51
|
+
const contractRoot = path.dirname(contractFile);
|
|
52
|
+
const handoffPath = path.resolve(contractRoot, contract.context_handoff_ref);
|
|
53
|
+
if (!within(contractRoot, handoffPath)) throw new Error("CONTEXT handoff 不得越过脚手架合同目录");
|
|
54
|
+
const context = await readFile(handoffPath);
|
|
55
|
+
if (digest(context) !== contract.context_handoff_digest || !/^---\r?\ncontext_schema_version: 1\r?\n---/m.test(context.toString())) throw new Error("CONTEXT handoff schema/digest 不匹配");
|
|
56
|
+
if (spawnSync("git", ["--version"]).status !== 0) throw new Error("Git 不可用");
|
|
57
|
+
|
|
58
|
+
for (const relative of ["docs/agents", "docs/process", "docs/templates", "docs/architecture/templates"]) {
|
|
59
|
+
await mkdir(path.dirname(path.join(projectRoot, relative)), { recursive: true });
|
|
60
|
+
await cp(path.join(REPOSITORY_ROOT, relative), path.join(projectRoot, relative), { recursive: true });
|
|
61
|
+
}
|
|
62
|
+
await put(path.join(projectRoot, "CONTEXT.md"), context.toString());
|
|
63
|
+
const agents = (await readFile(path.join(REPOSITORY_ROOT, "AGENTS.md"), "utf8"))
|
|
64
|
+
.replace(/## 4\. `template-source` 模板维护路由[\s\S]*?(?=## 5\.)/, "## 4. 模板维护\n\n本仓为 project-instance;模板维护回上游执行。\n\n")
|
|
65
|
+
.replaceAll(".agents/skills", "../skillUtils/.agents/skills");
|
|
66
|
+
await put(path.join(projectRoot, "AGENTS.md"), agents);
|
|
67
|
+
await put(path.join(projectRoot, "yss-project.yaml"), "schema_version: 1\nrepository_mode: project-instance");
|
|
68
|
+
await put(path.join(projectRoot, ".artifact-workspace.yaml"), `schema_version: 1\nkind: service\nservice_id: ${options.projectName}`);
|
|
69
|
+
await cp(path.join(REPOSITORY_ROOT, "scripts/lib"), path.join(projectRoot, "scripts/lib"), { recursive: true });
|
|
70
|
+
await cp(path.join(REPOSITORY_ROOT, "scripts/vendor"), path.join(projectRoot, "scripts/vendor"), { recursive: true });
|
|
71
|
+
for (const name of ["repository-mode", "implementation-path-policy", "repository-scope-policy", "generate-lifecycle-artifacts", "node-generate-lifecycle-artifacts.mjs", "verify-lifecycle-registry", "node-verify-lifecycle-registry.mjs", "verify-lifecycle-checkpoint", "verify-context-reconciliation", "verify-approval-record", "verify-user-decision", "verify-digital-human-task-package", "verify-yss-dto-openapi-profile", "verify-frontend-implementation-evidence"]) {
|
|
72
|
+
await cp(path.join(REPOSITORY_ROOT, "scripts", name), path.join(projectRoot, "scripts", name));
|
|
73
|
+
}
|
|
74
|
+
const lockDigest = await sharedTools(path.resolve(options.outputDir), contract);
|
|
75
|
+
await put(path.join(projectRoot, "skills-lock.json"), JSON.stringify({ version: 1, distribution: { mode: "sibling-directory", skillUtilsDir: "../skillUtils", required: true, compatibility: "skill-utils-v1", lock_digest: lockDigest } }, null, 2));
|
|
76
|
+
await put(path.join(projectRoot, "docs/process/engineering-baseline.json"), JSON.stringify({ schema_version: 1, architecture_identity: architectureIdentity, platform_profile: contract.profiles.platform, scaffold_completion: "generated" }, null, 2));
|
|
77
|
+
await put(path.join(projectRoot, "docs/process/implementation-repo-registry.yaml"), JSON.stringify({ schema_version: 1, projects: [{ project_type: "backend", project_name: options.projectName, project_root: ".", git_root: ".", repository_scope: "external-repository", scaffold_status: "initialized", default_branch: "main", architecture_identity: architectureIdentity, allowed_write_paths: ["."], verification_commands: contract.verification_commands, expected_evidence_files: contract.expected_evidence_files, ci: "not-configured", rollback_point: "initial-empty-repository" }] }, null, 2));
|
|
78
|
+
await put(path.join(projectRoot, "docs/process/service-initialization.json"), JSON.stringify({ work_unit: "work-unit.service-project-initialization", context_handoff_ref: contract.context_handoff_ref, context_handoff_digest: contract.context_handoff_digest, contract_id: contract.contract_id, architecture_identity: architectureIdentity, status: "generated" }, null, 2));
|
|
79
|
+
await put(path.join(projectRoot, ".gitignore"), "target/\n**/target/\n.idea/\n*.iml\n.env\n.env.*\n.local/");
|
|
80
|
+
const git = spawnSync("git", ["init", "--initial-branch=main"], { cwd: projectRoot, encoding: "utf8" });
|
|
81
|
+
if (git.status !== 0) throw new Error(`Git 初始化失败: ${git.stderr}`);
|
|
82
|
+
}
|
package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/** 依据生命周期批准的 schema v4 合同生成纯机械 YSS 分层 MVC 后端骨架。 */
|
|
3
3
|
import { platformSourceFingerprint, generatedTreeDigest } from "../../../../scripts/lib/backend-platform-provenance.mjs";
|
|
4
|
-
import { assertContractPlatform,
|
|
4
|
+
import { assertContractPlatform, platformTemplateVars, platformSmokeTest } from "../../../../scripts/lib/backend-platform.mjs";
|
|
5
5
|
import { assertScaffoldUserDecision } from "../../../../scripts/lib/user-decision.mjs";
|
|
6
6
|
import { validateBackendScaffoldPrerequisites } from "../../../../scripts/lib/backend-scaffold-prerequisites.mjs";
|
|
7
7
|
import { createHash } from "node:crypto";
|
|
@@ -14,6 +14,7 @@ import { findGitRoot, gitSubmoduleScaffoldViolation, overlayMountViolation } fro
|
|
|
14
14
|
import { assertLocalDatabaseProfile, localDatabaseConfiguration, scaffoldArchitectureIdentity } from "../../../../scripts/lib/scaffold-local-database.mjs";
|
|
15
15
|
import { validateArchitectureIdentity } from "../../../../scripts/lib/backend-architecture.mjs";
|
|
16
16
|
import { validateJsonSchema } from "../../../../scripts/lib/json-schema.mjs";
|
|
17
|
+
import { finalizeDataAnalysisProfile } from "./data-analysis-profile.mjs";
|
|
17
18
|
|
|
18
19
|
const SCRIPT_DIR = path.dirname(fileURLToPath(import.meta.url));
|
|
19
20
|
const SKILL_ROOT = path.resolve(SCRIPT_DIR, "..");
|
|
@@ -146,7 +147,7 @@ function modulePom(contract, module, modules, platform) {
|
|
|
146
147
|
}
|
|
147
148
|
if (module === "client") dependencies.push(dependency("com.yss.cloud", "yss-component-dto"), dependency(platform.validation_group, platform.validation_artifact));
|
|
148
149
|
if (["server", "service", "core", "client", "repository"].includes(module)) dependencies.push(dependency("org.projectlombok", "lombok", platform.versions.lombok, "provided"));
|
|
149
|
-
if (module === "feign-client") dependencies.push(own("client"), dependency("org.springframework.cloud", contract.
|
|
150
|
+
if (module === "feign-client") dependencies.push(own("client"), dependency("org.springframework.cloud", contract.architecture_profile === "mvc-data-analysis-v1" ? "spring-cloud-openfeign-core" : "spring-cloud-starter-openfeign"));
|
|
150
151
|
const plugin = module === "server" ? `<profiles><profile><id>scaffold-local</id><dependencies>${dependency("com.h2database", "h2", null, "runtime")}</dependencies></profile></profiles><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>` : "";
|
|
151
152
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
152
153
|
<project xmlns="http://maven.apache.org/POM/4.0.0"><modelVersion>4.0.0</modelVersion><parent><groupId>${xml(contract.maven_coordinates.group_id)}</groupId><artifactId>${xml(contract.project_name)}</artifactId><version>${xml(contract.maven_coordinates.project_version)}</version></parent><artifactId>${xml(contract.project_name)}-${module}</artifactId><dependencies>${dependencies.join("")}</dependencies>${plugin}</project>`;
|
|
@@ -160,6 +161,10 @@ export async function validateContract(options, skillId, architectureProfile, pl
|
|
|
160
161
|
if (contract.schema_version !== 4) fail(`unsupported: 新生成只接受 scaffold contract v4,收到 v${contract.schema_version}`);
|
|
161
162
|
const expectedScaffoldKind = architectureProfile === "mvc-data-analysis-v1" ? "backend-mvc-data-analysis" : "backend-layered-mvc";
|
|
162
163
|
if (contract.kind !== "project-scaffold-contract" || contract.delivery_role !== "backend" || contract.scaffold_kind !== expectedScaffoldKind) fail(`schema v4 合同必须绑定 backend/${expectedScaffoldKind}`);
|
|
164
|
+
if (architectureProfile === "mvc-data-analysis-v1") {
|
|
165
|
+
if (contract.init_git !== true) fail("mvc-data-analysis-v1 必须由合同显式要求独立 Git 初始化");
|
|
166
|
+
if (!contract.context_handoff_ref || !contract.context_handoff_digest) fail("mvc-data-analysis-v1 缺少批准的 CONTEXT handoff");
|
|
167
|
+
}
|
|
163
168
|
validateJsonSchema(contract, path.join(REPOSITORY_ROOT, "docs/process/schemas/project-scaffold-contract.schema.json"), { label: "Project Scaffold Contract v4" });
|
|
164
169
|
const required = ["contract_id", "contract_version", "scaffold_request_id", "status", "compiler_draft_ref", "lifecycle_approval_ref", "persisted_ref", "current_version", "implementation_repository", "backend_repository", "scaffold_status", "project_name", "target_output_dir", "base_package", "architecture_family", "generator_skill", "decision_ref", "decision_id", "decision_digest", "maven_coordinates", "profiles", "module_profile", "allowed_write_paths", "expected_evidence_files", "verification_commands", "approval", "work_unit", "generation_policy"];
|
|
165
170
|
const missing = required.filter((field) => !isPresent(contract[field]));
|
|
@@ -176,6 +181,7 @@ export async function validateContract(options, skillId, architectureProfile, pl
|
|
|
176
181
|
for (const [field, value] of Object.entries(expectedProfiles)) if (contract.profiles?.[field] !== value) fail(`unsupported profile ${field}: ${contract.profiles?.[field]}`);
|
|
177
182
|
assertLocalDatabaseProfile(contract.profiles);
|
|
178
183
|
if (contract.architecture_profile !== architectureProfile) fail(`合同必须显式绑定 ${architectureProfile} Profile`);
|
|
184
|
+
if (architectureProfile !== "mvc-data-analysis-v1" && contract.init_git !== false) fail("通用 layered-mvc-service 脚手架不得初始化 Git");
|
|
179
185
|
const requested = contract.module_profile?.requested_capabilities;
|
|
180
186
|
if (!Array.isArray(requested)) fail("module_profile.requested_capabilities 必须是数组");
|
|
181
187
|
const resolved = architectureProfile === "mvc-data-analysis-v1" ? ["server", "core", "client", "repository", "adapter", "feign-client"] : orderedModules(requested);
|
|
@@ -209,8 +215,7 @@ export async function validateContract(options, skillId, architectureProfile, pl
|
|
|
209
215
|
assertScaffoldUserDecision(decision);
|
|
210
216
|
validateArchitectureIdentity(scaffoldArchitectureIdentity(contract, sha256(contractText)));
|
|
211
217
|
const designPrerequisites = await validateBackendScaffoldPrerequisites(contract, { contractFile });
|
|
212
|
-
const platform =
|
|
213
|
-
if (skillId !== SKILL_ID && (contract.platform_configuration || contract.profiles.platform !== "spring-boot-2.7-jdk8" || contract.profiles.validation_namespace !== "javax")) fail("unsupported: data-analysis initializer remains on legacy Boot 2.7/Java 8");
|
|
218
|
+
const platform = assertContractPlatform(contract, decision, { ...platformOptions, requireVerified: platformOptions.candidate !== true }).profile;
|
|
214
219
|
return { contract, contractText, modules: resolved, designPrerequisites, platform };
|
|
215
220
|
}
|
|
216
221
|
|
|
@@ -227,8 +232,15 @@ async function validateOutputLayout(outputDir, projectName) {
|
|
|
227
232
|
if (await exists(target)) fail(`unsupported: 目标已存在 ${target}`);
|
|
228
233
|
}
|
|
229
234
|
|
|
230
|
-
|
|
231
|
-
|
|
235
|
+
async function profileFromContract(options) {
|
|
236
|
+
const text = await readFile(path.resolve(options.contractFile), "utf8").catch(() => fail(`脚手架合同不可读取: ${path.resolve(options.contractFile)}`));
|
|
237
|
+
try { return JSON.parse(text).architecture_profile; }
|
|
238
|
+
catch { fail("脚手架合同必须是 JSON 对象"); }
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export async function generate(options, { skillId = SKILL_ID, architectureProfile, finalize, platformOptions = {} } = {}) {
|
|
242
|
+
architectureProfile ??= await profileFromContract(options);
|
|
243
|
+
if (skillId !== SKILL_ID || !["layered-mvc-service", "mvc-data-analysis-v1"].includes(architectureProfile)) fail("unsupported MVC generator/Profile pair");
|
|
232
244
|
await validateOutputLayout(options.outputDir, options.projectName);
|
|
233
245
|
const { contract, contractText, modules, designPrerequisites, platform } = await validateContract(options, skillId, architectureProfile, platformOptions);
|
|
234
246
|
const outputDir = path.resolve(options.outputDir);
|
|
@@ -252,11 +264,13 @@ export async function generate(options, { skillId = SKILL_ID, architectureProfil
|
|
|
252
264
|
await put(projectRoot, `${serverRoot}/src/test/resources/application-scaffold-test.yml`, localDatabaseConfiguration(`${options.projectName}_test`));
|
|
253
265
|
await put(projectRoot, `${serverRoot}/src/test/java/${packagePath}/${applicationClass}Test.java`, `package ${options.basePackage};\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.ActiveProfiles;\n\n@SpringBootTest\n@ActiveProfiles("scaffold-test")\nclass ${applicationClass}Test {\n @Test\n void contextLoads() {\n }\n}`);
|
|
254
266
|
await put(projectRoot, `${serverRoot}/src/test/java/${packagePath}/architecture/LayeredMvcArchitectureTest.java`, `package ${options.basePackage}.architecture;\n\nimport static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses;\n\nimport com.tngtech.archunit.core.importer.ImportOption;\nimport com.tngtech.archunit.junit.AnalyzeClasses;\nimport com.tngtech.archunit.junit.ArchTest;\nimport com.tngtech.archunit.lang.ArchRule;\n\n@AnalyzeClasses(packages = "${options.basePackage}", importOptions = ImportOption.DoNotIncludeTests.class)\nclass LayeredMvcArchitectureTest {\n @ArchTest\n static final ArchRule repositoryDoesNotDependOnUpperLayers = noClasses().that().resideInAPackage("..repository..").should().dependOnClassesThat().resideInAnyPackage("..service..", "..server..");\n}`);
|
|
255
|
-
|
|
267
|
+
await put(projectRoot, `${serverRoot}/src/test/java/${packagePath}/PlatformIntegrationTest.java`, platformSmokeTest(options.basePackage, platform, contract.module_profile.requested_capabilities));
|
|
256
268
|
const wrapper = path.join(REPOSITORY_ROOT, ".agents/skills/yss-ddd-scaffold-generator/assets/wrapper");
|
|
257
269
|
await cp(wrapper, projectRoot, { recursive: true });
|
|
258
270
|
await chmod(path.join(projectRoot, "mvnw"), 0o755);
|
|
259
|
-
|
|
271
|
+
const architectureIdentity = scaffoldArchitectureIdentity(contract, sha256(contractText));
|
|
272
|
+
const profileFinalize = finalize ?? (architectureProfile === "mvc-data-analysis-v1" ? finalizeDataAnalysisProfile : null);
|
|
273
|
+
if (profileFinalize) await profileFinalize({ projectRoot, contract, architectureIdentity, options });
|
|
260
274
|
await put(projectRoot, "README.md", `# ${options.projectName}\n\n平台:Spring Boot ${platform.spring_boot_version} / Java ${platform.java_version}。\n\n该工程由 ${skillId} 根据批准的 schema v${contract.schema_version} 合同生成。模块:${modules.join("、")}。不包含业务 API、SQL 或生产数据库绑定。\n\n本地运行需同时显式启用 Maven -Pscaffold-local 和 Spring scaffold-local Profile;测试独立使用 H2。生产数据库须由后续已批准存储工作单元接入。`);
|
|
261
275
|
const generatedFiles = [];
|
|
262
276
|
for (const entry of await fileEntries(projectRoot, new Set([".yss/scaffold-generation.json"]))) generatedFiles.push({ path: entry.relative, owner: "generator", sha256: rawSha256(await readFile(entry.target)) });
|
|
@@ -269,7 +283,7 @@ export async function generate(options, { skillId = SKILL_ID, architectureProfil
|
|
|
269
283
|
schema_version: 4,
|
|
270
284
|
kind: architectureProfile === "mvc-data-analysis-v1" ? "service-project-initialization" : "backend-scaffold",
|
|
271
285
|
architecture_profile: contract.architecture_profile,
|
|
272
|
-
architecture_identity:
|
|
286
|
+
architecture_identity: architectureIdentity,
|
|
273
287
|
contract_id: contract.contract_id,
|
|
274
288
|
contract_version: contract.contract_version,
|
|
275
289
|
scaffold_request_id: contract.scaffold_request_id,
|
|
@@ -36,7 +36,7 @@ async function fixture(t, { profile = capabilityModules.basic, architectureProfi
|
|
|
36
36
|
delivery_role: "backend",
|
|
37
37
|
scaffold_kind: architectureProfile === "mvc-data-analysis-v1" ? "backend-mvc-data-analysis" : "backend-layered-mvc",
|
|
38
38
|
repository_scope: "external-repository",
|
|
39
|
-
init_git:
|
|
39
|
+
init_git: architectureProfile === "mvc-data-analysis-v1",
|
|
40
40
|
contract_id: "scaffold.demo-service.v1",
|
|
41
41
|
contract_version: 1,
|
|
42
42
|
scaffold_request_id: "request.demo-service",
|
|
@@ -74,19 +74,17 @@ async function fixture(t, { profile = capabilityModules.basic, architectureProfi
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
test("数据分析初始化生成 H2 六模块和独立治理信封", async (t) => {
|
|
77
|
-
const
|
|
78
|
-
const data = await fixture(t, { architectureProfile: "mvc-data-analysis-v1", skillId, profile: { capabilities: [], modules: ["server", "core", "client", "repository", "adapter", "feign-client"] } });
|
|
77
|
+
const data = await fixture(t, { architectureProfile: "mvc-data-analysis-v1", profile: { capabilities: [], modules: ["server", "core", "client", "repository", "adapter", "feign-client"] } });
|
|
79
78
|
const context = "---\ncontext_schema_version: 1\n---\n# 业务上下文\n\n## 业务术语\n\n| 术语 | 含义 | 英文标识 | 适用业务责任区 | 避免 / 备注 |\n|---|---|---|---|---|\n";
|
|
80
79
|
await writeFile(path.join(data.root, "context-handoff.md"), context);
|
|
81
80
|
data.contract.context_handoff_ref = "context-handoff.md";
|
|
82
81
|
data.contract.context_handoff_digest = digest(context);
|
|
83
82
|
await writeFile(data.contractFile, JSON.stringify(data.contract));
|
|
84
|
-
const
|
|
85
|
-
const result = spawnSync(process.execPath, [initializer, ...data.args], { encoding: "utf8" });
|
|
83
|
+
const result = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...data.args], { encoding: "utf8" });
|
|
86
84
|
assert.equal(result.status, 0, result.stderr);
|
|
87
85
|
const manifest = JSON.parse(await readFile(path.join(data.project, ".yss/scaffold-generation.json"), "utf8"));
|
|
88
86
|
assert.equal(manifest.architecture_identity.architecture_profile, "mvc-data-analysis-v1");
|
|
89
|
-
assert.equal(manifest.generator_skill,
|
|
87
|
+
assert.equal(manifest.generator_skill, "yss-layered-mvc-scaffold-generator");
|
|
90
88
|
assert.equal(await readFile(path.join(data.project, "CONTEXT.md"), "utf8"), context);
|
|
91
89
|
await stat(path.join(data.project, ".git"));
|
|
92
90
|
await stat(path.join(data.output, "skillUtils/skills-lock.json"));
|
|
@@ -95,6 +93,25 @@ test("数据分析初始化生成 H2 六模块和独立治理信封", async (t)
|
|
|
95
93
|
assert.doesNotMatch(core, /demo-service-client|spring-web|ojdbc|mysql-connector/);
|
|
96
94
|
});
|
|
97
95
|
|
|
96
|
+
test("数据分析 Profile 缺少 CONTEXT handoff 或独立 Git 合同时零写入阻断", async (t) => {
|
|
97
|
+
const profile = { capabilities: [], modules: ["server", "core", "client", "repository", "adapter", "feign-client"] };
|
|
98
|
+
const missingContext = await fixture(t, { architectureProfile: "mvc-data-analysis-v1", profile });
|
|
99
|
+
const missingResult = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...missingContext.args], { encoding: "utf8" });
|
|
100
|
+
assert.notEqual(missingResult.status, 0);
|
|
101
|
+
assert.match(missingResult.stderr, /CONTEXT handoff/);
|
|
102
|
+
await assert.rejects(stat(missingContext.project), { code: "ENOENT" });
|
|
103
|
+
|
|
104
|
+
const noGit = await fixture(t, { architectureProfile: "mvc-data-analysis-v1", profile });
|
|
105
|
+
const context = "---\ncontext_schema_version: 1\n---\n# 业务上下文\n";
|
|
106
|
+
await writeFile(path.join(noGit.root, "context-handoff.md"), context);
|
|
107
|
+
Object.assign(noGit.contract, { init_git: false, context_handoff_ref: "context-handoff.md", context_handoff_digest: digest(context) });
|
|
108
|
+
await writeFile(noGit.contractFile, JSON.stringify(noGit.contract));
|
|
109
|
+
const noGitResult = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...noGit.args], { encoding: "utf8" });
|
|
110
|
+
assert.notEqual(noGitResult.status, 0);
|
|
111
|
+
assert.match(noGitResult.stderr, /独立 Git/);
|
|
112
|
+
await assert.rejects(stat(noGit.project), { code: "ENOENT" });
|
|
113
|
+
});
|
|
114
|
+
|
|
98
115
|
test("旧数据库和 Mock 参数在写入前被拒绝", async (t) => {
|
|
99
116
|
const data = await fixture(t);
|
|
100
117
|
for (const args of [["--database", "mysql"], ["--with-mock"]]) {
|
|
@@ -52,6 +52,6 @@ description: 用于 YSS MyBatis / MyBatis-Plus 组件能力核验、接入决策
|
|
|
52
52
|
- 使用项目根 `./mvnw ...` 记录实际命令、退出码和时间;H2 只证明本地/测试行为,不证明生产方言。
|
|
53
53
|
- 按 [YSS Skill Execution Result v2](../yss-implementation-contract-compiler/references/yss-skill-execution-result.md) 返回证据、`seam_deferred`、`deviations`、`new_impacts`、`drift` 和 `violation`。
|
|
54
54
|
|
|
55
|
-
##
|
|
55
|
+
## 平台与源码门禁
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
接入、修改、代码生成或给出精确类名/配置前,读取 [后端组件平台与源码门禁](../yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md),从批准的 `platform_configuration.component_platform_line` 选择 `source-index.boot2-java8.md` 或 `source-index.boot3-java17.md`,并以 `--skill yss-mybatis --platform-line <line> --source-root <matching-root>` 运行统一 freshness 校验。平台线与源码根不匹配、组件 tree 不一致、组件子树 dirty、索引缺少平台信号,或 Manifest / 组件 GAV 缺少 verified 兼容证据时返回 `blocked`;不得回退另一代索引,也不在业务实现中升级、降级或替换 YSS 组件。既有工程只读分诊可继续,但不得据此宣称跨 Boot/JDK 兼容。
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# yss-mybatis Source Index
|
|
2
|
+
|
|
3
|
+
Index schema: `backend-component-source-index-v2`
|
|
4
|
+
Platform line: `boot2-java8`
|
|
5
|
+
Generated: 2026-09-18T18:40:26.031Z
|
|
6
|
+
Source commit: `a3be2b2e33dca4545782e2b31894aaa00d0305cd`
|
|
7
|
+
Component worktree: `clean`
|
|
8
|
+
Component tree `yss-microservice-components/yss-component-persistence`: `274d9f4c948d0bd8a58e7f6fb50685d6de740f7b`
|
|
9
|
+
Indexed source root: resolved at refresh time; set `YSS_SOURCE_ROOT_BOOT2_JAVA8` to reproduce or refresh.
|
|
10
|
+
|
|
11
|
+
This file is generated by `yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs`. Do not hand-edit generated sections.
|
|
12
|
+
|
|
13
|
+
Paths are relocatable source hints. Exact guidance requires a matching component tree and a clean indexed component subtree; the repository commit is trace metadata and may differ when unrelated components change.
|
|
14
|
+
|
|
15
|
+
## Component Path Hints
|
|
16
|
+
|
|
17
|
+
- `yss-microservice-components/yss-component-persistence` (existed when indexed)
|
|
18
|
+
|
|
19
|
+
## Documentation Files
|
|
20
|
+
|
|
21
|
+
- `yss-microservice-components/yss-component-persistence/HELP.md`
|
|
22
|
+
- `yss-microservice-components/yss-component-persistence/README.md`
|
|
23
|
+
- `yss-microservice-components/yss-component-persistence/TECHNICAL_DESIGN.md`
|
|
24
|
+
|
|
25
|
+
Component documentation is a discovery aid. For API signatures, conditions and defaults, prefer the indexed source facts below when documentation differs.
|
|
26
|
+
|
|
27
|
+
## Maven Modules
|
|
28
|
+
|
|
29
|
+
- `yss-microservice-components/yss-component-persistence/pom.xml` — GAV `com.yss.cloud:yss-component-persistence:2.0.0-SNAPSHOT`; parent `com.yss.cloud:yss-microservice-components:2.0.0-SNAPSHOT`
|
|
30
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-mapper/pom.xml` — GAV `com.yss.cloud:yss-component-mybatis-mapper:2.0.0-SNAPSHOT`; parent `com.yss.cloud:yss-component-persistence:2.0.0-SNAPSHOT`
|
|
31
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/pom.xml` — GAV `com.yss.cloud:yss-component-mybatis-plus-starter:2.0.0-SNAPSHOT`; parent `com.yss.cloud:yss-component-persistence:2.0.0-SNAPSHOT`
|
|
32
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/pom.xml` — GAV `com.yss.cloud:yss-component-mybatis-starter:2.0.0-SNAPSHOT`; parent `com.yss.cloud:yss-component-persistence:2.0.0-SNAPSHOT`
|
|
33
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-persistence-common/pom.xml` — GAV `com.yss.cloud:yss-component-persistence-common:2.0.0-SNAPSHOT`; parent `com.yss.cloud:yss-component-persistence:2.0.0-SNAPSHOT`
|
|
34
|
+
|
|
35
|
+
## Platform Signals
|
|
36
|
+
|
|
37
|
+
- Inherited Java signals: `1.8`.
|
|
38
|
+
- Inherited Spring Boot signals: `2.7.18`.
|
|
39
|
+
- Namespace source signals: `javax.*` in 8 main Java files; `jakarta.*` in 0 main Java files.
|
|
40
|
+
- Auto-configuration metadata: 4 `spring.factories`; 1 `AutoConfiguration.imports` files.
|
|
41
|
+
- These are source observations, not compatibility certification. Use the approved `platform_configuration` and verified compatibility evidence before integration or generation.
|
|
42
|
+
|
|
43
|
+
## Capability Matrix
|
|
44
|
+
|
|
45
|
+
### Repository abstractions
|
|
46
|
+
|
|
47
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/java/com/yss/cloud/mybatis/support/BaseRepository.java` — `sha256:fd6d72ff759b3438a2cf9d8a2ba24e848a9e68995fc8a100a0a53c65ee3500bb`
|
|
48
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/java/com/yss/cloud/mybatis/support/BaseRepository.java:20` — `public interface BaseRepository<T, D extends Serializable> extends Mapper<T>, BaseMapper<T, D>, ListMapper<T> {`
|
|
49
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/java/com/yss/cloud/mybatis/support/BaseRepository.java:66` — `<S extends T> int insert(S entity);`
|
|
50
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/java/com/yss/cloud/mybatis/support/BaseRepository.java:80` — `<S extends T> int insertSelective(S entity);`
|
|
51
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/java/com/yss/cloud/mybatis/support/BaseRepository.java:85` — `<S extends T> int insertList(@Param("entityList") List<S> entityList);`
|
|
52
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/java/com/yss/cloud/mybatis/support/BaseRepository.java:96` — `<S extends T> int updateList(@Param("entityList") List<S> entityList);`
|
|
53
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/java/com/yss/cloud/mybatis/support/BaseRepository.java:108` — `<S extends T> int updateListSelective(@Param("entityList") List<S> entityList);`
|
|
54
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/support/BasePlusRepository.java` — `sha256:3c37b73a2a2dcaa1ad47fee42f8fb4f9b9ecf51b095f8d1fef816cf785fcbb05`
|
|
55
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/support/BasePlusRepository.java:12` — `public interface BasePlusRepository<T> extends BaseMapper<T> {`
|
|
56
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/support/BasePlusRepository.java:21` — `default Integer insertBatchSomeColumn(List<T> entityList) {`
|
|
57
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/support/BasePlusRepository.java:29` — `Integer rows = insertBatchSomeColumnInternal(entityList.subList(fromIndex, toIndex));`
|
|
58
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/support/BasePlusRepository.java:43` — `Integer insertBatchSomeColumnInternal(List<T> entityList);`
|
|
59
|
+
|
|
60
|
+
### Pagination and activation
|
|
61
|
+
|
|
62
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/java/com/yss/cloud/mybatis/aop/EntityQueryAspect.java` — `sha256:617d5eba33a8266bfc485c8e5f39f43519dd16f4d89c9fea7f918d87b00293ba`
|
|
63
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/java/com/yss/cloud/mybatis/aop/EntityQueryAspect.java:22` — `@Around("( (execution(public * (@org.springframework.stereotype.Repository *).*(..)) || execution(* com.yss..*.gateway.impl.*.*(..))))&& (args(pageQuery)||args(pageQuery,..))")`
|
|
64
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/java/com/yss/cloud/mybatis/aop/EntityQueryAspect.java:27` — `Page<Object> page = PageHelper.offsetPage(pageQuery.getOffset(), pageQuery.getPageSize());`
|
|
65
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/java/com/yss/cloud/mybatis/config/PageQueryEntityConfigration.java` — `sha256:c2659f417c10db7fd9e1a91f825d3b6396ae949f7858dbd3b3d9f8917ae42031`
|
|
66
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/java/com/yss/cloud/mybatis/config/PageQueryEntityConfigration.java:15` — `@ConditionalOnProperty(name = "yss.mybatis.page-helper.enabled", havingValue = "true", matchIfMissing = true)`
|
|
67
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/YssMybatisMapperProperties.java` — `sha256:2fda7b769434bd6942f680cdc7ffa71030c0d6a0e448d762e0f19b2d0b33cd85`
|
|
68
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/YssMybatisMapperProperties.java:8` — `@ConfigurationProperties(value = "yss.mybatis",ignoreUnknownFields = false)`
|
|
69
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/YssMybatisMapperProperties.java:10` — `private String mapperLocation = "mappers/*.xml";`
|
|
70
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/YssMybatisMapperProperties.java:11` — `private String mapperScan = "com.yss.cloud.**.mapper";`
|
|
71
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/YssMybatisMapperProperties.java:15` — `private Integer batchSize = 200;`
|
|
72
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/YssMybatisMapperProperties.java:21` — `private PageHelper pageHelper = new PageHelper();`
|
|
73
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/YssMybatisMapperProperties.java:27` — `private MybatisPlusPagination mybatisPlusPagination = new MybatisPlusPagination();`
|
|
74
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/YssMybatisMapperProperties.java:36` — `private String dbType;`
|
|
75
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/YssMybatisMapperProperties.java:164` — `private Boolean enabled = true;`
|
|
76
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/YssMybatisMapperProperties.java:183` — `private Boolean enabled = true;`
|
|
77
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/MapperConfiguration.java` — `sha256:79509947c12aeac7b9d6d3e8610edea438240b6613368b84b57b492f06a6b7fc`
|
|
78
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/MapperConfiguration.java:47` — `PageInterceptor pageInterceptor = new PageInterceptor();`
|
|
79
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/MapperConfiguration.java:264` — `batchSqlInjector.setDbType(dbType);`
|
|
80
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/MapperConfiguration.java:265` — `BatchInsertSettings.setBatchSize(yssMybatisMapperProperties.getBatchSize());`
|
|
81
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/MapperConfiguration.java:275` — `PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(dbType);`
|
|
82
|
+
|
|
83
|
+
### SQL-level batch insertion
|
|
84
|
+
|
|
85
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/BatchInsertSettings.java` — `sha256:b1ae05aed5f90a97c36ad29d240b05f9f7c5ee5796f2bc293917e09f7d1c8bd2`
|
|
86
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/BatchInsertSettings.java:8` — `private static final int DEFAULT_BATCH_SIZE = 200;`
|
|
87
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/BatchInsertSettings.java:9` — `private static volatile int batchSize = DEFAULT_BATCH_SIZE;`
|
|
88
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/BatchInsertSettings.java:18` — `public static void setBatchSize(Integer configuredBatchSize) {`
|
|
89
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/BatchInsertSettings.java:19` — `batchSize = configuredBatchSize == null || configuredBatchSize <= 0`
|
|
90
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/BatchInsertSettings.java:20` — `? DEFAULT_BATCH_SIZE : configuredBatchSize;`
|
|
91
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/BatchSqlInjector.java` — `sha256:463dfc881c0c33e27ed2a9157041e8b06d2b2e8bbab0dae1a106f467c31fb4ef`
|
|
92
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/BatchSqlInjector.java:16` — `public class BatchSqlInjector extends DefaultSqlInjector {`
|
|
93
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/BatchSqlInjector.java:28` — `"insertBatchSomeColumnInternal", dbType, i -> FieldFill.UPDATE != i.getFieldFill()));`
|
|
94
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/DialectInsertBatchSomeColumn.java` — `sha256:9cc31f71154fffbc99e4f67816b9026f286f864cfb56a57420185f5e0362dca3`
|
|
95
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/DialectInsertBatchSomeColumn.java:24` — `public class DialectInsertBatchSomeColumn extends AbstractMethod {`
|
|
96
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/DialectInsertBatchSomeColumn.java:82` — `return dbType == DbType.ORACLE`
|
|
97
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/DialectInsertBatchSomeColumn.java:83` — `|| dbType == DbType.ORACLE_12C`
|
|
98
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/java/com/yss/cloud/mybatis/config/DialectInsertBatchSomeColumn.java:84` — `|| dbType == DbType.DM;`
|
|
99
|
+
|
|
100
|
+
### Multi-data-source capability boundary
|
|
101
|
+
|
|
102
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-persistence-common/src/main/java/com/yss/cloud/mybatis/MultiDataSourceHolder.java` — `sha256:d19370f6a63af76ccb0d05084ef9f0aa71488dcc98b320933ffb8ccf9b9bf896`
|
|
103
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-persistence-common/src/main/java/com/yss/cloud/mybatis/MultiDataSourceHolder.java:10` — `public class MultiDataSourceHolder {`
|
|
104
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-persistence-common/src/main/java/com/yss/cloud/mybatis/MultiDataSourceHolder.java:12` — `private Map<String, DataSource> multiDataSource;`
|
|
105
|
+
|
|
106
|
+
### Auto-configuration registration
|
|
107
|
+
|
|
108
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-mapper/src/main/resources/META-INF/spring.factories` — `sha256:592ecdc43e8e11f86c6d1c4b335661f7a05ae8faf4ebb206ec49ef25512d5e46`
|
|
109
|
+
- `org.springframework.boot.autoconfigure.EnableAutoConfiguration=\`
|
|
110
|
+
- `io.mybatis.config.spring.SpringEnvAutoConfiguration`
|
|
111
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-mapper/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` — `sha256:d489ab3426d162416a1dfb396dbd3e530f9d5a287c880aab4b021229cc4f06fd`
|
|
112
|
+
- `io.mybatis.config.spring.SpringEnvAutoConfiguration`
|
|
113
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-plus-starter/src/main/resources/META-INF/spring.factories` — `sha256:22d8e4510b67fffe9a132b20524c1982c530d80594a3c4e9f839e914068e0a58`
|
|
114
|
+
- `org.springframework.boot.autoconfigure.EnableAutoConfiguration = com.yss.cloud.mybatis.MybatisPlusConfiguration`
|
|
115
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-mybatis-starter/src/main/resources/META-INF/spring.factories` — `sha256:ab6be3903a3af9369ecc56d47dac769511e62bc4a7215ebb7171a920415fa23f`
|
|
116
|
+
- `org.springframework.boot.autoconfigure.EnableAutoConfiguration = com.yss.cloud.mybatis.MybatisBaseConfiguration,com.yss.cloud.mybatis.MybatisPlusConfiguration`
|
|
117
|
+
- `yss-microservice-components/yss-component-persistence/yss-component-persistence-common/src/main/resources/META-INF/spring.factories` — `sha256:59e4a12550a854ad5a5b253ba3300058edc6646b2b221505aab4fb6bfcad1721`
|
|
118
|
+
- `org.springframework.boot.autoconfigure.EnableAutoConfiguration = com.yss.cloud.mybatis.MultiDataSourceConfiguration`
|
|
119
|
+
|
|
120
|
+
## Freshness and Use
|
|
121
|
+
|
|
122
|
+
- Locate the current source root using `YSS_SOURCE_ROOT_BOOT2_JAVA8`, CodeGraph, Maven artifact names or repository search.
|
|
123
|
+
- Compare each indexed `Component tree` with `git rev-parse HEAD:<component-path>` and require the current component subtree to be clean before exact guidance.
|
|
124
|
+
- Run `node ../yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs --skill <skill-id> --platform-line boot2-java8 --source-root <root>` from the canonical skill root before exact integration guidance.
|
|
125
|
+
- A repository commit difference alone is not stale when the component tree is unchanged; a component tree mismatch or component-local dirty state is stale.
|
|
126
|
+
- Read only the source entries needed for the current decision or troubleshooting path.
|