Create, modify, review, or test the optional Emailable driver in the package root. Trigger for EmailableEmailVerification, EmailableServiceProvider, Emailable API configuration, email-verification response mapping, HTTP retries or timeouts, and Emailable driver tests.
php artisan boost:add-skill misaf/laravel-email-verification
Save this content to: .claude/skills/laravel-email-verification-emailable-development/SKILL.md
# Laravel Email Verification Emailable
## Workflow
Use this skill together with `laravel-email-verification-development`, `laravel-best-practices`, and `pest-testing` whenever tests change. Before code changes, use Laravel Boost `application-info` and `search-docs`; consult current official Emailable API documentation before changing response semantics.
## Module Boundary
Treat `the package root` as an optional concrete provider.
- Use namespace `Misaf\LaravelEmailVerificationEmailable`.
- Own only `EmailableEmailVerification`, its config, tests, and driver registration in `EmailableServiceProvider`.
- Depend on `misaf/laravel-email-verification` and implement its `EmailVerification` contract.
- Never move Emailable HTTP logic, credentials, or dependencies into the core package.
- Do not depend on other packages you do not need.
## Driver Semantics
- Register the driver as `emailable` through `EmailVerificationManager::extend()`, from a deferred `callAfterResolving()` callback so provider registration order cannot matter.
- Read `host`, `api_key`, `timeout.server`, `timeout.client`, `retry.times`, and `retry.sleep_milliseconds` from `email-verification-emailable` using typed configuration access.
- Map `deliverable` to `Deliverable`, `undeliverable` to `Undeliverable`, and `risky` to `Risky`.
- Map `unknown`, unrecognized states, malformed payloads, unsuccessful responses, timeouts, and exceptions to `Unverifiable`.
- Never report an ambiguous or failed verification as `Deliverable`.
- Preserve bounded request timeouts and retries. Never log the API key or include it in exception context.
## Testing And Verification
- Use `Http::fake()`; tests must never call the live Emailable API.
- Cover driver registration, every recognized response state, unknown states, unsuccessful responses, and malformed payloads.
- Keep the Pest architecture presets and assert the driver depends only on the core contract.
- Run `php artisan test --compact tests/ (Emailable driver)`.
- Run targeted PHPStan analysis for `the package root/src`.
- If PHP files changed, run `vendor/bin/pint --dirty --format agent`.
Use this skill together with laravel-email-verification-development, laravel-best-practices, and pest-testing whenever tests change. Before code changes, use Laravel Boost application-info and search-docs; consult current official Emailable API documentation before changing response semantics.
Treat the package root as an optional concrete provider.
Misaf\LaravelEmailVerificationEmailable.EmailableEmailVerification, its config, tests, and driver registration in EmailableServiceProvider.misaf/laravel-email-verification and implement its EmailVerification contract.emailable through EmailVerificationManager::extend(), from a deferred callAfterResolving() callback so provider registration order cannot matter.host, api_key, timeout.server, timeout.client, retry.times, and retry.sleep_milliseconds from email-verification-emailable using typed configuration access.deliverable to Deliverable, undeliverable to Undeliverable, and risky to Risky.unknown, unrecognized states, malformed payloads, unsuccessful responses, timeouts, and exceptions to Unverifiable.Deliverable.Http::fake(); tests must never call the live Emailable API.php artisan test --compact tests/ (Emailable driver).the package root/src.vendor/bin/pint --dirty --format agent.How can I help you explore Laravel packages today?