/technical-documentation — Create, maintain, and audit technical
documentation: READMEs, ADRs, API docs, runbooks, onboarding guides,
changelogs, knowledge bases, and AI-agent-facing context files.
Technical Documentation Agent Skill
Create, maintain, and audit technical documentation with an AI agent that
understands audience, structure, and long-term maintenance. This skill turns
an agent into a technical writer that produces documentation engineered for
humans and AI agents — READMEs, ADRs, API docs, runbooks, onboarding
guides, changelogs, and agent-facing files like AGENTS.md.
Quick Reference
| Document Type |
Purpose |
Key Audience |
Lifecycle |
| 📘 README |
Project entry point |
New contributors, evaluators |
Updated with every release |
| 🏛️ ADR |
Record architectural decisions |
Future maintainers |
Immutable once accepted |
| 🔌 API Docs |
Describe endpoints/schemas |
API consumers, integrators |
Updated with every API change |
| 🚨 Runbook |
Incident response procedures |
On-call engineers |
Reviewed after every incident |
| 🚀 Onboarding Guide |
Ramp up new team members |
New hires, transfers |
Updated quarterly |
| 📋 Changelog |
User-facing release notes |
End users, downstream teams |
Updated with every release |
| 🧠 Knowledge Base |
Long-lived reference material |
Entire organization |
Continuous curation |
| 🤖 AI Agent Docs |
Context for AI coding agents |
AI agents (Claude, Copilot, etc.) |
Updated with structural changes |
Severity Scale (for documentation audits):
- 🔴 CRITICAL — Missing or dangerously wrong. Could cause production incidents or security issues.
- 🟠 MAJOR — Outdated or incomplete enough to waste significant time or cause confusion.
- 🟡 MINOR — Minor inaccuracies, unclear phrasing, formatting issues.
- ⚪ NIT — Style preferences, consistency nits, polish.
When to Use This Skill
Activate this skill when the user asks you to:
- "Write a README for this project" / "Improve our README"
- "Create an ADR for " / "Document this architectural decision"
- "Generate API documentation" / "Document this endpoint"
- "Write a runbook for " / "Create incident response docs"
- "Make an onboarding guide for new engineers"
- "Audit our documentation" / "Is our documentation complete?"
- "Create a changelog" / "Update the changelog for this release"
- "Write an AGENTS.md for this project" / "Set up AI agent context files"
- "Organize our knowledge base" / "Review our docs for freshness"
- "Document this module" / "Explain this system in writing"
- Any request containing "document", "docs", "README", "write up", "explain in writing"
Additionally, activate proactively when a conversation involves a new
project, module, or system that lacks documentation, and the user's tone
suggests they would benefit from having it documented.
Do NOT Activate For
The following inputs are near-miss negatives — they mention
documentation-like language but are not documentation work:
- Code comments / docstrings: "Add docstrings to this function" —
code-level comments, not standalone documentation. Refer to coding-agent.
- Code review: "Review my code" / "Check this PR for issues" —
code review, not documentation. Refer to code-review skill.
- API design from scratch: "Design a REST API for users" — API design,
not API documentation. Refer to api-design-first.
- General Q&A: "What does microservices mean?" — definitions, not docs.
- Writing blog posts / articles: "Write a blog post about our architecture" —
marketing/thought-leadership, not technical reference docs.
- Legal documents: "Write our privacy policy" — legal, not technical.
Refer to ai-legal-content or gdpr-compliance-expert.
- Slide decks / presentations: "Make slides about our architecture" —
presentations, not reference docs.
- Generating code from docs: "Read these API docs and generate a client" —
code generation. The docs are input, not the output.
When in doubt, ask: "Did you want me to create or improve documentation, or
were you asking me to do something else?"
Documentation Types & Patterns
1. README Composition
Every README is a project's first impression. A README must answer, in this
order: What is this? Why does it exist? How do I use it? How do I
contribute?
The Standard README Structure:
# Project Name
> One-line description — what it does and why someone should care.
## Badges
[build status] [coverage] [version] [license] [platform support]
## Overview
2-3 sentences on what the project is and the problem it solves.
## Quick Start
The absolute minimum to get running. Copy-paste-able commands that work.
If it takes more than 5 commands or 2 minutes, it's too long.
## Installation
Detailed install instructions. Per-platform if needed. Prerequisites first.
## Usage
Common use cases with code examples. Link to full API docs, don't inline them.
## Configuration
All config options with defaults, descriptions, and env var equivalents.
## Architecture
High-level diagram or description. How the pieces fit together. Link to ADRs.
## Contributing
How to set up a dev environment, run tests, and submit changes. Link to
CONTRIBUTING.md if it exists.
## License
License name and link to LICENSE file.
RED FLAGS — fix these immediately (🔴 CRITICAL):
- No "Quick Start" section or Quick Start that doesn't work when copy-pasted
- Stale install instructions referencing removed dependencies
- Missing license information
- No indication of what the project actually does in the first 3 sentences
YELLOW FLAGS — improve these (🟠 MAJOR):
- No architecture section for projects with >3 modules
- Examples that use placeholder values without explaining how to get real ones
- Configuration section that lists options but doesn't explain what they do
- Badges pointing to broken CI/dead services
2. Architecture Decision Records (ADRs)
ADRs capture why a decision was made — the context, alternatives, and
tradeoffs. They live in docs/adr/ and are numbered sequentially.
ADR Workflow:
- Propose: Create a new ADR with status "proposed"
- Review: Team discusses. ADRs are lightweight — a PR review is usually
enough.
- Accept or Reject: If accepted, status becomes "accepted". If rejected,
status becomes "rejected" with a note explaining why. Rejected ADRs are
still valuable — they prevent re-litigation.
- Supersede: If a later decision replaces this one, update status to
"superseded by [ADR-NNNN]". Never delete ADRs.
When to Write an ADR:
- Choosing between multiple viable approaches (e.g., PostgreSQL vs MongoDB)
- Introducing a new pattern or technology into the codebase
- Deprecating an existing pattern or technology
- Making a decision with significant cost, risk, or cross-team impact
- Any decision you expect someone to question in 6 months
ADR File Naming:
docs/adr/0001-use-postgresql-as-primary-database.md
docs/adr/0002-use-jwt-for-api-authentication.md
docs/adr/0003-adopt-trunk-based-development.md
Use the full ADR template from references/adr-template.md.
3. API Documentation
API docs must be the single source of truth. Generate them from the API
specification, not from prose. Never maintain API docs and API specs
separately — they will diverge.
REST API Documentation Pattern:
- Use OpenAPI 3.1 (Swagger) as the canonical API description. Generate
human-readable docs from the spec, not the other way around.
- Every endpoint must document: HTTP method, path, path/query/body parameters,
authentication requirements, request example, response schema, error codes,
rate limits.
- Use RFC 7807 Problem Details for error responses.
- Document deprecations with
Sunset and Deprecation headers.
GraphQL API Documentation Pattern:
- Use schema introspection to generate docs. Tools: GraphiQL, SpectaQL,
GraphQL Playground, Apollo Studio.
- Every type, field, query, and mutation must have a description in the
schema. Treat schema descriptions as the canonical documentation.
- Document: queries, mutations, subscriptions, types, enums, input objects,
deprecation reasons (
@deprecated directive).
gRPC Documentation Pattern:
- Use protobuf comments as the canonical documentation source. Generate
docs with
protoc-gen-doc.
- Every service, RPC, and message field must have a comment.
- Document: streaming (unary, server, client, bidirectional), error codes,
deadlines/timeouts, authentication metadata.
Cross-Protocol Consistency Rules:
- Use
camelCase for field names across all protocols
- Use ISO 8601 for all date/time values
- Use consistent pagination across protocols (cursor-based preferred)
- Use consistent error shapes
4. Runbooks
Runbooks are procedural documents for responding to known incidents. They
must be actionable under stress — an engineer at 3 AM should be able to
follow them.
Runbook Structure:
# Runbook: <Incident Name>
## Symptoms
- Alert: <alert name and source>
- User reports: "I see X error"
- Metrics: <metric> exceeds <threshold>
## Impact
What breaks? Who is affected? What's the blast radius?
## Severity Levels
- SEV1: <conditions> — page on-call immediately
- SEV2: <conditions> — page during business hours
- SEV3: <conditions> — create ticket
## Prerequisites
- Access to: <dashboards, tools, SSH hosts>
- Permissions: <required IAM roles / access levels>
## Diagnostic Steps
1. Check <dashboard> for <metric>.
- Normal range: <X-Y>. If outside: proceed to step 2.
2. Run: `<diagnostic command>` on <host>.
- Expected output: <X>. If different: proceed to mitigation.
## Mitigation
1. **First response (≤5 min):** <immediate action to stop bleeding>
2. **Short-term fix:** <temporary workaround>
3. **Long-term fix:** <link to issue/ticket>
## Verification
- <metric> should return to <normal range>
- <endpoint> should return 200
- Users should be able to <action>
## Escalation
- If mitigation fails after <N> minutes: escalate to <team/person>
- If <condition>: escalate to <person/team>
## Post-Incident
- Create a postmortem in <location>
- File follow-up issues for long-term fixes
- Update this runbook with lessons learned
Runbook Red Flags (🔴 CRITICAL):
- Hardcoded credentials or IP addresses in commands
- Commands that are destructive without clear warnings (
DROP, DELETE,
TERMINATE)
- Missing prerequisites section (engineer can't follow steps without access)
- Diagnostic steps that don't explain what normal output looks like
5. Onboarding Guides
Onboarding guides reduce time-to-first-commit. They must be comprehensive
enough that a new engineer can follow them without asking for help, but
concise enough that they're actually read.
Onboarding Guide Structure:
# Onboarding Guide: <Team/Project>
## Welcome
Link to team charter, mission, and who's who.
## Day 0 — Before You Start
- Hardware/software you'll need
- Accounts to request (and how to request them)
- Reading material (architecture docs, ADRs, team wiki)
## Week 1 — Get Set Up
- Dev environment setup (step-by-step, copy-paste-able)
- Clone repos and build locally
- Run the test suite
- Make your first commit (a tiny one — fix a typo, add a test)
## Week 2-4 — Ramp Up
- Key systems to understand (with links to docs)
- Pairing sessions to schedule
- Good first issues to tackle
- Team rituals: standups, planning, retros
## Reference
- Glossary of team-specific terms
- Important links (dashboards, CI, wiki, chat channels)
- Who to ask for what
6. Changelogs
Changelogs are for humans, not git logs. Follow
Keep a Changelog format:
# Changelog
## [1.2.0] - 2026-06-15
### Added
- New feature X for Y use case
- Support for Z protocol
### Changed
- Upgraded dependency A from v2 to v3
- Renamed `oldMethod()` to `newMethod()` (old name deprecated)
### Deprecated
- `oldMethod()` — use `newMethod()` instead. Will be removed in v2.0.0.
### Removed
- Dropped support for Node.js 16
### Fixed
- Race condition in payment processing (#1234)
- Memory leak in WebSocket handler (#1245)
### Security
- Patched CVE-2026-XXXXX in dependency B
Changelog Rules:
- Always include a link to the full diff at the bottom:
[1.2.0]: https://github.com/owner/repo/compare/v1.1.0...v1.2.0
- Use semantic versioning. Breaking changes get a MAJOR bump.
- Group entries under
Added, Changed, Deprecated, Removed, Fixed,
Security. Never use a catch-all "Misc" or "Other" category.
- Never include internal refactors that have no user impact.
7. Knowledge Base Maintenance
A knowledge base rots if not maintained. Establish a maintenance cadence:
Freshness Review Schedule:
| Content Type |
Review Frequency |
Owner |
| Runbooks |
After every incident + quarterly |
On-call rotation |
| Onboarding guides |
Quarterly |
Engineering manager |
| API docs |
Every release |
API team |
| ADRs |
N/A (immutable) |
N/A |
| README |
Every release |
Project maintainer |
| Agent context files |
Monthly + on structural changes |
Tech lead |
| General wiki pages |
Bi-annual |
Rotating ownership |
Documentation Audit Checklist:
8. Documentation for AI Agents
AI coding agents need context. Files like AGENTS.md, CLAUDE.md, and
CURSOR.md provide that context — they are the README for machines.
AGENTS.md Pattern (Universal Agent Context):
# AGENTS.md — Project Context for AI Agents
## Project Identity
- **Name**: <project>
- **Purpose**: <one-line mission>
- **Stack**: <languages, frameworks, databases>
- **Repository**: <link>
## Architecture
- <High-level description of how components fit together>
- <Key design patterns used>
- <Data flow diagram or description>
## Conventions
- Code style: <formatter, linter config>
- Commit style: <conventional commits, etc.>
- Testing: <framework, patterns, coverage requirements>
- Branching: <strategy>
## Constraints
- <Things agents must NOT do — e.g., never modify schema without migration>
- <Security boundaries — e.g., never hardcode secrets>
- <Performance constraints — e.g., max response time targets>
## Key Files
- <file>: <what it contains and why it matters>
- <file>: <what it contains and why it matters>
## External Dependencies
- <service>: <purpose, link to docs>
- <API>: <purpose, link to docs>
## Common Tasks
- <task>: <how to do it, what to watch out for>
- <task>: <how to do it, what to watch out for>
AI Context File Best Practices:
- Keep it under 500 lines. Agents have context windows — be concise.
- Put the most important information first (project identity, architecture,
conventions — then constraints, then common tasks).
- Use specific, actionable instructions: "NEVER modify
database/schema/
without running make migration" not "Be careful with databases."
- Update on every architectural change. A stale AGENTS.md is worse than no
AGENTS.md — it gives agents false confidence.
- If the project has a contributing guide, link to it — don't duplicate.
Platform-Specific Patterns:
| Platform |
Context File |
Notes |
| Universal |
AGENTS.md |
Adopted by OpenClaw, Codex CLI, Antigravity, and others |
| Claude Code |
CLAUDE.md |
Same format; can also read AGENTS.md |
| Cursor |
.cursorrules or CURSOR.md |
Supports .cursor/rules/*.mdc for multiple rule files |
| GitHub Copilot |
.github/copilot-instructions.md |
Workspace-level instructions |
| Windsurf |
.windsurfrules |
Global or per-workspace |
| OpenCode |
AGENTS.md or OPENCODE.md |
Standard AGENTS.md format |
Documentation-Driven Development (DDD)
Write the documentation before the code. This forces clarity:
- Write the README first. Describe what the system will do from the
user's perspective. If you can't explain it clearly in prose, you can't
code it clearly.
- Write the API docs (OpenAPI spec) before implementing endpoints.
Review the API contract with consumers before writing a single line.
- Write the ADR before making the architectural decision. Forces you to
articulate the problem, alternatives, and tradeoffs.
- Write the runbook before the system goes to production. If you can't
describe how to diagnose and fix it, the system isn't observable enough.
- Write the changelog entry as part of the PR template. No merged PR
without a changelog entry.
DDD PR Template:
## Summary
<what and why>
## Documentation Checklist
- [ ] README updated (if new features, changed usage, or new config)
- [ ] API docs updated (if API changed)
- [ ] ADR created (if architectural decision made)
- [ ] Changelog entry added
- [ ] Runbook updated (if operational behavior changed)
- [ ] Agent context files updated (if conventions/architecture changed)
Markdown Best Practices
Technical documentation lives in Markdown. Write Markdown that renders well
on GitHub, in editors, and in AI agent context windows.
Structural Rules:
- Use ATX-style headers (
#, ##, ###) — never setext-style (===, ---)
- One H1 per file (the title). Use H2-H6 for sections.
- Put a blank line before and after headers, lists, and code blocks.
- Use reference-style links for repeated URLs:
[text][ref] ... [ref]: https://example.com
- Wrap long lines at 100 characters. Exceptions: URLs, code blocks, tables.
- Use
inline code for: file names, commands, env vars, code identifiers.
- Use bold for emphasis, italics for secondary emphasis.
- Never use bold and italics together (
***not this***).
Code Blocks:
Tables:
Links:
- Use descriptive link text: "See the Authentication Guide" not
"Click here"
- Always use relative links for internal files (within the repo)
- Always use absolute URLs for external references
- For Discord/Slack delivery: wrap multiple links in
<> to suppress embeds
Images & Diagrams:
Documentation Auditing
Regularly audit documentation for three dimensions: completeness,
accuracy, and freshness.
Completeness Audit
Does documentation exist for everything that needs it?
- List every service/module in the codebase
- For each, check: README? API docs? Runbook? ADRs for key decisions?
- Identify gaps and prioritize by business criticality
- Create tickets for missing documentation
Accuracy Audit
Is the documentation correct?
- For each runbook: execute the diagnostic commands. Do they still work? Is
the output what's documented?
- For each Quick Start: clone the repo on a clean machine and follow the
instructions verbatim. If it fails, the docs are wrong.
- For API docs: diff the OpenAPI spec against actual endpoint behavior.
Test every documented endpoint.
- For config docs: diff documented env vars against actual usage in code.
Freshness Audit
Is the documentation current?
- Check the
last_updated date on every document (add a date footer if
documents don't have one)
- Flag any document older than its review interval
- For ADRs: check that accepted ADRs haven't been implicitly superseded
(code changed, ADR didn't)
- For agent context files: diff against actual project structure. Have new
modules, patterns, or conventions emerged since the last update?
Audit Report Format:
# Documentation Audit: <Project> — <Date>
## Summary
- Documents audited: N
- Complete: N | Accurate: N | Fresh: N
- Critical findings: N | Major: N | Minor: N
## Critical Findings 🔴
- **<file>**: <issue> — <fix recommendation>
## Major Findings 🟠
- **<file>**: <issue> — <fix recommendation>
## Minor Findings 🟡
- **<file>**: <issue> — <fix recommendation>
## Recommendations
<prioritized list of actions>
Common Pitfalls & Anti-Patterns
❌ Documentation Anti-Patterns
Writing docs that explain how without why — A README that says
"Run npm start" without explaining what the project does is useless.
Lead with purpose, then procedure.
Duplicating information across documents — The same setup instructions
in README.md, CONTRIBUTING.md, and docs/setup.md. Pick one canonical
location and link to it from others.
Writing documentation as an afterthought — "I'll document it after the
release." No you won't. Documentation must be part of the definition of
done, not a separate task.
Using documentation as a substitute for clean code — If your code
needs 200 lines of docs to explain, the code might be the problem.
Documentation supplements clarity; it doesn't replace it.
One-person documentation — If only one person can maintain the docs,
they will rot when that person leaves. Distribute documentation ownership
across the team.
Writing for yourself, not your audience — A README written by the
author for the author. Assume the reader knows nothing about your project.
Define acronyms. Explain concepts. Provide context.
Screenshots without alt text or descriptions — Screenshots go stale
faster than text. If you use them, describe what they show in alt text so
the description survives even when the screenshot doesn't.
Treating ADRs as heavyweight RFCs — ADRs should be 1-2 pages. If it
takes a week to write, it's an RFC, not an ADR. ADRs capture decisions
that have already been discussed. RFCs propose decisions for discussion.
Including credentials, tokens, or secrets in documentation — Even in
examples. Use placeholders like <YOUR_API_KEY> or env var references.
See Safety Rules below.
Neglecting agent-facing documentation — AI agents are now part of the
development team. If your project has conventions, constraints, and
patterns that agents should follow, document them in AGENTS.md.
✅ Documentation Quality Checklist
Before publishing any document, verify:
Safety Rules
ABSOLUTE RULES — never violate these:
Never document credentials, secrets, API keys, tokens, or passwords.
Use placeholders: <YOUR_API_KEY>, $DATABASE_URL, <REDACTED>. Even in
examples. Even in "non-production" contexts. Secrets in docs leak — through
copy-paste, screenshots, search indexing, and agent context windows.
Never document internal network details publicly. Private IPs
(10.x.x.x, 192.168.x.x), internal hostnames, and VPN endpoints should
not appear in public-facing or widely-shared documentation.
Never include destructive commands without clear warnings. If a runbook
includes DROP TABLE, DELETE FROM, TERMINATE, rm -rf, or similar
commands, precede them with a ⚠️ warning explaining what they destroy and
how to verify you're targeting the right environment.
Never claim documentation is "complete" without an audit. "Our docs are
comprehensive" is a statement of fact, not aspiration. Only make it after
running the completeness audit.
Never commit documentation changes without review. Documentation that
describes system behavior is as critical as code that implements it. Review
docs with the same rigor as code.
Respect the audience's time. A 50-page onboarding guide that nobody
reads is not documentation — it's a filing exercise. Write for skimming.
Put the important information first. Use headers generously.
Agent-facing docs must not contain instructions that violate safety
policies. AGENTS.md and similar files are prompts for AI agents. They
must not instruct agents to bypass security, exfiltrate data, or ignore
safeguards.
Platform Compatibility Notes
This skill is designed to work across AI coding platforms with minor
adaptations:
| Platform |
Notes |
| Claude Code |
Can read entire codebase for context. Excellent for auditing and generating comprehensive docs. Use file-reading tools to gather context before writing. |
| Codex (OpenAI) |
Good at generating structured documentation from code. Provide the code context and spec before asking for docs. |
| Cursor |
IDE integration means docs can be generated alongside code. Use CURSOR.md for agent context. |
| Gemini CLI |
Large context window is useful for processing entire codebases at once. Good for documentation audits. |
| OpenClaw |
Access to multiple skills. Combine with api-design-first for API docs, git-workflow-automation for changelogs. |
| GitHub Copilot |
Works best within IDE context. Use .github/copilot-instructions.md for agent context. |
| Windsurf |
Can read workspace files natively. Use .windsurfrules for agent context. |
| OpenCode |
Terminal-based with full file access. Use AGENTS.md for agent context. |
Platform-Specific Adjustments
- For Discord/Slack delivery: Use bullet lists, not markdown tables. Wrap
multiple links in
<> to suppress embeds. Split long docs across multiple
messages.
- For API docs: Prefer generating the OpenAPI spec, not just prose
descriptions. The spec is machine-readable and can be rendered by tools.
- For large codebases: Audit one module at a time. Don't try to document
everything in one session.
- If the codebase has no existing docs: Start with README + AGENTS.md.
These are the two highest-leverage documents to create first.
- For diagram generation: Prefer Mermaid (text-based, version-controllable)
over images. Use the diagram-maker skill if complex diagrams are needed.
References
references/adr-template.md — Complete ADR template with all sections
references/markdown-style-guide.md — Detailed Markdown style guide
(loaded on demand)
references/runbook-template.md — Runbook template with incident
response patterns
references/api-docs-checklist.md — API documentation completeness
checklist
Verification Checklist
Before finalizing any documentation task, confirm:
1---2name: technical-documentation3description: AI-powered technical documentation creation, maintenance, and auditing across README, ADR, API docs, runbooks, onboarding guides, changelogs, knowledge bases, and AI agent context files (AGENTS.md/CLAUDE.md). Primary keywords: technical documentation writing automation, ADR architecture decision record, API docs OpenAPI generation, README quality template, documentation-driven development, runbook automation, knowledge base maintenance, markdown best practices, onboarding guide, changelog format, documentation audit completeness accuracy, AI agent documentation AGENTS.md. For all major agentic platforms.4---56# /technical-documentation — Create, maintain, and audit technical7# documentation: READMEs, ADRs, API docs, runbooks, onboarding guides,8# changelogs, knowledge bases, and AI-agent-facing context files.910# Technical Documentation Agent Skill1112Create, maintain, and audit technical documentation with an AI agent that13understands audience, structure, and long-term maintenance. This skill turns14an agent into a technical writer that produces documentation engineered for15humans *and* AI agents — READMEs, ADRs, API docs, runbooks, onboarding16guides, changelogs, and agent-facing files like AGENTS.md.1718---1920## Quick Reference2122| Document Type | Purpose | Key Audience | Lifecycle |23|---|---|---|---|24| 📘 **README** | Project entry point | New contributors, evaluators | Updated with every release |25| 🏛️ **ADR** | Record architectural decisions | Future maintainers | Immutable once accepted |26| 🔌 **API Docs** | Describe endpoints/schemas | API consumers, integrators | Updated with every API change |27| 🚨 **Runbook** | Incident response procedures | On-call engineers | Reviewed after every incident |28| 🚀 **Onboarding Guide** | Ramp up new team members | New hires, transfers | Updated quarterly |29| 📋 **Changelog** | User-facing release notes | End users, downstream teams | Updated with every release |30| 🧠 **Knowledge Base** | Long-lived reference material | Entire organization | Continuous curation |31| 🤖 **AI Agent Docs** | Context for AI coding agents | AI agents (Claude, Copilot, etc.) | Updated with structural changes |3233**Severity Scale (for documentation audits):**3435- 🔴 **CRITICAL** — Missing or dangerously wrong. Could cause production incidents or security issues.36- 🟠 **MAJOR** — Outdated or incomplete enough to waste significant time or cause confusion.37- 🟡 **MINOR** — Minor inaccuracies, unclear phrasing, formatting issues.38- ⚪ **NIT** — Style preferences, consistency nits, polish.3940---4142## When to Use This Skill4344Activate this skill when the user asks you to:4546- "Write a README for this project" / "Improve our README"47- "Create an ADR for <decision>" / "Document this architectural decision"48- "Generate API documentation" / "Document this endpoint"49- "Write a runbook for <service>" / "Create incident response docs"50- "Make an onboarding guide for new engineers"51- "Audit our documentation" / "Is our documentation complete?"52- "Create a changelog" / "Update the changelog for this release"53- "Write an AGENTS.md for this project" / "Set up AI agent context files"54- "Organize our knowledge base" / "Review our docs for freshness"55- "Document this module" / "Explain this system in writing"56- Any request containing "document", "docs", "README", "write up", "explain in writing"5758Additionally, activate proactively when a conversation involves a new59project, module, or system that lacks documentation, and the user's tone60suggests they would benefit from having it documented.6162### Do NOT Activate For6364The following inputs are **near-miss negatives** — they mention65documentation-like language but are not documentation work:6667- **Code comments / docstrings**: "Add docstrings to this function" —68 code-level comments, not standalone documentation. Refer to coding-agent.69- **Code review**: "Review my code" / "Check this PR for issues" —70 code review, not documentation. Refer to code-review skill.71- **API design from scratch**: "Design a REST API for users" — API design,72 not API documentation. Refer to api-design-first.73- **General Q&A**: "What does microservices mean?" — definitions, not docs.74- **Writing blog posts / articles**: "Write a blog post about our architecture" —75 marketing/thought-leadership, not technical reference docs.76- **Legal documents**: "Write our privacy policy" — legal, not technical.77 Refer to ai-legal-content or gdpr-compliance-expert.78- **Slide decks / presentations**: "Make slides about our architecture" —79 presentations, not reference docs.80- **Generating code from docs**: "Read these API docs and generate a client" —81 code generation. The docs are input, not the output.8283When in doubt, ask: "Did you want me to create or improve documentation, or84were you asking me to do something else?"8586---8788## Documentation Types & Patterns8990### 1. README Composition9192Every README is a project's first impression. A README must answer, in this93order: *What is this? Why does it exist? How do I use it? How do I94contribute?*9596**The Standard README Structure:**9798```markdown99# Project Name100> One-line description — what it does and why someone should care.101102## Badges103[build status] [coverage] [version] [license] [platform support]104105## Overview1062-3 sentences on what the project is and the problem it solves.107108## Quick Start109The absolute minimum to get running. Copy-paste-able commands that work.110If it takes more than 5 commands or 2 minutes, it's too long.111112## Installation113Detailed install instructions. Per-platform if needed. Prerequisites first.114115## Usage116Common use cases with code examples. Link to full API docs, don't inline them.117118## Configuration119All config options with defaults, descriptions, and env var equivalents.120121## Architecture122High-level diagram or description. How the pieces fit together. Link to ADRs.123124## Contributing125How to set up a dev environment, run tests, and submit changes. Link to126CONTRIBUTING.md if it exists.127128## License129License name and link to LICENSE file.130```131132**RED FLAGS — fix these immediately (🔴 CRITICAL):**133134- No "Quick Start" section or Quick Start that doesn't work when copy-pasted135- Stale install instructions referencing removed dependencies136- Missing license information137- No indication of what the project actually does in the first 3 sentences138139**YELLOW FLAGS — improve these (🟠 MAJOR):**140141- No architecture section for projects with >3 modules142- Examples that use placeholder values without explaining how to get real ones143- Configuration section that lists options but doesn't explain what they do144- Badges pointing to broken CI/dead services145146### 2. Architecture Decision Records (ADRs)147148ADRs capture *why* a decision was made — the context, alternatives, and149tradeoffs. They live in `docs/adr/` and are numbered sequentially.150151**ADR Workflow:**1521531. **Propose**: Create a new ADR with status "proposed"1542. **Review**: Team discusses. ADRs are lightweight — a PR review is usually155 enough.1563. **Accept or Reject**: If accepted, status becomes "accepted". If rejected,157 status becomes "rejected" with a note explaining why. Rejected ADRs are158 still valuable — they prevent re-litigation.1594. **Supersede**: If a later decision replaces this one, update status to160 "superseded by [ADR-NNNN]". Never delete ADRs.161162**When to Write an ADR:**163164- Choosing between multiple viable approaches (e.g., PostgreSQL vs MongoDB)165- Introducing a new pattern or technology into the codebase166- Deprecating an existing pattern or technology167- Making a decision with significant cost, risk, or cross-team impact168- Any decision you expect someone to question in 6 months169170**ADR File Naming:**171```172docs/adr/0001-use-postgresql-as-primary-database.md173docs/adr/0002-use-jwt-for-api-authentication.md174docs/adr/0003-adopt-trunk-based-development.md175```176177Use the full ADR template from `references/adr-template.md`.178179### 3. API Documentation180181API docs must be the single source of truth. Generate them from the API182specification, not from prose. Never maintain API docs and API specs183separately — they will diverge.184185**REST API Documentation Pattern:**186187- **Use OpenAPI 3.1 (Swagger)** as the canonical API description. Generate188 human-readable docs from the spec, not the other way around.189- Every endpoint must document: HTTP method, path, path/query/body parameters,190 authentication requirements, request example, response schema, error codes,191 rate limits.192- Use RFC 7807 Problem Details for error responses.193- Document deprecations with `Sunset` and `Deprecation` headers.194195**GraphQL API Documentation Pattern:**196197- Use schema introspection to generate docs. Tools: GraphiQL, SpectaQL,198 GraphQL Playground, Apollo Studio.199- Every type, field, query, and mutation must have a description in the200 schema. Treat schema descriptions as the canonical documentation.201- Document: queries, mutations, subscriptions, types, enums, input objects,202 deprecation reasons (`@deprecated` directive).203204**gRPC Documentation Pattern:**205206- Use protobuf comments as the canonical documentation source. Generate207 docs with `protoc-gen-doc`.208- Every service, RPC, and message field must have a comment.209- Document: streaming (unary, server, client, bidirectional), error codes,210 deadlines/timeouts, authentication metadata.211212**Cross-Protocol Consistency Rules:**213214- Use `camelCase` for field names across all protocols215- Use ISO 8601 for all date/time values216- Use consistent pagination across protocols (cursor-based preferred)217- Use consistent error shapes218219### 4. Runbooks220221Runbooks are procedural documents for responding to known incidents. They222must be actionable under stress — an engineer at 3 AM should be able to223follow them.224225**Runbook Structure:**226227```markdown228# Runbook: <Incident Name>229230## Symptoms231- Alert: <alert name and source>232- User reports: "I see X error"233- Metrics: <metric> exceeds <threshold>234235## Impact236What breaks? Who is affected? What's the blast radius?237238## Severity Levels239- SEV1: <conditions> — page on-call immediately240- SEV2: <conditions> — page during business hours241- SEV3: <conditions> — create ticket242243## Prerequisites244- Access to: <dashboards, tools, SSH hosts>245- Permissions: <required IAM roles / access levels>246247## Diagnostic Steps2481. Check <dashboard> for <metric>.249 - Normal range: <X-Y>. If outside: proceed to step 2.2502. Run: `<diagnostic command>` on <host>.251 - Expected output: <X>. If different: proceed to mitigation.252253## Mitigation2541. **First response (≤5 min):** <immediate action to stop bleeding>2552. **Short-term fix:** <temporary workaround>2563. **Long-term fix:** <link to issue/ticket>257258## Verification259- <metric> should return to <normal range>260- <endpoint> should return 200261- Users should be able to <action>262263## Escalation264- If mitigation fails after <N> minutes: escalate to <team/person>265- If <condition>: escalate to <person/team>266267## Post-Incident268- Create a postmortem in <location>269- File follow-up issues for long-term fixes270- Update this runbook with lessons learned271```272273**Runbook Red Flags (🔴 CRITICAL):**274275- Hardcoded credentials or IP addresses in commands276- Commands that are destructive without clear warnings (`DROP`, `DELETE`,277 `TERMINATE`)278- Missing prerequisites section (engineer can't follow steps without access)279- Diagnostic steps that don't explain what normal output looks like280281### 5. Onboarding Guides282283Onboarding guides reduce time-to-first-commit. They must be comprehensive284enough that a new engineer can follow them without asking for help, but285concise enough that they're actually read.286287**Onboarding Guide Structure:**288289```markdown290# Onboarding Guide: <Team/Project>291292## Welcome293Link to team charter, mission, and who's who.294295## Day 0 — Before You Start296- Hardware/software you'll need297- Accounts to request (and how to request them)298- Reading material (architecture docs, ADRs, team wiki)299300## Week 1 — Get Set Up301- Dev environment setup (step-by-step, copy-paste-able)302- Clone repos and build locally303- Run the test suite304- Make your first commit (a tiny one — fix a typo, add a test)305306## Week 2-4 — Ramp Up307- Key systems to understand (with links to docs)308- Pairing sessions to schedule309- Good first issues to tackle310- Team rituals: standups, planning, retros311312## Reference313- Glossary of team-specific terms314- Important links (dashboards, CI, wiki, chat channels)315- Who to ask for what316```317318### 6. Changelogs319320Changelogs are for *humans*, not git logs. Follow321[Keep a Changelog](https://keepachangelog.com/) format:322323```markdown324# Changelog325326## [1.2.0] - 2026-06-15327328### Added329- New feature X for Y use case330- Support for Z protocol331332### Changed333- Upgraded dependency A from v2 to v3334- Renamed `oldMethod()` to `newMethod()` (old name deprecated)335336### Deprecated337- `oldMethod()` — use `newMethod()` instead. Will be removed in v2.0.0.338339### Removed340- Dropped support for Node.js 16341342### Fixed343- Race condition in payment processing (#1234)344- Memory leak in WebSocket handler (#1245)345346### Security347- Patched CVE-2026-XXXXX in dependency B348```349350**Changelog Rules:**351352- Always include a link to the full diff at the bottom:353 `[1.2.0]: https://github.com/owner/repo/compare/v1.1.0...v1.2.0`354- Use semantic versioning. Breaking changes get a MAJOR bump.355- Group entries under `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`,356 `Security`. Never use a catch-all "Misc" or "Other" category.357- Never include internal refactors that have no user impact.358359### 7. Knowledge Base Maintenance360361A knowledge base rots if not maintained. Establish a maintenance cadence:362363**Freshness Review Schedule:**364365| Content Type | Review Frequency | Owner |366|---|---|---|367| Runbooks | After every incident + quarterly | On-call rotation |368| Onboarding guides | Quarterly | Engineering manager |369| API docs | Every release | API team |370| ADRs | N/A (immutable) | N/A |371| README | Every release | Project maintainer |372| Agent context files | Monthly + on structural changes | Tech lead |373| General wiki pages | Bi-annual | Rotating ownership |374375**Documentation Audit Checklist:**376377- [ ] Every service has a README with Quick Start that works378- [ ] Every API endpoint is documented (check OpenAPI coverage)379- [ ] Every architectural decision from the past 6 months has an ADR380- [ ] Every runbook has been tested in the past 6 months381- [ ] Onboarding guide reflects current tooling and processes382- [ ] Changelog is up to date for the latest release383- [ ] Agent context files (AGENTS.md, CLAUDE.md) exist and are current384- [ ] No documentation references removed/deprecated tools or endpoints385- [ ] No hardcoded credentials, tokens, or internal IPs in any doc386- [ ] Cross-links between documents are not broken387- [ ] Dates on time-sensitive docs are within their review window388389### 8. Documentation for AI Agents390391AI coding agents need context. Files like `AGENTS.md`, `CLAUDE.md`, and392`CURSOR.md` provide that context — they are the README for machines.393394**AGENTS.md Pattern (Universal Agent Context):**395396```markdown397# AGENTS.md — Project Context for AI Agents398399## Project Identity400- **Name**: <project>401- **Purpose**: <one-line mission>402- **Stack**: <languages, frameworks, databases>403- **Repository**: <link>404405## Architecture406- <High-level description of how components fit together>407- <Key design patterns used>408- <Data flow diagram or description>409410## Conventions411- Code style: <formatter, linter config>412- Commit style: <conventional commits, etc.>413- Testing: <framework, patterns, coverage requirements>414- Branching: <strategy>415416## Constraints417- <Things agents must NOT do — e.g., never modify schema without migration>418- <Security boundaries — e.g., never hardcode secrets>419- <Performance constraints — e.g., max response time targets>420421## Key Files422- <file>: <what it contains and why it matters>423- <file>: <what it contains and why it matters>424425## External Dependencies426- <service>: <purpose, link to docs>427- <API>: <purpose, link to docs>428429## Common Tasks430- <task>: <how to do it, what to watch out for>431- <task>: <how to do it, what to watch out for>432```433434**AI Context File Best Practices:**435436- Keep it under 500 lines. Agents have context windows — be concise.437- Put the most important information first (project identity, architecture,438 conventions — then constraints, then common tasks).439- Use specific, actionable instructions: "NEVER modify`database/schema/`440 without running `make migration`" not "Be careful with databases."441- Update on every architectural change. A stale AGENTS.md is worse than no442 AGENTS.md — it gives agents false confidence.443- If the project has a contributing guide, link to it — don't duplicate.444445**Platform-Specific Patterns:**446447| Platform | Context File | Notes |448|---|---|---|449| **Universal** | `AGENTS.md` | Adopted by OpenClaw, Codex CLI, Antigravity, and others |450| **Claude Code** | `CLAUDE.md` | Same format; can also read AGENTS.md |451| **Cursor** | `.cursorrules` or `CURSOR.md` | Supports `.cursor/rules/*.mdc` for multiple rule files |452| **GitHub Copilot** | `.github/copilot-instructions.md` | Workspace-level instructions |453| **Windsurf** | `.windsurfrules` | Global or per-workspace |454| **OpenCode** | `AGENTS.md` or `OPENCODE.md` | Standard AGENTS.md format |455456---457458## Documentation-Driven Development (DDD)459460Write the documentation *before* the code. This forces clarity:4614621. **Write the README first.** Describe what the system will do from the463 user's perspective. If you can't explain it clearly in prose, you can't464 code it clearly.4652. **Write the API docs (OpenAPI spec) before implementing endpoints.**466 Review the API contract with consumers before writing a single line.4673. **Write the ADR before making the architectural decision.** Forces you to468 articulate the problem, alternatives, and tradeoffs.4694. **Write the runbook before the system goes to production.** If you can't470 describe how to diagnose and fix it, the system isn't observable enough.4715. **Write the changelog entry as part of the PR template.** No merged PR472 without a changelog entry.473474**DDD PR Template:**475```markdown476## Summary477<what and why>478479## Documentation Checklist480- [ ] README updated (if new features, changed usage, or new config)481- [ ] API docs updated (if API changed)482- [ ] ADR created (if architectural decision made)483- [ ] Changelog entry added484- [ ] Runbook updated (if operational behavior changed)485- [ ] Agent context files updated (if conventions/architecture changed)486```487488---489490## Markdown Best Practices491492Technical documentation lives in Markdown. Write Markdown that renders well493on GitHub, in editors, and in AI agent context windows.494495**Structural Rules:**496497- Use ATX-style headers (`#`, `##`, `###`) — never setext-style (`===`, `---`)498- One H1 per file (the title). Use H2-H6 for sections.499- Put a blank line before and after headers, lists, and code blocks.500- Use reference-style links for repeated URLs:501 `[text][ref]` ... `[ref]: https://example.com`502- Wrap long lines at 100 characters. Exceptions: URLs, code blocks, tables.503- Use `inline code` for: file names, commands, env vars, code identifiers.504- Use **bold** for emphasis, *italics* for secondary emphasis.505- Never use bold and italics together (`***not this***`).506507**Code Blocks:**508509- Always specify a language for syntax highlighting: ` ```python ` not ` ``` `510- Use ` ```text ` or ` ``` ` (no language) for plain text output, logs, etc.511- Show both the command and its output when demonstrating CLI usage:512 ````markdown513 ```bash514 $ npm test515 ```516 ```text517 ✓ 42 tests passed518 ```519 ````520521**Tables:**522523- Use tables only for reference data, not for layout.524- Keep tables under 10 columns. Wider tables are unreadable.525- Align columns for readability in source:526 ```markdown527 | Column A | Column B | Column C |528 |----------|----------|----------|529 | value | value | value |530 ```531532**Links:**533534- Use descriptive link text: "See the [Authentication Guide](auth.md)" not535 "Click [here](auth.md)"536- Always use relative links for internal files (within the repo)537- Always use absolute URLs for external references538- For Discord/Slack delivery: wrap multiple links in `<>` to suppress embeds539540**Images & Diagrams:**541542- Prefer Mermaid for diagrams (renders natively on GitHub):543 ````markdown544 ```mermaid545 graph TD546 A[Client] --> B[API Gateway]547 B --> C[Service]548 ```549 ````550- If Mermaid can't express it, use a diagram tool (Excalidraw, draw.io) and551 embed as an image. Always include alt text.552553---554555## Documentation Auditing556557Regularly audit documentation for three dimensions: **completeness**,558**accuracy**, and **freshness**.559560### Completeness Audit561562Does documentation exist for everything that needs it?5635641. List every service/module in the codebase5652. For each, check: README? API docs? Runbook? ADRs for key decisions?5663. Identify gaps and prioritize by business criticality5674. Create tickets for missing documentation568569### Accuracy Audit570571Is the documentation correct?5725731. For each runbook: execute the diagnostic commands. Do they still work? Is574 the output what's documented?5752. For each Quick Start: clone the repo on a clean machine and follow the576 instructions verbatim. If it fails, the docs are wrong.5773. For API docs: diff the OpenAPI spec against actual endpoint behavior.578 Test every documented endpoint.5794. For config docs: diff documented env vars against actual usage in code.580581### Freshness Audit582583Is the documentation current?5845851. Check the `last_updated` date on every document (add a date footer if586 documents don't have one)5872. Flag any document older than its review interval5883. For ADRs: check that accepted ADRs haven't been implicitly superseded589 (code changed, ADR didn't)5904. For agent context files: diff against actual project structure. Have new591 modules, patterns, or conventions emerged since the last update?592593**Audit Report Format:**594595```markdown596# Documentation Audit: <Project> — <Date>597598## Summary599- Documents audited: N600- Complete: N | Accurate: N | Fresh: N601- Critical findings: N | Major: N | Minor: N602603## Critical Findings 🔴604- **<file>**: <issue> — <fix recommendation>605606## Major Findings 🟠607- **<file>**: <issue> — <fix recommendation>608609## Minor Findings 🟡610- **<file>**: <issue> — <fix recommendation>611612## Recommendations613<prioritized list of actions>614```615616---617618## Common Pitfalls & Anti-Patterns619620### ❌ Documentation Anti-Patterns6216221. **Writing docs that explain *how* without *why*** — A README that says623 "Run `npm start`" without explaining what the project does is useless.624 Lead with purpose, then procedure.6256262. **Duplicating information across documents** — The same setup instructions627 in README.md, CONTRIBUTING.md, and docs/setup.md. Pick one canonical628 location and link to it from others.6296303. **Writing documentation as an afterthought** — "I'll document it after the631 release." No you won't. Documentation must be part of the definition of632 done, not a separate task.6336344. **Using documentation as a substitute for clean code** — If your code635 needs 200 lines of docs to explain, the code might be the problem.636 Documentation supplements clarity; it doesn't replace it.6376385. **One-person documentation** — If only one person can maintain the docs,639 they will rot when that person leaves. Distribute documentation ownership640 across the team.6416426. **Writing for yourself, not your audience** — A README written by the643 author for the author. Assume the reader knows nothing about your project.644 Define acronyms. Explain concepts. Provide context.6456467. **Screenshots without alt text or descriptions** — Screenshots go stale647 faster than text. If you use them, describe what they show in alt text so648 the description survives even when the screenshot doesn't.6496508. **Treating ADRs as heavyweight RFCs** — ADRs should be 1-2 pages. If it651 takes a week to write, it's an RFC, not an ADR. ADRs capture decisions652 that have already been discussed. RFCs propose decisions for discussion.6536549. **Including credentials, tokens, or secrets in documentation** — Even in655 examples. Use placeholders like `<YOUR_API_KEY>` or env var references.656 See Safety Rules below.65765810. **Neglecting agent-facing documentation** — AI agents are now part of the659 development team. If your project has conventions, constraints, and660 patterns that agents should follow, document them in AGENTS.md.661662### ✅ Documentation Quality Checklist663664Before publishing any document, verify:665666- [ ] The first paragraph answers "what is this and why should I care?"667- [ ] Copy-paste-able commands actually work when copy-pasted668- [ ] No hardcoded credentials, tokens, or internal IPs669- [ ] Links are not broken (test them)670- [ ] Code blocks have language specifiers671- [ ] File is under 500 lines (split longer docs into multiple files)672- [ ] The target audience is clear (new user? API consumer? on-call engineer?)673- [ ] Date or version information is present674- [ ] Acronyms are expanded on first use675- [ ] Cross-references use relative links (within repo) or absolute URLs676 (external)677678---679680## Safety Rules681682**ABSOLUTE RULES — never violate these:**6836841. **Never document credentials, secrets, API keys, tokens, or passwords.**685 Use placeholders: `<YOUR_API_KEY>`, `$DATABASE_URL`, `<REDACTED>`. Even in686 examples. Even in "non-production" contexts. Secrets in docs leak — through687 copy-paste, screenshots, search indexing, and agent context windows.6886892. **Never document internal network details publicly.** Private IPs690 (`10.x.x.x`, `192.168.x.x`), internal hostnames, and VPN endpoints should691 not appear in public-facing or widely-shared documentation.6926933. **Never include destructive commands without clear warnings.** If a runbook694 includes `DROP TABLE`, `DELETE FROM`, `TERMINATE`, `rm -rf`, or similar695 commands, precede them with a ⚠️ warning explaining what they destroy and696 how to verify you're targeting the right environment.6976984. **Never claim documentation is "complete" without an audit.** "Our docs are699 comprehensive" is a statement of fact, not aspiration. Only make it after700 running the completeness audit.7017025. **Never commit documentation changes without review.** Documentation that703 describes system behavior is as critical as code that implements it. Review704 docs with the same rigor as code.7057066. **Respect the audience's time.** A 50-page onboarding guide that nobody707 reads is not documentation — it's a filing exercise. Write for skimming.708 Put the important information first. Use headers generously.7097107. **Agent-facing docs must not contain instructions that violate safety711 policies.** AGENTS.md and similar files are prompts for AI agents. They712 must not instruct agents to bypass security, exfiltrate data, or ignore713 safeguards.714715---716717## Platform Compatibility Notes718719This skill is designed to work across AI coding platforms with minor720adaptations:721722| Platform | Notes |723|---|---|724| **Claude Code** | Can read entire codebase for context. Excellent for auditing and generating comprehensive docs. Use file-reading tools to gather context before writing. |725| **Codex (OpenAI)** | Good at generating structured documentation from code. Provide the code context and spec before asking for docs. |726| **Cursor** | IDE integration means docs can be generated alongside code. Use CURSOR.md for agent context. |727| **Gemini CLI** | Large context window is useful for processing entire codebases at once. Good for documentation audits. |728| **OpenClaw** | Access to multiple skills. Combine with api-design-first for API docs, git-workflow-automation for changelogs. |729| **GitHub Copilot** | Works best within IDE context. Use `.github/copilot-instructions.md` for agent context. |730| **Windsurf** | Can read workspace files natively. Use `.windsurfrules` for agent context. |731| **OpenCode** | Terminal-based with full file access. Use AGENTS.md for agent context. |732733### Platform-Specific Adjustments734735- **For Discord/Slack delivery**: Use bullet lists, not markdown tables. Wrap736 multiple links in `<>` to suppress embeds. Split long docs across multiple737 messages.738- **For API docs**: Prefer generating the OpenAPI spec, not just prose739 descriptions. The spec is machine-readable and can be rendered by tools.740- **For large codebases**: Audit one module at a time. Don't try to document741 everything in one session.742- **If the codebase has no existing docs**: Start with README + AGENTS.md.743 These are the two highest-leverage documents to create first.744- **For diagram generation**: Prefer Mermaid (text-based, version-controllable)745 over images. Use the diagram-maker skill if complex diagrams are needed.746747---748749## References750751- `references/adr-template.md` — Complete ADR template with all sections752- `references/markdown-style-guide.md` — Detailed Markdown style guide753 (loaded on demand)754- `references/runbook-template.md` — Runbook template with incident755 response patterns756- `references/api-docs-checklist.md` — API documentation completeness757 checklist758759---760761## Verification Checklist762763Before finalizing any documentation task, confirm:764765- [ ] The document type is appropriate for the audience and purpose766- [ ] The first 3 sentences explain what the document covers and who it's for767- [ ] All code blocks have language specifiers and work when copy-pasted768- [ ] No credentials, secrets, or internal IPs are exposed769- [ ] Links are tested and not broken770- [ ] Cross-references use relative links where appropriate771- [ ] The document is under 500 lines (or split into multiple files if needed)772- [ ] Date or version information is included773- [ ] Acronyms are expanded on first use774- [ ] Destructive commands in runbooks have ⚠️ warnings775- [ ] If this is an agent context file, it does not contain unsafe776 instructions777- [ ] The tone is appropriate for the audience (technical but accessible)