create-yss-spec 3.3.8 → 3.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +2 -2
- package/template/.agents/skills/.strategic-design-skills-manifest.json +3 -13
- package/template/.agents/skills/archify/SKILL.md +1 -1
- package/template/.agents/skills/code-review/SKILL.md +12 -8
- package/template/.agents/skills/file-export-download/SKILL.md +1 -1
- package/template/.agents/skills/frontend-commit/SKILL.md +1 -1
- package/template/.agents/skills/java-backend-commit/SKILL.md +1 -1
- package/template/.agents/skills/llm-wiki/SKILL.md +1 -6
- package/template/.agents/skills/lombok/SKILL.md +10 -336
- package/template/.agents/skills/lombok/references/annotation-examples.md +307 -0
- package/template/.agents/skills/maintaining-skills/SKILL.md +2 -1
- package/template/.agents/skills/maintaining-skills/references/authoring.md +27 -0
- package/template/.agents/skills/mapstruct/SKILL.md +11 -318
- package/template/.agents/skills/mapstruct/references/annotation-examples.md +300 -0
- package/template/.agents/skills/page-form-module/SKILL.md +1 -1
- package/template/.agents/skills/page-skeleton/SKILL.md +1 -1
- package/template/.agents/skills/theme-token-usage/SKILL.md +1 -1
- package/template/.agents/skills/to-tickets/SKILL.md +1 -1
- package/template/.agents/skills/using-git-worktrees/SKILL.md +1 -1
- package/template/.agents/skills/wayfinder/SKILL.md +1 -1
- package/template/.agents/skills/yedit-table-usage/SKILL.md +1 -1
- package/template/.agents/skills/yss-api-integration/SKILL.md +1 -1
- package/template/.agents/skills/yss-audit-log/SKILL.md +1 -1
- package/template/.agents/skills/yss-cache/SKILL.md +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +18 -5
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +15 -10
- package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +3 -3
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +4 -4
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +18 -5
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +5 -2
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +21 -17
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +4 -2
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -7
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +109 -13
- package/template/.agents/skills/yss-design-system/SKILL.md +19 -19
- package/template/.agents/skills/yss-design-system/references/data-quality-theme.md +13 -0
- package/template/.agents/skills/yss-design-system/references/design-qa-theme.md +3 -1
- package/template/.agents/skills/yss-design-system/references/design-system.md +7 -9
- package/template/.agents/skills/yss-distributed-id/SKILL.md +1 -1
- package/template/.agents/skills/yss-dto/SKILL.md +5 -1
- package/template/.agents/skills/yss-excel-mvc/SKILL.md +1 -1
- package/template/.agents/skills/yss-exception/SKILL.md +5 -1
- package/template/.agents/skills/yss-formily/SKILL.md +21 -258
- package/template/.agents/skills/yss-formily-schema-generator/SKILL.md +1 -1
- package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
- package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
- package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
- package/template/.agents/skills/yss-hook/SKILL.md +1 -1
- package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +14 -6
- package/template/.agents/skills/yss-implementation-contract-compiler/agents/openai.yaml +1 -1
- package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
- package/template/.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +29 -5
- package/template/.agents/skills/yss-implementation-contract-compiler/references/slice-implementation-contract-v2.md +214 -0
- package/template/.agents/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +66 -204
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +17 -4
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +38 -25
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +101 -13
- package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
- package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
- package/template/.agents/skills/yss-mybatis/SKILL.md +4 -0
- package/template/.agents/skills/yss-openapi-draft-review/SKILL.md +1 -1
- package/template/.agents/skills/yss-openapi-governance/SKILL.md +3 -1
- package/template/.agents/skills/yss-product-lifecycle/SKILL.md +4 -4
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +50 -17
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +6 -2
- package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +3 -1
- package/template/.agents/skills/yss-product-lifecycle/references/user-decisions.md +23 -3
- package/template/.agents/skills/yss-prototype-stage/SKILL.md +13 -9
- package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
- package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
- package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
- package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
- package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
- package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
- package/template/.agents/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
- package/template/.agents/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
- package/template/.agents/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
- package/template/.agents/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
- package/template/.agents/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
- package/template/.agents/skills/yss-prototype-stage/references/antd-integration.md +61 -0
- package/template/.agents/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
- package/template/.agents/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
- package/template/.agents/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
- package/template/.agents/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
- package/template/.agents/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
- package/template/.agents/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
- package/template/.agents/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
- package/template/.agents/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
- package/template/.agents/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
- package/template/.agents/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
- package/template/.agents/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
- package/template/.agents/skills/yss-repository/SKILL.md +4 -0
- package/template/.agents/skills/yss-research/SKILL.md +1 -1
- package/template/.agents/skills/yss-resilience4j/SKILL.md +1 -1
- package/template/.agents/skills/yss-security-algorithm/SKILL.md +1 -1
- package/template/.agents/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
- package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
- package/template/.agents/skills/yss-tactical-design/SKILL.md +5 -1
- package/template/.agents/skills/yss-technical-design/SKILL.md +4 -0
- package/template/.agents/skills/yss-technical-design/scripts/validate-technical-design.mjs +2 -2
- package/template/.agents/skills/yss-ui/SKILL.md +4 -3
- package/template/.agents/skills/yss-ui/references/component-routing.md +11 -10
- package/template/.agents/skills/yss-ui/references/specialized-components.md +52 -0
- package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +1 -1
- package/template/.agents/skills/yss-up-springboot3/SKILL.md +1 -1
- package/template/.agents/skills/yss-use-table-height/SKILL.md +1 -1
- package/template/.agents/skills/yss-use-tree-height/SKILL.md +1 -1
- package/template/.agents/skills/yss-userinfo/SKILL.md +1 -1
- package/template/.agents/skills/yss-validation/SKILL.md +5 -1
- package/template/.agents/skills/yss-web-controller/SKILL.md +5 -1
- package/template/.agents/skills/yss-web-controller/scripts/generate_controller.mjs +9 -5
- package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
- package/template/.agents/skills/ytable-usage/SKILL.md +1 -1
- package/template/.agents/skills/ytree-usage/SKILL.md +1 -1
- package/template/.codex/skills/archify/SKILL.md +1 -1
- package/template/.codex/skills/code-review/SKILL.md +12 -8
- package/template/.codex/skills/data-analytics/skills/analyze-data-quality/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/build-dashboard/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/build-report/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/design-kpis/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/gather-business-context/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/index/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/kpi-reporting/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/market-sizing/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/metric-diagnostics/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/product-business-analysis/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/spreadsheets/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/validate-data/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/visualize-data/SKILL.md +1 -1
- package/template/.codex/skills/file-export-download/SKILL.md +1 -1
- package/template/.codex/skills/frontend-commit/SKILL.md +1 -1
- package/template/.codex/skills/java-backend-commit/SKILL.md +1 -1
- package/template/.codex/skills/llm-wiki/SKILL.md +1 -6
- package/template/.codex/skills/lombok/SKILL.md +10 -336
- package/template/.codex/skills/lombok/references/annotation-examples.md +307 -0
- package/template/.codex/skills/maintaining-skills/SKILL.md +2 -1
- package/template/.codex/skills/maintaining-skills/references/authoring.md +27 -0
- package/template/.codex/skills/mapstruct/SKILL.md +11 -318
- package/template/.codex/skills/mapstruct/references/annotation-examples.md +300 -0
- package/template/.codex/skills/page-form-module/SKILL.md +1 -1
- package/template/.codex/skills/page-skeleton/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/audit/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/design-qa/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/get-context/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/ideate/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/image-to-code/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/index/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/prototype/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/research/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/user-context/SKILL.md +1 -1
- package/template/.codex/skills/theme-token-usage/SKILL.md +1 -1
- package/template/.codex/skills/to-tickets/SKILL.md +1 -1
- package/template/.codex/skills/using-git-worktrees/SKILL.md +1 -1
- package/template/.codex/skills/wayfinder/SKILL.md +1 -1
- package/template/.codex/skills/yedit-table-usage/SKILL.md +1 -1
- package/template/.codex/skills/yss-api-integration/SKILL.md +1 -1
- package/template/.codex/skills/yss-audit-log/SKILL.md +1 -1
- package/template/.codex/skills/yss-cache/SKILL.md +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +18 -5
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +15 -10
- package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +3 -3
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +4 -4
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +18 -5
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +5 -2
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +21 -17
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +4 -2
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -7
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +109 -13
- package/template/.codex/skills/yss-design-system/SKILL.md +19 -19
- package/template/.codex/skills/yss-design-system/references/data-quality-theme.md +13 -0
- package/template/.codex/skills/yss-design-system/references/design-qa-theme.md +3 -1
- package/template/.codex/skills/yss-design-system/references/design-system.md +7 -9
- package/template/.codex/skills/yss-distributed-id/SKILL.md +1 -1
- package/template/.codex/skills/yss-dto/SKILL.md +5 -1
- package/template/.codex/skills/yss-excel-mvc/SKILL.md +1 -1
- package/template/.codex/skills/yss-exception/SKILL.md +5 -1
- package/template/.codex/skills/yss-formily/SKILL.md +21 -258
- package/template/.codex/skills/yss-formily-schema-generator/SKILL.md +1 -1
- package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
- package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
- package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
- package/template/.codex/skills/yss-hook/SKILL.md +1 -1
- package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +14 -6
- package/template/.codex/skills/yss-implementation-contract-compiler/agents/openai.yaml +1 -1
- package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
- package/template/.codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +29 -5
- package/template/.codex/skills/yss-implementation-contract-compiler/references/slice-implementation-contract-v2.md +214 -0
- package/template/.codex/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +66 -204
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +17 -4
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +38 -25
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +101 -13
- package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
- package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
- package/template/.codex/skills/yss-mybatis/SKILL.md +4 -0
- package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +1 -1
- package/template/.codex/skills/yss-openapi-governance/SKILL.md +3 -1
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +4 -4
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +50 -17
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +6 -2
- package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +3 -1
- package/template/.codex/skills/yss-product-lifecycle/references/user-decisions.md +23 -3
- package/template/.codex/skills/yss-prototype-stage/SKILL.md +13 -9
- package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
- package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
- package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
- package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
- package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
- package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
- package/template/.codex/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
- package/template/.codex/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
- package/template/.codex/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
- package/template/.codex/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
- package/template/.codex/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
- package/template/.codex/skills/yss-prototype-stage/references/antd-integration.md +61 -0
- package/template/.codex/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
- package/template/.codex/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
- package/template/.codex/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
- package/template/.codex/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
- package/template/.codex/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
- package/template/.codex/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
- package/template/.codex/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
- package/template/.codex/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
- package/template/.codex/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
- package/template/.codex/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
- package/template/.codex/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
- package/template/.codex/skills/yss-repository/SKILL.md +4 -0
- package/template/.codex/skills/yss-research/SKILL.md +1 -1
- package/template/.codex/skills/yss-resilience4j/SKILL.md +1 -1
- package/template/.codex/skills/yss-security-algorithm/SKILL.md +1 -1
- package/template/.codex/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
- package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
- package/template/.codex/skills/yss-tactical-design/SKILL.md +5 -1
- package/template/.codex/skills/yss-technical-design/SKILL.md +4 -0
- package/template/.codex/skills/yss-technical-design/scripts/validate-technical-design.mjs +2 -2
- package/template/.codex/skills/yss-ui/SKILL.md +4 -3
- package/template/.codex/skills/yss-ui/references/component-routing.md +11 -10
- package/template/.codex/skills/yss-ui/references/specialized-components.md +52 -0
- package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +1 -1
- package/template/.codex/skills/yss-up-springboot3/SKILL.md +1 -1
- package/template/.codex/skills/yss-use-table-height/SKILL.md +1 -1
- package/template/.codex/skills/yss-use-tree-height/SKILL.md +1 -1
- package/template/.codex/skills/yss-userinfo/SKILL.md +1 -1
- package/template/.codex/skills/yss-validation/SKILL.md +5 -1
- package/template/.codex/skills/yss-web-controller/SKILL.md +5 -1
- package/template/.codex/skills/yss-web-controller/scripts/generate_controller.mjs +9 -5
- package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
- package/template/.codex/skills/ytable-usage/SKILL.md +1 -1
- package/template/.codex/skills/ytree-usage/SKILL.md +1 -1
- package/template/.cursor/skills/archify/SKILL.md +1 -1
- package/template/.cursor/skills/code-review/SKILL.md +12 -8
- package/template/.cursor/skills/file-export-download/SKILL.md +1 -1
- package/template/.cursor/skills/frontend-commit/SKILL.md +1 -1
- package/template/.cursor/skills/java-backend-commit/SKILL.md +1 -1
- package/template/.cursor/skills/llm-wiki/SKILL.md +1 -6
- package/template/.cursor/skills/lombok/SKILL.md +10 -336
- package/template/.cursor/skills/lombok/references/annotation-examples.md +307 -0
- package/template/.cursor/skills/maintaining-skills/SKILL.md +2 -1
- package/template/.cursor/skills/maintaining-skills/references/authoring.md +27 -0
- package/template/.cursor/skills/mapstruct/SKILL.md +11 -318
- package/template/.cursor/skills/mapstruct/references/annotation-examples.md +300 -0
- package/template/.cursor/skills/page-form-module/SKILL.md +1 -1
- package/template/.cursor/skills/page-skeleton/SKILL.md +1 -1
- package/template/.cursor/skills/theme-token-usage/SKILL.md +1 -1
- package/template/.cursor/skills/to-tickets/SKILL.md +1 -1
- package/template/.cursor/skills/using-git-worktrees/SKILL.md +1 -1
- package/template/.cursor/skills/wayfinder/SKILL.md +1 -1
- package/template/.cursor/skills/yedit-table-usage/SKILL.md +1 -1
- package/template/.cursor/skills/yss-api-integration/SKILL.md +1 -1
- package/template/.cursor/skills/yss-audit-log/SKILL.md +1 -1
- package/template/.cursor/skills/yss-cache/SKILL.md +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +18 -5
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +15 -10
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +3 -3
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +4 -4
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +18 -5
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +5 -2
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +21 -17
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +4 -2
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -7
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +109 -13
- package/template/.cursor/skills/yss-design-system/SKILL.md +19 -19
- package/template/.cursor/skills/yss-design-system/references/data-quality-theme.md +13 -0
- package/template/.cursor/skills/yss-design-system/references/design-qa-theme.md +3 -1
- package/template/.cursor/skills/yss-design-system/references/design-system.md +7 -9
- package/template/.cursor/skills/yss-distributed-id/SKILL.md +1 -1
- package/template/.cursor/skills/yss-dto/SKILL.md +5 -1
- package/template/.cursor/skills/yss-excel-mvc/SKILL.md +1 -1
- package/template/.cursor/skills/yss-exception/SKILL.md +5 -1
- package/template/.cursor/skills/yss-formily/SKILL.md +21 -258
- package/template/.cursor/skills/yss-formily-schema-generator/SKILL.md +1 -1
- package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
- package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
- package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
- package/template/.cursor/skills/yss-hook/SKILL.md +1 -1
- package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +14 -6
- package/template/.cursor/skills/yss-implementation-contract-compiler/agents/openai.yaml +1 -1
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +29 -5
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/slice-implementation-contract-v2.md +214 -0
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +66 -204
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +17 -4
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +38 -25
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +101 -13
- package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
- package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
- package/template/.cursor/skills/yss-mybatis/SKILL.md +4 -0
- package/template/.cursor/skills/yss-openapi-draft-review/SKILL.md +1 -1
- package/template/.cursor/skills/yss-openapi-governance/SKILL.md +3 -1
- package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +4 -4
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +50 -17
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +6 -2
- package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +3 -1
- package/template/.cursor/skills/yss-product-lifecycle/references/user-decisions.md +23 -3
- package/template/.cursor/skills/yss-prototype-stage/SKILL.md +13 -9
- package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
- package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
- package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
- package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
- package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
- package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
- package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
- package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
- package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
- package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
- package/template/.cursor/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
- package/template/.cursor/skills/yss-prototype-stage/references/antd-integration.md +61 -0
- package/template/.cursor/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
- package/template/.cursor/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
- package/template/.cursor/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
- package/template/.cursor/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
- package/template/.cursor/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
- package/template/.cursor/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
- package/template/.cursor/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
- package/template/.cursor/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
- package/template/.cursor/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
- package/template/.cursor/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
- package/template/.cursor/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
- package/template/.cursor/skills/yss-repository/SKILL.md +4 -0
- package/template/.cursor/skills/yss-research/SKILL.md +1 -1
- package/template/.cursor/skills/yss-resilience4j/SKILL.md +1 -1
- package/template/.cursor/skills/yss-security-algorithm/SKILL.md +1 -1
- package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
- package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
- package/template/.cursor/skills/yss-tactical-design/SKILL.md +5 -1
- package/template/.cursor/skills/yss-technical-design/SKILL.md +4 -0
- package/template/.cursor/skills/yss-technical-design/scripts/validate-technical-design.mjs +2 -2
- package/template/.cursor/skills/yss-ui/SKILL.md +4 -3
- package/template/.cursor/skills/yss-ui/references/component-routing.md +11 -10
- package/template/.cursor/skills/yss-ui/references/specialized-components.md +52 -0
- package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +1 -1
- package/template/.cursor/skills/yss-up-springboot3/SKILL.md +1 -1
- package/template/.cursor/skills/yss-use-table-height/SKILL.md +1 -1
- package/template/.cursor/skills/yss-use-tree-height/SKILL.md +1 -1
- package/template/.cursor/skills/yss-userinfo/SKILL.md +1 -1
- package/template/.cursor/skills/yss-validation/SKILL.md +5 -1
- package/template/.cursor/skills/yss-web-controller/SKILL.md +5 -1
- package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.mjs +9 -5
- package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
- package/template/.cursor/skills/ytable-usage/SKILL.md +1 -1
- package/template/.cursor/skills/ytree-usage/SKILL.md +1 -1
- package/template/.pi/skills/archify/SKILL.md +1 -1
- package/template/.pi/skills/code-review/SKILL.md +12 -8
- package/template/.pi/skills/file-export-download/SKILL.md +1 -1
- package/template/.pi/skills/frontend-commit/SKILL.md +1 -1
- package/template/.pi/skills/java-backend-commit/SKILL.md +1 -1
- package/template/.pi/skills/llm-wiki/SKILL.md +1 -6
- package/template/.pi/skills/lombok/SKILL.md +10 -336
- package/template/.pi/skills/lombok/references/annotation-examples.md +307 -0
- package/template/.pi/skills/maintaining-skills/SKILL.md +2 -1
- package/template/.pi/skills/maintaining-skills/references/authoring.md +27 -0
- package/template/.pi/skills/mapstruct/SKILL.md +11 -318
- package/template/.pi/skills/mapstruct/references/annotation-examples.md +300 -0
- package/template/.pi/skills/page-form-module/SKILL.md +1 -1
- package/template/.pi/skills/page-skeleton/SKILL.md +1 -1
- package/template/.pi/skills/theme-token-usage/SKILL.md +1 -1
- package/template/.pi/skills/to-tickets/SKILL.md +1 -1
- package/template/.pi/skills/using-git-worktrees/SKILL.md +1 -1
- package/template/.pi/skills/wayfinder/SKILL.md +1 -1
- package/template/.pi/skills/yedit-table-usage/SKILL.md +1 -1
- package/template/.pi/skills/yss-api-integration/SKILL.md +1 -1
- package/template/.pi/skills/yss-audit-log/SKILL.md +1 -1
- package/template/.pi/skills/yss-cache/SKILL.md +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +18 -5
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +15 -10
- package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +3 -3
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +4 -4
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +18 -5
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +5 -2
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +21 -17
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +4 -2
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -7
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +109 -13
- package/template/.pi/skills/yss-design-system/SKILL.md +19 -19
- package/template/.pi/skills/yss-design-system/references/data-quality-theme.md +13 -0
- package/template/.pi/skills/yss-design-system/references/design-qa-theme.md +3 -1
- package/template/.pi/skills/yss-design-system/references/design-system.md +7 -9
- package/template/.pi/skills/yss-distributed-id/SKILL.md +1 -1
- package/template/.pi/skills/yss-dto/SKILL.md +5 -1
- package/template/.pi/skills/yss-excel-mvc/SKILL.md +1 -1
- package/template/.pi/skills/yss-exception/SKILL.md +5 -1
- package/template/.pi/skills/yss-formily/SKILL.md +21 -258
- package/template/.pi/skills/yss-formily-schema-generator/SKILL.md +1 -1
- package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
- package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
- package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
- package/template/.pi/skills/yss-hook/SKILL.md +1 -1
- package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +14 -6
- package/template/.pi/skills/yss-implementation-contract-compiler/agents/openai.yaml +1 -1
- package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
- package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +29 -5
- package/template/.pi/skills/yss-implementation-contract-compiler/references/slice-implementation-contract-v2.md +214 -0
- package/template/.pi/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +66 -204
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +17 -4
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +38 -25
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +101 -13
- package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
- package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
- package/template/.pi/skills/yss-mybatis/SKILL.md +4 -0
- package/template/.pi/skills/yss-openapi-draft-review/SKILL.md +1 -1
- package/template/.pi/skills/yss-openapi-governance/SKILL.md +3 -1
- package/template/.pi/skills/yss-product-lifecycle/SKILL.md +4 -4
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +50 -17
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +6 -2
- package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +3 -1
- package/template/.pi/skills/yss-product-lifecycle/references/user-decisions.md +23 -3
- package/template/.pi/skills/yss-prototype-stage/SKILL.md +13 -9
- package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
- package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
- package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
- package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
- package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
- package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
- package/template/.pi/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
- package/template/.pi/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
- package/template/.pi/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
- package/template/.pi/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
- package/template/.pi/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
- package/template/.pi/skills/yss-prototype-stage/references/antd-integration.md +61 -0
- package/template/.pi/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
- package/template/.pi/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
- package/template/.pi/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
- package/template/.pi/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
- package/template/.pi/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
- package/template/.pi/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
- package/template/.pi/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
- package/template/.pi/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
- package/template/.pi/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
- package/template/.pi/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
- package/template/.pi/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
- package/template/.pi/skills/yss-repository/SKILL.md +4 -0
- package/template/.pi/skills/yss-research/SKILL.md +1 -1
- package/template/.pi/skills/yss-resilience4j/SKILL.md +1 -1
- package/template/.pi/skills/yss-security-algorithm/SKILL.md +1 -1
- package/template/.pi/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
- package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
- package/template/.pi/skills/yss-tactical-design/SKILL.md +5 -1
- package/template/.pi/skills/yss-technical-design/SKILL.md +4 -0
- package/template/.pi/skills/yss-technical-design/scripts/validate-technical-design.mjs +2 -2
- package/template/.pi/skills/yss-ui/SKILL.md +4 -3
- package/template/.pi/skills/yss-ui/references/component-routing.md +11 -10
- package/template/.pi/skills/yss-ui/references/specialized-components.md +52 -0
- package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +1 -1
- package/template/.pi/skills/yss-up-springboot3/SKILL.md +1 -1
- package/template/.pi/skills/yss-use-table-height/SKILL.md +1 -1
- package/template/.pi/skills/yss-use-tree-height/SKILL.md +1 -1
- package/template/.pi/skills/yss-userinfo/SKILL.md +1 -1
- package/template/.pi/skills/yss-validation/SKILL.md +5 -1
- package/template/.pi/skills/yss-web-controller/SKILL.md +5 -1
- package/template/.pi/skills/yss-web-controller/scripts/generate_controller.mjs +9 -5
- package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
- package/template/.pi/skills/ytable-usage/SKILL.md +1 -1
- package/template/.pi/skills/ytree-usage/SKILL.md +1 -1
- package/template/AGENTS.md +1 -0
- package/template/CONTEXT.md +3 -1
- package/template/DESIGN.md +31 -14
- package/template/__yss_dotfile__.gitignore +4 -0
- package/template/docs/agents/backend-architecture-profiles.md +1 -1
- package/template/docs/agents/digital-human-roles.yaml +29 -5
- package/template/docs/agents/issue-tracker.md +2 -0
- package/template/docs/agents/skill-migrations.md +15 -2
- package/template/docs/agents/yss-skill-registry.yaml +6 -40
- package/template/docs/design/README.md +4 -4
- package/template/docs/design/design-system-sync.yaml +2 -1
- package/template/docs/design/design.md +23 -31
- package/template/docs/design/preview-dark.html +3 -3
- package/template/docs/design/preview.css +1 -1
- package/template/docs/design/preview.html +2 -2
- package/template/docs/design/templates/interaction-spec-template.md +2 -2
- package/template/docs/design/templates/prototype-evidence-template.yaml +18 -22
- package/template/docs/design/templates/prototype-review-checklist.md +3 -1
- package/template/docs/design/templates/state-matrix-template.md +1 -1
- package/template/docs/design/templates/visual-baseline-template.yaml +3 -2
- package/template/docs/design/tokens/.design-md-projection.json +7 -7
- package/template/docs/design/tokens/theme.json +16 -10
- package/template/docs/design/tokens/tokens.compact.json +521 -237
- package/template/docs/design/tokens/tokens.dark.json +527 -240
- package/template/docs/design/tokens/tokens.default.json +513 -235
- package/template/docs/design/tokens/variables.css +67 -65
- package/template/docs/design/tokens/variables.dark.css +41 -41
- package/template/docs/engineering/backend-platforms.json +174 -0
- package/template/docs/engineering/backend-platforms.md +77 -0
- package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +1 -0
- package/template/docs/process/delivery-preflight.md +1 -1
- package/template/docs/process/frontend-backend-delivery.md +2 -1
- package/template/docs/process/harness-process-tailoring.md +9 -1
- package/template/docs/process/lifecycle-artifact-map.md +4 -4
- package/template/docs/process/lifecycle-registry-baseline.json +1 -1
- package/template/docs/process/lifecycle-registry.yaml +9 -9
- package/template/docs/process/schemas/api-contract-decision.schema.json +74 -0
- package/template/docs/process/schemas/backend-architecture-identity.schema.json +91 -0
- package/template/docs/process/schemas/data-architecture-decision.schema.json +34 -0
- package/template/docs/process/schemas/digital-human-task-package.schema.json +2 -1
- package/template/docs/process/schemas/implementation-repository-preparation-result.schema.json +80 -24
- package/template/docs/process/schemas/lifecycle-checkpoint.schema.json +4 -0
- package/template/docs/process/schemas/project-scaffold-contract.schema.json +666 -73
- package/template/docs/process/schemas/scaffold-architecture-decisions.schema.json +323 -39
- package/template/docs/process/schemas/slice-implementation-contract-v3.schema.json +925 -0
- package/template/docs/process/schemas/strategic-design-handoff.schema.json +296 -107
- package/template/docs/process/schemas/strategic-handoff-delivery-verification.schema.json +19 -0
- package/template/docs/process/schemas/strategic-handoff-delivery.schema.json +84 -0
- package/template/docs/process/schemas/strategic-handoff-import-receipt-v3.schema.json +42 -0
- package/template/docs/process/strategic-handoff-package.md +26 -9
- package/template/docs/templates/approval-record-template.yaml +2 -0
- package/template/docs/templates/vertical-slice-ticket-template.md +22 -31
- package/template/docs/user-guide//350/256/276/345/244/207/345/200/237/347/224/250/350/264/257/347/251/277/346/241/210/344/276/213.md +1 -1
- package/template/scripts/audit-legacy-backend-scaffold +29 -0
- package/template/scripts/backend-platforms +14 -0
- package/template/scripts/lib/api-contract-decision.mjs +49 -0
- package/template/scripts/lib/api-contract-decision.test.mjs +69 -0
- package/template/scripts/lib/approval-record.mjs +32 -6
- package/template/scripts/lib/approved-execution-context.mjs +31 -8
- package/template/scripts/lib/backend-architecture.mjs +6 -0
- package/template/scripts/lib/backend-platform-provenance.mjs +67 -0
- package/template/scripts/lib/backend-platform-verification.mjs +210 -0
- package/template/scripts/lib/backend-platform.mjs +175 -0
- package/template/scripts/lib/backend-scaffold-prerequisites.mjs +123 -0
- package/template/scripts/lib/decision-continuation.mjs +79 -0
- package/template/scripts/lib/delivery-preflight.mjs +6 -5
- package/template/scripts/lib/digital-human-roles.mjs +10 -0
- package/template/scripts/lib/frontend-delivery-boundary.mjs +3 -0
- package/template/scripts/lib/implementation-contract-compiler.mjs +42 -9
- package/template/scripts/lib/legacy-backend-scaffold-audit.mjs +87 -0
- package/template/scripts/lib/legacy-backend-scaffold-audit.test.mjs +64 -0
- package/template/scripts/lib/lifecycle-controls.mjs +2 -2
- package/template/scripts/lib/lifecycle-transition.mjs +155 -5
- package/template/scripts/lib/openapi-draft-validation.mjs +111 -0
- package/template/scripts/lib/plan-spec-entry.mjs +3 -3
- package/template/scripts/lib/scaffold-local-database.mjs +1 -0
- package/template/scripts/lib/skill-registry.mjs +17 -3
- package/template/scripts/lib/skill-supply-chain.mjs +12 -1
- package/template/scripts/lib/slice-applicability.mjs +10 -0
- package/template/scripts/lib/slice-contract-preparation.mjs +257 -0
- package/template/scripts/lib/slice-contract-views.mjs +52 -0
- package/template/scripts/lib/slice-contract.mjs +211 -0
- package/template/scripts/lib/slice-repositories.mjs +49 -0
- package/template/scripts/lib/slice-task-package.mjs +66 -0
- package/template/scripts/lib/strategic-feedback.mjs +2 -2
- package/template/scripts/lib/strategic-handoff-consumption.mjs +2 -2
- package/template/scripts/lib/strategic-handoff.mjs +89 -4
- package/template/scripts/lib/task-package.mjs +6 -2
- package/template/scripts/lib/technical-design-boundary.mjs +1 -0
- package/template/scripts/lib/user-decision-reuse.mjs +1 -0
- package/template/scripts/lib/user-decision.mjs +4 -1
- package/template/scripts/preflight-delivery +2 -2
- package/template/scripts/slice-contract +30 -0
- package/template/scripts/strategic-handoff +6 -4
- package/template/scripts/verify-backend-platform-matrix +69 -0
- package/template/scripts/verify-openapi-draft-validation-record +10 -129
- package/template/scripts/verify-scaffold-architecture-decisions +5 -0
- package/template/scripts/verify-strategic-context-import +12 -14
- package/template/scripts/verify-user-decision +7 -2
- package/template/skills-lock.json +67 -117
- package/template/yss-public-skills.json +0 -6
- package/template.snapshot.json +8 -4
- package/template/.agents/skills/yss-antd-design/SKILL.md +0 -35
- package/template/.agents/skills/yss-antd-design/references/boundaries.md +0 -30
- package/template/.agents/skills/yss-antd-design/references/cli-matrix.md +0 -38
- package/template/.agents/skills/yss-antd-design/references/evidence.md +0 -35
- package/template/.agents/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
- package/template/.agents/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
- package/template/.agents/skills/yss-antdv-next-design/SKILL.md +0 -48
- package/template/.agents/skills/yss-antdv-next-design/references/boundaries.md +0 -25
- package/template/.agents/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
- package/template/.agents/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
- package/template/.agents/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
- package/template/.agents/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
- package/template/.agents/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
- package/template/.agents/skills/yss-components/SKILL.md +0 -386
- package/template/.agents/skills/yss-components/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-components/references/frontend-docs.md +0 -9
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
- package/template/.agents/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
- package/template/.agents/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
- package/template/.agents/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
- package/template/.agents/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
- package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
- package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
- package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
- package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
- package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
- package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
- package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
- package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
- package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
- package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
- package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
- package/template/.codex/skills/yss-antd-design/SKILL.md +0 -35
- package/template/.codex/skills/yss-antd-design/references/boundaries.md +0 -30
- package/template/.codex/skills/yss-antd-design/references/cli-matrix.md +0 -38
- package/template/.codex/skills/yss-antd-design/references/evidence.md +0 -35
- package/template/.codex/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
- package/template/.codex/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
- package/template/.codex/skills/yss-antdv-next-design/SKILL.md +0 -48
- package/template/.codex/skills/yss-antdv-next-design/references/boundaries.md +0 -25
- package/template/.codex/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
- package/template/.codex/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
- package/template/.codex/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
- package/template/.codex/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
- package/template/.codex/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
- package/template/.codex/skills/yss-components/SKILL.md +0 -386
- package/template/.codex/skills/yss-components/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-components/references/frontend-docs.md +0 -9
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
- package/template/.codex/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
- package/template/.codex/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
- package/template/.codex/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
- package/template/.codex/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
- package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
- package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
- package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
- package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
- package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
- package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
- package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
- package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
- package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
- package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
- package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
- package/template/.cursor/skills/yss-antd-design/SKILL.md +0 -35
- package/template/.cursor/skills/yss-antd-design/references/boundaries.md +0 -30
- package/template/.cursor/skills/yss-antd-design/references/cli-matrix.md +0 -38
- package/template/.cursor/skills/yss-antd-design/references/evidence.md +0 -35
- package/template/.cursor/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
- package/template/.cursor/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
- package/template/.cursor/skills/yss-antdv-next-design/SKILL.md +0 -48
- package/template/.cursor/skills/yss-antdv-next-design/references/boundaries.md +0 -25
- package/template/.cursor/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
- package/template/.cursor/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
- package/template/.cursor/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
- package/template/.cursor/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
- package/template/.cursor/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
- package/template/.cursor/skills/yss-components/SKILL.md +0 -386
- package/template/.cursor/skills/yss-components/agents/openai.yaml +0 -5
- package/template/.cursor/skills/yss-components/references/frontend-docs.md +0 -9
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
- package/template/.cursor/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
- package/template/.cursor/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
- package/template/.cursor/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
- package/template/.cursor/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
- package/template/.cursor/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
- package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
- package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
- package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
- package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
- package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
- package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
- package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
- package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
- package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
- package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
- package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
- package/template/.pi/skills/yss-antd-design/SKILL.md +0 -35
- package/template/.pi/skills/yss-antd-design/references/boundaries.md +0 -30
- package/template/.pi/skills/yss-antd-design/references/cli-matrix.md +0 -38
- package/template/.pi/skills/yss-antd-design/references/evidence.md +0 -35
- package/template/.pi/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
- package/template/.pi/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
- package/template/.pi/skills/yss-antdv-next-design/SKILL.md +0 -48
- package/template/.pi/skills/yss-antdv-next-design/references/boundaries.md +0 -25
- package/template/.pi/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
- package/template/.pi/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
- package/template/.pi/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
- package/template/.pi/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
- package/template/.pi/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
- package/template/.pi/skills/yss-components/SKILL.md +0 -386
- package/template/.pi/skills/yss-components/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-components/references/frontend-docs.md +0 -9
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
- package/template/.pi/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
- package/template/.pi/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
- package/template/.pi/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
- package/template/.pi/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
- package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
- package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
- package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
- package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
- package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
- package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
- package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
- package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
- package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
- package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
- package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
2
|
+
/** 依据生命周期批准的 schema v4 合同生成纯机械 YSS 分层 MVC 后端骨架。 */
|
|
3
|
+
import { platformSourceFingerprint, generatedTreeDigest } from "../../../../scripts/lib/backend-platform-provenance.mjs";
|
|
4
|
+
import { assertContractPlatform, platformProfile, platformTemplateVars, platformSmokeTest } from "../../../../scripts/lib/backend-platform.mjs";
|
|
3
5
|
import { assertScaffoldUserDecision } from "../../../../scripts/lib/user-decision.mjs";
|
|
6
|
+
import { validateBackendScaffoldPrerequisites } from "../../../../scripts/lib/backend-scaffold-prerequisites.mjs";
|
|
4
7
|
import { createHash } from "node:crypto";
|
|
5
8
|
import { chmod, cp, lstat, mkdir, mkdtemp, readFile, readdir, rename, rm, writeFile } from "node:fs/promises";
|
|
6
9
|
import path from "node:path";
|
|
@@ -105,60 +108,63 @@ function dependency(groupId, artifactId, version = null, scope = null) {
|
|
|
105
108
|
return `<dependency><groupId>${xml(groupId)}</groupId><artifactId>${xml(artifactId)}</artifactId>${version ? `<version>${xml(version)}</version>` : ""}${scope ? `<scope>${scope}</scope>` : ""}</dependency>`;
|
|
106
109
|
}
|
|
107
110
|
|
|
108
|
-
function parentPom(contract, modules) {
|
|
111
|
+
function parentPom(contract, modules, platform) {
|
|
112
|
+
const v = platformTemplateVars(platform);
|
|
109
113
|
const c = contract.maven_coordinates;
|
|
110
114
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
111
115
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
112
116
|
<modelVersion>4.0.0</modelVersion>
|
|
113
117
|
<parent><groupId>${xml(c.parent.group_id)}</groupId><artifactId>${xml(c.parent.artifact_id)}</artifactId><version>${xml(c.parent.version)}</version><relativePath/></parent>
|
|
114
118
|
<groupId>${xml(c.group_id)}</groupId><artifactId>${xml(contract.project_name)}</artifactId><version>${xml(c.project_version)}</version><packaging>pom</packaging>
|
|
115
|
-
<properties><java.version
|
|
119
|
+
<properties><java.version>${v.java_version}</java.version><spring-boot.version>${v.boot_version}</spring-boot.version><maven.compiler.source>${v.java_version}</maven.compiler.source><maven.compiler.target>${v.java_version}</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><yss-components.version>${xml(c.yss_components_version)}</yss-components.version></properties>
|
|
116
120
|
<modules>${modules.map((module) => `<module>${contract.project_name}-${module}</module>`).join("")}</modules>
|
|
117
|
-
<dependencyManagement><dependencies>${dependency("com.yss.cloud", "yss-components-bom", "${yss-components.version}", "import").replace("</dependency>", "<type>pom</type></dependency>")}</dependencies></dependencyManagement>
|
|
118
|
-
<build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-
|
|
121
|
+
<dependencyManagement><dependencies>${dependency("org.springframework.boot", "spring-boot-dependencies", v.boot_version, "import").replace("</dependency>", "<type>pom</type></dependency>")}${dependency("com.yss.cloud", "yss-components-bom", "${yss-components.version}", "import").replace("</dependency>", "<type>pom</type></dependency>")}</dependencies></dependencyManagement>
|
|
122
|
+
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-enforcer-plugin</artifactId><version>${v.enforcer_version}</version><executions><execution><id>enforce-platform</id><goals><goal>enforce</goal></goals><configuration><rules><requireJavaVersion><version>${v.java_range}</version></requireJavaVersion><requireMavenVersion><version>[3.6.3,)</version></requireMavenVersion><dependencyConvergence/></rules></configuration></execution></executions></plugin></plugins><pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${v.boot_version}</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>${v.surefire_version}</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${v.compiler_version}</version><configuration><source>${v.java_version}</source><target>${v.java_version}</target><parameters>true</parameters><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${v.lombok_version}</version></path><path><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${v.mapstruct_version}</version></path><path><groupId>org.projectlombok</groupId><artifactId>lombok-mapstruct-binding</artifactId><version>0.2.0</version></path></annotationProcessorPaths></configuration></plugin></plugins></pluginManagement></build>
|
|
119
123
|
</project>`;
|
|
120
124
|
}
|
|
121
125
|
|
|
122
|
-
function modulePom(contract, module, modules) {
|
|
126
|
+
function modulePom(contract, module, modules, platform) {
|
|
123
127
|
const applicationModule = modules.includes("core") ? "core" : "service";
|
|
124
128
|
const own = (name) => dependency(contract.maven_coordinates.group_id, `${contract.project_name}-${name}`, "${project.version}");
|
|
125
129
|
const dependencies = [];
|
|
126
130
|
if (module === "server") {
|
|
127
|
-
dependencies.push(own(applicationModule), dependency("org.springframework.boot",
|
|
131
|
+
dependencies.push(own(applicationModule), dependency("org.springframework.boot", platform.web_starter), dependency("org.springframework.boot", "spring-boot-starter-validation"), dependency("org.springframework.boot", "spring-boot-starter-test", null, "test"), dependency("com.tngtech.archunit", "archunit-junit5", platform.versions.archunit, "test"));
|
|
132
|
+
if (platform.web_test_starter !== "spring-boot-starter-test") dependencies.push(dependency("org.springframework.boot", platform.web_test_starter, null, "test"));
|
|
128
133
|
if (modules.includes("client")) dependencies.push(own("client"));
|
|
129
|
-
dependencies.push(dependency("com.h2database", "h2", null, "test"), dependency("org.mapstruct", "mapstruct",
|
|
134
|
+
dependencies.push(dependency("com.h2database", "h2", null, "test"), dependency("org.mapstruct", "mapstruct", platform.versions.mapstruct), dependency("com.yss.cloud", "yss-component-dto"));
|
|
130
135
|
}
|
|
131
136
|
if (module === applicationModule) {
|
|
132
137
|
dependencies.push(own("repository"), dependency("org.springframework", "spring-tx"), dependency("com.yss.cloud", "yss-component-dto"), dependency("org.springframework.boot", "spring-boot-starter-test", null, "test"));
|
|
133
138
|
if (modules.includes("adapter")) dependencies.push(own("adapter"));
|
|
134
139
|
}
|
|
135
140
|
if (module === "repository") {
|
|
136
|
-
dependencies.push(dependency("com.yss.cloud", "yss-component-mybatis-plus-starter"), dependency("org.mapstruct", "mapstruct",
|
|
141
|
+
dependencies.push(dependency("com.yss.cloud", "yss-component-mybatis-plus-starter"), dependency("org.mapstruct", "mapstruct", platform.versions.mapstruct), dependency("org.springframework.boot", "spring-boot-starter-test", null, "test"), dependency("com.h2database", "h2", null, "test"));
|
|
137
142
|
}
|
|
138
143
|
if (module === "adapter") {
|
|
139
144
|
dependencies.push(dependency("org.springframework", "spring-context"));
|
|
140
145
|
if (modules.includes("feign-client")) dependencies.push(own("feign-client"));
|
|
141
146
|
}
|
|
142
|
-
if (module === "client") dependencies.push(dependency("com.yss.cloud", "yss-component-dto"), dependency(
|
|
143
|
-
if (["server", "service", "core", "client", "repository"].includes(module)) dependencies.push(dependency("org.projectlombok", "lombok",
|
|
144
|
-
if (module === "feign-client") dependencies.push(own("client"), dependency("org.springframework.cloud", "spring-cloud-openfeign-core"));
|
|
147
|
+
if (module === "client") dependencies.push(dependency("com.yss.cloud", "yss-component-dto"), dependency(platform.validation_group, platform.validation_artifact));
|
|
148
|
+
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.generator_skill === SKILL_ID ? "spring-cloud-starter-openfeign" : "spring-cloud-openfeign-core"));
|
|
145
150
|
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>` : "";
|
|
146
151
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
147
152
|
<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>`;
|
|
148
153
|
}
|
|
149
154
|
|
|
150
|
-
async function validateContract(options, skillId, architectureProfile) {
|
|
155
|
+
export async function validateContract(options, skillId, architectureProfile, platformOptions) {
|
|
151
156
|
const contractFile = path.resolve(options.contractFile);
|
|
152
157
|
const contractText = await readFile(contractFile, "utf8").catch(() => fail(`脚手架合同不可读取: ${contractFile}`));
|
|
153
158
|
let contract;
|
|
154
159
|
try { contract = JSON.parse(contractText); } catch { fail("脚手架合同必须是 JSON 对象"); }
|
|
155
|
-
if (
|
|
156
|
-
|
|
157
|
-
if (contract.
|
|
160
|
+
if (contract.schema_version !== 4) fail(`unsupported: 新生成只接受 scaffold contract v4,收到 v${contract.schema_version}`);
|
|
161
|
+
const expectedScaffoldKind = architectureProfile === "mvc-data-analysis-v1" ? "backend-mvc-data-analysis" : "backend-layered-mvc";
|
|
162
|
+
if (contract.kind !== "project-scaffold-contract" || contract.delivery_role !== "backend" || contract.scaffold_kind !== expectedScaffoldKind) fail(`schema v4 合同必须绑定 backend/${expectedScaffoldKind}`);
|
|
163
|
+
validateJsonSchema(contract, path.join(REPOSITORY_ROOT, "docs/process/schemas/project-scaffold-contract.schema.json"), { label: "Project Scaffold Contract v4" });
|
|
158
164
|
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"];
|
|
159
165
|
const missing = required.filter((field) => !isPresent(contract[field]));
|
|
160
166
|
if (missing.length) fail(`脚手架合同缺少字段: ${missing.join(", ")}`);
|
|
161
|
-
if (contract.status !== "approved" ||
|
|
167
|
+
if (contract.status !== "approved" || contract.current_version !== true) fail("脚手架合同必须已批准且为当前版本");
|
|
162
168
|
if (contract.contract_id !== options.contractId || contract.contract_version !== options.contractVersion || contract.compiler_draft_ref !== options.compilerDraftRef || contract.lifecycle_approval_ref !== options.approvalRef || contract.persisted_ref !== options.persistedRef) fail("命令行合同元数据与批准合同不一致");
|
|
163
169
|
if (contract.scaffold_status !== "required" || contract.architecture_family !== "layered-mvc" || contract.generator_skill !== skillId) fail("合同必须绑定 layered-mvc 与本生成器");
|
|
164
170
|
if (contract.project_name !== options.projectName || contract.base_package !== options.basePackage || path.resolve(contract.target_output_dir) !== path.resolve(options.outputDir)) fail("项目身份或输出目录与合同不一致");
|
|
@@ -166,7 +172,7 @@ async function validateContract(options, skillId, architectureProfile) {
|
|
|
166
172
|
const finalProjectRoot = path.join(path.resolve(options.outputDir), options.projectName);
|
|
167
173
|
const allowedRoots = contract.allowed_write_paths.map((item) => path.resolve(options.outputDir, String(item)));
|
|
168
174
|
if (!allowedRoots.some((root) => isWithin(root, finalProjectRoot))) fail("实际项目根不在合同 allowed_write_paths 内");
|
|
169
|
-
const expectedProfiles = { architecture: "layered-mvc", persistence: "mybatis-plus",
|
|
175
|
+
const expectedProfiles = { architecture: "layered-mvc", persistence: "mybatis-plus", repository: "yss-internal" };
|
|
170
176
|
for (const [field, value] of Object.entries(expectedProfiles)) if (contract.profiles?.[field] !== value) fail(`unsupported profile ${field}: ${contract.profiles?.[field]}`);
|
|
171
177
|
assertLocalDatabaseProfile(contract.profiles);
|
|
172
178
|
if (contract.architecture_profile !== architectureProfile) fail(`合同必须显式绑定 ${architectureProfile} Profile`);
|
|
@@ -202,7 +208,10 @@ async function validateContract(options, skillId, architectureProfile) {
|
|
|
202
208
|
if (!decision.user_confirmation || Object.values(decision.user_confirmation).some((value) => !isPresent(value))) fail("架构决策缺少完整用户确认记录");
|
|
203
209
|
assertScaffoldUserDecision(decision);
|
|
204
210
|
validateArchitectureIdentity(scaffoldArchitectureIdentity(contract, sha256(contractText)));
|
|
205
|
-
|
|
211
|
+
const designPrerequisites = await validateBackendScaffoldPrerequisites(contract, { contractFile });
|
|
212
|
+
const platform = skillId === SKILL_ID ? assertContractPlatform(contract, decision, { ...platformOptions, requireVerified: platformOptions.candidate !== true }).profile : platformProfile("spring-boot-2.7-jdk8", undefined, "2.7.18");
|
|
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");
|
|
214
|
+
return { contract, contractText, modules: resolved, designPrerequisites, platform };
|
|
206
215
|
}
|
|
207
216
|
|
|
208
217
|
async function validateOutputLayout(outputDir, projectName) {
|
|
@@ -218,10 +227,10 @@ async function validateOutputLayout(outputDir, projectName) {
|
|
|
218
227
|
if (await exists(target)) fail(`unsupported: 目标已存在 ${target}`);
|
|
219
228
|
}
|
|
220
229
|
|
|
221
|
-
export async function generate(options, { skillId = SKILL_ID, architectureProfile = "layered-mvc-service", finalize } = {}) {
|
|
230
|
+
export async function generate(options, { skillId = SKILL_ID, architectureProfile = "layered-mvc-service", finalize, platformOptions = {} } = {}) {
|
|
222
231
|
if (!((skillId === SKILL_ID && architectureProfile === "layered-mvc-service") || (skillId === "yss-mvc-data-analysis-project-initializer" && architectureProfile === "mvc-data-analysis-v1"))) fail("unsupported MVC generator/Profile pair");
|
|
223
232
|
await validateOutputLayout(options.outputDir, options.projectName);
|
|
224
|
-
const { contract, contractText, modules } = await validateContract(options, skillId, architectureProfile);
|
|
233
|
+
const { contract, contractText, modules, designPrerequisites, platform } = await validateContract(options, skillId, architectureProfile, platformOptions);
|
|
225
234
|
const outputDir = path.resolve(options.outputDir);
|
|
226
235
|
await mkdir(outputDir, { recursive: true });
|
|
227
236
|
const staging = await mkdtemp(path.join(outputDir, `.${options.projectName}.staging-`));
|
|
@@ -229,10 +238,10 @@ export async function generate(options, { skillId = SKILL_ID, architectureProfil
|
|
|
229
238
|
const packagePath = options.basePackage.replaceAll(".", "/");
|
|
230
239
|
try {
|
|
231
240
|
await mkdir(projectRoot, { recursive: true });
|
|
232
|
-
await put(projectRoot, "pom.xml", parentPom(contract, modules));
|
|
241
|
+
await put(projectRoot, "pom.xml", parentPom(contract, modules, platform));
|
|
233
242
|
for (const module of modules) {
|
|
234
243
|
const moduleRoot = `${options.projectName}-${module}`;
|
|
235
|
-
await put(projectRoot, `${moduleRoot}/pom.xml`, modulePom(contract, module, modules));
|
|
244
|
+
await put(projectRoot, `${moduleRoot}/pom.xml`, modulePom(contract, module, modules, platform));
|
|
236
245
|
await put(projectRoot, `${moduleRoot}/src/main/java/${packagePath}/${module.replaceAll("-", "/")}/package-info.java`, `/** ${module} mechanical package boundary. */\npackage ${options.basePackage}.${module.replaceAll("-", ".")};`);
|
|
237
246
|
}
|
|
238
247
|
const applicationClass = `${toUpperCamel(options.projectName)}Application`;
|
|
@@ -243,18 +252,21 @@ export async function generate(options, { skillId = SKILL_ID, architectureProfil
|
|
|
243
252
|
await put(projectRoot, `${serverRoot}/src/test/resources/application-scaffold-test.yml`, localDatabaseConfiguration(`${options.projectName}_test`));
|
|
244
253
|
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}`);
|
|
245
254
|
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
|
+
if (skillId === SKILL_ID) await put(projectRoot, `${serverRoot}/src/test/java/${packagePath}/PlatformIntegrationTest.java`, platformSmokeTest(options.basePackage, platform, contract.module_profile.requested_capabilities));
|
|
246
256
|
const wrapper = path.join(REPOSITORY_ROOT, ".agents/skills/yss-ddd-scaffold-generator/assets/wrapper");
|
|
247
257
|
await cp(wrapper, projectRoot, { recursive: true });
|
|
248
258
|
await chmod(path.join(projectRoot, "mvnw"), 0o755);
|
|
249
259
|
if (finalize) await finalize({ projectRoot, contract, architectureIdentity: scaffoldArchitectureIdentity(contract, sha256(contractText)) });
|
|
250
|
-
await put(projectRoot, "README.md", `# ${options.projectName}\n\n该工程由 ${skillId} 根据批准的 schema v${contract.schema_version} 合同生成。模块:${modules.join("、")}。不包含业务 API、SQL 或生产数据库绑定。\n\n本地运行需同时显式启用 Maven -Pscaffold-local 和 Spring scaffold-local Profile;测试独立使用 H2。生产数据库须由后续已批准存储工作单元接入。`);
|
|
260
|
+
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。生产数据库须由后续已批准存储工作单元接入。`);
|
|
251
261
|
const generatedFiles = [];
|
|
252
262
|
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)) });
|
|
253
263
|
const architectureRuleset = `${serverRoot}/src/test/java/${packagePath}/architecture/LayeredMvcArchitectureTest.java`;
|
|
254
264
|
const downstream = {};
|
|
255
265
|
for (const skill of ["yss-application", "yss-repository", "yss-mybatis", "yss-web-controller", "yss-dto", "yss-exception", "yss-validation", "mapstruct", "lombok", "alibaba-java-code-style"]) downstream[skill] = (await treeDigest(path.join(REPOSITORY_ROOT, ".agents/skills", skill))).replace(/^sha256:/, "");
|
|
256
266
|
const manifest = {
|
|
257
|
-
|
|
267
|
+
...(contract.platform_configuration ? { source_fingerprint: platformSourceFingerprint(contract.architecture_family), generated_tree_digest: generatedTreeDigest(projectRoot, { ownership: { generated_files: generatedFiles } }) } : {}),
|
|
268
|
+
...(contract.platform_configuration ? { platform_verification: platformOptions.candidate === true ? "candidate" : "verified", platform_configuration: contract.platform_configuration } : {}),
|
|
269
|
+
schema_version: 4,
|
|
258
270
|
kind: architectureProfile === "mvc-data-analysis-v1" ? "service-project-initialization" : "backend-scaffold",
|
|
259
271
|
architecture_profile: contract.architecture_profile,
|
|
260
272
|
architecture_identity: scaffoldArchitectureIdentity(contract, sha256(contractText)),
|
|
@@ -274,6 +286,7 @@ export async function generate(options, { skillId = SKILL_ID, architectureProfil
|
|
|
274
286
|
compiler_draft_ref: contract.compiler_draft_ref,
|
|
275
287
|
persisted_ref: contract.persisted_ref,
|
|
276
288
|
current_version: contract.current_version,
|
|
289
|
+
design_prerequisites: designPrerequisites,
|
|
277
290
|
allowed_write_paths: contract.allowed_write_paths,
|
|
278
291
|
expected_evidence_files: contract.expected_evidence_files,
|
|
279
292
|
profiles: contract.profiles,
|
package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs
CHANGED
|
@@ -7,6 +7,7 @@ import os from "node:os";
|
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import test from "node:test";
|
|
9
9
|
import { fileURLToPath } from "node:url";
|
|
10
|
+
import { attachDesignPrerequisites } from "../../../../scripts/fixtures/backend-scaffold/design-prerequisites.mjs";
|
|
10
11
|
|
|
11
12
|
const script = path.join(path.dirname(fileURLToPath(import.meta.url)), "generate_scaffold.mjs");
|
|
12
13
|
const digest = (value) => `sha256:${createHash("sha256").update(value).digest("hex")}`;
|
|
@@ -18,7 +19,7 @@ const capabilityModules = {
|
|
|
18
19
|
combined: { capabilities: ["external-integration", "feign-client"], modules: ["server", "service", "repository", "adapter", "client", "feign-client"] }
|
|
19
20
|
};
|
|
20
21
|
|
|
21
|
-
async function fixture(t, { profile = capabilityModules.basic, architectureProfile = "layered-mvc-service", skillId = "yss-layered-mvc-scaffold-generator", schemaVersion =
|
|
22
|
+
async function fixture(t, { profile = capabilityModules.basic, architectureProfile = "layered-mvc-service", skillId = "yss-layered-mvc-scaffold-generator", schemaVersion = 4, dataImpact = "not-applicable", apiImpact = "not-applicable" } = {}) {
|
|
22
23
|
const root = await mkdtemp(path.join(os.tmpdir(), "yss-layered-mvc-"));
|
|
23
24
|
t.after(() => rm(root, { recursive: true, force: true }));
|
|
24
25
|
const output = path.join(root, "backend");
|
|
@@ -33,7 +34,7 @@ async function fixture(t, { profile = capabilityModules.basic, architectureProfi
|
|
|
33
34
|
schema_version: schemaVersion,
|
|
34
35
|
kind: "project-scaffold-contract",
|
|
35
36
|
delivery_role: "backend",
|
|
36
|
-
scaffold_kind: "backend-layered-mvc",
|
|
37
|
+
scaffold_kind: architectureProfile === "mvc-data-analysis-v1" ? "backend-mvc-data-analysis" : "backend-layered-mvc",
|
|
37
38
|
repository_scope: "external-repository",
|
|
38
39
|
init_git: false,
|
|
39
40
|
contract_id: "scaffold.demo-service.v1",
|
|
@@ -43,7 +44,7 @@ async function fixture(t, { profile = capabilityModules.basic, architectureProfi
|
|
|
43
44
|
compiler_draft_ref: "compiler://demo/1",
|
|
44
45
|
lifecycle_approval_ref: "approval://demo/1",
|
|
45
46
|
persisted_ref: "contract://demo/1",
|
|
46
|
-
current_version: 1,
|
|
47
|
+
current_version: schemaVersion === 4 ? true : 1,
|
|
47
48
|
implementation_repository: "external",
|
|
48
49
|
backend_repository: "external",
|
|
49
50
|
scaffold_status: "required",
|
|
@@ -65,10 +66,11 @@ async function fixture(t, { profile = capabilityModules.basic, architectureProfi
|
|
|
65
66
|
work_unit: { id: "scaffold.demo", behavior: "project-scaffold", primary_skill: skillId, supporting_skills: ["yss-implementation-contract-compiler"], tdd_mode: "controlled-generation", allowed_write_paths: ["."], expected_evidence: [".yss/scaffold-generation.json"], verification_commands: ["./mvnw validate", "./mvnw test", "./mvnw package"], controlled_generation: true },
|
|
66
67
|
generation_policy: { mode: "initialize-only", existing_target: "unsupported", old_project_migration: "unsupported", template_upgrade: "unsupported" }
|
|
67
68
|
};
|
|
69
|
+
const design = attachDesignPrerequisites(root, contract, { dataImpact, apiImpact });
|
|
68
70
|
const contractFile = path.join(root, "contract.json");
|
|
69
71
|
await writeFile(contractFile, `${JSON.stringify(contract, null, 2)}\n`);
|
|
70
72
|
const args = ["--project-name", "demo-service", "--base-package", "com.yss.demo", "--output-dir", output, "--contract-file", contractFile, "--contract-id", contract.contract_id, "--contract-version", "1", "--approval-ref", contract.lifecycle_approval_ref, "--compiler-draft-ref", contract.compiler_draft_ref, "--persisted-ref", contract.persisted_ref, "--group-id", "com.yss.demo", "--project-version", "1.0.0-SNAPSHOT", "--parent-group-id", "com.yss.cloud", "--parent-artifact-id", "yss-cloud-microservice", "--parent-version", "2.0.0-SNAPSHOT", "--yss-components-version", "2.0.0-SNAPSHOT"];
|
|
71
|
-
return { root, output, decisionFile, contractFile, contract, args, project: path.join(output, "demo-service") };
|
|
73
|
+
return { root, output, decisionFile, contractFile, contract, design, args, project: path.join(output, "demo-service") };
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
test("数据分析初始化生成 H2 六模块和独立治理信封", async (t) => {
|
|
@@ -102,19 +104,105 @@ test("旧数据库和 Mock 参数在写入前被拒绝", async (t) => {
|
|
|
102
104
|
}
|
|
103
105
|
});
|
|
104
106
|
|
|
105
|
-
test("统一 Project Scaffold Contract v4 可生成 Layered MVC
|
|
106
|
-
const data = await fixture(t
|
|
107
|
-
|
|
108
|
-
await writeFile(data.contractFile, JSON.stringify(data.contract));
|
|
109
|
-
const result = spawnSync(process.execPath, [script, ...data.args], { encoding: "utf8" });
|
|
107
|
+
test("统一 Project Scaffold Contract v4 可生成 Layered MVC 后端并保留设计门禁", async (t) => {
|
|
108
|
+
const data = await fixture(t);
|
|
109
|
+
const result = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...data.args], { encoding: "utf8" });
|
|
110
110
|
assert.equal(result.status, 0, result.stderr);
|
|
111
111
|
const manifest = JSON.parse(await readFile(path.join(data.project, ".yss/scaffold-generation.json"), "utf8"));
|
|
112
112
|
assert.equal(manifest.schema_version, 4);
|
|
113
|
+
assert.equal(manifest.design_prerequisites.data_architecture_decision.impact, "not-applicable");
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
test("数据影响为 required 时绑定数据架构后可生成 Layered MVC 后端", async (t) => {
|
|
117
|
+
const data = await fixture(t, { dataImpact: "required" });
|
|
118
|
+
const result = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...data.args], { encoding: "utf8" });
|
|
119
|
+
assert.equal(result.status, 0, result.stderr);
|
|
120
|
+
const manifest = JSON.parse(await readFile(path.join(data.project, ".yss/scaffold-generation.json"), "utf8"));
|
|
121
|
+
assert.equal(manifest.design_prerequisites.data_architecture_decision.impact, "required");
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
test("API 影响为 required 时绑定同字节 Draft、Validation、Review 和 Freeze 后可生成 Layered MVC 后端", async (t) => {
|
|
125
|
+
const data = await fixture(t, { apiImpact: "required" });
|
|
126
|
+
const result = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...data.args], { encoding: "utf8" });
|
|
127
|
+
assert.equal(result.status, 0, result.stderr);
|
|
128
|
+
const manifest = JSON.parse(await readFile(path.join(data.project, ".yss/scaffold-generation.json"), "utf8"));
|
|
129
|
+
assert.equal(manifest.design_prerequisites.api_contract_decision.impact, "required");
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
test("缺少设计门禁时在写文件前拒绝 Layered MVC 新生成", async (t) => {
|
|
133
|
+
const data = await fixture(t);
|
|
134
|
+
delete data.contract.design_prerequisites;
|
|
135
|
+
await writeFile(data.contractFile, JSON.stringify(data.contract));
|
|
136
|
+
const result = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...data.args], { encoding: "utf8" });
|
|
137
|
+
assert.notEqual(result.status, 0);
|
|
138
|
+
assert.match(result.stderr, /design_prerequisites|Technical Design/);
|
|
139
|
+
await assert.rejects(stat(data.project), { code: "ENOENT" });
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
test("技术和数据设计齐全但缺少 API Decision 时在写文件前拒绝 Layered MVC 新生成", async (t) => {
|
|
143
|
+
const data = await fixture(t);
|
|
144
|
+
delete data.contract.design_prerequisites.api_contract_decision;
|
|
145
|
+
await writeFile(data.contractFile, JSON.stringify(data.contract));
|
|
146
|
+
const result = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...data.args], { encoding: "utf8" });
|
|
147
|
+
assert.notEqual(result.status, 0);
|
|
148
|
+
assert.match(result.stderr, /API Contract Decision|api_contract_decision/);
|
|
149
|
+
await assert.rejects(stat(data.project), { code: "ENOENT" });
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
test("API Draft、Validation、Review 或工程批准异常时均在零写入状态阻断 Layered MVC", async (t) => {
|
|
153
|
+
const mutations = [
|
|
154
|
+
async (data) => writeFile(data.design.openapi.file, "\n# drift\n", { flag: "a" }),
|
|
155
|
+
async (data) => {
|
|
156
|
+
const decision = JSON.parse(await readFile(data.design.api.file, "utf8"));
|
|
157
|
+
const file = path.join(data.root, decision.validation_record.ref);
|
|
158
|
+
const record = JSON.parse(await readFile(file, "utf8"));
|
|
159
|
+
record.status = "blocked";
|
|
160
|
+
record.toolchain.exit_code = 1;
|
|
161
|
+
record.checks.lint = "blocked";
|
|
162
|
+
await writeFile(file, `${JSON.stringify(record, null, 2)}\n`);
|
|
163
|
+
decision.validation_record.digest = digest(await readFile(file));
|
|
164
|
+
await writeFile(data.design.api.file, `${JSON.stringify(decision, null, 2)}\n`);
|
|
165
|
+
data.contract.design_prerequisites.api_contract_decision.digest = digest(await readFile(data.design.api.file));
|
|
166
|
+
await writeFile(data.contractFile, `${JSON.stringify(data.contract, null, 2)}\n`);
|
|
167
|
+
},
|
|
168
|
+
async (data) => {
|
|
169
|
+
const decision = JSON.parse(await readFile(data.design.api.file, "utf8"));
|
|
170
|
+
const file = path.join(data.root, decision.draft_review.ref);
|
|
171
|
+
const review = JSON.parse(await readFile(file, "utf8"));
|
|
172
|
+
review.result = "blocked";
|
|
173
|
+
review.blocking_findings = ["breaking response"];
|
|
174
|
+
await writeFile(file, `${JSON.stringify(review, null, 2)}\n`);
|
|
175
|
+
decision.draft_review.digest = digest(await readFile(file));
|
|
176
|
+
await writeFile(data.design.api.file, `${JSON.stringify(decision, null, 2)}\n`);
|
|
177
|
+
data.contract.design_prerequisites.api_contract_decision.digest = digest(await readFile(data.design.api.file));
|
|
178
|
+
await writeFile(data.contractFile, `${JSON.stringify(data.contract, null, 2)}\n`);
|
|
179
|
+
},
|
|
180
|
+
async (data) => {
|
|
181
|
+
const approval = JSON.parse(await readFile(data.design.approval.file, "utf8"));
|
|
182
|
+
approval.subject_ref = "approval://self-asserted";
|
|
183
|
+
await writeFile(data.design.approval.file, `${JSON.stringify(approval, null, 2)}\n`);
|
|
184
|
+
},
|
|
185
|
+
];
|
|
186
|
+
for (const mutate of mutations) {
|
|
187
|
+
const data = await fixture(t, { apiImpact: "required" });
|
|
188
|
+
await mutate(data);
|
|
189
|
+
const result = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...data.args], { encoding: "utf8" });
|
|
190
|
+
assert.notEqual(result.status, 0, result.stderr);
|
|
191
|
+
await assert.rejects(stat(data.project), { code: "ENOENT" });
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
test("schema v3 只读兼容但禁止用于 Layered MVC 新生成", async (t) => {
|
|
196
|
+
const data = await fixture(t, { schemaVersion: 3 });
|
|
197
|
+
const result = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...data.args], { encoding: "utf8" });
|
|
198
|
+
assert.notEqual(result.status, 0);
|
|
199
|
+
assert.match(result.stderr, /Project Scaffold Contract v4|新生成/);
|
|
200
|
+
await assert.rejects(stat(data.project), { code: "ENOENT" });
|
|
113
201
|
});
|
|
114
202
|
|
|
115
203
|
test("可选离线 Maven 可行性检查(不替代受控仓库验收)", { skip: process.env.YSS_BACKEND_OFFLINE_PROBE !== "1" }, async (t) => {
|
|
116
204
|
const data = await fixture(t);
|
|
117
|
-
const generated = spawnSync(process.execPath, [script, ...data.args], { encoding: "utf8" });
|
|
205
|
+
const generated = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...data.args], { encoding: "utf8" });
|
|
118
206
|
assert.equal(generated.status, 0, generated.stderr);
|
|
119
207
|
for (const phase of ["validate", "test", "package"]) {
|
|
120
208
|
const result = spawnSync(path.join(data.project, "mvnw"), ["-o", phase], { cwd: data.project, encoding: "utf8", timeout: 60_000 });
|
|
@@ -126,10 +214,10 @@ test("可选离线 Maven 可行性检查(不替代受控仓库验收)", { sk
|
|
|
126
214
|
for (const database of ["h2"]) {
|
|
127
215
|
test(`生成 ${database} 基础 Profile`, async (t) => {
|
|
128
216
|
const data = await fixture(t, { database });
|
|
129
|
-
const result = spawnSync(process.execPath, [script, ...data.args], { encoding: "utf8" });
|
|
217
|
+
const result = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...data.args], { encoding: "utf8" });
|
|
130
218
|
assert.equal(result.status, 0, result.stderr);
|
|
131
219
|
const manifest = JSON.parse(await readFile(path.join(data.project, ".yss/scaffold-generation.json"), "utf8"));
|
|
132
|
-
assert.equal(manifest.schema_version,
|
|
220
|
+
assert.equal(manifest.schema_version, 4);
|
|
133
221
|
assert.equal(manifest.architecture_family, "layered-mvc");
|
|
134
222
|
assert.equal(manifest.profiles.verification_database, database);
|
|
135
223
|
assert.equal(manifest.profiles.production_database, "not-bound");
|
|
@@ -147,7 +235,7 @@ for (const database of ["h2"]) {
|
|
|
147
235
|
for (const [name, profile] of Object.entries(capabilityModules)) {
|
|
148
236
|
test(`能力闭包 ${name}`, async (t) => {
|
|
149
237
|
const data = await fixture(t, { profile });
|
|
150
|
-
const result = spawnSync(process.execPath, [script, ...data.args], { encoding: "utf8" });
|
|
238
|
+
const result = spawnSync(process.execPath, [path.resolve(path.dirname(script), "../../../../scripts/fixtures/backend-scaffold/generate-candidate.mjs"), script, ...data.args], { encoding: "utf8" });
|
|
151
239
|
assert.equal(result.status, 0, result.stderr);
|
|
152
240
|
const pom = await readFile(path.join(data.project, "pom.xml"), "utf8");
|
|
153
241
|
for (const module of profile.modules) assert.match(pom, new RegExp(`<module>demo-service-${module}</module>`));
|
|
@@ -5,11 +5,11 @@ description: 在生命周期批准的初始化合同下创建独立 Git 管理
|
|
|
5
5
|
|
|
6
6
|
# 数据分析 MVC 项目初始化
|
|
7
7
|
|
|
8
|
-
这是 `work-unit.service-project-initialization` 的执行器,不是通用 MVC 脚手架。通用 MVC 使用 `yss-layered-mvc-scaffold-generator`;DDD 使用 `yss-ddd-scaffold-generator
|
|
8
|
+
这是 `work-unit.service-project-initialization` 的执行器,不是通用 MVC 脚手架。通用 MVC 使用 `yss-layered-mvc-scaffold-generator`;DDD 使用 `yss-ddd-scaffold-generator`。历史数据分析初始化入口不提供自动别名,迁移关系只在 `docs/agents/skill-migrations.md` 记录。
|
|
9
9
|
|
|
10
10
|
## 执行合同
|
|
11
11
|
|
|
12
|
-
- 必须有生命周期批准且当前的 schema
|
|
12
|
+
- 必须有生命周期批准且当前的 schema v4 scaffold contract,绑定 `architecture_profile=mvc-data-analysis-v1`、本生成器、已批准的架构决策、Technical Design、Data Architecture Decision v1 和真实工程合同批准记录。
|
|
13
13
|
- 固定 server/core/client/repository/adapter/feign-client;core 是薄应用层,规则见 `docs/agents/backend-architecture-profiles.md`。不生成业务接口、SQL、DDL、Mock、生产数据库配置或额外数据源。
|
|
14
14
|
- `verification_database=h2` / `production_database=not-bound`;Java 8 / Boot 2.7 / javax。目标不存在,禁止覆盖、迁移、自动提交和推送。
|
|
15
15
|
- 合同必须包含 `context_handoff_ref`、`context_handoff_digest`:批准交接的完整根 CONTEXT.md(含 schema frontmatter),不得用跨仓路径替代本仓词汇表。初始化只复制已确认内容,不创造业务术语;父项目只保留服务引用和 handoff 证据。
|
package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs
CHANGED
|
@@ -71,7 +71,7 @@ export async function initialize(options) {
|
|
|
71
71
|
if (process.argv[1] === fileURLToPath(import.meta.url)) {
|
|
72
72
|
try {
|
|
73
73
|
const options = parseArgs(process.argv.slice(2));
|
|
74
|
-
if (options.help) process.stdout.write("
|
|
74
|
+
if (options.help) process.stdout.write("使用批准且绑定技术/数据设计的 MVC schema v4 合同与 Maven 坐标参数;输出独立数据分析项目,无数据库/Mock 选项。\n");
|
|
75
75
|
else await initialize(options);
|
|
76
76
|
} catch (error) { process.stderr.write(`数据分析项目初始化失败: ${error.message}\n`); process.exitCode = 1; }
|
|
77
77
|
}
|
|
@@ -51,3 +51,7 @@ description: 用于 YSS MyBatis / MyBatis-Plus 组件能力核验、接入决策
|
|
|
51
51
|
- 行为变更使用 `behavior-tdd`;纯 Mapper/XML 骨架仅在批准合同明确为 `controlled-generation` 时允许。
|
|
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
|
+
|
|
55
|
+
## 新脚手架平台约束
|
|
56
|
+
|
|
57
|
+
消费批准切片架构身份中的 `platform_configuration`,与工程 Manifest 核对后使用对应 YSS 组件。Boot 2.7 使用 `javax` Web/Validation API;Boot 3.5/4.1 使用 `jakarta`。Boot 4 按 Jackson 3、对应自动配置和 starter 适配;不替换 `javax.sql` 等 Java SE 包。平台不一致、兼容条目缺失或候选未验证时回合同编译器阻断,不在业务实现中升级或替换组件。详见 仓库共享合同 `docs/engineering/backend-platforms.md`。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yss-openapi-draft-review
|
|
3
|
-
description:
|
|
3
|
+
description: "审查 YSS OpenAPI Draft 的需求覆盖、页面动作、响应、错误与测试 seam;不执行 Freeze。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# YSS OpenAPI Draft Review
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yss-openapi-governance
|
|
3
|
-
description:
|
|
3
|
+
description: "维护、校验、冻结或导出 YSS OpenAPI 3.1 设计合同;以冻结 YAML 生成受审查的 JSON。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# YSS OpenAPI Governance
|
|
@@ -32,6 +32,7 @@ YSS DTO 的可复用 HTTP/JSON 映射由 `.agents/skills/yss-dto/references/open
|
|
|
32
32
|
- 在 `docs/.scratch/<feature>/api/<feature>-validation.yaml` 持久化结构校验记录,并用 `scripts/verify-openapi-draft-validation-record` 复核当前 YAML SHA-256、锁定的 Redocly 版本、实际命令、退出码、执行时间和证据引用。
|
|
33
33
|
- 在 OpenAPI Freeze 后,用锁定的 Redocly CLI 将 YAML bundle 为 JSON,并记录可重现证据。
|
|
34
34
|
- 维护治理记录、Freeze 记录和 JSON 派生记录。
|
|
35
|
+
- 在技术分析中生成 `api-contract-decision-v1`:有 API 影响时以原始字节摘要闭包绑定权威 YAML、Validation、独立 Draft Review 和 Freeze;无 API 影响时绑定影响评估、明确原因和至少一项可读证据,且不得生成空占位资产。
|
|
35
36
|
- Spec Delta 影响存在时,在 `docs/.scratch/<feature>/spec-delta/` 记录与冻结 YAML 的关系;没有影响时明确记录 `not-applicable`。
|
|
36
37
|
|
|
37
38
|
不使用本 skill 来替代:
|
|
@@ -80,6 +81,7 @@ pnpm exec redocly bundle \
|
|
|
80
81
|
- 将通过 verifier 且 SHA-256 与当前 YAML 一致的 validation record 交给 `yss-openapi-draft-review`。缺锁定 lint 时可以先做语义预审,但独立 Review 总结果必须为 `Blocked`;不能用“Freeze 前补 lint”支持 `Approved`。
|
|
81
82
|
- YAML、validation record 或 lint ruleset 变化后,旧结构证据与旧 Review 立即失效,必须重新校验和审查。阻断项未关闭前,YAML 仍是 review-only Draft,不得生成生产客户端。
|
|
82
83
|
- Freeze 记录必须引用 YAML 路径、Git ref(如适用)和 YAML SHA-256。冻结后 API 行为变更必须先回到 YAML Draft 与审查。
|
|
84
|
+
- 将同一 YAML 的版本与摘要、validation record、独立 Review 和 Freeze 写入 API Contract Decision v1。`gate.engineering-contract-approved` 一次批准同时绑定 Technical Design、Data Architecture Decision、API Contract Decision;API `required` 时还必须直接绑定冻结 YAML。不得另造字符串 URI 或仅凭 `status: approved` 关闭门禁。
|
|
83
85
|
|
|
84
86
|
4. **从冻结 YAML 派生 JSON**
|
|
85
87
|
- 使用上面的锁定 `redocly bundle` 命令生成 `docs/.scratch/<feature>/api/<feature>.json`,JSON 不纳入人工编辑面。
|
|
@@ -27,7 +27,7 @@ description: 编排 YSS 产品或模块从机会调研到 Spec、原型、技术
|
|
|
27
27
|
scripts/query-lifecycle-context --mode route --stage stage.plan --work-unit work-unit.plan-requirements --include execution_efficiency
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
`--include`
|
|
30
|
+
`--include` 接受合同顶层键,非法键或 ID 失败。细节按需读 `references/orchestration.md` 及其索引,证据充分即停止加载。
|
|
31
31
|
|
|
32
32
|
按 `execution_efficiency` 合并查询、复用未变资料并验证当前资产;产品流转不重跑模板套件。词汇对账、恢复核验及门禁不变,执行细节见 `references/orchestration.md`。
|
|
33
33
|
|
|
@@ -52,11 +52,11 @@ Plan 入口读取 `docs/plan/README.md` 和 `docs/process/plan-migration.md`,
|
|
|
52
52
|
|
|
53
53
|
不得越过命中的阶段、门禁、实现仓库准备或 Ticket 正式化。实现只接收绑定垂直切片、已批准且持久化、版本当前并通过完整 `ready-for-agent` 计算的合同;父 Ticket、`ready-for-human` 切片、`stale`、`drift`、`new_impacts`、`violation` 或缺失证据均阻断。实现仓库、脚手架、UI 还原、review input 和发布条件从对应合同子树查询,不在入口重复定义。
|
|
54
54
|
|
|
55
|
-
聚合批准见 `gate_consolidation
|
|
55
|
+
聚合批准见 `gate_consolidation`。普通功能默认一个独立审查者,按能力缺口、冲突或外部制度增员;相邻检查组合审查、逐项留证。
|
|
56
56
|
|
|
57
57
|
### 用户决定
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
按角色表 `user_decision_policy` 和 `references/user-decisions.md` 先展示可审阅资产、范围、风险及后续动作,再取得提问者或其指定生物人的原始回复。数字人、超时和默认项不能代答。已有授权优先用 `continuation_ref` 核验延续;未知/实质变化或强制审批缺失才重新决定。缺陷和缺证据阻断,建议记待办;合同、验证及外部动作授权仍须满足。
|
|
60
60
|
|
|
61
61
|
### 外部副作用与 Git
|
|
62
62
|
|
|
@@ -68,7 +68,7 @@ Plan 入口读取 `docs/plan/README.md` 和 `docs/process/plan-migration.md`,
|
|
|
68
68
|
2. 评估影响面、上游新鲜度、门禁和阻塞,选择第一个未阻塞工作单元;不把 `not-applicable` 当作豁免。
|
|
69
69
|
3. 原生工作单元由主控持有正式资产;专项工作通过结构化任务包派发,只调用编排合同允许的 model-invoked skill。
|
|
70
70
|
4. Matt 的 `grill-with-docs`、`to-spec`、`to-tickets`、`implement` 等仅为显式 user-invoked 兼容入口。主控不得自动调用它们或代替其创建正式资产;Matt 仅导航,不得写生命周期资产或改变门禁/Ticket 状态,任何写入前回交本编排器。
|
|
71
|
-
5. 先对照用户目标逐项验收,检查遗漏诉求、错误假设与尚未解决的问题,再验收 `Workflow Execution Result`:工作单元、合同、允许写路径、`context_reconciliation`、证据、实际验证、延期 seam、漂移和下一路由必须可核验。实现派发额外绑定当前 Slice Implementation Contract;其他阶段不得伪造该合同。
|
|
71
|
+
5. 先对照用户目标逐项验收,检查遗漏诉求、错误假设与尚未解决的问题,再验收 `Workflow Execution Result`:工作单元、合同、允许写路径、`context_reconciliation`、证据、实际验证、延期 seam、漂移和下一路由必须可核验。实现派发额外绑定当前 Slice Implementation Contract v3;其他阶段不得伪造该合同。
|
|
72
72
|
6. 在授权边界内继续下一工作单元;遇到人工决定、新授权、证据冲突、专项失败或合并/发布结论时暂停。暂停不得阻断无依赖的独立工作。
|
|
73
73
|
|
|
74
74
|
每个 `project-instance` 工作单元在申请批准或流转前,先把稳定术语回写到根目录唯一 `CONTEXT.md`,并生成通过校验的 `context_reconciliation`。候选术语、错误路径、摘要漂移或未决冲突必须阻断。质量标准只由 `engineering-baseline` 定义一次;高风险影响按裁剪合同补充反证和残余风险。
|