Skip to content

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 step

The 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 CI

Diagnoses 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 .env are the classic), tenancy mode / owner model / single_site_id sanity, 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 of uploads.max_size_kb against your PHP upload_max_filesize / post_max_size limits.
  • Themes — registered classes vs their DB rows, orphan theme slugs, and bogus themes.register entries.
  • Sections — at least one section registered, invalid sections.register classes, missing discovery paths, typo'd slugs in allowed / 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 Storefront binding. Also warns when sites are domain- or subdomain-mapped but filamentcraft.domain.primary is 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.txt and /llms.txt — including the case where a static public/robots.txt or public/sitemap.xml shadows 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-themes

Ensures 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 nothing

filamentcraft: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 --site

All 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-view

With 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.