Skip to main content
skill CX Codex

pragmatic-writing — Claude Code skill: technical writing style

A skill that pushes the agent toward the prose style of The Pragmatic Programmer and Joel on Software. Useful for essays, docs and tutorials.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add robertguss/claude-code-toolkit --skill pragmatic-writing -a claude-code
Open on GitHub

What pragmatic-writing does

The skill kicks in whenever the agent drafts technical prose: blog posts, documentation, explanations of tricky concepts, lessons-learned write-ups. Instead of opening with a definition, it opens with a concrete case and pulls the principle out of it afterward.

Ten techniques are spelled out: concrete before abstract, physical analogies, conversational register, humor used on purpose, an aha-moment structure, short paragraphs, runnable code as evidence, a boxed principle, friendly warnings about pitfalls, and a callback to the opening. A pre-publish checklist and a list of common technical writing mistakes come with it. Supporting material sits in references/ next to SKILL.md.

It runs on Claude, Codex, Cursor, GitHub Copilot, Gemini CLI and OpenCode. Most installs go through npx skills add; Copilot uses gh skill install instead. The register is deliberately chatty, with contractions and questions aimed at the reader. If your style guide demands a formal tone, this skill will pull drafts the other way.

What it helps with

  • write a technical post people finish reading
  • explain a hard concept through an everyday analogy
  • build a tutorial with runnable code samples
  • rewrite dry documentation in a livelier voice
  • turn an incident review into lessons that stick

Example prompts for the agent

  • Write a blog post about adding a job queue, pragmatic-writing style
  • Explain why database migrations matter, pragmatic-writing style
  • Rewrite this doc in pragmatic-writing style, start with an example

How to install pragmatic-writing

1Skills CLI (Vercel)

npx skills add robertguss/claude-code-toolkit --skill pragmatic-writing -a claude-code

2Manually: put the files in place

~/.claude/skills/pragmatic-writing/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/pragmatic-writing/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about pragmatic-writing

How do I install pragmatic-writing in Claude Code?

Run npx skills add robertguss/claude-code-toolkit --skill pragmatic-writing -a claude-code. The skill file lands at ~/.claude/skills/pragmatic-writing/SKILL.md.

What does pragmatic-writing do?

It gives the agent a technical writing style modeled on Andy Hunt, Dave Thomas and Joel Spolsky. Drafts move from a concrete example to the principle and keep a conversational tone.

Which platforms support the skill?

Claude, Codex, Cursor, GitHub Copilot, Gemini CLI and OpenCode. Copilot takes a different command: gh skill install robertguss/claude-code-toolkit pragmatic-writing.

Source text

SKILL.md · MIT
---
name: pragmatic-writing
description: This skill should be used when writing technical content in the style of Hunt/Thomas (The Pragmatic Programmer) and Joel Spolsky (Joel on Software). It applies when creating technical essays, documentation, tutorials, or explanatory content that needs to be clear, engaging, and actionable.
---

# Pragmatic Writing Skill

Writing style modeled on the masters of technical communication: Andy Hunt, Dave Thomas (The Pragmatic Programmer), and Joel Spolsky (Joel on Software). This skill transforms technical content into engaging, memorable prose.

## When to Use This Skill

This skill applies when:
- Creating technical blog posts, essays, or articles
- Writing documentation that needs personality
- Explaining complex concepts to developers
- Crafting tutorials or how-to guides
- Writing "lessons learned" or postmortem content
- Any technical writing that should be read, not just referenced

## Core Philosophy

> "The difference between 'almost right' and 'right' is the difference between the lightning bug and the lightning." — Mark Twain (quoted by Pragmatic Programmers)

Technical writing doesn't have to be dry. The best technical writers make complex ideas feel obvious, use concrete examples before abstract theory, and treat the reader as a smart colleague.

## The 10 Core Techniques

Reference the complete technique guide at [techniques.md](./references/techniques.md).

### 1. Concrete Before Abstract

**Always** start with a concrete example, then extract the principle.

