Skip to content

Commit bc7b1b5

Browse files
committed
docs(changelog,agents): document agent onboarding and standardize provider bootstrap snippets
1 parent a48fa2c commit bc7b1b5

10 files changed

Lines changed: 77 additions & 13 deletions

File tree

AGENTS.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# AGENTS - Fast Forward Framework
2+
3+
This repository is a PHP metapackage (`fast-forward/framework`) that aggregates and wires core
4+
Fast Forward components through a single provider entry point.
5+
6+
## Repository surfaces
7+
8+
- Primary package entrypoint: [`src/`](src/)
9+
- Container/service-provider behavior: [`src/ConfigProvider/`](src/ConfigProvider/)
10+
- Tests: [`tests/`](tests/)
11+
- Docs: [`docs/`](docs/)
12+
- CI configuration: [`.github/workflows/`](.github/workflows/)
13+
- Release history: [`CHANGELOG.md`](CHANGELOG.md)
14+
- Project README: [`README.md`](README.md)
15+
16+
## Setup and local workflow
17+
18+
- Run `composer install` before making any code changes.
19+
- Keep local runtime aligned to PHP 8.3 (project minimum).
20+
- Run full local validation with:
21+
- `composer dev-tools`
22+
- Apply auto-fixes and generated file synchronization with:
23+
- `composer dev-tools:fix`
24+
- Validate changelog discipline on PR branches with:
25+
- `composer dev-tools changelog:check -- --against=refs/remotes/origin/main`
26+
27+
## Testing and quality gates
28+
29+
- Primary test command: `composer dev-tools` (includes PHPUnit and report generation).
30+
- Focused test command used by the dev-tools pipeline: `vendor/bin/phpunit`.
31+
- Relevant changelog and release workflow checks are in
32+
[`.github/workflows/changelog.yml`](.github/workflows/changelog.yml) and
33+
[`.github/workflows/tests.yml`](.github/workflows/tests.yml).
34+
35+
## Documentation conventions
36+
37+
- Keep docs consistent with metapackage usage snippets and avoid instantiating providers directly
38+
when the `::class` shorthand is the canonical documented pattern.
39+
- Use `FrameworkServiceProvider::class` in documented bootstrap examples per current standards.
40+
41+
## PR and review expectations
42+
43+
- When making user-visible changes, add an entry under `## [Unreleased]` in [`CHANGELOG.md`](CHANGELOG.md).
44+
- Prefer concise entry wording and include the current PR reference when known.

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111

