Initial commit
This commit is contained in:
100
commands/add-adapter-impl.md
Normal file
100
commands/add-adapter-impl.md
Normal file
@@ -0,0 +1,100 @@
|
||||
---
|
||||
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)
|
||||
Reference in New Issue
Block a user