```
❌ "Dependency injection is a design pattern where dependencies are passed
    to objects rather than created by them."

✅ "Imagine your class needs a database connection. You could create it
    yourself:

    def initialize
      @db = Database.new("localhost:5432")
    end

    But now your class is stuck with that exact database. What if you
    want to test with a fake one? What if production uses a different host?

    Instead, accept it as a parameter:

    def initialize(db)
      @db = db
    end

    That's dependency injection. Simple."
```

### 2. Physical Analogies

Map abstract concepts to physical experiences readers already understand.

See [examples.md](./references/examples.md) for analogy patterns:
- Software abstractions → Physical tools
- Code patterns → Architectural patterns
- System design → Everyday systems (postal service, restaurants)

### 3. Conversational Register

Write like you're explaining to a smart colleague at a whiteboard.

**Markers of conversational register:**
- Contractions (don't, won't, can't)
- Direct address (you, your)
- Questions (But what if...? Why does this matter?)
- Asides (By the way, Incidentally)
- Admissions (To be honest, I'm not sure, It depends)

### 4. Humor as Architecture

Use humor strategically, not decoratively:
- Memorable hooks ("Good code is its own best documentation")
- Tension release after complex explanations
- Self-deprecation to build rapport
- Absurdist examples to highlight bad patterns

### 5. The "Aha!" Structure

Build to moments of realization:
1. Present a familiar problem
2. Show the common (flawed) approach
3. Reveal why it fails
4. Present the insight
5. Show the better way
6. Connect back to the principle

### 6. Short Paragraphs, Varied Length

- No paragraph over 4 sentences
- Alternate between longer explanations and punchy one-liners
- Use single-sentence paragraphs for emphasis

Like this.

### 7. Code as Evidence

Code examples should:
- Be runnable (no pseudo-code unless necessary)
- Be minimal (show only what matters)
- Progress from broken to fixed
- Include comments only for non-obvious things

### 8. The Principle Box

After a concrete exploration, box the principle:

> **Tip 23: Always Design for Concurrency**
> Allow for concurrency, and you will design cleaner interfaces with fewer assumptions.

### 9. Friendly Warnings

When discussing pitfalls:
- Acknowledge you've made the mistake too
- Explain why it's tempting
- Show the consequences
- Provide the escape hatch

See [anti-patterns.md](./references/anti-patterns.md) for common technical writing mistakes.

### 10. The Callback

End by connecting back to the opening example or question. Close the loop.

## Voice Characteristics

### Sentence Patterns
- Average length: 15-20 words
- Mix of simple, compound, complex
- Questions every 3-4 paragraphs
- Direct statements for key points

### Vocabulary
**Use**: specific, concrete, everyday words
**Avoid**: jargon without explanation, buzzwords, corporate-speak

### Tone
- Confident but not arrogant
- Curious and exploratory
- Practical and results-focused
- Occasionally irreverent

## Applying the Skill

### For Blog Posts
1. Open with a problem or scenario
2. Explore the messy middle
3. Reveal the insight
4. Show the solution
5. Extract the principle
6. Callback to opening

### For Documentation
1. Start with what the reader wants to do
2. Show the simplest working example
3. Expand with options and edge cases
4. Explain the "why" after the "how"

### For Tutorials
1. State the goal clearly
2. Show the end result first
3. Build up in small, testable steps
4. Explain mistakes, not just successes

## Quality Checklist

Before publishing, verify:
- [ ] Opens with concrete example or scenario
- [ ] Physical analogy for key concepts
- [ ] Conversational tone throughout
- [ ] At least one moment of humor or levity
- [ ] Principles boxed or highlighted
- [ ] Code examples are minimal and runnable
- [ ] Paragraphs under 4 sentences
- [ ] Callbacks to opening

## References

- [techniques.md](./references/techniques.md) - Full technique guide with examples
- [examples.md](./references/examples.md) - Before/after transformations
- [anti-patterns.md](./references/anti-patterns.md) - Seven deadly sins of technical writing
- [sources.md](./references/sources.md) - Original source material

© robertguss · MIT · robertguss/claude-code-toolkit

Similar skills

All skills for Writing and docs →

From the same set6

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor