Packstub.

Installation

Partisan is a dev dependency of your package — the library you're building, not an application. It installs from Packagist like any other Composer package; no accounts or tokens are involved.

Requirements

Requirement Version
PHP ^8.2
orchestra/testbench ^10.0 or ^11.0 (Laravel 12 / 13 skeletons)
orchestra/canvas ^10.0 or ^11.0

Testbench and Canvas are direct dependencies of partisan, so requiring partisan brings both in at compatible versions. If your package already requires Testbench (most do), Composer simply resolves the shared constraint.

Install

From your package directory:

composer require --dev packstub/partisan

That's it. Verify the mapping partisan derived from your composer.json:

vendor/bin/partisan partisan:about

You should see your source path (src/), root namespace, tests path, and any providers discovered from extra.laravel.providers.

First generator

vendor/bin/partisan make:model Invoice

For a package named acme/widget with "Acme\\Widget\\": "src/" in its PSR-4 autoload, this writes src/Models/Invoice.php with namespace Acme\Widget\Models;.

From here, the Generators guide covers the full suite, and Configuration covers the (rarely needed) knobs.

A shorter command

vendor/bin/partisan is a lot of typing for a tool you reach for constantly. Add a shell alias:

# ~/.zshrc or ~/.bashrc
alias pa="vendor/bin/partisan"

Then, from your package root:

pa make:model Invoice

If you often work from subdirectories, use a function that finds the nearest vendor/bin/partisan upward instead:

pa() {
  local dir=$PWD
  while [ "$dir" != "/" ]; do
    [ -x "$dir/vendor/bin/partisan" ] && { "$dir/vendor/bin/partisan" "$@"; return; }
    dir=$(dirname "$dir")
  done
  echo "no vendor/bin/partisan here — composer require --dev packstub/partisan" >&2
  return 1
}

Upgrading

Partisan follows semantic versioning. Update like any Composer dev dependency:

composer update packstub/partisan