agentleFS
steven123397steven123397/nexuskit-skills/skills/documentation-and-adrs/SKILL.md

documentation-and-adrs

Skill1 starsChanged 9 days agoMITView on GitHub

Records decisions and documentation. Use when you need to document an architecture decision (ADR) or the reasoning behind a design choice, when changing public APIs, shipping features, or when you need to record context that future engineers and agents will need to understand the codebase.

  • Reads credentials

68 other projects use a version of this, 54 of them edited.

Adopted by

Most recently taken up by

Used with

Projects with it also use minimalist-ui, web-design-guidelines and 3 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • AnasX7Skill

    minimalist-ui

    Clean editorial-style interfaces. Warm monochrome palette, typographic contrast, flat bento grids, muted pastels. No gradients, no heavy shadows.

    Also in 3 projects that use this

  • VercelSkill

    web-design-guidelines

    Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".

    Also in 4 projects that use this

  • MicrosoftSkill

    playwright-cli

    Automate browser interactions, test web pages and work with Playwright tests.

    Also in 3 projects that use this

  • MicrosoftSkill

    impeccable

    Use when the user wants to design, redesign, shape, critique, audit, polish, simplify, harden, animate, or otherwise improve a frontend interface: websites, landing pages, dashboards, product UI, components, forms, settings, onboarding, empty states, and native iOS or Android screens. Handles UX review, hierarchy, layout, typography, color, motion, UX copy, accessibility, responsive behavior, edge cases, and capturing or documenting design systems (DESIGN.md, tokens). Also for making bland UI bolder, loud UI quieter, or ambitious visual effects. Not for backend-only or non-UI tasks.

    Also in 3 projects that use this

  • OpenAISkill

    brainstorming

    You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.

    Also in 4 projects that use this

The file

Files
SKILL.md

Documentation and ADRs

概览

记录决策,而不只是记录代码。最有价值的文档会捕捉 why:促成某个决策的上下文、约束和权衡。代码展示构建了 what;文档解释 why it was built this way,以及 what alternatives were considered。这些上下文对未来在代码库中工作的工程师和 agent 都很重要。

何时使用

  • 做出重要架构决策
  • 在多个竞争方案之间做选择
  • 添加或变更公开 API
  • 发布会改变用户可见行为的功能
  • 让新的团队成员(或 agent)熟悉项目
  • 当你发现自己反复解释同一件事时

不应使用的情况: 不要记录显而易见的代码。不要添加只是复述代码本身的注释。不要为一次性原型编写文档。

Architecture Decision Records (ADRs,架构决策记录)

ADR 捕捉重大技术决策背后的推理。它们是你能写出的最高价值文档。

何时编写 ADR

  • 选择框架、库或主要依赖
  • 设计数据模型或数据库 schema
  • 选择认证策略
  • 决定 API 架构(REST vs. GraphQL vs. tRPC)
  • 在构建工具、托管平台或基础设施之间做选择
  • 任何逆转成本高的决策

优先匹配现有约定

在创建 ADR 之前,先检查可用的仓库上下文中是否已有既定约定——现有 ADR、项目指令,以及与 ADR 相关的配置或工具(例如 .adr-dir 文件)。既定约定优先于下面的默认设置。需要匹配:

  • 位置和格式 — 例如 docs/adr/*.md、Documentation/Decisions/*.rst、MADR 布局,或 adr-tools 配置。匹配现有目录、文件扩展名和标记语言(Markdown vs reStructuredText)。
  • 编号和命名 — 延续现有序列号和文件名模式(ADR-004-Title.rst、0004-title.md 等);不要从 001 重新开始,也不要引入第二套方案。
  • 章节标题 — 复用项目的标题集合,而不是强加本模板的标题。

如果现有证据彼此冲突,把冲突暴露出来,而不是悄悄再引入一套新方案。只有在完全无法确立约定时,才使用下面的默认模板。

ADR 模板

将 ADR 存放在 docs/decisions/,并使用连续编号(除非项目已使用其他位置——见上文):

# ADR-001: Use PostgreSQL for primary database

## Status
Proposed | Accepted | Superseded by ADR-XXX | Deprecated

## Date
2025-01-15

## Context
We need a primary database for the task management application. Key requirements:
- Relational data model (users, tasks, teams with relationships)
- ACID transactions for task state changes
- Support for full-text search on task content
- Managed hosting available (for small team, limited ops capacity)

## Decision
Use PostgreSQL with Prisma ORM.

## Alternatives Considered

### MongoDB
- Pros: Flexible schema, easy to start with
- Cons: Our data is inherently relational; would need to manage relationships manually
- Rejected: Relational data in a document store leads to complex joins or data duplication

### SQLite
- Pros: Zero configuration, embedded, fast for reads
- Cons: Limited concurrent write support, no managed hosting for production
- Rejected: Not suitable for multi-user web application in production

### MySQL
- Pros: Mature, widely supported
- Cons: PostgreSQL has better JSON support, full-text search, and ecosystem tooling
- Rejected: PostgreSQL is the better fit for our feature requirements

## Consequences
- Prisma provides type-safe database access and migration management
- We can use PostgreSQL's full-text search instead of adding Elasticsearch
- Team needs PostgreSQL knowledge (standard skill, low risk)
- Hosting on managed service (Supabase, Neon, or RDS)

ADR 生命周期

PROPOSED → ACCEPTED → (SUPERSEDED or DEPRECATED)
  • 不要删除旧 ADR。 它们捕捉历史上下文。
  • 当决策发生变化时,写一个新的 ADR,引用并取代旧 ADR。

行内文档

何时写注释

注释解释 why,而不是 what:

// BAD: Restates the code
// Increment counter by 1
counter += 1;

// GOOD: Explains non-obvious intent
// Rate limit uses a fixed window that opens on the first request after the
// previous one expires, not on a clock schedule. Known gap: a client can spend
// the full limit just before a reset and again just after (2x in a moment)
if (now - windowStart > WINDOW_SIZE_MS) {
  counter = 0;
  windowStart = now;
}

何时不要写注释

// Don't comment self-explanatory code
function calculateTotal(items: CartItem[]): number {
  return items.reduce((sum, item) => sum + item.price * item.quantity, 0);
}

// Don't leave TODO comments for things you should just do now
// TODO: add error handling  ← Just add it

// Don't leave commented-out code
// const oldImplementation = () => { ... }  ← Delete it, git has history

记录已知陷阱

/**
 * IMPORTANT: This function must be called before the first render.
 * If called after hydration, it causes a flash of unstyled content
 * because the theme context isn't available during SSR.
 *
 * See ADR-003 for the full design rationale.
 */
