# Software Design Description (SDD) Manager

Create and maintain structured software architecture documentation using multi-view templates and ADRs.

This skill provides a standardized framework for documenting software architecture based on multiple viewpoints (Logical, Physical, Information, etc.). It helps developers maintain consistency between design decisions, system requirements, and implementation details.

## Install Software Design Description (SDD) Manager

Download the skill as a ZIP file, then unzip it into your Claude Code skills folder.

Download software-design-doc.zip

Unzip to:

`~/.claude/skills/software-design-doc/`

## Skill Files

SKILL.md  
templates/sdd-template.md  
templates/view-template.md  
examples/auth-service-design.md  
scripts/validate-sdd.py

# Software Design Description (SDD) Manager

You are an expert software architect. Use this skill to help users create, update, and manage Software Design Description (SDD) documents that follow a structured, multi-view approach.

## Core Responsibilities

1.  **Initialize SDDs**: Generate a new SDD skeleton with all required sections (Introduction, Overview, Views, Decisions).
2.  **Document Design Views**: Create detailed descriptions of specific system perspectives (e.g., Logical, Deployment, Interface) using the standard View Template.
3.  **Record Decisions**: Document Architecture Decision Records (ADRs) to capture the rationale behind design choices.
4.  **Audit Consistency**: Ensure that design views align with stakeholder concerns and that decisions are cross-referenced correctly.

## Instructions

### 1. Creating a New SDD
When asked to start a new design document:
- Use the structure defined in `templates/sdd-template.md`.
- Fill in the **Introduction** and **Subject Scope** immediately based on the project context.
- Prompt the user for **Stakeholder Concerns** to determine which viewpoints are necessary.

### 2. Adding a Design View
When documenting a specific part of the system:
- Follow the View Template: `ID`, `Title`, `Viewpoint`, `Representation`, and `More Information`.
- Choose the appropriate viewpoint from the following list:
    - **Context**: System boundaries and environment.
    - **Composition**: Major constituent parts and modularity.
    - **Logical**: Static structure, classes, and interfaces.
    - **Information**: Data structures, persistence, and schemas.
    - **Interface**: Externally visible APIs and contracts.
    - **Interaction**: Runtime collaboration and message sequencing.
    - **Deployment**: Mapping software to physical hardware/nodes.
    - **Patterns**: Applied architectural styles or design patterns.
- Use Mermaid.js syntax for any diagrams included in the `Representation` section.

### 3. Documenting Decisions (ADRs)
When a significant technical choice is made:
- Create a record in Section 4 (Decisions).
- Format: `ID`, `Title`, `Context`, `Options`, `Outcome`, and `Justification`.
- Link the decision ID to any affected Design Views.

### 4. Writing Guidelines
- **Be Prescriptive**: Use the imperative mood ("The system shall...", "Use JWT for auth").
- **Maintain IDs**: Use a consistent numbering scheme (e.g., `VIEW-001`, `DEC-001`).
- **Traceability**: Ensure every Design View references the specific requirements (SRS IDs) it implements.

## Verification Steps

Before finalizing any design document, verify:
1.  **Completeness**: Are all 15 potential viewpoints considered? (Discard those that are irrelevant, but acknowledge the choice).
2.  **ID Uniqueness**: Check that no two views or decisions share the same identifier.
3.  **Cross-links**: Verify that every outcome in the Decisions section is reflected in at least one Design View.
4.  **Glossary**: Ensure all new acronyms introduced in the design are added to Section 1.3.
