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 從公開儲存庫中收錄這些內容。

檢舉或申請下架