Resources
11Install
npx skillscat add faionfaion/faion-network/faion-api-developer Install via the SkillsCat registry.
Entry point:
/faion-netโ invoke this skill for automatic routing to the appropriate domain.
API Developer Skill
API design and development covering REST, GraphQL, OpenAPI specifications, authentication, and API best practices.
Purpose
Handles API design, documentation, authentication, rate limiting, versioning, and API-specific patterns.
Context Discovery
Auto-Investigation
Detect API patterns from project:
| Signal | How to Check | What It Tells Us |
|---|---|---|
| OpenAPI spec | Glob("**/openapi.yaml") or Glob("**/swagger.*") |
API documented |
| GraphQL schema | Glob("**/*.graphql") |
GraphQL API |
| DRF | Grep("rest_framework", "**/settings.py") |
Django REST Framework |
| FastAPI | Grep("fastapi", "**/requirements.txt") |
FastAPI used |
| Express routes | Grep("app.get|app.post|router", "**/*.js") |
Express API |
| Auth middleware | Grep("jwt|oauth|auth", "**/*.py") |
Auth patterns |
Read existing patterns:
- Check existing endpoints for conventions
- Read serializers/schemas for data patterns
- Check middleware for auth/rate limiting
Discovery Questions
Q1: API Type
question: "What type of API are you building?"
header: "Type"
multiSelect: false
options:
- label: "REST API"
description: "Resource-based HTTP endpoints"
- label: "GraphQL API"
description: "Query language, single endpoint"
- label: "WebSocket/Real-time"
description: "Bidirectional communication"
- label: "RPC-style"
description: "Action-based endpoints"Routing:
- "REST" โ api-rest-design, OpenAPI
- "GraphQL" โ graphql-api-design
- "WebSocket" โ websocket-design
- "RPC" โ REST patterns adapted
Q2: API Consumers
question: "Who will consume this API?"
header: "Consumers"
multiSelect: true
options:
- label: "Own frontend (SPA/mobile)"
description: "First-party clients"
- label: "Third-party developers"
description: "Public API, need docs"
- label: "Internal services"
description: "Microservices communication"
- label: "Partners (B2B)"
description: "Specific integrations"Context impact:
- "Own frontend" โ Simpler auth, less versioning
- "Third-party" โ Full docs, versioning, rate limits
- "Internal" โ Service auth, less public docs
- "Partners" โ API keys, dedicated support
Q3: Authentication Needs
question: "How should API authentication work?"
header: "Auth"
multiSelect: false
options:
- label: "JWT tokens"
description: "Stateless, self-contained tokens"
- label: "Session-based"
description: "Server-side sessions"
- label: "API keys"
description: "Simple key-based auth"
- label: "OAuth 2.0"
description: "Third-party auth flow"
- label: "No auth needed"
description: "Public API"Q4: Documentation Approach
question: "How should API be documented?"
header: "Docs"
multiSelect: false
options:
- label: "OpenAPI/Swagger (auto-generated)"
description: "Generate from code"
- label: "OpenAPI (design-first)"
description: "Write spec first, then implement"
- label: "Markdown docs"
description: "Manual documentation"
- label: "GraphQL introspection"
description: "Self-documenting schema"When to Use
- REST API design and implementation
- GraphQL API design
- OpenAPI/Swagger specifications
- API authentication (OAuth, JWT, API keys)
- API versioning strategies
- API rate limiting and throttling
- API error handling
- API testing
- API gateways
- API monitoring
- WebSocket APIs
Methodologies
| Category | Methodology | File |
|---|---|---|
| REST APIs | ||
| REST API design | RESTful principles, resource design | api-rest-design.md |
| REST API design alt | REST patterns and best practices | rest-api-design.md |
| GraphQL | ||
| GraphQL API basics | Schema, queries, mutations | api-graphql.md |
| GraphQL API design | Schema design, resolvers, federation | graphql-api-design.md |
| GraphQL API alt | GraphQL patterns | graphql-api.md |
| OpenAPI | ||
| OpenAPI spec | OpenAPI 3.x specification | api-openapi-spec.md |
| OpenAPI specification | Spec writing, code generation | openapi-specification.md |
| API Patterns | ||
| Contract-first API | Schema-first development | api-contract-first.md |
| Contract-first development | API-first approach | contract-first-development.md |
| API versioning | Version strategies (URL, header, media type) | api-versioning.md |
| API error handling | Error codes, error responses | api-error-handling.md |
| API authentication | OAuth 2.0, JWT, API keys | api-authentication.md |
| API rate limiting | Rate limiting strategies | api-rate-limiting.md |
| Rate limiting | Throttling patterns | rate-limiting.md |
| API gateway patterns | Gateway design, BFF pattern | api-gateway-patterns.md |
| API monitoring | Metrics, logging, tracing | api-monitoring.md |
| Testing & Docs | ||
| API testing | Integration testing, contract testing | api-testing.md |
| API documentation | API docs, Swagger UI | api-documentation.md |
| Real-time | ||
| WebSocket design | WebSocket patterns, real-time APIs | websocket-design.md |
Tools
- REST: OpenAPI 3.x, Swagger, Postman
- GraphQL: Apollo Server, GraphQL Yoga, Hasura
- Auth: OAuth 2.0, JWT, Passport.js, Auth0
- Testing: Postman, REST Client, Hoppscotch
- Documentation: Swagger UI, Redoc, Stoplight
- Gateways: Kong, Tyk, API Gateway (AWS)
Related Sub-Skills
| Sub-skill | Relationship |
|---|---|
| faion-python-developer | Django REST Framework, FastAPI |
| faion-javascript-developer | Express, Fastify, GraphQL |
| faion-backend-developer | API implementation in Go, Java, etc. |
| faion-testing-developer | API testing strategies |
Integration
Invoked by parent skill faion-software-developer for API design and implementation work.
Methodology Context & Decision Trees
api-rest-design.md
Required Context:
- API consumers defined (frontend, third-party, internal)
- Data entities/resources modeled
- Authentication requirements known
- Versioning strategy decided
Decision Tree:
Start
โโโ Resources/entities clear?
โ โโโ NO โ faion-ba-modeling (data-analysis) first
โโโ Consumers defined?
โ โโโ NO โ faion-product-manager (stakeholder-analysis)
โโโ Auth requirements?
โ โโโ NO โ See api-authentication.md
โโโ YES to all โ Proceed with REST designIf Missing:
| Context | Skill/Methodology |
|---|---|
| Data model | faion-ba-modeling โ data-analysis |
| Security needs | faion-software-architect โ security-architecture |
| Consumer requirements | faion-product-manager โ product-operations |
graphql-api-design.md
Required Context:
- Data relationships understood (graph structure)
- Query patterns known
- N+1 awareness
- Client requirements (frontend framework)
Decision Tree:
Start
โโโ Complex relationships?
โ โโโ NO โ Consider REST instead (simpler)
โโโ Multiple clients with different needs?
โ โโโ NO โ REST may be sufficient
โโโ Need real-time subscriptions?
โ โโโ YES โ GraphQL with subscriptions
โโโ Proceed with GraphQLIf Missing:
| Context | Skill/Methodology |
|---|---|
| Data relationships | faion-ba-modeling โ data-analysis |
| Query optimization | faion-backend-systems โ database-optimization |
| Frontend needs | faion-frontend-developer |
api-authentication.md
Required Context:
- User types (end-user, service, admin)
- Session requirements (stateless vs stateful)
- Third-party auth needs (OAuth providers)
- Security compliance (OWASP, SOC2)
Decision Tree:
Start
โโโ Third-party login needed?
โ โโโ YES โ OAuth 2.0 / OIDC
โโโ Service-to-service?
โ โโโ YES โ API keys or mTLS
โโโ Need stateless?
โ โโโ YES โ JWT tokens
โโโ Need session management?
โ โโโ YES โ Session-based auth
โโโ Simple internal API โ API keysIf Missing:
| Context | Skill/Methodology |
|---|---|
| Security requirements | faion-software-architect โ security-architecture |
| Compliance needs | faion-devops-engineer โ security-compliance |
| User types | faion-ba-core โ stakeholder-analysis |
api-versioning.md
Required Context:
- API maturity (new vs established)
- Breaking change frequency
- Client update capability
- Deprecation policy
Decision Tree:
Start
โโโ Public API with external clients?
โ โโโ YES โ URL versioning (/v1/) recommended
โโโ Internal services only?
โ โโโ YES โ Header versioning or no versioning
โโโ GraphQL?
โ โโโ YES โ Schema evolution, no versioning needed
โโโ Frequent breaking changes โ Media type versioningIf Missing:
| Context | Skill/Methodology |
|---|---|
| API consumers | faion-product-manager โ stakeholder-analysis |
| Deprecation policy | faion-sdd-planning โ spec-writing |
api-rate-limiting.md
Required Context:
- Traffic patterns known
- Client tiers (free, paid, enterprise)
- Infrastructure capacity
- Burst vs sustained load
Decision Tree:
Start
โโโ Multi-tenant SaaS?
โ โโโ YES โ Per-tenant rate limits
โโโ Public API?
โ โโโ YES โ Tiered rate limiting
โโโ Internal only?
โ โโโ Consider circuit breakers instead
โโโ Define limits: requests/minute/hour/dayIf Missing:
| Context | Skill/Methodology |
|---|---|
| Traffic analysis | faion-software-architect โ performance-architecture |
| Pricing tiers | faion-product-manager โ product-planning |
| Infrastructure | faion-devops-engineer โ infrastructure |
api-error-handling.md
Required Context:
- Error categories defined
- Client error display requirements
- Logging/monitoring setup
- Localization needs
Decision Tree:
Start
โโโ Public API?
โ โโโ YES โ RFC 7807 Problem Details
โโโ Internal API?
โ โโโ Consistent error schema
โโโ Need debugging info?
โ โโโ DEV only, never in production
โโโ Always: structured errors, proper HTTP codesIf Missing:
| Context | Skill/Methodology |
|---|---|
| Error categories | faion-ba-core โ requirements-analysis |
| Monitoring | faion-software-architect โ observability-architecture |
api-openapi-spec.md
Required Context:
- All endpoints defined
- Request/response schemas
- Auth schemes
- Examples for each endpoint
Decision Tree:
Start
โโโ Design-first approach?
โ โโโ YES โ Write OpenAPI first, generate code
โโโ Code-first approach?
โ โโโ YES โ Generate OpenAPI from code
โโโ Need code generation?
โ โโโ YES โ Ensure strict typing in spec
โโโ OpenAPI 3.1 recommended (JSON Schema)If Missing:
| Context | Skill/Methodology |
|---|---|
| Endpoint design | api-rest-design.md |
| Data schemas | faion-ba-modeling โ data-analysis |
websocket-design.md
Required Context:
- Real-time use case defined
- Message types/events
- Connection lifecycle
- Scale requirements (connections count)
Decision Tree:
Start
โโโ Need bidirectional?
โ โโโ NO โ Consider SSE instead
โโโ High frequency updates?
โ โโโ YES โ WebSocket with batching
โโโ Many concurrent connections?
โ โโโ YES โ Consider dedicated WS server
โโโ Define: connect, message, disconnect flowsIf Missing:
| Context | Skill/Methodology |
|---|---|
| Real-time requirements | faion-ba-core โ requirements-analysis |
| Scale architecture | faion-software-architect โ distributed-patterns |
| Infrastructure | faion-devops-engineer โ infrastructure |
api-gateway-patterns.md
Required Context:
- Number of backend services
- Client types (web, mobile, IoT)
- Cross-cutting concerns (auth, rate limit, logging)
- Traffic patterns
Decision Tree:
Start
โโโ Single backend service?
โ โโโ NO โ Consider API gateway
โโโ Multiple client types with different needs?
โ โโโ YES โ BFF pattern (Backend for Frontend)
โโโ Need aggregation across services?
โ โโโ YES โ Gateway with composition
โโโ Cross-cutting: auth, rate limiting, cachingIf Missing:
| Context | Skill/Methodology |
|---|---|
| Service architecture | faion-software-architect โ microservices-architecture |
| Client requirements | faion-frontend-developer, faion-product-manager |
api-testing.md
Required Context:
- API contracts defined
- Test data strategy
- CI/CD integration needs
- Contract testing requirements
Decision Tree:
Start
โโโ Contract testing needed?
โ โโโ YES โ Use Pact or similar
โโโ Integration tests?
โ โโโ YES โ Test against real/mock server
โโโ Performance testing?
โ โโโ YES โ Load testing with k6, Artillery
โโโ Minimum: contract + integration testsIf Missing:
| Context | Skill/Methodology |
|---|---|
| API contracts | api-openapi-spec.md |
| Testing strategy | faion-testing-developer โ integration-testing |
| CI/CD | faion-cicd-engineer โ ci-cd-pipelines |
api-monitoring.md
Required Context:
- SLOs defined (latency, availability)
- Alerting requirements
- Tracing needs
- Log aggregation setup
Decision Tree:
Start
โโโ SLOs defined?
โ โโโ NO โ Define first (faion-software-architect)
โโโ Distributed system?
โ โโโ YES โ Need distributed tracing
โโโ Need business metrics?
โ โโโ YES โ Custom metrics + dashboards
โโโ Minimum: latency, errors, throughput (RED)If Missing:
| Context | Skill/Methodology |
|---|---|
| SLOs | faion-software-architect โ quality-attributes |
| Observability | faion-software-architect โ observability-architecture |
| Alerting | faion-cicd-engineer โ monitoring-alerting |
faion-api-developer v1.1 | 19 methodologies | Context-aware