create-yss-spec 2.1.9 → 2.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/cli.js +82 -15
- package/template/.agents/skills/ask-matt/SKILL.md +8 -2
- package/template/.agents/skills/code-review/SKILL.md +6 -4
- package/template/.agents/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.agents/skills/domain-modeling/SKILL.md +1 -1
- package/template/.agents/skills/grilling/SKILL.md +7 -1
- package/template/.agents/skills/high-fidelity-html-prototype/SKILL.md +1 -1
- package/template/.agents/skills/implement/SKILL.md +1 -1
- package/template/.agents/skills/to-spec/SKILL.md +1 -1
- package/template/.agents/skills/triage/SKILL.md +2 -2
- package/template/.agents/skills/wait-what/SKILL.md +2 -2
- package/template/.agents/skills/wayfinder/SKILL.md +1 -1
- package/template/.agents/skills/yss-api-integration/SKILL.md +2 -0
- package/template/.agents/skills/yss-application/SKILL.md +52 -0
- package/template/.agents/skills/yss-application/agents/openai.yaml +5 -0
- package/template/.agents/skills/{yss-backend-scaffold-application/SKILL.md → yss-application/references/application-layer-guide.md} +0 -7
- package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
- package/template/.agents/skills/yss-domain/SKILL.md +5 -0
- package/template/{.claude/skills/yss-backend-scaffold-domain/SKILL.md → .agents/skills/yss-domain/references/domain-layer-guide.md} +0 -7
- package/template/.agents/skills/yss-microapp-commit/SKILL.md +2 -0
- package/template/.agents/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.agents/skills/yss-prototype-stage/SKILL.md +1 -1
- package/template/.agents/skills/yss-repository/SKILL.md +5 -0
- package/template/{.codex/skills/yss-backend-scaffold-infrastructure/SKILL.md → .agents/skills/yss-repository/references/infrastructure-layer-guide.md} +0 -7
- package/template/.agents/skills/yss-router/references/boundaries.md +2 -6
- package/template/.agents/skills/yss-router/references/router-contract.yaml +8 -12
- package/template/.agents/skills/yss-source-index/references/source-map-config.md +0 -4
- package/template/.agents/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
- package/template/.agents/skills/yss-web-controller/SKILL.md +1 -0
- package/template/{.codex/skills/yss-backend-scaffold-web/SKILL.md → .agents/skills/yss-web-controller/references/web-adapter-layer-guide.md} +0 -7
- package/template/.claude/skills/ask-matt/SKILL.md +8 -2
- package/template/.claude/skills/code-review/SKILL.md +6 -4
- package/template/.claude/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.claude/skills/domain-modeling/SKILL.md +1 -1
- package/template/.claude/skills/grilling/SKILL.md +7 -1
- package/template/.claude/skills/high-fidelity-html-prototype/SKILL.md +1 -1
- package/template/.claude/skills/implement/SKILL.md +1 -1
- package/template/.claude/skills/to-spec/SKILL.md +1 -1
- package/template/.claude/skills/triage/SKILL.md +2 -2
- package/template/.claude/skills/wait-what/SKILL.md +2 -2
- package/template/.claude/skills/wayfinder/SKILL.md +1 -1
- package/template/.claude/skills/yss-api-integration/SKILL.md +2 -0
- package/template/.claude/skills/yss-application/SKILL.md +52 -0
- package/template/.claude/skills/yss-application/agents/openai.yaml +5 -0
- package/template/{.codex/skills/yss-backend-scaffold-application/SKILL.md → .claude/skills/yss-application/references/application-layer-guide.md} +0 -7
- package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
- package/template/.claude/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
- package/template/.claude/skills/yss-domain/SKILL.md +5 -0
- package/template/{.agents/skills/yss-backend-scaffold-domain/SKILL.md → .claude/skills/yss-domain/references/domain-layer-guide.md} +0 -7
- package/template/.claude/skills/yss-microapp-commit/SKILL.md +2 -0
- package/template/.claude/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.claude/skills/yss-prototype-stage/SKILL.md +1 -1
- package/template/.claude/skills/yss-repository/SKILL.md +5 -0
- package/template/.claude/skills/{yss-backend-scaffold-infrastructure/SKILL.md → yss-repository/references/infrastructure-layer-guide.md} +0 -7
- package/template/.claude/skills/yss-router/references/boundaries.md +2 -6
- package/template/.claude/skills/yss-router/references/router-contract.yaml +8 -12
- package/template/.claude/skills/yss-source-index/references/source-map-config.md +0 -4
- package/template/.claude/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
- package/template/.claude/skills/yss-web-controller/SKILL.md +1 -0
- package/template/{.hermes/skills/yss-backend-scaffold-web/SKILL.md → .claude/skills/yss-web-controller/references/web-adapter-layer-guide.md} +0 -7
- package/template/.codex/skills/ask-matt/SKILL.md +8 -2
- package/template/.codex/skills/code-review/SKILL.md +6 -4
- package/template/.codex/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.codex/skills/domain-modeling/SKILL.md +1 -1
- package/template/.codex/skills/grilling/SKILL.md +7 -1
- package/template/.codex/skills/high-fidelity-html-prototype/SKILL.md +1 -1
- package/template/.codex/skills/implement/SKILL.md +1 -1
- package/template/.codex/skills/to-spec/SKILL.md +1 -1
- package/template/.codex/skills/triage/SKILL.md +2 -2
- package/template/.codex/skills/wait-what/SKILL.md +2 -2
- package/template/.codex/skills/wayfinder/SKILL.md +1 -1
- package/template/.codex/skills/yss-api-integration/SKILL.md +2 -0
- package/template/.codex/skills/yss-application/SKILL.md +52 -0
- package/template/.codex/skills/yss-application/agents/openai.yaml +5 -0
- package/template/{.claude/skills/yss-backend-scaffold-application/SKILL.md → .codex/skills/yss-application/references/application-layer-guide.md} +0 -7
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
- package/template/.codex/skills/yss-domain/SKILL.md +5 -0
- package/template/.codex/skills/{yss-backend-scaffold-domain/SKILL.md → yss-domain/references/domain-layer-guide.md} +0 -7
- package/template/.codex/skills/yss-microapp-commit/SKILL.md +2 -0
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.codex/skills/yss-prototype-stage/SKILL.md +1 -1
- package/template/.codex/skills/yss-repository/SKILL.md +5 -0
- package/template/{.hermes/skills/yss-backend-scaffold-infrastructure/SKILL.md → .codex/skills/yss-repository/references/infrastructure-layer-guide.md} +0 -7
- package/template/.codex/skills/yss-router/references/boundaries.md +2 -6
- package/template/.codex/skills/yss-router/references/router-contract.yaml +8 -12
- package/template/.codex/skills/yss-source-index/references/source-map-config.md +0 -4
- package/template/.codex/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
- package/template/.codex/skills/yss-web-controller/SKILL.md +1 -0
- package/template/{.agents/skills/yss-backend-scaffold-web/SKILL.md → .codex/skills/yss-web-controller/references/web-adapter-layer-guide.md} +0 -7
- package/template/.cursor/environment.json +5 -0
- package/template/.cursor/skills/alibaba-java-code-style/SKILL.md +51 -0
- package/template/.cursor/skills/alibaba-java-code-style/agents/openai.yaml +4 -0
- package/template/.cursor/skills/alibaba-java-code-style/references/database-engineering-design.md +147 -0
- package/template/.cursor/skills/alibaba-java-code-style/references/java-programming.md +178 -0
- package/template/.cursor/skills/alibaba-java-code-style/references/reliability-test-security.md +89 -0
- package/template/.cursor/skills/ask-matt/PHASE-BOUNDARIES.md +55 -0
- package/template/.cursor/skills/ask-matt/SKILL.md +95 -0
- package/template/.cursor/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.cursor/skills/code-review/SKILL.md +117 -0
- package/template/.cursor/skills/code-review/agents/openai.yaml +3 -0
- package/template/.cursor/skills/codebase-design/DEEPENING.md +37 -0
- package/template/.cursor/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/template/.cursor/skills/codebase-design/SKILL.md +114 -0
- package/template/.cursor/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.cursor/skills/competitive-intelligence/SKILL.md +94 -0
- package/template/.cursor/skills/cross-repo-implementation-routing/SKILL.md +51 -0
- package/template/.cursor/skills/diagnosing-bugs/SKILL.md +138 -0
- package/template/.cursor/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.cursor/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +44 -0
- package/template/.cursor/skills/dispatching-parallel-agents/SKILL.md +185 -0
- package/template/.cursor/skills/domain-modeling/ADR-FORMAT.md +47 -0
- package/template/.cursor/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/template/.cursor/skills/domain-modeling/SKILL.md +74 -0
- package/template/.cursor/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.cursor/skills/grill-me/SKILL.md +7 -0
- package/template/.cursor/skills/grill-me/agents/openai.yaml +5 -0
- package/template/.cursor/skills/grill-with-docs/SKILL.md +19 -0
- package/template/.cursor/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/{.agents/skills/batch-grill-me → .cursor/skills/grilling}/SKILL.md +19 -6
- package/template/.cursor/skills/grilling/agents/openai.yaml +3 -0
- package/template/.cursor/skills/handoff/SKILL.md +16 -0
- package/template/.cursor/skills/handoff/agents/openai.yaml +5 -0
- package/template/.cursor/skills/high-fidelity-html-prototype/SKILL.md +106 -0
- package/template/.cursor/skills/high-fidelity-html-prototype/agents/openai.yaml +5 -0
- package/template/.cursor/skills/implement/SKILL.md +15 -0
- package/template/.cursor/skills/implement/agents/openai.yaml +5 -0
- package/template/.cursor/skills/implementation-repo-onboarding/SKILL.md +50 -0
- package/template/.cursor/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
- package/template/.cursor/skills/improve-codebase-architecture/SKILL.md +71 -0
- package/template/.cursor/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.cursor/skills/lombok/SKILL.md +351 -0
- package/template/.cursor/skills/loop-me/SKILL.md +32 -0
- package/template/.cursor/skills/loop-me/agents/openai.yaml +5 -0
- package/template/.cursor/skills/maintaining-skills/SKILL.md +25 -0
- package/template/.cursor/skills/mapstruct/SKILL.md +334 -0
- package/template/.cursor/skills/migrate-to-shoehorn/SKILL.md +118 -0
- package/template/.cursor/skills/migrate-to-shoehorn/agents/openai.yaml +3 -0
- package/template/.cursor/skills/prototype/LOGIC.md +67 -0
- package/template/.cursor/skills/prototype/SKILL.md +26 -0
- package/template/.cursor/skills/prototype/UI.md +112 -0
- package/template/.cursor/skills/prototype/agents/openai.yaml +3 -0
- package/template/.cursor/skills/prototype-review/SKILL.md +74 -0
- package/template/.cursor/skills/prototype-review/agents/openai.yaml +4 -0
- package/template/.cursor/skills/research/SKILL.md +12 -0
- package/template/.cursor/skills/research/agents/openai.yaml +3 -0
- package/template/.cursor/skills/resolving-merge-conflicts/SKILL.md +14 -0
- package/template/.cursor/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.cursor/skills/scaffold-exercises/SKILL.md +106 -0
- package/template/.cursor/skills/scaffold-exercises/agents/openai.yaml +3 -0
- package/template/.cursor/skills/setup-matt-pocock-skills/SKILL.md +125 -0
- package/template/.cursor/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.cursor/skills/setup-matt-pocock-skills/domain.md +51 -0
- package/template/.cursor/skills/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
- package/template/.cursor/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
- package/template/.cursor/skills/setup-matt-pocock-skills/issue-tracker-local.md +66 -0
- package/template/.cursor/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/template/.cursor/skills/setup-pre-commit/SKILL.md +91 -0
- package/template/.cursor/skills/setup-pre-commit/agents/openai.yaml +3 -0
- package/template/.cursor/skills/setup-ts-deep-modules/SKILL.md +102 -0
- package/template/.cursor/skills/setup-ts-deep-modules/agents/openai.yaml +5 -0
- package/template/.cursor/skills/setup-ts-deep-modules/dependency-cruiser.config.cjs +95 -0
- package/template/.cursor/skills/tdd/SKILL.md +38 -0
- package/template/.cursor/skills/tdd/agents/openai.yaml +3 -0
- package/template/.cursor/skills/tdd/mocking.md +59 -0
- package/template/.cursor/skills/tdd/tests.md +77 -0
- package/template/.cursor/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/.cursor/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/.cursor/skills/teach/MISSION-FORMAT.md +31 -0
- package/template/.cursor/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/template/.cursor/skills/teach/SKILL.md +140 -0
- package/template/.cursor/skills/teach/agents/openai.yaml +5 -0
- package/template/.cursor/skills/to-questionnaire/SKILL.md +53 -0
- package/template/.cursor/skills/to-questionnaire/agents/openai.yaml +5 -0
- package/template/.cursor/skills/to-spec/SKILL.md +75 -0
- package/template/.cursor/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.cursor/skills/to-tickets/SKILL.md +105 -0
- package/template/.cursor/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.cursor/skills/triage/AGENT-BRIEF.md +207 -0
- package/template/.cursor/skills/triage/OUT-OF-SCOPE.md +105 -0
- package/template/.cursor/skills/triage/SKILL.md +112 -0
- package/template/.cursor/skills/triage/agents/openai.yaml +5 -0
- package/template/.cursor/skills/using-git-worktrees/SKILL.md +202 -0
- package/template/.cursor/skills/wait-what/SKILL.md +7 -0
- package/template/.cursor/skills/wait-what/agents/openai.yaml +5 -0
- package/template/.cursor/skills/wayfinder/SKILL.md +128 -0
- package/template/.cursor/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.cursor/skills/writing-beats/SKILL.md +67 -0
- package/template/.cursor/skills/writing-beats/agents/openai.yaml +5 -0
- package/template/.cursor/skills/writing-for-agents/SKILL-MECHANICS.md +22 -0
- package/template/.cursor/skills/writing-for-agents/SKILL.md +81 -0
- package/template/.cursor/skills/writing-for-agents/agents/openai.yaml +3 -0
- package/template/.cursor/skills/writing-fragments/SKILL.md +79 -0
- package/template/.cursor/skills/writing-fragments/agents/openai.yaml +5 -0
- package/template/.cursor/skills/writing-shape/SKILL.md +79 -0
- package/template/.cursor/skills/writing-shape/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-api-integration/SKILL.md +429 -0
- package/template/.cursor/skills/yss-api-integration/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-application/SKILL.md +52 -0
- package/template/.cursor/skills/yss-application/agents/openai.yaml +5 -0
- package/template/{.hermes/skills/yss-backend-scaffold-application/SKILL.md → .cursor/skills/yss-application/references/application-layer-guide.md} +0 -7
- package/template/.cursor/skills/yss-audit-log/SKILL.md +67 -0
- package/template/.cursor/skills/yss-audit-log/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-audit-log/assets/AuditLogAspect.java +262 -0
- package/template/.cursor/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +37 -0
- package/template/.cursor/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +18 -0
- package/template/.cursor/skills/yss-audit-log/assets/YssAuditPublishService.java +69 -0
- package/template/.cursor/skills/yss-audit-log/references/README.md +69 -0
- package/template/.cursor/skills/yss-audit-log/references/source-index.md +43 -0
- package/template/.cursor/skills/yss-cache/SKILL.md +44 -0
- package/template/.cursor/skills/yss-cache/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-cache/references/annotations.md +39 -0
- package/template/.cursor/skills/yss-cache/references/architecture.md +25 -0
- package/template/.cursor/skills/yss-cache/references/configuration.md +34 -0
- package/template/.cursor/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.cursor/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.cursor/skills/yss-cache/references/serialization.md +17 -0
- package/template/.cursor/skills/yss-cache/references/source-index.md +67 -0
- package/template/.cursor/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.cursor/skills/yss-cache/references/verification.md +34 -0
- package/template/.cursor/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.cursor/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.cursor/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/.cursor/skills/yss-components/SKILL.md +386 -0
- package/template/.cursor/skills/yss-components/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-components/references/frontend-docs.md +9 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +96 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/application.yml.template +37 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/logback-spring.xml.template +15 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/config/parent-pom.xml.template +84 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/adapter-pom.xml.template +19 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +43 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/bootstrap-pom.xml.template +50 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/domain-pom.xml.template +36 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/infrastructure-pom.xml.template +34 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +95 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +44 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/jvm.config +1 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/maven.config +3 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/settings.xml +128 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/MavenWrapperDownloader.java +117 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.jar +0 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/.mvn/wrapper/maven-wrapper.properties +18 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/mvnw +316 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/wrapper/mvnw.cmd +188 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +194 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +420 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +199 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +8 -0
- package/template/{.agents/skills → .cursor/skills/yss-ddd-scaffold-generator/references}/yss-backend-scaffold-application/agents/openai.yaml +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +8 -0
- package/template/{.claude/skills → .cursor/skills/yss-ddd-scaffold-generator/references}/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +8 -0
- package/template/{.claude/skills → .cursor/skills/yss-ddd-scaffold-generator/references}/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +138 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +8 -0
- package/template/{.claude/skills → .cursor/skills/yss-ddd-scaffold-generator/references}/yss-backend-scaffold-web/agents/openai.yaml +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +225 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +32 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +26 -0
- package/template/.cursor/skills/yss-design-system/SKILL.md +99 -0
- package/template/.cursor/skills/yss-design-system/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-design-system/references/design-system.md +237 -0
- package/template/.cursor/skills/yss-design-system/scripts/validate-frontmatter.mjs +36 -0
- package/template/.cursor/skills/yss-design-system/scripts/validate-frontmatter.test.mjs +12 -0
- package/template/.cursor/skills/yss-distributed-id/SKILL.md +69 -0
- package/template/.cursor/skills/yss-distributed-id/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-distributed-id/assets/AutoIdInterceptor.java +246 -0
- package/template/.cursor/skills/yss-distributed-id/assets/EnableDistributedId.java +25 -0
- package/template/.cursor/skills/yss-distributed-id/assets/LeafConf.java +36 -0
- package/template/.cursor/skills/yss-distributed-id/references/README.md +51 -0
- package/template/.cursor/skills/yss-distributed-id/references/source-index.md +86 -0
- package/template/.cursor/skills/yss-domain/SKILL.md +68 -0
- package/template/.cursor/skills/yss-domain/agents/openai.yaml +5 -0
- package/template/{.hermes/skills/yss-backend-scaffold-domain/SKILL.md → .cursor/skills/yss-domain/references/domain-layer-guide.md} +0 -7
- package/template/.cursor/skills/yss-dto/SKILL.md +86 -0
- package/template/.cursor/skills/yss-dto/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-dto/assets/CommandDTO.java +8 -0
- package/template/.cursor/skills/yss-dto/assets/PageQuery.java +133 -0
- package/template/.cursor/skills/yss-dto/assets/QueryDTO.java +6 -0
- package/template/.cursor/skills/yss-dto/assets/Result.java +105 -0
- package/template/.cursor/skills/yss-dto/references/README.md +67 -0
- package/template/.cursor/skills/yss-dto/references/openapi-wire-profile.yaml +181 -0
- package/template/.cursor/skills/yss-dto/references/source-index.md +55 -0
- package/template/.cursor/skills/yss-excel-mvc/SKILL.md +66 -0
- package/template/.cursor/skills/yss-excel-mvc/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-excel-mvc/assets/ExcelDynamicData.java +66 -0
- package/template/.cursor/skills/yss-excel-mvc/assets/RequestExcel.java +33 -0
- package/template/.cursor/skills/yss-excel-mvc/assets/RequestFastExcelArgumentResolver.java +272 -0
- package/template/.cursor/skills/yss-excel-mvc/assets/ResponseExcel.java +46 -0
- package/template/.cursor/skills/yss-excel-mvc/assets/ResponseFastExcelReturnValueHandler.java +154 -0
- package/template/.cursor/skills/yss-excel-mvc/references/README.md +5 -0
- package/template/.cursor/skills/yss-excel-mvc/references/source-index.md +74 -0
- package/template/.cursor/skills/yss-exception/SKILL.md +55 -0
- package/template/.cursor/skills/yss-exception/agents/openai.yaml +4 -0
- package/template/{.claude/skills/yss-log → .cursor/skills/yss-exception}/references/source-index.md +8 -7
- package/template/.cursor/skills/yss-formily/SKILL.md +304 -0
- package/template/.cursor/skills/yss-formily/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-formily/references/examples.md +65 -0
- package/template/.cursor/skills/yss-formily-schema-generator/SKILL.md +189 -0
- package/template/.cursor/skills/yss-formily-schema-generator/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-formily-schema-generator/assets/java-sdk/ExampleUsage.java +111 -0
- package/template/.cursor/skills/yss-formily-schema-generator/assets/java-sdk/YssFormilyDsl.java +1219 -0
- package/template/.cursor/skills/yss-formily-schema-generator/references/workflow.md +240 -0
- package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +76 -0
- package/template/.cursor/skills/yss-hook/SKILL.md +200 -0
- package/template/.cursor/skills/yss-hook/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-hook/references/frontend-docs.md +10 -0
- package/template/.cursor/skills/yss-microapp-commit/SKILL.md +201 -0
- package/template/.cursor/skills/yss-microapp-commit/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-microapp-commit/references/scope-mapping.md +204 -0
- package/template/.cursor/skills/yss-mybatis/SKILL.md +77 -0
- package/template/.cursor/skills/yss-mybatis/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-mybatis/assets/BaseRepository.java +112 -0
- package/template/.cursor/skills/yss-mybatis/assets/EntityQueryAspect.java +37 -0
- package/template/.cursor/skills/yss-mybatis/assets/MybatisBaseConfiguration.java +18 -0
- package/template/.cursor/skills/yss-mybatis/assets/PageQueryEntityConfigration.java +18 -0
- package/template/.cursor/skills/yss-mybatis/references/README.md +57 -0
- package/template/.cursor/skills/yss-mybatis/references/source-index.md +93 -0
- package/template/.cursor/skills/yss-openapi-draft-review/SKILL.md +82 -0
- package/template/.cursor/skills/yss-openapi-governance/SKILL.md +130 -0
- package/template/.cursor/skills/yss-openapi-governance/agents/openai.yaml +4 -0
- package/template/.cursor/skills/yss-page-module-development/SKILL.md +153 -0
- package/template/.cursor/skills/yss-page-module-development/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-page-module-development/examples/AdvancedFormPage/constant.ts +32 -0
- package/template/.cursor/skills/yss-page-module-development/examples/AdvancedFormPage/hooks/useRuleConfig.ts +158 -0
- package/template/.cursor/skills/yss-page-module-development/examples/AdvancedFormPage/index.vue +188 -0
- package/template/.cursor/skills/yss-page-module-development/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
- package/template/.cursor/skills/yss-page-module-development/examples/AdvancedFormPage/style.less +76 -0
- package/template/.cursor/skills/yss-page-module-development/examples/StandardListPage/constant.ts +128 -0
- package/template/.cursor/skills/yss-page-module-development/examples/StandardListPage/hooks/useQualityRuleList.ts +144 -0
- package/template/.cursor/skills/yss-page-module-development/examples/StandardListPage/hooks/useRuleActions.ts +141 -0
- package/template/.cursor/skills/yss-page-module-development/examples/StandardListPage/index.vue +175 -0
- package/template/.cursor/skills/yss-page-module-development/examples/StandardListPage/style.less +83 -0
- package/template/.cursor/skills/yss-page-module-development/references/frontend-docs.md +11 -0
- package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +49 -0
- package/template/.cursor/skills/yss-product-lifecycle/agents/openai.yaml +4 -0
- package/template/.cursor/skills/yss-product-lifecycle/references/artifact-dependencies.md +32 -0
- package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +122 -0
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +521 -0
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +103 -0
- package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +107 -0
- package/template/.cursor/skills/yss-prototype-stage/SKILL.md +40 -0
- package/template/.cursor/skills/yss-repository/SKILL.md +76 -0
- package/template/.cursor/skills/yss-repository/agents/openai.yaml +5 -0
- package/template/{.agents/skills/yss-backend-scaffold-infrastructure/SKILL.md → .cursor/skills/yss-repository/references/infrastructure-layer-guide.md} +0 -7
- package/template/.cursor/skills/yss-resilience4j/SKILL.md +46 -0
- package/template/.cursor/skills/yss-resilience4j/agents/openai.yaml +4 -0
- package/template/{.codex/skills/yss-jdbc → .cursor/skills/yss-resilience4j}/references/source-index.md +6 -6
- package/template/.cursor/skills/yss-router/SKILL.md +49 -0
- package/template/.cursor/skills/yss-router/agents/openai.yaml +4 -0
- package/template/.cursor/skills/yss-router/references/boundaries.md +50 -0
- package/template/.cursor/skills/yss-router/references/router-contract.yaml +245 -0
- package/template/.cursor/skills/yss-router/references/slice-implementation-contract.md +113 -0
- package/template/.cursor/skills/yss-router/references/yss-skill-execution-result.md +62 -0
- package/template/.cursor/skills/yss-security-algorithm/SKILL.md +52 -0
- package/template/.cursor/skills/yss-security-algorithm/agents/openai.yaml +4 -0
- package/template/{.hermes/skills/yss-jdbc → .cursor/skills/yss-security-algorithm}/references/source-index.md +7 -5
- package/template/.cursor/skills/yss-source-index/SKILL.md +63 -0
- package/template/.cursor/skills/yss-source-index/agents/openai.yaml +4 -0
- package/template/.cursor/skills/yss-source-index/references/source-location.md +18 -0
- package/template/.cursor/skills/yss-source-index/references/source-map-config.md +30 -0
- package/template/.cursor/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +24 -0
- package/template/.cursor/skills/yss-source-index/scripts/refresh-yss-skill-index.test.mjs +15 -0
- package/template/.cursor/skills/yss-ui/SKILL.md +169 -0
- package/template/.cursor/skills/yss-ui/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-ui/assets/demos/button/auth-basic.vue +24 -0
- package/template/.cursor/skills/yss-ui/assets/demos/button/auth-dropdown.vue +29 -0
- package/template/.cursor/skills/yss-ui/assets/demos/button/permission.vue +10 -0
- package/template/.cursor/skills/yss-ui/assets/demos/button/size.vue +12 -0
- package/template/.cursor/skills/yss-ui/assets/demos/button/states.vue +12 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/basic/index.vue +54 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/basic/style.less +41 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/cover/index.vue +25 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/flexible-layout/index.vue +122 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/flexible-layout/style.less +191 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/header-extra/index.vue +260 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/header-extra/style.less +124 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/layout-metrics/constants.ts +61 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/layout-metrics/index.vue +72 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/layout-metrics/metrics-cards.vue +70 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/layout-metrics/style.less +232 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/loading/index.vue +19 -0
- package/template/.cursor/skills/yss-ui/assets/demos/card/meta/index.vue +19 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/basic/constants.ts +44 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/basic/hooks/useConditionBasic.ts +18 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/basic/index.vue +100 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/linked/constants.ts +51 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/linked/hooks/useConditionLinked.ts +29 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/linked/index.vue +23 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/nesting-between/constants.ts +35 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/nesting-between/hooks/useConditionNesting.ts +25 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/nesting-between/index.vue +24 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/remote/constants.ts +7 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/remote/hooks/useConditionRemote.ts +75 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/remote/index.vue +23 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/validation/constants.ts +42 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/validation/hooks/useConditionBasic.ts +22 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/validation/index.vue +138 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/validation-custom/constants.ts +42 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/validation-custom/hooks/useConditionBasic.ts +22 -0
- package/template/.cursor/skills/yss-ui/assets/demos/condition-builder/validation-custom/index.vue +134 -0
- package/template/.cursor/skills/yss-ui/assets/demos/cron/basic/index.vue +54 -0
- package/template/.cursor/skills/yss-ui/assets/demos/cron/select/index.vue +145 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/basic.vue +30 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/calendar-heatmap.vue +49 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/candlestick.vue +30 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/dark.vue +40 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/expose-methods.vue +97 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/funnel.vue +42 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/gauge.vue +25 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/line.vue +24 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/mix.vue +33 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/pie.vue +34 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/radar.vue +38 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/ring-segment.vue +77 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/scatter.vue +23 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/stacked-area.vue +55 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/stacked-bar.vue +52 -0
- package/template/.cursor/skills/yss-ui/assets/demos/echarts/treemap.vue +30 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/all-types/hooks/useAllTypes.ts +259 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/all-types/index.vue +33 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/async-remote/hooks/useAsyncRemote.ts +201 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/async-remote/index.vue +45 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/basic/index.vue +104 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/big-data/index.vue +82 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/custom-rule/index.vue +114 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/direct-editable/index.vue +94 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/drag/index.vue +125 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/filter/index.vue +107 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/linkage/index.vue +181 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/pagination-action/index.vue +131 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/required/index.vue +95 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/row-edit/index.vue +220 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/row-options/index.vue +165 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/slot-linkage/index.vue +184 -0
- package/template/.cursor/skills/yss-ui/assets/demos/edit-table/submit-view/index.vue +107 -0
- package/template/.cursor/skills/yss-ui/assets/demos/file-import/basic.vue +54 -0
- package/template/.cursor/skills/yss-ui/assets/demos/file-import/formily.vue +42 -0
- package/template/.cursor/skills/yss-ui/assets/demos/file-import/multiple.vue +33 -0
- package/template/.cursor/skills/yss-ui/assets/demos/file-import/result-slot.vue +30 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/actions.vue +61 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/align.vue +56 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/async-validate.vue +69 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/basic.vue +317 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/collapse.vue +104 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/custom-component.vue +75 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/disabled.vue +71 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/dynamic-array.vue +74 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/dynamic.vue +59 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/effects.vue +117 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/events-inline.vue +82 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/events-scope.vue +101 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/grid.vue +71 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/group.vue +102 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/helper-slot.vue +50 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/label-tip.vue +42 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/linkage-multi.vue +127 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/linkage.vue +78 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/modes.vue +72 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/remote-enum.vue +88 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/slot.vue +54 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/steps.vue +135 -0
- package/template/.cursor/skills/yss-ui/assets/demos/formily/submit-failed.vue +72 -0
- package/template/.cursor/skills/yss-ui/assets/demos/monaco/basic.vue +40 -0
- package/template/.cursor/skills/yss-ui/assets/demos/monaco/diff-basic.vue +143 -0
- package/template/.cursor/skills/yss-ui/assets/demos/monaco/fullscreen.vue +84 -0
- package/template/.cursor/skills/yss-ui/assets/demos/monaco/history-log-viewer.vue +586 -0
- package/template/.cursor/skills/yss-ui/assets/demos/monaco/log-viewer.vue +260 -0
- package/template/.cursor/skills/yss-ui/assets/demos/monaco/mock/mockLogApi.ts +199 -0
- package/template/.cursor/skills/yss-ui/assets/demos/monaco/monaco.vue +66 -0
- package/template/.cursor/skills/yss-ui/assets/demos/monaco/readonly.vue +20 -0
- package/template/.cursor/skills/yss-ui/assets/demos/monaco/resizable.vue +22 -0
- package/template/.cursor/skills/yss-ui/assets/demos/monaco/sql-schema.vue +20 -0
- package/template/.cursor/skills/yss-ui/assets/demos/monaco/switch-lang-theme.vue +48 -0
- package/template/.cursor/skills/yss-ui/assets/demos/split-pane/tree-table/constant.ts +18 -0
- package/template/.cursor/skills/yss-ui/assets/demos/split-pane/tree-table/index.vue +60 -0
- package/template/.cursor/skills/yss-ui/assets/demos/split-pane/tree-table/style.less +39 -0
- package/template/.cursor/skills/yss-ui/assets/demos/split-pane/tree-table-layout/hooks/useTreeTable.ts +158 -0
- package/template/.cursor/skills/yss-ui/assets/demos/split-pane/tree-table-layout/index.vue +88 -0
- package/template/.cursor/skills/yss-ui/assets/demos/split-pane/tree-table-layout/style.less +73 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/action/index.vue +83 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/action/style.less +3 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/action-auth/index.vue +41 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/action-slot/index.vue +62 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/action-slot/style.less +36 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/basic/hooks/useBasicTable.ts +205 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/basic/index.vue +89 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/basic/style.less +28 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/column-custom-search/hooks/useColumnCustomSearch.ts +236 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/column-custom-search/index.vue +141 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/column-custom-search/style.less +48 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/drag/index.vue +42 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/expand/action-expand.vue +142 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/expand/index.vue +35 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/filter-async/index.vue +93 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/filter-auto/index.vue +99 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/filter-custom/index.vue +72 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/filter-local/index.vue +112 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/filter-mixed/index.vue +142 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/filter-remote/constant.ts +129 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/filter-remote/hooks/useTableData.ts +186 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/filter-remote/index.vue +73 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/group-header/index.vue +86 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/group-header/style.less +3 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/header-height/index.vue +29 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/header-height/style.less +9 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/merge-cells/hooks/useMergeCells.ts +183 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/merge-cells/index.vue +17 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/merge-cells/style.less +3 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/pagination-remote/hooks/usePaginationRemote.ts +106 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/pagination-remote/index.vue +24 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/renderers/index.vue +64 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/selection-checkbox/index.vue +88 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/selection-checkbox/style.less +9 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/selection-radio/index.vue +57 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/selection-radio/style.less +9 -0
- package/template/.cursor/skills/yss-ui/assets/demos/table/transform/index.vue +32 -0
- package/template/.cursor/skills/yss-ui/assets/demos/tree/basic-left/index.vue +124 -0
- package/template/.cursor/skills/yss-ui/assets/demos/tree/datasource-group/index.vue +31 -0
- package/template/.cursor/skills/yss-ui/assets/demos/tree/multi-checkable/index.vue +86 -0
- package/template/.cursor/skills/yss-ui/assets/demos/tree/multiple-select/index.vue +76 -0
- package/template/.cursor/skills/yss-ui/assets/demos/tree/resource-list/index.vue +41 -0
- package/template/.cursor/skills/yss-ui/assets/demos/tree/search-toolbar/index.vue +156 -0
- package/template/.cursor/skills/yss-ui/assets/demos/tree/slot-icon/index.vue +36 -0
- package/template/.cursor/skills/yss-ui/assets/demos/tree/slot-switcher-icon/index.vue +34 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/button.md +79 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/card.md +162 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/conditionBuilder.md +114 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/cron.md +77 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/echarts.md +110 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/editTable.md +212 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/fileImport.md +85 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/formily.md +370 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/monaco.md +369 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/sheet.md +169 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/split-pane.md +45 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/table.md +398 -0
- package/template/.cursor/skills/yss-ui/assets/docs/components/tree.md +102 -0
- package/template/.cursor/skills/yss-ui/assets/docs/guide/gitlab-ci-integration.md +166 -0
- package/template/.cursor/skills/yss-ui/assets/docs/guide/index.md +132 -0
- package/template/.cursor/skills/yss-ui/assets/docs/guide/installation.md +97 -0
- package/template/.cursor/skills/yss-ui/assets/docs/guide/jsp.md +227 -0
- package/template/.cursor/skills/yss-ui/assets/docs/guide/llms.md +295 -0
- package/template/.cursor/skills/yss-ui/assets/docs/guide/monorepo-versioning.md +149 -0
- package/template/.cursor/skills/yss-ui/assets/docs/guide/release-workflow.md +251 -0
- package/template/.cursor/skills/yss-ui/assets/docs/hooks/use-table-height.md +101 -0
- package/template/.cursor/skills/yss-ui/assets/docs/hooks/use-tree-height.md +115 -0
- package/template/.cursor/skills/yss-ui/assets/docs/hooks/useFullscreen.md +130 -0
- package/template/.cursor/skills/yss-ui/assets/docs/hooks/useLoading.md +97 -0
- package/template/.cursor/skills/yss-ui/assets/docs/root/resources.md +18 -0
- package/template/.cursor/skills/yss-ui/assets/keyword-index.json +53 -0
- package/template/.cursor/skills/yss-ui/assets/keyword-index.md +47 -0
- package/template/.cursor/skills/yss-ui/assets/reference-index.json +55 -0
- package/template/.cursor/skills/yss-ui/assets/reference-index.md +74 -0
- package/template/.cursor/skills/yss-ui/assets/scenario-index.json +50 -0
- package/template/.cursor/skills/yss-ui/assets/scenario-index.md +41 -0
- package/template/.cursor/skills/yss-ui/references/accessibility.md +23 -0
- package/template/.cursor/skills/yss-ui/references/antdv-compatibility.md +39 -0
- package/template/.cursor/skills/yss-ui/references/checklist.md +110 -0
- package/template/.cursor/skills/yss-ui/references/component-routing.md +31 -0
- package/template/.cursor/skills/yss-ui/references/frontend-docs.md +11 -0
- package/template/.cursor/skills/yss-ui/references/migration-antdv-to-yss.md +20 -0
- package/template/.cursor/skills/yss-ui/references/quick-recipes.md +280 -0
- package/template/.cursor/skills/yss-ui/references/theme-locale-overlay.md +25 -0
- package/template/.cursor/skills/yss-ui/references/verification.md +20 -0
- package/template/.cursor/skills/yss-up-springboot3/SKILL.md +40 -0
- package/template/.cursor/skills/yss-up-springboot3/agents/openai.yaml +4 -0
- package/template/.cursor/skills/yss-use-table-height/SKILL.md +340 -0
- package/template/.cursor/skills/yss-use-table-height/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-use-table-height/references/frontend-docs.md +9 -0
- package/template/.cursor/skills/yss-use-tree-height/SKILL.md +431 -0
- package/template/.cursor/skills/yss-use-tree-height/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-use-tree-height/references/frontend-docs.md +9 -0
- package/template/.cursor/skills/yss-userinfo/SKILL.md +49 -0
- package/template/.cursor/skills/yss-userinfo/agents/openai.yaml +4 -0
- package/template/{.claude/skills/yss-jdbc → .cursor/skills/yss-userinfo}/references/source-index.md +6 -5
- package/template/.cursor/skills/yss-validation/SKILL.md +56 -0
- package/template/.cursor/skills/yss-validation/agents/openai.yaml +4 -0
- package/template/{.agents/skills/yss-jdbc → .cursor/skills/yss-validation}/references/source-index.md +6 -6
- package/template/.cursor/skills/yss-web-controller/SKILL.md +78 -0
- package/template/.cursor/skills/yss-web-controller/agents/openai.yaml +5 -0
- package/template/.cursor/skills/yss-web-controller/assets/templates/Controller.java.template +73 -0
- package/template/.cursor/skills/yss-web-controller/assets/templates/WebConvertor.java.template +23 -0
- package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/cmd/AddCmd.java.template +23 -0
- package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/cmd/UpdateCmd.java.template +23 -0
- package/template/.cursor/skills/yss-web-controller/assets/templates/domain/dto/query/PageQuery.java.template +21 -0
- package/template/.cursor/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template +20 -0
- package/template/{.claude/skills/yss-backend-scaffold-web/SKILL.md → .cursor/skills/yss-web-controller/references/web-adapter-layer-guide.md} +0 -7
- package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.mjs +77 -0
- package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +19 -0
- package/template/.hermes/skills/ask-matt/SKILL.md +8 -2
- package/template/.hermes/skills/code-review/SKILL.md +6 -4
- package/template/.hermes/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.hermes/skills/domain-modeling/SKILL.md +1 -1
- package/template/.hermes/skills/grilling/SKILL.md +7 -1
- package/template/.hermes/skills/high-fidelity-html-prototype/SKILL.md +1 -1
- package/template/.hermes/skills/implement/SKILL.md +1 -1
- package/template/.hermes/skills/to-spec/SKILL.md +1 -1
- package/template/.hermes/skills/triage/SKILL.md +2 -2
- package/template/.hermes/skills/wait-what/SKILL.md +2 -2
- package/template/.hermes/skills/wayfinder/SKILL.md +1 -1
- package/template/.hermes/skills/yss-api-integration/SKILL.md +2 -0
- package/template/.hermes/skills/yss-application/SKILL.md +52 -0
- package/template/.hermes/skills/yss-application/agents/openai.yaml +5 -0
- package/template/.hermes/skills/yss-application/references/application-layer-guide.md +132 -0
- package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
- package/template/.hermes/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
- package/template/.hermes/skills/yss-domain/SKILL.md +5 -0
- package/template/.hermes/skills/yss-domain/references/domain-layer-guide.md +274 -0
- package/template/.hermes/skills/yss-microapp-commit/SKILL.md +2 -0
- package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.hermes/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.hermes/skills/yss-prototype-stage/SKILL.md +1 -1
- package/template/.hermes/skills/yss-repository/SKILL.md +5 -0
- package/template/.hermes/skills/yss-repository/references/infrastructure-layer-guide.md +192 -0
- package/template/.hermes/skills/yss-router/references/boundaries.md +2 -6
- package/template/.hermes/skills/yss-router/references/router-contract.yaml +8 -12
- package/template/.hermes/skills/yss-source-index/references/source-map-config.md +0 -4
- package/template/.hermes/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
- package/template/.hermes/skills/yss-web-controller/SKILL.md +1 -0
- package/template/.hermes/skills/yss-web-controller/references/web-adapter-layer-guide.md +168 -0
- package/template/.pi/skills/ask-matt/SKILL.md +8 -2
- package/template/.pi/skills/code-review/SKILL.md +6 -4
- package/template/.pi/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.pi/skills/domain-modeling/SKILL.md +1 -1
- package/template/.pi/skills/grilling/SKILL.md +7 -1
- package/template/.pi/skills/high-fidelity-html-prototype/SKILL.md +1 -1
- package/template/.pi/skills/implement/SKILL.md +1 -1
- package/template/.pi/skills/to-spec/SKILL.md +1 -1
- package/template/.pi/skills/triage/SKILL.md +2 -2
- package/template/.pi/skills/wait-what/SKILL.md +2 -2
- package/template/.pi/skills/wayfinder/SKILL.md +1 -1
- package/template/.pi/skills/yss-api-integration/SKILL.md +2 -0
- package/template/.pi/skills/yss-application/SKILL.md +52 -0
- package/template/.pi/skills/yss-application/agents/openai.yaml +5 -0
- package/template/.pi/skills/yss-application/references/application-layer-guide.md +132 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
- package/template/.pi/skills/yss-domain/SKILL.md +5 -0
- package/template/.pi/skills/yss-domain/references/domain-layer-guide.md +274 -0
- package/template/.pi/skills/yss-microapp-commit/SKILL.md +2 -0
- package/template/.pi/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.pi/skills/yss-prototype-stage/SKILL.md +1 -1
- package/template/.pi/skills/yss-repository/SKILL.md +5 -0
- package/template/.pi/skills/yss-repository/references/infrastructure-layer-guide.md +192 -0
- package/template/.pi/skills/yss-router/references/boundaries.md +2 -6
- package/template/.pi/skills/yss-router/references/router-contract.yaml +8 -12
- package/template/.pi/skills/yss-source-index/references/source-map-config.md +0 -4
- package/template/.pi/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
- package/template/.pi/skills/yss-web-controller/SKILL.md +1 -0
- package/template/.pi/skills/yss-web-controller/references/web-adapter-layer-guide.md +168 -0
- package/template/.qoder/skills/ask-matt/SKILL.md +8 -2
- package/template/.qoder/skills/code-review/SKILL.md +6 -4
- package/template/.qoder/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.qoder/skills/domain-modeling/SKILL.md +1 -1
- package/template/.qoder/skills/grilling/SKILL.md +7 -1
- package/template/.qoder/skills/high-fidelity-html-prototype/SKILL.md +1 -1
- package/template/.qoder/skills/implement/SKILL.md +1 -1
- package/template/.qoder/skills/to-spec/SKILL.md +1 -1
- package/template/.qoder/skills/triage/SKILL.md +2 -2
- package/template/.qoder/skills/wait-what/SKILL.md +2 -2
- package/template/.qoder/skills/wayfinder/SKILL.md +1 -1
- package/template/.qoder/skills/yss-api-integration/SKILL.md +2 -0
- package/template/.qoder/skills/yss-application/SKILL.md +52 -0
- package/template/.qoder/skills/yss-application/agents/openai.yaml +5 -0
- package/template/.qoder/skills/yss-application/references/application-layer-guide.md +132 -0
- package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
- package/template/.qoder/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
- package/template/.qoder/skills/yss-domain/SKILL.md +5 -0
- package/template/.qoder/skills/yss-domain/references/domain-layer-guide.md +274 -0
- package/template/.qoder/skills/yss-microapp-commit/SKILL.md +2 -0
- package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.qoder/skills/yss-prototype-stage/SKILL.md +1 -1
- package/template/.qoder/skills/yss-repository/SKILL.md +5 -0
- package/template/.qoder/skills/yss-repository/references/infrastructure-layer-guide.md +192 -0
- package/template/.qoder/skills/yss-router/references/boundaries.md +2 -6
- package/template/.qoder/skills/yss-router/references/router-contract.yaml +8 -12
- package/template/.qoder/skills/yss-source-index/references/source-map-config.md +0 -4
- package/template/.qoder/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
- package/template/.qoder/skills/yss-web-controller/SKILL.md +1 -0
- package/template/.qoder/skills/yss-web-controller/references/web-adapter-layer-guide.md +168 -0
- package/template/.trae/skills/ask-matt/SKILL.md +8 -2
- package/template/.trae/skills/code-review/SKILL.md +6 -4
- package/template/.trae/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.trae/skills/domain-modeling/SKILL.md +1 -1
- package/template/.trae/skills/grilling/SKILL.md +7 -1
- package/template/.trae/skills/high-fidelity-html-prototype/SKILL.md +1 -1
- package/template/.trae/skills/implement/SKILL.md +1 -1
- package/template/.trae/skills/to-spec/SKILL.md +1 -1
- package/template/.trae/skills/triage/SKILL.md +2 -2
- package/template/.trae/skills/wait-what/SKILL.md +2 -2
- package/template/.trae/skills/wayfinder/SKILL.md +1 -1
- package/template/.trae/skills/yss-api-integration/SKILL.md +2 -0
- package/template/.trae/skills/yss-application/SKILL.md +52 -0
- package/template/.trae/skills/yss-application/agents/openai.yaml +5 -0
- package/template/.trae/skills/yss-application/references/application-layer-guide.md +132 -0
- package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/ARCHITECTURE.md +4 -4
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +2 -2
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +1 -1
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +2 -2
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +1 -1
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +3 -3
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +1 -1
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +4 -4
- package/template/.trae/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +1 -1
- package/template/.trae/skills/yss-domain/SKILL.md +5 -0
- package/template/.trae/skills/yss-domain/references/domain-layer-guide.md +274 -0
- package/template/.trae/skills/yss-microapp-commit/SKILL.md +2 -0
- package/template/.trae/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.trae/skills/yss-prototype-stage/SKILL.md +1 -1
- package/template/.trae/skills/yss-repository/SKILL.md +5 -0
- package/template/.trae/skills/yss-repository/references/infrastructure-layer-guide.md +192 -0
- package/template/.trae/skills/yss-router/references/boundaries.md +2 -6
- package/template/.trae/skills/yss-router/references/router-contract.yaml +8 -12
- package/template/.trae/skills/yss-source-index/references/source-map-config.md +0 -4
- package/template/.trae/skills/yss-source-index/scripts/refresh-yss-skill-index.mjs +1 -1
- package/template/.trae/skills/yss-web-controller/SKILL.md +1 -0
- package/template/.trae/skills/yss-web-controller/references/web-adapter-layer-guide.md +168 -0
- package/template/AGENTS.md +16 -3
- package/template/CONTEXT.md +8 -4
- package/template/README.md +2 -1
- package/template/docs/adr/0007-lifecycle-native-work-units.md +5 -0
- package/template/docs/agents/README.md +6 -4
- package/template/docs/agents/skills-maintenance.md +14 -4
- package/template/docs/agents/yss-skill-registry.yaml +498 -0
- package/template/docs/architecture/templates/engineering-baseline-review-template.md +2 -2
- package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +1 -1
- package/template/docs/process/lifecycle-artifact-map.md +19 -15
- package/template/docs/process/lifecycle-registry-baseline.json +15 -1
- package/template/docs/process/lifecycle-registry.yaml +77 -0
- package/template/docs/process/schemas/frontend-implementation-evidence.schema.json +39 -0
- package/template/docs/process/schemas/lifecycle-checkpoint.schema.json +56 -0
- package/template/docs/process/schemas/lifecycle-registry.schema.json +2 -2
- package/template/docs/process/templates/frontend-implementation-plan-template.yaml +16 -0
- package/template/docs/process/templates/frontend-implementation-verification-template.yaml +21 -0
- package/template/docs/process/templates/lifecycle-checkpoint-template.yaml +30 -0
- package/template/docs/process/templates/stage-checkpoint-template.md +9 -5
- package/template/docs/templates/build-architecture-checklist-template.md +5 -5
- package/template/docs/templates/implementation-routing-template.md +5 -5
- package/template/docs/templates/review-report-template.md +3 -3
- package/template/docs/templates/vertical-slice-ticket-template.md +4 -4
- package/template/docs/user-guide//344/272/247/345/223/201/347/240/224/345/217/221/345/205/250/347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -1
- package/template/docs/user-guide//347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -2
- package/template/scripts/lib/lifecycle-registry.mjs +9 -4
- package/template/scripts/lib/scenario-checks.mjs +37 -15
- package/template/scripts/lib/skill-registry.mjs +198 -0
- package/template/scripts/lib/skill-supply-chain.mjs +39 -11
- package/template/scripts/verify-frontend-implementation-evidence +51 -0
- package/template/scripts/verify-lifecycle-checkpoint +37 -0
- package/template/scripts/verify-skill-registry +10 -0
- package/template/scripts/verify-template +6 -2
- package/template/scripts/verify-upstream-skill-source +32 -0
- package/template/skills-lock.json +205 -195
- package/template/yss-public-skills.json +2 -16
- package/template.manifest.json +12 -0
- package/template.snapshot.json +4 -4
- package/template/.agents/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.agents/skills/product-design-prototype/SKILL.md +0 -91
- package/template/.agents/skills/product-design-prototype/agents/openai.yaml +0 -4
- package/template/.agents/skills/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-backend-scaffold-web/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-dictionary/SKILL.md +0 -49
- package/template/.agents/skills/yss-dictionary/agents/openai.yaml +0 -4
- package/template/.agents/skills/yss-dictionary/references/source-index.md +0 -80
- package/template/.agents/skills/yss-jdbc/SKILL.md +0 -73
- package/template/.agents/skills/yss-jdbc/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
- package/template/.agents/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
- package/template/.agents/skills/yss-jdbc/assets/DsParam.java +0 -19
- package/template/.agents/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
- package/template/.agents/skills/yss-jdbc/references/README.md +0 -55
- package/template/.agents/skills/yss-log/SKILL.md +0 -48
- package/template/.agents/skills/yss-log/agents/openai.yaml +0 -4
- package/template/.agents/skills/yss-log/references/source-index.md +0 -34
- package/template/.agents/skills/yss-taskflow/SKILL.md +0 -58
- package/template/.agents/skills/yss-taskflow/agents/openai.yaml +0 -4
- package/template/.agents/skills/yss-taskflow/references/source-index.md +0 -158
- package/template/.claude/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.claude/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.claude/skills/product-design-prototype/SKILL.md +0 -91
- package/template/.claude/skills/product-design-prototype/agents/openai.yaml +0 -4
- package/template/.claude/skills/yss-backend-scaffold-application/agents/openai.yaml +0 -5
- package/template/.claude/skills/yss-dictionary/SKILL.md +0 -49
- package/template/.claude/skills/yss-dictionary/agents/openai.yaml +0 -4
- package/template/.claude/skills/yss-dictionary/references/source-index.md +0 -80
- package/template/.claude/skills/yss-jdbc/SKILL.md +0 -73
- package/template/.claude/skills/yss-jdbc/agents/openai.yaml +0 -5
- package/template/.claude/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
- package/template/.claude/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
- package/template/.claude/skills/yss-jdbc/assets/DsParam.java +0 -19
- package/template/.claude/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
- package/template/.claude/skills/yss-jdbc/references/README.md +0 -55
- package/template/.claude/skills/yss-log/SKILL.md +0 -48
- package/template/.claude/skills/yss-log/agents/openai.yaml +0 -4
- package/template/.claude/skills/yss-taskflow/SKILL.md +0 -58
- package/template/.claude/skills/yss-taskflow/agents/openai.yaml +0 -4
- package/template/.claude/skills/yss-taskflow/references/source-index.md +0 -158
- package/template/.codex/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.codex/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.codex/skills/product-design-prototype/SKILL.md +0 -91
- package/template/.codex/skills/product-design-prototype/agents/openai.yaml +0 -4
- package/template/.codex/skills/yss-backend-scaffold-application/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-backend-scaffold-web/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-dictionary/SKILL.md +0 -49
- package/template/.codex/skills/yss-dictionary/agents/openai.yaml +0 -4
- package/template/.codex/skills/yss-dictionary/references/source-index.md +0 -80
- package/template/.codex/skills/yss-jdbc/SKILL.md +0 -73
- package/template/.codex/skills/yss-jdbc/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
- package/template/.codex/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
- package/template/.codex/skills/yss-jdbc/assets/DsParam.java +0 -19
- package/template/.codex/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
- package/template/.codex/skills/yss-jdbc/references/README.md +0 -55
- package/template/.codex/skills/yss-log/SKILL.md +0 -48
- package/template/.codex/skills/yss-log/agents/openai.yaml +0 -4
- package/template/.codex/skills/yss-log/references/source-index.md +0 -34
- package/template/.codex/skills/yss-taskflow/SKILL.md +0 -58
- package/template/.codex/skills/yss-taskflow/agents/openai.yaml +0 -4
- package/template/.codex/skills/yss-taskflow/references/source-index.md +0 -158
- package/template/.hermes/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.hermes/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.hermes/skills/product-design-prototype/SKILL.md +0 -91
- package/template/.hermes/skills/product-design-prototype/agents/openai.yaml +0 -4
- package/template/.hermes/skills/yss-backend-scaffold-application/agents/openai.yaml +0 -5
- package/template/.hermes/skills/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
- package/template/.hermes/skills/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
- package/template/.hermes/skills/yss-backend-scaffold-web/agents/openai.yaml +0 -5
- package/template/.hermes/skills/yss-dictionary/SKILL.md +0 -49
- package/template/.hermes/skills/yss-dictionary/agents/openai.yaml +0 -4
- package/template/.hermes/skills/yss-dictionary/references/source-index.md +0 -80
- package/template/.hermes/skills/yss-jdbc/SKILL.md +0 -73
- package/template/.hermes/skills/yss-jdbc/agents/openai.yaml +0 -5
- package/template/.hermes/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
- package/template/.hermes/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
- package/template/.hermes/skills/yss-jdbc/assets/DsParam.java +0 -19
- package/template/.hermes/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
- package/template/.hermes/skills/yss-jdbc/references/README.md +0 -55
- package/template/.hermes/skills/yss-log/SKILL.md +0 -48
- package/template/.hermes/skills/yss-log/agents/openai.yaml +0 -4
- package/template/.hermes/skills/yss-log/references/source-index.md +0 -34
- package/template/.hermes/skills/yss-taskflow/SKILL.md +0 -58
- package/template/.hermes/skills/yss-taskflow/agents/openai.yaml +0 -4
- package/template/.hermes/skills/yss-taskflow/references/source-index.md +0 -158
- package/template/.pi/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.pi/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.pi/skills/product-design-prototype/SKILL.md +0 -91
- package/template/.pi/skills/product-design-prototype/agents/openai.yaml +0 -4
- package/template/.pi/skills/yss-backend-scaffold-application/SKILL.md +0 -139
- package/template/.pi/skills/yss-backend-scaffold-application/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-backend-scaffold-domain/SKILL.md +0 -281
- package/template/.pi/skills/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-backend-scaffold-infrastructure/SKILL.md +0 -199
- package/template/.pi/skills/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-backend-scaffold-web/SKILL.md +0 -175
- package/template/.pi/skills/yss-backend-scaffold-web/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-dictionary/SKILL.md +0 -49
- package/template/.pi/skills/yss-dictionary/agents/openai.yaml +0 -4
- package/template/.pi/skills/yss-dictionary/references/source-index.md +0 -80
- package/template/.pi/skills/yss-jdbc/SKILL.md +0 -73
- package/template/.pi/skills/yss-jdbc/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
- package/template/.pi/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
- package/template/.pi/skills/yss-jdbc/assets/DsParam.java +0 -19
- package/template/.pi/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
- package/template/.pi/skills/yss-jdbc/references/README.md +0 -55
- package/template/.pi/skills/yss-jdbc/references/source-index.md +0 -33
- package/template/.pi/skills/yss-log/SKILL.md +0 -48
- package/template/.pi/skills/yss-log/agents/openai.yaml +0 -4
- package/template/.pi/skills/yss-log/references/source-index.md +0 -34
- package/template/.pi/skills/yss-taskflow/SKILL.md +0 -58
- package/template/.pi/skills/yss-taskflow/agents/openai.yaml +0 -4
- package/template/.pi/skills/yss-taskflow/references/source-index.md +0 -158
- package/template/.qoder/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.qoder/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.qoder/skills/product-design-prototype/SKILL.md +0 -91
- package/template/.qoder/skills/product-design-prototype/agents/openai.yaml +0 -4
- package/template/.qoder/skills/yss-backend-scaffold-application/SKILL.md +0 -139
- package/template/.qoder/skills/yss-backend-scaffold-application/agents/openai.yaml +0 -5
- package/template/.qoder/skills/yss-backend-scaffold-domain/SKILL.md +0 -281
- package/template/.qoder/skills/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
- package/template/.qoder/skills/yss-backend-scaffold-infrastructure/SKILL.md +0 -199
- package/template/.qoder/skills/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
- package/template/.qoder/skills/yss-backend-scaffold-web/SKILL.md +0 -175
- package/template/.qoder/skills/yss-backend-scaffold-web/agents/openai.yaml +0 -5
- package/template/.qoder/skills/yss-dictionary/SKILL.md +0 -49
- package/template/.qoder/skills/yss-dictionary/agents/openai.yaml +0 -4
- package/template/.qoder/skills/yss-dictionary/references/source-index.md +0 -80
- package/template/.qoder/skills/yss-jdbc/SKILL.md +0 -73
- package/template/.qoder/skills/yss-jdbc/agents/openai.yaml +0 -5
- package/template/.qoder/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
- package/template/.qoder/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
- package/template/.qoder/skills/yss-jdbc/assets/DsParam.java +0 -19
- package/template/.qoder/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
- package/template/.qoder/skills/yss-jdbc/references/README.md +0 -55
- package/template/.qoder/skills/yss-jdbc/references/source-index.md +0 -33
- package/template/.qoder/skills/yss-log/SKILL.md +0 -48
- package/template/.qoder/skills/yss-log/agents/openai.yaml +0 -4
- package/template/.qoder/skills/yss-log/references/source-index.md +0 -34
- package/template/.qoder/skills/yss-taskflow/SKILL.md +0 -58
- package/template/.qoder/skills/yss-taskflow/agents/openai.yaml +0 -4
- package/template/.qoder/skills/yss-taskflow/references/source-index.md +0 -158
- package/template/.trae/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.trae/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.trae/skills/product-design-prototype/SKILL.md +0 -91
- package/template/.trae/skills/product-design-prototype/agents/openai.yaml +0 -4
- package/template/.trae/skills/yss-backend-scaffold-application/SKILL.md +0 -139
- package/template/.trae/skills/yss-backend-scaffold-application/agents/openai.yaml +0 -5
- package/template/.trae/skills/yss-backend-scaffold-domain/SKILL.md +0 -281
- package/template/.trae/skills/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
- package/template/.trae/skills/yss-backend-scaffold-infrastructure/SKILL.md +0 -199
- package/template/.trae/skills/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
- package/template/.trae/skills/yss-backend-scaffold-web/SKILL.md +0 -175
- package/template/.trae/skills/yss-backend-scaffold-web/agents/openai.yaml +0 -5
- package/template/.trae/skills/yss-dictionary/SKILL.md +0 -49
- package/template/.trae/skills/yss-dictionary/agents/openai.yaml +0 -4
- package/template/.trae/skills/yss-dictionary/references/source-index.md +0 -80
- package/template/.trae/skills/yss-jdbc/SKILL.md +0 -73
- package/template/.trae/skills/yss-jdbc/agents/openai.yaml +0 -5
- package/template/.trae/skills/yss-jdbc/assets/DefaultHutoolConfiguration.java +0 -9
- package/template/.trae/skills/yss-jdbc/assets/DefaultHutoolDbHolder.java +0 -33
- package/template/.trae/skills/yss-jdbc/assets/DsParam.java +0 -19
- package/template/.trae/skills/yss-jdbc/assets/JdbcSqlUtil.java +0 -92
- package/template/.trae/skills/yss-jdbc/references/README.md +0 -55
- package/template/.trae/skills/yss-jdbc/references/source-index.md +0 -33
- package/template/.trae/skills/yss-log/SKILL.md +0 -48
- package/template/.trae/skills/yss-log/agents/openai.yaml +0 -4
- package/template/.trae/skills/yss-log/references/source-index.md +0 -34
- package/template/.trae/skills/yss-taskflow/SKILL.md +0 -58
- package/template/.trae/skills/yss-taskflow/agents/openai.yaml +0 -4
- package/template/.trae/skills/yss-taskflow/references/source-index.md +0 -158
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: yss-web-controller
|
|
3
|
+
description: Use when generating or refactoring YSS Web Adapter Controllers, request DTOs, response VOs, validation, result wrappers, or Web Convertors from frozen contracts and stable Application interfaces.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# yss-web-controller
|
|
7
|
+
|
|
8
|
+
这是一个 Web 适配层生成型 skill。优先复用脚本 `scripts/generate_controller.mjs` 和模板,不手写重复 CRUD。
|
|
9
|
+
|
|
10
|
+
## 何时使用
|
|
11
|
+
|
|
12
|
+
- 用户要批量生成 Controller。
|
|
13
|
+
- 用户要根据 metadata 或已有 Domain Gateway 生成 `AddCmd / UpdateCmd / PageQuery / VO / Controller / WebConvertor`。
|
|
14
|
+
- 用户要求统一 Web Adapter 风格、返回值和接口路径。
|
|
15
|
+
|
|
16
|
+
## 不适用
|
|
17
|
+
|
|
18
|
+
- 用户只是要新增一个手写复杂接口,不一定要用脚本。
|
|
19
|
+
- 用户还没有稳定的领域模型或 metadata,先补 `yss-domain` 并准备完整的 metadata 输入。
|
|
20
|
+
|
|
21
|
+
## 优先流程
|
|
22
|
+
|
|
23
|
+
1. 先确认冻结 OpenAPI/no-impact record、Application Service 接口、metadata、基础包、模块名、领域 segment、domain/web 落盘目录。
|
|
24
|
+
2. 涉及 DTO / VO / CMD / Query POJO 样板代码时,加载并遵守 `lombok`。
|
|
25
|
+
3. 涉及 Domain / Application Result 到 VO / DTO 或 CMD / Query 到输入模型的转换时,加载并遵守 `mapstruct`。
|
|
26
|
+
4. 运行 `node scripts/generate_controller.mjs`。
|
|
27
|
+
5. 生成后检查路径、命名、返回值包装、Application Service 引用、`@Valid`、Lombok 注解和 MapStruct WebConvertor 是否对齐项目。
|
|
28
|
+
6. 对复杂接口做少量手工修正,不在 skill 中承诺自动覆盖全部业务逻辑。
|
|
29
|
+
|
|
30
|
+
## 推荐命令
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
node scripts/generate_controller.mjs \
|
|
34
|
+
--metadata-file /path/metadata.json \
|
|
35
|
+
--base-package com.yss.demo \
|
|
36
|
+
--module-name demo \
|
|
37
|
+
--domain-segment example \
|
|
38
|
+
--domain-project-dir /path/demo-domain \
|
|
39
|
+
--web-project-dir /path/demo-adapter/demo-web \
|
|
40
|
+
--application-service-package com.yss.demo.application.service \
|
|
41
|
+
--validation-namespace javax \
|
|
42
|
+
--force
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 输出预期
|
|
46
|
+
|
|
47
|
+
- `client/dto/cmd/*AddCmd.java`
|
|
48
|
+
- `client/dto/cmd/*UpdateCmd.java`
|
|
49
|
+
- `client/dto/query/*PageQuery.java`
|
|
50
|
+
- `client/vo/*VO.java`
|
|
51
|
+
- `rest/*Controller.java`
|
|
52
|
+
- `rest/convertor/*WebConvertor.java`
|
|
53
|
+
|
|
54
|
+
## 约束
|
|
55
|
+
|
|
56
|
+
- 生成代码默认依赖既有 Application Service。只有批准合同明确标记的纯查询 CQRS 工作单元才允许直接读 Gateway;写操作禁止绕过 Application。
|
|
57
|
+
- 返回结构保持项目既有 `SingleResult`、`PageResult`、`MultiResult` 体系。
|
|
58
|
+
- DTO / VO / CMD / Query 默认用 Lombok 处理 getter/setter、constructor、builder 和日志样板;不要在 Controller 内部类或非约定包临时定义主要 DTO / VO。
|
|
59
|
+
- `WebConvertor` 默认使用 MapStruct;禁止在 Controller / Application 中大段手写字段赋值、使用 `BeanUtils.copyProperties` 或反射式通用拷贝,除非有受控例外和测试证据。
|
|
60
|
+
- 先跑脚本,再按项目规范做少量手调。
|
|
61
|
+
- `javax` / `jakarta` validation namespace 必须来自工程基线,不得按记忆选择。
|
|
62
|
+
- 若用户只是要改单个 Controller,先看现有代码,不要盲覆盖整个目录。
|
|
63
|
+
|
|
64
|
+
## 按需读取
|
|
65
|
+
|
|
66
|
+
- 分层开发规范:`references/web-adapter-layer-guide.md`
|
|
67
|
+
- 生成脚本:`scripts/generate_controller.mjs`
|
|
68
|
+
- Controller 模板:`assets/templates/Controller.java.template`
|
|
69
|
+
- Convertor 模板:`assets/templates/WebConvertor.java.template`
|
|
70
|
+
- POJO 样板代码:`lombok`
|
|
71
|
+
- 对象转换:`mapstruct`
|
|
72
|
+
|
|
73
|
+
## 阶段 7 合同
|
|
74
|
+
|
|
75
|
+
- 只消费已批准合同和冻结 OpenAPI/no-impact record;不得用 Controller 或半成品 backend 反向定义产品契约。
|
|
76
|
+
- DTO/VO/WebConvertor 机械骨架可用 `controlled-generation`;权限、错误映射、校验语义和接口行为必须使用 `behavior-tdd`。
|
|
77
|
+
- 写入必须位于合同 `allowed_write_paths`,并提供 Controller、DTO/VO、WebConvertor、契约/API 测试和实际验证结果。
|
|
78
|
+
- 按统一 `YSS Skill Execution Result` 返回偏离与新增影响;出现新 API/schema、权限或响应包装变化时暂停并回到 Router/生命周期。
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
package ${base_package}.rest;
|
|
2
|
+
|
|
3
|
+
${application_service_import}
|
|
4
|
+
${dto_imports}
|
|
5
|
+
${domain_import}
|
|
6
|
+
${web_convertor_import}
|
|
7
|
+
import com.yss.cloud.dto.result.PageResult;
|
|
8
|
+
import com.yss.cloud.dto.result.SingleResult;
|
|
9
|
+
import lombok.RequiredArgsConstructor;
|
|
10
|
+
import org.springframework.web.bind.annotation.*;
|
|
11
|
+
import io.swagger.annotations.Api;
|
|
12
|
+
import io.swagger.annotations.ApiOperation;
|
|
13
|
+
import ${validation_namespace}.validation.Valid;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* ${domain_desc} 管理
|
|
17
|
+
*
|
|
18
|
+
* @author ${author}
|
|
19
|
+
*/
|
|
20
|
+
@RestController
|
|
21
|
+
@RequestMapping("/api/${module_name}/${domain_url_path}")
|
|
22
|
+
@RequiredArgsConstructor
|
|
23
|
+
@Api(tags = "${domain_desc}管理")
|
|
24
|
+
public class ${domain_class}Controller {
|
|
25
|
+
|
|
26
|
+
${application_service_field}
|
|
27
|
+
private static final ${web_convertor_class} CONVERTOR = ${web_convertor_class}.INSTANCE;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* 分页查询 ${domain_desc}
|
|
31
|
+
*/
|
|
32
|
+
@PostMapping("/page")
|
|
33
|
+
@ApiOperation("分页查询")
|
|
34
|
+
public PageResult<${vo_class}> page(@Valid @RequestBody ${query_class} query) {
|
|
35
|
+
return CONVERTOR.toVOPage(${query_call});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* 根据ID查询 ${domain_desc}
|
|
40
|
+
*/
|
|
41
|
+
@GetMapping("/{id}")
|
|
42
|
+
@ApiOperation("详情查询")
|
|
43
|
+
public SingleResult<${vo_class}> detail(@PathVariable Long id) {
|
|
44
|
+
return SingleResult.of(CONVERTOR.toVO(${detail_call}));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* 新增 ${domain_desc}
|
|
49
|
+
*/
|
|
50
|
+
@PostMapping
|
|
51
|
+
@ApiOperation("新增")
|
|
52
|
+
public SingleResult<Long> add(@Valid @RequestBody ${add_cmd_class} cmd) {
|
|
53
|
+
return SingleResult.of(${add_call});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* 更新 ${domain_desc}
|
|
58
|
+
*/
|
|
59
|
+
@PutMapping
|
|
60
|
+
@ApiOperation("更新")
|
|
61
|
+
public SingleResult<Boolean> update(@Valid @RequestBody ${update_cmd_class} cmd) {
|
|
62
|
+
return SingleResult.of(${update_call});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* 删除 ${domain_desc}
|
|
67
|
+
*/
|
|
68
|
+
@DeleteMapping("/{id}")
|
|
69
|
+
@ApiOperation("删除")
|
|
70
|
+
public SingleResult<Boolean> delete(@PathVariable Long id) {
|
|
71
|
+
return SingleResult.of(${delete_call});
|
|
72
|
+
}
|
|
73
|
+
}
|
package/template/.cursor/skills/yss-web-controller/assets/templates/WebConvertor.java.template
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
package ${base_package}.rest.convertor;
|
|
2
|
+
|
|
3
|
+
import com.yss.cloud.dto.result.PageResult;
|
|
4
|
+
import ${base_package}.client.dto.cmd.${domain_class}AddCmd;
|
|
5
|
+
import ${base_package}.client.dto.cmd.${domain_class}UpdateCmd;
|
|
6
|
+
import ${base_package}.client.vo.${domain_class}VO;
|
|
7
|
+
import ${base_package}.domain.${domain_pkg_name}.model.${domain_class};
|
|
8
|
+
import org.mapstruct.Mapper;
|
|
9
|
+
import org.mapstruct.factory.Mappers;
|
|
10
|
+
|
|
11
|
+
@Mapper
|
|
12
|
+
public interface ${web_convertor_class} {
|
|
13
|
+
|
|
14
|
+
${web_convertor_class} INSTANCE = Mappers.getMapper(${web_convertor_class}.class);
|
|
15
|
+
|
|
16
|
+
${domain_class} toDomain(${domain_class}AddCmd source);
|
|
17
|
+
|
|
18
|
+
${domain_class} toDomain(${domain_class}UpdateCmd source);
|
|
19
|
+
|
|
20
|
+
${domain_class}VO toVO(${domain_class} source);
|
|
21
|
+
|
|
22
|
+
PageResult<${domain_class}VO> toVOPage(PageResult<${domain_class}> source);
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
package ${base_package}.client.dto.cmd;
|
|
2
|
+
|
|
3
|
+
import com.yss.cloud.dto.CommandDTO;
|
|
4
|
+
import lombok.Data;
|
|
5
|
+
import lombok.EqualsAndHashCode;
|
|
6
|
+
import ${validation_namespace}.validation.constraints.NotBlank;
|
|
7
|
+
import ${validation_namespace}.validation.constraints.NotNull;
|
|
8
|
+
import java.util.Date;
|
|
9
|
+
import java.math.BigDecimal;
|
|
10
|
+
import java.time.LocalDateTime;
|
|
11
|
+
import java.time.LocalDate;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* ${domain_desc} 新增命令
|
|
15
|
+
*
|
|
16
|
+
* @author ${author}
|
|
17
|
+
*/
|
|
18
|
+
@Data
|
|
19
|
+
@EqualsAndHashCode(callSuper = true)
|
|
20
|
+
public class ${domain_class}AddCmd extends CommandDTO {
|
|
21
|
+
|
|
22
|
+
${field_declarations}
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
package ${base_package}.client.dto.cmd;
|
|
2
|
+
|
|
3
|
+
import com.yss.cloud.dto.CommandDTO;
|
|
4
|
+
import lombok.Data;
|
|
5
|
+
import lombok.EqualsAndHashCode;
|
|
6
|
+
import ${validation_namespace}.validation.constraints.NotBlank;
|
|
7
|
+
import ${validation_namespace}.validation.constraints.NotNull;
|
|
8
|
+
import java.util.Date;
|
|
9
|
+
import java.math.BigDecimal;
|
|
10
|
+
import java.time.LocalDateTime;
|
|
11
|
+
import java.time.LocalDate;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* ${domain_desc} 更新命令
|
|
15
|
+
*
|
|
16
|
+
* @author ${author}
|
|
17
|
+
*/
|
|
18
|
+
@Data
|
|
19
|
+
@EqualsAndHashCode(callSuper = true)
|
|
20
|
+
public class ${domain_class}UpdateCmd extends CommandDTO {
|
|
21
|
+
|
|
22
|
+
${field_declarations}
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
package ${base_package}.client.dto.query;
|
|
2
|
+
|
|
3
|
+
import com.yss.cloud.dto.page.PageQuery;
|
|
4
|
+
import lombok.Data;
|
|
5
|
+
import lombok.EqualsAndHashCode;
|
|
6
|
+
import java.util.Date;
|
|
7
|
+
import java.math.BigDecimal;
|
|
8
|
+
import java.time.LocalDateTime;
|
|
9
|
+
import java.time.LocalDate;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* ${domain_desc} 分页查询
|
|
13
|
+
*
|
|
14
|
+
* @author ${author}
|
|
15
|
+
*/
|
|
16
|
+
@Data
|
|
17
|
+
@EqualsAndHashCode(callSuper = true)
|
|
18
|
+
public class ${domain_class}PageQuery extends PageQuery {
|
|
19
|
+
|
|
20
|
+
${field_declarations}
|
|
21
|
+
}
|
package/template/.cursor/skills/yss-web-controller/assets/templates/domain/vo/VO.java.template
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
package ${base_package}.client.vo;
|
|
2
|
+
|
|
3
|
+
import lombok.Data;
|
|
4
|
+
import java.io.Serializable;
|
|
5
|
+
import java.util.Date;
|
|
6
|
+
import java.math.BigDecimal;
|
|
7
|
+
import java.time.LocalDateTime;
|
|
8
|
+
import java.time.LocalDate;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* ${domain_desc} VO
|
|
12
|
+
*
|
|
13
|
+
* @author ${author}
|
|
14
|
+
*/
|
|
15
|
+
@Data
|
|
16
|
+
public class ${domain_class}VO implements Serializable {
|
|
17
|
+
private static final long serialVersionUID = 1L;
|
|
18
|
+
|
|
19
|
+
${field_declarations}
|
|
20
|
+
}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "yss-backend-scaffold-web"
|
|
3
|
-
description: "YSS 管理服务的 Web Adapter 开发框架和技术指南。在实现 REST API 控制器、请求处理和响应格式化时需要用到。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Web Adapter Layer Development Guide
|
|
7
|
-
|
|
8
1
|
本技能为开发 YSS 服务的**Web 适配器层**(REST API)提供指导和框架。
|
|
9
2
|
Web 适配器负责通过 HTTP 公开业务功能、处理输入验证和格式化响应。
|
|
10
3
|
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { access, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
|
|
6
|
+
const TYPE_MAPPING = { bigint: "Long", int: "Integer", integer: "Integer", smallint: "Integer", tinyint: "Integer", number: "Long", numeric: "BigDecimal", decimal: "BigDecimal", float: "Float", double: "Double", real: "Float", varchar: "String", varchar2: "String", nvarchar2: "String", char: "String", nchar: "String", text: "String", clob: "String", nclob: "String", date: "LocalDateTime", datetime: "LocalDateTime", timestamp: "LocalDateTime", "timestamp with time zone": "LocalDateTime", boolean: "Boolean", bool: "Boolean", bit: "Boolean", json: "String", jsonb: "String", uuid: "String" };
|
|
7
|
+
const required = ["metadata-file", "base-package", "module-name", "domain-segment"];
|
|
8
|
+
const valued = new Set([...required, "output-dir", "domain-project-dir", "web-project-dir", "domain-output-dir", "web-output-dir", "author", "application-service-package", "validation-namespace"]);
|
|
9
|
+
|
|
10
|
+
function usage() {
|
|
11
|
+
return "Usage: node generate_controller.mjs --metadata-file FILE --base-package PACKAGE --module-name NAME --domain-segment SEGMENT [--output-dir DIR] [--domain-project-dir DIR] [--web-project-dir DIR] [--domain-output-dir DIR] [--web-output-dir DIR] [--author NAME] [--force] [--application-service-package PACKAGE] [--validation-namespace javax|jakarta]";
|
|
12
|
+
}
|
|
13
|
+
export function parseArgs(argv) {
|
|
14
|
+
const args = { "output-dir": "./output", author: "System", "validation-namespace": "javax", force: false };
|
|
15
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
16
|
+
const token = argv[index];
|
|
17
|
+
if (token === "--help" || token === "-h") return { help: true };
|
|
18
|
+
if (token === "--force") { args.force = true; continue; }
|
|
19
|
+
if (!token.startsWith("--") || !valued.has(token.slice(2))) throw new Error(`unrecognized argument: ${token}`);
|
|
20
|
+
const value = argv[++index];
|
|
21
|
+
if (!value || value.startsWith("--")) throw new Error(`argument ${token} requires a value`);
|
|
22
|
+
args[token.slice(2)] = value;
|
|
23
|
+
}
|
|
24
|
+
for (const key of required) if (!args[key]) throw new Error(`the following arguments are required: --${key}`);
|
|
25
|
+
if (!new Set(["javax", "jakarta"]).has(args["validation-namespace"])) throw new Error("--validation-namespace must be javax or jakarta");
|
|
26
|
+
return args;
|
|
27
|
+
}
|
|
28
|
+
const pascal = (value) => value.toLowerCase().split("_").map((part) => part ? part[0].toUpperCase() + part.slice(1) : "").join("");
|
|
29
|
+
const lowerCamel = (value) => { const output = pascal(value); return output ? output[0].toLowerCase() + output.slice(1) : ""; };
|
|
30
|
+
const kebab = (value) => value.toLowerCase().replaceAll("_", "-");
|
|
31
|
+
const packagePath = (value) => value.replaceAll(".", path.sep);
|
|
32
|
+
const ensureSubdir = (root, name) => path.basename(path.normalize(root)) === name ? root : path.join(root, name);
|
|
33
|
+
const javaType = (sqlType = "") => TYPE_MAPPING[sqlType.toLowerCase().split("(")[0]] || "String";
|
|
34
|
+
|
|
35
|
+
function fields(columns, { skipPk = false, command = false, skipAudit = true } = {}) {
|
|
36
|
+
const audit = new Set(["create_time", "update_time", "create_by", "update_by", "deleted", "version"]);
|
|
37
|
+
return columns.filter((column) => !(skipPk && column.primary) && !(skipAudit && audit.has(String(column.name).toLowerCase()))).map((column) => {
|
|
38
|
+
const type = javaType(column.sql_type);
|
|
39
|
+
const name = lowerCamel(column.name);
|
|
40
|
+
const comment = column.comment || "";
|
|
41
|
+
const documentation = comment ? ` /**\n * ${comment}\n */\n` : "";
|
|
42
|
+
const validation = command && !column.nullable ? ` @${type === "String" ? "NotBlank" : "NotNull"}(message = \"${comment || name}不能为空\")\n` : "";
|
|
43
|
+
return `${documentation}${validation} private ${type} ${name};`;
|
|
44
|
+
}).join("\n\n");
|
|
45
|
+
}
|
|
46
|
+
function render(template, context) { return template.replace(/\$(?:\{([A-Za-z_][A-Za-z0-9_]*)\}|([A-Za-z_][A-Za-z0-9_]*))/g, (_, braced, plain) => { const key = braced || plain; if (!(key in context)) throw new Error(`missing template field: ${key}`); return context[key]; }); }
|
|
47
|
+
async function exists(target) { try { await access(target); return true; } catch { return false; } }
|
|
48
|
+
|
|
49
|
+
export async function generate(args, logger = console) {
|
|
50
|
+
if (!await exists(args["metadata-file"])) throw new Error(`Metadata file not found: ${args["metadata-file"]}`);
|
|
51
|
+
let metadata;
|
|
52
|
+
try { metadata = JSON.parse(await readFile(args["metadata-file"], "utf8")); } catch (error) { throw new Error(`Error reading metadata file: ${error.message}`); }
|
|
53
|
+
const tables = metadata.tables || [];
|
|
54
|
+
if (!tables.length) { logger.warn("Warning: No tables found in metadata."); return []; }
|
|
55
|
+
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
56
|
+
const templatesDir = path.resolve(scriptDir, "../assets/templates");
|
|
57
|
+
const template = async (name) => { const target = path.join(templatesDir, name); if (!await exists(target)) throw new Error(`Template not found: ${target}`); return readFile(target, "utf8"); };
|
|
58
|
+
const templates = Object.fromEntries(await Promise.all(["Controller.java.template", "WebConvertor.java.template", "domain/vo/VO.java.template", "domain/dto/cmd/AddCmd.java.template", "domain/dto/cmd/UpdateCmd.java.template", "domain/dto/query/PageQuery.java.template"].map(async (name) => [name, await template(name)])));
|
|
59
|
+
const basePath = packagePath(args["base-package"]);
|
|
60
|
+
const domainBase = args["domain-output-dir"] || (args["domain-project-dir"] ? path.join(args["domain-project-dir"], "src", "main", "java", basePath) : path.join(args["output-dir"], basePath));
|
|
61
|
+
const webBase = args["web-output-dir"] || (args["web-project-dir"] ? path.join(args["web-project-dir"], "src", "main", "java", basePath) : path.join(args["output-dir"], basePath));
|
|
62
|
+
const domainRoot = ensureSubdir(domainBase, "client");
|
|
63
|
+
const webRoot = ensureSubdir(webBase, "rest");
|
|
64
|
+
const written = [];
|
|
65
|
+
const write = async (target, contents) => { await mkdir(path.dirname(target), { recursive: true }); if (!await exists(target) || args.force) { await writeFile(target, contents, "utf8"); logger.log(`Generated: ${target}`); written.push(target); } else logger.log(`Skipped (exists): ${target}`); };
|
|
66
|
+
for (const table of tables) {
|
|
67
|
+
const domainClass = pascal(table.table_name); const domainVar = lowerCamel(table.table_name); const domainDesc = String(table.table_comment || domainClass).trim().replaceAll("\n", " ");
|
|
68
|
+
const applicationPackage = args["application-service-package"] || `${args["base-package"]}.application.service`;
|
|
69
|
+
const context = { base_package: args["base-package"], module_name: args["module-name"], domain_class: domainClass, domain_var: domainVar, domain_desc: domainDesc, domain_url_path: kebab(table.table_name), domain_pkg_name: args["domain-segment"], author: args.author, dto_imports: [`import ${args["base-package"]}.client.dto.cmd.${domainClass}AddCmd;`, `import ${args["base-package"]}.client.dto.cmd.${domainClass}UpdateCmd;`, `import ${args["base-package"]}.client.dto.query.${domainClass}PageQuery;`, `import ${args["base-package"]}.client.vo.${domainClass}VO;`].join("\n"), application_service_import: `import ${applicationPackage}.${domainClass}Service;`, domain_import: `import ${args["base-package"]}.domain.${args["domain-segment"]}.model.${domainClass};`, web_convertor_import: `import ${args["base-package"]}.rest.convertor.${domainClass}WebConvertor;`, web_convertor_class: `${domainClass}WebConvertor`, application_service_field: `private final ${domainClass}Service ${domainVar}Service;`, query_call: `${domainVar}Service.page(query)`, detail_call: `${domainVar}Service.detail(id)`, add_call: `${domainVar}Service.add(cmd)`, update_call: `${domainVar}Service.update(cmd)`, delete_call: `${domainVar}Service.delete(id)`, vo_class: `${domainClass}VO`, add_cmd_class: `${domainClass}AddCmd`, update_cmd_class: `${domainClass}UpdateCmd`, query_class: `${domainClass}PageQuery`, validation_namespace: args["validation-namespace"] };
|
|
70
|
+
await write(path.join(webRoot, `${domainClass}Controller.java`), render(templates["Controller.java.template"], context));
|
|
71
|
+
await write(path.join(webRoot, "convertor", `${domainClass}WebConvertor.java`), render(templates["WebConvertor.java.template"], context));
|
|
72
|
+
for (const [templateName, target, declaration] of [["domain/vo/VO.java.template", path.join(domainRoot, "vo", `${domainClass}VO.java`), fields(table.columns || [], { skipAudit: false })], ["domain/dto/cmd/AddCmd.java.template", path.join(domainRoot, "dto/cmd", `${domainClass}AddCmd.java`), fields(table.columns || [], { skipPk: true, command: true })], ["domain/dto/cmd/UpdateCmd.java.template", path.join(domainRoot, "dto/cmd", `${domainClass}UpdateCmd.java`), fields(table.columns || [], { command: true })], ["domain/dto/query/PageQuery.java.template", path.join(domainRoot, "dto/query", `${domainClass}PageQuery.java`), fields(table.columns || [])]]) await write(target, render(templates[templateName], { ...context, field_declarations: declaration }));
|
|
73
|
+
}
|
|
74
|
+
return written;
|
|
75
|
+
}
|
|
76
|
+
async function main() { try { const args = parseArgs(process.argv.slice(2)); if (args.help) { console.log(usage()); return; } await generate(args); } catch (error) { console.error(`Error: ${error.message}`); process.exitCode = 1; } }
|
|
77
|
+
if (process.argv[1] === fileURLToPath(import.meta.url)) await main();
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { mkdtemp, readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import test from "node:test";
|
|
6
|
+
import { generate, parseArgs } from "./generate_controller.mjs";
|
|
7
|
+
|
|
8
|
+
test("generates application-service controller with requested validation profile", async () => {
|
|
9
|
+
const root = await mkdtemp(path.join(tmpdir(), "yss-controller-"));
|
|
10
|
+
const metadata = path.join(root, "metadata.json");
|
|
11
|
+
await writeFile(metadata, JSON.stringify({ tables: [{ table_name: "quality_rule", table_comment: "质量规则", columns: [{ name: "id", sql_type: "bigint", primary: true, nullable: false }, { name: "rule_name", sql_type: "varchar(64)", nullable: false }] }] }));
|
|
12
|
+
await generate(parseArgs(["--metadata-file", metadata, "--base-package", "com.yss.demo", "--module-name", "demo", "--domain-segment", "quality", "--output-dir", path.join(root, "out"), "--application-service-package", "com.yss.demo.application.service", "--validation-namespace", "jakarta"]), { log() {}, warn() {} });
|
|
13
|
+
const controller = await readFile(path.join(root, "out", "com", "yss", "demo", "rest", "QualityRuleController.java"), "utf8");
|
|
14
|
+
assert.match(controller, /import com\.yss\.demo\.application\.service\.QualityRuleService;/);
|
|
15
|
+
assert.match(controller, /import jakarta\.validation\.Valid;/);
|
|
16
|
+
assert.doesNotMatch(controller, /Gateway/);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test("rejects missing required CLI arguments", () => assert.throws(() => parseArgs(["--module-name", "demo"]), /required/));
|
|
@@ -8,9 +8,15 @@ disable-model-invocation: true
|
|
|
8
8
|
|
|
9
9
|
You don't remember every skill, so ask.
|
|
10
10
|
|
|
11
|
+
## YSS default (read this first)
|
|
12
|
+
|
|
13
|
+
In this template, **`yss-product-lifecycle` is the default orchestrator**. Native work-units own Spec, tickets, implementation authorization, and gates.
|
|
14
|
+
|
|
15
|
+
This skill is a **Matt compatibility map**. Use `/grill-with-docs`, `/to-spec`, `/to-tickets`, and `/implement` only when the user **explicitly** names them. Do not treat the idea→ship list below as the YSS default. `/implement` does not grant git commit/push. Spec drafts from `/to-spec` stay `ready-for-human` until a human approves the Spec baseline.
|
|
16
|
+
|
|
11
17
|
A **flow** is a path through the skills. Most paths run along one **main flow**, and two **on-ramps** merge onto it. Everything else is standalone, or a vocabulary layer that runs underneath.
|
|
12
18
|
|
|
13
|
-
##
|
|
19
|
+
## Matt compatibility flow: idea → ship
|
|
14
20
|
|
|
15
21
|
The route most work travels. You have an idea and want it built.
|
|
16
22
|
|
|
@@ -23,7 +29,7 @@ The route most work travels. You have an idea and want it built.
|
|
|
23
29
|
- **Yes** → **`/to-spec`** (turn the thread into a spec), then **`/to-tickets`** to split it into tracer-bullet tickets, each declaring its **blocking edges**. On a local tracker that's one file per ticket under `docs/.scratch/<feature>/issues/`, worked blockers-first by hand; on a real tracker the edges become native blocking links, so any ticket whose blockers are done can be grabbed — kick off **`/implement`** per ticket, **`/clear`ing context between each one**. Each ticket is self-contained, so the last one's context is disposable.
|
|
24
30
|
- **No** → **`/implement`** right here, in the same context window.
|
|
25
31
|
|
|
26
|
-
Either way, **`/implement`** builds each issue by driving **`/tdd`** internally — one red-green slice at a time — then closes out by running **`/code-review
|
|
32
|
+
Either way, **`/implement`** builds each issue by driving **`/tdd`** internally — one red-green slice at a time — then closes out by running **`/code-review`** (Standards + Spec, plus UI fidelity when UI is in scope). Do not commit or push from `/implement`. Reach for **`/tdd`** on its own when you just want to build a concrete behaviour test-first without a full spec, and **`/code-review`** on its own whenever you want to review a branch or PR against a fixed point.
|
|
27
33
|
|
|
28
34
|
### Context hygiene
|
|
29
35
|
|
|
@@ -3,12 +3,13 @@ name: code-review
|
|
|
3
3
|
description: Use when the user wants to review a branch, PR, committed candidate, uncommitted work-in-progress changes, or changes since a fixed point.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
Review of a pinned candidate against a fixed point on two core axes, plus UI fidelity when UI is in scope:
|
|
7
7
|
|
|
8
8
|
- **Standards** — does the code conform to this repo's documented coding standards?
|
|
9
9
|
- **Spec** — does the code faithfully implement the originating issue / spec?
|
|
10
|
+
- **UI fidelity** (only when the change has UI impact) — does the candidate match the confirmed prototype and `yss-design-system` / `yss-ui`? Type-check or claiming "already aligned" is not a pass. Invoke those skills' verification notes; do not collapse this axis into Standards or Spec.
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
Standards and Spec run as **parallel sub-agents** so they don't pollute each other's context, then this skill aggregates their findings. When UI is in scope, add a separate UI fidelity pass after those two reports (do not merge it into either axis).
|
|
12
13
|
|
|
13
14
|
If `docs/agents/issue-tracker.md` is missing, tell the user to run `/setup-matt-pocock-skills`; do not invoke another user-invoked skill yourself.
|
|
14
15
|
|
|
@@ -99,17 +100,18 @@ If the spec is missing, skip the Spec sub-agent and note this in the final repor
|
|
|
99
100
|
|
|
100
101
|
### 5. Aggregate
|
|
101
102
|
|
|
102
|
-
Present the
|
|
103
|
+
Present the reports under `## Standards` and `## Spec` headings, verbatim or lightly cleaned. If UI is in scope, add `## UI fidelity` from the separate pass. Do **not** merge or rerank findings — the axes are deliberately separate (see _Why separate axes_).
|
|
103
104
|
|
|
104
105
|
For Worktree mode, recapture the candidate digest after both reports return. If it differs from `candidate_digest`, mark both reports as reviewing a **stale candidate** and return `blocked`; the caller may start a new review against a new capture, but this invocation must not aggregate findings from different bytes. Recheck the same digest again at the completion/checkpoint boundary.
|
|
105
106
|
|
|
106
107
|
State the reviewed `review_mode`, fixed point, candidate digest and coverage before the two reports. End with a one-line summary: total findings per axis, and the worst issue _within each axis_ (if any). Don't pick a single winner across axes — that's the reranking the separation exists to prevent.
|
|
107
108
|
|
|
108
|
-
## Why
|
|
109
|
+
## Why separate axes
|
|
109
110
|
|
|
110
111
|
A change can pass one axis and fail the other:
|
|
111
112
|
|
|
112
113
|
- Code that follows every standard but implements the wrong thing → **Standards pass, Spec fail.**
|
|
113
114
|
- Code that does exactly what the issue asked but breaks the project's conventions → **Spec pass, Standards fail.**
|
|
115
|
+
- Code that implements the spec but diverges from the confirmed prototype or design system → **Spec pass, UI fidelity fail.**
|
|
114
116
|
|
|
115
117
|
Reporting them separately stops one axis from masking the other.
|
|
@@ -127,7 +127,7 @@ If a correct seam exists:
|
|
|
127
127
|
4. Watch it pass.
|
|
128
128
|
5. Re-run the Phase 1 feedback loop against the original (un-minimised) scenario.
|
|
129
129
|
|
|
130
|
-
## Phase 6 — Cleanup
|
|
130
|
+
## Phase 6 — Cleanup
|
|
131
131
|
|
|
132
132
|
Required before declaring done:
|
|
133
133
|
|
|
@@ -135,6 +135,4 @@ Required before declaring done:
|
|
|
135
135
|
- [ ] Regression test passes (or absence of seam is documented)
|
|
136
136
|
- [ ] All `[DEBUG-...]` instrumentation removed (`grep` the prefix)
|
|
137
137
|
- [ ] Throwaway prototypes deleted (or moved to a clearly-marked debug location)
|
|
138
|
-
- [ ] The hypothesis that turned out correct is stated in the commit / PR message
|
|
139
|
-
|
|
140
|
-
**Then ask: what would have prevented this bug?** If the answer involves architectural change (no good test seam, tangled callers, hidden coupling) hand off to the `/improve-codebase-architecture` skill with the specifics. Make the recommendation **after** the fix is in, not before — you have more information now than when you started.
|
|
138
|
+
- [ ] The hypothesis that turned out correct is stated in the commit / PR message, so the next debugger learns
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: domain-modeling
|
|
3
|
-
description: Build and sharpen a project's domain model. Use when
|
|
3
|
+
description: Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a CONTEXT.md, or recording or editing an ADR.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Domain Modeling
|
|
@@ -7,11 +7,17 @@ Interview the user relentlessly until you reach a shared understanding. Map this
|
|
|
7
7
|
|
|
8
8
|
Work the tree in **rounds**. The **frontier** is every decision whose prerequisites are already settled — the questions you can ask _now_ without guessing at answers you haven't heard yet. Ask the whole frontier in one round: number each question and give your recommended answer. Then wait for the user's answers before the next round.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Format a round like so:
|
|
11
11
|
|
|
12
12
|
```
|
|
13
13
|
❓ **Q1** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>
|
|
14
14
|
|
|
15
|
+
➡️ <your recommended answer>
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
❓ **Q2** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>
|
|
20
|
+
|
|
15
21
|
➡️ <your recommended answer>
|
|
16
22
|
```
|
|
17
23
|
|
|
@@ -102,5 +102,5 @@ High-fidelity HTML prototype
|
|
|
102
102
|
- <yes/no; list blocking gaps>
|
|
103
103
|
|
|
104
104
|
### 下一步
|
|
105
|
-
- <Spec calibration / return to high-fidelity prototype / return to
|
|
105
|
+
- <Spec calibration / return to high-fidelity prototype / return to yss-prototype-stage>
|
|
106
106
|
```
|
|
@@ -12,4 +12,4 @@ Run typechecking regularly, single test files regularly, and the full test suite
|
|
|
12
12
|
|
|
13
13
|
Once done, use /code-review to review the work.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Do not commit or push. Implementation authorization does not include git commit/push. Natural language such as "do it and commit" is not structured Git authorization. Stop after review unless a structured Git authorization is already present.
|
|
@@ -16,7 +16,7 @@ If the issue tracker or triage label vocabulary is missing, tell the user to run
|
|
|
16
16
|
|
|
17
17
|
Check with the user that these seams match their expectations.
|
|
18
18
|
|
|
19
|
-
3. Write the spec using the template below, then publish it to the project issue tracker. Apply the `ready-for-
|
|
19
|
+
3. Write the spec using the template below, then publish it to the project issue tracker. Apply the `ready-for-human` triage label. Spec drafts need a human baseline approval before they are `approved`, and before implementation tickets may become `ready-for-agent`. Do not label the Spec itself `ready-for-agent`.
|
|
20
20
|
|
|
21
21
|
<spec-template>
|
|
22
22
|
|
|
@@ -40,7 +40,7 @@ For a PR, the same states read against the attached code: `ready-for-agent` mean
|
|
|
40
40
|
|
|
41
41
|
Every triaged issue should carry exactly one category role and one state role. If state roles conflict, flag it and ask the maintainer before doing anything else.
|
|
42
42
|
|
|
43
|
-
These are canonical role names
|
|
43
|
+
These are canonical role names. The actual label strings used in the issue tracker may differ. The mapping should have been provided to you. If not, tell the user to run `/setup-matt-pocock-skills`.
|
|
44
44
|
|
|
45
45
|
State transitions: an unlabeled issue normally goes to `needs-triage` first; from there it moves to `needs-info`, `ready-for-agent`, `ready-for-human`, or `wontfix`. `needs-info` returns to `needs-triage` once the reporter replies. The maintainer can override at any time — flag transitions that look unusual and ask before proceeding.
|
|
46
46
|
|
|
@@ -73,7 +73,7 @@ Show counts and a one-line summary per item. Let the maintainer pick.
|
|
|
73
73
|
|
|
74
74
|
3. **Verify the claim.** Before any grilling, check that the claim holds up. For a bug, reproduce it from the reporter's steps. For a PR, confirm the diff does what it claims — check it out, run the relevant tests or commands. Report what happened: confirmed (with code path), failed, or insufficient detail (a strong `needs-info` signal). A confirmed verification makes a much stronger agent brief.
|
|
75
75
|
|
|
76
|
-
4. **Grill (if needed).** If the request needs fleshing out,
|
|
76
|
+
4. **Grill (if needed).** If the request needs fleshing out, call the Skill tool twice, for "grilling" and "domain-modeling", and grill it into shape a round of questions at a time, sharpening domain terms and updating `CONTEXT.md`/ADRs inline as decisions land.
|
|
77
77
|
|
|
78
78
|
5. **Apply the outcome:**
|
|
79
79
|
- `ready-for-agent` — post an agent brief comment ([AGENT-BRIEF.md](AGENT-BRIEF.md)).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wait-what
|
|
3
|
-
description: Stop. That last message did not land
|
|
3
|
+
description: "Stop. That last message did not land: re-pitch it."
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Wait
|
|
7
|
+
Wait, I don't understand where you've got to here. Re-pitch that: give me a little bit of context, talk in ASD-STE100 Simplified Technical English, and use the ubiquitous language from `CONTEXT.md` (follow `CONTEXT-MAP.md` to the right one if the repo has more than one).
|
|
@@ -22,7 +22,7 @@ The map is a single issue on this repo's issue tracker, labelled `wayfinder:map`
|
|
|
22
22
|
|
|
23
23
|
The map is an **index**, not a store. It lists the decisions made and points at the tickets that hold their detail; a decision lives in exactly one place — its ticket — so the map never restates it, only gists it and links.
|
|
24
24
|
|
|
25
|
-
**Where the map, its child tickets, blocking, and frontier queries physically live is tracker-specific.** The issue tracker should have been provided to you
|
|
25
|
+
**Where the map, its child tickets, blocking, and frontier queries physically live is tracker-specific.** The issue tracker should have been provided to you. If not, tell the user to run `/setup-matt-pocock-skills`. Consult the tracker doc's "Wayfinding operations" section for how _this_ repo expresses them. If no tracker has been provided, default to the local-markdown tracker.
|
|
26
26
|
|
|
27
27
|
### The map body
|
|
28
28
|
|