microservice

Define microservice boundaries with bounded contexts, data ownership, and API contracts.

3|Updated May 28, 2026
One-click install
npx skills add https://github.com/mahg-es/araya --skill microservice
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: microservice
Source: https://github.com/mahg-es/araya/tree/main/skills/microservice
Command: npx skills add https://github.com/mahg-es/araya --skill microservice

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Poorly bounded microservices create distributed monoliths — worse than the monolith they replaced. This skill designs service boundaries based on business domains (Domain-Driven Design), ensuring each service is independently deployable, scalable, and maintainable.

Core Features & Use Cases

  • Domain-Driven Design: identify bounded contexts and define clear service boundaries.
  • API contracts and event-based communication: establish stable interfaces and asynchronous integration.
  • Deployment independence and data ownership: enable per-service CI/CD and isolate data.
  • Use Case: decompose a monolith into microservices to reduce coupling and improve scalability.

Quick Start

Map your business domains to bounded contexts and outline per-service ownership, APIs, and deployment order.

Frequently Asked Questions about microservice

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I define microservice boundaries to avoid creating a distributed monolith?

Avoid distributed monoliths by defining microservice boundaries through bounded contexts identified via Domain-Driven Design, ensuring clear data ownership and stable API contracts. This approach keeps services independently deployable and scalable based on business domains.

What is the best way to decompose a monolith into microservices?

Decompose a monolith by mapping business domains to bounded contexts and outlining per-service data ownership, API contracts, and deployment sequencing. This structured decomposition reduces coupling and improves overall system scalability by isolating data and deployment pipelines.

How do I specify data ownership and communication patterns for a new distributed system?

Specify data ownership per service and establish communication patterns like REST, gRPC, or event-driven integration to design a new distributed system. Defining these API contracts and dependencies ensures stable interfaces and asynchronous integration between independently deployable services.

When should I use event-driven communication over REST or gRPC in microservices?

Use event-driven communication over REST or gRPC when establishing asynchronous integration and stable interfaces between bounded contexts. Applying these communication patterns per service ensures deployment independence and prevents tightly coupled dependencies in your distributed architecture.

Why do my microservices form a distributed monolith and how can bounded contexts fix it?

Microservices form a distributed monolith due to poorly bounded service edges and shared data ownership. Fix it by applying Domain-Driven Design to identify bounded contexts, establishing clear service boundaries, and isolating data to ensure deployment independence and maintainability.

Do I need Domain-Driven Design to establish API contracts for microservices?

You need Domain-Driven Design to identify bounded contexts, which provides the foundational service boundaries required to establish stable API contracts and event-based communication. Without DDD, defining clear data ownership and avoiding tightly coupled architectures becomes significantly harder.