php artisan boost:add-skill fluttersdk/magic-starter-laravel
Save this content to: .cursor/rules/actions.md
# Actions
- Each action implements exactly one contract from `Contracts/`
- Public method name matches contract: `create()`, `update()`, `invite()`, `delete()`
- Validate input inline with `Validator::make($input, $rules)->validate()` — not in constructor
- Use numbered inline comments to explain flow steps: `// 1. Validate`, `// 2. Create user`, etc.
- Resolve models via `MagicStarter::userModel()`, `::teamModel()` — never hardcode class names
- Gate feature-specific logic: `if (Features::hasTeamFeatures()) { ... }`
- Use `Arr::get($input, 'key')` for optional field retrieval from validated input
- Return typed values matching contract signature (Authenticatable, Model, void)
- Newsletter: write through `NewsletterSubscriber::subscribeUser()` / `unsubscribe()`; read the marketing audience only through `marketable()`
- Two-factor: defer notifications via events, don't send directly from action
Contracts/create(), update(), invite(), delete()Validator::make($input, $rules)->validate() — not in constructor// 1. Validate, // 2. Create user, etc.MagicStarter::userModel(), ::teamModel() — never hardcode class namesif (Features::hasTeamFeatures()) { ... }Arr::get($input, 'key') for optional field retrieval from validated inputNewsletterSubscriber::subscribeUser() / unsubscribe(); read the marketing audience only through marketable()How can I help you explore Laravel packages today?