
Microservices Architect
Choose synchronous vs asynchronous patterns, broker options, and resilience tactics when splitting a solo or indie product into microservices.
Overview
Microservices Architect is an agent skill most often used in Build integrations (also Ship perf and Operate monitoring) that teaches how to design synchronous and asynchronous communication, resilience, and observability
Install
npx skills add https://github.com/jeffallan/claude-skills --skill microservices-architectWhat is this skill?
- Compares REST, gRPC, and GraphQL with when-to-use criteria and example resource or proto shapes
- Documents async messaging with Kafka, RabbitMQ, and AWS SQS plus exchange and queue patterns
- Covers resilience: timeouts, retries with exponential backoff, circuit breaker closed/open/half-open, and bulkheads
- Explains saga choreography vs orchestration with compensating transactions and idempotency keys
- Maps observability with correlation IDs, OpenTelemetry-style tracing, and Prometheus-style RED metrics
- Three synchronous styles documented: REST, gRPC, and GraphQL with explicit when-to-use lists
- Three async platforms compared: Kafka, RabbitMQ, and AWS SQS with tradeoff tables
- Circuit breaker modeled in three states: closed, open, and half-open
Adoption & trust: 2.9k installs on skills.sh; 9.7k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You are splitting or scaling a product into services but lack a consistent plan for APIs, events, retries, and failure recovery between teams of one.
Who is it for?
Indie builders and small teams defining service boundaries, event contracts, and resilience before shipping distributed backends.
Skip if: Single-process monoliths with no split plans, or teams that only need a hosted BaaS without custom inter-service design.
When should I use this skill?
Designing or refactoring communication between microservices, choosing sync vs async transports, or adding resilience and tracing across service calls.
What do I get? / Deliverables
You leave with concrete pattern choices—REST vs gRPC vs GraphQL, broker selection, saga style, and circuit-breaker defaults—ready to encode in specs and implementation tasks.
- Documented sync API style and versioning approach per service boundary
- Event or command contracts and delivery-semantics choices for async paths
- Resilience defaults: timeouts, retry policy, circuit breaker thresholds, and observability fields
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Service-to-service contracts and messaging belong on the Build shelf where APIs and brokers are designed before launch. Integrations is the right facet for REST, gRPC, GraphQL, and Kafka/RabbitMQ/SQS handoffs between bounded contexts.
Where it fits
Draft REST resource paths and async order-created events before implementing the order and inventory services.
Select gRPC with Protobuf for low-latency checkout calls while keeping a public REST facade.
Set client timeouts, exponential backoff retries, and half-open circuit breaker rules before load testing.
Require correlation IDs and trace propagation so you can debug cross-service failures in production.
Sanity-check whether sync-only APIs or a message bus fits MVP scope before over-splitting services.
How it compares
Architecture and pattern reference for communication design—not an MCP server, Terraform module, or automated migration tool.
Common Questions / FAQ
Who is microservices-architect for?
Solo and indie developers (and tiny teams) who own API and messaging design while moving from a monolith or adding new bounded contexts.
When should I use microservices-architect?
During Build when picking REST, gRPC, or GraphQL and wiring Kafka, RabbitMQ, or SQS; during Ship when setting timeouts, retries, and circuit breakers; and during Operate when adding correlation IDs and tracing across calls.
Is microservices-architect safe to install?
Treat it as advisory documentation in your agent; review the Security Audits panel on this Prism page before trusting the package in production workflows.
SKILL.md
READMESKILL.md - Microservices Architect
# Inter-Service Communication Patterns Comprehensive guide for designing communication between microservices. ## Communication Styles ### Synchronous Communication **REST APIs:** ``` When to Use: - Request/response pattern needed - Client needs immediate result - Simple CRUD operations - Public-facing APIs Design Principles: - Resource-oriented URLs - HTTP verbs (GET, POST, PUT, DELETE, PATCH) - Stateless operations - Idempotent operations where possible - Proper status codes (200, 201, 400, 404, 500) Example: GET /api/v1/orders/{orderId} POST /api/v1/orders PUT /api/v1/orders/{orderId} DELETE /api/v1/orders/{orderId} PATCH /api/v1/orders/{orderId}/status ``` **gRPC:** ``` When to Use: - Low-latency requirements - Strong typing needed - Streaming data - Internal service-to-service calls - Polyglot environments Advantages: - Binary protocol (faster than JSON) - Built-in code generation - Bi-directional streaming - HTTP/2 multiplexing - Strong schema enforcement via Protobuf Example Proto: service OrderService { rpc GetOrder(OrderRequest) returns (OrderResponse); rpc CreateOrder(CreateOrderRequest) returns (OrderResponse); rpc StreamOrders(StreamRequest) returns (stream OrderResponse); } message OrderRequest { string order_id = 1; } message OrderResponse { string order_id = 1; string status = 2; repeated OrderItem items = 3; } ``` **GraphQL:** ``` When to Use: - Frontend-driven data requirements - Aggregating data from multiple services - Flexible query requirements - Reducing over-fetching/under-fetching Federation Pattern: - Each service owns its subdomain schema - Gateway stitches schemas together - Clients query unified API - Services resolve their own fields Example: # User Service Schema type User @key(fields: "id") { id: ID! name: String! email: String! } # Order Service Schema extend type User @key(fields: "id") { id: ID! @external orders: [Order!]! } ``` ### Asynchronous Communication **Message Queues (Point-to-Point):** ``` When to Use: - Task distribution - Load leveling - Guaranteed delivery needed - Single consumer per message Examples: - RabbitMQ with work queues - AWS SQS - Azure Service Bus Queues Pattern: Producer → Queue → Consumer - Consumer acknowledges message - Unacknowledged messages redelivered - Dead letter queue for failures Use Cases: - Background job processing - Email/SMS sending - Image processing - Report generation ``` **Event Streaming (Pub/Sub):** ``` When to Use: - Multiple consumers need same event - Event sourcing - Real-time data pipelines - Audit logging - CQRS read model updates Kafka Example: Topics: - order.created - order.updated - order.cancelled Producers: - OrderService publishes events Consumers: - NotificationService (send confirmation email) - InventoryService (reserve stock) - AnalyticsService (track metrics) - WarehouseService (prepare shipment) Each consumer processes independently ``` **Event-Driven Architecture:** ``` Event Types: 1. Domain Events: - order.placed - payment.completed - shipment.dispatched Characteristics: - Represent something that happened - Immutable - Past tense naming - Contain minimal necessary data 2. Integration Events: - Published across bounded contexts - Designed for external consumption - Schema versioned - Backward compatible 3. Command Events: - Imperative (do something) - Example: process.order, send.notification - Use sparingly (prefer domain events) Event Schema Example: { "eventId": "uuid", "eventType": "order.placed", "eventVersion": "1.0", "timestamp": "2025-12-14T10:00:00Z", "aggregateId": "order-12345", "correlationId": "request-uuid", "payload": { "orderId": "12345", "customerId": "67890", "totalAmount": 99.99, "currency": "USD" } } ``` ## Communication Patterns ### Request/Response **Synchronous Request/Response:** ``` Pattern: Client → Service A → Service B → Response Pros: - Simple to implemen