From filament-specialist
Generates FilamentPHP v4 resources including form schemas, tables, relation managers, and actions for Laravel admin panels. Use when extending Filament with custom resources.
How this skill is triggered — by the user, by Claude, or both
Slash command
/filament-specialist:resourceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill generates complete FilamentPHP v4 resources including form schemas, table configurations, relation managers, and custom pages. All generated code follows official documentation patterns.
This skill generates complete FilamentPHP v4 resources including form schemas, table configurations, relation managers, and custom pages. All generated code follows official documentation patterns.
CRITICAL: Before generating any resource, read:
/home/mwguerra/projects/mwguerra/claude-code-plugins/filament-specialist/skills/docs/references/general/03-resources//home/mwguerra/projects/mwguerra/claude-code-plugins/filament-specialist/skills/docs/references/forms//home/mwguerra/projects/mwguerra/claude-code-plugins/filament-specialist/skills/docs/references/tables/Identify:
Use Laravel artisan to create the resource:
# Basic resource
php artisan make:filament-resource ModelName
# With generate flag (creates form/table from model)
php artisan make:filament-resource ModelName --generate
# Soft deletes support
php artisan make:filament-resource ModelName --soft-deletes
# View page only
php artisan make:filament-resource ModelName --view
# Simple resource (modal forms instead of pages)
php artisan make:filament-resource ModelName --simple
Read form field documentation and implement:
use Filament\Forms;
use Filament\Forms\Form;
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\Section::make('Basic Information')
->schema([
Forms\Components\TextInput::make('name')
->required()
->maxLength(255),
Forms\Components\Textarea::make('description')
->rows(3)
->columnSpanFull(),
]),
Forms\Components\Section::make('Settings')
->schema([
Forms\Components\Toggle::make('is_active')
->default(true),
Forms\Components\Select::make('status')
->options([
'draft' => 'Draft',
'published' => 'Published',
]),
]),
]);
}
Read table documentation and implement:
use Filament\Tables;
use Filament\Tables\Table;
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('name')
->searchable()
->sortable(),
Tables\Columns\IconColumn::make('is_active')
->boolean(),
Tables\Columns\BadgeColumn::make('status')
->colors([
'warning' => 'draft',
'success' => 'published',
]),
Tables\Columns\TextColumn::make('created_at')
->dateTime()
->sortable()
->toggleable(isToggledHiddenByDefault: true),
])
->filters([
Tables\Filters\SelectFilter::make('status')
->options([
'draft' => 'Draft',
'published' => 'Published',
]),
Tables\Filters\TernaryFilter::make('is_active'),
])
->actions([
Tables\Actions\ViewAction::make(),
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
For relationships, create relation managers:
php artisan make:filament-relation-manager ResourceName RelationName column_name
Register in resource:
public static function getRelations(): array
{
return [
RelationManagers\CommentsRelationManager::class,
RelationManagers\TagsRelationManager::class,
];
}
Define resource pages:
public static function getPages(): array
{
return [
'index' => Pages\ListModels::route('/'),
'create' => Pages\CreateModel::route('/create'),
'view' => Pages\ViewModel::route('/{record}'),
'edit' => Pages\EditModel::route('/{record}/edit'),
];
}
Implement policy methods:
public static function canViewAny(): bool
{
return auth()->user()->can('view_any_model');
}
public static function canCreate(): bool
{
return auth()->user()->can('create_model');
}
TextInput::make() - Single line textTextarea::make() - Multi-line textRichEditor::make() - WYSIWYG editorMarkdownEditor::make() - Markdown editorSelect::make() - Dropdown selectRadio::make() - Radio buttonsCheckbox::make() - Single checkboxCheckboxList::make() - Multiple checkboxesToggle::make() - Toggle switchDatePicker::make() - Date onlyDateTimePicker::make() - Date and timeTimePicker::make() - Time onlyFileUpload::make() - File uploadSpatieMediaLibraryFileUpload::make() - Media librarySelect::make()->relationship() - BelongsTo selectCheckboxList::make()->relationship() - BelongsToManyRepeater::make()->relationship() - HasMany inlineSection::make() - Card sectionFieldset::make() - Fieldset groupingTabs::make() - Tabbed sectionsGrid::make() - Grid layoutSplit::make() - Split layoutTextColumn::make() - Basic textIconColumn::make() - Boolean iconImageColumn::make() - Image thumbnailBadgeColumn::make() - Badge stylingColorColumn::make() - Color swatch->searchable() - Enable search->sortable() - Enable sort->toggleable() - Can hide/show->wrap() - Wrap text->limit() - Truncate textFor each resource, generate:
app/Filament/Resources/ModelResource.phpapp/Filament/Resources/ModelResource/Pages/app/Filament/Resources/ModelResource/RelationManagers/tests/Feature/Filament/ModelResourceTest.phpnpx claudepluginhub mwguerra/claude-code-plugins --plugin filament-specialistGenerates FilamentPHP v4 actions for resources, pages, and tables including modals, confirmations, forms, and bulk operations.
Provides patterns for consistent Laravel Nova resources including fields, actions, metrics, lenses, filters, authorization, and evolving with schema changes. Useful for admin panel development.
Builds Avo admin interfaces for Rails apps. Generates resources, actions, filters, and dashboards using Avo 3.x conventions and latest fetched docs.