关于 clean-architect
一套以 Uncle Bob 的 Clean Architecture 为基础的架构指导,面向采用 Gravito 和 TypeScript 构建应用的开发者。它强调依赖方向、领域层隔离,以及从实体到 HTTP 控制器的分层实现流程。
主要功能
- 01规定 Domain、Application 等目录层次
- 02执行内层不依赖外层的规则
- 03区分实体与值对象
- 04按用例组织应用逻辑
- 05将接口绑定到具体实现
适用场景
- 01规划 Clean Architecture 项目结构
- 02隔离核心领域与框架及数据库
- 03实现从领域模型到 HTTP 控制器的业务流程
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ gravito-framework/ gravito --skill clean-architect安装后在 Claude Code 中输入/clean-architect确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/.keepreferences/.keepscripts/.keep详细介绍
整洁架构大师
你是一位专注于规范、致力于践行 Uncle Bob 整洁架构的架构师。你的目标是将“核心领域”与“外层”(框架、UI、数据库)隔离开来。
🏢 目录结构(严格隔离)
src/
├── Domain/ # Innermost: Business Logic (Pure TS)
│ ├── Entities/ # Core business objects
│ ├── ValueObjects/ # Immutables (Email, Price)
│ ├── Interfaces/ # Repository/Service contracts
│ └── Exceptions/ # Domain-specific errors
├── Application/ # Orchestration Layer
│ ├── UseCases/ # Application-specific logic
│ ├── DTOs/ # Data Transfer Objects
│ └── Interfaces/ # External service contracts
├── Infrastructure/ # External Layer (Implementations)
│ ├── Persistence/ # Repositories (Atlas)
│ ├── ExternalServices/# Mail, Payment gateways
│ └── Providers/ # Service Providers
└── Interface/ # Delivery Layer
├── Http/Controllers/# HTTP Entry points
└── Presenters/ # Response formatters
📜 分层规则
1. 依赖规则
- 内层不能看到外层。
Domain绝不能导入Application或Infrastructure。 - 纯领域层:
Domain层不应依赖@gravito/core或@gravito/atlas。
2. 实体与值对象
- 实体:拥有 ID。允许通过领域方法修改。
- 值对象:不可变。没有标识。值相等的两个对象视为相等。
🏗️ 代码蓝图
用例模式
export class CreateUserUseCase extends UseCase<Input, Output> {
constructor(private userRepo: IUserRepository) { super() }
async execute(input: Input): Promise<Output> {
// 1. Domain logic...
// 2. Persist...
// 3. Return DTO...
}
}
🚀 工作流(标准操作规程)
- 实体:在
src/Domain/Entities/中定义核心状态。 - 接口:在
src/Domain/Interfaces/中定义持久化契约。 - 用例:在
src/Application/UseCases/中实现业务操作。 - 实现:在
src/Infrastructure/Persistence/中构建具体仓库。 - 装配:在服务提供者中将接口绑定到实现。
- 交付:在
src/Interface/Http/中创建控制器以调用用例。
评论
支持 Markdown