pragmatic-writing

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.

56 stars

Best use case

pragmatic-writing is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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.

Teams using pragmatic-writing should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/pragmatic-writing/SKILL.md --create-dirs "https://raw.githubusercontent.com/robertguss/claude-code-toolkit/main/plugins/compound-writing/skills/pragmatic-writing/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/pragmatic-writing/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How pragmatic-writing Compares

Feature / Agentpragmatic-writingStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 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

Related Skills

writing-dna-discovery

56
from robertguss/claude-code-toolkit

Capture a writer's voice DNA through collaborative interview and sample analysis. Use when someone wants to document their writing voice for use with a ghost writer skill. Produces a Voice DNA Document with patterns, anti-patterns, and actionable guidance. Handles one register/mode per session, supports refinement over time.

writing-orchestration

56
from robertguss/claude-code-toolkit

This skill should be used when orchestrating complex writing workflows with multiple phases. It provides two-agent orchestration patterns, the two-gate content readiness assessment, 10 baseline writing strategies, 20+ situational strategies, and quality checkpoints. Inspired by the Spiral Writing System.

dhh-writing

56
from robertguss/claude-code-toolkit

This skill should be used when writing in the distinctive style of David Heinemeier Hansson (DHH). It applies when creating blog posts, technical articles, business content, manifestos, or any prose requiring a clear, punchy, opinionated style.

ghost-writer

56
from robertguss/claude-code-toolkit

Produce first drafts that match a writer's authentic voice using their Voice DNA Document. Consumes DNA documents from writing-dna-discovery skill. Generates 2 meaningfully different drafts with headlines, confidence assessment, decision notes, and DNA refinement suggestions. Collaborative partner that evaluates, pushes back, and advocates for quality. Handles blog posts, essays, newsletters, and more.

chapter-architect

56
from robertguss/claude-code-toolkit

Plan and architect a single chapter at beat-level granularity. Use when you have a chapter from the Architecture Document and need to create a detailed outline before drafting. Produces a Chapter Outline Document for use by draft-coach or ghostwriter.

book-research-assistant

56
from robertguss/claude-code-toolkit

Plan, orchestrate, and validate deep research for nonfiction books. Use when an author has completed book architecture and needs to fill research gaps before outlining chapters. Triggers include requests to plan research, generate research prompts, validate research quality, or prepare for drafting. This skill does everything around deep research—planning, prompting, validating, synthesizing—but the actual research execution happens externally via Claude and Gemini deep research. Requires upstream documents from book-architect (Research Gaps Document, Master Architecture Document, Section Blueprints) and book-ideation (Book Concept Document).

book-market-research

56
from robertguss/claude-code-toolkit

Assess commercial viability of book concepts for Amazon KDP self-publishing. Use when the user has a Book Concept Document and wants to understand market demand, competition, pricing, and positioning before committing to write. Produces a Market Research Report with viability scorecard and Go/No-Go recommendation. Works standalone (commercial analysis only) or after idea-validator (integrated assessment). Nonfiction only.

book-ideation

56
from robertguss/claude-code-toolkit

Develop raw book ideas into structured nonfiction book concepts. Use when the user wants to develop a book idea, has brainstorm documents to refine into a book concept, wants to articulate a book's thesis/promise/reader/transformation, or needs to prepare a book concept for validation and market research. Nonfiction only. Produces a Book Concept Document with all elements needed for downstream skills (idea-validator, market-research, book-architect).

book-idea-validator

56
from robertguss/claude-code-toolkit

Stress-test book concepts against existing research before committing to architecture. Use when the user has a Book Concept Document ready for validation, wants to verify their thesis is defensible, needs to understand the competitive intellectual landscape, or wants honest assessment of their idea's strengths and weaknesses. Produces a Validation Report that informs the Go/No-Go decision. Nonfiction only.

book-architect

56
from robertguss/claude-code-toolkit

Design the structural and emotional architecture for nonfiction books. Use when an author has a validated book concept and needs to create the blueprint before drafting. Triggers include requests to structure a book, create a chapter outline, design a table of contents, map the reader's journey, or plan book organization. Requires upstream documents from book-ideation (Book Concept Document) and optionally from idea-validator (Validation Report) and market-research (Market Research Report).

paywall-pricing-optimizer

56
from robertguss/claude-code-toolkit

Design effective paywalls, structure subscription tiers, and optimize pricing for mobile apps. Covers monetization model selection, paywall screen design, pricing psychology, A/B testing strategy, and RevenueCat/StoreKit/Google Billing integration. Use when the user wants to monetize an app, design a paywall, choose between subscription vs one-time purchase, set pricing tiers, improve conversion rates, plan pricing experiments, or integrate in-app purchases. Triggers on "design my paywall", "how should I price my app", "subscription tiers", "monetization strategy", "paywall copy", "free trial length", "RevenueCat setup", "improve paywall conversion".

mobile-app-launch-checklist

56
from robertguss/claude-code-toolkit

Comprehensive step-by-step launch checklist for shipping mobile apps to the iOS App Store and Google Play Store. Covers pre-submission preparation, store asset creation, build and submission, launch day execution, and post-launch monitoring. Use when the user wants to launch a mobile app, prepare for App Store or Google Play submission, create a launch plan, review submission requirements, or ensure nothing is missed before releasing an app. Triggers on "launch checklist", "app submission", "prepare for launch", "app store submission", "google play submission", "ready to ship", "pre-launch review", "launch day plan".