PHPackages                             crustum/plugin-manifest - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. crustum/plugin-manifest

ActiveCakephp-plugin[Utility &amp; Helpers](/categories/utility)

crustum/plugin-manifest
=======================

Plugin Manifest System - Install plugin assets, configs, migrations, and bootstrap code to CakePHP applications

1.1.1(3w ago)11.4k10MITPHPPHP &gt;=8.2CI passing

Since Nov 28Pushed 3w agoCompare

[ Source](https://github.com/Crustum/PluginManifest)[ Packagist](https://packagist.org/packages/crustum/plugin-manifest)[ RSS](/packages/crustum-plugin-manifest/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (8)Versions (9)Used By (10)

CakePHP PluginManifest Plugin
=============================

[](#cakephp-pluginmanifest-plugin)

The **PluginManifest** plugin provides a standardized way for CakePHP plugins to install and publish assets (config files, migrations, templates, environment variables, and bootstrap code) to the main application.

This plugin enables plugin developers to distribute optional configuration files, migrations, and other assets that users can selectively install when needed.

The plugin uses interface-based registration where plugins implement `ManifestInterface`, making asset distribution simple and developer-friendly with interactive selection, dry-run mode, and smart duplicate prevention.

Features
--------

[](#features)

Plugins implement the `ManifestInterface` with a static `manifest()` method to define their publishable assets. The system supports multiple operation types including copying files, appending to bootstrap, merging configurations, installing migrations, and adding environment variables.

Migration handling is smart, automatically adding plugin namespaces to prevent class conflicts while preserving timestamps for correct ordering. Configuration merging preserves all user comments and file structure, ensuring customizations are never lost.

The interactive mode prompts users to select what to install, or you can install by plugin, tag, or all assets at once. Dry run mode lets you preview changes before applying them. The system uses marker and content-based duplicate detection and tracks installed assets with operation-specific rules. All generated code uses modern short array syntax.

Requirements
------------

[](#requirements)

- PHP 8.1+
- CakePHP 5.1+

Documentation
-------------

[](#documentation)

For complete documentation, usage examples, and tutorials, see the [docs](docs/index.md) directory of this repository.

Quick Example
-------------

[](#quick-example)

Each trait method returns an array of assets, so use `array_merge()` to combine them:

```
use Crustum\PluginManifest\Manifest\ManifestInterface;
use Crustum\PluginManifest\Manifest\ManifestTrait;

class YourPlugin extends BasePlugin implements ManifestInterface
{
    use ManifestTrait;

    public static function manifest(): array
    {
        $pluginPath = dirname(__DIR__) . DS;

        return array_merge(
            static::manifestConfig(
                $pluginPath . 'config' . DS . 'app.php',
                CONFIG . 'your_plugin.php',
                false
            ),
            static::manifestMigrations(
                $pluginPath . 'config' . DS . 'Migrations',
                CONFIG . 'Migrations'
            ),
            static::manifestBootstrapAppend(
                "Plugin::load('YourPlugin');",
                '// YourPlugin bootstrap'
            ),
            static::manifestEnvVars(
                [
                    'YOUR_PLUGIN_KEY' => 'default_value',
                ],
                '# YourPlugin Configuration'
            ),
            static::manifestConfigMerge(
                'YourPlugin',
                [
                    'enabled' => true,
                    'timeout' => 30,
                ]
            )
        );
    }
}
```

Then install with:

```
bin/cake manifest install --plugin YourPlugin
```

License
-------

[](#license)

Licensed under the [MIT](http://www.opensource.org/licenses/mit-license.php) License. Redistributions of the source code included in this repository must retain the copyright notice found in each file.

###  Health Score

49

—

FairBetter than 94% of packages

Maintenance95

Actively maintained with recent releases

Popularity23

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~40 days

Recently: every ~53 days

Total

7

Last Release

24d ago

Major Versions

0.0.1 → 1.1.02026-07-25

PHP version history (2 changes)1.0.0PHP &gt;=8.1

1.1.0PHP &gt;=8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/f1f53020a99b0b08cda73130f837f37cae2ae8420ff0cc4ceb650a733c4a1bd6?d=identicon)[skiedr](/maintainers/skiedr)

---

Top Contributors

[![skie](https://avatars.githubusercontent.com/u/130799?v=4)](https://github.com/skie "skie (14 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisRector

### Embed Badge

![Health badge](/badges/crustum-plugin-manifest/health.svg)

```
[![Health](https://phpackages.com/badges/crustum-plugin-manifest/health.svg)](https://phpackages.com/packages/crustum-plugin-manifest)
```

###  Alternatives

[dereuromark/cakephp-tools

A CakePHP plugin containing lots of useful and reusable tools

3321.0M51](/packages/dereuromark-cakephp-tools)[cakephp/bake

Bake plugin for CakePHP

11212.2M223](/packages/cakephp-bake)[dereuromark/cakephp-ide-helper

CakePHP IdeHelper Plugin to improve auto-completion

1892.4M48](/packages/dereuromark-cakephp-ide-helper)[dereuromark/cakephp-queue

The Queue plugin for CakePHP provides deferred task execution.

308995.7k27](/packages/dereuromark-cakephp-queue)[dereuromark/cakephp-tinyauth

A CakePHP plugin to handle user authentication and authorization the easy way.

131242.7k13](/packages/dereuromark-cakephp-tinyauth)[dereuromark/cakephp-dto

A CakePHP plugin for generating immutable Data Transfer Objects with full type safety

30101.5k6](/packages/dereuromark-cakephp-dto)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
