---
name: design-discussion
description: Only use when the user explicitly invokes this skill by name.
disable-model-invocation: true
---
Source: apps/riptide-rpi-claude-plugin/skills/create-design-discussion/SKILL.md @ f9bd73534a9fb7099a274f951b698b1297122fd9
The first mate runs this phase.
# Design Discussion Phase
You are now in the Design Discussion phase. Based on the research findings and the user's change request, work with them to make design decisions.
## Steps to follow after receiving the user's request
1. **Read the files in the task artifact directory and any mentioned files immediately and FULLY**:
- `ls -La the task's folder` to find all related documents in the task directory. Do NOT use the Grep or Glob tools, or `ls -l` as the directory may be a symlink.\
- Ticket files (e.g., `the task's folder/eng-1234-description/ticket.md` or `task.md`)
- Research documents (e.g. `the task's folder/eng-1234-description/NN-research-DESCRIPTION.md`)
- **DO NOT read research questions documents** - research questions are inputs to the research phase only.
- **IMPORTANT**: Use the Read tool WITHOUT limit/offset parameters to read entire files, never read files partially - if a file is mentioned, read it completely
- do not spawn sub-tasks before reading these files yourself in the main context
2. **Check for related task content**:
- if a path in `the task's folder/TASKNAME` is mentioned, use Bash(`ls -La the task's folder/TASKNAME`)
- **IMPORTANT** DO NOT USE search or glob or grep, or `ls -l` (lowercase L), as the task's folder may be a symlink and those tools don't traverse symlinks
- read all relevant files in the task directory to fully understand the work so far, excluding research questions documents
3. **Optional - Spawn parallel sub-tasks for comprehensive research**:
- If not clear from the research, spawn sub-tasks to research different aspects concurrently
- Create multiple Agent() calls to research different aspects concurrently
- Use the right agent for each type of research:
**For deeper investigation:**
- **codebase-locator** - To find more specific files (e.g., "find all files that handle [specific component]")
- **codebase-analyzer** - To understand implementation details (e.g., "analyze how [system] works")
- **codebase-pattern-finder** - To find similar implementation patterns we can model after
Each agent knows how to:
- Find the right files and code patterns
- Identify conventions and patterns to follow
- Look for integration points and dependencies
- Return specific file:line references
- Find tests and examples
prefer to use an initial pass with one or more Agent() calls before reading files yourself
skip Agent() calls if you already have the context
4. **Read the design discussion template and visual guidance**
`Read({SKILLBASE}/references/design_discussion_template.md)`
`Read({SKILLBASE}/references/show-me.md)`
- Follow the `show-me` guidance throughout the design discussion.
- Use the smallest set of visual views needed to make the current state, proposed end state, and key design choices clear.
- Place each visual next to the short text it supports. Do not add visuals that do not help the user make a design decision.
5. **Write the design discussion** to `the task's folder/ENG-XXXX-description/NN-design-discussion-DESCRIPTION.md`
- First, check the task directory in your system prompt. If you don't see it, find the task directory: `ls -La the task's folder | grep -i "eng-XXXX"`
- If the directory doesn't exist, create: `the task's folder/ENG-XXXX-description/`
- Format: `NN-design-discussion-DESCRIPTION.md` where NN is a zero-padded chronological index and DESCRIPTION is a 2-4 word kebab-case slug
- **Chronological indexing**: `ls` the task directory, find the highest existing NN- prefix, and use the next number. First document = `01-`, second = `02-`, etc.
- Directory naming:
- With ticket: `the task's folder/ENG-1478-parent-child-tracking/03-design-discussion-parent-child-tracking.md`
- Without ticket: `the task's folder/improve-error-handling/03-design-discussion-error-handling.md`
**Outline High-level product spec** - Current state, desired end state, what we're not doing in terms of user experience or functionality
**Outline the proposed end state architecture** - Use focused before-and-after diagrams, trees, pseudocode, or other views from the `show-me` guidance. Prefer `diff` blocks when the key point is what changes, and show the full target shape when it makes ownership or order clearer.
**Discuss design decisions**
- For each major design choice, present options with pros/cons
- Make recommendations based on codebase conventions
- If the research surfaced testing patterns for the components being changed, include a brief testing approach (e.g. "follow the existing unit test pattern in `__tests__/foo.test.ts`")
**IMPORTANT: All design questions must be written in the OPEN state**
- Put ALL questions under "Design Questions", NOT under "Resolved Design Questions"
- You may recommend an option, but you must NOT resolve or close a question yourself
- Only the user can resolve a design question — through explicit feedback or approval
- The "Resolved Design Questions" section should be empty in the initial document
- Do NOT auto-resolve questions even if the answer seems obvious from the research
**Resolving questions after user feedback**
- When the user provides a clear answer (e.g. "for X we should do Y"), move the question to "Resolved Design Questions"
- They don't need to say "resolve" explicitly — any clear indication of a decision counts
- Record the final decision with rationale
- Record the options that were considered but not chosen, with brief rationale for why they were discarded
**Present patterns to follow**
- Identify existing patterns in the codebase that should be followed
- Include file locations and multiline code snippets showing the pattern
6. **Read the final output template**
`Read({SKILLBASE}/references/design_discussion_final_answer.md)`
If hook context says all design questions have been resolved, read the resolved template instead:
`Read({SKILLBASE}/references/design_discussion_final_answer_resolved.md)`
7. Respond following the selected template exactly. Do not include a summary or other information. Include cloud permalinks if available.
## Cloud Permalinks
When you write or edit documents in the task's folder/, a cloud permalink is automatically provided in the hook response.
- The permalink appears as `additionalContext` after Write/Edit/MultiEdit/Read operations
- Use this permalink in your final output for easy navigation
- Example format: `http(s)://{DOMAIN}/artifacts/{artifactId}`
## Markdown Formatting
When writing markdown files that contain code blocks showing other markdown (like README examples or SKILL.md templates), use 4 backticks (````) for the outer fence so inner 3-backtick code blocks don't prematurely close it:
````markdown
# Example README
## Installation
```bash
npm install example
```
````
## Document Precedence
When documents conflict, the most recent document wins:
**design discussion > research > ticket**
Decisions made during the design discussion supersede the original ticket description.
The ticket provides the initial request; the design discussion refines and finalizes the approach.