Spec Kitty uses the Divio documentation system to organize its docs. This document explains why we chose this system and how it works.
Most documentation suffers from mixed concerns:
Common problems:
The result:
The Divio system identifies four distinct types of documentation, each serving a different purpose:
Purpose: Teach a beginner through doing.
Characteristics:
Spec Kitty example: “Your First Feature with Spec Kitty” - walks through creating a feature from start to finish
Purpose: Help accomplish a specific goal.
Characteristics:
Spec Kitty example: “How to Review a Work Package” - steps to review, without explaining why review matters
Purpose: Describe the machinery.
Characteristics:
Spec Kitty example: “CLI Reference” - all commands, flags, and options documented
Purpose: Help understand concepts.
Characteristics:
Spec Kitty example: This document you’re reading right now
PRACTICAL THEORETICAL
↓ ↓
┌───────────────────────────┬───────────────────────────┐
│ │ │
STUDYING │ TUTORIALS │ EXPLANATIONS │
│ (learning-oriented) │ (understanding-oriented) │
│ │ │
│ "Follow along to │ "Why does this work │
│ learn X" │ this way?" │
│ │ │
├───────────────────────────┼───────────────────────────┤
│ │ │
WORKING │ HOW-TO GUIDES │ REFERENCE │
│ (task-oriented) │ (information-oriented) │
│ │ │
│ "Steps to │ "Complete list of │
│ accomplish X" │ all options" │
│ │ │
└───────────────────────────┴───────────────────────────┘
Different users need different things at different times:
| User State | Need | Doc Type |
|---|---|---|
| New to Spec Kitty | Learn the basics | Tutorial |
| Need to do something specific | Practical steps | How-To |
| Looking up a specific flag | Accurate information | Reference |
| Want to understand design decisions | Context and reasoning | Explanation |
The same user might need all four types at different times:
docs/
├── tutorial/ # Learning-oriented
│ ├── first-feature.md # Your first feature end-to-end
│ ├── working-with-agents.md # Multi-agent basics
│ └── ...
│
├── how-to/ # Task-oriented
│ ├── review-work-package.md # How to review
│ ├── resolve-conflicts.md # How to handle merge conflicts
│ └── ...
│
├── reference/ # Information-oriented
│ ├── cli-reference.md # All commands and flags
│ ├── configuration.md # All config options
│ └── ...
│
└── explanation/ # Understanding-oriented
├── spec-driven-development.md
├── divio-documentation.md # (this file)
├── workspace-per-wp.md
└── ...
Each doc type links to related docs of other types:
When writing tutorials:
When writing how-tos:
When writing reference:
When writing explanations:
Bad (tutorial mixed with reference):
# Getting Started
Run `spec-kitty init`. This command accepts the following flags:
--force, --quiet, --verbose, --config=PATH, --mission=TYPE...
[100 lines of flag documentation]
Good (tutorial with link to reference):
# Getting Started
Run `spec-kitty init` to set up your project.
For all available options, see the [CLI Reference](/spec-kitty/reference/cli-commands.html#spec-kitty-init).
Bad (explanation when user needs how-to):
# How to Resolve Merge Conflicts
First, let's understand why merge conflicts occur. When Git
encounters changes to the same file from different branches,
it cannot automatically determine which changes to keep...
[500 words of theory]
Good (how-to focused on doing):
# How to Resolve Merge Conflicts
1. Identify conflicting files: `git status`
2. Open each file and find `<<<<<<<` markers
3. Choose which changes to keep
4. Remove conflict markers
5. Stage and commit: `git add . && git commit`
For background on why conflicts occur, see [Git Worktrees Explained](/spec-kitty/explanation/git-worktrees.html).
This document explains why we use Divio. For how to write documentation, see the tutorials and how-to guides.