create-yss-spec 3.1.3 → 3.3.0
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 +5 -1
- package/package.json +1 -1
- package/template/.agents/skills/.strategic-design-skills-manifest.json +1 -1
- package/template/.agents/skills/code-review/SKILL.md +4 -0
- package/template/.agents/skills/code-review/agents/openai.yaml +1 -1
- package/template/.agents/skills/code-review/references/yss-review-standards.md +9 -2
- package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
- package/template/.agents/skills/yss-domain/SKILL.md +3 -3
- package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
- package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
- package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
- package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
- package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
- package/template/.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
- package/template/.agents/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
- package/template/.agents/skills/yss-mvc-design/SKILL.md +16 -0
- package/template/.agents/skills/yss-mvc-design/agents/openai.yaml +4 -0
- package/template/.agents/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
- package/template/.agents/skills/yss-mybatis/SKILL.md +34 -58
- package/template/.agents/skills/yss-mybatis/agents/openai.yaml +2 -2
- package/template/.agents/skills/yss-mybatis/references/source-index.md +88 -68
- package/template/.agents/skills/yss-product-lifecycle/SKILL.md +48 -43
- package/template/.agents/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +6 -2
- package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +6 -3
- package/template/.agents/skills/yss-repository/SKILL.md +28 -70
- package/template/.agents/skills/yss-repository/agents/openai.yaml +2 -2
- package/template/.agents/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
- package/template/.agents/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
- package/template/.agents/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
- package/template/.agents/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
- package/template/.agents/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
- package/template/.agents/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
- package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
- package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
- package/template/.agents/skills/yss-tactical-design/SKILL.md +2 -2
- package/template/.agents/skills/yss-tactical-design/references/output-template.md +2 -0
- package/template/.agents/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
- package/template/.agents/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
- package/template/.agents/skills/yss-technical-design/SKILL.md +31 -0
- package/template/.agents/skills/yss-technical-design/agents/openai.yaml +4 -0
- package/template/.agents/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
- package/template/.agents/skills/yss-technical-design/references/technical-design-contract.md +31 -0
- package/template/.agents/skills/yss-technical-design/references/technical-design.schema.json +759 -0
- package/template/.agents/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
- package/template/.agents/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
- package/template/.agents/skills/yss-technical-design/tests/fixtures.mjs +32 -0
- package/template/.agents/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
- package/template/.claude/skills/code-review/SKILL.md +4 -0
- package/template/.claude/skills/code-review/agents/openai.yaml +1 -1
- package/template/.claude/skills/code-review/references/yss-review-standards.md +9 -2
- package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
- package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
- package/template/.claude/skills/yss-domain/SKILL.md +3 -3
- package/template/.claude/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
- package/template/.claude/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
- package/template/.claude/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
- package/template/.claude/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
- package/template/.claude/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
- package/template/.claude/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
- package/template/.claude/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
- package/template/.claude/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
- package/template/.claude/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
- package/template/.claude/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.claude/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
- package/template/.claude/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
- package/template/.claude/skills/yss-mvc-design/SKILL.md +16 -0
- package/template/.claude/skills/yss-mvc-design/agents/openai.yaml +4 -0
- package/template/.claude/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
- package/template/.claude/skills/yss-mybatis/SKILL.md +34 -58
- package/template/.claude/skills/yss-mybatis/agents/openai.yaml +2 -2
- package/template/.claude/skills/yss-mybatis/references/source-index.md +88 -68
- package/template/.claude/skills/yss-product-lifecycle/SKILL.md +48 -43
- package/template/.claude/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +6 -2
- package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +6 -3
- package/template/.claude/skills/yss-repository/SKILL.md +28 -70
- package/template/.claude/skills/yss-repository/agents/openai.yaml +2 -2
- package/template/.claude/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
- package/template/.claude/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
- package/template/.claude/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
- package/template/.claude/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
- package/template/.claude/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
- package/template/.claude/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
- package/template/.claude/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
- package/template/.claude/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
- package/template/.claude/skills/yss-tactical-design/SKILL.md +2 -2
- package/template/.claude/skills/yss-tactical-design/references/output-template.md +2 -0
- package/template/.claude/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
- package/template/.claude/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
- package/template/.claude/skills/yss-technical-design/SKILL.md +31 -0
- package/template/.claude/skills/yss-technical-design/agents/openai.yaml +4 -0
- package/template/.claude/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
- package/template/.claude/skills/yss-technical-design/references/technical-design-contract.md +31 -0
- package/template/.claude/skills/yss-technical-design/references/technical-design.schema.json +759 -0
- package/template/.claude/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
- package/template/.claude/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
- package/template/.claude/skills/yss-technical-design/tests/fixtures.mjs +32 -0
- package/template/.claude/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
- package/template/.codex/skills/code-review/SKILL.md +4 -0
- package/template/.codex/skills/code-review/agents/openai.yaml +1 -1
- package/template/.codex/skills/code-review/references/yss-review-standards.md +9 -2
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
- package/template/.codex/skills/yss-domain/SKILL.md +3 -3
- package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
- package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
- package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
- package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
- package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
- package/template/.codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
- package/template/.codex/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
- package/template/.codex/skills/yss-mvc-design/SKILL.md +16 -0
- package/template/.codex/skills/yss-mvc-design/agents/openai.yaml +4 -0
- package/template/.codex/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
- package/template/.codex/skills/yss-mybatis/SKILL.md +34 -58
- package/template/.codex/skills/yss-mybatis/agents/openai.yaml +2 -2
- package/template/.codex/skills/yss-mybatis/references/source-index.md +88 -68
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +48 -43
- package/template/.codex/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +6 -2
- package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +6 -3
- package/template/.codex/skills/yss-repository/SKILL.md +28 -70
- package/template/.codex/skills/yss-repository/agents/openai.yaml +2 -2
- package/template/.codex/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
- package/template/.codex/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
- package/template/.codex/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
- package/template/.codex/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
- package/template/.codex/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
- package/template/.codex/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
- package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
- package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
- package/template/.codex/skills/yss-tactical-design/SKILL.md +2 -2
- package/template/.codex/skills/yss-tactical-design/references/output-template.md +2 -0
- package/template/.codex/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
- package/template/.codex/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
- package/template/.codex/skills/yss-technical-design/SKILL.md +31 -0
- package/template/.codex/skills/yss-technical-design/agents/openai.yaml +4 -0
- package/template/.codex/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
- package/template/.codex/skills/yss-technical-design/references/technical-design-contract.md +31 -0
- package/template/.codex/skills/yss-technical-design/references/technical-design.schema.json +759 -0
- package/template/.codex/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
- package/template/.codex/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
- package/template/.codex/skills/yss-technical-design/tests/fixtures.mjs +32 -0
- package/template/.codex/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
- package/template/.cursor/skills/code-review/SKILL.md +4 -0
- package/template/.cursor/skills/code-review/agents/openai.yaml +1 -1
- package/template/.cursor/skills/code-review/references/yss-review-standards.md +9 -2
- package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
- package/template/.cursor/skills/yss-domain/SKILL.md +3 -3
- package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
- package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
- package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
- package/template/.cursor/skills/yss-mvc-design/SKILL.md +16 -0
- package/template/.cursor/skills/yss-mvc-design/agents/openai.yaml +4 -0
- package/template/.cursor/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
- package/template/.cursor/skills/yss-mybatis/SKILL.md +34 -58
- package/template/.cursor/skills/yss-mybatis/agents/openai.yaml +2 -2
- package/template/.cursor/skills/yss-mybatis/references/source-index.md +88 -68
- package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +48 -43
- package/template/.cursor/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +6 -2
- package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +6 -3
- package/template/.cursor/skills/yss-repository/SKILL.md +28 -70
- package/template/.cursor/skills/yss-repository/agents/openai.yaml +2 -2
- package/template/.cursor/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
- package/template/.cursor/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
- package/template/.cursor/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
- package/template/.cursor/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
- package/template/.cursor/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
- package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
- package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
- package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
- package/template/.cursor/skills/yss-tactical-design/SKILL.md +2 -2
- package/template/.cursor/skills/yss-tactical-design/references/output-template.md +2 -0
- package/template/.cursor/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
- package/template/.cursor/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
- package/template/.cursor/skills/yss-technical-design/SKILL.md +31 -0
- package/template/.cursor/skills/yss-technical-design/agents/openai.yaml +4 -0
- package/template/.cursor/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
- package/template/.cursor/skills/yss-technical-design/references/technical-design-contract.md +31 -0
- package/template/.cursor/skills/yss-technical-design/references/technical-design.schema.json +759 -0
- package/template/.cursor/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
- package/template/.cursor/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
- package/template/.cursor/skills/yss-technical-design/tests/fixtures.mjs +32 -0
- package/template/.cursor/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
- package/template/.pi/skills/code-review/SKILL.md +4 -0
- package/template/.pi/skills/code-review/agents/openai.yaml +1 -1
- package/template/.pi/skills/code-review/references/yss-review-standards.md +9 -2
- package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
- package/template/.pi/skills/yss-domain/SKILL.md +3 -3
- package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
- package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
- package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
- package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
- package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
- package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
- package/template/.pi/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
- package/template/.pi/skills/yss-mvc-design/SKILL.md +16 -0
- package/template/.pi/skills/yss-mvc-design/agents/openai.yaml +4 -0
- package/template/.pi/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
- package/template/.pi/skills/yss-mybatis/SKILL.md +34 -58
- package/template/.pi/skills/yss-mybatis/agents/openai.yaml +2 -2
- package/template/.pi/skills/yss-mybatis/references/source-index.md +88 -68
- package/template/.pi/skills/yss-product-lifecycle/SKILL.md +48 -43
- package/template/.pi/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +6 -2
- package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +6 -3
- package/template/.pi/skills/yss-repository/SKILL.md +28 -70
- package/template/.pi/skills/yss-repository/agents/openai.yaml +2 -2
- package/template/.pi/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
- package/template/.pi/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
- package/template/.pi/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
- package/template/.pi/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
- package/template/.pi/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
- package/template/.pi/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
- package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
- package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
- package/template/.pi/skills/yss-tactical-design/SKILL.md +2 -2
- package/template/.pi/skills/yss-tactical-design/references/output-template.md +2 -0
- package/template/.pi/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
- package/template/.pi/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
- package/template/.pi/skills/yss-technical-design/SKILL.md +31 -0
- package/template/.pi/skills/yss-technical-design/agents/openai.yaml +4 -0
- package/template/.pi/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
- package/template/.pi/skills/yss-technical-design/references/technical-design-contract.md +31 -0
- package/template/.pi/skills/yss-technical-design/references/technical-design.schema.json +759 -0
- package/template/.pi/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
- package/template/.pi/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
- package/template/.pi/skills/yss-technical-design/tests/fixtures.mjs +32 -0
- package/template/.pi/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
- package/template/.qoder/skills/code-review/SKILL.md +4 -0
- package/template/.qoder/skills/code-review/agents/openai.yaml +1 -1
- package/template/.qoder/skills/code-review/references/yss-review-standards.md +9 -2
- package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
- package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
- package/template/.qoder/skills/yss-domain/SKILL.md +3 -3
- package/template/.qoder/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
- package/template/.qoder/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
- package/template/.qoder/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
- package/template/.qoder/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
- package/template/.qoder/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
- package/template/.qoder/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
- package/template/.qoder/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
- package/template/.qoder/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
- package/template/.qoder/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
- package/template/.qoder/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.qoder/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
- package/template/.qoder/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
- package/template/.qoder/skills/yss-mvc-design/SKILL.md +16 -0
- package/template/.qoder/skills/yss-mvc-design/agents/openai.yaml +4 -0
- package/template/.qoder/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
- package/template/.qoder/skills/yss-mybatis/SKILL.md +34 -58
- package/template/.qoder/skills/yss-mybatis/agents/openai.yaml +2 -2
- package/template/.qoder/skills/yss-mybatis/references/source-index.md +88 -68
- package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +48 -43
- package/template/.qoder/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +6 -2
- package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +6 -3
- package/template/.qoder/skills/yss-repository/SKILL.md +28 -70
- package/template/.qoder/skills/yss-repository/agents/openai.yaml +2 -2
- package/template/.qoder/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
- package/template/.qoder/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
- package/template/.qoder/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
- package/template/.qoder/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
- package/template/.qoder/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
- package/template/.qoder/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
- package/template/.qoder/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
- package/template/.qoder/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
- package/template/.qoder/skills/yss-tactical-design/SKILL.md +2 -2
- package/template/.qoder/skills/yss-tactical-design/references/output-template.md +2 -0
- package/template/.qoder/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
- package/template/.qoder/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
- package/template/.qoder/skills/yss-technical-design/SKILL.md +31 -0
- package/template/.qoder/skills/yss-technical-design/agents/openai.yaml +4 -0
- package/template/.qoder/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
- package/template/.qoder/skills/yss-technical-design/references/technical-design-contract.md +31 -0
- package/template/.qoder/skills/yss-technical-design/references/technical-design.schema.json +759 -0
- package/template/.qoder/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
- package/template/.qoder/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
- package/template/.qoder/skills/yss-technical-design/tests/fixtures.mjs +32 -0
- package/template/.qoder/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
- package/template/.trae/skills/code-review/SKILL.md +4 -0
- package/template/.trae/skills/code-review/agents/openai.yaml +1 -1
- package/template/.trae/skills/code-review/references/yss-review-standards.md +9 -2
- package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +7 -3
- package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
- package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +9 -0
- package/template/.trae/skills/yss-domain/SKILL.md +3 -3
- package/template/.trae/skills/yss-frontend-scaffold-generator/SKILL.md +10 -7
- package/template/.trae/skills/yss-frontend-scaffold-generator/scripts/generate_and_verify_scaffold.mjs +10 -0
- package/template/.trae/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +107 -0
- package/template/.trae/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -0
- package/template/.trae/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +37 -0
- package/template/.trae/skills/yss-implementation-contract-compiler/SKILL.md +3 -3
- package/template/.trae/skills/yss-implementation-contract-compiler/references/boundaries.md +9 -0
- package/template/.trae/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +35 -2
- package/template/.trae/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +8 -1
- package/template/.trae/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.trae/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +8 -5
- package/template/.trae/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +17 -2
- package/template/.trae/skills/yss-mvc-design/SKILL.md +16 -0
- package/template/.trae/skills/yss-mvc-design/agents/openai.yaml +4 -0
- package/template/.trae/skills/yss-mvc-design/references/mvc-design.schema.json +315 -0
- package/template/.trae/skills/yss-mybatis/SKILL.md +34 -58
- package/template/.trae/skills/yss-mybatis/agents/openai.yaml +2 -2
- package/template/.trae/skills/yss-mybatis/references/source-index.md +88 -68
- package/template/.trae/skills/yss-product-lifecycle/SKILL.md +48 -43
- package/template/.trae/skills/yss-product-lifecycle/references/artifact-dependencies.md +5 -3
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +81 -19
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +6 -2
- package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +6 -3
- package/template/.trae/skills/yss-repository/SKILL.md +28 -70
- package/template/.trae/skills/yss-repository/agents/openai.yaml +2 -2
- package/template/.trae/skills/yss-repository/references/profiles/layered-mvc-service.md +19 -1
- package/template/.trae/skills/yss-repository/references/profiles/mvc-data-analysis-v1.md +19 -1
- package/template/.trae/skills/yss-repository/references/profiles/target-domain-model.md +21 -1
- package/template/.trae/skills/yss-repository/tests/profile-routing.test.mjs +59 -0
- package/template/.trae/skills/yss-skill-source-index-refresh/SKILL.md +8 -5
- package/template/.trae/skills/yss-skill-source-index-refresh/references/source-location.md +2 -1
- package/template/.trae/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +388 -18
- package/template/.trae/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +79 -1
- package/template/.trae/skills/yss-tactical-design/SKILL.md +2 -2
- package/template/.trae/skills/yss-tactical-design/references/output-template.md +2 -0
- package/template/.trae/skills/yss-tactical-design/references/tactical-design-contract.md +3 -1
- package/template/.trae/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +3 -2
- package/template/.trae/skills/yss-technical-design/SKILL.md +31 -0
- package/template/.trae/skills/yss-technical-design/agents/openai.yaml +4 -0
- package/template/.trae/skills/yss-technical-design/references/technical-design-common.schema.json +290 -0
- package/template/.trae/skills/yss-technical-design/references/technical-design-contract.md +31 -0
- package/template/.trae/skills/yss-technical-design/references/technical-design.schema.json +759 -0
- package/template/.trae/skills/yss-technical-design/scripts/generate-schema.mjs +20 -0
- package/template/.trae/skills/yss-technical-design/scripts/validate-technical-design.mjs +134 -0
- package/template/.trae/skills/yss-technical-design/tests/fixtures.mjs +32 -0
- package/template/.trae/skills/yss-technical-design/tests/run-scenarios.mjs +82 -0
- package/template/CONTEXT.md +2 -1
- package/template/docs/agents/digital-human-roles.yaml +4 -2
- package/template/docs/agents/yss-skill-registry.yaml +25 -1
- package/template/docs/architecture/templates/architecture-review-checklist.md +1 -1
- package/template/docs/architecture/templates/system-overview-design-template.md +15 -4
- package/template/docs/process/lifecycle-artifact-map.md +6 -0
- package/template/docs/process/lifecycle-registry-baseline.json +8 -1
- package/template/docs/process/lifecycle-registry.yaml +32 -2
- package/template/docs/process/schemas/implementation-repository-preparation-result.schema.json +38 -0
- package/template/docs/process/schemas/project-scaffold-contract.schema.json +113 -0
- package/template/docs/process/schemas/strategic-design-handoff.schema.json +77 -4
- package/template/docs/process/strategic-handoff-package.md +4 -2
- package/template/docs/process/template-verification-profiles.yaml +37 -0
- package/template/docs/templates/implementation-repo-registry-template.md +8 -0
- package/template/docs/templates/review-report-template.md +7 -3
- package/template/docs/user-guide//346/210/230/346/234/257/350/256/276/350/256/241/345/255/220/351/241/271/347/233/256/347/224/250/346/210/267/346/211/213/345/206/214.md +7 -6
- package/template/scripts/fixtures/strategic-handoff/fixture.mjs +3 -2
- package/template/scripts/lib/implementation-contract-compiler.mjs +8 -1
- package/template/scripts/lib/lifecycle-context-query.mjs +137 -0
- package/template/scripts/lib/lifecycle-transition.mjs +109 -3
- package/template/scripts/lib/scenario-checks.mjs +29 -26
- package/template/scripts/lib/skill-registry.mjs +9 -0
- package/template/scripts/lib/strategic-handoff-consumption.mjs +4 -4
- package/template/scripts/lib/strategic-handoff-design-targets.mjs +15 -0
- package/template/scripts/lib/technical-design-boundary.mjs +23 -0
- package/template/scripts/query-lifecycle-context +25 -0
- package/template/scripts/sync-strategic-handoff-tools +3 -2
- package/template/scripts/verify-business-language-scenarios +0 -7
- package/template/scripts/verify-frontend-scaffold-generator-scenarios +2 -0
- package/template/scripts/verify-lifecycle-context-query-scenarios +68 -0
- package/template/scripts/verify-lifecycle-transition-scenarios +44 -4
- package/template/scripts/verify-strategic-handoff-package-scenarios +7 -1
- package/template/skills-lock.json +48 -18
- package/template.snapshot.json +4 -4
- package/template/.agents/skills/yss-mybatis/assets/BaseRepository.java +0 -112
- package/template/.agents/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
- package/template/.agents/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
- package/template/.agents/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
- package/template/.agents/skills/yss-mybatis/references/README.md +0 -57
- package/template/.agents/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
- package/template/.claude/skills/yss-mybatis/assets/BaseRepository.java +0 -112
- package/template/.claude/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
- package/template/.claude/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
- package/template/.claude/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
- package/template/.claude/skills/yss-mybatis/references/README.md +0 -57
- package/template/.claude/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
- package/template/.codex/skills/yss-mybatis/assets/BaseRepository.java +0 -112
- package/template/.codex/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
- package/template/.codex/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
- package/template/.codex/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
- package/template/.codex/skills/yss-mybatis/references/README.md +0 -57
- package/template/.codex/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
- package/template/.cursor/skills/yss-mybatis/assets/BaseRepository.java +0 -112
- package/template/.cursor/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
- package/template/.cursor/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
- package/template/.cursor/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
- package/template/.cursor/skills/yss-mybatis/references/README.md +0 -57
- package/template/.cursor/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
- package/template/.pi/skills/yss-mybatis/assets/BaseRepository.java +0 -112
- package/template/.pi/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
- package/template/.pi/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
- package/template/.pi/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
- package/template/.pi/skills/yss-mybatis/references/README.md +0 -57
- package/template/.pi/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
- package/template/.qoder/skills/yss-mybatis/assets/BaseRepository.java +0 -112
- package/template/.qoder/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
- package/template/.qoder/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
- package/template/.qoder/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
- package/template/.qoder/skills/yss-mybatis/references/README.md +0 -57
- package/template/.qoder/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
- package/template/.trae/skills/yss-mybatis/assets/BaseRepository.java +0 -112
- package/template/.trae/skills/yss-mybatis/assets/EntityQueryAspect.java +0 -37
- package/template/.trae/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +0 -18
- package/template/.trae/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +0 -18
- package/template/.trae/skills/yss-mybatis/references/README.md +0 -57
- package/template/.trae/skills/yss-repository/references/infrastructure-layer-guide.md +0 -107
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { readFileSync } from "node:fs";
|
|
4
|
+
import { spawnSync } from "node:child_process";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
import { queryLifecycleContext } from "./lib/lifecycle-context-query.mjs";
|
|
8
|
+
|
|
9
|
+
const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
10
|
+
|
|
11
|
+
const query = {
|
|
12
|
+
mode: "route",
|
|
13
|
+
stageId: "stage.discovery",
|
|
14
|
+
workUnitId: "work-unit.discovery-requirements",
|
|
15
|
+
include: ["grill_exit"],
|
|
16
|
+
};
|
|
17
|
+
const first = queryLifecycleContext(query);
|
|
18
|
+
const second = queryLifecycleContext(query);
|
|
19
|
+
|
|
20
|
+
assert.deepEqual(first, second, "同一查询必须产生确定性结果");
|
|
21
|
+
assert.equal(first.query.mode, "route");
|
|
22
|
+
assert.equal(first.lifecycle.stage.id, "stage.discovery");
|
|
23
|
+
assert.ok(first.lifecycle.gates.every((gate) => gate.stage === "stage.discovery"));
|
|
24
|
+
assert.ok(first.lifecycle.artifacts.every((artifact) => artifact.stage === "stage.discovery"));
|
|
25
|
+
assert.equal(first.lifecycle.work_unit.id, "work-unit.discovery-requirements");
|
|
26
|
+
assert.equal(first.execution.mode, "read_only");
|
|
27
|
+
assert.equal(first.execution.work_unit_route.primary_skill, "yss-product-lifecycle");
|
|
28
|
+
assert.ok(first.execution.selected.grill_exit.required.includes("frontier_empty"));
|
|
29
|
+
assert.equal("review_input" in first.execution.selected, false, "不得返回未请求的合同子树");
|
|
30
|
+
assert.ok(first.skills.some((skill) => skill.id === "grilling"));
|
|
31
|
+
assert.match(first.sources.lifecycle_registry.semantic_sha256, /^[0-9a-f]{64}$/);
|
|
32
|
+
assert.match(first.sources.orchestration_contract.sha256, /^[0-9a-f]{64}$/);
|
|
33
|
+
|
|
34
|
+
for (const invalid of [
|
|
35
|
+
{ mode: "invalid" },
|
|
36
|
+
{ stageId: "stage.missing" },
|
|
37
|
+
{ workUnitId: "work-unit.missing" },
|
|
38
|
+
{ include: ["missing_contract_section"] },
|
|
39
|
+
]) {
|
|
40
|
+
assert.throws(() => queryLifecycleContext(invalid), /未知|至少提供/);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const cli = spawnSync("node", [
|
|
44
|
+
"scripts/query-lifecycle-context",
|
|
45
|
+
"--mode", "route",
|
|
46
|
+
"--stage", "stage.discovery",
|
|
47
|
+
"--work-unit", "work-unit.discovery-requirements",
|
|
48
|
+
"--include", "grill_exit",
|
|
49
|
+
], { cwd: ROOT, encoding: "utf8" });
|
|
50
|
+
assert.equal(cli.status, 0, cli.stderr);
|
|
51
|
+
assert.deepEqual(JSON.parse(cli.stdout), first, "CLI 输出必须等于库函数的规范投影");
|
|
52
|
+
|
|
53
|
+
const skillPath = path.join(ROOT, ".agents/skills/yss-product-lifecycle/SKILL.md");
|
|
54
|
+
const skill = readFileSync(skillPath, "utf8");
|
|
55
|
+
assert.ok(Buffer.byteLength(skill) <= 8192, "生命周期入口 Skill 必须保持在 8KB 软预算内");
|
|
56
|
+
assert.equal(skill.includes("| 主阶段 |"), false, "入口 Skill 不得复制完整阶段表");
|
|
57
|
+
for (const marker of [
|
|
58
|
+
"docs/process/lifecycle-registry.yaml",
|
|
59
|
+
"references/orchestration-contract.yaml",
|
|
60
|
+
"docs/agents/yss-skill-registry.yaml",
|
|
61
|
+
"scripts/query-lifecycle-context",
|
|
62
|
+
"### 仓库身份",
|
|
63
|
+
"### 流转与实现",
|
|
64
|
+
"### 用户决定",
|
|
65
|
+
"### 外部副作用与 Git",
|
|
66
|
+
]) assert.match(skill, new RegExp(marker.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")));
|
|
67
|
+
|
|
68
|
+
process.stdout.write("生命周期按需上下文查询场景验证通过\n");
|
|
@@ -3,16 +3,24 @@ import assert from "node:assert/strict";
|
|
|
3
3
|
import { mkdtempSync, rmSync, readFileSync, existsSync } from "node:fs";
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
|
-
import { buildImplementationFixture } from "./fixtures/user-decision/build-fixture.mjs";
|
|
6
|
+
import { buildDecisionFixture, buildImplementationFixture } from "./fixtures/user-decision/build-fixture.mjs";
|
|
7
7
|
const temp = mkdtempSync(path.join(os.tmpdir(), "lifecycle-decision-test-"));
|
|
8
8
|
process.on("exit", () => rmSync(temp, { recursive: true, force: true }));
|
|
9
9
|
const approval = buildImplementationFixture(temp, "docs/.scratch/demo/issues/01-valid-slice.md");
|
|
10
|
-
|
|
10
|
+
const scaffoldApproval = buildDecisionFixture(path.join(temp, "scaffold-choice"), { boundary: "scaffold-choice", scope: ["backend", "frontend"] });
|
|
11
|
+
import { validateImplementationEntry, validateImplementationRepositoriesReady, validateNextRoute, validateTicketFormalization } from "./lib/lifecycle-transition.mjs";
|
|
11
12
|
|
|
12
13
|
const exists = (ref) => [
|
|
13
14
|
"docs/process/lifecycle-registry.yaml",
|
|
14
15
|
"docs/.scratch/demo/issues/01-valid-slice.md",
|
|
15
16
|
"docs/.scratch/demo/evidence/ticket-decomposition-result.yaml",
|
|
17
|
+
"docs/.scratch/demo/evidence/repository-preparation.yaml",
|
|
18
|
+
"docs/.scratch/demo/evidence/backend-onboarding.yaml",
|
|
19
|
+
"docs/.scratch/demo/evidence/frontend-onboarding.yaml",
|
|
20
|
+
"docs/.scratch/demo/evidence/backend-manifest.json",
|
|
21
|
+
"docs/.scratch/demo/evidence/backend-verification.json",
|
|
22
|
+
"docs/.scratch/demo/evidence/frontend-manifest.json",
|
|
23
|
+
"docs/.scratch/demo/evidence/frontend-verification.json",
|
|
16
24
|
].includes(ref) || existsSync(ref);
|
|
17
25
|
const decompositionResult = `result_schema: workflow-execution-result-v1\nwork_unit: work-unit.ticket-decomposition\nresult: completed\nevidence_refs:\n - docs/.scratch/demo/evidence/ticket-decomposition-result.yaml\n`;
|
|
18
26
|
const read = (ref) => ref === "docs/.scratch/demo/evidence/ticket-decomposition-result.yaml" ? decompositionResult : readFileSync(ref, "utf8");
|
|
@@ -20,6 +28,17 @@ const options = { exists, read };
|
|
|
20
28
|
|
|
21
29
|
const validTicketState = {
|
|
22
30
|
...approval.state,
|
|
31
|
+
user_decisions: [...approval.state.user_decisions, scaffoldApproval.requirement],
|
|
32
|
+
delivery_impacts: { backend: true, frontend: true },
|
|
33
|
+
implementation_repository_preparation: {
|
|
34
|
+
result: "completed",
|
|
35
|
+
current_version: true,
|
|
36
|
+
evidence_refs: ["docs/.scratch/demo/evidence/repository-preparation.yaml"],
|
|
37
|
+
projects: [
|
|
38
|
+
{ project_id: "backend", delivery_role: "backend", status: "existing-and-onboarded", repository_ref: "git://backend", project_root: "/workspace/backend", repository_scope: "external-repository", onboarding_result: { status: "completed", ref: "docs/.scratch/demo/evidence/backend-onboarding.yaml" } },
|
|
39
|
+
{ project_id: "frontend", delivery_role: "frontend", status: "existing-and-onboarded", repository_ref: "git://frontend", project_root: "/workspace/frontend", repository_scope: "external-repository", onboarding_result: { status: "completed", ref: "docs/.scratch/demo/evidence/frontend-onboarding.yaml" } },
|
|
40
|
+
],
|
|
41
|
+
},
|
|
23
42
|
predecessor_work_unit: "work-unit.ticket-decomposition",
|
|
24
43
|
tracker_kind: "local-markdown",
|
|
25
44
|
ticket_decomposition_result_ref: "docs/.scratch/demo/evidence/ticket-decomposition-result.yaml",
|
|
@@ -45,6 +64,19 @@ const validTicketState = {
|
|
|
45
64
|
|
|
46
65
|
const valid = validateTicketFormalization(validTicketState, options);
|
|
47
66
|
assert.equal(valid.result, "allowed");
|
|
67
|
+
assert.equal(validateImplementationRepositoriesReady(validTicketState, options).result, "allowed");
|
|
68
|
+
const initializedState = {
|
|
69
|
+
delivery_impacts: { backend: true, frontend: true },
|
|
70
|
+
implementation_repository_preparation: {
|
|
71
|
+
result: "completed", current_version: true, evidence_refs: ["docs/.scratch/demo/evidence/repository-preparation.yaml"],
|
|
72
|
+
projects: [
|
|
73
|
+
{ project_id: "backend-ddd", delivery_role: "backend", status: "initialized-and-verified", repository_ref: "git://backend", project_root: "/workspace/backend", repository_scope: "external-repository", architecture_family: "domain-driven", scaffold_contract: { schema_version: 4, status: "approved", persisted: true, current_version: true }, scaffold_manifest_ref: "docs/.scratch/demo/evidence/backend-manifest.json", scaffold_verification: { status: "passed", ref: "docs/.scratch/demo/evidence/backend-verification.json" } },
|
|
74
|
+
{ project_id: "frontend", delivery_role: "frontend", status: "initialized-and-verified", repository_ref: "git://frontend", project_root: "/workspace/frontend", repository_scope: "external-repository", template_available: true, scaffold_contract: { schema_version: 4, status: "approved", persisted: true, current_version: true }, scaffold_manifest_ref: "docs/.scratch/demo/evidence/frontend-manifest.json", scaffold_verification: { status: "passed", ref: "docs/.scratch/demo/evidence/frontend-verification.json" } },
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
assert.equal(validateImplementationRepositoriesReady(initializedState, options).result, "allowed");
|
|
79
|
+
assert.equal(validateImplementationRepositoriesReady({ delivery_impacts: { backend: false, frontend: false }, implementation_repository_preparation: { result: "completed", current_version: true, evidence_refs: ["docs/.scratch/demo/evidence/repository-preparation.yaml"], projects: [{ project_id: "backend-na", delivery_role: "backend", status: "not-applicable", reason: "no backend impact" }, { project_id: "frontend-na", delivery_role: "frontend", status: "not-applicable", reason: "no frontend impact" }] } }, options).result, "allowed");
|
|
48
80
|
|
|
49
81
|
const implementation = validateImplementationEntry({
|
|
50
82
|
...validTicketState,
|
|
@@ -53,6 +85,11 @@ const implementation = validateImplementationEntry({
|
|
|
53
85
|
assert.equal(implementation.result, "allowed");
|
|
54
86
|
|
|
55
87
|
const cases = [
|
|
88
|
+
["missing repository preparation", { ...validTicketState, implementation_repository_preparation: undefined }, "implementation-repository-decision-required"],
|
|
89
|
+
["stale repository preparation", { ...validTicketState, implementation_repositories_stale: true }, "implementation-repositories-stale"],
|
|
90
|
+
["missing frontend decision", { ...validTicketState, implementation_repository_preparation: { ...validTicketState.implementation_repository_preparation, projects: validTicketState.implementation_repository_preparation.projects.filter((item) => item.delivery_role !== "frontend") } }, "implementation-repository-decision-required"],
|
|
91
|
+
["missing repository location", { ...validTicketState, implementation_repository_preparation: { ...validTicketState.implementation_repository_preparation, projects: validTicketState.implementation_repository_preparation.projects.map((item) => item.delivery_role === "backend" ? { ...item, project_root: undefined } : item) } }, "implementation-repository-location-required"],
|
|
92
|
+
["incomplete onboarding", { ...validTicketState, implementation_repository_preparation: { ...validTicketState.implementation_repository_preparation, projects: validTicketState.implementation_repository_preparation.projects.map((item) => item.delivery_role === "backend" ? { ...item, onboarding_result: { status: "blocked" } } : item) } }, "implementation-repository-onboarding-incomplete"],
|
|
56
93
|
["missing decomposition result ref", { ...validTicketState, ticket_decomposition_result_ref: undefined }, "ticket-decomposition-result-ref-missing"],
|
|
57
94
|
["missing slice ref", { ...validTicketState, vertical_slice_ticket_ref: undefined }, "vertical-slice-ticket-ref-missing"],
|
|
58
95
|
["missing slice role", { ...validTicketState, vertical_slice_ticket_role: undefined }, "vertical-slice-ticket-role-missing"],
|
|
@@ -90,7 +127,10 @@ for (const current of ["work-unit.spec-synthesis", "work-unit.prototype-design",
|
|
|
90
127
|
assert.equal(result.result, "blocked", current);
|
|
91
128
|
assert.ok(result.blocking_signals.includes("ticket-formalization-required"), current);
|
|
92
129
|
}
|
|
93
|
-
assert.equal(validateNextRoute("work-unit.spec-synthesis", "work-unit.ticket-decomposition").result, "
|
|
130
|
+
assert.equal(validateNextRoute("work-unit.spec-synthesis", "work-unit.ticket-decomposition").result, "blocked");
|
|
131
|
+
assert.equal(validateNextRoute("work-unit.technical-analysis", "work-unit.implementation-repository-preparation").result, "allowed");
|
|
132
|
+
assert.equal(validateNextRoute("work-unit.implementation-repository-preparation", "work-unit.ticket-decomposition", validTicketState, options).result, "allowed");
|
|
133
|
+
assert.ok(validateNextRoute("work-unit.implementation-repository-preparation", "work-unit.ticket-decomposition", {}, options).blocking_signals.includes("implementation-repository-decision-required"));
|
|
94
134
|
assert.equal(validateNextRoute("work-unit.intensity-aware-verification", "work-unit.intensity-aware-review").result, "allowed");
|
|
95
135
|
assert.equal(validateNextRoute("work-unit.release-and-rollback", null).result, "allowed");
|
|
96
136
|
const arbitraryReadable = validateTicketFormalization({
|
|
@@ -110,6 +150,6 @@ assert.equal(validateTicketFormalization({
|
|
|
110
150
|
vertical_slice_ticket_ref: "https://github.com/example/project/issues/1",
|
|
111
151
|
vertical_slice_ticket: { ref: "https://github.com/example/project/issues/1", kind: "vertical-slice-ticket", role: "ready-for-agent" },
|
|
112
152
|
slice_contract: { ...validTicketState.slice_contract, ticket_ref: "https://github.com/example/project/issues/1" },
|
|
113
|
-
}, { ...options, exists: (ref) => ref === "https://github.com/example/project/issues/1", read: (ref) => ref === "https://github.com/example/project/issues/1" ? decompositionResult.replace("docs/.scratch/demo/evidence/ticket-decomposition-result.yaml", "https://github.com/example/project/issues/1") : readFileSync(ref, "utf8") }).result, "allowed");
|
|
153
|
+
}, { ...options, exists: (ref) => ref === "https://github.com/example/project/issues/1" || exists(ref), read: (ref) => ref === "https://github.com/example/project/issues/1" ? decompositionResult.replace("docs/.scratch/demo/evidence/ticket-decomposition-result.yaml", "https://github.com/example/project/issues/1") : readFileSync(ref, "utf8") }).result, "allowed");
|
|
114
154
|
|
|
115
155
|
process.stdout.write("生命周期转换压力场景验证通过\n");
|
|
@@ -9,7 +9,7 @@ import { fixture, context } from './fixtures/strategic-handoff/fixture.mjs';
|
|
|
9
9
|
import { exportBundle, openBundle, importBundle } from './lib/strategic-handoff.mjs';
|
|
10
10
|
import { read, json, hash, digest } from './lib/strategic-handoff-io.mjs';
|
|
11
11
|
import { parseContextContract } from './lib/context-contract.mjs';
|
|
12
|
-
const setup=async t=>{const base=mkdtempSync(path.join(tmpdir(),'handoff-test-'));t.after(()=>rmSync(base,{recursive:true,force:true}));const source=path.join(base,'source');mkdirSync(source);return{base,source,...await fixture(source)};};
|
|
12
|
+
const setup=async t=>{const base=mkdtempSync(path.join(tmpdir(),'handoff-test-'));t.after(()=>rmSync(base,{recursive:true,force:true}));const source=path.join(base,'source');mkdirSync(source);return{base,source,...await fixture(source,{technicalDesign:true})};};
|
|
13
13
|
function advanceStrategy(f,version='v2') {
|
|
14
14
|
f.handoff.handoff_version=version;
|
|
15
15
|
f.strategy.domain_version=version;
|
|
@@ -79,6 +79,12 @@ test('受控延期只阻断依赖切片;未知依赖扩大阻断;目标未
|
|
|
79
79
|
writeFileSync(path.join(target,'reconciliation.yaml'),json(record));
|
|
80
80
|
for(const row of tactical.strategic_handoff.rows)Object.assign(row,{disposition:'implemented',tactical_refs:['behavior.submit'],test_seam_refs:['test-seam.submit'],scenario_tests:[{outcome:'success',seam_ref:'test-seam.submit'},{outcome:'failure',seam_ref:'test-seam.submit'}],evidence_refs:['CONTEXT.md'],dependency_status:'known',dependent_slice_refs:['slice.submit']});
|
|
81
81
|
assert.equal((await verifyConsumption(tactical,{root:target})).result,'verified');
|
|
82
|
+
const mvc={schema_version:2,status:'approved',architecture:{family:'layered-mvc'},strategic_handoff:structuredClone(tactical.strategic_handoff),design:{use_case_catalog:[{use_case_id:'use-case.submit'}],test_seams:[{seam_id:'test-seam.submit',subject_ref:'use-case.submit'}]}};
|
|
83
|
+
for(const row of mvc.strategic_handoff.rows)row.tactical_refs=['use-case.submit'];
|
|
84
|
+
assert.equal((await verifyConsumption(mvc,{root:target})).result,'verified');
|
|
85
|
+
mvc.strategic_handoff.rows[0].tactical_refs=['aggregate.fake'];
|
|
86
|
+
await assert.rejects(()=>verifyConsumption(mvc,{root:target}),/落点悬空/);
|
|
87
|
+
|
|
82
88
|
const row=tactical.strategic_handoff.rows[0];Object.assign(row,{disposition:'deferred',reason:'分批实现',risk:'不能提交',owner:'需求负责人',followup_ticket_ref:'ticket.followup',verification_plan:'提交测试',target_version:'v2'});
|
|
83
89
|
assert.equal((await verifyConsumption(tactical,{root:target,sliceRef:'slice.submit'})).result,'blocked');
|
|
84
90
|
assert.equal((await verifyConsumption(tactical,{root:target,sliceRef:'slice.other'})).result,'verified');
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"revision": "c4d958f18cc947cb91cbe1bd48783fa4601cc18f"
|
|
22
22
|
},
|
|
23
23
|
"iloveZzz/yss-harness-design-agent": {
|
|
24
|
-
"revision": "
|
|
24
|
+
"revision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab"
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"skills": {
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"source": "mattpocock/skills",
|
|
64
64
|
"sourceType": "github",
|
|
65
65
|
"skillPath": "skills/engineering/code-review/SKILL.md",
|
|
66
|
-
"effectiveHash": "
|
|
66
|
+
"effectiveHash": "660ca39ab37b65099940b2e6a197089291e2fb74494ec93bbeb8e2fde6559465",
|
|
67
67
|
"sourceRevision": "0ab1b63a410a03d3627979a109c8695de27af954",
|
|
68
68
|
"upstreamHash": "12daafb9c4f77deb3c3303dc2e6f8a3c2a0ff7928fc004af959ba18b8bd38068",
|
|
69
69
|
"adaptationRef": "docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md",
|
|
@@ -559,7 +559,7 @@
|
|
|
559
559
|
"sourceType": "git-submodule",
|
|
560
560
|
"skillPath": ".agents/skills/prototype-review/SKILL.md",
|
|
561
561
|
"effectiveHash": "51021f119697dbff644d70c3d6ba3314147c47f412c6f56e4b5540ea3bf554a1",
|
|
562
|
-
"sourceRevision": "
|
|
562
|
+
"sourceRevision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab",
|
|
563
563
|
"upstreamHash": "2e77b3093a758bb692fb3bda453c5c020d0523f875975e17e2731365f67432e1",
|
|
564
564
|
"adaptationRef": "docs/agents/strategic-design-skills-integration.md",
|
|
565
565
|
"targets": [
|
|
@@ -824,7 +824,7 @@
|
|
|
824
824
|
"sourceType": "git-submodule",
|
|
825
825
|
"skillPath": ".agents/skills/yss-antd-design/SKILL.md",
|
|
826
826
|
"effectiveHash": "917099caa9b76ca3cfd1d0f81f61b28111c1c54ed93e92891f81012dcd0662e2",
|
|
827
|
-
"sourceRevision": "
|
|
827
|
+
"sourceRevision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab",
|
|
828
828
|
"upstreamHash": "08ce99d45586d5ea19e25fdd9e9a6ede16e66f18992b70b87e0cd23f92343b16",
|
|
829
829
|
"adaptationRef": "docs/agents/strategic-design-skills-integration.md",
|
|
830
830
|
"targets": [
|
|
@@ -842,7 +842,7 @@
|
|
|
842
842
|
"sourceType": "git-submodule",
|
|
843
843
|
"skillPath": ".agents/skills/yss-antdv-next-design/SKILL.md",
|
|
844
844
|
"effectiveHash": "8c55e3a815ace34fbf591e931a58970b3d58cb657e00432ca6c72938d307563b",
|
|
845
|
-
"sourceRevision": "
|
|
845
|
+
"sourceRevision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab",
|
|
846
846
|
"upstreamHash": "2942ed52dd58a38e51f09eb11254809334aeaed08f21cd081f09f35e6647a68c",
|
|
847
847
|
"adaptationRef": "docs/agents/strategic-design-skills-integration.md",
|
|
848
848
|
"targets": [
|
|
@@ -937,7 +937,7 @@
|
|
|
937
937
|
"source": "project",
|
|
938
938
|
"sourceType": "local",
|
|
939
939
|
"skillPath": ".agents/skills/yss-ddd-scaffold-generator/SKILL.md",
|
|
940
|
-
"effectiveHash": "
|
|
940
|
+
"effectiveHash": "96e1c82c538a96af293273906db5ddefcf9943e8b76bb47b05d08772f16258cb",
|
|
941
941
|
"targets": [
|
|
942
942
|
".agents/skills",
|
|
943
943
|
".claude/skills",
|
|
@@ -953,7 +953,7 @@
|
|
|
953
953
|
"sourceType": "git-submodule",
|
|
954
954
|
"skillPath": ".agents/skills/yss-design-system/SKILL.md",
|
|
955
955
|
"effectiveHash": "e69597b8b6a5ce4de5bd40f67630443b8176202f6b028b2ce146a2a1d062816f",
|
|
956
|
-
"sourceRevision": "
|
|
956
|
+
"sourceRevision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab",
|
|
957
957
|
"upstreamHash": "90aaf06b2514353152464a4d032076fa9d5ef56272d8ad526f5544f3c22a2b00",
|
|
958
958
|
"adaptationRef": "docs/agents/strategic-design-skills-integration.md",
|
|
959
959
|
"targets": [
|
|
@@ -985,7 +985,7 @@
|
|
|
985
985
|
"source": "project",
|
|
986
986
|
"sourceType": "local",
|
|
987
987
|
"skillPath": ".agents/skills/yss-domain/SKILL.md",
|
|
988
|
-
"effectiveHash": "
|
|
988
|
+
"effectiveHash": "e682e141ac6cdb9d97296f270e314a6c7d00ebf574f8a9aaba557dcd8f6553b7",
|
|
989
989
|
"targets": [
|
|
990
990
|
".agents/skills",
|
|
991
991
|
".claude/skills",
|
|
@@ -1078,7 +1078,7 @@
|
|
|
1078
1078
|
"source": "project",
|
|
1079
1079
|
"sourceType": "local",
|
|
1080
1080
|
"skillPath": ".agents/skills/yss-frontend-scaffold-generator/SKILL.md",
|
|
1081
|
-
"effectiveHash": "
|
|
1081
|
+
"effectiveHash": "968c213c90a30d719e51050a6122ef729bc03ae97d2841a5d47824d68a5d27ff",
|
|
1082
1082
|
"targets": [
|
|
1083
1083
|
".agents/skills",
|
|
1084
1084
|
".claude/skills",
|
|
@@ -1108,7 +1108,7 @@
|
|
|
1108
1108
|
"source": "project",
|
|
1109
1109
|
"sourceType": "local",
|
|
1110
1110
|
"skillPath": ".agents/skills/yss-implementation-contract-compiler/SKILL.md",
|
|
1111
|
-
"effectiveHash": "
|
|
1111
|
+
"effectiveHash": "96582c950a13f26a7c16b2087d0614cb28a99f0f805190fc64cfc80e6456c335",
|
|
1112
1112
|
"targets": [
|
|
1113
1113
|
".agents/skills",
|
|
1114
1114
|
".claude/skills",
|
|
@@ -1123,7 +1123,7 @@
|
|
|
1123
1123
|
"source": "project",
|
|
1124
1124
|
"sourceType": "local",
|
|
1125
1125
|
"skillPath": ".agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md",
|
|
1126
|
-
"effectiveHash": "
|
|
1126
|
+
"effectiveHash": "50d0f704326fc523c29f4b728c08148cde372c674b9e8686829bee3e74b66fdc",
|
|
1127
1127
|
"targets": [
|
|
1128
1128
|
".agents/skills",
|
|
1129
1129
|
".claude/skills",
|
|
@@ -1149,6 +1149,21 @@
|
|
|
1149
1149
|
".trae/skills"
|
|
1150
1150
|
]
|
|
1151
1151
|
},
|
|
1152
|
+
"yss-mvc-design": {
|
|
1153
|
+
"source": "project",
|
|
1154
|
+
"sourceType": "local",
|
|
1155
|
+
"skillPath": ".agents/skills/yss-mvc-design/SKILL.md",
|
|
1156
|
+
"effectiveHash": "b3deae27723c3a0e9e32c8f5b40fb1295d082a31ccea3f4d9a190b47a704efd3",
|
|
1157
|
+
"targets": [
|
|
1158
|
+
".agents/skills",
|
|
1159
|
+
".claude/skills",
|
|
1160
|
+
".codex/skills",
|
|
1161
|
+
".cursor/skills",
|
|
1162
|
+
".pi/skills",
|
|
1163
|
+
".qoder/skills",
|
|
1164
|
+
".trae/skills"
|
|
1165
|
+
]
|
|
1166
|
+
},
|
|
1152
1167
|
"yss-mvc-scaffold-generator": {
|
|
1153
1168
|
"source": "project",
|
|
1154
1169
|
"sourceType": "local",
|
|
@@ -1168,7 +1183,7 @@
|
|
|
1168
1183
|
"source": "project",
|
|
1169
1184
|
"sourceType": "local",
|
|
1170
1185
|
"skillPath": ".agents/skills/yss-mybatis/SKILL.md",
|
|
1171
|
-
"effectiveHash": "
|
|
1186
|
+
"effectiveHash": "8ab792d519c045a8a682942185f9aae3dcabfe86dbd8a4a9a444d7f657798701",
|
|
1172
1187
|
"targets": [
|
|
1173
1188
|
".agents/skills",
|
|
1174
1189
|
".claude/skills",
|
|
@@ -1213,7 +1228,7 @@
|
|
|
1213
1228
|
"source": "project",
|
|
1214
1229
|
"sourceType": "local",
|
|
1215
1230
|
"skillPath": ".agents/skills/yss-product-lifecycle/SKILL.md",
|
|
1216
|
-
"effectiveHash": "
|
|
1231
|
+
"effectiveHash": "d317bd2799da0442745c8126e62f7919a0b3de03f2c3cc2e1a7ca0433dc69645",
|
|
1217
1232
|
"targets": [
|
|
1218
1233
|
".agents/skills",
|
|
1219
1234
|
".claude/skills",
|
|
@@ -1229,7 +1244,7 @@
|
|
|
1229
1244
|
"sourceType": "git-submodule",
|
|
1230
1245
|
"skillPath": ".agents/skills/yss-prototype-stage/SKILL.md",
|
|
1231
1246
|
"effectiveHash": "0ecf3125a73d15e4c9b6b665f92535180df82ccb2255fa863ec59f3ff5d460aa",
|
|
1232
|
-
"sourceRevision": "
|
|
1247
|
+
"sourceRevision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab",
|
|
1233
1248
|
"upstreamHash": "e8f2f3a507da6bf7be0582e4a4dd9659381da8e291755070698a1f51a4e33808",
|
|
1234
1249
|
"adaptationRef": "docs/agents/strategic-design-skills-integration.md",
|
|
1235
1250
|
"targets": [
|
|
@@ -1246,7 +1261,7 @@
|
|
|
1246
1261
|
"source": "project",
|
|
1247
1262
|
"sourceType": "local",
|
|
1248
1263
|
"skillPath": ".agents/skills/yss-repository/SKILL.md",
|
|
1249
|
-
"effectiveHash": "
|
|
1264
|
+
"effectiveHash": "0abe4e8f4896613985074615281f11711b807fcfc5727a6e6d2e7d2ebcf7ddc7",
|
|
1250
1265
|
"targets": [
|
|
1251
1266
|
".agents/skills",
|
|
1252
1267
|
".claude/skills",
|
|
@@ -1309,7 +1324,7 @@
|
|
|
1309
1324
|
"source": "project",
|
|
1310
1325
|
"sourceType": "local",
|
|
1311
1326
|
"skillPath": ".agents/skills/yss-skill-source-index-refresh/SKILL.md",
|
|
1312
|
-
"effectiveHash": "
|
|
1327
|
+
"effectiveHash": "96ff974a0f7b3db8de09680daf9ecada94dd19f608341dcc85a32d40c02591b0",
|
|
1313
1328
|
"targets": [
|
|
1314
1329
|
".agents/skills",
|
|
1315
1330
|
".claude/skills",
|
|
@@ -1325,7 +1340,7 @@
|
|
|
1325
1340
|
"sourceType": "git-submodule",
|
|
1326
1341
|
"skillPath": ".agents/skills/yss-stage-decision/SKILL.md",
|
|
1327
1342
|
"effectiveHash": "63e222ec2bc572c8d66fc52143ba3862650d243f57e1e9c71214b533eba37c23",
|
|
1328
|
-
"sourceRevision": "
|
|
1343
|
+
"sourceRevision": "8a67e0f5a56aa5085d18c2b42bb540c8f36c2fab",
|
|
1329
1344
|
"upstreamHash": "1eadf230f0e17bf6d209c1df1249acef3520ab29c26a80c476a2a557a224c10a",
|
|
1330
1345
|
"adaptationRef": "docs/agents/strategic-design-skills-integration.md",
|
|
1331
1346
|
"targets": [
|
|
@@ -1342,7 +1357,22 @@
|
|
|
1342
1357
|
"source": "project",
|
|
1343
1358
|
"sourceType": "local",
|
|
1344
1359
|
"skillPath": ".agents/skills/yss-tactical-design/SKILL.md",
|
|
1345
|
-
"effectiveHash": "
|
|
1360
|
+
"effectiveHash": "2ffb26709fd68184e0fe8f724318dc748fc479dcf52af236fe63f49a17540bfa",
|
|
1361
|
+
"targets": [
|
|
1362
|
+
".agents/skills",
|
|
1363
|
+
".claude/skills",
|
|
1364
|
+
".codex/skills",
|
|
1365
|
+
".cursor/skills",
|
|
1366
|
+
".pi/skills",
|
|
1367
|
+
".qoder/skills",
|
|
1368
|
+
".trae/skills"
|
|
1369
|
+
]
|
|
1370
|
+
},
|
|
1371
|
+
"yss-technical-design": {
|
|
1372
|
+
"source": "project",
|
|
1373
|
+
"sourceType": "local",
|
|
1374
|
+
"skillPath": ".agents/skills/yss-technical-design/SKILL.md",
|
|
1375
|
+
"effectiveHash": "a4226303571483b115ef7134f9615440ce8b7d39f209be39e1bc16152e080a9f",
|
|
1346
1376
|
"targets": [
|
|
1347
1377
|
".agents/skills",
|
|
1348
1378
|
".claude/skills",
|
package/template.snapshot.json
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"templateName": "yss-spec-project-template",
|
|
4
4
|
"templateSource": "github:iloveZzz/yss-spec-project-template",
|
|
5
5
|
"templateRepository": "https://github.com/iloveZzz/yss-spec-project-template.git",
|
|
6
|
-
"requestedRef": "
|
|
7
|
-
"templateCommit": "
|
|
6
|
+
"requestedRef": "6f5c5d80adcdb743fb06199f70a7ab0b0a640ce5",
|
|
7
|
+
"templateCommit": "6f5c5d80adcdb743fb06199f70a7ab0b0a640ce5",
|
|
8
8
|
"manifestHash": "f7520dfdfa388b19ea47cb893c2daab8936019783aa84589f13921e459702280",
|
|
9
9
|
"encodedPaths": {
|
|
10
10
|
".codex/skills/data-analytics/.gitignore": ".codex/skills/data-analytics/__yss_dotfile__.gitignore",
|
|
@@ -12,6 +12,6 @@
|
|
|
12
12
|
".codex/skills/product-design/templates/prototype/.npmrc": ".codex/skills/product-design/templates/prototype/__yss_dotfile__.npmrc",
|
|
13
13
|
".gitignore": "__yss_dotfile__.gitignore"
|
|
14
14
|
},
|
|
15
|
-
"snapshotHash": "
|
|
16
|
-
"generatedAt": "2026-09-
|
|
15
|
+
"snapshotHash": "2a676bf4ed0d3151bab51ad900181cbb8fdd628385572e11dd398bcbaceab61b",
|
|
16
|
+
"generatedAt": "2026-09-09T02:16:12.516Z"
|
|
17
17
|
}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
package com.yss.cloud.mybatis.support;
|
|
2
|
-
|
|
3
|
-
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
4
|
-
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
|
5
|
-
import io.mybatis.mapper.BaseMapper;
|
|
6
|
-
import io.mybatis.mapper.list.ListMapper;
|
|
7
|
-
import io.mybatis.mapper.list.ListProvider;
|
|
8
|
-
import io.mybatis.provider.Caching;
|
|
9
|
-
import com.baomidou.mybatisplus.core.mapper.Mapper;
|
|
10
|
-
import org.apache.ibatis.annotations.*;
|
|
11
|
-
|
|
12
|
-
import java.io.Serializable;
|
|
13
|
-
import java.util.Collection;
|
|
14
|
-
import java.util.List;
|
|
15
|
-
import java.util.Map;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* @author zhudaoming
|
|
19
|
-
*/
|
|
20
|
-
public interface BaseRepository<T, D extends Serializable> extends Mapper<T>, BaseMapper<T, D>, ListMapper<T> {
|
|
21
|
-
/**s
|
|
22
|
-
/**
|
|
23
|
-
* 删除(根据ID或实体 批量删除)
|
|
24
|
-
*
|
|
25
|
-
* @param idList 主键ID列表或实体列表(不能为 null 以及 empty)
|
|
26
|
-
*/
|
|
27
|
-
int deleteBatchIds(@Param(Constants.COLL) Collection<?> idList);
|
|
28
|
-
/**
|
|
29
|
-
* 查询(根据ID 批量查询)
|
|
30
|
-
*
|
|
31
|
-
* @param idList 主键ID列表(不能为 null 以及 empty)
|
|
32
|
-
*/
|
|
33
|
-
List<T> selectBatchIds(@Param(Constants.COLL) Collection<? extends Serializable> idList);
|
|
34
|
-
/**
|
|
35
|
-
* 查询(根据 columnMap 条件)
|
|
36
|
-
*
|
|
37
|
-
* @param columnMap 表字段 map 对象
|
|
38
|
-
*/
|
|
39
|
-
List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
|
|
40
|
-
/**
|
|
41
|
-
* 根据 Wrapper 条件,查询全部记录
|
|
42
|
-
*
|
|
43
|
-
* @param queryWrapper 实体对象封装操作类(可以为 null)
|
|
44
|
-
*/
|
|
45
|
-
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* 根据 Wrapper 条件,查询全部记录
|
|
49
|
-
* <p>注意: 只返回第一个字段的值</p>
|
|
50
|
-
*
|
|
51
|
-
* @param queryWrapper 实体对象封装操作类(可以为 null)
|
|
52
|
-
*/
|
|
53
|
-
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
|
|
54
|
-
/**
|
|
55
|
-
* 保存实体,默认主键自增,并且名称为 id
|
|
56
|
-
* <p>
|
|
57
|
-
* 这个方法是个示例,你可以在自己的接口中使用相同的方式覆盖父接口中的配置
|
|
58
|
-
*
|
|
59
|
-
* @param entity 实体类
|
|
60
|
-
* @return 1成功,0失败
|
|
61
|
-
*/
|
|
62
|
-
@Override
|
|
63
|
-
@Lang(Caching.class)
|
|
64
|
-
@Options(useGeneratedKeys = true)
|
|
65
|
-
@InsertProvider(type = EntityProvider.class, method = "insert")
|
|
66
|
-
<S extends T> int insert(S entity);
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* 保存实体中不为空的字段,默认主键自增,并且名称为 id
|
|
70
|
-
* <p>
|
|
71
|
-
* 这个方法是个示例,你可以在自己的接口中使用相同的方式覆盖父接口中的配置
|
|
72
|
-
*
|
|
73
|
-
* @param entity 实体类
|
|
74
|
-
* @return 1成功,0失败
|
|
75
|
-
*/
|
|
76
|
-
@Override
|
|
77
|
-
@Lang(Caching.class)
|
|
78
|
-
@Options(useGeneratedKeys = true)
|
|
79
|
-
@InsertProvider(type = EntityProvider.class, method = "insertSelective")
|
|
80
|
-
<S extends T> int insertSelective(S entity);
|
|
81
|
-
|
|
82
|
-
@Override
|
|
83
|
-
@Lang(Caching.class)
|
|
84
|
-
@Options(useGeneratedKeys = true)
|
|
85
|
-
@InsertProvider(type = ListProvider.class, method = "insertList")
|
|
86
|
-
<S extends T> int insertList(@Param("entityList") List<S> entityList);
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* 批量更新
|
|
90
|
-
*
|
|
91
|
-
* @author dengsd
|
|
92
|
-
* @date 2022/9/27 11:49
|
|
93
|
-
*/
|
|
94
|
-
@Override
|
|
95
|
-
@Lang(Caching.class)
|
|
96
|
-
@Options(useGeneratedKeys = true)
|
|
97
|
-
@UpdateProvider(type = ListProvider.class, method = "updateList")
|
|
98
|
-
<S extends T> int updateList(@Param("entityList") List<S> entityList);
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* 批量更新
|
|
103
|
-
*
|
|
104
|
-
* @author dengsd
|
|
105
|
-
* @date 2022/9/27 11:49
|
|
106
|
-
*/
|
|
107
|
-
@Override
|
|
108
|
-
@Lang(Caching.class)
|
|
109
|
-
@Options(useGeneratedKeys = true)
|
|
110
|
-
@UpdateProvider(type = ListProvider.class, method = "updateListSelective")
|
|
111
|
-
<S extends T> int updateListSelective(@Param("entityList") List<S> entityList);
|
|
112
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
package com.yss.cloud.mybatis.aop;
|
|
2
|
-
|
|
3
|
-
import com.github.pagehelper.Page;
|
|
4
|
-
import com.github.pagehelper.PageHelper;
|
|
5
|
-
import com.yss.cloud.dto.page.PageQuery;
|
|
6
|
-
import lombok.SneakyThrows;
|
|
7
|
-
import org.aspectj.lang.ProceedingJoinPoint;
|
|
8
|
-
import org.aspectj.lang.annotation.Around;
|
|
9
|
-
import org.aspectj.lang.annotation.Aspect;
|
|
10
|
-
|
|
11
|
-
@Aspect
|
|
12
|
-
public class EntityQueryAspect {
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* 字段开启分页的方法
|
|
16
|
-
*
|
|
17
|
-
* @apiNote 1. 包命名需符合规范 com.yss.datamiddle.(项目名).service?.impl.serviceImpl.method <br/> 2. 参数为pageQuery dto的方法
|
|
18
|
-
* @param joinPoint 加入切点
|
|
19
|
-
* @param pageQuery 查询分页对象dtp
|
|
20
|
-
* @return 执行结果
|
|
21
|
-
*/
|
|
22
|
-
@Around("( (execution(public * (@org.springframework.stereotype.Repository *).*(..)) || execution(* com.yss..*.gateway.impl.*.*(..))))&& (args(pageQuery)||args(pageQuery,..))")
|
|
23
|
-
@SneakyThrows
|
|
24
|
-
public Object interceptEntityQueries(ProceedingJoinPoint joinPoint, PageQuery pageQuery) {
|
|
25
|
-
if (pageQuery != null) {
|
|
26
|
-
//分页查询开始
|
|
27
|
-
Page<Object> page = PageHelper.offsetPage(pageQuery.getOffset(), pageQuery.getPageSize());
|
|
28
|
-
// 继续执行目标方法
|
|
29
|
-
Object result = joinPoint.proceed();
|
|
30
|
-
long total = page.getTotal();
|
|
31
|
-
pageQuery.setTempTotalCount(total);
|
|
32
|
-
return result;
|
|
33
|
-
}
|
|
34
|
-
// 不满足条件时直接执行目标方法
|
|
35
|
-
return joinPoint.proceed();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
package com.yss.cloud.mybatis;
|
|
2
|
-
|
|
3
|
-
import com.yss.cloud.mybatis.config.PageQueryEntityConfigration;
|
|
4
|
-
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
|
5
|
-
import org.springframework.context.annotation.Configuration;
|
|
6
|
-
import org.springframework.context.annotation.Import;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
@Configuration
|
|
10
|
-
@Import({
|
|
11
|
-
PageQueryEntityConfigration.class}
|
|
12
|
-
)
|
|
13
|
-
@EnableConfigurationProperties({PrimaryDataSourceProperties.class,
|
|
14
|
-
MybatisPlusGlobalProperties.class,
|
|
15
|
-
YssMybatisMapperProperties.class})
|
|
16
|
-
public class MybatisBaseConfiguration {
|
|
17
|
-
|
|
18
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
package com.yss.cloud.mybatis.config;
|
|
2
|
-
|
|
3
|
-
import com.yss.cloud.mybatis.aop.EntityQueryAspect;
|
|
4
|
-
import lombok.extern.slf4j.Slf4j;
|
|
5
|
-
import org.springframework.context.annotation.Bean;
|
|
6
|
-
import org.springframework.context.annotation.Configuration;
|
|
7
|
-
import org.springframework.context.annotation.Primary;
|
|
8
|
-
|
|
9
|
-
@Configuration
|
|
10
|
-
@Slf4j
|
|
11
|
-
public class PageQueryEntityConfigration {
|
|
12
|
-
@Primary
|
|
13
|
-
@Bean
|
|
14
|
-
public EntityQueryAspect entityQueryAspect() {
|
|
15
|
-
log.info("【MapperConfiguration】DataSource 获取数据源primaryDataSourceProperties配置");
|
|
16
|
-
return new EntityQueryAspect();
|
|
17
|
-
}
|
|
18
|
-
}
|