@@ -10,12 +10,15 @@ Local Command Lifecycle
10101. ``bin/dev-tools `` loads ``bin/dev-tools.php ``.
11112. ``bin/dev-tools.php `` prefers the consumer ``vendor/autoload.php `` and
1212 falls back to the package autoloader.
13- 3. ``FastForward\DevTools\DevTools `` boots the command registry from
14- ``FastForward\DevTools\Composer\Capability\DevToolsCommandProvider ``.
15- 4. ``standards `` is used as the default command when no explicit command name
13+ 3. ``FastForward\DevTools\Console\DevTools::create() `` builds a shared
14+ container from ``FastForward\DevTools\ServiceProvider\DevToolsServiceProvider ``.
15+ 4. ``FastForward\DevTools\Console\CommandLoader\DevToolsCommandLoader ``
16+ lazily discovers ``#[AsCommand] `` classes and resolves them from that
17+ container.
18+ 5. ``standards `` is used as the default command when no explicit command name
1619 is given.
17- 5. Commands receive dependencies through constructor injection from
18- `` DevToolsServiceProvider `` .
20+ 6. `` FastForward\DevTools\Composer\Capability\DevToolsCommandProvider `` only
21+ adapts the same application command set for Composer plugin integration .
1922
2023Consumer Synchronization Lifecycle
2124----------------------------------
@@ -26,12 +29,17 @@ Consumer Synchronization Lifecycle
2629 ``FastForward\DevTools\Composer\Capability\DevToolsCommandProvider ``.
27304. After ``composer install `` or ``composer update ``, the plugin runs
2831 ``vendor/bin/dev-tools dev-tools:sync ``.
29- 5. ``FastForward\DevTools\Console\Command\SyncCommand `` updates scripts, GitHub
30- workflow stubs, ``.editorconfig ``, ``dependabot.yml ``, ``.gitignore ``, and
31- the wiki submodule in the consumer repository.
32- 6. ``FastForward\DevTools\Console\Command\SkillsCommand `` synchronizes packaged skill
33- links into the consumer ``.agents/skills `` directory.
34- 7. ``FastForward\DevTools\Agent\Skills\SkillsSynchronizer `` creates missing
32+ 5. ``FastForward\DevTools\Console\Command\SyncCommand `` updates
33+ ``composer.json `` scripts, funding metadata, workflow stubs,
34+ ``.editorconfig ``, ``dependabot.yml ``, ``.gitignore ``,
35+ ``.gitattributes ``, the project license, and packaged Git hooks.
36+ 6. In normal mode, ``dev-tools:sync `` also runs ``wiki --init `` and
37+ ``skills `` to initialize the wiki submodule and synchronize packaged skill
38+ links into ``.agents/skills ``.
39+ 7. In ``--dry-run ``, ``--check ``, and ``--interactive `` modes, ``wiki `` and
40+ ``skills `` are skipped because they do not yet expose non-destructive
41+ verification paths.
42+ 8. ``FastForward\DevTools\Agent\Skills\SkillsSynchronizer `` creates missing
3543 links, repairs broken ones, and preserves consumer-owned directories.
3644
3745Documentation Pipeline
@@ -50,21 +58,37 @@ Documentation Pipeline
5058Dependency Injection
5159--------------------
5260
53- Commands receive their dependencies through constructor injection provided by
54- ``DevToolsServiceProvider ``.
61+ ``DevToolsServiceProvider `` builds the shared application container used by
62+ ``DevTools::create() ``. Most commands receive collaborators through
63+ constructor injection once resolved by that container, while command discovery
64+ itself stays lazy through ``DevToolsCommandLoader ``.
65+
66+ The provider wires the command runtime by concern rather than by one flat
67+ command list:
5568
5669.. list-table ::
5770 :header-rows: 1
5871
59- * - Interface
60- - Purpose
72+ * - Concern
73+ - Services
6174 * - ``FastForward\DevTools\Process\ProcessBuilderInterface ``
62- - Builds process commands with a fluent API for arguments.
63- * - ``FastForward\DevTools\Process\ProcessQueueInterface ``
64- - Queues and executes multiple processes in sequence.
65- * - ``FastForward\DevTools\Filesystem\FilesystemInterface ``
66- - Abstracts filesystem operations.
67- * - ``FastForward\DevTools\Composer\Json\ComposerJsonInterface ``
68- - Reads and validates ``composer.json `` metadata.
69- * - ``Symfony\Component\Config\FileLocatorInterface ``
70- - Locates configuration files.
75+ - ``ProcessBuilderInterface `` and ``ProcessQueueInterface `` build and
76+ execute subprocess pipelines.
77+ * - ``Filesystem and metadata ``
78+ - ``FilesystemInterface ``, ``ComposerJsonInterface ``, and
79+ ``FileLocatorInterface `` resolve local files, project metadata, and
80+ packaged resources.
81+ * - ``Console bootstrapping ``
82+ - ``CommandLoaderInterface `` resolves lazy command loading, and
83+ ``Composer\Plugin\Capability\CommandProvider `` exposes the same
84+ command set to Composer.
85+ * - ``Changelog and Git ``
86+ - The changelog manager, parser, renderer, checker, and
87+ ``GitClientInterface `` support changelog authoring, verification, and
88+ release-note flows.
89+ * - ``Synchronization helpers ``
90+ - Git ignore, Git attributes, license, resource diffing, and coverage
91+ summary services support consumer sync and reporting workflows.
92+ * - ``Shared infrastructure ``
93+ - ``LoggerInterface ``, ``ClockInterface ``, and Twig's
94+ ``LoaderInterface `` provide reusable runtime infrastructure.
0 commit comments