SuperAPI AI Directory

documentation-and-adrs

Writing & research

View repository

Updated 10-16 06:43

About this skill

Documentation and ADRs

Overview

Document architectural decisions, API contracts, and system behavior. Focus on the "why" rather than the "what" because code already tells you what happens. Documentation should explain why it was designed that way.

When to Use

  • Making architectural or design decisions
  • Changing public APIs or interfaces
  • Shipping features that affect other teams
  • Recording tradeoffs and their rationale

Documentation Types

Architecture Decision Records (ADRs)

Record significant architectural decisions:

  • Title: Short noun phrase describing the decision
  • Context: What is the technical or business situation
  • Decision: What was decided
  • Consequences: What results from this decision (positive and negative)
  • Status: Proposed / Accepted / Deprecated / Superseded

Save as: docs/decisions/{YYYY-MM-DD}-{title}.md

API Documentation

Document public APIs with:

  • Endpoint paths and methods
  • Request and response schemas
  • Error codes and recovery strategies
  • Authentication requirements
  • Rate limits and quotas
  • Versioning information

Inline Documentation

  • Document "why", not "what"
  • Explain non-obvious decisions and tradeoffs
  • Note gotchas and edge cases
  • Reference relevant ADRs, specs, or issues
  • Avoid restating what the code already expresses

README and Getting Started

Every project should have:

  • What it does (one paragraph)
  • How to install and run it
  • How to run tests
  • How to contribute
  • Where to find more documentation

Process

Step 1: Identify What Needs Documentation

  • New architectural decisions
  • Changed public interfaces
  • Non-obvious implementation choices
  • Onboarding friction points

Step 2: Choose the Right Format

  • Architectural decision -> ADR
  • API surface -> API documentation
  • Non-obvious code -> Inline comment
  • Project overview -> README

Step 3: Write for the Reader

  • Assume the reader knows the domain but not this specific system
  • Be concrete with examples
  • Keep it current or mark it as stale
  • Prefer short, focused documents over long comprehensive ones

Step 4: Review for Accuracy

  • Verify code examples still work
  • Check that referenced paths and commands are correct
  • Ensure the documentation matches the current implementation

Common Rationalizations

Rationalization Reality
"The code is self-documenting" Code tells you what. Documentation tells you why. Both are needed.
"Documentation goes stale immediately" Stale docs are a signal to update, not to stop documenting.
"I will document later" Later never comes. Document alongside the implementation.

Verification

  • Architectural decisions have corresponding ADRs
  • Public APIs are documented with examples
  • Inline comments explain "why" not "what"
  • README is current and actionable

Anti-Rationalization Table

Excuse Counter
"The code is self-documenting" Code tells you what. Documentation tells you why. Both are needed.
"Documentation goes stale immediately" Stale docs are a signal to update, not to stop documenting.
"I'll document later" Later never comes. Document alongside the implementation.
"ADRs are too formal for this decision" Even small decisions benefit from recorded rationale. Future you will thank present you.
"No one reads documentation" People read docs when they are stuck. Good docs prevent being stuck.