stixx/openapi-command-bundle
A Symfony bundle that adds console commands for working with OpenAPI specs, making it easier to generate, validate, and manage API documentation from the CLI during development and CI workflows.
Architecture fit. stixx/openapi-command-bundle is a Symfony bundle that exposes console commands for producing OpenAPI documents — it is a build/CI-time tool, not a runtime dependency. That framing matters: it should sit in a tooling image or a dedicated contract-generation step, never in the application's request path. Note the naming: despite being reviewed here as a "Laravel/PHP package," the -bundle suffix and release lineage point to Symfony's bundle conventions. There is no Laravel service provider, no publishable Laravel config, and no Laravel-facing facade. For a Laravel-only estate the fit is poor-to-mediocre — it would have to be driven as an external CLI invocation or wrapped in a thin adapter.
Integration feasibility. Workable, with caveats. Highest-value path is running it as a standalone console command in CI, publishing the resulting spec as a build artifact. If invoked outside a Symfony application, someone must bootstrap a console kernel and register the bundle — roughly a one-to-two day spike, not a drop-in. If invoked inside an existing Symfony service, cost approaches zero.
Technical risk. The 0.15.0 change flips a default: build-time warming of OpenAPI documents is now opt-in (PR #58). Any pipeline that depended on implicit warming during build will stop emitting documents — and may do so silently, since a build step that no longer runs rarely fails loudly. That is the dominant risk in this release. Compounding factors: the package is pre-1.0, so minor bumps are permitted to carry behavioral changes; there is a single maintainer; and there is no stated LTS or support window.
Key questions.
Stack fit. Composer and PHP 8.x — no friction at the language level. The friction is framework-shaped. For Laravel services, the pragmatic answer is to use a Laravel-native generator (dedoc/scramble or L5-Swagger) and reserve this bundle for Symfony services. If the organization wants one contract-linting and publishing step across both, this bundle can legitimately serve as the Symfony-side producer feeding a shared artifact store, with the Laravel side feeding the same store from a different tool.
Migration path. Do not take 0.15.0 blind. Pin at 0.14.2, branch, bump to 0.15.0, then explicitly re-enable warming via whatever config or flag PR #58 introduced. Diff the generated artifacts against the 0.14.2 output — they should be identical. Only after that comparison passes should the bump roll forward.
Compatibility. Verify PHP constraint and Symfony component versions against the supported matrix before anything else; a pre-1.0 bundle is the most likely place for an unexpected ^6.4 || ^7.0 style constraint. Also confirm whether the opt-in switch requires a per-service config file edit, which changes the rollout from one CI change to N repository changes.
Sequencing.
Maintenance. Single-maintainer, pre-1.0, behavioral changes on minor bumps. Pin exact versions in the tooling image rather than using caret ranges, and budget for the possibility of vendoring or forking if upstream goes quiet. Assign an internal owner; this package will not have a vendor to escalate to.
Support. No SLA. The realistic support model is a runbook entry covering the opt-in flag and the expected artifact path, so that an on-call engineer encountering "the openapi.json is missing from the build" can resolve it without reading upstream PRs. Given this release, that runbook entry should be written now rather than after the first incident.
Scaling. The change is neutral-to-favorable on cost: teams that never needed build-time warming stop paying for it, and teams that do need it opt in deliberately. For organizations running spec generation across many services, the win is real CI-minute reduction. The tradeoff is that the decision now lives in N configuration files instead of one upstream default, which is a governance cost rather than a compute cost.
Failure modes.
Ramp-up. Low for engineers comfortable with Symfony console and Composer scripts — roughly half a day to read the docs and wire the CI step. Laravel-only engineers will need context on bundle bootstrapping and the console kernel, which is unfamiliar territory and where most of the spike time will actually go.
How can I help you explore Laravel packages today?