crustum/plugin-manifest
Crustum Plugin Manifest offers a manifest-driven approach for registering and discovering plugins in Laravel applications, simplifying extensibility with validation, clean integration, and predictable configuration for PHP packages.
Architecture fit. Despite being listed as a "Laravel/PHP package," the description is explicit that this targets CakePHP, not Laravel. The package addresses a real architectural concern — a manifest-driven plugin loader that can publish assets, merge config, run migrations, and execute bootstrap code from a package into a host application — but it is bound to CakePHP's console, plugin, and configuration conventions. As a drop-in for a Laravel application, fit is effectively zero.
Integration feasibility. What is plausibly portable is the manifest schema and resolution logic: parsing a declared plugin manifest, validating dependencies/versions, computing an install plan (assets → public path, config → config path, migrations → migrator, bootstrap → service provider). What is not portable is the execution layer, which almost certainly uses CakePHP's Console, Plugin, Configure, and Migrations classes. A Laravel integration would be a reimplementation of the executor against Laravel primitives (ServiceProvider, Artisan commands, vendor:publish, Migrator, config() merge), not an adapter.
Technical risk. High. Signals are weak: 1 star, 0 dependents, score 0.005. That is not evidence of poor quality, but it is absence of evidence of correctness — no downstream consumers have stress-tested install ordering, idempotency, or rollback. Single-maintainer risk is material. The domain itself is dangerous: executing bootstrap code and running migrations from a third-party manifest is a privileged operation with a wide blast radius.
Key questions.
Stack fit. Poor for a Laravel-first stack. Treat this repository as reference design and manifest schema, not as a dependency. Do not add it to composer.json for a Laravel service; the transitive CakePHP requirement would bloat the dependency graph for functionality that would not run.
Migration path (conceptual port).
name, version, require, assets (source → target), config, migrations, providers.ServiceProvider plus Artisan commands (plugin:install, plugin:list, plugin:remove), using vendor:publish-style asset copying, Migrator::run() with path injection, and config merge via mergeConfigFrom.Compatibility. Verify the PHP constraint and CakePHP major version before investing in the spike; if it targets an EOL PHP version, the code may still be readable but any reusable snippets will need modernization.
Sequencing. Budget the spike at 1–2 days, the schema definition at 1–2 days, and the Laravel executor at 1–2 weeks including tests. Do the schema work before the executor — that is the artifact with durable value.
Maintenance. Any Laravel port becomes your maintained code. That is the correct outcome here: the upstream has one maintainer, one star, and no dependents, so relying on it for a production install path is unsupportable. Assume no upstream fixes; do not plan to upstream patches unless you intend to become the maintainer.
Support. Community support is effectively nonexistent. No issue history depth, no Stack Overflow corpus, no downstream examples to mine. Internal documentation of the schema becomes the only support surface.
Scaling. The workload is I/O-bound filesystem copying plus migration execution — fine at tens of plugins, not a throughput concern. The real scaling limit is combinatorial: N plugins × ordering constraints × shared config keys. Cost grows in operator confusion, not CPU.
Failure modes to design against.
Ramp-up. Low for reading (small, single-purpose codebase); moderate for safely reimplementing, because the hard part is not the copying logic but the failure semantics the original likely never specified. Plan for a Laravel engineer to spend the spike week and then treat the executor as security-sensitive code requiring review.
Recommendation. Do not adopt as a dependency. Fund a 1-week spike to extract the manifest contract, then decide whether the plugin-install capability is a real roadmap need. If it is not on the roadmap, close this out — the ecosystem signal does not justify speculative work.
How can I help you explore Laravel packages today?