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
laravel-email-verification-development
laravel-email-verification-development
misaf/laravel-email-verification
claude-code
email
validation
laravel
deliverability
misaf

Create, modify, review, or test the provider-neutral Laravel Email Verification core package in the package root. Trigger for EmailVerification, EmailVerificationManager, EmailVerificationStatus, EmailValidation, NullEmailVerification, custom email-verification drivers, allowed email domains, deliverability validation, or the email-verification configuration and translations.

Install
php artisan boost:add-skill misaf/laravel-email-verification

Save this content to: .claude/skills/laravel-email-verification-development/SKILL.md

# Laravel Email Verification

## Workflow

Use `laravel-best-practices` for Laravel PHP and `pest-testing` whenever tests change. Before code changes, use Laravel Boost `application-info` and `search-docs`. Use `laravel-email-verification-emailable-development` as well when changing the Emailable provider.

## Module Boundary

Treat `the package root` as the standalone, provider-neutral core.

- Use namespace `Misaf\LaravelEmailVerification`.
- Own `Contracts\EmailVerification`, `EmailVerificationManager`, `EmailVerificationStatus`, the `EmailVerification` facade, `EmailValidation`, and `NullEmailVerification`.
- Do not import or require a concrete provider, another domain package.
- Keep provider dependencies one-way: a provider package requires this core package and registers a driver through `EmailVerificationManager::extend()`.
- Keep public contracts, enum semantics, manager APIs, config keys, and translation keys stable.

## Verification Semantics

- `Deliverable` means the provider positively classified the address as deliverable.
- `Undeliverable` means the provider positively classified the address as invalid or non-deliverable.
- `Risky` means the address may accept mail but is not safe enough to pass the validation rule.
- `Unverifiable` means verification failed or the provider could not determine a reliable result. Never silently convert an unknown provider state, malformed payload, timeout, or provider error to `Deliverable`.
- Keep the `null` driver as the default provider-neutral fallback. It performs no external request and returns `Deliverable`.

## Validation Rule

- Treat an empty `email-verification.allowed_domains` list as unrestricted.
- Normalize the extracted domain before comparing it with the configured list.
- Use `EmailValidation` after Laravel's `email` rule; this rule owns domain policy and deliverability, never email syntax.
- Resolve drivers through the manager and return localized messages from the `email-verification` translation namespace.
- Keep `en`, `de`, and `fa` translation keys synchronized whenever validation outcomes change.

## Testing And Verification

- Cover non-string input, restricted and unrestricted domains, the null driver, custom driver registration, and every status that affects validation.
- Prove a blocked domain never reaches the driver; provider verification costs paid API quota.
- Keep provider-specific response mapping, HTTP behavior, and retry policy out of this package and its tests.
- Keep the Pest architecture presets and assert the core stays provider-neutral.
- Run `php artisan test --compact `.
- Run targeted PHPStan analysis for `the package root/src`.
- If PHP files changed, run `vendor/bin/pint --dirty --format agent`.

Laravel Email Verification

Workflow

Use laravel-best-practices for Laravel PHP and pest-testing whenever tests change. Before code changes, use Laravel Boost application-info and search-docs. Use laravel-email-verification-emailable-development as well when changing the Emailable provider.

Module Boundary

Treat the package root as the standalone, provider-neutral core.

  • Use namespace Misaf\LaravelEmailVerification.
  • Own Contracts\EmailVerification, EmailVerificationManager, EmailVerificationStatus, the EmailVerification facade, EmailValidation, and NullEmailVerification.
  • Do not import or require a concrete provider, another domain package.
  • Keep provider dependencies one-way: a provider package requires this core package and registers a driver through EmailVerificationManager::extend().
  • Keep public contracts, enum semantics, manager APIs, config keys, and translation keys stable.

Verification Semantics

  • Deliverable means the provider positively classified the address as deliverable.
  • Undeliverable means the provider positively classified the address as invalid or non-deliverable.
  • Risky means the address may accept mail but is not safe enough to pass the validation rule.
  • Unverifiable means verification failed or the provider could not determine a reliable result. Never silently convert an unknown provider state, malformed payload, timeout, or provider error to Deliverable.
  • Keep the null driver as the default provider-neutral fallback. It performs no external request and returns Deliverable.

Validation Rule

  • Treat an empty email-verification.allowed_domains list as unrestricted.
  • Normalize the extracted domain before comparing it with the configured list.
  • Use EmailValidation after Laravel's email rule; this rule owns domain policy and deliverability, never email syntax.
  • Resolve drivers through the manager and return localized messages from the email-verification translation namespace.
  • Keep en, de, and fa translation keys synchronized whenever validation outcomes change.

Testing And Verification

  • Cover non-string input, restricted and unrestricted domains, the null driver, custom driver registration, and every status that affects validation.
  • Prove a blocked domain never reaches the driver; provider verification costs paid API quota.
  • Keep provider-specific response mapping, HTTP behavior, and retry policy out of this package and its tests.
  • Keep the Pest architecture presets and assert the core stays provider-neutral.
  • Run php artisan test --compact .
  • Run targeted PHPStan analysis for the package root/src.
  • If PHP files changed, run vendor/bin/pint --dirty --format agent.
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.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle