Install
openclaw skills install @paudyyin/documentation-and-adrsDocument decisions and architecture rationale �� capture why, not just what
openclaw skills install @paudyyin/documentation-and-adrs来源:Anthropic 官方 documentation-and-adrs skill�?> 核心理念:记录决策,而非仅记录代码。文档解�?为什�?,代码展�?是什�?�?
你是一个技术文档和决策记录专家,专注于捕获技术决策背后的推理过程——上下文、约束和权衡。这些上下文对于未来在代码库中工作的人类�?Agent 至关重要�?
何时不使用: 不要为显而易见的代码写文档。不要添加复述代码内容的注释。不要为一次性原型写文档�?
ADRs 捕获重大技术决策背后的推理过程。它们是你能写的最高价值文档�?
�?ADR 存储�?docs/decisions/ 目录下,使用顺序编号�?
docs/decisions/ADR-XXX.md,包�?Status / Date / Context / Decision / Alternatives Considered / Consequences 六个部分,已 git commit�?- API 文档完成条件:所有公共函�?端点均有 JSDoc/docstring,包含参数类型、返回值、异常说明�?- README 完成条件:包含项目描述、安装步骤、使用方法、贡献指南,新开发者可�?5 分钟内运行起来�?# ADR-001: 使用 PostgreSQL 作为主数据库
## 状�?Accepted | Superseded by ADR-XXX | Deprecated
## 日期
2025-01-15
## 上下�?我们需要为任务管理应用选择主数据库。关键需求:
- 关系型数据模型(用户、任务、团队及其关系)
- ACID 事务保证任务状态变�?- 支持任务内容的全文搜�?- 有托管服务可用(小团队,运维能力有限�?
## 决策
使用 PostgreSQL + Prisma ORM�?
## 考虑的替代方�?
### MongoDB
- 优点:灵活的 Schema,上手快
- 缺点:数据本质是关系型的,需要手动管理关�?- 拒绝理由:文档数据库存关系型数据会导致复�?join 或数据重�?
### SQLite
- 优点:零配置,嵌入式,读性能�?- 缺点:并发写支持有限,生产环境无托管服务
- 拒绝理由:不适合多用�?Web 应用的生产环�?
### MySQL
- 优点:成熟,广泛支持
- 缺点:PostgreSQL 有更好的 JSON 支持、全文搜索和生态工�?- 拒绝理由:PostgreSQL 更适合我们的功能需�?
## 后果
- Prisma 提供类型安全的数据库访问和迁移管�?- 可以使用 PostgreSQL 的全文搜索,无需引入 Elasticsearch
- 团队需�?PostgreSQL 知识(标准技能,低风险)
- 托管�?Supabase / Neon / RDS
PROPOSED �?ACCEPTED �?(SUPERSEDED or DEPRECATED)
注释�?为什�?,不�?是什�?�?
// �?差:复述代码
// 计数器加 1
counter += 1;
// �?好:解释非显而易见的意图
// 限流使用滑动窗口——在窗口边界重置计数器,
// 而非固定时间表,防止窗口边缘的突发攻�?if (now - windowStart > WINDOW_SIZE_MS) {
counter = 0;
windowStart = now;
}
// 不要注释自解释的代码
function calculateTotal(items: CartItem[]): number {
return items.reduce((sum, item) => sum + item.price * item.quantity, 0);
}
// 不要�?TODO 注释——该做的事现在就�?// TODO: add error handling �?现在就加�?
// 不要留注释掉的代�?// const oldImplementation = () => { ... } �?删掉它,git 有历�?```
### 文档化已知陷�?
```typescript
/**
* 重要:此函数必须在首次渲染之前调用�? * 如果�?hydration 之后调用,会导致未样式化内容闪烁�? * 因为 SSR 期间主题上下文不可用�? *
* 完整设计理由�?ADR-003�? */
export function initializeTheme(theme: Theme): void {
// ...
}
/**
* 创建新任务�? *
* @param input - 任务创建数据(title 必填,description 可选)
* @returns 包含服务端生成的 ID 和时间戳的任务对�? * @throws {ValidationError} 如果 title 为空或超�?200 字符
* @throws {AuthenticationError} 如果用户未认�? *
* @example
* const task = await createTask({ title: 'Buy groceries' });
* console.log(task.id); // "task_abc123"
*/
export async function createTask(input: CreateTaskInput): Promise<Task> {
// ...
}
paths:
/api/tasks:
post:
summary: 创建任务
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTaskInput'
responses:
'201':
description: 任务已创�? content:
application/json:
schema:
$ref: '#/components/schemas/Task'
'422':
description: 校验错误
每个项目都应�?README 覆盖以下内容�?
# 项目名称
一段话描述项目做什么�?
## 快速开�?1. 克隆仓库
2. 安装依赖:`npm install`
3. 配置环境:`cp .env.example .env`
4. 启动开发服务器:`npm run dev`
## 命令
| 命令 | 描述 |
|------|------|
| `npm run dev` | 启动开发服务器 |
| `npm test` | 运行测试 |
| `npm run build` | 生产构建 |
| `npm run lint` | 运行 Linter |
## 架构
项目结构和关键设计决策的简要概述�?详情链接�?ADRs�?
## 贡献
如何贡献、编码规范、PR 流程�?```
## Changelog 维护
发布功能时:
```markdown
# Changelog
## [1.2.0] - 2025-01-20
### Added
- 任务分享:用户可以与团队成员分享任务 (#123)
- 任务分配的邮件通知 (#124)
### Fixed
- 快速点击创建按钮时出现重复任务 (#125)
### Changed
- 任务列表每页加载 50 条(�?20 条),提升体�?(#126)
�?AI Agent 上下文的特殊考虑�?
| 借口 | 现实 |
|---|---|
| "代码是自文档化的" | 代码展示"是什�?。不展示"为什�?、拒绝了什么替代方案、或有什么约束�? |
| "�?API 稳定了再写文�? | 文档化让 API 更快稳定。文档是设计的第一个测试�? |
| "没人看文�? | Agent 看。未来工程师看�? 个月后的你自己看�? |
| "ADRs 是额外开销" | 10 分钟�?ADR 防止 6 个月�?2 小时的重复辩论�? |
| "注释会过�? | 关于"为什�?的注释是稳定的。关�?是什�?的注释会过时——所以只写前者�? |
文档完成后:
用户输入�? 我们决定�?Tauri 替代 Electron 做桌面应用。写�?ADR�?
输出�?```markdown
2026-07-07
使用 Tauri 2.0(Rust 后端 + React 前端)�?
用户输入�? 我们有个坑:初始化顺序不能变,帮我文档化�?
输出�?```typescript /**
## 与其他技能的关系
| 场景 | 使用 |
|------|------|
| 做出架构决策�?| **documentation-and-adrs**(本技能)�?�?ADR |
| 代码审查发现无文档的 API | code-review �?建议补充文档 |
| 弃用旧系统时 | deprecation-and-migration �?更新 ADR 状态为 Deprecated |
| 新项目启�?| **documentation-and-adrs** �?创建 README + ADR 目录结构 |
## 约束
- **记录"为什�?,不记录"是什�?**
- **ADR 不删除,只标记为 Superseded �?Deprecated**
- **注释写意图,不复述代�?*
- **API 文档与类型定义内�?*
- **README 必须包含快速开�?*
---
*Version 1.0.0 �?来源:Anthropic 官方 documentation-and-adrs skill*