Technical Writing logo

Technical Writing

Community
citypaul
technical-writing

Writing developer-facing prose that can be skimmed first and trusted enough to finish — READMEs, guides, tutorials, reference docs, proposals, PR descriptions, release notes. Load before drafting, rewriting, restructuring, or editing technical documents, when a doc reads as a wall of text, claims need receipts, or docs must serve AI agents. Covers reader-first structure, falsifiable claims, docs-as-behavior verification, and agent-readable reference shape. For sentence-level voice or generic AI-shaped prose use clarity; for plain English, lay readers, translation, or ASD-STE100 use simple-english; for recording a learning use expectations; for diagrams use diagrams; for API semantics use api-design; for CLI help use cli-design.

Overview

Publishercitypaul
Repository.dotfiles
Skill nametechnical-writing
Stars
740
Forks
96
Bundled files
6
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 6 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by citypaul on GitHub. Read the source before you install it.

Installation

Install the Technical Writing AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/citypaul/.dotfiles/tree/main/claude/.claude/skills/technical-writing
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/citypaul/.dotfiles.git /tmp/.dotfiles
mkdir -p .claude/skills
cp -r /tmp/.dotfiles/claude/.claude/skills/technical-writing .claude/skills/technical-writing
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Technical Writing in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Technical Writing on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Technical Writing is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Technical Writing: Skimmed First, Trusted Enough to Finish

Developers skim before they commit. A document earns the full read by answering three questions in its first screen: what is this, why should I care, and how do I start. Everything below serves that contract.

ResourceLoad when...
resources/doc-types.mdChoosing what KIND of page to write — the four Diátaxis modes, tutorial-vs-how-to, the types the model omits, minimalism scoped per type
resources/readme.mdWriting or overhauling a README — the cognitive funnel, short-vs-long resolved, README-driven development
resources/docs-quality.mdMaking docs enforceable — prose lint, executable examples, link checking, friction logs, timeless-docs, every-page-is-page-one
resources/agent-docs.mdDocs serving AI agents — the honest llms.txt verdict, markdown endpoints, RAG-chunkable pages
resources/formatting.mdStructural rules — titles, headings, paragraphs, lists, intros/outros, tables of contents
resources/references.mdSources for every claim above

One Primary Reader Job Per Page

Choose the page's primary reader job: tutorial, how-to, reference, or explanation (Diátaxis; its honest limits live in resources/doc-types.md). Supporting material may cross a boundary when that helps the same job. Split the page when mixed purposes make the next action, completeness contract, or intended audience unclear.

Principles

  • Reader-first — lead with the payoff; the reader's next action is the organizing principle, not the system's internal structure. Name things by what readers recognize, not how the code is built.
  • Scannable — clear headings that summarize their section's payoff, short paragraphs, purposeful emphasis. Add a heading when it gives a skimmer a useful landmark; do not optimize for a word-count quota.
  • Plain and direct — active voice, second person for instructions, short sentences for complex ideas. Complete sentences beat fragments and arrow chains: readable matters more than terse.
  • Selective, not compressed — the way to keep a doc short is to cut what doesn't change the reader's next step, never to compress the prose into jargon the reader must decode.

Material Claims Need Receipts

