mcpField
L
laravel:ports-and-adapters

laravel:ports-and-adapters

github.com/jpcaparasDevelopment157120 installsUpdated 19w ago
Repository

About laravel:ports-and-adapters

A Laravel skill for structuring external integrations with ports and adapters. It helps developers keep provider SDK details outside domain code by defining application-focused interfaces and thin adapters.

Key features

  1. 01Application-focused PHP interfaces
  2. 02Provider-specific adapter wrappers
  3. 03Adapter selection through configuration
  4. 04Normalize SDK data into own types
  5. 05Thin, tested adapters

Use cases

  1. 01Isolating an email provider SDK
  2. 02Switching integrations through configuration
  3. 03Keeping vendor data out of domain code

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel:ports-and-adapters

After installing, type/laravel:ports-and-adaptersin Claude Code to confirm it loaded.

Details

From the project README

Ports and Adapters (Hexagonal)

Abstract integrations behind stable interfaces. Keep vendor SDKs out of your domain code.

Shape

  • Port: PHP interface that expresses only what the app needs
  • Adapters: one per provider, wrapping SDK quirks
  • Selection: choose adapter via config/env/service provider

Example (email)

// Port
interface MailPort {
    public function send(string $to, string $subject, string $html): void;
}

// Adapter
final class SesMailAdapter implements MailPort {
    public function __construct(private \Aws\Ses\SesClient $ses) {}
    public function send(string $to, string $subject, string $html): void {
        // wrap SES specifics here
    }
}

// Composition (AppServiceProvider)
$this->app->singleton(MailPort::class, function () {
    return match (config('mail.driver')) {
        'ses' => new SesMailAdapter(app('aws.ses')),
        default => new SmtpMailAdapter(/* ... */),
    };
});

Tips

  • Normalize SDK data into your own types/DTOs
  • Expose only portable capabilities via the port
  • Keep adapters thin and well-tested

Comments

Markdown supported