Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
filament-scanner-guard-development
filament-scanner-guard-development
jeffersongoncalves/filament-scanner-guard
claude-code
filament
scanner-guard
actions
resources
configuration
migrations

Build and work with Filament Scanner Guard features — the ban-list resource, filters and unban actions.

Install
php artisan boost:add-skill jeffersongoncalves/filament-scanner-guard

Save this content to: .claude/skills/filament-scanner-guard-development/SKILL.md

# Filament Scanner Guard Development

## When to use this skill

Use this skill when:
- Registering the Scanner Guard Bans resource in a panel
- Reusing the unban actions on a custom table
- Customizing the resource's columns or filter

## Configuration

### Basic Setup

```php
use JeffersonGoncalves\Filament\ScannerGuard\ScannerGuardPlugin;

ScannerGuardPlugin::make();
```

The plugin registers a single resource, `ScannerGuardBanResource`, backed by `JeffersonGoncalves\ScannerGuard\Models\ScannerGuardBan` (from `jeffersongoncalves/laravel-scanner-guard`).

## Actions

### UnbanAction / UnbanBulkAction

```php
use JeffersonGoncalves\Filament\ScannerGuard\Actions\UnbanAction;
use JeffersonGoncalves\Filament\ScannerGuard\Actions\UnbanBulkAction;

$table
    ->recordActions([
        UnbanAction::make(),
    ])
    ->toolbarActions([
        UnbanBulkAction::make(),
    ]);
```

Both actions **delete** the `ScannerGuardBan` record — there is no `unban()` method on the model (it's a permanent audit trail, not a flag on an arbitrary Eloquent model like `cybercog/laravel-ban`'s `Bannable`).

## Model

`ScannerGuardBan` has two reason constants: `REASON_SCANNER_PATH` and `REASON_ASN`, an `is_active` accessor (`expires_at->isFuture()`), and an `active()` scope (`expires_at > now()`). The table name is configurable via `config('scanner-guard.table')`.

## Troubleshooting

### Plugin not registered

**Cause**: Plugin not added to PanelProvider.

**Solution**: Add `ScannerGuardPlugin::make()` to the panel's `->plugins([])` array.

### "no such table: scanner_guard_bans"

**Cause**: `jeffersongoncalves/laravel-scanner-guard`'s migration hasn't been published/run.

**Solution**: Run `php artisan vendor:publish --tag=laravel-scanner-guard-migrations` then `php artisan migrate`.

Filament Scanner Guard Development

When to use this skill

Use this skill when:

  • Registering the Scanner Guard Bans resource in a panel
  • Reusing the unban actions on a custom table
  • Customizing the resource's columns or filter

Configuration

Basic Setup

use JeffersonGoncalves\Filament\ScannerGuard\ScannerGuardPlugin;

ScannerGuardPlugin::make();

The plugin registers a single resource, ScannerGuardBanResource, backed by JeffersonGoncalves\ScannerGuard\Models\ScannerGuardBan (from jeffersongoncalves/laravel-scanner-guard).

Actions

UnbanAction / UnbanBulkAction

use JeffersonGoncalves\Filament\ScannerGuard\Actions\UnbanAction;
use JeffersonGoncalves\Filament\ScannerGuard\Actions\UnbanBulkAction;

$table
    ->recordActions([
        UnbanAction::make(),
    ])
    ->toolbarActions([
        UnbanBulkAction::make(),
    ]);

Both actions delete the ScannerGuardBan record — there is no unban() method on the model (it's a permanent audit trail, not a flag on an arbitrary Eloquent model like cybercog/laravel-ban's Bannable).

Model

ScannerGuardBan has two reason constants: REASON_SCANNER_PATH and REASON_ASN, an is_active accessor (expires_at->isFuture()), and an active() scope (expires_at > now()). The table name is configurable via config('scanner-guard.table').

Troubleshooting

Plugin not registered

Cause: Plugin not added to PanelProvider.

Solution: Add ScannerGuardPlugin::make() to the panel's ->plugins([]) array.

"no such table: scanner_guard_bans"

Cause: jeffersongoncalves/laravel-scanner-guard's migration hasn't been published/run.

Solution: Run php artisan vendor:publish --tag=laravel-scanner-guard-migrations then php artisan migrate.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log