PHPackages                             badrsh/filament-ai-autofill - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Localization &amp; i18n](/categories/localization)
4. /
5. badrsh/filament-ai-autofill

ActiveLibrary[Localization &amp; i18n](/categories/localization)

badrsh/filament-ai-autofill
===========================

AI-powered autofill and translation for Filament form fields. Auto-populate translations using OpenAI, DeepL, or any custom AI translator.

v1.3.4(1mo ago)01↑2900%MITPHPPHP ^8.2CI passing

Since Mar 22Pushed 1mo agoCompare

[ Source](https://github.com/badrshs/filament-ai-autofill)[ Packagist](https://packagist.org/packages/badrsh/filament-ai-autofill)[ Docs](https://github.com/badrsh/filament-ai-autofill)[ RSS](/packages/badrsh-filament-ai-autofill/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (7)Versions (10)Used By (0)

Filament AI Autofill
====================

[](#filament-ai-autofill)

AI-powered auto-translation for [Filament](https://filamentphp.com) form fields. Click a button, and your content is translated from one language to many, using OpenAI or any custom AI translator.

[![Filament v4/v5](https://camo.githubusercontent.com/da1db2cd8ffc6382704ae9bfb0a969610ccddccc15811afb76a141fd99db3ba8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46696c616d656e742d763425323025374325323076352d626c7565)](https://camo.githubusercontent.com/da1db2cd8ffc6382704ae9bfb0a969610ccddccc15811afb76a141fd99db3ba8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46696c616d656e742d763425323025374325323076352d626c7565)[![Laravel](https://camo.githubusercontent.com/94e9c8450999913235efa10e8b4593c4cc12190aee2829d4e12fef3a1b0cb2df/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31302532463131253246313225324631332d726564)](https://camo.githubusercontent.com/94e9c8450999913235efa10e8b4593c4cc12190aee2829d4e12fef3a1b0cb2df/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31302532463131253246313225324631332d726564)[![PHP](https://camo.githubusercontent.com/0429984b8f6df75a2d855223b0028df75216981fba40918ae9747b7026cc518e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d707572706c65)](https://camo.githubusercontent.com/0429984b8f6df75a2d855223b0028df75216981fba40918ae9747b7026cc518e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d707572706c65)[![License](https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e)](https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e)

What It Does
------------

[](#what-it-does)

You have a Filament form with fields in Arabic (or any source language). You want the English (or other) fields filled in automatically. This package adds:

1. **A sparkle ✨ icon** on individual fields — click it to translate that one field
2. **An "Auto-translate All" button** — translates every source field in one API call
3. **A tab helper** — builds AR / EN / FR tabs with translation built in
4. **Smart auto-detection** — automatically picks sparkle or batch mode based on field count

All translations happen via the Laravel AI SDK when available (supports OpenAI, Anthropic, Gemini, and more). If `laravel/ai` is not installed or your environment doesn't meet its requirements (PHP 8.3+, Laravel 12+), the package automatically falls back to the built-in OpenAI translator. No configuration needed — it just works.

Example 1
---------

[](#example--1)

[![chrome_0GEJ4nfliU](https://private-user-images.githubusercontent.com/26596347/567472555-230ffb10-a035-4278-ad56-b6a4b7e11c7d.gif?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQyMzc1NDIsIm5iZiI6MTc3NDIzNzI0MiwicGF0aCI6Ii8yNjU5NjM0Ny81Njc0NzI1NTUtMjMwZmZiMTAtYTAzNS00Mjc4LWFkNTYtYjZhNGI3ZTExYzdkLmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjAzMjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwMzIzVDAzNDA0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRiZTNiM2ZkNzA5ZmI5MzIxZDQ1NTQ0MmEyMTI2YjEwZTA5YWYyN2QwZWMzOGY3OWVkOGE0YjUwNzlhZTA0YmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.awbSCCuaU48iMKuN5do0tHeaqvchkorkctyVxhmduPU)](https://private-user-images.githubusercontent.com/26596347/567472555-230ffb10-a035-4278-ad56-b6a4b7e11c7d.gif?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQyMzc1NDIsIm5iZiI6MTc3NDIzNzI0MiwicGF0aCI6Ii8yNjU5NjM0Ny81Njc0NzI1NTUtMjMwZmZiMTAtYTAzNS00Mjc4LWFkNTYtYjZhNGI3ZTExYzdkLmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjAzMjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwMzIzVDAzNDA0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRiZTNiM2ZkNzA5ZmI5MzIxZDQ1NTQ0MmEyMTI2YjEwZTA5YWYyN2QwZWMzOGY3OWVkOGE0YjUwNzlhZTA0YmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.awbSCCuaU48iMKuN5do0tHeaqvchkorkctyVxhmduPU)

Example 2
---------

[](#example--2)

[![chrome_nIofIM1GQt](https://private-user-images.githubusercontent.com/26596347/567472507-f665ec0c-6c09-4780-836e-a6cfbaa83415.gif?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQyMzc1NDIsIm5iZiI6MTc3NDIzNzI0MiwicGF0aCI6Ii8yNjU5NjM0Ny81Njc0NzI1MDctZjY2NWVjMGMtNmMwOS00NzgwLTgzNmUtYTZjZmJhYTgzNDE1LmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjAzMjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwMzIzVDAzNDA0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE0NTA4MjUyY2ViMWU1NzAyMzhjNzNhMTNkOTcyNTAyYTJlYTM1YTNiMDRmYTgzM2E4NWQwMDg4MGNkYWE0ZmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.dTcWYuYBfa4yg61a9iroUYkBRvRs0ENVKadRc1W7SSQ)](https://private-user-images.githubusercontent.com/26596347/567472507-f665ec0c-6c09-4780-836e-a6cfbaa83415.gif?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQyMzc1NDIsIm5iZiI6MTc3NDIzNzI0MiwicGF0aCI6Ii8yNjU5NjM0Ny81Njc0NzI1MDctZjY2NWVjMGMtNmMwOS00NzgwLTgzNmUtYTZjZmJhYTgzNDE1LmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjAzMjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwMzIzVDAzNDA0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE0NTA4MjUyY2ViMWU1NzAyMzhjNzNhMTNkOTcyNTAyYTJlYTM1YTNiMDRmYTgzM2E4NWQwMDg4MGNkYWE0ZmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.dTcWYuYBfa4yg61a9iroUYkBRvRs0ENVKadRc1W7SSQ)

Example 3
---------

[](#example-3)

[![chrome_H7rE98Xl19](https://private-user-images.githubusercontent.com/26596347/567472805-7da59d05-1daa-4f99-9293-b21bfcd55607.gif?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQyMzc1NDIsIm5iZiI6MTc3NDIzNzI0MiwicGF0aCI6Ii8yNjU5NjM0Ny81Njc0NzI4MDUtN2RhNTlkMDUtMWRhYS00Zjk5LTkyOTMtYjIxYmZjZDU1NjA3LmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjAzMjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwMzIzVDAzNDA0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY3NWQ1M2MzMWVlNTc1YTE1NzVmZmFkNTk0ZDVkN2I2YTY0M2UzZThiMjZmYzgxN2QzOTAxY2M2NmZkYTg0ZDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.4YFk0wTkecMLNqiymQLjvXV55Jt95GbKwqyO6Qc6RpU)](https://private-user-images.githubusercontent.com/26596347/567472805-7da59d05-1daa-4f99-9293-b21bfcd55607.gif?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQyMzc1NDIsIm5iZiI6MTc3NDIzNzI0MiwicGF0aCI6Ii8yNjU5NjM0Ny81Njc0NzI4MDUtN2RhNTlkMDUtMWRhYS00Zjk5LTkyOTMtYjIxYmZjZDU1NjA3LmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjAzMjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwMzIzVDAzNDA0MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY3NWQ1M2MzMWVlNTc1YTE1NzVmZmFkNTk0ZDVkN2I2YTY0M2UzZThiMjZmYzgxN2QzOTAxY2M2NmZkYTg0ZDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.4YFk0wTkecMLNqiymQLjvXV55Jt95GbKwqyO6Qc6RpU)

Requirements
------------

[](#requirements)

DependencyVersionsPHP8.2+Laravel10, 11, 12, 13Filament4.x, 5.xInstallation
------------

[](#installation)

### Step 1: Install the package

[](#step-1-install-the-package)

```
composer require badrsh/filament-ai-autofill
```

### Step 2: Publish the config

[](#step-2-publish-the-config)

```
php artisan vendor:publish --tag="filament-ai-autofill-config"
```

### Step 3: Add your OpenAI key to `.env`

[](#step-3-add-your-openai-key-to-env)

```
OPENAI_API_KEY=sk-your-key-here
```

That's it. The package works out of the box. It will automatically use the Laravel AI SDK if your environment supports it (PHP 8.3+, Laravel 12+), or fall back to the built-in OpenAI translator otherwise.

> **Tip:** To enable multi-provider support (Anthropic, Gemini, etc.), just run `composer require laravel/ai`. The package will detect it and switch automatically.

That's it. The package works out of the box with any Filament form.

### Optional: Panel Plugin

[](#optional-panel-plugin)

If you want to override source/target locales at the panel level (instead of config):

```
use Badrsh\FilamentAiAutofill\FilamentAiAutofillPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentAiAutofillPlugin::make()
                ->sourceLocale('ar')
                ->targetLocales(['en', 'fr']),
        ]);
}
```

---

Usage
-----

[](#usage)

There are **3 ways** to use this package. Pick whichever fits your form layout.

### Approach 1: Translatable Tabs (Recommended)

[](#approach-1-translatable-tabs-recommended)

Creates tabs (AR, EN, FR...) with an auto-translate button on the source tab.

```
use Badrsh\FilamentAiAutofill\Concerns\HasTranslatableFields;

class PostResource extends Resource
{
    use HasTranslatableFields;

    public static function form(Form $form): Form
    {
        return $form->schema([
            static::translatableTabs(
                fn (string $locale, string $suffix) => [
                    Forms\Components\TextInput::make("title{$suffix}")
                        ->required($locale === 'ar'),
                    Forms\Components\Textarea::make("description{$suffix}"),
                    Forms\Components\RichEditor::make("body{$suffix}"),
                ],
            ),
        ]);
    }
}
```

**What happens:**

- An **AR** tab appears with your source fields + an "Auto-translate All" button
- An **EN** tab (and others) with the same fields suffixed for that locale
- Clicking the button translates all filled AR fields → EN in a single API call

**Options you can pass:**

```
static::translatableTabs(
    schemaCallback: fn (string $locale, string $suffix) => [...],
    label: 'Translations',       // Tab group label
    withBatchAction: null,       // null = auto-detect (true when multiple fields)
    withFieldActions: null,      // null = auto-detect (true when single field)
    sourceLocale: 'ar',          // Override source locale
    targetLocales: ['en', 'fr'], // Override target locales
    locales: ['ar', 'en', 'fr'], // Override full locale list
);
```

**Smart auto-detection:** When you leave `withBatchAction` and `withFieldActions` as `null` (the default), the package automatically chooses the best mode:

- **1 field** → sparkle icon on the field (per-field action)
- **2+ fields** → batch "Auto-translate All" button

You can override this by passing `true` or `false` explicitly. Setting one automatically sets the other to its opposite.

**Textarea &amp; RichEditor support:** The sparkle action works on all field types. Fields that don't support suffix icons (like `Textarea`) use a hint icon (top-right) instead.

### Approach 2: Inline Per-Field Action

[](#approach-2-inline-per-field-action)

Add a sparkle icon (✨) to any individual field. When clicked, it translates that single field.

```
use Badrsh\FilamentAiAutofill\Actions\TranslateFieldAction;

Forms\Components\TextInput::make('title')
    ->suffixAction(
        TranslateFieldAction::make()
            ->targetFields(['en' => 'title_en', 'fr' => 'title_fr'])
    ),
```

**What happens:**

- A sparkle icon appears on the right side of the `title` field
- Clicking it sends the Arabic text to your AI translator and fills `title_en` and `title_fr`

**Options:**

```
TranslateFieldAction::make()
    ->targetFields(['en' => 'title_en'])  // Required: where to put translations
    ->sourceLocale('ar')                   // Override source locale
    ->targetLocales(['en', 'fr'])          // Override target locales
    ->translator(MyTranslator::class)      // Use a custom translator
    ->confirmOverwrite(false)              // Don't warn before overwriting
```

### Approach 3: Batch Action Button

[](#approach-3-batch-action-button)

Place a standalone "translate all" button anywhere in your form.

```
use Badrsh\FilamentAiAutofill\Actions\TranslateBatchAction;

Forms\Components\Actions::make([
    TranslateBatchAction::make()
        ->sourceFields(['title', 'description'])
        ->targetMapping([
            'title'       => ['en' => 'title_en'],
            'description' => ['en' => 'description_en'],
        ]),
]),
```

**What happens:**

- A button appears in your form
- Clicking it collects all source field values, makes **one** API call, and distributes the translations

**Options:**

```
TranslateBatchAction::make()
    ->sourceFields(['title', 'description'])           // Which fields to translate
    ->targetMapping(['title' => ['en' => 'title_en']]) // Explicit field mapping
    ->schemaCallback(fn ($locale, $suffix) => [...])   // Auto-discover from schema
    ->sourceLocale('ar')                                // Override source locale
    ->targetLocales(['en'])                             // Override target locales
    ->translator(MyTranslator::class)                   // Use a custom translator
    ->fieldNaming('suffix')                             // Override naming strategy
    ->confirmOverwrite(false)                           // Don't warn before overwriting
```

---

Configuration
-------------

[](#configuration)

After publishing, edit `config/filament-ai-autofill.php`:

```
return [
    // The translator class (must implement Badrsh\FilamentAiAutofill\Contracts\Translator)
    // Default: LaravelAiTranslator (auto-falls back to OpenAiTranslator if laravel/ai is not installed)
    'translator' => \Badrsh\FilamentAiAutofill\Translators\LaravelAiTranslator::class,

    // The language your content is written in
    'source_locale' => 'ar',

    // The languages to translate into
    'target_locales' => ['en'],

    // How your form fields are named (see "Field Naming" below)
    'field_naming' => 'auto',    // 'suffix', 'dot', or 'auto'

    // Ask before overwriting fields that already have content
    'confirm_overwrite' => true,

    // Laravel AI SDK settings (for LaravelAiTranslator, requires laravel/ai)
    'laravel_ai' => [
        'timeout' => env('AI_TIMEOUT', 60),
    ],

    // OpenAI settings (for OpenAiTranslator, all configurable via .env)
    'openai' => [
        'key'      => env('OPENAI_API_KEY'),
        'model'    => env('OPENAI_MODEL', 'gpt-4o-mini'),
        'base_url' => env('OPENAI_BASE_URL', 'https://api.openai.com/v1'),
        'timeout'  => env('OPENAI_TIMEOUT', 60),
    ],
];
```

### Environment Variables

[](#environment-variables)

VariableDefaultDescription`OPENAI_API_KEY`*(required)*Your OpenAI API key`OPENAI_MODEL``gpt-4o-mini`The model to use for translations`OPENAI_BASE_URL``https://api.openai.com/v1`API base URL (change for proxies or compatible APIs)`OPENAI_TIMEOUT``60`HTTP timeout in seconds per request. Increase if you hit timeouts on large texts`AI_TIMEOUT``60`HTTP timeout for the Laravel AI SDK translator---

Field Naming Strategies
-----------------------

[](#field-naming-strategies)

The package needs to know how your source and target fields are named so it can map between them.

StrategySource FieldTarget Field (en)Target Field (fr)When to use`suffix``title``title_en``title_fr`Flat column per locale`dot``title.ar``title.en``title.fr`JSON/translatable columns`auto`*(detects)**(detects)**(detects)*Let the package figure it outSet it in your config:

```
'field_naming' => 'suffix', // or 'dot' or 'auto'
```

---

Custom Translators
------------------

[](#custom-translators)

Don't want OpenAI? Implement the `Translator` interface:

```
use Badrsh\FilamentAiAutofill\Contracts\Translator;

class DeepLTranslator implements Translator
{
    public function translate(array $values, string $sourceLocale, array $targetLocales): array
    {
        // Input:
        //   $values = ['title' => 'مرحبا', 'description' => 'نص طويل']
        //   $sourceLocale = 'ar'
        //   $targetLocales = ['en', 'fr']
        //
        // Expected output:
        //   [
        //       'title'       => ['en' => 'Hello', 'fr' => 'Bonjour'],
        //       'description' => ['en' => 'Long text', 'fr' => 'Texte long'],
        //   ]

        $results = [];

        foreach ($values as $field => $text) {
            foreach ($targetLocales as $locale) {
                $results[$field][$locale] = $this->callDeepLApi($text, $sourceLocale, $locale);
            }
        }

        return $results;
    }
}
```

Then set it in your config:

```
'translator' => \App\Translators\DeepLTranslator::class,
```

Or override per-action:

```
TranslateBatchAction::make()
    ->translator(\App\Translators\DeepLTranslator::class)
```

For testing without API calls, use the built-in `NullTranslator`:

```
config(['filament-ai-autofill.translator' => \Badrsh\FilamentAiAutofill\Translators\NullTranslator::class]);
```

---

Customizing Translations (UI Strings)
-------------------------------------

[](#customizing-translations-ui-strings)

The package ships with English and Arabic UI strings (button labels, notifications). To customize:

```
php artisan vendor:publish --tag="filament-ai-autofill-translations"
```

---

Filament Version Compatibility
------------------------------

[](#filament-version-compatibility)

This package works with Filament v4 and v5. It uses Filament v5 namespaces internally and includes a compatibility layer (`FilamentCompat.php`) that aliases older namespace classes when needed. No extra configuration needed — install and go.

License
-------

[](#license)

MIT License. See [LICENSE](LICENSE) for details.

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance90

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

9

Last Release

51d ago

PHP version history (2 changes)v1.0.0PHP ^8.1

v1.3.0PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/eefc0360146dd020333be328821458416818baaa27277b1107730535a9b7a977?d=identicon)[badrshs](/maintainers/badrshs)

---

Top Contributors

[![badrshs](https://avatars.githubusercontent.com/u/26596347?v=4)](https://github.com/badrshs "badrshs (16 commits)")

---

Tags

laraveli18ntranslatetranslationaimultilingualopenaifilamentfilament-pluginautofill

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/badrsh-filament-ai-autofill/health.svg)

```
[![Health](https://phpackages.com/badges/badrsh-filament-ai-autofill/health.svg)](https://phpackages.com/packages/badrsh-filament-ai-autofill)
```

###  Alternatives

[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[croustibat/filament-jobs-monitor

Background Jobs monitoring like Horizon for all drivers for FilamentPHP

254255.2k6](/packages/croustibat-filament-jobs-monitor)[smousss/laravel-globalize

Make Laravel projects translatable in a matter of seconds!

2266.3k](/packages/smousss-laravel-globalize)[a2insights/filament-saas

Filament Saas for A2Insights

161.1k](/packages/a2insights-filament-saas)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
