johnbillion/plugin-infrastructure
Reusable infrastructure for WordPress plugins: a set of classes and utilities covering common plugin needs such as hooks, admin settings, and lifecycle handling, helping developers build cleaner, more maintainable plugins with less boilerplate.
Architecture fit — poor as a dependency, non-trivial as a pattern source. Despite the "Laravel/PHP package" tag, johnbillion/plugin-infrastructure is not a Laravel package. It is a personal scaffold of reusable CI/CD and test infrastructure for the maintainer's WordPress plugins: GitHub Actions workflow definitions, PHPCS/PHPUnit configuration, and shell scripts for provisioning the WordPress test suite. It exposes no runtime library, no service provider, no facade, and no PSR-4 autoloadable domain code. There is nothing for a Laravel application to composer require and boot. The only realistic leverage is architectural: copying and adapting its pipeline patterns into Laravel repositories.
Integration feasibility — low, and deliberately so. Because the artefact is mostly YAML and config rather than consumable PHP, "integration" means vendoring or transcribing files, not versioned dependency resolution. Two friction points stand out: the test harness targets the WordPress core test library and WP_UnitTestCase, which is incompatible with Laravel's Pest/PHPUnit setup and Orchestra Testbench; and the coding-standard config assumes WordPress Coding Standards, which will collide with Pint or a PHP-CS-Fixer ruleset. A Laravel team would keep the workflow shape (PHP matrix, Composer cache, static analysis gate, release tagging) and discard essentially all WordPress-specific content.
Technical risk — moderate-to-high for adoption, low for evaluation.
Key questions for the maintainer / evaluation owner
Recommendation: do not adopt as a dependency. Treat it as a reference implementation with a time-boxed (≤2 engineer-days) pattern-extraction exercise.
Stack fit — partial overlap at the tooling layer only. Both ecosystems are Composer/PHP and both run PHPUnit, so the matrix-testing and dependency-caching idioms transfer directly. Everything above that layer — WordPress test bootstrap, wp-env, WPCS sniffs, plugin-specific build/zip steps — does not. Expect roughly 20–30% of the content to be portable.
Migration path — harvest, don't install.
.github/workflows/* and the PHPCS/PHPUnit configs as design documents.composer validate, static-analysis job ordering, tag-driven release job, concurrency/cancel-in-progress settings.php artisan test / Pest instead of the WP test bootstrap, Larastan instead of WP-specific PHPStan stubs..github/workflows/php-ci.yml via workflow_call) in our own org, so it is versioned and owned by us.Compatibility — no illuminate/* constraints, so no dependency-resolution conflict; equally, no value delivered through Composer. The one real conflict surface is the coding-standard config: do not copy phpcs.xml.dist into a Laravel repo that already runs Pint.
Sequencing
Maintenance — the real cost is not adoption but ownership. Any copied YAML becomes our code the moment it lands; upstream fixes will not reach us, and periodic manual diffing is the only sync mechanism. Budget a small recurring review (quarterly) or accept drift and treat the copy as a one-time snapshot. Upstream itself has no deprecation policy to plan against.
Support — single maintainer, GitHub-issues support model, no SLA, no security-response process documented. For CI scaffolding the security surface is limited to third-party actions and secret handling, but any workflow we copy inherits those pinned-action risks and must be reviewed under our own supply-chain policy.
Scaling — CI cost scales with matrix size. A PHP × dependency-version × database matrix is where these scaffolds earn their keep, but the same matrix is the first thing to blow up build minutes on a growing monorepo. Set explicit matrix bounds and path filters rather than copying the full grid. Reusable workflows scale organizationally better than per-repo copies — another argument for promoting extracted patterns to an owned shared workflow.
Failure modes to watch
Ramp-up — reading the repo is cheap (an afternoon) for any engineer fluent in GitHub Actions; adapting it to Laravel is 1–2 days including validation. No training, no vendor onboarding, no procurement. The barrier is not complexity but relevance: the team should be told up front that this is a pattern library, not a dependency, so nobody budgets for an integration that cannot happen.
How can I help you explore Laravel packages today?