---
name: technical-writing
description: Write, organize, name, edit, or review Enterprise developer documentation, specifications, and technical instructions; ground claims in current source and finish with a plain-language cleanup.
dependencies: []
---

# Technical writing

Use for repository documentation, including READMEs, guides, references, flow
docs, specifications, and technical PR descriptions. Read the applicable
`AGENTS.md` first; it owns documentation destinations, length limits, and
repository terminology. This skill needs no global tools or skill installation.

## Establish the reader and evidence

1. Identify the reader, intended action or decision, page scope, and source of
   truth. Read current code, schemas, tests, command output, and the relevant diff.
2. Choose the requested mode: create from evidence, edit while preserving useful
   facts and the author's intent, or review with findings before proposed fixes.
3. Lead with what the reader can accomplish and one recommended path. Mention
   implementation first when explaining architecture or internals is the task.
4. Verify claims, examples, defaults, paths, and failure behavior. Label material
   uncertainty and name the missing evidence; polished prose is not verification.
5. Before handing off any writing, complete the [required plain-language pass](#always-deslop-the-writing).

## Write precise prose

- Use present tense, active voice, concrete nouns, and one term per concept.
  Expand unfamiliar abbreviations at first use; use established product names.
- Define unfamiliar concepts through their owner, action, and observable role.
  Replace “the controller handles deployment” with what it reads, decides, and
  starts, when those details matter to the reader.
- Make every sentence help the reader decide, act, or understand a boundary.
  Delete repeated background, meta-commentary, and generic benefits.
- Treat `all`, `only`, and `never` as literal claims. Name the surface they cover.
  Use `must` for requirements and `can` for options; preserve consequential limits.
- Use sentence-case, action-specific article headings and descriptive links.
  Explain why when it changes a decision or prevents a failure.
- Give each contract, default, and behavior one owning page. Link its definition
  from other pages rather than copying it into competing references.
- Make diagrams agree with prose: actors and resources are nodes, containment
  uses regions, and arrows describe interactions. Do not imply deployment proof
  from source alone or rely on color alone to convey meaning.

## Always deslop the writing

Run this pass whenever you write, edit, or review prose, including small changes,
PR descriptions, and review findings. The user does not need to request it.
For edits, clean up the prose in scope and read the surrounding text for flow.
For a review-only task, clean up your feedback and flag wording in the document
when it obscures meaning; do not silently rewrite the source.

- Name who does what and under which conditions. Replace vague verbs and noun
  piles such as “performs readiness observation” with “checks whether the
  workload is ready.” Prefer familiar words; define necessary technical terms.
- Delete filler, canned transitions, empty claims, and repeated explanations.
  Remove contrasts or caveats the reader does not need. Avoid invented labels.
- Put the main point first. Split a sentence when the reader has to untangle
  several actions, actors, or conditions; give each paragraph one main point.
- Check the edit against the original and the evidence. Preserve scope, required
  actions, permissions, warnings, failure behavior, and uncertainty. Do not make
  an unsupported claim sound certain or cut a useful detail merely to shorten it.

## Organize and name development docs

When adding, grouping, moving, or renaming documentation, read
[Organization and naming](./references/documentation-navigation.md). Choose one
home based on the reader's task. Use short sidebar labels and give the article
enough context to make sense when opened directly. Check repository guidance and
the current navigation before treating a proposed layout as implemented.

## Choose the smallest useful page

Keep quickstarts and main guides focused on the normal supported workflow. Put
platform-specific failures, uncommon environment workarounds, and extended
diagnostic steps in the owning troubleshooting page or section. Link to that
guidance with a short, symptom-based pointer beside the affected step; do not
front-load the main guide with edge cases. Keep required prerequisites, security
boundaries, destructive effects, and recovery needed for the normal workflow
beside the action they affect.

| Page                          | Include                                                                                                                                                      |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Overview or README            | Reader outcome, scope, recommended starting path, and links to detail.                                                                                       |
| Quickstart                    | Prerequisites, minimum configuration, one runnable example, expected result, and next step.                                                                  |
| Operator guide                | Inputs, command, completion evidence, and recovery in execution order. Keep required inputs separate from optional inputs and show defaults beside options.  |
| API or CLI reference          | Purpose, permissions, exact inputs, defaults, constraints, outputs, side effects, errors, and examples. Keep generated schemas owned by their generator.     |
| Testing guide                 | Setup, fixtures and permissions, success/failure proof, cleanup, and differences from production.                                                            |
| Troubleshooting               | Observable symptom, first discriminating check, likely causes, concrete fix, and proof of recovery.                                                          |
| Architecture or specification | Selected model, owners, boundaries, invariants, tradeoffs, and proof; read [specification guidance](./references/specifications.md).                         |
| Runtime flow                  | Trigger, source pointers, runtime order, state and ownership transitions, decisions, failures, and handoff; follow the repository's local-dev flow contract. |

Omit empty or irrelevant sections. Split independently useful topics when a page
mixes too many reader tasks. Keep the root documentation map and affected links
current, following repository page ownership and length limits.

## Driver contracts

When writing or rewriting a base Driver contract, read and follow the
[Driver contract template](./references/driver-contracts.md). Use its eight
sections: Overview, Interface, IAM, Lifecycle, Limits, Troubleshooting,
Implementations, and Related. Keep concrete backend setup and behavior in
implementation pages; the template takes precedence over the generic option to
omit sections.

## Make examples usable

Show realistic, safe inputs and exact identifier types. Mark placeholders
clearly, quote YAML values when needed, and specify each code block's language.
Include the working directory, prerequisites, invocation, and expected success
output when they are necessary to run a command. Verify examples when feasible;
report when they have not been executed.

Put permissions, secret handling, destructive effects, concurrency limits,
timeouts, ordering, retries, and recovery beside the affected step when mistakes
have consequences. Separate development, test, and production behavior. Never
include real credentials. Remove explanation before removing information needed
for a command to succeed safely. Keep internal orchestration in its owning flow
or reference unless the operator needs it to make a decision.

## Edit and verify

Correct inaccurate or unsafe claims first, add missing requirements or failure
handling, then remove repetition and tighten prose. Update current docs with the
behavior they describe; mark a page stale with a source-of-truth link if a full
update cannot be completed. Preserve historical specs and user-owned Manual Notes
in source. The site omits document Changelogs and empty Manual Notes. Do not
rewrite history to match later implementation.

Check commands, examples, terminology, local links, and navigation. For
documentation-only changes, use formatting, builds, link checks, and visual
inspection; do not add or run tests. Report checks run and gaps.

For a review, cite the conflicting text, explain its consequence, and suggest
the smallest correction. Order findings by reader impact, distinguish
correctness from optional polish, and state what evidence was checked. Say when
no actionable findings remain.

## Provenance

Adapted from Docy's core technical-writing and document-lifecycle guidance,
developer documentation, concise instructions, and specification references.
The repository maintains this self-contained selection; see the developer-skills
catalog for source details. Docy's CLI and personal installation are not required.
