Guides the implementation of hexagonal (ports and adapters) architecture,
Scanned 6/12/2026
Install via CLI
openskills install paulpas/agent-skill-router---
name: software-architecture-hexagonal
description: Guides the implementation of hexagonal (ports and adapters) architecture,
focusing on best practices for decoupling business logic from external concerns.
license: MIT
compatibility: opencode
metadata:
version: "1.0.0"
domain: coding
triggers: hexagonal architecture, ports and adapters, hexagonal design patterns
archetypes:
- tactical
- generation
anti_triggers:
- brainstorming
- vague ideation
- code golf
- over-engineering
response_profile:
verbosity: low
directive_strength: high
abstraction_level: operational
role: implementation
scope: implementation
output-format: code
related-skills: software-architecture-microservices, software-architecture-monolith,
software-architecture-event-driven
---
# Hexagonal Architecture
archetypes: tactical, educational
anti_triggers: tightly coupled design
response_profile:
verbosity: medium
directive_strength: high
abstraction_level: tactical
Guides the implementation of hexagonal (ports and adapters) architecture, focusing on best practices for decoupling business logic from external concerns.
## When to Use
- When you need a flexible architecture that accommodates changes easily.
- For applications with complex domain logic.
- When you need to integrate multiple external systems.
## Core Workflow
1. **Define the Domain Model** – Centralize your core domain logic.
2. **Establish Ports** – Create interfaces for external services and applications.
3. **Implement Adapters** – Build adapters to connect the domain to outside technology.
## Implementation Patterns
### Enhanced Examples of Hexagonal Architecture
1. **Core Domain Logic Implementation**:
```python
# Example demonstrating core domain logic separate from infrastructure
class Account:
def __init__(self, id, balance):
self.id = id
self.balance = balance
class AccountService:
def __init__(self, repository):
self.repository = repository
def create_account(self, id, initial_balance):
account = Account(id, initial_balance)
self.repository.save(account)
```
2. **Establishing Ports and Adapters**:
```python
# Defining an Adapter for external service interactions
class PaymentProcessor:
def process_payment(self, account_id, amount):
# Logic to process payment through an external API
print(f'Processing payment of {amount} for account {account_id}')
```
3. **Integration Example**:
```yaml
# Example showing integration with external services via adapters
payments:
url: http://payment-service/api
description: Service to handle payment processing
```
### Real-World Applications
- Discuss examples of how organizations like Netflix and Uber implement hexagonal architecture for scalability and maintainability.
- Provide insights into trade-offs between hexagonal architecture and other architectural styles such as layered architecture or microservices.
### Pattern 1: Central Domain Logic
```python
class Product:
def __init__(self, name, price):
self.name = name
self.price = price
class ProductService:
def add_product(self, product):
# Add logic for adding the product
pass
# Adapter example
class ExternalServiceAdapter:
def call_service(self):
# Logic to interact with an external service
pass
```
## Constraints
### MUST DO
- Ensure clear separations of concerns.
- Use automated tests to validate interactions.
### MUST NOT DO
- Allow direct dependencies from the domain to external services.
- Mix external framework concerns with core logic in the same layer.
No comments yet. Be the first to comment!