FastForward DevTools is installed as a development dependency and exposed through Composer as both a plugin and a local binary.
- PHP 8.3 or newer.
- Composer 2.
- A project with PSR-4 autoload definitions in
composer.json. - Git, if you want
dev-tools:syncto create the repository wiki submodule.
composer require --dev fast-forward/dev-toolsWhen Composer finishes the install or update, the package performs the following steps:
- Composer loads
FastForward\DevTools\Composer\Plugin. - The plugin exposes commands through
FastForward\DevTools\Composer\Capability\DevToolsCommandProvider. - Composer triggers
vendor/bin/dev-tools dev-tools:syncafter install and update. dev-tools:syncadds or refreshes thedev-toolsanddev-tools:fixscripts in the consumercomposer.json.dev-tools:syncremoves deprecated DevTools-managedextra.grumphp.config-default-pathentries, synchronizes funding metadata, copies automation assets such as workflow stubs,.editorconfig, and.github/dependabot.yml, and refreshes.gitignore,.gitattributes, the project license, and packaged Git hooks that prefer a project-localgrumphp.ymloverride and otherwise use the active packaged DevToolsgrumphp.ymlpath.- If
.github/wikiis missing,dev-tools:syncadds it as a Git submodule that points to the repository wiki. dev-tools:syncrunsgitignoreto merge canonical ignore rules into the consumer project.dev-tools:syncrunsskillsandagentsto create or repair packaged links inside.agents/skillsand.agents/agentswhen sync runs in normal mode rather than preview/check mode.
After installation, these are the most useful sanity checks:
composer skills
composer agents
composer tests
composer docs
composer dev-toolsIf Composer argument forwarding becomes awkward, call the binary directly:
vendor/bin/dev-tools tests --filter=SyncCommandTestIf you want to verify the packaged skills or project agents on their own, run:
vendor/bin/dev-tools skills
vendor/bin/dev-tools agentsIf the package was installed with Composer plugins disabled, or if you want to refresh consumer automation after upgrading this package, run:
composer dev-tools:syncOr call the binary explicitly:
vendor/bin/dev-tools dev-tools:syncImportant
The docs and reports commands require a docs/ directory. If
your package does not have one yet, create it before running those commands.
The skills and agents commands create .agents/skills and
.agents/agents when needed, but they do not overwrite existing
non-symlink directories inside those trees.