ddd-cola
$
npx mdskill add partme-ai/full-stack-skills/ddd-colaGuides developers in implementing COLA architecture for layered application structure and domain-driven design.
- Helps structure projects using COLA's adapter, application, domain, and infrastructure layers.
- Integrates with Java and Spring Boot projects following COLA V5 conventions.
- Decides recommendations based on user queries about COLA patterns and implementation needs.
- Presents results as step-by-step guidance on layer responsibilities and package setup.
SKILL.md
.github/skills/ddd-colaView on GitHub ↗
---
name: ddd-cola
description: "Provides comprehensive guidance for COLA architecture including adapter layer, application layer, domain layer, and infrastructure layer. Use when the user asks about COLA, needs to implement COLA architecture, structure applications with COLA, or work with COLA patterns."
license: Complete terms in LICENSE.txt
---
## When to use this skill
Use this skill whenever the user wants to:
- Structure a project using COLA architecture (Adapter, Application, Domain, Infrastructure)
- Apply COLA's layered architecture with clear responsibilities per layer
- Implement domain-driven design with COLA while keeping the domain layer pure and dependency-inverted
- Organize Java/Spring Boot projects following COLA V5 conventions
## How to use this skill
### Workflow
1. **Understand the layer responsibilities**: Adapter handles I/O; Application orchestrates use cases; Domain holds business logic; Infrastructure implements persistence and external services
2. **Set up the package structure** following COLA conventions
3. **Enforce dependency direction**: Domain depends on nothing; Application depends on Domain; Adapter and Infrastructure depend on Application and Domain
4. **Define ports in Domain or Application**, implement them in Infrastructure
### Layer Structure
```
com.example.app/
├── adapter/
│ ├── controller/ # HTTP/RPC/message inbound handlers
│ └── scheduler/ # Scheduled tasks
├── app/
│ ├── executor/ # Use case executors (command handlers)
│ └── service/ # Application services (orchestration, transactions)
├── domain/
│ ├── model/ # Entities, Value Objects, Aggregates
│ │ ├── entity/
│ │ └── valueobject/
│ ├── service/ # Domain services
│ └── gateway/ # Repository and external service interfaces (ports)
└── infrastructure/
├── persistence/ # Repository implementations (JPA, MyBatis)
├── external/ # External API clients
└── config/ # Spring configuration and bean wiring
```
### Dependency Direction
```
Adapter → Application → Domain ← Infrastructure
```
### Example: Use Case Executor
```java
// Domain gateway (port)
public interface OrderGateway {
void save(Order order);
Optional<Order> findById(String id);
}
// Application executor
@Component
public class CreateOrderExecutor {
private final OrderGateway orderGateway;
public CreateOrderExecutor(OrderGateway orderGateway) {
this.orderGateway = orderGateway;
}
@Transactional
public OrderDto execute(CreateOrderCmd cmd) {
Order order = Order.create(cmd.getItems(), cmd.getCustomerId());
orderGateway.save(order);
return OrderDto.from(order);
}
}
// Infrastructure implementation
@Repository
public class OrderGatewayImpl implements OrderGateway {
private final OrderMapper orderMapper;
@Override
public void save(Order order) {
orderMapper.insert(OrderDO.fromDomain(order));
}
}
```
## Best Practices
- Domain logic belongs exclusively in the Domain layer; Application layer only orchestrates and manages transaction boundaries
- Define ports (interfaces) in Domain or Application; Infrastructure implements them
- Avoid business logic in the Adapter layer; DTOs and domain objects are converted at the boundary
- Follow COLA naming conventions: `Cmd` for commands, `Executor` for handlers, `Gateway` for ports
## Resources
- COLA GitHub: https://github.com/alibaba/COLA
- COLA architecture guide: https://blog.csdn.net/significantfrank/article/details/110934799
## Keywords
cola, cola architecture, clean object-oriented layered architecture, COLA V5, adapter layer, application layer, domain layer, infrastructure layer, DDD, dependency inversion
More from partme-ai/full-stack-skills
- adobe-xd"Guides creation of UI/UX designs, interactive prototypes, reusable components, and design specs in Adobe XD. Use when the user asks about Adobe XD artboards, prototype links, repeat grids, component states, design tokens export, or developer handoff."
- angular"Provides comprehensive guidance for Angular framework including components, modules, services, dependency injection, routing, forms, and TypeScript integration. Use when the user asks about Angular, needs to create Angular applications, implement Angular components, or work with Angular features."
- ansible"Provides comprehensive guidance for Ansible automation including playbooks, roles, inventory, and module usage. Use when the user asks about Ansible, needs to automate IT tasks, create Ansible playbooks, or manage infrastructure with Ansible."
- ant-design-mini"Builds mini-program UIs with Ant Design Mini components for Alipay and WeChat mini-programs. Covers Button, Form, List, Modal, Tabs, NavBar, and 60+ components with theme customization and CSS variable theming. Use when the user needs to create mini-program interfaces with Ant Design Mini, configure themes, or implement mini-program-specific UI patterns."
- ant-design-mobile"Builds React mobile UIs with Ant Design Mobile (antd-mobile) components including Button, Form, List, Modal, Picker, Tabs, PullToRefresh, InfiniteScroll, and 50+ mobile-optimized components. Use when the user needs to create mobile-first React interfaces, implement mobile navigation, forms, or data display with Ant Design Mobile."
- ant-design-react"Builds enterprise React UIs with Ant Design (antd) including 60+ components (Button, Form, Table, Select, Modal, Message), design tokens, TypeScript support, and ConfigProvider theming. Use when the user needs to create React applications with Ant Design, build forms with validation, display data tables, or customize the Ant Design theme."
- ant-design-vueProvides comprehensive guidance for Ant Design Vue (AntDV) component library for Vue 3. Covers installation, usage, API reference, templates, and all component categories. Use when building enterprise-class UI with Vue 3 and Ant Design.
- api-doc-generator"Generate API documentation by scanning Controller classes, extracting endpoint URLs, HTTP methods, parameters, and response structures, then producing standardized docs from templates. Use when the user explicitly mentions generating API documentation, creating API docs, scanning interfaces, or documenting REST APIs. Do not trigger for generic documentation requests without explicit API mention."
- appium"Provides comprehensive guidance for Appium mobile testing including mobile app automation, element location, gestures, and cross-platform testing. Use when the user asks about Appium, needs to test mobile applications, automate mobile apps, or write Appium test scripts."
- ascii-ansi-colorizer"Add an ANSI color layer to existing ASCII/plain-text output (gradient/rainbow/highlights) with alignment-safe rules and a required no-color fallback. Use when the user wants to colorize terminal output, add rainbow effects to CLI text, or style ASCII art with ANSI colors."