lucasp1337/laravel-loom
Laravel Loom is a small Laravel package that aims to make building and organizing application features simpler, with a lightweight API and sensible defaults. It is designed to slot into existing Laravel projects without heavy setup or boilerplate, giving developers a straightforward tool they can ad...
schema 1.0 describing routes, controllers, dispatch sites, events/listeners, models, and (new in v0.4.0) model_events, plus an audited query surface. That gives PMs and tech leads a defensible map of the system for roadmap scoping, module ownership, and "what breaks if we touch this" conversations — without asking engineers to hand-maintain diagrams.laravel/mcp surface plus Boost guidelines and skill (v0.4.0) make the codebase's structure queryable by agents. This is the concrete enabler for decisions like "should we invest in AI coding assistants for this repo, and will they have real context or just vibes?"Consider it when:
Look elsewhere when:
dispatchIf/Unless, Event facade aliases, inherited handlers) but static analysis has a ceiling.@internal tagging on optional-package classes clarify the boundary, but the supported surface is deliberately narrow — treat it as a CLI + schema tool, not a library.For executives (one paragraph): Loom is a free, open-source scanner that reads a Laravel codebase and produces a precise, machine-readable map of how it's wired — routes, events, jobs, models, queries. It's the difference between "we think this is what the system does" and a generated artifact anyone can query, including AI assistants. Adoption cost is low (a dev dependency, no runtime footprint), and the v0.4.0 release froze the output schema at 1.0, so what we build on top won't silently break. The trade-offs are honest: it requires Laravel 12+, it's a young v0.x project maintained by one person, and it maps structure rather than live traffic. Recommendation: pilot on one service to measure onboarding and pre-refactor estimation gains before standardizing.
For engineering leads: v0.4.0 is a maturity release, not a feature grab-bag. The scanner now discovers route files loaded by providers and inherits group attributes into them, which closes the biggest real-world coverage gap for large apps — the scanning now matches how the app actually boots. loom:scan gained configurable paths and options, so monorepos and non-standard layouts are workable. Dispatch sites now record execution mode, so you can distinguish synchronous from queued paths when reasoning about a queue migration. Under the hood there was real hygiene work — a Support\Ast facade, a single Fqcn helper, a declarative DispatchRule table, ClassPrimitiveDiscovery with per-primitive specs — which matters less for what it does today and more for whether it's maintainable enough to trust. Two things to note before you install: Laravel 11 support is dropped, and Livewire and laravel/mcp are now optional peer packages — if you want the UI or the agent surface you opt in explicitly, and classes belonging to those optional packages are tagged @internal, so don't build against them.
For the team adopting it: Install as a dev dependency, run loom:scan in CI, and diff the schema between branches to catch unintended architectural drift. Pair it with your APM — Loom tells you what can happen, your traces tell you what does.
How can I help you explore Laravel packages today?