Transform approved requirements into comprehensive technical designs. Define system architecture, component interactions, data models, and interfaces to create a blueprint for implementation.
/plugin marketplace add jasonkneen/kiro/plugin install jasonkneen-kiro-spec-driven@jasonkneen/kiroThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Create technical blueprints that bridge requirements and implementation. This skill teaches how to document architecture decisions, component design, and system interactions.
Use design documentation when:
# Design Document: [Feature Name]
## Overview
[High-level summary of the feature and approach]
## Architecture
[System architecture and component overview]
## Components and Interfaces
[Detailed component descriptions and interactions]
## Data Models
[Data structures and relationships]
## Error Handling
[Error scenarios and response strategies]
## Testing Strategy
[Testing approach and quality assurance]
Before designing, ensure you understand:
Analysis Questions:
Identify areas needing research:
Research Documentation:
## Research Findings
### [Topic]
**Sources:** [Links/references]
**Key Insights:**
- [Finding 1]
- [Finding 2]
**Impact on Design:** [How this affects our approach]
Document the high-level structure:
## Architecture
### System Overview
[How the overall system works]
### Component Architecture
[Major components and their responsibilities]
### Data Flow
[How information moves through the system]
### Technology Decisions
[Key technology choices and rationale]
Architecture Diagram (Mermaid):
graph TD
A[Client] --> B[API Gateway]
B --> C[Auth Service]
B --> D[Feature Service]
D --> E[Database]
D --> F[Cache]
For each major component:
## Components and Interfaces
### [Component Name]
**Purpose:** [What this component does]
**Responsibilities:**
- [Responsibility 1]
- [Responsibility 2]
**Interfaces:**
- Input: [What it receives]
- Output: [What it produces]
- Dependencies: [What it requires]
**API Definition:**
```typescript
interface ComponentName {
method(input: InputType): Promise<OutputType>;
}
### Step 5: Define Data Models
Document all data structures:
```markdown
## Data Models
### [Entity Name]
**Purpose:** [What this entity represents]
**Properties:**
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| id | string | Yes | Unique identifier |
| name | string | Yes | Display name |
| createdAt | Date | Yes | Creation timestamp |
**Validation Rules:**
- [Rule 1]
- [Rule 2]
**Relationships:**
- [Relationship to other entities]
**Example:**
```json
{
"id": "abc123",
"name": "Example",
"createdAt": "2024-01-15T10:30:00Z"
}
### Step 6: Plan Error Handling
Document error scenarios:
```markdown
## Error Handling
### Error Categories
1. **Validation Errors:** Invalid user input
2. **Authentication Errors:** Unauthorized access
3. **External Service Errors:** Third-party failures
4. **System Errors:** Internal failures
### Error Response Strategy
| Error Type | HTTP Code | User Message | System Action |
|------------|-----------|--------------|---------------|
| Validation | 400 | Specific field error | Log, return details |
| Auth | 401 | "Please log in" | Redirect to login |
| Not Found | 404 | "Resource not found" | Log, return error |
| Server | 500 | "Something went wrong" | Log, alert, retry |
### Recovery Mechanisms
- [Retry strategies]
- [Fallback behaviors]
- [Circuit breaker patterns]
## Testing Strategy
### Unit Testing
- **Coverage Target:** 80%+
- **Focus Areas:** [Critical business logic]
- **Mocking Strategy:** [What to mock]
### Integration Testing
- **Scope:** [Component interactions to test]
- **Environment:** [Test environment setup]
- **Data Strategy:** [Test data approach]
### End-to-End Testing
- **Critical Paths:** [User journeys to test]
- **Tools:** [Testing tools]
### Performance Testing
- **Load Targets:** [Expected load]
- **Benchmarks:** [Performance requirements]
Document key decisions using this template:
### Decision: [Brief Title]
**Context:** [Situation requiring a decision]
**Options Considered:**
**Option 1: [Name]**
- Pros: [Benefits]
- Cons: [Drawbacks]
- Effort: [Low/Medium/High]
**Option 2: [Name]**
- Pros: [Benefits]
- Cons: [Drawbacks]
- Effort: [Low/Medium/High]
**Decision:** [Chosen option]
**Rationale:** [Why this option was selected]
**Implications:** [What this means for implementation]
### Decision: API Architecture
**Options:**
1. **REST API** - Standard HTTP methods, well-understood
2. **GraphQL** - Flexible queries, single endpoint
3. **RPC-style** - Direct operation mapping
**Decision:** REST API
**Rationale:** Standard CRUD operations, team familiarity, good tooling support
### Decision: Database Choice
**Options:**
1. **PostgreSQL** - ACID compliance, complex queries
2. **MongoDB** - Schema flexibility, horizontal scaling
3. **Redis** - High performance, limited queries
**Decision:** PostgreSQL with JSON columns
**Rationale:** Data consistency needs + flexibility for user preferences
### Decision: Authentication Strategy
**Options:**
1. **Session-based** - Server-controlled, simple
2. **JWT tokens** - Stateless, scalable
3. **OAuth 2.0** - External provider, no password management
**Decision:** JWT with refresh token rotation
**Rationale:** Scalability requirements, API-first architecture
Before finalizing design:
Completeness:
Clarity:
Feasibility:
Traceability:
# Design Document: User Profile Management
## Overview
Enable users to view and edit their profile information, including personal details, preferences, and profile picture.
## Architecture
### Component Architecture
┌─────────────┐ ┌──────────────┐ ┌─────────────┐ │ Client │────▶│ Profile API │────▶│ Database │ └─────────────┘ └──────────────┘ └─────────────┘ │ ▼ ┌──────────────┐ │ Image Store │ └──────────────┘
### Technology Stack
- API: Node.js with Express
- Database: PostgreSQL
- Image Storage: S3-compatible object storage
- Cache: Redis for session data
## Components
### ProfileService
**Purpose:** Manage user profile CRUD operations
**Interface:**
```typescript
interface ProfileService {
getProfile(userId: string): Promise<UserProfile>;
updateProfile(userId: string, data: ProfileUpdate): Promise<UserProfile>;
uploadAvatar(userId: string, image: File): Promise<string>;
deleteAvatar(userId: string): Promise<void>;
}
| Field | Type | Required | Validation |
|---|---|---|---|
| id | UUID | Yes | Auto-generated |
| string | Yes | Valid email format | |
| displayName | string | Yes | 2-50 characters |
| bio | string | No | Max 500 characters |
| avatarUrl | string | No | Valid URL |
| preferences | JSON | No | Valid JSON object |
| updatedAt | timestamp | Yes | Auto-updated |
| Scenario | Response | Action |
|---|---|---|
| Profile not found | 404 | Return error message |
| Invalid update data | 400 | Return validation errors |
| Image too large | 413 | Return size limit error |
| Unauthorized | 401 | Redirect to login |
## Next Steps
After completing design:
1. Get design review and approval
2. Move to Task Planning phase
3. Break design into implementation tasks
4. Begin systematic implementation
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.