Files
gh-venturo-id-venturo-claud…/commands/add-adapter-impl.md
2025-11-30 09:04:41 +08:00

2.2 KiB

description
description
Add new provider to existing service adapter

Add Adapter Implementation

Add a new provider/implementation to an existing service port (e.g., add SendGrid to email service).

When to Use

Use this when:

  • A port interface already exists (e.g., internal/domains/ports/email.go)
  • You want to add another provider option

Don't use when:

  • Creating brand new service type → Use /venturo-go:new-adapter

Workflow

Phase 1: Auto-Discovery

Automatically scan internal/domains/ports/ to show available services:

Found existing service ports:

1. email
   - Interface: EmailAdapter  
   - Existing providers: gomail, async

Which service do you want to add a provider to?

Phase 2: Provider Selection

Suggest common providers based on service type:

Email: SendGrid, AWS SES, Mailgun, Postmark, Resend, Brevo Storage: AWS S3, GCS, Azure Blob, MinIO Payment: Stripe, PayPal, Square, Razorpay

Phase 3: Implementation

Execute these phases in order:

  1. Scan & Analyze - phases/add-adapter/01-scan-and-analyze.md
  2. Create Adapter - phases/add-adapter/02-create-adapter.md
  3. Update Initialization - phases/add-adapter/03-update-initialization.md
  4. Update Configuration - phases/add-adapter/04-update-configuration.md
  5. Code Quality - phases/shared/code-quality.md

Files Created

pkg/{service}/{provider}/
├── config.go
├── {provider}.adapter.go
├── errors.go
├── {provider}.adapter_test.go
└── README.md

Files Updated

  • pkg/{service}/main.{service}.go - Add provider case
  • internal/config/config.go - Add config struct
  • .env.example - Add environment variables

Example

User: /venturo-go:add-adapter-impl

Claude: Scanning internal/domains/ports/...

Found: email (gomail, async), payment (stripe)

Which service?

User: email

Claude: Common email providers:
- SendGrid
- AWS SES
...

Which provider?

User: sendgrid

[Proceeds with implementation]

Tips

  • Always scan for existing ports first
  • Implement ALL port interface methods
  • Validate configuration in constructor
  • Never log sensitive data (API keys)
  • Keep adapters thin (no business logic)