Builds interactive CLI commands with Laravel Prompts. Activates when creating Artisan commands with user input, interactive prompts, progress bars, or when user mentions CLI, command, prompt, interactive, terminal input, or Artisan command with user interaction.
Activate this skill when:
Use search-docs for detailed Laravel Prompts patterns and documentation.
$name = text( label: 'What is your name?', placeholder: 'E.g. John Doe', default: '', required: true, validate: fn (string $value) => match (true) { strlen($value) < 2 => 'Name must be at least 2 characters.', default => null, }, hint: 'This will be displayed publicly.', ); </code-snippet>
<code-snippet name="Password Prompt" lang="php"> use function Laravel\Prompts\password; <code-snippet name="Confirm Prompt" lang="php"> use function Laravel\Prompts\confirm; <code-snippet name="Select Prompt" lang="php"> use function Laravel\Prompts\select; <code-snippet name="Multi-Select Prompt" lang="php"> use function Laravel\Prompts\multiselect; <code-snippet name="Search Prompt" lang="php"> use function Laravel\Prompts\search; <code-snippet name="Suggest Prompt" lang="php"> use function Laravel\Prompts\suggest; <code-snippet name="Progress Bar" lang="php"> use function Laravel\Prompts\progress; <code-snippet name="Spinner" lang="php"> use function Laravel\Prompts\spin; <code-snippet name="Output Messages" lang="php"> use function Laravel\Prompts\info; use function Laravel\Prompts\warning; use function Laravel\Prompts\error; use function Laravel\Prompts\alert; <code-snippet name="Table Output" lang="php"> use function Laravel\Prompts\table; <code-snippet name="Form Wizard" lang="php"> use function Laravel\Prompts\form; <code-snippet name="Artisan Command Example" lang="php"> <?php$password = password( label: 'Enter your password', required: true, validate: fn (string $value) => match (true) { strlen($value) < 8 => 'Password must be at least 8 characters.', default => null, }, ); </code-snippet>
$confirmed = confirm( label: 'Do you want to continue?', default: true, yes: 'Yes, proceed', no: 'No, cancel', hint: 'This action cannot be undone.', ); </code-snippet>
$role = select( label: 'What role should the user have?', options: [ 'admin' => 'Administrator', 'editor' => 'Editor', 'viewer' => 'Viewer', ], default: 'viewer', hint: 'The role determines access permissions.', ); </code-snippet>
$permissions = multiselect( label: 'Select permissions', options: [ 'create' => 'Create', 'read' => 'Read', 'update' => 'Update', 'delete' => 'Delete', ], default: ['read'], required: true, hint: 'Use space to select, enter to confirm.', ); </code-snippet>
$userId = search( label: 'Search for a user', options: fn (string $value) => strlen($value) > 0 ? User::where('name', 'like', "%{$value}%") ->pluck('name', 'id') ->all() : [], placeholder: 'Start typing to search...', ); </code-snippet>
$framework = suggest( label: 'What is your favorite framework?', options: ['Laravel', 'Symfony', 'Rails', 'Django'], placeholder: 'E.g. Laravel', ); </code-snippet>
$users = progress( label: 'Processing users', steps: User::all(), callback: fn (User $user) => $this->processUser($user), hint: 'This may take a while...', ); </code-snippet>
$response = spin( message: 'Fetching data from API...', callback: fn () => Http::get('https://api.example.com/data')->json(), ); </code-snippet>
info('Operation completed successfully.'); warning('This action is irreversible.'); error('Something went wrong.'); alert('Critical system alert!'); </code-snippet>
table( headers: ['Name', 'Email', 'Role'], rows: User::all(['name', 'email', 'role'])->toArray(), ); </code-snippet>
$responses = form() ->text('name', label: 'What is your name?', required: true) ->password('password', label: 'Create a password', required: true) ->confirm('newsletter', label: 'Subscribe to newsletter?') ->select('role', label: 'Select role', options: [ 'user' => 'User', 'admin' => 'Admin', ]) ->submit();
// Access: $responses['name'], $responses['password'], etc. </code-snippet>
namespace App\Console\Commands;
use Illuminate\Console\Command; use function Laravel\Prompts\confirm; use function Laravel\Prompts\select; use function Laravel\Prompts\text; use function Laravel\Prompts\info;
class CreateUserCommand extends Command { protected $signature = 'user:create'; protected $description = 'Create a new user interactively';
public function handle(): int
{
$name = text('What is the user\'s name?', required: true);
$email = text('What is their email?', required: true);
$role = select('What role?', ['admin', 'editor', 'user']);
if (confirm('Create this user?')) {
User::create(compact('name', 'email', 'role'));
info('User created successfully!');
return self::SUCCESS;
}
return self::FAILURE;
}
} </code-snippet>
use function Laravel\Prompts\text)