一键导入
create-module
Creates a domain or a module within an existing domain following the boilerplate conventions.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Creates a domain or a module within an existing domain following the boilerplate conventions.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Generates a complete CRUD module following the boilerplate conventions.
Enforces Spanish Conventional Commits and branch naming for this project.
Creates a Laravel MCP server with tools, resources and prompts using laravel/mcp.
Develops reactive Livewire 4 components. Activates when creating, updating, or modifying Livewire components; working with wire:model, wire:click, wire:loading, or any wire: directives; adding real-time updates, loading states, or reactivity; debugging component behavior; or when the user mentions Livewire, component, or reactive UI.
| name | create-module |
| description | Creates a domain or a module within an existing domain following the boilerplate conventions. |
| license | MIT |
| compatibility | claude_code, codex, cursor, opencode |
Activate when the user asks to create a new domain or a simple module (no table, no form). Trigger phrases: "nuevo módulo", "nuevo dominio", "crear módulo", "agregar módulo", "create module".
If the user also wants listing, create and edit → use create-crud instead.
| Variable | Description | Example |
|---|---|---|
{Domain} | PascalCase domain | Inventory |
{domain} | lowercase domain | inventory |
{Module} | PascalCase module | Products |
{module} | lowercase module | products |
{module-slug} | kebab-case (URL) | products |
{isNewDomain} | Is this a brand-new domain? | yes / no |
Create a task list before writing any file. Mark each step as completed.
routes/{domain}.phpbootstrap/app.php (only if new domain)config/menu.phpapp/Livewire/App/{Domain}/{Module}/Index.php<?php
namespace App\Livewire\App\{Domain}\{Module};
use Livewire\Component;
use TallStackUi\Traits\Interactions;
class Index extends Component
{
use Interactions;
public function render()
{
return view('app.{domain}.{module-slug}._index');
}
}
resources/views/app/{domain}/{module-slug}/index.blade.php<x-layouts.app>
@livewire('app.{domain}.{module-slug}.index')
</x-layouts.app>
resources/views/app/{domain}/{module-slug}/_index.blade.php<div>
<div class="mb-6">
<h1 class="text-2xl font-bold text-content">{Module}</h1>
<p class="mt-1 text-sm text-content-muted">Gestión de {module-slug}</p>
</div>
</div>
routes/{domain}.phpIf the file already exists, add inside the existing group:
Route::get('/{module-slug}', fn () => view('app.{domain}.{module-slug}.index'))
->name('{module-slug}.index');
If this is a new domain, create routes/{domain}.php:
<?php
use Illuminate\Support\Facades\Route;
Route::prefix('{domain}')->name('{domain}.')->group(function () {
Route::get('/dashboard', fn () => view('app.{domain}.dashboard.index'))
->name('dashboard');
});
And also create the dashboard module files (Steps 1–3) with {Module} = Dashboard.
bootstrap/app.php (new domain only)Inside the then callback, add:
Route::middleware(['web', 'auth'])
->group(base_path('routes/{domain}.php'));
config/menu.phpSingle module (no children):
[
'label' => '{Module}',
'route' => '{domain}.{module-slug}.index',
'active_route' => '{domain}.{module-slug}.*',
'permission' => 'ver {module-slug}', // remove if no permission needed
],
New domain with children:
[
'label' => '{Domain}',
'icon' => 'layout-grid',
'active_route' => '{domain}.*',
'items' => [
[
'label' => 'Dashboard',
'route' => '{domain}.dashboard',
],
[
'label' => '{Module}',
'route' => '{domain}.{module-slug}.index',
'active_route' => '{domain}.{module-slug}.*',
],
],
],
feat: módulo {Domain}/{Module}
- Livewire `App\{Domain}\{Module}\Index`
- Vistas wrapper + componente en app/{domain}/{module-slug}/
- Ruta `{domain}.{module-slug}.index` en routes/{domain}.php
[- Nuevo dominio {domain} registrado en bootstrap/app.php]
[- Entrada en config/menu.php]