Code Documentation

MoizIbnYousaf/ai-agent-skills/skills/code-documentation

作者 MoizIbnYousaf6d95c788aa22ce39a4807b9a4c31c758a2036dc6MIT收录于 2026年10月9日更新于 2026年10月9日

Writing effective code documentation - API docs, README files, inline comments, and technical guides. Use for documenting codebases, APIs, or writing developer guides.

AI 生成的概览

指导编写代码文档:README、API 参考、行内注释和架构记录。

功能
提供编写软件文档的模板与规范:标准 README 结构、JSDoc/TSDoc 与 OpenAPI/Swagger 风格的 API 文档、关于何时写或不写行内注释的指引,以及 ADR 和组件概览等架构文档格式。还列出文档编写原则,涵盖受众、与代码的距离、时效性、示例和渐进式披露。产出的是文档编写指导,而非生成的文件。
适用场景
适用于为代码库、API 或开发者指南编写文档,或为 README、注释和架构记录制定规范。适合需要统一项目文档结构的开发者和技术写作者。
运行要求
无需任何工具、软件包、运行时、凭据或网络访问;仅为说明性内容,不附带脚本。

Code Documentation

README Structure

Standard README Template

markdown
# Project Name
Brief description of what this project does.
## Quick Start
\`\`\`bashnpm installnpm run dev\`\`\`
## Installation
Detailed installation instructions...
## Usage
\`\`\`typescriptimport { something } from 'project';
// Example usageconst result = something.doThing();\`\`\`
## API Reference
### `functionName(param: Type): ReturnType`
Description of what the function does.
**Parameters:**- `param` - Description of parameter
**Returns:** Description of return value
**Example:**\`\`\`typescriptconst result = functionName('value');\`\`\`
## Configuration
| Option | Type | Default | Description ||--------|------|---------|-------------|| `option1` | `string` | `'default'` | What it does |
## Contributing
How to contribute...
## License
MIT

API Documentation

JSDoc/TSDoc Style

typescript
/** * Creates a new user account. * * @param userData - The user data for account creation * @param options - Optional configuration * @returns The created user object * @throws {ValidationError} If email is invalid * @example * ```ts * const user = await createUser({ *   email: '[email protected]', *   name: 'John' * }); * ``` */async function createUser(  userData: UserInput,  options?: CreateOptions): Promise<User> {  // Implementation}
/** * Configuration options for the API client. */interface ClientConfig {  /** The API base URL */  baseUrl: string;  /** Request timeout in milliseconds @default 5000 */  timeout?: number;  /** Custom headers to include in requests */  headers?: Record<string, string>;}

OpenAPI/Swagger

yaml
openapi: 3.0.0info:  title: My API  version: 1.0.0
paths:  /users:    post:      summary: Create a user      description: Creates a new user account      requestBody:        required: true        content:          application/json:            schema:              $ref: '#/components/schemas/UserInput'      responses:        '201':          description: User created successfully          content:            application/json:              schema:                $ref: '#/components/schemas/User'        '400':          description: Invalid input
components:  schemas:    UserInput:      type: object      required:        - email        - name      properties:        email:          type: string          format: email        name:          type: string    User:      type: object      properties:        id:          type: string        email:          type: string        name:          type: string        createdAt:          type: string          format: date-time

Inline Comments

When to Comment

typescript
// GOOD: Explain WHY, not WHAT
// Use binary search because the list is always sorted and// can contain millions of items - O(log n) vs O(n)const index = binarySearch(items, target);
// GOOD: Explain complex business logic// Users get 20% discount if they've been members for 2+ years// AND have made 10+ purchases (per marketing team decision Q4 2024)if (user.memberYears >= 2 && user.purchaseCount >= 10) {  applyDiscount(0.2);}
// GOOD: Document workarounds// HACK: Safari doesn't support this API, fallback to polling// TODO: Remove when Safari adds support (tracking: webkit.org/b/12345)if (!window.IntersectionObserver) {  startPolling();}

When NOT to Comment

typescript
// BAD: Stating the obvious// Increment counter by 1counter++;
// BAD: Explaining clear code// Check if user is adminif (user.role === 'admin') { ... }
// BAD: Outdated comments (worse than no comment)// Returns the user's full name  <-- Actually returns email now!function getUserIdentifier(user) {  return user.email;}

Architecture Documentation

ADR (Architecture Decision Record)

markdown
# ADR-001: Use PostgreSQL for Primary Database
## StatusAccepted
## ContextWe need a database for storing user data and transactions.Options considered: PostgreSQL, MySQL, MongoDB, DynamoDB.
## DecisionUse PostgreSQL with Supabase hosting.
## Rationale- Strong ACID compliance needed for financial data- Team has PostgreSQL experience- Supabase provides auth and realtime features- pgvector extension for future AI features
## Consequences- Need to manage schema migrations- May need read replicas for scale- Team needs to learn Supabase-specific features

Component Documentation

markdown
## Authentication Module
### OverviewHandles user authentication using JWT tokens with refresh rotation.
### Flow1. User submits credentials to `/auth/login`2. Server validates and returns access + refresh tokens3. Access token used for API requests (15min expiry)4. Refresh token used to get new access token (7d expiry)
### Dependencies- `jsonwebtoken` - Token generation/validation- `bcrypt` - Password hashing- `redis` - Refresh token storage
### Configuration- `JWT_SECRET` - Secret for signing tokens- `ACCESS_TOKEN_EXPIRY` - Access token lifetime- `REFRESH_TOKEN_EXPIRY` - Refresh token lifetime

Documentation Principles

  1. Write for your audience - New devs vs API consumers
  2. Keep it close to code - Docs in same repo, near relevant code
  3. Update with code - Stale docs are worse than none
  4. Examples over explanations - Show, don't just tell
  5. Progressive disclosure - Quick start first, details later

来源与署名

来源:MoizIbnYousaf/ai-agent-skills位于skills/code-documentation提交6d95c78

许可证: MIT

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架