statamic/cli
The official command-line installer for Statamic, the Laravel-based content management system. Quickly scaffold new Statamic projects, manage installations, and streamline local setup from your terminal with simple, intuitive commands, so you can start building sites faster.
Category correction is the first decision. statamic/cli is not a runtime Laravel package. It is a globally installed developer CLI that scaffolds a Statamic project (Statamic being a Laravel-based CMS), wires configuration, and exits. It belongs in the same intake lane as linters, formatters, and scaffolding tools — not the library lane. If it was scored against runtime-package signals, the 22.17 composite is a false negative and should not gate adoption.
composer global require or cpx never appears in an application's composer.json, so it cannot accrue dependents. The correct health proxy is first-party ownership: this is vendor-maintained tooling shipped by the same organisation that ships the CMS.Architecture fit: high, strictly conditional. The tool occupies the developer-onboarding layer — it runs before a project exists and outside any request lifecycle we ship. It adds no runtime surface, no service registration, no config contract, and no security boundary to production. Fit is high if and only if we are standardising on Statamic. For plain Laravel or non-Statamic stacks it is inert. Where a mature internal scaffolding template already exists, adopting this as-is forks the golden path; the better architecture is to consume it as an inner layer beneath an organisation-specific wrapper.
Integration feasibility: high, gated on two items. Installation is a one-liner (cpx, which 3.7.0 explicitly recommends in #111), and there is no application-side wiring to design. Feasibility therefore reduces to environment floors and non-interactive behaviour.
Technical risk: low overall, concentrated.
composer install time during scaffolding, typically as an opaque dependency-resolution error that does not name the actual cause. Blast radius is small, but per-incident severity is high: because the CLI runs before the project exists, failure blocks onboarding outright with no fallback a new engineer can reason their way to.Key questions to resolve before committing.
Stack fit. Laravel plus Statamic only. There is no partial-fit story: on plain Laravel the tool adds nothing, and on other CMS choices it is inapplicable. Within a Statamic standard, fit is across the board — greenfield evaluation, squad-level project creation, and CI-driven environment provisioning.
Integration pattern: wrapper, not fork. Adopt the vendor CLI as the inner layer and keep organisation-specific concerns (naming conventions, SSO bootstrap, cloud provisioning, secrets hydration) in a thin internal wrapper that calls it. This preserves vendor maintenance for the parts that churn fastest — license wiring, starter kits, setup hygiene — while keeping our golden path intact. If no wrapper exists and no backlog item does, adopt directly rather than build.
Migration path. This is additive and reversible: no production footprint, no data migration, uninstall is composer global remove. Where it displaces an internal scaffolder, run both in parallel for one sprint on the same project brief, diff the resulting repositories, then deprecate the loser. The decision that matters is not "how do we migrate" but "do we retire our generator" — and that should be answered by the parallel run, not by the release notes.
Compatibility gates, in order of blocking severity.
cpx and outbound network access to Packagist and the Statamic license service during provisioning.composer.json records it.Sequencing.
Maintenance. The critical operational fact is invisibility: nothing in any application's composer.json records this dependency, so it will silently age. Assign a named owner and a re-audit cadence — quarterly, plus on any Statamic major — and subscribe to the GitHub release feed. Budget is near zero; the cost is attention, and attention is exactly what a dependency like this fails to attract.
Support. Expect onboarding ticket volume to fall, since setup variance is the usual source. But it introduces one new ticket class: "the CLI failed," which the reporter cannot debug because the failure happens before a project exists to inspect. Mitigate with a runbook covering the two known failure modes and a documented manual-scaffold fallback so a blocked engineer always has a next step.
Scaling. Per-developer cost is negligible; the scaling risk is drift, not load. Install at the image layer, not per-machine — that converts an unbounded fleet problem into a single build artefact. On CI, the multiplication is by job count: an interactive prompt that hangs instead of failing fast turns one bad job into a queue of them, which is why step 4 of the sequencing is non-negotiable before automation.
Failure modes, ranked.
Ramp-up. Low and front-loaded. Roughly one to two hours of platform effort to pin, image, and document; effectively zero for developers once the base image carries it. The real ramp cost is organisational — getting images and runners to the PHP floor before the CLI lands, and socialising that the tool is the default. Do not sequence that backwards.
Recommendation. Adopt as developer tooling contingent on the environment audit and the non-interactive validation, with a named owner, a pinned version, and an image-layer install. No budget request; the decision this unlocks is whether the vendor CLI replaces or sits beneath the internal scaffolder.
How can I help you explore Laravel packages today?