1212
- Add changelog history for releases v1.0.0-v1.3.0 during dev-tools asset synchronization. (#3)
1313
- Sync latest Fast Forward dev-tools managed assets (workflow templates, governance metadata, agents, and skills) into this repository. (#3)
14+
- Add repository AGENTS.md for agent task orchestration and local onboarding flow.
15+
16+
### Changed
17+
18+
- Prefer FrameworkServiceProvider::class in framework README/docs bootstrap snippets instead of instantiating provider objects.
1419

1520
## [1.3.0] - 2026-03-29
1621

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,15 @@ Requirements:
4646
declare(strict_types=1);
4747

4848
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
49-
use function FastForward\Container\container;
5049
use Psr\Clock\ClockInterface;
5150
use Psr\EventDispatcher\EventDispatcherInterface;
5251
use Psr\Http\Message\ResponseFactoryInterface;
5352

53+
use function FastForward\Container\container;
54+
5455
require __DIR__ . '/vendor/autoload.php';
5556

56-
$container = container(new FrameworkServiceProvider());
57+
$container = container([FrameworkServiceProvider::class]);
5758

5859
$responseFactory = $container->get(ResponseFactoryInterface::class);
5960
$dispatcher = $container->get(EventDispatcherInterface::class);

docs/advanced/customization.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ Register your application provider after the framework provider:
1313
1414
use App\ServiceProvider\AppServiceProvider;
1515
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
16+
1617
use function FastForward\Container\container;
1718
1819
$container = container(
19-
new FrameworkServiceProvider(),
20-
new AppServiceProvider(),
20+
FrameworkServiceProvider::class,
21+
AppServiceProvider::class,
2122
);
2223
2324
This keeps the framework defaults while giving your application room to add domain-specific
@@ -86,6 +87,7 @@ You can extend the framework's event behavior without replacing the framework pr
8687
use FastForward\Container\ContainerInterface;
8788
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
8889
use Psr\EventDispatcher\ListenerProviderInterface;
90+
8991
use function FastForward\Container\container;
9092
9193
$config = new ArrayConfig([

docs/advanced/integration.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ The recommended integration path is the ``container()`` helper from ``fast-forwa
1212
.. code-block:: php
1313
1414
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
15+
1516
use function FastForward\Container\container;
1617
17-
$container = container(new FrameworkServiceProvider());
18+
$container = container(FrameworkServiceProvider::class);
1819
1920
Integrate through configuration
2021
-------------------------------
@@ -29,6 +30,7 @@ container helper:
2930
use FastForward\Container\ContainerInterface;
3031
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
3132
use Psr\EventDispatcher\ListenerProviderInterface;
33+
3234
use function FastForward\Container\container;
3335
3436
$config = new ArrayConfig([

docs/api/service-provider.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ Usage
1818
.. code-block:: php
1919
2020
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
21+
2122
use function FastForward\Container\container;
2223
23-
$container = container(new FrameworkServiceProvider());
24+
$container = container(FrameworkServiceProvider::class);
2425
2526
What it aggregates
2627
------------------

docs/faq.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,10 @@ Use the helper function from ``fast-forward/container``:
4949
.. code-block:: php
5050
5151
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
52+
5253
use function FastForward\Container\container;
5354
54-
$container = container(new FrameworkServiceProvider());
55+
$container = container(FrameworkServiceProvider::class);
5556
5657
How do I access the current request?
5758
------------------------------------

docs/getting-started/quickstart.rst

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@ Minimal bootstrap
1515
1616
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
1717
use FastForward\Http\Message\Factory\ResponseFactoryInterface;
18-
use function FastForward\Container\container;
1918
use Psr\EventDispatcher\EventDispatcherInterface;
2019
use Psr\Http\Client\ClientInterface;
2120
use Psr\Http\Message\ServerRequestInterface;
2221
22+
use function FastForward\Container\container;
23+
2324
require_once __DIR__ . '/../vendor/autoload.php';
2425
25-
$container = container(new FrameworkServiceProvider());
26+
$container = container(FrameworkServiceProvider::class);
2627
2728
$request = $container->get(ServerRequestInterface::class);
2829
$responseFactory = $container->get(ResponseFactoryInterface::class);
@@ -55,9 +56,10 @@ function:
5556
.. code-block:: php
5657
5758
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
59+
5860
use function FastForward\Container\container;
5961
60-
$container = container(new FrameworkServiceProvider());
62+
$container = container(FrameworkServiceProvider::class);
6163
6264
This is the preferred documented bootstrap for this repository because the installed container
6365
package exposes the helper function and ``ContainerInterface``, not a ``Container`` class.

docs/usage/event-dispatching.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ The most practical way to add listeners is to provide them under the
3434
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
3535
use Psr\EventDispatcher\EventDispatcherInterface;
3636
use Psr\EventDispatcher\ListenerProviderInterface;
37+
3738
use function FastForward\Container\container;
3839
3940
final readonly class UserRegistered
@@ -77,6 +78,7 @@ If your project uses Symfony subscribers or ``#[AsEventListener]`` attributes, a
7778
use Psr\EventDispatcher\ListenerProviderInterface;
7879
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
7980
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
81+
8082
use function FastForward\Container\container;
8183
8284
final readonly class PaymentReceived

docs/usage/use-cases.rst

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ Bootstrap an application container
1313
.. code-block:: php
1414
1515
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
16+
1617
use function FastForward\Container\container;
1718
18-
$container = container(new FrameworkServiceProvider());
19+
$container = container(FrameworkServiceProvider::class);
1920
2021
This is the default starting point for web applications and small prototypes.
2122

@@ -29,6 +30,7 @@ Build an event-driven application workflow
2930
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
3031
use Psr\EventDispatcher\EventDispatcherInterface;
3132
use Psr\EventDispatcher\ListenerProviderInterface;
33+
3234
use function FastForward\Container\container;
3335
3436
final readonly class UserRegistered
@@ -68,11 +70,12 @@ Register your application services next to the framework
6870
6971
use App\ServiceProvider\AppServiceProvider;
7072
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
73+
7174
use function FastForward\Container\container;
7275
7376
$container = container(
74-
new FrameworkServiceProvider(),
75-
new AppServiceProvider(),
77+
FrameworkServiceProvider::class,
78+
AppServiceProvider::class,
7679
);
7780
7881
The later provider can add new services or override existing ones when it uses the same
@@ -87,6 +90,7 @@ Drive container setup from configuration
8790
use FastForward\Config\ArrayConfig;
8891
use FastForward\Container\ContainerInterface;
8992
use FastForward\Framework\ServiceProvider\FrameworkServiceProvider;
93+
9094
use function FastForward\Container\container;
9195
9296
$config = new ArrayConfig([

0 commit comments

Comments
 (0)