Skip to content
Back to skills

Hexagonal Architecture

ASecurity

Use when design, implement, and refactor Ports & Adapters systems with clear domain boundaries, dependency inversion, and testable use-case orchestration across TypeScript, Java, Kotlin, and Go services. Triggers on \"hexagonal-architecture\", \"hexagonal architecture\", \"architecture\".

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 19, 2026
ai-agentstypescriptgojavakotlintestingrefactoringapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 19, 2026

npx -y skills add majinmagros/magros.ai-skills --skill hexagonal-architecture --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Hexagonal Architecture?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Hexagonal Architecture
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majinmagros-hexagonal-architecture/badge)](https://www.skillsdirectory.com/skills/majinmagros-hexagonal-architecture)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: hexagonal-architecture
description: "Use when design, implement, and refactor Ports & Adapters systems with clear domain boundaries, dependency inversion, and testable use-case orchestration across TypeScript, Java, Kotlin, and Go services. Triggers on \"hexagonal-architecture\", \"hexagonal architecture\", \"architecture\"."
metadata:
  origin: ECC
---

# Hexagonal Architecture

Ports and Adapters: business logic independent from frameworks, transport, and persistence. Detalhes em `references/`.

## When to Use

- Building new features where long-term maintainability and testability matter
- Refactoring layered or framework-heavy code with domain logic mixed into I/O
- Supporting multiple interfaces for one use case (HTTP, CLI, queue, cron)
- Replacing infrastructure (DB, APIs, bus) without rewriting business rules
- Requests involving boundaries, decoupling, or domain-centric design

## Core Principles

1. **Dependencies point inward** — adapters → application/domain; domain → nothing
2. **Ports model capabilities** — `OrderRepositoryPort`, not `PostgresClient`
3. **Use cases orchestrate only** — mapping stays in adapters at the edge
4. **One composition root** — centralized wiring, no hidden service locators
5. **Migrate slice-by-slice** — strangler + characterization tests, never big-bang

## Example

```typescript
export class CreateOrderUseCase {
  constructor(
    private readonly orders: OrderRepositoryPort,
    private readonly payments: PaymentGatewayPort,
  ) {}
  async execute(input: CreateOrderInput): Promise<CreateOrderOutput> {
    const order = Order.create(input);
    const auth = await this.payments.authorize(order);
    await this.orders.save(order.markAuthorized(auth.authorizationId));
    return { orderId: order.id, authorizationId: auth.authorizationId };
  }
}
```

## References

- `references/boundaries.md` — concepts, dependency direction, 6 steps, diagram, module layout
- `references/typescript-example.md` — ports, use case, outbound adapter, composition root
- `references/multilang-migration.md` — TS/Java/Kotlin/Go mapping, anti-patterns, migration, testing, practices

## Checklist

- [ ] Domain imports nothing external; use cases take ports via constructor
- [ ] Every side effect behind an outbound port; mapping in adapters
- [ ] Explicit composition root, auditable in one place
- [ ] Use cases unit-tested with fakes; adapters integration-tested
- [ ] Refactor started from one high-churn, low-blast-radius slice

Files in this skill

  • SKILL.md2.5 KB
  • references/boundaries.md3.4 KB
  • references/multilang-migration.md4.6 KB
  • references/typescript-example.md2.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…