Agent Skill
2/7/2026

app-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

Nameapp-usecase-generator
DescriptionGenerates 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/** and app/{{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.java packages:
    • {{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.Transactional when 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