Skip to main content

api-integration

REST/GraphQL API client design, rate limiting, error handling, and authentication best practices

Source facts

Repository
Hack23/riksdagsmonitor
Last source activity
April 16, 2026 at 09:31
Detected SKILL.md language
English
Stars
12
Forks
4

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
api-integration
description
REST/GraphQL API client design, rate limiting, error handling, and authentication best practices
license
CC-BY-4.0
# API Integration Skill ## 🔴 AI FIRST Quality Principle > **Apply the AI FIRST principle: never accept first-pass quality. Minimum 2 iterations. Read all output, improve every section. No shortcuts.** ## Purpose Expert knowledge in building robust API clients with proper error handling, rate limiting, authentication, and retry logic. ## Core Principles 1. **Resilience** - Handle failures gracefully 2. **Rate Limiting** - Respect API limits 3. **Retry Logic** - Exponential backoff 4. **Circuit Breaker** - Fail fast when needed 5. **Security** - Secure credential storage ## Enforces - REST/GraphQL client patterns - Rate limiting and throttling - Retry logic with exponential backoff - Circuit breaker pattern - Error handling and recovery - Authentication (OAuth, API keys, JWT) - Request/response logging - Timeout configuration ## API Client Pattern ```javascript class APIClient { constructor(config) { this.baseUrl = config.baseUrl; this.timeout = config.timeout || 30000; this.retries = config.retries || 3; this.circuitBreaker = new CircuitBreaker(); } async request(endpoint, options = {}) { if (this.circuitBreaker.isOpen()) { throw new Error('Circuit breaker open'); } for (let attempt = 1; attempt <= this.retries; attempt++) { try { const response = await fetch( `${this.baseUrl}${endpoint}`, { ...options, timeout: this.timeout } ); if (!response.ok) { throw new APIError(response.status, response.statusText); } this.circuitBreaker.recordSuccess(); return await response.json(); } catch (error) { if (attempt === this.retries) { this.circuitBreaker.recordFailure(); throw error; } await this.delay(1000 * Math.pow(2, attempt)); } } } } ``` ## When to Use - Building API clients - Integrating external services - Handling API failures - Rate limit management - Authentication implementation ## References - [REST API Design](https://restfulapi.net/) - [Circuit Breaker Pattern](https://martinfowler.com/bliki/CircuitBreaker.html) --- **Version**: 1.0 | **Last Updated**: 2026-02-06 | **Category**: Development & Operations
View on GitHub