ywai/skills/sdd-design/SKILL.md
Create technical design document with architecture decisions and approach. Trigger: "design", "diseño técnico", "technical design", "architecture", "diseñar", "sdd design", "/sdd:continue (when specs exist but design doesn't)".
npx skillsauth add Yoizen/dev-ai-workflow sdd-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a sub-agent responsible for TECHNICAL DESIGN. You take the proposal and specs, then produce a design.md that captures HOW the change will be implemented — architecture decisions, data flow, file changes, and technical rationale.
From the orchestrator:
proposal.md contentengram | openspec | none)Read and follow skills/_shared/persistence-contract.md for mode resolution rules.
engram: Read and follow skills/_shared/engram-convention.md. Artifact type: design. Retrieve proposal and spec as dependencies.openspec: Read and follow skills/_shared/openspec-convention.md. Create design.md in the change directory.none: Return the full design content inline. Do NOT create any project files.Before designing, read the actual code that will be affected:
# Design: {Change Title}
## Technical Approach
{Concise description of the overall technical strategy.
How does this map to the proposal's approach? Reference specs.}
## Architecture Decisions
### Decision: {Decision Title}
**Choice**: {What we chose}
**Alternatives considered**: {What we rejected}
**Rationale**: {Why this choice over alternatives}
### Decision: {Decision Title}
**Choice**: {What we chose}
**Alternatives considered**: {What we rejected}
**Rationale**: {Why this choice over alternatives}
## Data Flow
{Describe how data moves through the system for this change.
Use Mermaid diagrams (preferred) or ASCII fallback.}
**Mermaid (preferred):**
```mermaid
sequenceDiagram
participant Client
participant API
participant Service
participant DB
Client->>API: Request
API->>Service: Process
Service->>DB: Query
DB-->>Service: Result
Service-->>API: Response
API-->>Client: Reply
ASCII fallback:
Component A ──→ Component B ──→ Component C
│ │
└──────── Store ───────────────┘
| File | Action | Description |
|------|--------|-------------|
| path/to/new-file.ext | Create | {What this file does} |
| path/to/existing.ext | Modify | {What changes and why} |
| path/to/old-file.ext | Delete | {Why it's being removed} |
{Define any new interfaces, API contracts, type definitions, or data structures. Use code blocks with the project's language.}
| Layer | What to Test | Approach | |-------|-------------|----------| | Unit | {What} | {How} | | Integration | {What} | {How} | | E2E | {What} | {How} |
{Assess security impact of this change. If not applicable, state "No security impact."}
{Assess performance impact. If not applicable, state "No performance impact."}
{If this change requires data migration, feature flags, or phased rollout, describe the plan. If not applicable, state "No migration required."}
### Step 3: Persist the Design
- **engram**: `mem_save` with `topic_key: sdd/{change-name}/design`
- **openspec**: Write to `openspec/changes/{change-name}/design.md`
- **none**: Return content inline only
### Step 4: Return Summary
```markdown
## Design Created
**Change**: {change-name}
**Persistence**: {engram (ID: #{id}) | openspec (path) | none (inline)}
### Summary
- **Approach**: {one-line technical approach}
- **Key Decisions**: {N decisions documented}
- **Files Affected**: {N new, M modified, K deleted}
- **Testing Strategy**: {unit/integration/e2e coverage planned}
### Open Questions
{List any unresolved questions, or "None"}
### Next Step
Ready for tasks (sdd-tasks).
| Situation | Action |
|-----------|--------|
| Specs not available yet (parallel with sdd-spec) | Derive requirements directly from proposal; note assumptions |
| Design conflicts with existing architecture | Document the conflict, propose migration path, flag to orchestrator |
| Too many open questions to proceed | Return partial design with blocker list; set status to blocked |
| Existing code patterns contradict best practices | Document both patterns; follow existing unless change explicitly targets refactoring |
| Change scope grew during design | Flag scope creep to orchestrator; suggest splitting into multiple changes |
none mode, NEVER create or modify any project filesrules.design from openspec/config.yaml or the engram project contextstatus, executive_summary, detailed_report (optional), artifacts, next_recommended, and risksdocumentation
Yoizen UI design system guidelines and resources. Trigger: When working on Yoizen UI components, styling, colors, typography, or icons.
development
TypeScript strict patterns and best practices. Trigger: When writing TypeScript code - types, interfaces, generics.
development
Tailwind CSS 4 patterns and best practices. Trigger: When styling with Tailwind - cn(), theme variables, no var() in className.
data-ai
name: skill-sync description: > Sync skill metadata with the Auto-invoke sections in AGENTS.md. Trigger: When you change a skill's metadata (metadata.scope/metadata.auto_invoke), regenerate the Auto-invoke tables, or run ./skills/skill-sync/assets/sync.sh. metadata: author: Yoizen version: "1.0" scope: [root] auto_invoke: - "skill operations" - "workflow" - "sdd" author: Yoizen version: "1.0" scope: [root] auto_invoke: - "skill operations" - "workflow"