Make material capability, current-state, compatibility, and quantitative claims checkable. Explanatory prose, clearly labelled judgment, and normative design rationale do not need a fake command or date; unsupported promotional claims do.

  • No capability claim without evidence: numbers a reader can verify, a command they can run, a file they can open. "Fast" is marketing; "the gates run in 14 seconds on this repo's CI" is a claim with a receipt.
  • Counts and versions rot: changing operational numbers quoted in prose (test counts, coverage, versions) are maintenance liabilities — either generate it, date it, or bind it to the kept-current rule (updating it is part of every change's definition of done).
  • Honest limits are content, not confession: when the page's scope could imply protection, coverage, or capability it does not provide, name those limits where the reader makes the decision. A short document need not grow a ceremonial limits section when its bounded scope is already explicit.
  • Idle and empty states must speak: "0 items processed" that reads like success is a lie of layout. Distinguish "nothing to do" from "did nothing" everywhere output appears in docs and examples.
  • Timeless maintained guidance: evergreen READMEs and reference docs avoid unowned "coming soon", "currently", or "new in…" labels. Release notes, migration guides, deprecation notices, and time-bounded status pages may need temporal language; attach a version/date and an owner or removal condition so it remains evidence instead of stale promotion.

Docs Are Behavior — Verify Them

A document that describes a system is a claim about that system, and claims get verified:

  • Verify against the source, not memory: every material flag, exit code, config key, and executable command a doc asks readers to rely on is checked against the code before it ships. Execute the claim when doing so is safe, authorized, and proportionate; otherwise record the evidence gap.
  • Machine-check what machines can check: table-of-contents anchors against the renderer's real slug rules, links against files, command examples against the binary. Hand-verification is the fallback, not the default.
  • Update docs in the same reviewable change: a behavior change that leaves its documentation stale is incomplete work. Follow the repository's commit policy rather than imposing one globally.

Maintained Docs Describe Current Truth

Use resources/docs-quality.md for the full state-based lifecycle and Git-archaeology workflow.

  • Keep plans and specification workspaces only while their outcomes remain unfinished. Delete them when the outcome ships or their assumptions are superseded; Git history is the archive.
  • Promote lasting constraints to their current owner: source or executable tests for behavior, accepted ADRs for architecture decisions, package or operational docs for maintained procedures, and the authoritative glossary for domain vocabulary.
  • Do not make maintained docs depend on deleted specifications or unexplained delivery identifiers. Introduce the purpose in plain language before any genuinely necessary issue, PR, task, requirement, specification, or ADR identifier.
  • Give documentation indexes a clear starting point and distinguish current authority, active work, decisions, and historical evidence. Prefer a small navigable set of trusted pages; delete duplicated, obsolete, speculative, generated, or unowned prose.
  • Documentation-only changes do not inherently require TDD. Any executable documentation guard still needs a focused test proving it can fail.

Writing for AI Agents Too

Developer docs now have two audiences. Agent-readable means:

  • Enumerable over prose-only: anything an agent must choose from — options, flags, exit codes, states — appears in a table row, not only inside a paragraph.
  • Preconditions and postconditions per operation: what must be true before, what changes after, what exit codes mean. A state-machine table ("in state X, the one correct next action is Y") outperforms narrative for both audiences.
  • Exact strings: agents (and humans under pressure) copy-paste. Give the exact command, the exact config block, the exact error message — never a paraphrase.

Document Shapes

  • README / landing: first screen answers what/why/how-to-start; table of contents when it materially improves navigation; quickstart as one coherent journey in true order; honest limits before credits.
  • Tutorial: state the destination up front ("you will have X working"); number steps; every step's output shown so readers know they're on track; end with where to go next.
  • Reference: completeness over narrative; one entry per flag/option/state; generated where possible; agent-readable tables.
  • Proposal / design doc: the decision requested up front, options with honest trade-offs, a recommendation with reasoning, and what evidence would change it.
  • PR description / release notes: what changed for the READER of the change (behavior, migration), not a commit-log paraphrase.

Boundaries

SituationSkill
Choosing and authoring diagramsdiagrams
REST/API reference semantics (errors, pagination, versioning)api-design
CLI help text, exit codes, output designcli-design
Documenting expectations, gotchas, decisions while freshexpectations
Domain vocabulary in proseubiquitous-language (where installed)
Sentence-level voice, generic prose, or AI-shaped writingclarity (where installed)
Plain English, lay readers, translation, or ASD-STE100simple-english (where installed)

Verification Checklist

  • First screen answers what / why / how-to-start
  • Headings summarize payoffs; a ToC is present where warranted and its anchors are machine-checked
  • Material capability/current-state/quantitative claims carry a receipt or date; promotional claims have evidence
  • Commands, flags, and executable examples readers rely on are verified against source and run where feasible
  • Material limits appear where implied scope could otherwise mislead
  • Enumerable facts appear in tables; exact strings given for anything copy-pasteable
  • Counts/versions bound to the kept-current rule or generated
  • Doc changes ride the same reviewable change as the behavior they describe
  • Maintained docs describe current truth; completed or superseded workspaces are deleted
  • Lasting constraints live with their current owner, not only in historical delivery artifacts
  • Indexes distinguish current authority, active work, decisions, and history

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Technical Writing AI skill do?

Writing developer-facing prose that can be skimmed first and trusted enough to finish — READMEs, guides, tutorials, reference docs, proposals, PR descriptions, release notes. Load before drafting, rewriting, restructuring, or editing technical documents, when a doc reads as a wall of text, claims need receipts, or docs must serve AI agents. Covers reader-first structure, falsifiable claims, docs-as-behavior verification, and agent-readable reference shape. For sentence-level voice or generic AI-shaped prose use clarity; for plain English, lay readers, translation, or ASD-STE100 use simple-e...

Why use Technical Writing on TypingMind?

Because you install it once and use it with any model. Technical Writing is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Technical Writing in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/citypaul/.dotfiles/tree/main/claude/.claude/skills/technical-writing. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Technical Writing?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Technical Writing?

As many as you like. As long as a model supports skills, you can use Technical Writing with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Technical Writing AI skill free?

It is published on GitHub by citypaul. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