From active-skills
Use when starting new feature work, building a new system or module, or when the user asks how something should be designed or architected. Triggers on phrases like 'design this', 'how should we build', 'plan the architecture', 'think through the approach', 'write a design doc', 'what's the right way to implement', or any request that involves deciding *how* something should work before writing code. Also use when the user provides requirements or a spec and expects a structured design rather than jumping straight to implementation. This skill MUST be used before implementation begins on any non-trivial feature — if the work touches more than one file or introduces a new abstraction, design first.
How this skill is triggered — by the user, by Claude, or both
Slash command
/active-skills:code-designThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill produces a design document that captures the _why_, _what_, and _how_ of a piece of work before any code is written. The goal is to surface bad assumptions, missing requirements, and architectural mismatches early — when they are cheap to fix.
This skill produces a design document that captures the why, what, and how of a piece of work before any code is written. The goal is to surface bad assumptions, missing requirements, and architectural mismatches early — when they are cheap to fix.
Before proposing anything, understand what already exists. Skipping this phase leads to designs that ignore existing patterns, duplicate abstractions, or conflict with conventions already established in the codebase.
Good designs come from good requirements. This phase turns vague asks into concrete, testable statements.
This is where the actual architecture gets proposed. Every decision must be accompanied by its rationale — a design without reasoning is just a guess that happens to be written down.
Describe the high-level structure. Include:
If the design introduces or modifies persistent data:
If the design exposes an interface (HTTP API, CLI, library API, event contract):
For each significant choice, document:
| Decision | Choice | Alternatives Considered | Rationale |
|---|---|---|---|
| What was decided | What was chosen | What else was viable | Why this option wins |
This table is the most valuable part of the design. It captures institutional knowledge that would otherwise live only in someone's head. Future readers can understand not just what was built, but why — and whether the original reasoning still holds.
Reference design patterns only when they solve a specific problem identified in this design. Do not list patterns for the sake of listing them.
For each pattern used:
Every design makes trade-offs. Making them explicit prevents surprises during implementation.
Bridge the gap between design and code. This section makes the design actionable.
Produce a single markdown file with this structure:
# Design: [Feature/System Name]
**Status:** Draft | In Review | Approved
**Author:** [name]
**Date:** [date]
## Context
[Why this work is happening — the problem or opportunity]
## Landscape
[What exists today — relevant codebase patterns, existing systems, constraints]
## Requirements
### Functional
### Non-Functional
### Constraints
### Out of Scope
### Open Questions
## Design
### Architecture Overview
### Data Model
### API / Interface Design
### Key Decisions
### Patterns
## Risks and Trade-offs
## Implementation Approach
### Phases
### Testing Strategy
### Migration Plan
Not every section applies to every design. Omit sections that are genuinely irrelevant — but err on the side of inclusion. A section that says "N/A — no persistent data is introduced" is better than a missing Data Model section that leaves the reader wondering if it was forgotten.
DESIGN.md in the root of the relevant module or feature directory. If no clear location exists, place it in the project root.| Mistake | Why It Fails | What to Do Instead |
|---|---|---|
| Designing without reading the codebase | Proposes abstractions that conflict with existing patterns or duplicates what already exists | Always complete Phase 1 before Phase 3 |
| Listing every design pattern you know | Adds noise, signals insecurity, buries actual decisions | Only reference patterns that solve a specific problem in this design |
| Leaving requirements vague | "Fast" and "scalable" mean different things to different people — implementation will drift | Quantify every non-functional requirement with a target number |
| Skipping the Decisions table | The most valuable artifact for future maintainers is lost | Document at least 3 key decisions with alternatives and rationale |
| Writing a design that requires reading external docs | The design should stand alone as a complete picture | Inline the relevant details; link to sources for depth |
| Proposing a "big bang" implementation | Nothing works until everything works; impossible to course-correct | Break into independently testable phases |
| Treating security as an afterthought | Retrofitting security is 10x harder than designing it in | Address security in Phase 4 for every design |
Guides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Resolves in-progress git merge or rebase conflicts by analyzing history, understanding intent, and preserving both changes where possible. Runs automated checks after resolution.
2plugins reuse this skill
First indexed Jul 18, 2026
npx claudepluginhub mlarkin00/active-skills