用途:按 AureusERP 既有插件(webkul/* 模块,如 purchases、sales、projects、website、accounts)的写法创建或重构 Laravel 插件。
主要能力与流程:先读 references/plugin-patterns.md;检查目标插件及最接近的兄弟模块;用 PackageServiceProvider + Package 链实现 *ServiceProvider;实现 *Plugin 以支持面板(admin、customer)注册;确保 composer PSR-4、extra.laravel.providers、插件工厂/填充器命名空间齐全;在 config/filament-shield.php 注册 ACL;在 src/Policies 添加策略;按需添加设置迁移、设置类与设置页;按面板与模块范围添加仪表盘/页面/组件/集群/资源;列表页用 HasTableViews + PresetView 添加表格视图;按插件语言目录与嵌套键添加翻译;用安装命令验证安装与权限生命周期。
关键约定:服务提供者继承 Webkul\PluginManager\PackageServiceProvider;用 Package 链式方法配置 name、hasViews、hasTranslations、hasRoute/hasRoutes、hasMigrations、runsMigrations、hasSettings、runsSettings、hasSeeder、hasDependencies、hasInstallCommand、hasUninstallCommand、icon;在 ->hasDependencies([...]) 与安装命令 ->installDependencies() 两处添加依赖;安装命令用 ->hasInstallCommand(fn (InstallCommand $command) => $command->installDependencies()->runsMigrations()->runsSeeders());用 Panel::configureUsing(fn (Panel $panel) => $panel->plugin(YourPlugin::make())) 注册;插件类中用 if (! Package::isPluginInstalled($this->getId())) { return; } 依据安装状态控制注册;composer.json 含 PSR-4、providers、工厂/填充器命名空间;面板拆分用 $panel->when($panel->getId() == 'admin', ...) 等条件,并用 discoverResources、discoverPages、discoverClusters、discoverWidgets 发现组件;Spatie Laravel Settings 用于设置;列表页实现 getPresetTableViews(): array 返回 PresetView。
翻译:根目录 plugins/<vendor>/<plugin>/resources/lang/en,镜像 Filament 路径(filament/resources、filament/admin、filament/customer、filament/clusters、filament/pages、filament/widgets 等),文件名 kebab-case,键按界面分层(navigation.title、form.sections.<section>.fields.<field>.label、table.columns、infolist.sections 等),代码中用 __('plugin::path.to.key')。
适用场景:为本项目新增或重构插件、扩展基础资源与模型(如会计、发票、销售、采购、联系人、招聘)、处理 ACL/角色/权限生命周期、设置、仪表盘与表格视图。
限制:资料未提供具体命令、收费、价格、平台或效果数据;遵循既有约定,优先扩展而非重复;权限变更后需验证角色分配。