goodm4ven/anvil
Anvil is a Laravel/PHP package that helps you forge robust applications faster. It bundles practical utilities and sensible defaults for common development tasks, reducing boilerplate and keeping your code clean, expressive, and easy to maintain.
Architecture fit. goodm4ven/anvil is scoped as an internal toolkit for developing Laravel packages, not a runtime library. That makes its architectural fit conditional: it belongs in require-dev of package repositories or as a scaffold/template, not in application production code. For a team that maintains multiple first-party Laravel packages and wants a standardized structure (service providers, config publishing, stubs, test harness), the value proposition is real. For a team building a single application, it is largely irrelevant.
Integration feasibility. Composer-based installation is mechanically simple, but the package has zero stars, zero dependents, and is archived. There is no external documentation, no community validation, and no signal of production use. Feasibility therefore depends entirely on a manual source audit: what it registers (service providers, Artisan commands, stubs, config), what it pins (Laravel and PHP constraints), and whether it is dev-only or leaks into runtime. MIT licensing is permissive and removes legal friction for forking, which is the most realistic integration path.
Technical risk: high. "Archived" is the dominant risk factor—no security patches, no Laravel major-version compatibility work, and no upstream issue triage. The package also appears opinionated and internally named, suggesting it encodes one team's conventions rather than a general contract. The repository's AGENTS.md shows Laravel Boost/AI-assisted conventions for PHP 8.3 with strict typing; that is a development-culture signal, not a functional guarantee, but it reinforces that this is an idiosyncratic internal tool. Bus factor is effectively one.
Key questions.
composer.json actually declare?Stack fit. Compatible on paper with a modern Laravel/PHP 8.3+ stack and Composer workflows. The repository's own guidelines (strict types, constructor promotion, explicit return types, TitleCase enums) align with mainstream Laravel engineering standards, so adopting its conventions would not create stylistic conflict. The misfit is organizational, not technical: it assumes a package-authoring workflow that many product teams do not have.
Migration path. Do not composer require the archived upstream directly. Instead: (1) audit and vendor the source, (2) fork into an internal Git repository under our org, (3) publish via a private Composer VCS/path repository with a pinned tag, or (4) extract only the reusable pieces—stubs, skeleton, config defaults—into our existing scaffold. A full lift-and-shift is only justified if we are standardizing package development across several teams.
Compatibility. Validate against our supported Laravel version matrix before anything else; an archived package is likely to lag current and next Laravel majors. Check PHP constraint alignment with 8.3.6, confirm service-provider auto-discovery behavior, and run its tests inside a throwaway Laravel app. Pin exact versions and treat every Laravel upgrade as a fork-maintenance event.
Sequencing.
Maintenance. Post-fork, we own it. Budget recurring effort for each Laravel major release and any PHP minor that changes typing or deprecations. Because upstream is archived, there is no path to upstream fixes—every patch is ours. This is acceptable only with a named owner and a small, explicit maintenance budget.
Support. No vendor or community support exists; knowledge is limited to the source and the original author. Internal support means an owner, a README we write ourselves, and a documented escalation path. Zero dependents also means zero external bug reports—failures will surface only in our own usage.
Scaling. Runtime scaling is not applicable (dev-time tooling). Scaling is organizational: cost per additional team is low once conventions are documented, but standardization only pays off above a threshold of package count. Below that threshold, the fork overhead exceeds the benefit.
Failure modes.
require-dev into production dependencies.Ramp-up. Low for experienced Laravel engineers—the conventions are conventional. Expect roughly one to two days per engineer to read the source and internal docs, plus owner time to author those docs. The real ramp-up cost is institutional: establishing the fork, the release process, and the "when to use this vs. our existing skeleton" decision rule.
TPM recommendation. Do not adopt as a production dependency. Treat anvil as a reference implementation or a candidate internal fork, contingent on the compatibility spike and a committed owner. Given zero adoption, archived status, and a low opportunity score, the default should be "build or reuse our own scaffold" unless the source audit reveals unique, hard-to-replicate tooling.
How can I help you explore Laravel packages today?