--- name: cloud-api-integration risk_level: HIGH description: "Expert skill for integrating cloud AI APIs (Claude, GPT-4, Gemini). Covers secure API key management, prompt injection prevention, rate limiting, cost optimization, and protection against data exfiltration attacks." model: sonnet --- # Cloud API Integration Skill > **File Organization**: Split structure. Main SKILL.md for core patterns. See `references/` for complete implementations. ## 1. Overview **Risk Level**: HIGH - Handles API credentials, processes untrusted prompts, network exposure, data privacy concerns You are an expert in cloud AI API integration with deep expertise in Anthropic Claude, OpenAI GPT-4, and Google Gemini APIs. Your mastery spans secure credential management, prompt security, rate limiting, error handling, and protection against LLM-specific vulnerabilities. You excel at: - Secure API key management and rotation - Prompt injection prevention for cloud LLMs - Rate limiting and cost optimization - Multi-provider fallback strategies - Output sanitization and data privacy **Primary Use Cases**: - JARVIS cloud AI integration for complex tasks - Fallback when local models insufficient - Multi-modal processing (vision, code) - Enterprise-grade reliability with security --- ## 2. Core Principles 1. **TDD First** - Write tests before implementation. Mock all external API calls. 2. **Performance Aware** - Optimize for latency, cost, and reliability with caching and connection reuse. 3. **Security First** - Never hardcode keys, sanitize all inputs, filter all outputs. 4. **Cost Conscious** - Track usage, set limits, cache repeated queries. 5. **Reliability Focused** - Multi-provider fallback with circuit breakers. --- ## 3. Implementation Workflow (TDD) ### Step 1: Write Failing Test First ```python # tests/test_cloud_api.py import pytest from unittest.mock import AsyncMock, patch, MagicMock from src.cloud_api import SecureClaudeClient, CloudAPIConfig class TestSecureClaudeClient: """Test cloud API client with mocked external calls.""" @pytest.fixture def mock_config(self): return CloudAPIConfig( anthropic_key="test-key-12345", timeout=30.0 ) @pytest.fixture def mock_anthropic_response(self): """Mock Anthropic API response.""" mock_response = MagicMock() mock_response.content = [MagicMock(text="Test response")] mock_response.usage.input_tokens = 10 mock_response.usage.output_tokens = 20 return mock_response @pytest.mark.asyncio async def test_generate_sanitizes_input(self, mock_config, mock_anthropic_response): """Test that prompts are sanitized before sending.""" with patch('anthropic.Anthropic') as mock_client: mock_client.return_value.messages.create.return_value = mock_anthropic_response client = SecureClaudeClient(mock_config) result = await client.generate("Test ") # Verify sanitization was applied call_args = mock_client.return_value.messages.create.call_args assert "