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.
Creates or updates technical blueprint documentation for systems, APIs, and architecture. Triggers when you're building new features, modifying APIs, or documenting complex systems. Always searches existing blueprints first to avoid duplication, then writes structured documentation with proper frontmatter.
/plugin marketplace add TheBushidoCollective/han/plugin install hashi-blueprints@hanThis 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 }
Master authentication and authorization patterns including JWT, OAuth2, session management, and RBAC to build secure, scalable access control systems. Use when implementing auth systems, securing APIs, or debugging security issues.