Skip to content
Back to skills

Create Cqrs Bulk Commands

ASecurity

Create bulk action commands and their handlers. All bulk handlers extend AbstractBulkCommandHandler, catch errors per item, and report failures via BulkCommandExceptionInterface. Trigger: "create bulk commands for {Domain}".

  • 6 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 29, 2026
ai-agentsphp

Security analysis

A100/100

Scanned May 29, 2026

npx -y skills add jeffsenso/prestashop-skills --skill create-cqrs-bulk-commands --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Create Cqrs Bulk Commands?

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

Security grade badge for Create Cqrs Bulk Commands
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jeffsenso-create-cqrs-bulk-commands/badge)](https://www.skillsdirectory.com/skills/jeffsenso-create-cqrs-bulk-commands)

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: create-cqrs-bulk-commands
description: >
  Create bulk action commands and their handlers. All bulk handlers extend
  AbstractBulkCommandHandler, catch errors per item, and report failures via
  BulkCommandExceptionInterface. Trigger: "create bulk commands for {Domain}".
needs: [create-cqrs-commands, create-doctrine-repository]
produces: "BulkDelete{Domain}sCommand + BulkToggle{Domain}StatusCommand + their handlers"
conditional: "only if the grid has bulk actions (most entities do)"
subagent: optional
---

# create-cqrs-bulk-commands

See [CQRS/CONTEXT.md](../../CONTEXT.md#bulk-handlers) for the bulk handler pattern (`AbstractBulkCommandHandler`, `BulkCommandExceptionInterface`, continue after failure).

## 1. Bulk delete command

Create `src/Core/Domain/{Domain}/Command/BulkDelete{Domain}sCommand.php`:

- Constructor takes `array $ids` (scalar `int[]`)
- Single getter: `getIds(): array`

## 2. Bulk status command

Create `src/Core/Domain/{Domain}/Command/BulkToggle{Domain}StatusCommand.php`:

- Constructor takes `array $ids` (`int[]`) and `bool $expectedStatus`
- `$expectedStatus = true` means enable, `false` means disable
- Getters: `getIds(): array` and `getExpectedStatus(): bool`

## 3. Bulk handlers

All bulk handlers follow the same structure. Create in `src/Adapter/{Domain}/CommandHandler/`:

### Bulk delete handler

`BulkDelete{Domain}sHandler.php`:

- For each ID, call the repository delete
- Collect failures, continue with remaining IDs

### Bulk status handler

`BulkToggle{Domain}StatusHandler.php`:

- For each ID, load entity, set `active = $command->getExpectedStatus()`, update
- Use the target status from the command — do not flip the current value

## 4. Handler interfaces

Create in `src/Core/Domain/{Domain}/CommandHandler/`:
- `BulkDelete{Domain}sHandlerInterface`
- `BulkToggle{Domain}StatusHandlerInterface`

Both return `void`. The bulk exception is thrown, not returned.

## Rules

Conventions (AbstractBulkCommandHandler, continue after failure, BulkCommandExceptionInterface) are in [CQRS/CONTEXT.md](../../CONTEXT.md#bulk-handlers). Skill-specific reminders:

- Be consistent with the single-entity commands on ID typing
- Skip this skill entirely if the entity has no bulk grid actions

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.