pestphp/pest-plugin-init
A Pest plugin that adds an init command to quickly bootstrap Pest in an existing PHP or Laravel project, generating the baseline test configuration and scaffolding needed to start writing Pest tests.
./vendor/bin/pest --init). That is a clean, low-cost precedent for a decision we will face on our own CLI/SDK roadmaps: scaffolding and first-run setup belong inside the core product surface, not behind a plugin boundary.phpunit.xml and tests/Pest.php, laying out the test directory. Use it as a scoping artifact for what an init flow must touch: existing-config detection, namespace and test-path conventions, idempotent re-runs, partial-failure recovery.*Test.php classes running as-is, convert file-by-file) rather than a big-bang rewrite?opportunity: 21.53 score is an artifact of zero adoption on an archived repo, not evidence of an underserved niche. Write it down so a future evaluator doesn't burn a spike rediscovering it.Consider it — as reference material, not a dependency — when:
Look elsewhere when:
./vendor/bin/pest --init); adding this risks conflicting behavior for no gain.For executives (30 seconds): This is a small, archived plugin that bootstraps Pest inside a PHP project. It has essentially no adoption and has been superseded — the capability now ships inside Pest itself. Recommendation: do not adopt it. Invest one engineer-hour reading it as a design reference, extract the UX checklist for our own onboarding flow, and move on. Cost: negligible. Risk: zero, because nothing ships with it.
For engineering (the actual ask): Don't add this to composer.json — it's archived, unmaintained, and duplicated by current Pest core. Treat it as documentation instead: read the command class for how it handles existing phpunit.xml files, test-directory and namespace detection, and idempotency on partially-initialized projects, then point anyone who needs the behavior at the built-in pest --init. If it appears in a lockfile anywhere, that is a removal task, not an upgrade task — drop it from require-dev, run core --init, clear any extra.pest.plugins and allow-plugins entries, and run the suite; roughly 30–60 minutes per repo. If we build our own scaffolding command, this is a 20-minute source of edge cases.
Strategic takeaway to carry forward: the plugin-to-core graduation pattern is a useful lens. Capabilities at the very first touchpoint of the developer experience — install, init, upgrade — tend to migrate into the core product, because the plugin boundary adds friction exactly where friction is most expensive. Plan accordingly: design our scaffolding as a core command with a stable interface from day one, rather than as an ecosystem extension we will later have to absorb or abandon.
How can I help you explore Laravel packages today?