AI 開發新標準介紹(AGENTS.md)- 提供 DDD 範本模板

AI 開發新標準介紹(AGENTS.md)- 提供 DDD 範本模板

OpenAI 提交給 AAIF(Agentic AI Foundation)的 AGENTS.md,用來作為統一的開源標準,開發者可以將其理解為「專門寫給 AI Agent 看的 README」。

什麼是 "AGENTS.md"?

以往使用 AI 開發工具(如 GitHub Copilot, Cursor)寫程式,AI 往往需要花時間「猜測」專案的架構、變數命名習慣或測試規範。

AGENTS.md 是一個標準化的 Markdown 文件,放置在專案的根目錄中。它的目的是主動告訴 AI Agent 關於這個專案的「開發規則」,讓 Agent 在生成程式碼時能更準確地符合團隊規範,而不需要每次都在 Prompt 裡重複說明。

  • 人類看: README.md
  • 網頁爬蟲看: robots.txt
  • AI Agent 看: AGENTS.md

如何使用 "AGENTS.md"?

使用方式非常簡單,只需在專案根目錄建立一個名為 AGENTS.md 的檔案,並填入 AI 需要知道的上下文(Context)。

使用它的好處

當配置了這個檔案後,支援該標準的 AI 工具(未來將包括 Claude Code, Cursor, GitHub Copilot, 以及各類基於 AAIF 標準的 Agent)在讀取專案時:

  • 減少幻覺:AI 不會再憑空捏造不存在的函式庫或錯誤的寫法。
  • 風格統一:AI 生成的程式碼會自動遵循你規定的命名與排版風格(例如嚴格依據 DDD 分層結構)。
  • 上下文理解:AI 能更快理解「什麼檔案該放在哪裡」,特別是在大型 Monorepo 中。
  • 跨工具通用:由於這是 AAIF 推動的標準,你不需要為 Cursor 寫一份規則,又為 Copilot 寫另一份,一個檔案通用所有 Agent。

一個基本的 AGENTS.md 內容大致涵蓋了「專案概述(Project Overview)」、「技術堆疊(Tech Stack)」、「架構與目錄結構(Architecture & Directory Structure)」、「編碼規範(Coding Conventions)」、「測試規範(Testing Protocols)」、「PR 指南(Pull Request Guidelines)」 等主要標題。

我個人也整理了一個關於 DDD (Domain-Driven Design) 專案的 AGENTS.md 範本,參考以下完整提示詞( 完整範本參考我的 Gist 鍊結 )。

# AGENTS.md
## Project Overview (專案概述)
這是一個採用 **Domain-Driven Design (DDD)** 分層架構的電子商務後端系統。
主要目標是構建高內聚、低耦合的企業級應用,提供商品檢索與結帳服務。
## Tech Stack (技術堆疊)
- **Framework**: .NET 8 SDK (ASP.NET Core Web API)
- **Language**: C# 12
- **Database**: SQL Server 17
- **ORM**: Entity Framework Core
- **Object Mapping**: AutoMapper
- **Validation**: FluentValidation
- **Testing**: NUnit, Moq
## Architecture & Directory Structure (架構與目錄結構)
本專案嚴格遵循 DDD 四層架構,依賴方向由外向內(Presentation -> Infrastructure -> Application -> Domain):
- `/src/Domain` (核心層 - 無依賴)
  - 包含 Entities, Value Objects, Aggregates, Domain Events, Repository Interfaces。
  - **禁止** 依賴任何外部庫或基礎設施。
- `/src/Application` (應用層)
  - 包含 DTOs, Services (Use Cases), Validators, Interface Implementations (非 DB)。
  - 負責協調 Domain Object 完成業務邏輯。
- `/src/Infrastructure` (基礎設施層)
  - 包含 EF Core DbContext, Repositories 實作, External API Clients。
  - 負責 MySQL 資料庫連接與第三方服務串接。
- `/src/API` (表現層)
  - 包含 Controllers, Middleware, Filters, Program.cs。
  - 僅負責接收 HTTP 請求並呼叫 Application Service,**不包含** 業務邏輯。
## Coding Conventions (編碼規範)
- **Naming**:
  - Class, Method, Property 使用 `PascalCase` (e.g., `ProductService`, `GetByIdAsync`).
  - Private Field 使用 `_camelCase` (e.g., `_repository`).
  - Local Variable 使用 `camelCase`.
  - Interface 必須以此 `I` 開頭 (e.g., `IProductRepository`).
- **Async**:
  - 所有 I/O 操作必須使用 `async/await`。
  - Method 名稱必須以 `Async` 結尾 (e.g., `SaveOrderAsync`).
- **Dependency Injection**:
  - 優先使用 Constructor Injection (建構子注入)。
- **Entity Guidelines**:
  - Entity 屬性應設為 `private set`,透過 Method 修改狀態 (封裝性)。
  - 避免在 Domain Entity 中使用 Data Annotations,應在 Infrastructure 使用 Fluent API 配置。
## Testing Protocols (測試規範)
- **Unit Tests**: 針對 Domain 與 Application 層邏輯進行單元測試 (使用 xUnit)。
- **Mocking**: 外部依賴 (如 Database, Email) 必須使用 Moq 進行模擬。
- **Commit Rule**: 提交代碼前請運行 `dotnet test` 確保所有測試通過。
## Pull Request Guidelines (PR 指南)
- PR 標題請遵循 Conventional Commits (e.g., `feat(order): implement checkout domain logic`).
- 必須確認沒有破壞 DDD 的依賴原則(例如 Domain 層不能引用 Infrastructure 層)。

留下第一條留言