
ddd-hexagonal-architecture
Provides comprehensive guidance for hexagonal architecture including ports and adapters, domain isolation, and dependency inversion. Use when the user asks about hexagonal architecture, needs to implement ports and adapters pattern, or structure applications with hexagonal architecture.
- Installs
- 132
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/partme-ai/full-stack-skills --skill ddd-hexagonal-architecture- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads ddd-hexagonal-architecture automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
When to use this skill
Use this skill whenever the user wants to:
- Design applications using the hexagonal (ports and adapters) architecture
- Isolate the domain layer from external systems (databases, APIs, messaging)
- Implement dependency inversion so the domain defines interfaces and adapters implement them
- Draw or implement hexagonal architecture diagrams and layering
- Test the domain in isolation using in-memory or mock adapters
How to use this skill
Workflow
- Define the domain model with entities, value objects, and domain services
- Define ports (interfaces) in the domain layer for all external interactions
- Implement adapters that fulfill those port contracts (inbound: HTTP, messaging; outbound: DB, APIs)
- Wire dependencies so all arrows point inward toward the domain
1. Port Definition (Domain Layer)
// Domain port — no framework dependencies
public interface UserRepository {
Optional<User> findById(UserId id);
void save(User user);
}
public interface EventPublisher {
void publish(DomainEvent event);
}
2. Inbound Adapter (HTTP Controller)
@RestController
@RequestMapping("/api/users")
public class UserController {
private final CreateUserUseCase createUserUseCase;
public UserController(CreateUserUseCase createUserUseCase) {
this.createUserUseCase = createUserUseCase;
}
@PostMapping
public ResponseEntity<UserDto> create(@RequestBody CreateUserRequest request) {
User user = createUserUseCase.execute(request.toCommand());
return ResponseEntity.ok(UserDto.from(user));
}
}
3. Outbound Adapter (Database)
@Repository
public class JpaUserRepository implements UserRepository {
private final SpringDataUserRepository springRepo;
@Override
public Optional<User> findById(UserId id) {
return springRepo.findById(id.value()).map(UserEntity::toDomain);
}
@Override
public void save(User user) {
springRepo.save(UserEntity.fromDomain(user));
}
}
4. Package Structure
com.example.app/
├── domain/
│ ├── model/ # Entities, Value Objects
│ ├── port/ # Repository and service interfaces
│ └── service/ # Domain services
├── application/
│ └── usecase/ # Use cases orchestrating domain logic
├── adapter/
│ ├── inbound/ # HTTP controllers, message consumers
│ └── outbound/ # Database, HTTP clients, message publishers
└── config/ # Dependency injection wiring
Best Practices
- The domain layer must have zero framework dependencies; it should be testable with in-memory or mock adapters
- One port can have multiple adapters (e.g., different storage backends, different transports)
- Combine with COLA or Clean Architecture: the hexagon is essentially "one domain layer + many adapters"
- Keep DTOs at the adapter boundary; the domain never exposes persistence or transport models
Resources
- Original article by Alistair Cockburn: https://alistair.cockburn.us/hexagonal-architecture/
- DDD and hexagonal architecture: https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/
Keywords
hexagonal architecture, ports and adapters, domain isolation, dependency inversion, inbound adapter, outbound adapter, clean boundaries, DDD
FAQ
What does the ddd-hexagonal-architecture skill do?
Provides comprehensive guidance for hexagonal architecture including ports and adapters, domain isolation, and dependency inversion. Use when the user asks about hexagonal architecture, needs to implement ports and adapters pattern, or structure applications with hexagonal architecture.
How do I install ddd-hexagonal-architecture?
Run npx skills add https://github.com/partme-ai/full-stack-skills --skill ddd-hexagonal-architecture in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/ddd-hexagonal-architecture/ (personal) or .claude/skills/ddd-hexagonal-architecture/ (project).
Which AI agents can use ddd-hexagonal-architecture?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is ddd-hexagonal-architecture safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains ddd-hexagonal-architecture?
It is published by partme-ai in partme-ai/full-stack-skills. It has 132 recorded installs.
More from partme-ai/full-stack-skills
electron
partme-ai/full-stack-skills
Build cross-platform desktop applications with Electron, covering main/renderer process architecture, IPC communication, BrowserWindow management, menus, tray icons, packaging, and security best practices. Use when the user asks about Electron, needs to create desktop applications, implement Electron features, or build cross-platform desktop apps.
element-plus-vue3
partme-ai/full-stack-skills
Provides comprehensive guidance for Element Plus Vue 3 component library including installation, components, themes, internationalization, and API reference. Use when the user asks about Element Plus for Vue 3, needs to build Vue 3 applications with Element Plus, or customize component styles.
uniapp-project
partme-ai/full-stack-skills
Provides per-component and per-API examples with cross-platform compatibility details for uni-app, covering built-in components, uni-ui components, and APIs (network, storage, device, UI, navigation, media). Use when the user needs official uni-app components or APIs, wants per-component examples with doc links, or needs platform compatibility checks.
drawio-flowchart
partme-ai/full-stack-skills
Creates flowcharts, swim lane diagrams, and business process diagrams using Draw.io (diagrams.net). Covers standard flowchart shapes (process, decision, start/end), connectors, auto-layout, and export to PNG/SVG/PDF. Use when the user needs to visualize workflows, decision trees, or business processes.
vue3
partme-ai/full-stack-skills
Guidance for Vue 3 using the official guide and API reference. Use when the user needs Vue 3 concepts, patterns, or API details to build components, apps, and tooling.
course-designer
partme-ai/full-stack-skills
Open the skill to read its SKILL.md instructions.
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.