Skip to content
Back to skills

Creating Action

ASecurity

Create, modify, or refactor application use cases into Laravel-native DDD Actions. Use for business operations such as placing or cancelling orders, extracting controller orchestration, and fixing use-case behavior.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 29, 2026
ai-agentsreact

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 29, 2026

npx -y skills add maiobarbero/laravel-boost-ddd --skill creating-action --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Creating Action?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Creating Action
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/maiobarbero-creating-action/badge)](https://www.skillsdirectory.com/skills/maiobarbero-creating-action)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: creating-action
description: Create, modify, or refactor application use cases into Laravel-native DDD Actions. Use for business operations such as placing or cancelling orders, extracting controller orchestration, and fixing use-case behavior.
---

# Creating and changing Actions

Use `App\Application\<Capability>\Actions`, a verb-oriented name such as `CancelOrder` (no `Action` suffix), and a public `handle()` method. Actions are normally final. Preserve legacy locations unless migration is in scope.

## Responsibilities

1. Accept explicit input and an actor when authorization is required; never a FormRequest or an implicit HTTP user.
2. Load the relevant models and authorize the use case with `Gate::forUser($actor)` and Laravel policies. Authentication stays in the entry point.
3. Invoke domain behavior, then persist: `$order->cancel(); $order->save();`.
4. Own a transaction when coordinated writes require atomicity. Keep external calls outside it where possible.
5. Coordinate dispatch of events, whether produced by Domain or constructed by Application, ensuring external reactions happen after commit.

Domain invariants and domain exceptions belong to Domain; orchestration belongs here. Return models, values, or application results, never HTTP responses or Resources. Use a Data object only for meaningful structured input.

Inject consumer-owned contracts for Infrastructure dependencies. Bind implementations in a service provider; do not resolve concrete adapters through `app()`, strings, or custom facades. Direct Eloquent, `DB`, and `Gate` remain available within these responsibilities.

For follow-up asynchronous work, prefer events. Do not reference `App\Jobs` from an Action. A contract is justified only when it represents a real infrastructure capability.

Actions may invoke another complete use case, retaining its authorization checks. Avoid chains of tiny Actions; the outer Action owns transaction coordination. Models from another capability may be used directly within the same bounded context.

Simple authorized reads may remain in an entry point. Do not introduce an Action for every query or trivial framework operation.

## Connected example

Read [the order cancellation example](references/order-cancellation.md) when implementing or reviewing the relationship between authorization, model behavior, persistence, events, and tests. It demonstrates a transaction for an order update plus an audit record, without requiring a DTO, repository, or event collector.

Files in this skill

  • SKILL.md2.5 KB
  • references/order-cancellation.md9.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.