| name | skill-developer-relations |
| description | SDK development, external developer communication, code samples, API client libraries, community engagement, and developer experience. Use when creating SDKs, writing external guides, creating code samples, or improving developer experience. |
| version | 1.0.0 |
Skill: Developer Relations
Overview
Develop SDKs, guides, and external-facing communication that makes your product accessible and enjoyable for third-party developers.
Core Principles
1. SDK Design
- Single Responsibility: One SDK = one language, one purpose
- Familiar Patterns: Match community conventions (not your internal patterns)
- Python: classes, context managers, snake_case
- JavaScript: async/await, CommonJS or ESM, camelCase
- Go: interfaces, structs, package-level functions
- Minimal Dependencies: Reduce transitive dependency bloat
- Versioning: Semantic versioning, clear deprecation paths
2. Code Samples
- Real, Runnable: Not pseudocode — every sample executes
- Progressive Complexity: Start simple, build up
- Hello World (authentication only)
- Basic operation (read/write)
- Advanced pattern (error handling, retries, batching)
- Error Paths: Show what failure looks like and how to handle it
- Tested: CI verifies samples remain accurate as APIs evolve
3. Documentation for Developers
- Task-First, Not API-First:
- Instead of: "Query using GET /users/{id}"
- Write: "To fetch a user by ID: [sample code]"
- Examples Over Explanation: Code sample > prose description
- Quick Start: First 5 minutes = working integration (not configuration)
- API Reference: Auto-generated from OpenAPI/GraphQL schema (not hand-written)
4. Developer Experience (DX)
- Obvious Error Messages: Include context (what happened, why, how to fix)
- Retry Logic: Built-in exponential backoff for transient failures
- Rate Limit Handling: Transparent queuing or clear backpressure
- Type Safety: Static typing (TypeScript, mypy stubs, Go generics)
- Zero Configuration: Sensible defaults; only require secrets
5. Community & Feedback
- Clear Contribution Guidelines: What community code is accepted
- Deprecation Policy: 2+ minor versions before removal, clear migration path
- Response Time: Triage issues within 48 hours
- Use Cases: Document common patterns from community questions
Execution Checklist
When Creating an SDK
When Writing Developer Guides
When Responding to Community Questions
Example: Python SDK Design
from myapi import Client, AuthenticationError, RateLimitError
with Client(api_key="sk-...") as client:
try:
user = client.users.get(user_id="123")
print(f"User: {user.email}")
except AuthenticationError:
print("Invalid API key")
except RateLimitError as e:
print(f"Rate limited. Retry after {e.retry_after}s")
Example: Developer Guide (Task-First)
Goal: Build a webhook receiver that listens for order events.
Step 1: Create Flask endpoint
from flask import Flask, request
app = Flask(__name__)
@app.route("/webhook", methods=["POST"])
def handle_webhook():
event = request.json
print(f"Received {event['type']}: {event['id']}")
return {"ok": True}
Step 2: Verify signature
import hmac
import hashlib
secret = "webhook_secret_from_dashboard"
def verify_signature(body: bytes, signature: str) -> bool:
expected = hmac.new(
secret.encode(),
body,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(signature, expected)
@app.route("/webhook", methods=["POST"])
def handle_webhook():
signature = request.headers.get("X-Webhook-Signature", "")
if not verify_signature(request.data, signature):
return {"error": "Invalid signature"}, 401
Common Pitfalls to Avoid
❌ SDK with opinionated architecture: Forces framework choice (use minimal wrapper)
❌ Incomplete error context: "Error 401" instead of "Invalid API key. See docs.example.com/auth"
❌ Samples that don't run: Pseudocode or manual setup required before copy-paste works
❌ API-first documentation: "GET /users/{id}" instead of "To fetch a user..."
❌ Silent failures: Missing retry logic, rate limit handling, or timeout defaults
Success Metrics
- Adoption: SDK downloads/installs trending up (PyPI, npm, Maven)
- Time-to-First-Success: Measure how long until developer's first successful API call (target: <10 min)
- Support Load: Fewer duplicated questions (indicates good docs)
- Community Contributions: Issues opened, PRs submitted, Stack Overflow answers
- Satisfaction: Developer survey NPS on ease-of-use