Composer Integration

FastForward DevTools is exposed through both a Composer plugin and a dedicated console application.

Startup Chain

  1. bin/dev-tools loads bin/dev-tools.php .
  2. bin/dev-tools.php prefers the consumer project's vendor/autoload.php and falls back to the package autoloader.
  3. bin/dev-tools.php starts FastForward\DevTools\Console\DevTools and appends --no-plugins .
  4. FastForward\DevTools\Console\DevTools::create() builds the shared container from FastForward\DevTools\ServiceProvider\DevToolsServiceProvider .
  5. FastForward\DevTools\Console\CommandLoader\DevToolsCommandLoader lazily discovers #[AsCommand] classes from the command namespace.
  6. FastForward\DevTools\Composer\Capability\DevToolsCommandProvider later exposes that same command set to Composer.

Composer Plugin Classes

Class Purpose
FastForward\DevTools\Composer\Plugin Registers the command provider and runs dev-tools:sync after Composer install and update.
FastForward\DevTools\Composer\Capability\DevToolsCommandProvider Instantiates and returns the available command classes.
FastForward\DevTools\Console\DevTools Console application used by the local binary.

Why --no-plugins Is Appended

The local binary already knows which commands it needs. Appending --no-plugins keeps the standalone application predictable and avoids pulling unrelated Composer plugins into the command runtime.