@@ -35,6 +35,8 @@ across Fast Forward libraries.
3535- Synchronizes packaged skills and project-agent prompts into consumer
3636 ` .agents/skills ` and ` .agents/agents ` directories using safe link-based
3737 updates
38+ - Supports guide-only and automation-only repositories by skipping PHPUnit or
39+ wiki generation gracefully when no runnable PHP surface exists
3840- Works both as a Composer plugin and as a local binary
3941- Preserves local overrides through consumer-first configuration resolution
4042
@@ -71,6 +73,8 @@ You can also run individual commands for specific development tasks:
7173``` bash
7274# Run PHPUnit tests
7375composer dev-tools tests
76+ composer dev-tools tests --json
77+ composer dev-tools tests --pretty-json
7478
7579# Analyze missing, unused, misplaced, and outdated Composer dependencies
7680composer dependencies
@@ -120,6 +124,7 @@ composer phpdoc
120124
121125# Generate HTML API documentation using phpDocumentor
122126composer docs
127+ composer docs --source=docs/user-guide
123128
124129# Generate Markdown documentation for the wiki
125130composer wiki
@@ -180,6 +185,14 @@ The `metrics` command ships with `phpmetrics/phpmetrics` as a direct
180185dependency of ` fast-forward/dev-tools ` , so consumer repositories can generate
181186metrics reports without extra setup.
182187
188+ Guide-only repositories and workflow-only repositories can still use the
189+ packaged command surface. When no runnable PHPUnit surface exists, ` tests `
190+ returns a controlled warning instead of failing. When a repository ships
191+ guides without PSR-4 source paths, ` docs ` builds the guide site without trying
192+ to synthesize API pages. When ` .github/wiki ` is absent and no wiki has been
193+ initialized yet, ` wiki ` now skips generation with a warning instead of failing
194+ the whole automation run.
195+
183196The changelog commands manage Keep a Changelog 1.1.0 files without requiring
184197extra tooling in the consumer repository. ` changelog:entry ` bootstraps a
185198missing changelog file on first use, ` changelog:check ` enforces meaningful
@@ -209,16 +222,35 @@ automatically when the runtime is detected as agent-driven. For
209222prints raw values so release workflows can keep capturing semantic versions
210223and piping rendered release notes directly into GitHub releases.
211224
225+ ` --pretty-json ` intentionally remains valid JSON. DevTools does not inject ANSI
226+ escape sequences into that mode today because preserving a parseable payload
227+ takes precedence over terminal-only color. Where orchestrated tools can expose
228+ structured subprocess results safely, DevTools prefers adding stable fields to
229+ the JSON context rather than coloring otherwise strict JSON output.
230+
231+ For the ` tests ` command, structured runs now capture the bundled PHPUnit
232+ agent-reporter payload inside ` context.output ` while preserving the normal
233+ DevTools JSON envelope. That means the top-level command still emits one final
234+ document, and consumers can inspect stable nested keys such as
235+ ` context.output.result ` , ` context.output.summary ` , optional
236+ ` context.output.details ` , and ` context.output.coverage ` when minimum-coverage
237+ validation is active.
238+
212239Progress output is disabled by default on the commands that support transient
213240rendering, and ` --progress ` re-enables it for human-readable terminal runs.
214241When ` --json ` or ` --pretty-json ` is active on commands that orchestrate other
215242tools, DevTools keeps progress suppressed, forwards JSON flags where the
216243underlying tool supports structured output, and otherwise falls back to
217- quieter subprocess modes so the captured payload stays machine-readable. In
218- GitHub Actions, queued subprocess output is grouped into collapsible sections,
219- and logged failures emit native workflow error annotations, including file and
220- line metadata when commands provide it. The packaged tests, reports, wiki, and
221- changelog workflows also append concise Markdown outcomes to
244+ quieter subprocess modes so the captured payload stays machine-readable. The
245+ ` tests ` command now captures the bundled PHPUnit agent-reporter payload in
246+ structured runs and stores it in ` context.output ` , preserving ` result ` ,
247+ ` summary ` , optional ` details ` , and a ` raw_output ` fallback when coverage or
248+ other PHPUnit text is emitted before the final reporter JSON. In GitHub
249+ Actions, queued subprocess output is
250+ grouped into collapsible sections, and logged failures emit native workflow
251+ error annotations, including file and line metadata when commands provide it.
252+ The packaged tests, reports, wiki, and changelog workflows also append concise
253+ Markdown outcomes to
222254` GITHUB_STEP_SUMMARY ` so maintainers can scan versions, URLs, preview refs,
223255verification status, and release results without expanding full logs. This
224256repository also keeps a bounded retry workflow that reruns failed jobs once
@@ -324,8 +356,8 @@ authoring.
324356- ` Composer Plugin ` - ` FastForward\DevTools\Composer\Plugin ` exposes the
325357 packaged command set to Composer and runs ` dev-tools:sync ` after install and
326358 update.
327- - ` DevTools Container ` - ` FastForward\DevTools\Console\DevTools::create( ) `
328- builds a shared container from ` DevToolsServiceProvider ` , which wires
359+ - ` DevTools Container ` - ` FastForward\DevTools\Container\ContainerFactory::get(FastForward\DevTools\ Console\DevTools::class ) `
360+ resolves the shared application from ` DevToolsServiceProvider ` , which wires
329361 process execution, filesystem access, changelog services, Git helpers,
330362 diffing, reporting, and template loading.
331363- ` Generic Link Synchronization ` -
0 commit comments