Packstub.

Generators

Partisan routes the entire make: family through a generator preset built from your package's composer.json, so every command produces files inside your package with your namespace.

Where files land

For a package named acme/widget with "Acme\\Widget\\": "src/":

Command Destination Namespace
make:model Invoice src/Models/Invoice.php Acme\Widget\Models
make:command SyncInvoices src/Console/SyncInvoices.php Acme\Widget\Console
make:migration create_invoices_table database/migrations/…
make:factory InvoiceFactory database/factories/… Acme\Widget\Database\Factories
make:seeder InvoiceSeeder database/seeders/… Acme\Widget\Database\Seeders
make:test InvoiceTest tests/Feature/… Acme\Widget\Tests\Feature
make:filament-resource Invoice src/Filament/Resources/… Acme\Widget\Filament\Resources\…

…and the rest of the suite: casts, controllers, events, jobs, listeners, mail, middleware, notifications, policies, providers, requests, rules, views, components, enums, interfaces, traits, and more. Filament generators are covered in detail in Filament plugins.

The wiring you'd normally do by hand

Generating the file is the easy part; partisan also takes care of the follow-up edits:

make:command registers the command

After generating, partisan offers to register the new command in your package's service provider (automatic under --no-interaction; opt out with --no-register). It inserts into an existing $this->commands([...]) or a spatie-style ->hasCommands([...]) block — adding the import, never duplicating an entry — and appends a fresh $this->commands([...]) block to boot() when the provider has neither.

make:model --factory wires the factory

Package factories don't resolve by Laravel's app conventions, so partisan wires them explicitly: the HasFactory docblock points at your Database\Factories namespace and a #[UseFactory(InvoiceFactory::class)] attribute is added to the model. Invoice::factory() resolves at runtime with no manual newFactory() method. If a future Laravel stub ships its own factory wiring, partisan detects it and only corrects the namespace.

make:test extends your base test case

Generated feature tests extend your package's own tests/TestCase.php when you have one, or Orchestra\Testbench\TestCase otherwise.

make:provider stays hands-off

The class is written into src/Providers; registering it in your package's provider chain is deliberately left to you — provider wiring is structural enough that you'll want it explicit.

Generating into the Workbench app instead

The standard Canvas presets remain available per command when you want a file in your Workbench demo app rather than the package itself:

vendor/bin/partisan make:model Demo --preset=workbench

Beyond generators

Because partisan wraps the Testbench CLI, everything Testbench can do works from the same binary — vendor/bin/partisan serve, migrate, route:list, workbench:install, and your package's own artisan commands (auto-registered from extra.laravel.providers — see Configuration).