Consumer Automation
FastForward DevTools plays two roles at once:
- producer: this repository ships reusable workflow templates and default configuration files;
- consumer helper: the
dev-tools:synccommand copies those assets and links packaged skills and packaged project agents into other Fast Forward libraries.
Reusable Workflows Versus Consumer Stubs
This repository now separates reusable workflow entrypoints from the local
composite and script actions that implement them. Consumer repositories still
receive thin wrappers from resources/github-actions/*.yml
, but the reusable
implementation in this repository is increasingly composed from local actions in
.github/actions/
.
| Location | Role |
|---|---|
.github/workflows/*.yml
|
Reusable workflows and entry workflows implemented in this repository. |
resources/github-actions/*.yml
|
Small consumer stubs that call the reusable workflows through
workflow_call
. |
.github/actions/php/*
|
Shared PHP helpers such as workflow PHP-version resolution, Composer setup, and local-vs-workflow DevTools runtime bootstrap. |
php-fast-forward/changelog
|
External fragment, history, version-PR and publication lifecycle called
through its reusable workflow at @v0
. |
.github/actions/github-pages/*
|
Shared GitHub Pages helpers for restoring previews, removing closed pull request previews, cleaning orphaned previews, and verifying published URLs. |
.github/actions/project-board/*
|
Reusable project-automation actions for resolving the target board, inferring review status, syncing linked metadata, and transitioning items through repository delivery states. |
.github/actions/review/*
|
Reusable helpers that render deterministic rigorous-review briefs for pull requests that just became ready for review. |
.github/actions/summary/*
|
Shared helpers that append deterministic Markdown outcomes to
GITHUB_STEP_SUMMARY
after workflows already know their final URLs,
refs, versions, or verification results. |
.github/actions/wiki/*
|
Legacy Wiki helpers for preview branches, promotion, publication validation, and cleanup, retained for unmigrated callers. |
.github/dependabot.yml
|
This repository's own Dependabot configuration. |
resources/dependabot.yml
|
Template copied into consumer repositories. |
.agents/skills/*
|
Packaged agent skills linked into consumer repositories by the
skills
command. |
.agents/agents/*
|
Packaged project-agent prompts linked into consumer repositories by
the agents
command. |
.dev-tools/wiki-generated
|
Local Markdown API documentation generated by normal sync and the direct Wiki workflow without a repository submodule. |
How GitHub Pages Publishing Works
.github/workflows/reports.ymlrunsdev-tools reportsthrough the shared workflow bootstrap.- The workflow delegates repeated GitHub Pages tasks to
.github/actions/github-pages/*instead of keeping that shell logic inline. - Pull requests publish previews under
previews/pr-<number>/. - On the
mainbranch, GitHub Pages serves the generated site from the root of the Pages branch.
How Wiki Publishing Works
The active .github/workflows/wiki.yml
calls wiki-direct.yml
. The
generation job uses read-only permissions; a separate publication job runs
only from main
with Wiki write permissions. Consumer generation uses a
full, pinned DevTools checkout with an isolated renderer installation,
preserving the consumer's Composer manifest, lock file, and plugin allowlist.
In practice:
- pull requests generate a reviewable artifact without publishing Wiki content or committing submodule pointers;
- after merge,
maingenerates and publishes directly to the separate Wiki repository; - publication replaces generated
Home.md,classes/, andfunctions/content while preserving manually maintained pages outside those surfaces; - normal local sync writes
.dev-tools/wiki-generatedwithout--init.
The producer's wiki-maintenance-entry.yml
and packaged consumer
wiki-maintenance.yml
are manual-only migration notices. Legacy reusable
wiki-preview.yml
and wiki-maintenance.yml
still support unmigrated
callers using the preview-branch and submodule model.
How Changelog and Project Automation Fit In
.github/workflows/changelog.ymlcalls the external Changelog lifecycle at@v0using the official README's single-job caller with the owner-approvedname: Fast Forward Changelogandpublish: trueoverrides.- The external workflow validates contribution fragments and prepares the
changelog/versionPR titledchore: update changelog. Publication is automatic after that reviewed PR is merged. The lifecycle uses its default Ubuntu runner and GitHub token and never merges the PR itself. .github/workflows/review.ymlcomposes its ready-for-review intake from.github/actions/review/*and posts a deterministic brief that points maintainers to the packagedreview-guardianagent andpull-request-reviewskill.tests.yml,reports.yml, and legacy wiki preview and maintenance flows delegate final run summaries to.github/actions/summary/*after their final-state information is known.- Project-board automation is no longer just an inline workflow concern; it is a reusable local action group shared by issue, pull-request and review automation.
See Branch Protection and Bot Commits for the branch protection model,
bot commit behavior, and legacy .github/wiki
conflict resolution steps.
Producer Impact
Any change to resources/github-actions
, resources/dependabot.yml
,
.agents/skills
, .agents/agents
, .github/workflows
, or
FastForward\DevTools\Console\Command\SyncCommand
changes the default onboarding
story for every consumer library.