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.
Installation
FastForward DevTools is installed as a development dependency and exposed through Composer as both a plugin and a local binary.
Requirements
- PHP 8.3 or newer.
- Composer 2.
- A project with PSR-4 autoload definitions in
composer.json. - Git, for repository metadata and workflow synchronization.
Install with Composer
composer require --dev fast-forward/dev-tools
What happens after installation?
When 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 a project-relative reference to the active packaged DevToolsgrumphp.ymlpath.- In normal mode,
dev-tools:syncgenerates local Markdown documentation in.dev-tools/wiki-generatedwithout initializing a Wiki submodule. 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.
Wiki publication is separate from local synchronization. The synchronized
wiki.yml
wrapper calls wiki-direct.yml
to generate documentation with
read-only permissions on pull requests and publish directly to the separate
Wiki repository from main
. Its isolated, pinned DevTools checkout provides
the renderer without changing the consumer's composer.json
,
composer.lock
, or plugin allowlist.
The synchronized wiki-maintenance.yml
is a manual-only migration notice.
Existing callers of the legacy reusable preview and maintenance workflows
remain supported until they migrate. The explicit wiki --init
option also
remains available for legacy submodule users; normal sync does not use it.
First commands to try
After installation, these are the most useful sanity checks:
composer skills
composer agents
composer tests
composer docs
composer dev-tools
If Composer argument forwarding becomes awkward, call the binary directly:
vendor/bin/dev-tools tests --filter=SyncCommandTest
If you want to verify the packaged skills or project agents on their own, run:
vendor/bin/dev-tools skills
vendor/bin/dev-tools agents
When manual sync is useful
If the package was installed with Composer plugins disabled, or if you want to refresh consumer automation after upgrading this package, run:
composer dev-tools:sync
Or call the binary explicitly:
vendor/bin/dev-tools dev-tools:sync