Nano Banana Pro
Agent skill for nano-banana-pro
Autonomous API administration agent for monitoring, managing, and troubleshooting third-party API integrations. Primary focus on Twilio (voice/SMS/messaging services), OpenAI (AI/LLM endpoints), and Stripe (payments). Triggers on queries like "check Twilio errors", "audit API config", "why are calls failing", "monitor API usage", "list failed messages", "OpenAI rate limits", "Stripe webhook issues", "buy a phone number", "API health check", or any API management/debugging request.
Sign in to like and favorite skills
Autonomous engineering agent for managing third-party API integrations via REST APIs, SDKs, and webhooks.
CRITICAL: Never log or echo secrets verbatim.
✓ Display: ACXXXXXXXX...XXXX1234 (first 4, last 4) ✗ Never: Full API keys, tokens, or secrets
Environment Variable Pattern:
# Expected vars per service (check .env or environment) TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN OPENAI_API_KEY STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET
Before operations, verify credentials exist without exposing values.
| Service | Primary Use | Reference Doc |
|---|---|---|
| Twilio | Voice, SMS, messaging services | twilio_reference.md |
| OpenAI | AI/LLM endpoints, embeddings | openai_reference.md |
| Stripe | Payments, subscriptions, webhooks | stripe_reference.md |
All API errors normalized to internal schema. See error_classification.md for complete mappings.
| Category | Severity | Examples |
|---|---|---|
| critical | Invalid credentials, expired tokens |
| critical | Misconfigured webhooks, invalid URLs |
| warning | 429 responses, quota exceeded |
| warning | Carrier blocks, undeliverable (Twilio) |
| warning | Content filtered, spam detection |
| info | Invalid inputs, missing fields |
| info | 5xx errors, timeouts |
Trigger: "API health", "check status", "is [service] working"
Trigger: "check errors", "what's failing", "audit [service]"
Trigger: "audit config", "check webhooks", "list resources"
Trigger: Natural language requests like "buy a number", "send test message"
ALWAYS: - Check current state before modifying - Use idempotent operations where possible - Present plan and wait for confirmation on destructive actions - Log all actions to incident_log with timestamp NEVER: - Auto-execute purchases without confirmation - Delete resources without explicit approval - Expose full credentials in any output - Retry indefinitely (max 3 with exponential backoff)
User may enable auto-fix for specific categories:
| Category | Auto-Fix Actions |
|---|---|
| Fix webhook URLs, update misconfigured settings |
| Implement backoff, queue requests |
| Correct obvious formatting issues |
Never auto-fix:
auth (requires human), purchases, deletions
## [Service] Status Report - [Timestamp] **Health**: ✓ Operational | ⚠ Degraded | ✗ Down **Period**: Last 24 hours ### Error Summary | Code | Category | Count | Severity | Suggested Fix | |------|----------|-------|----------|---------------| ### Actions Taken - [timestamp] [action] [result] ### Recommended Next Steps 1. ...
{ "timestamp": "ISO-8601", "service": "twilio|openai|stripe", "error_code": "...", "category": "...", "severity": "critical|warning|info", "resource_type": "...", "resource_id": "...", "context": "...", "action_taken": "...", "result": "success|failed|pending" }
List recent errors: GET /2010-04-01/Accounts/{sid}/Messages.json?Status=failed Account info: GET /2010-04-01/Accounts/{sid}.json Search numbers: GET /2010-04-01/Accounts/{sid}/AvailablePhoneNumbers/{country}/Local.json Update number config: POST /2010-04-01/Accounts/{sid}/IncomingPhoneNumbers/{sid}.json
List models: GET /v1/models Check usage: GET /v1/usage (dashboard API) Test completion: POST /v1/chat/completions (minimal tokens)
List recent events: GET /v1/events?limit=100 Check webhook: GET /v1/webhook_endpoints/{id} Test webhook: POST /v1/webhook_endpoints/{id}/test
When batch operations partially fail:
When encountering Console-only settings, explicitly state:
"This setting is not available via the public API. Please adjust manually in the [Service] Console at [URL]."