Appearance
Commands
filamentcraft:install
bash
php artisan filamentcraft:install # guided install
php artisan filamentcraft:install --example # also seed a working studio Site + home template
php artisan filamentcraft:install --folio # wire a Folio storefront starter
php artisan filamentcraft:install --force # overwrite previously published files
php artisan filamentcraft:install --no-assets # skip the asset publish stepThe guided install publishes the config and migrations, asks before running php artisan migrate, publishes the editor assets (skip with --no-assets), creates the storage:link symlink if it's missing, syncs theme DB rows (filamentcraft:sync-themes), and — when running interactively without --example — offers to seed an example site so you land on a working page. It finishes with a next-steps list that names the exact panel provider file(s) under app/Providers/Filament/ where the plugin should be registered.
--example is idempotent — re-running prints Example site already seeded — skipping. and continues cleanly. If you decline the migration prompt, --example is skipped with a warning (the example site needs the tables).
--folio scaffolds resources/views/storefront/ with a starter cart.blade.php, then prints the one-line Folio::path(...) registration to paste into your own FolioServiceProvider — it deliberately doesn't edit that file for you. Once registered, every Blade file in that directory auto-routes under /{tenantSlug}/* inside the FilamentCraft shell. If Folio isn't installed, the command warns (composer require laravel/folio) and moves on — the package never requires it.
filamentcraft:doctor
bash
php artisan filamentcraft:doctor
php artisan filamentcraft:doctor --strict # warnings also exit non-zero
php artisan filamentcraft:doctor --json # machine-readable output for CIDiagnoses the installation end-to-end, grouped into sections:
- Environment — FilamentCraft / Laravel / Filament / Livewire / PHP versions at a glance.
- Database — all
filamentcraft_*tables exist, plus the columns added by upgrade migrations (catches "updated the package but never ran the new migrations"). - Panel — the plugin is registered on a Filament panel and the editor is enabled; panel plugin misconfiguration (e.g. an unregistered default theme) is surfaced here.
- Configuration — every config value is validated: typed keys that would throw mid-request (quoted booleans from
.envare the classic), tenancy mode / owner model /single_site_idsanity, region names, editor devices and control size, starter family, the cache store (undefined store names and silently-untagged stores), and the uploads disk — including a comparison ofuploads.max_size_kbagainst your PHPupload_max_filesize/post_max_sizelimits. - Themes — registered classes vs their DB rows, orphan theme slugs, and bogus
themes.registerentries. - Sections — at least one section registered, invalid
sections.registerclasses, missing discovery paths, typo'd slugs inallowed/disabled, and slug overrides. - Content — live sites and published homepages, plus deep integrity scans of every published page and region: section types that match no registered section (the public render silently drops those), legacy payloads, published templates without a published revision, and commerce sections used without a
Storefrontbinding. Also warns when sites are domain- or subdomain-mapped butfilamentcraft.domain.primaryis empty. - SEO — pages missing a meta description, duplicate titles within a site, a missing default share image, sites left on
noindex, and whether FilamentCraft actually serves/sitemap.xml,/robots.txtand/llms.txt— including the case where a staticpublic/robots.txtorpublic/sitemap.xmlshadows the dynamic route. - Assets — every published asset exists in
public/and is not stale (an older copy than the package ships means a previous version is still being served after an update), plus a manifest check for each configured Vite build. - License — whether a key is set and the watermark state.
Every failed check prints a remediation hint (the exact command or config change to make), and the command exits non-zero when any check fails — so it slots straight into a CI or deploy pipeline as a post-deploy smoke check. Use --strict to also fail on warnings, and --json for a structured {status, environment, summary, checks} payload.
php artisan about
FilamentCraft registers a section in Laravel's about output: package version, registered theme and section counts, tenancy mode, public-routes state, and whether a license key is set.
filamentcraft:sync-themes
bash
php artisan filamentcraft:sync-themesEnsures every registered theme class has a matching Theme DB row (matched by slug, created if missing). The install command runs it for you after migrating; run it manually after registering a new theme with ->registerTheme(...).
Seeding & starter sites
bash
php artisan filamentcraft:starter # provision a starter site (default family)
php artisan filamentcraft:starter --family=bold --owner=7 --name="Acme"
php artisan filamentcraft:seed-blueprints # seed registered blueprints into all sites
php artisan filamentcraft:seed-blueprints --site=3 # only site id 3
php artisan filamentcraft:seed-blueprints --owner=7 # all sites of one owner (tenant)
php artisan filamentcraft:seed-blueprints --force # re-seed even if templates already exist
php artisan filamentcraft:seed-blueprints --dry-run # print what would be seeded, write nothingfilamentcraft:starter provisions a complete, published seven-section homepage in one of four style families (modern, editorial, bold, elegant); --family defaults to filamentcraft.starter.family, and --name defaults to the owner name, then the family label. See Starter sites for the families, the one-line StarterSiteBlueprint::seed() DX, and the StarterSiteSeeder.
filamentcraft:seed-blueprints seeds every registered blueprint into the selected sites, skipping blueprints a site already has unless --force is passed. --owner resolves sites through filamentcraft.tenancy.owner_model.
Make commands
bash
php artisan make:filamentcraft-section Testimonial
php artisan make:filamentcraft-theme Acme
php artisan make:filamentcraft-blueprint EventHome
php artisan make:filamentcraft-blueprint EventStarter --siteAll three prompt interactively for the name when you omit it, and add the conventional class suffix (Section, Theme, Blueprint / SiteBlueprint) automatically.
make:filamentcraft-section scaffolds the section class + matching Blade view (or a LivewireSection with --livewire). Flags: --slug (editor slug, defaults to the kebab-cased class name), --namespace (default App\Sections), --path (default app/Sections), --view-path (default resources/views/sections), --view (dot-notation view name), and --force.
make:filamentcraft-theme scaffolds an AbstractTheme subclass under app/Themes/ with a minimal settingsSchema() to fill in. Flags: --slug, --namespace (default App\Themes), --path (default app/Themes), and --force.
make:filamentcraft-blueprint scaffolds a page blueprint — or, with --site, a SiteBlueprint (a full-site starter preset listing page blueprints). Flags: --slug (page blueprints only), --namespace (default App\Blueprints), --path (default app/Blueprints), and --force.
filamentcraft:customize-section
bash
php artisan filamentcraft:customize-section
# Safe additive variant; the original Hero remains available
php artisan filamentcraft:customize-section hero ProductHero
# Existing hero instances resolve through the generated subclass
php artisan filamentcraft:customize-section hero ApplicationHero --replace
# Take application ownership of the selected Blade view too
php artisan filamentcraft:customize-section hero ApplicationHero --replace --copy-viewWith no arguments, the command provides a searchable picker across all 32 built-ins, makes variant mode the safe default, explains inherited versus copied views, and shows an impact summary before writing.
Flags: --replace (preserve the source slug application-wide), --slug (variant only), --copy-view, --namespace (default App\Sections), --path (default app/Sections), --view-path (default resources/views/sections), and --force.
The generated subclass inherits settings, blocks, presets, defaults, rendering behavior, and Livewire actions. The original package PHP is never copied. See Customizing Built-in Sections for schema composition, view ownership, upgrades, diagnostics, and rollback.
