This repository holds the public GitHub organization profile and shared GitHub
metadata for php-fast-forward.
It exists so the organization page can have a proper manifesto, visual identity, shared automation, and sponsorship metadata without mixing that content into the framework or tooling repositories themselves.
profile/README.mdis the organization profile shown on the GitHub organization pageprofile/assetscontains the public assets used by that profile.github/FUNDING.ymldefines the organization sponsorship links.github/workflowscontains reusable GitHub Actions workflows shared by Fast Forward repositories.github/actionscontains composite actions used by the shared workflowscomposer.jsoninstalls local development tooling so this repository can run the same shared workflows it publishesdocs/github-actions-inventory.mdrecords which workflow and action surfaces moved here first
- Private or spoiler assets can be kept outside versioned profile assets
- The organization manifesto itself lives in
profile/README.md - Framework code and developer tooling live in their own repositories, especially
frameworkanddev-tools
The organization automation split follows
php-fast-forward/dev-tools#240:
- this repository owns reusable workflows and composite GitHub Actions
dev-toolsowns the PHP CLI commands, Composer plugin, and consumer workflow wrapper synchronization- consumer repositories keep thin workflow files that call reusable workflows from this repository
Reusable workflows checkout this repository's .github/actions tree into
.fast-forward-actions before calling local composite-action paths. The
checkout is explicit about repository: php-fast-forward/.github, because a
plain actions/checkout inside a reusable workflow checks out the consumer
repository. Consumer wrappers SHOULD call reusable workflows by tag, for example
php-fast-forward/.github/.github/workflows/tests.yml@v0.1.0, so Dependabot can
propose shared automation updates.
The shared-action source ref is resolved inside the reusable workflow. Local
runs in this repository use the current ref, with pull_request_target pinned
to the base SHA. Consumer workflow_call runs use the latest stable .github
release and fall back to main when no release exists yet. A consumer can set a
repository variable named FAST_FORWARD_ACTIONS_REF to temporarily smoke-test a
specific shared-action branch without adding another workflow input.
Workflows that need the Fast Forward CLI use .github/actions/dev-tools/setup,
which prefers an existing project-local vendor/bin/dev-tools binary and
otherwise installs fast-forward/dev-tools globally through Composer. The setup
action accepts a version input so wrapper workflows can test a specific
dev-tools branch or version without requiring the consumer package to depend
on fast-forward/dev-tools.
The shared workflows keep their local repository triggers here as a smoke test for the reusable implementation. PHP testing and report jobs detect whether the checked-out repository has Composer metadata, PHPUnit configuration, and test files before running, so documentation-only or automation-only repositories can consume the workflows without producing false failures.
The first extraction keeps wrappers in dev-tools until the coordinated
consumer-facing wrapper update is ready. Release-safe references for those
wrappers remain tracked separately in
php-fast-forward/dev-tools#238.