agentleFS
GuillemRocaGuillemRoca/agent-skills-android/skills/documentation-and-adrs/SKILL.md

documentation-and-adrs

Skill2 starsChanged 40 days agoMITView on GitHub

Use when making architectural trade-offs, changing public APIs, shipping user-facing features, or onboarding developers. Guides writing ADRs, inline documentation, and API docs.

68 other projects use a version of this.

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

We split this skill into the rules it gives an agent

4 rules. 0 are common, 3 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 62 edited versions we read keep these.

  • 3

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Document the *why* behind decisions, not just the code.

    line 13
  2. Distinctive:

    After a post-mortem or incident that changed the architecture

    line 21
  3. Very specific:

    Match the existing convention first: Before creating an ADR, look for one already in the repo — existing ADRs, rules in …

    line 29
  4. Distinctive:

    If the evidence conflicts, surface the conflict instead of silently adding another scheme.

    line 34

“Common” is measured: kept by at least 6 in 10 of the 62 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Documentation and ADRs

Overview

Document the why behind decisions, not just the code. Architecture Decision Records (ADRs) capture the context, alternatives, and consequences of significant decisions so future developers understand why the system is shaped the way it is.

When to Use

  • Making an architectural trade-off (e.g., Room vs DataStore, Compose vs XML)
  • Changing a public API or module boundary
  • Shipping a user-facing feature with non-obvious implementation choices
  • Onboarding new developers to the project
  • After a post-mortem or incident that changed the architecture

Skip when: The change is self-explanatory from the code and commit message.

Core Process

Architecture Decision Records (ADRs)

  1. Match the existing convention first. Before creating an ADR, look for one already in the repo — existing ADRs, rules in AGENTS.md/CLAUDE.md, ADR tooling such as an .adr-dir file. An established convention overrides the defaults below:

    • Location and format — e.g. docs/adr/, docs/architecture/decisions/, a MADR layout, an adr-tools setup. Match the directory, extension, and markup.
    • Numbering and naming — continue the existing sequence and filename pattern; don't restart at 0001 or introduce a second scheme.
    • Section headings — reuse the project's heading set rather than imposing this template's.

    If the evidence conflicts, surface the conflict instead of silently adding another scheme.

  2. With no convention, ADRs live in docs/decisions/ with sequential numbering:
    docs/decisions/
    ├── 0001-use-compose-over-xml.md
    ├── 0002-adopt-mvi-for-complex-screens.md
    ├── 0003-room-migration-strategy.md
    └── 0004-modularization-approach.md
  3. ADR template: (new ADRs start at Proposed; move to Accepted once agreed)
# ADR-NNNN: Title

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

## Context
What is the issue or decision we're facing? What forces are at play?

## Decision
What did we decide to do?

## Alternatives Considered
### Alternative A: [Name]
- Pros: ...
- Cons: ...

### Alternative B: [Name]
- Pros: ...
- Cons: ...

## Consequences
### Positive
- ...

### Negative
- ...

### Risks
- ...
  1. Never delete old ADRs — supersede them with new ones that reference the old decision:
    ## Status
    Superseded by [ADR-0007](0007-switch-to-kmp.md)

Inline Documentation

  1. Document intent, not mechanics:
// BAD: increments counter by one
counter++

// GOOD: Rate-limit API calls to avoid 429 responses from the backend.
// The backend enforces a 10-request-per-second limit per client.
if (requestCount >= MAX_REQUESTS_PER_SECOND) {
    delay(rateLimitWindow)
}
  1. When to add inline comments:
    • Non-obvious business logic
    • Platform workarounds (// Workaround for API 28 camera permission bug)
    • Performance-critical code paths
    • Regex patterns or complex algorithms
  2. When NOT to add comments:
    • Code that reads clearly (self-documenting)
    • Commented-out code (delete it — git has history)
    • "TODO" without an issue reference (create the issue)

API Documentation

  1. Public APIs get KDoc:
/**
 * Fetches the user's profile from the remote API, falling back to
 * the local cache if the network is unavailable.
 *
 * @param userId The unique identifier of the user.
 * @return The user profile, or `null` if not found in cache or remote.
 * @throws NetworkException if the request fails and no cache exists.
 */
suspend fun getUserProfile(userId: String): UserProfile?
  1. Document module boundaries — each module's README.md should describe:
    • Purpose of the module
    • Public API surface
    • Dependencies (what it depends on, what depends on it)

Common Rationalizations

ShortcutWhy It Fails
"The code is self-documenting"Code shows what, not why. Trade-offs and constraints aren't in the code.
"We'll document later"You won't. Context fades. Document decisions when you make them.
"ADRs are bureaucratic overhead"A 10-minute ADR prevents hours of "why did we do it this way?" conversations.
"Everyone knows why we chose this"Everyone who was in the room. New hires, future maintainers, and your future self don't.

Red Flags

  • Architectural decisions without ADRs
  • Inline comments explain what instead of why
  • Commented-out code blocks
  • TODOs without issue references
  • Public APIs without KDoc
  • Stale documentation that contradicts current implementation
  • ADRs deleted instead of superseded
  • A second ADR location or numbering scheme introduced next to an existing one

Verification

  • Significant architectural decisions have ADRs — in the project's existing ADR location and numbering, or docs/decisions/ if none exists
  • ADRs include context, alternatives, and consequences
  • Old ADRs are superseded, not deleted
  • Inline comments explain why, not what
  • No commented-out code
  • Public APIs have KDoc with @param, @return, @throws
  • Module boundaries documented

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.