Skip to main content
ClaudeWave
Skill298 repo starsupdated 4d ago

design-handoff

|

Install in Claude Code
Copy
git clone --depth 1 https://github.com/modu-ai/moai-cowork /tmp/design-handoff && cp -r /tmp/design-handoff/plugins/moai-designer/skills/design-handoff ~/.claude/skills/design-handoff
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

> ⚠️ **개발 런타임 전용** — 이 스킬은 MoAI-ADK(Claude Code) 환경을 전제한다. Claude Cowork(Desktop)에서는 `.moai/config` 의존으로 동작하지 않을 수 있다. Desktop 사용자는 `moai-designer:design-handoff-reader`를 사용한다.

<!-- Verifies: prompt.md is paste-ready (no MoAI tokens) -->
<!-- Verifies: Brand voice integrated when present; graceful default when absent -->
<!-- Verifies: Handoff exit AskUserQuestion with 3 options -->

<!-- @MX:ANCHOR: [AUTO] 5-section prompt.md template structure — canonical definition -->
<!-- @MX:REASON: Consumed by every /design Path A handoff execution (high fan_in). Structural changes affect user trust — prompt.md is pasted directly into external claude.com Design session. -->

# Design Handoff Domain Specialist

Assembles the 5-file Claude Design handoff package for the `design-workflow` Path A workflow (the handoff-deliverable step). The package is designed for paste-and-go use in the external claude.com Design product.

## Quick Reference

The handoff package lives at `.moai/design/handoff/`:

| File | Purpose | Paste target |
|------|---------|-------------|
| `prompt.md` | Master prompt — paste directly into claude.com Design | Yes (primary) |
| `context.md` | Extended context for reference during design session | Optional supplement |
| `references.md` | Visual reference URLs and design inspiration sources | Referenced in prompt |
| `acceptance.md` | Design acceptance criteria (WCAG, responsive, brand) | Referenced in prompt |
| `checklist.md` | Pre-paste self-check before using in claude.com Design | Human review tool |

Key guarantees:

- [HARD] `prompt.md` contains NO MoAI-specific tokens (no `SPEC-`, `.moai/`, `manager-`, internal skill names)
- [HARD] Brand voice integrated when `.moai/project/brand/brand-voice.md` exists
- [HARD] Brand-absent fallback: `Brand Voice (default — please customize)` placeholder section
- [HARD] Handoff exits with AskUserQuestion offering 3 options (a/b/c per the relevant requirement)
- [HARD] All 5 files produced regardless of brand context availability

---

## Handoff Package Assembly

### Input

- Bundle summary from `design-handoff-reader` (the preceding Path A step) — what the user wants designed, target users, value propositions
- Brief from `design-brief` when the request originates from a design brief (Lean Canvas / evaluation context)
- Optional: `.moai/project/brand/brand-voice.md` (brand context)
- Optional: `.moai/project/brand/visual-identity.md` (design tokens, colors)

### Step 0: Brand Context Detection

Before writing any file, check brand context:

```
IF .moai/project/brand/brand-voice.md exists AND is non-empty:
  Load brand voice → use in Brand Voice section of prompt.md
  SET brand_present = true
ELSE:
  Use default brand voice placeholder
  SET brand_present = false
  Note: will include AskUserQuestion offer to run brand interview
```

### Step 1: Assemble prompt.md

<!-- @MX:WARN: [AUTO] prompt.md template — output pasted into external claude.com Design session -->
<!-- @MX:REASON: Changes to this template affect what users paste into claude.com. Structural changes can break user's design sessions. Validate against current claude.com Design prompt guidelines before modifying. -->

`prompt.md` MUST follow this exact 5-section structure:

1. **Goal** — 2-3 sentences describing what needs to be designed, target users, top 3 value propositions from the bundle summary / brief UVP
2. **References** — 3-5 URLs to existing products with style notes, plus key aesthetic direction
3. **Brand Voice** — Two branches (brand_present vs brand_absent), see decision below
4. **Acceptance Criteria** — Concise non-negotiable requirements list (5-8 items)
5. **Out of Scope** — Explicit exclusions (3-5 items)

#### Section 3 — Brand Voice Decision Tree

- Branch A (`brand_present = true`): Extract personality + voice guidelines + color palette + typography from brand-voice.md and visual-identity.md
- Branch B (`brand_present = false`): Emit `## 3. Brand Voice (default — please customize)` header with explicit placeholder + instructions to either edit or run brand interview

See [5-section prompt template + brand branches detail](references/prompt-template.md) for verbatim section templates.

#### Prohibited Content in prompt.md

[HARD] The following MUST NOT appear anywhere in prompt.md:

- References to `SPEC-` identifiers (e.g., `SPEC-AUTH-001`)
- References to `.moai/` paths (e.g., `.moai/design/`, `.moai/project/`)
- References to internal skill / agent names (e.g., `manager-spec`, `design-brief`, `design-handoff-reader`)
- References to internal workflow step identifiers
- References to MoAI-specific commands (e.g., `/project`, `/moai plan`)
- Internal implementation details (file structures, Go code, database schemas)

The prompt must read as if written by a human product designer with no knowledge of MoAI's internal structure.

### Steps 2-5: Supporting Files

| Step | File | Purpose |
|------|------|---------|
| 2 | references.md | Competitor analysis + visual inspiration + UX pattern references (3-5 URLs from the bundle's Sources). Falls back to instructional note when URLs are scarce. |
| 3 | acceptance.md | Accessibility (WCAG 2.1 AA), Responsiveness (375/768/1280px), Brand Alignment, Content Completeness, Technical Constraints |
| 4 | context.md | Extended context — NOT for pasting into Claude Design. Full brief summary, roadmap context, research findings, brand context |
| 5 | checklist.md | Human self-check before pasting prompt.md: content review, MoAI-internal cleanup (auto-verified), scope verification, session readiness |

See [supporting files templates](references/supporting-files.md) for verbatim references.md, acceptance.md, context.md, and checklist.md templates.

---

## Handoff Exit: AskUserQuestion

After all 5 files are written, the skill MUST surface an AskUserQuestion (with ToolSearch preload) presenting 3 options:

```
ToolSearch(query: "select:AskUserQuestion")
AskUserQuestion({
  questions: [{
    question: "핸드오프 패키지가 준비되었습니