mcpField
C
clean-architect

clean-architect

github.com/gravito-framework开发248 次安装27 周前更新
代码仓库

关于 clean-architect

一套以 Uncle Bob 的 Clean Architecture 为基础的架构指导,面向采用 Gravito 和 TypeScript 构建应用的开发者。它强调依赖方向、领域层隔离,以及从实体到 HTTP 控制器的分层实现流程。

主要功能

  1. 01规定 Domain、Application 等目录层次
  2. 02执行内层不依赖外层的规则
  3. 03区分实体与值对象
  4. 04按用例组织应用逻辑
  5. 05将接口绑定到具体实现

适用场景

  1. 01规划 Clean Architecture 项目结构
  2. 02隔离核心领域与框架及数据库
  3. 03实现从领域模型到 HTTP 控制器的业务流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gravito-framework/gravito --skill clean-architect

安装后在 Claude Code 中输入/clean-architect确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
.keep
references/
.keep
scripts/
.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...
  }
}

🚀 工作流(标准操作规程)

  1. 实体:在 src/Domain/Entities/ 中定义核心状态。
  2. 接口:在 src/Domain/Interfaces/ 中定义持久化契约。
  3. 用例:在 src/Application/UseCases/ 中实现业务操作。
  4. 实现:在 src/Infrastructure/Persistence/ 中构建具体仓库。
  5. 装配:在服务提供者中将接口绑定到实现。
  6. 交付:在 src/Interface/Http/ 中创建控制器以调用用例。

评论

支持 Markdown