laravilt / plugins
Complete plugin system with generator, management, and FilamentPHP compatibility for Laravilt
Fund package maintenance!
fadymondy
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/laravilt/plugins
Requires
- php: ^8.3|^8.4
- illuminate/console: ^12.0
- illuminate/filesystem: ^12.0
- illuminate/support: ^12.0
- laravel/boost: ^1.8
- spatie/laravel-package-tools: ^1.14
Requires (Dev)
- larastan/larastan: ^2.9||^3.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^10.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- pestphp/pest-plugin-type-coverage: ^3.5
- phpstan/extension-installer: ^1.3||^2.0
- phpstan/phpstan-deprecation-rules: ^1.1||^2.0
- phpstan/phpstan-phpunit: ^1.3||^2.0
This package is auto-updated.
Last update: 2025-12-02 13:22:11 UTC
README
Laravilt Plugins
Complete plugin system with generator, management, and FilamentPHP v4 compatibility for Laravilt.ipsum
โจ Features
๐จ Plugin Generation
- Interactive CLI - Laravel Prompts with smart defaults
- Factory Pattern - Extensible feature-based architecture
- Priority System - Ordered feature execution (0-100)
- Stub Processing - Template-based file generation
- Auto-Discovery - Automatic plugin registration
๐งฉ Component Generators
Generate 13 component types within plugins:
- Migration - Database migrations with timestamps
- Model - Eloquent models with proper namespacing
- Controller - HTTP controllers
- Command - Artisan commands
- Job - Queueable jobs
- Event - Event classes
- Listener - Event listeners
- Notification - Notifications with mail support
- Seeder - Database seeders
- Factory - Model factories
- Test - Feature/Unit tests
- Lang - Language files
- Route - Route files
๐ค MCP Server Integration
- AI Agent Support - Built-in MCP server for Claude, GPT, etc.
- 6 Tools Available - list-plugins, plugin-info, generate-plugin, generate-component, list-component-types, plugin-structure
- Natural Language - Generate plugins through conversation
- Auto-Discovery - AI agents can explore plugin ecosystem
๐จ Professional Assets
- Cover Images - Auto-generated 1200x630px screenshots
- Dark Theme - Professional gradient backgrounds
- Plugin Branding - Cyan icon with Laravilt branding
- Social Media Ready - Optimized for GitHub/Twitter previews
- README Integration - Auto-embedded in documentation
โ๏ธ GitHub Integration
- Workflows - tests.yml, fix-php-code-styling.yml, dependabot-auto-merge.yml
- Issue Templates - Bug reports, feature requests (GitHub forms)
- Dependabot - Automated dependency updates
- FUNDING.yml - GitHub Sponsors support
- CONTRIBUTING.md - Contribution guidelines
- SECURITY.md - Security vulnerability reporting
๐ฆ Complete Package Setup
- Service Provider - Auto-discovery compatible
- Configuration - Publishable config with env support
- Composer - PSR-4 autoloading, version constraints
- Testing - Pest, PHPStan, Pint, Testbench
- Assets - Vite, Tailwind v4, Vue.js plugin support
- Documentation - README, CHANGELOG, LICENSE, CODE_OF_CONDUCT
๐ Requirements
- PHP 8.3+
- Laravel 12+
- FilamentPHP v4+ (for plugins features)
- Composer 2+
- Node.js 18+ (for asset compilation)
๐ Installation
composer require laravilt/plugins
The service provider is auto-discovered and will register automatically.
Configuration
Publish the configuration file:
php artisan vendor:publish --tag=laravilt-plugins-config
Configure defaults in config/laravilt-plugins.php:
return [ 'defaults' => [ 'vendor' => env('LARAVILT_PLUGINS_DEFAULT_VENDOR', 'laravilt'), 'author' => env('LARAVILT_PLUGINS_DEFAULT_AUTHOR', 'Your Name'), 'email' => env('LARAVILT_PLUGINS_DEFAULT_EMAIL', 'your@email.com'), 'license' => env('LARAVILT_PLUGINS_DEFAULT_LICENSE', 'MIT'), 'github_sponsor' => env('LARAVILT_PLUGINS_DEFAULT_GITHUB_SPONSOR', 'yourusername'), ], ];
MCP Server Setup (for AI Agents)
Install the MCP server configuration:
php artisan laravilt:install-mcp
This command will:
- Publish
routes/ai.php(if needed) - Register the MCP server in your routes
- Update
.mcp.jsonfor AI clients
After installation, restart your AI agent to access the plugin management tools.
๐ Usage
Generate a Plugin
Interactive mode (recommended):
php artisan laravilt:plugin MyPlugin
Non-interactive mode:
php artisan laravilt:plugin MyPlugin --no-interaction
The command will guide you through:
- Plugin name and description
- Feature selection (migrations, views, routes, assets, etc.)
- Author details (optional)
- GitHub sponsor (optional)
- Language selection
Generate Components
Use the unified component generator:
php artisan laravilt:make
Or specify directly:
# Generate a model php artisan laravilt:make my-plugin model Post # Generate a controller php artisan laravilt:make my-plugin controller PostController # Generate a migration php artisan laravilt:make my-plugin migration CreatePostsTable # Generate a command php artisan laravilt:make my-plugin command ProcessPostsCommand # Generate a job php artisan laravilt:make my-plugin job ProcessPost # Generate a test php artisan laravilt:make my-plugin test PostTest
All 13 component types are supported with proper namespace detection and PSR-4 structure.
Generated Plugin Structure
my-plugin/
โโโ .github/
โ โโโ workflows/
โ โ โโโ tests.yml
โ โ โโโ fix-php-code-styling.yml
โ โ โโโ dependabot-auto-merge.yml
โ โโโ ISSUE_TEMPLATE/
โ โ โโโ bug.yml
โ โ โโโ config.yml
โ โโโ CONTRIBUTING.md
โ โโโ FUNDING.yml
โ โโโ SECURITY.md
โ โโโ dependabot.yml
โโโ arts/
โ โโโ screenshot.jpg # Auto-generated cover image
โโโ config/
โ โโโ laravilt-my-plugin.php
โโโ database/
โ โโโ factories/
โ โโโ migrations/
โ โโโ seeders/
โโโ resources/
โ โโโ css/
โ โ โโโ app.css # Tailwind v4
โ โโโ js/
โ โ โโโ app.js # Vue.js plugin
โ โโโ lang/
โ โ โโโ en/
โ โโโ views/
โโโ routes/
โ โโโ api.php
โ โโโ web.php
โโโ src/
โ โโโ Commands/
โ โ โโโ InstallMyPluginCommand.php
โ โโโ Http/
โ โ โโโ Controllers/
โ โโโ Models/
โ โโโ MyPluginPlugin.php # Main plugin class
โ โโโ MyPluginServiceProvider.php
โโโ tests/
โ โโโ Feature/
โ โ โโโ DebugTest.php
โ โโโ Pest.php
โ โโโ TestCase.php
โโโ CHANGELOG.md
โโโ CODE_OF_CONDUCT.md
โโโ LICENSE.md
โโโ README.md
โโโ composer.json
โโโ package.json # If JS selected
โโโ phpstan.neon
โโโ pint.json
โโโ testbench.yaml
โโโ vite.plugin.js # If JS selected
๐๏ธ Architecture
Factory Pattern
The plugin system uses a Factory Pattern for extensible feature generation:
Features (Priority 0-100)
โโโ Core Files (0-20)
โ โโโ ComposerJsonFeature (1)
โ โโโ GitignoreFeature (2)
โ โโโ ServiceProviderFeature (5)
โ โโโ PluginClassFeature (10)
โ โโโ InstallCommandFeature (12)
โ โโโ ConfigFeature (15)
โโโ Structure Files (21-40)
โ โโโ MigrationsFeature (25)
โ โโโ RoutesFeature (30)
โ โโโ ViewsFeature (35)
โ โโโ LanguageFeature (40)
โโโ Asset Files (41-60)
โ โโโ CssFeature (50)
โ โโโ JsFeature (51)
โ โโโ ArtsFeature (55)
โโโ Testing Files (61-80)
โ โโโ TestingFeature (70)
โ โโโ TestbenchFeature (75)
โ โโโ PintFeature (76)
โโโ Documentation Files (81-100)
โโโ ReadmeFeature (85)
โโโ GitHubFeature (90)
โโโ DocumentationFeature (95)
Extending with Custom Features
Create a custom feature:
<?php namespace App\PluginFeatures; use Laravilt\Plugins\Features\AbstractFeature; class CustomFeature extends AbstractFeature { public function getName(): string { return 'custom'; } public function shouldGenerate(array $config): bool { return $config['generate_custom'] ?? false; } public function getPriority(): int { return 99; // Execute near the end } public function generate(array $config): void { // Your generation logic $this->processor->generateFile( $config['base_path'].'/custom/file.php', 'custom/file', ['key' => 'value'] ); } }
Register in config:
'features' => [ // ... existing features \App\PluginFeatures\CustomFeature::class, ],
๐ค MCP Server
Available Tools
list-plugins
List all installed Laravilt plugins.
plugin-info
Get detailed information about a specific plugin.
Arguments:
plugin(string): Plugin name in kebab-case
generate-plugin
Generate a new plugin with specified features.
Arguments:
name(string): Plugin name in StudlyCasedescription(string, optional)migrations(bool, default: false)views(bool, default: false)webRoutes(bool, default: false)apiRoutes(bool, default: false)css(bool, default: false)js(bool, default: false)arts(bool, default: true)github(bool, default: true)phpstan(bool, default: true)
generate-component
Generate a component within a plugin.
Arguments:
plugin(string): Plugin name in kebab-casetype(string): Component type (migration, model, controller, etc.)name(string): Component name
list-component-types
List all available component types.
plugin-structure
Get the complete directory structure of a plugin.
Arguments:
plugin(string): Plugin name in kebab-case
AI Agent Examples
You: "List all my plugins"
AI: [calls list-plugins tool]
You: "Create a blog plugin with migrations and views"
AI: [calls generate-plugin with appropriate parameters]
You: "Generate a Post model in the blog plugin"
AI: [calls generate-component]
๐งช Testing
Run tests in the plugins package:
cd packages/laravilt/plugins composer test
Run tests in a generated plugin:
cd packages/myvendor/my-plugin composer test # Run Pest tests composer format # Format code with Pint composer analyse # Run PHPStan analysis
๐ Documentation
Comprehensive documentation is available in the docs/ directory:
- Getting Started
- Architecture
- Plugin Generation
- Component Generators
- Factory Pattern
- Features System
- MCP Server
- API Reference
๐ค Contributing
Please see CONTRIBUTING.md for details.
๐ Security
If you discover any security-related issues, please email info@3x1.io instead of using the issue tracker.
๐ Changelog
Please see CHANGELOG.md for recent changes.
๐ License
The MIT License (MIT). Please see License File for more information.
๐ฅ Credits
๐ Sponsors
Support this project via GitHub Sponsors.
