Defines application service structure and business orchestration boundaries
59
68%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.claude/skills/service-layer/SKILL.mdServices are the only place business logic lives. They are framework-agnostic.
Services MUST:
Services MUST NOT:
app() or resolve() internallyConstructor injection only:
public function __construct(
private InvoiceRepository $repository
) {}DTOs are not required when the source is a validated FormRequest::validated()
array. Arrays are fine there.
Use DTOs when:
Skip DTOs when:
app/Services/{Domain}/{Model}Service.phpe.g. app/Services/Task/TaskService.php, app/Services/Offer/OfferService.php.
Standard method names: create, update, delete, findByExternalId. Prefer
one service class per domain holding both create/update (see TaskService)
over splitting into separate per-action service classes.
fb83b36
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.