export function initializeTheme(theme: Theme): void {
  // ...
}

API 文档

对于公开 API(REST、GraphQL、库接口):

与类型一起内联记录(TypeScript 首选)

/**
 * Creates a new task.
 *
 * @param input - Task creation data (title required, description optional)
 * @returns The created task with server-generated ID and timestamps
 * @throws {ValidationError} If title is empty or exceeds 200 characters
 * @throws {AuthenticationError} If the user is not authenticated
 *
 * @example
 * const task = await createTask({ title: 'Buy groceries' });
 * console.log(task.id); // "task_abc123"
 */
export async function createTask(input: CreateTaskInput): Promise<Task> {
  // ...
}

REST API 使用 OpenAPI / Swagger

paths:
  /api/tasks:
    post:
      summary: Create a task
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTaskInput'
      responses:
        '201':
          description: Task created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
        '422':
          description: Validation error

README 结构

每个项目都应该有一份 README,覆盖:

# Project Name

One-paragraph description of what this project does.

## Quick Start
1. Clone the repo
2. Install dependencies: `npm install`
3. Set up environment: `cp .env.example .env`
4. Run the dev server: `npm run dev`

## Commands
| Command | Description |
|---------|-------------|
| `npm run dev` | Start development server |
| `npm test` | Run tests |
| `npm run build` | Production build |
| `npm run lint` | Run linter |

## Architecture
Brief overview of the project structure and key design decisions.
Link to ADRs for details.

## Contributing
How to contribute, coding standards, PR process.

Changelog 维护

对于已发布功能:

# Changelog

## [1.2.0] - 2025-01-20
### Added
- Task sharing: users can share tasks with team members (#123)
- Email notifications for task assignments (#124)

### Fixed
- Duplicate tasks appearing when rapidly clicking create button (#125)

### Changed
- Task list now loads 50 items per page (was 20) for better UX (#126)

面向 Agent 的文档

需要特别考虑 AI agent 的上下文:

  • CLAUDE.md / AGENTS.md 等项目规则文件 — 记录项目约定,让 agent 遵循它们
  • Spec files — 保持 spec 更新,让 agent 构建正确的东西
  • ADRs — 帮助 agent 理解过去决策的原因(避免重复决策)
  • Inline gotchas — 防止 agent 掉入已知陷阱

文字审阅

技术内容检查完之后,再为将来使用这份文档的人审阅文字。更清晰的措辞绝不能改变决策本身或其限制。

  1. 标出那些改动后必须存活下来的细节:名称、数字和单位、命令、路径、链接、条件、取舍,以及不确定之处。拿它们和可用的代码及决策上下文核对;凡是你无法证实的,都标记出来。
  2. 用读者真正需要的具体信息,替换掉套话式开头、宣传式形容词和重复的总结。不要用一个编造的示例或更强的保证,去替换一个没有支撑的说法。保留必要的技术性重复,以及项目既有的术语。
  3. 把改后的文档和原文及其来源做对比。恢复任何丢失的限定语或注意事项,验证命令和代码示例仍能按文档所述工作,并解释任何未解决的事实问题,而不是把它打磨掉。

常见合理化借口

合理化借口现实
“代码是自解释的”代码展示 what。它不展示 why、不展示哪些替代方案被拒绝,也不展示适用哪些约束。
“等 API 稳定后再写文档”当你记录 API 时,API 会更快稳定下来。文档是设计的第一道测试。
“没人读文档”Agent 会读。未来工程师会读。三个月后的你也会读。
“ADR 是额外负担”一份 10 分钟写完的 ADR,可以避免六个月后围绕同一决策进行 2 小时争论。
“注释会过时”关于 why 的注释是稳定的。关于 what 的注释会过时,所以只写前者。

危险信号

  • 架构决策没有书面理由
  • 公开 API 没有文档或类型
  • README 没有说明如何运行项目
  • 用注释掉的代码代替删除
  • TODO 注释已经存在数周
  • 有重大架构选择的项目中没有 ADR
  • 文档只是复述代码,而不是解释意图

验证

完成文档后:

  • 所有重大架构决策都有 ADR
  • README 覆盖 quick start、commands 和 architecture overview
  • API 函数有参数和返回类型文档
  • 已知陷阱在重要位置以内联方式记录
  • 没有保留注释掉的代码
  • 项目规则文件(CLAUDE.md / AGENTS.md 等)是最新且准确的
  • 文字改动保留了来源细节、决策取舍和限定语,且没有添加无支撑的保证

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.