Use when creating or updating technical blueprint documentation for new features, API changes, or architectural modifications. Always use search_blueprints first to avoid duplication, then write_blueprint with proper structure.
Limited to specific tools
Additional assets for this skill
This skill is limited to using the following tools:
Technical blueprints document how systems work internally. They differ from user documentation (how to use) and README files (project overview).
Write blueprints for:
Skip blueprints for:
IMPORTANT: Always use the write_blueprint MCP tool to create or update blueprints. This automatically adds the required frontmatter.
// Before writing, search for existing blueprints
const existing = await search_blueprints({ keyword: "auth" });
// Read existing blueprint if updating
const current = await read_blueprint({ name: "authentication" });
// Write or update the blueprint
await write_blueprint({
name: "system-name",
summary: "Brief one-line description",
content: "# System Name\n\n## Overview\n..."
});
The MCP tool handles frontmatter automatically - you just provide the content.
When writing blueprint content (passed to write_blueprint), use this structure:
# System Name
One-line description of what this system does.
## Overview
2-3 paragraphs covering:
- Why this system exists (problem it solves)
- What it does at a high level
- Where it fits in the larger architecture
## Architecture
### Components
List major components:
- **ComponentA** - Purpose and responsibility
- **ComponentB** - Purpose and responsibility
### Data Flow
Describe how data moves through the system:
1. Input arrives via X
2. ComponentA processes and transforms
3. Result passed to ComponentB
4. Output returned/stored
### Dependencies
- **Dependency** - Why it's needed, what it provides
## API / Interface
### Functions
#### `functionName(param1, param2)`
Clear description of what the function does.
**Parameters:**
- `param1` (Type) - What this parameter controls
- `param2` (Type, optional) - Default behavior if omitted
**Returns:** Type - Description of return value
**Throws:** ErrorType - When this error occurs
**Example:**
```typescript
const result = functionName('value', { option: true });
| Option | Type | Default | Description |
|---|---|---|---|
optionA | boolean | false | What it controls |
Step-by-step description of typical execution flow.
How the system responds to:
Document non-obvious behaviors:
Key files and their roles:
src/main.ts:1-50 - Entry point, initializationsrc/processor.ts - Core processing logicsrc/types.ts - Type definitions
## Writing Style
### Be Precise
Bad: "The system handles errors gracefully"
Good: "Invalid input returns a ValidationError with the field name and reason"
### Document Behavior, Not Implementation
Bad: "Uses a for loop to iterate through items"
Good: "Processes items sequentially, stopping at the first failure"
### Include Examples
Show, don't just tell:
```typescript
// Good: concrete example
const result = processItems(['a', 'b', 'c'], { parallel: true });
// Returns: { processed: 3, failed: 0 }