
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 層)。