Filament admin UI for banulakwin/laravel-metadata only. Does not depend on filament-page-builder, filament-seo-engine, or other banulakwin/ packages except laravel-metadata.
php artisan boost:add-skill banulakwin/filament-metadata
Save this content to: AGENTS.md
# Agent guide: `banulakwin/filament-metadata`
Filament admin UI for **`banulakwin/laravel-metadata`** only. **Does not** depend on `filament-page-builder`, `filament-seo-engine`, or other `banulakwin/*` packages except `laravel-metadata`.
## Mental model
- Metadata storage is in `metadata_entries` with a `group` column.
- UI is scoped to a single default group (e.g. `site`) via config.
- Keys are defined in code/config; only values are editable from the panel.
- Value types: `text`, `textarea`, `rich`, `image`, `toggle`, `json`.
## Current package surface
- Plugin: `Banulakwin\FilamentMetadata\FilamentMetadataPlugin`
- Resource: `Banulakwin\FilamentMetadata\Resources\MetadataEntries\MetadataEntryResource`
- Pages:
- `ListMetadataEntries`
- `EditMetadataEntry`
- `ViewMetadataEntry`
- Schemas:
- `MetadataEntryForm`
- `MetadataEntryInfolist`
- `MetadataDynamicValueFields`
- `MetadataEntryValueEditor`
- Support:
- `MetadataKeyLabel`
- `MetadataValueHydrator`
### Config
- Publish: `php artisan vendor:publish --tag=filament-metadata-config`
- Keys: `default_group`, `navigation.group`, `navigation.label`, `rich_editor_attachments_directory`, `image_upload_default_directory`.
## Do
- Keep resource scoped to configured default group.
- Preserve metadata keys as read-only; only values are editable.
- Use `MetadataValueHydrator` for form state ↔ DB value conversion.
## Do not
- Add other `banulakwin/*` packages as Composer dependencies except `laravel-metadata`.
- Enable create or delete operations (keys are defined in code).
- Hardcode app-specific model classes.
## Testing & Quality
```bash
composer test # PHPUnit
composer pint # Laravel Pint code style fix
composer pint:check # Pint check only (no fix)
composer phpstan # PHPStan level max on src/
composer quality # All: pint + phpstan + test
```
## CI
GitHub Actions runs tests, Pint, and PHPStan on push/PR (`.github/workflows/tests.yml`).
banulakwin/filament-metadataFilament admin UI for banulakwin/laravel-metadata only. Does not depend on filament-page-builder, filament-seo-engine, or other banulakwin/* packages except laravel-metadata.
metadata_entries with a group column.site) via config.text, textarea, rich, image, toggle, json.Banulakwin\FilamentMetadata\FilamentMetadataPluginBanulakwin\FilamentMetadata\Resources\MetadataEntries\MetadataEntryResourceListMetadataEntriesEditMetadataEntryViewMetadataEntryMetadataEntryFormMetadataEntryInfolistMetadataDynamicValueFieldsMetadataEntryValueEditorMetadataKeyLabelMetadataValueHydratorphp artisan vendor:publish --tag=filament-metadata-configdefault_group, navigation.group, navigation.label, rich_editor_attachments_directory, image_upload_default_directory.MetadataValueHydrator for form state ↔ DB value conversion.banulakwin/* packages as Composer dependencies except laravel-metadata.composer test # PHPUnit
composer pint # Laravel Pint code style fix
composer pint:check # Pint check only (no fix)
composer phpstan # PHPStan level max on src/
composer quality # All: pint + phpstan + test
GitHub Actions runs tests, Pint, and PHPStan on push/PR (.github/workflows/tests.yml).
How can I help you explore Laravel packages today?