Agent Skill
2/7/2026app-usecase-generator
Generates app-layer use cases (Command/Handler/Assembler/DTO) following package-info and transaction rules (spring-tx only).
R
ryan
0GitHub Stars
1Views
npx skills add ryan-alexander-zhang/persimmon
SKILL.md
| Name | app-usecase-generator |
| Description | Generates app-layer use cases (Command/Handler/Assembler/DTO) following package-info and transaction rules (spring-tx only). |
name: app-usecase-generator description: "Generates app-layer use cases (Command/Handler/Assembler/DTO) following package-info and transaction rules (spring-tx only)."
App Use Case Generator
Follow
.codex/skills/GENERATOR_SKILL_STRUCTURE.md.
Templates: See references/templates.md.
Use For
app/{{bcName}}/command/**andapp/{{bcName}}/query/**
Inputs Required
- Business use-case name (verb + object)
- Command/Query DTO fields
- Required domain ports (repositories/gateways)
- Transaction boundary requirement (yes/no)
Outputs
- Command side (typical):
.../app/{{bcName}}/command/dto/<XxxCommand>.java.../app/{{bcName}}/command/handler/<XxxCommandHandler>.java.../app/{{bcName}}/command/assembler/<XxxAssembler>.java(optional)
- Query side (typical):
.../app/{{bcName}}/query/dto/<XxxQuery>.java.../app/{{bcName}}/query/service/<XxxQueryService>.java
- Tests:
.../app/.../<Xxx>Test.java(mock ports)
Naming & Packaging
- Follow existing
package-info.javapackages:{{basePackage}}.app.{{bcName}}.command.*{{basePackage}}.app.{{bcName}}.query.*
- Keep adapter DTOs out of app packages.
Implementation Rules
- App layer can use
org.springframework.transaction.annotation.Transactionalwhen needed. - Do not introduce other Spring stereotypes (
@Service/@Component) unless project conventions explicitly allow. - Separate command DTOs, assemblers, and handlers as per existing structure.
Reference Implementations
{{appModuleDir}}/src/main/java/{{basePackagePath}}/app/{{bcName}}/command/package-info.java{{appModuleDir}}/src/main/java/{{basePackagePath}}/app/common/workflow/service/WorkflowStartService.java
Tests
- Unit tests validate:
- orchestration order
- port calls
- error mapping (retryable vs non-retryable where applicable)
Pitfalls
- Putting persistence types (PO/Mapper) into app DTOs.
- Using Spring components in app beyond
spring-tx.
Output checklist
- Correct package per
package-info.java - Transaction boundary explicit when required
- Unit tests for orchestration logic (mock ports)
Skills Info
Original Name:app-usecase-generatorAuthor:ryan
Download