Create design documentation from existing implementation
/plugin marketplace add asermax/claude-plugins/plugin install katachi@asermax-plugins<FEATURE-ID>Create design documentation from existing implementation code.
Feature ID: $ARGUMENTS (e.g., "CORE-001")
Skills to load:
katachi:retrofit-existing - Retrofit workflowFeature inventory:
@planning/FEATURES.md - Feature definitions
@planning/DEPENDENCIES.md - Feature dependencies
Retrofitted spec:
@specs/$ARGUMENTS.md - The specification (created by retrofit-spec)
Project decisions:
@docs/architecture/README.md - Architecture decisions (ADRs)
@docs/design/README.md - Design patterns (DES)
Existing design (if present):
@designs/$ARGUMENTS.md - Current design to update or create
Vision (if present):
@planning/VISION.md - Project context for inference
Verify prerequisites:
specs/$ARGUMENTS.md/katachi:retrofit-spec firstIf designs/$ARGUMENTS.md exists:
If no design exists: proceed with creation
Update status:
python ${CLAUDE_PLUGIN_ROOT}/scripts/features.py status set $ARGUMENTS "⧗ Design"
specs/$ARGUMENTS.md)planning/DEPENDENCIES.mddocs/architecture/README.md)docs/design/README.md)Task(
subagent_type="katachi:codebase-analyzer",
prompt=f"""
Analyze this code to create a design document.
## Analysis Type
design
## Retrofitted Spec
{spec_content}
## Implementation Code
{code_content}
## Project Context
{vision_content if exists else "Infer from code"}
## Existing ADR Index
{adr_index}
## Existing DES Index
{des_index}
Create a draft design document covering:
- Problem context (inferred from what the code solves)
- Design overview (high-level approach taken)
- Modeling (entities/relationships from code structure)
- Data flow (trace from code execution paths)
- Key decisions (3-5 significant choices visible in implementation)
For Key Decisions:
- Identify significant undocumented decisions
- For each, note: what was chosen, inferred alternatives, visible consequences
- Flag which warrant formal ADR/DES documentation (mark as ADR/DES Candidate: Yes)
"""
)
Show the agent's draft design document.
Highlight uncertainties and assumptions made during inference.
Ask: "What needs adjustment in this inferred design?"
Apply user corrections:
Re-present updated sections if significant changes. Repeat until user approves the core design.
Review the Key Decisions section for ADR/DES candidates.
Present discovered decisions:
"I identified these undocumented decisions while analyzing the design:
1. **[Decision Name]** (architectural choice)
[Brief description]
Recommendation: Create ADR
2. **[Pattern Name]** (repeatable pattern)
[Brief description]
Recommendation: Create DES
3. **[Minor Choice]** (design choice)
[Brief description]
Recommendation: Document inline only
Which decisions should become formal ADR/DES documents?"
For each decision the user agrees to document:
# Spawn retrofit-decision inline
Task(
subagent_type="katachi:codebase-analyzer", # Initial analysis
prompt=f"""
Analyze this code to document a specific decision.
## Analysis Type
decision
## Topic
{decision_topic}
## Relevant Code
{code_related_to_decision}
## Project Context
{vision_content}
Determine if this is ADR (one-time choice) or DES (repeatable pattern).
Create a draft document.
"""
)
After each ADR/DES is created:
Dispatch the design-reviewer agent:
Task(
subagent_type="katachi:design-reviewer",
prompt=f"""
Review this retrofitted feature design.
## Feature Spec (Retrofitted)
{spec_content}
## Completed Design
{design_content}
## ADR Index Summary
{adr_summary}
## DES Index Summary
{des_summary}
This design was inferred from existing code. Provide structured critique covering:
- Problem context clarity
- Design coherence with actual implementation
- Modeling completeness
- Data flow clarity
- Decision documentation quality
- Pattern alignment with ADRs/DES
- Missing elements that should be captured
"""
)
Review agent findings with user. Discuss which recommendations to accept.
Ask: "Should we iterate based on validation feedback, or is the design complete?"
If gaps to address → refine relevant sections (go back to step 4) If complete → finalize document
Write design to designs/$ARGUMENTS.md:
# Design: [FEATURE-ID] - [Feature Name]
**Feature Spec**: [../specs/FEATURE-ID.md](../specs/FEATURE-ID.md)
**Status**: Approved
## Retrofit Note
This design was created from existing code at `[path from spec]`.
Original implementation date: [from git history or "Unknown"]
Decisions documented during retrofit: [ADR-XXX, DES-YYY, ...]
---
## Purpose
This document captures the design rationale inferred from the existing implementation.
## Problem Context
[Inferred from what the code solves]
## Design Overview
[High-level approach extracted from code]
## Modeling
[Entities/relationships from code structure]
## Data Flow
[Traced from execution paths]
## Key Decisions
### [Decision Name]
**Choice**: [What the code shows]
**Why**: [Inferred rationale]
**Related**: [ADR-XXX if created during retrofit]
## System Behavior
[Documented from code paths]
## Notes
- Assumptions made during analysis: [list]
Update status:
python ${CLAUDE_PLUGIN_ROOT}/scripts/features.py status set $ARGUMENTS "✓ Design"
"Design retrofitted for existing code:
File: designs/$ARGUMENTS.md
Status: ✓ Design
Decisions created: [ADR-XXX, DES-YYY, ...]
The feature now has both specification and design documentation.
You can now:
- Retrofit another spec: /katachi:retrofit-spec <path>
- Retrofit another design: /katachi:retrofit-design <ID>
- Document additional decisions: /katachi:retrofit-decision <topic>
- Run gap analysis: /katachi:analyze"
This is a collaborative process: