/to-design
Generate a design document (design proposal) from a PRD, in the style of Go's official design proposals — Abstract / Background / Design / Rationale / Compatibility / Implementation, heavy on the 'why' and tradeoffs. Triggers on: to-design, prd-to-design, prd转设计文档, 生成设计文档,
$ npx -y skills add smallnest/goal-workflow --skill to-design --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/to-design
Context preview
The summary Claude sees to decide when to auto-load this skill.
Generate a design document (design proposal) from a PRD, in the style of Go's official design proposals — Abstract / Background / Design / Rationale / Compatibility / Implementation, heavy on the 'why' and tradeoffs. Triggers on: to-design, prd-to-design, prd转设计文档, 生成设计文档,
SKILL.md
to-design.SKILL.mdname: to-design
description: "Generate a design document (design proposal) from a PRD, in the style of Go's official design proposals — Abstract / Background / Design / Rationale / Compatibility / Implementation, heavy on the 'why' and tradeoffs. Triggers on: to-design, prd-to-design, prd转设计文档, 生成设计文档, 写设计文档, design doc, design proposal, 设计提案, 技术设计文档."
user-invocable: true
to-design — PRD to Design Document
Turn a PRD (or a rough idea) into a **design document** written in the style of Go's official design proposals: plain language, concrete examples, and—above all—an honest account of *why this approach and not the alternatives*.
This is **not** the same as `prd-to-spec`. A SPEC is an implementation contract (tables, endpoints, schemas) for an engineer to build against. A design document is a **decision artifact**: it argues for an approach, surfaces the tradeoffs, and lets a team agree on the same facts before anyone writes code. When the question is "*how should we build this and why*", produce a design doc; when the question is "*give me the exact contract to implement*", produce a SPEC.
> 设计哲学源自对 5 篇 Go 官方 proposal(泛型 / 错误包装 / loopvar / slog / try)的分析。核心信念:**文档的价值不取决于方案是否通过,而取决于它是否让讨论建立在同一套事实和取舍之上。**
---
When to Use
- A PRD exists and you need to decide *how* to build it before committing to implementation
- The approach has real tradeoffs and you want them documented and debated
- The change is risky, breaking, or hard to reverse (a design doc forces the compatibility conversation early)
- Multiple people need to agree on a direction before work fans out
- You want a durable record of "why we chose X and rejected Y" — even if the proposal is later rejected
If the team just needs the concrete contract to code against, use `/prd-to-spec` instead (or run `to-design` first, then `prd-to-spec`).
---
The Job
1. **Locate input** — find or receive the PRD (or idea) 2. **Analyze context (optional)** — scan the codebase for existing patterns, constraints, and prior art 3. **Surface the decisions** — identify the real design forks and ask clarifying questions (max 3-5) 4. **Generate the design doc** — following the structure and writing style below 5. **Review** — present for feedback, especially on the Rationale and Compatibility sections 6. **Save** — write to the agreed location
---
Step 1: Locate Input
Provide the PRD (or idea) to design from:
A. File path (e.g., tasks/prd-priority-system.md)
B. GitHub Issue URL
C. Paste content directly
D. Just describe the idea — I'll design from the conversation
A design doc can start from a half-formed idea, not only a polished PRD. If the input is thin, lean harder on Step 3.
---
Step 2: Analyze Context (Optional)
Skip for greenfield. Otherwise scan to ground the design in reality:
- **Existing patterns** the design should match (naming, error handling, module boundaries)
- **Prior art** — has something similar been tried or rejected here before?
- **Constraints** — compatibility promises, public APIs, data the design can't break
- **Real pain** — find the actual buggy/awkward code the design fixes, so Background can quote it
The most persuasive Background sections quote **real code from the user's own repo**, not hypotheticals.
---
Step 3: Surface the Decisions
A design doc lives or dies on its Rationale. Before writing, find the **real forks in the road** — the points where a competent engineer could reasonably go two ways — and resolve them.
Ask only about genuine forks:
Design decisions to settle before I write the doc:
1. Where does this logic live?
A. Extend the existing X
B. New standalone component Y
C. Let me recommend based on the codebase
2. Is this a breaking change for existing callers?
A. Yes — needs a migration path
B. No — purely additive
C. Unsure — I'll analyze and flag it
3. What's the one promise this design must keep? (e.g. backward compatibility,
latency budget, no new dependencies)
For every fork, also note the **option you are NOT choosing** — that becomes the Rationale.
---
Step 4: Design Document Structure
This is the standard skeleton distilled from the 5 Go proposals. Keep section names; drop sections that genuinely don't apply (and say why if the omission is notable).
Title: <一句话说清"做什么" —— 标题就是结论,不是名词短语>
Author(s): <作者>
Last updated: <YYYY-MM-DD>
Discussion at <issue / PR / 文档链接> # 让文档不孤立,永远附讨论入口
Status: Draft | Under review | Accepted | Rejected
## Abstract / 摘要
一段话讲完全文:做什么、大致怎么做、以及**最重要的那个承诺**(如"向后兼容""不引入新依赖")。
读者读完这一段就该知道全貌。把隐含的核心约束埋在这里。
## Background / 背景与动机
用**具体、可感的例子**说明"痛在哪",而不是抽象地说"现状不好"。
- 能贴一段真实的 bug 代码 / 别扭的调用,就贴。先让读者"疼"起来。
- 量化痛点(出现频率、踩坑次数、损失),不要用形容词堆砌。
- 一句话给问题定性。
## Design / Proposal / 设计
文档主体。遵循三条:
- **从简单到复杂,渐进式教学**:从最小例子起步,复杂场景留到读者有直觉之后。
- **声明 + 示例 + 边界**三件套:每个 API/接口先给声明,再给用法片段,再划清适用边界。
- **改造前 vs 改造后对照**:能并排展示收益的,就并排展示。
能用一段可运行代码说清的,绝不用一段文字描述。
## Rationale / 理由与取舍
> Rationale = "为什么是这个方案,而不是别的"的论证。这是区分好文档和平庸文档的关键章节。
- 解释关键决策的动机。
- **主动列出被放弃的备选方案 + 放弃原因**("我们没选 X,因为 Y")。这比单方面论证你选的方案更可信,也避免后人重复讨论。
- 回应可预见的质疑。
## Compatibility / 兼容性
凡涉及破坏性变更,必须正面回应。
- 是不是破坏性变更?**开门见山承认**。
- 代价是什么(性能、行为变化、迁移成本)?**诚实列出**,不藏着。
- 渐进迁移路径(按模块/按文件 opt-in、灰度、特性开关)。
- 有先例佐证更好("某系统做过类似变更,结果平淡无奇")。
## Implementation / Transition / 实现与过渡
- 如何落地、分几步、配套什么工具。
- **用数据和工具支撑"可落地"**:实测失败率、灰度结果、自动化迁移工具,比任何"我们认为风险可控"都管用。
- 兼容老版本的过渡方案(如独立发布的兼容库)。
## Appendix / 附录(可选)
把会打断主线的细节后置:完整 API、端到端示例、FAQ。
FAQ 专门回应高频质疑("为什么叫这个名字""为什么不用某语言的做法""和 X 有何不同")。
---
Writing Style (照搬 Go 文档的文风)
Structure is the skeleton; style is the muscle. Enforce these — they're what make the doc readable.
Voice / 主语
- **决策用 "我们 / We"** — 把设计说成一群人可负责的选择,不是客观真理。("We propose…", "我们决定移除…")
- **行为用代码本身当主语** — "this code has a bug" / "这段代码会…",让注意力落在程序上。
- **说理对读者用 "你 / you"** — 像面对面解释。
- **禁止无主语的被动腔** — 不写"据建议应当…""It is suggested that…"这类推卸责任的句式。
Sentences / 句子
- **判断用短句,论证用长句**。先用一个极短的句子拍板("这段代码有 bug。"),再用信息密集的长句铺开机制。
- 长短交替制造节奏。不要通篇
Read more
name: to-design description: "Generate a design document (design proposal) from a PRD, in the style of Go's official design proposals — Abstract / Background / Design / Rationale / Compatibility / Implementation, heavy on the 'why' and tradeoffs. Triggers on: to-design, prd-to-design, prd转设计文档, 生成设计文档, 写设计文档, design doc, design proposal, 设计提案, 技术设计文档." user-invocable: true
to-design — PRD to Design Document
Turn a PRD (or a rough idea) into a **design document** written in the style of Go's official design proposals: plain language, concrete examples, and—above all—an honest account of *why this approach and not the alternatives*.
This is **not** the same as `prd-to-spec`. A SPEC is an implementation contract (tables, endpoints, schemas) for an engineer to build against. A design document is a **decision artifact**: it argues for an approach, surfaces the tradeoffs, and lets a team agree on the same facts before anyone writes code. When the question is "*how should we build this and why*", produce a design doc; when the question is "*give me the exact contract to implement*", produce a SPEC.
> 设计哲学源自对 5 篇 Go 官方 proposal(泛型 / 错误包装 / loopvar / slog / try)的分析。核心信念:**文档的价值不取决于方案是否通过,而取决于它是否让讨论建立在同一套事实和取舍之上。**
---
When to Use
- A PRD exists and you need to decide *how* to build it before committing to implementation
- The approach has real tradeoffs and you want them documented and debated
- The change is risky, breaking, or hard to reverse (a design doc forces the compatibility conversation early)
- Multiple people need to agree on a direction before work fans out
- You want a durable record of "why we chose X and rejected Y" — even if the proposal is later rejected
If the team just needs the concrete contract to code against, use `/prd-to-spec` instead (or run `to-design` first, then `prd-to-spec`).
---
The Job
1. **Locate input** — find or receive the PRD (or idea) 2. **Analyze context (optional)** — scan the codebase for existing patterns, constraints, and prior art 3. **Surface the decisions** — identify the real design forks and ask clarifying questions (max 3-5) 4. **Generate the design doc** — following the structure and writing style below 5. **Review** — present for feedback, especially on the Rationale and Compatibility sections 6. **Save** — write to the agreed location
---
Step 1: Locate Input
Provide the PRD (or idea) to design from: A. File path (e.g., tasks/prd-priority-system.md) B. GitHub Issue URL C. Paste content directly D. Just describe the idea — I'll design from the conversation
A design doc can start from a half-formed idea, not only a polished PRD. If the input is thin, lean harder on Step 3.
---
Step 2: Analyze Context (Optional)
Skip for greenfield. Otherwise scan to ground the design in reality:
- **Existing patterns** the design should match (naming, error handling, module boundaries)
- **Prior art** — has something similar been tried or rejected here before?
- **Constraints** — compatibility promises, public APIs, data the design can't break
- **Real pain** — find the actual buggy/awkward code the design fixes, so Background can quote it
The most persuasive Background sections quote **real code from the user's own repo**, not hypotheticals.
---
Step 3: Surface the Decisions
A design doc lives or dies on its Rationale. Before writing, find the **real forks in the road** — the points where a competent engineer could reasonably go two ways — and resolve them.
Ask only about genuine forks:
Design decisions to settle before I write the doc: 1. Where does this logic live? A. Extend the existing X B. New standalone component Y C. Let me recommend based on the codebase 2. Is this a breaking change for existing callers? A. Yes — needs a migration path B. No — purely additive C. Unsure — I'll analyze and flag it 3. What's the one promise this design must keep? (e.g. backward compatibility, latency budget, no new dependencies)
For every fork, also note the **option you are NOT choosing** — that becomes the Rationale.
---
Step 4: Design Document Structure
This is the standard skeleton distilled from the 5 Go proposals. Keep section names; drop sections that genuinely don't apply (and say why if the omission is notable).
Title: <一句话说清"做什么" —— 标题就是结论,不是名词短语> Author(s): <作者> Last updated: <YYYY-MM-DD> Discussion at <issue / PR / 文档链接> # 让文档不孤立,永远附讨论入口 Status: Draft | Under review | Accepted | Rejected ## Abstract / 摘要 一段话讲完全文:做什么、大致怎么做、以及**最重要的那个承诺**(如"向后兼容""不引入新依赖")。 读者读完这一段就该知道全貌。把隐含的核心约束埋在这里。 ## Background / 背景与动机 用**具体、可感的例子**说明"痛在哪",而不是抽象地说"现状不好"。 - 能贴一段真实的 bug 代码 / 别扭的调用,就贴。先让读者"疼"起来。 - 量化痛点(出现频率、踩坑次数、损失),不要用形容词堆砌。 - 一句话给问题定性。 ## Design / Proposal / 设计 文档主体。遵循三条: - **从简单到复杂,渐进式教学**:从最小例子起步,复杂场景留到读者有直觉之后。 - **声明 + 示例 + 边界**三件套:每个 API/接口先给声明,再给用法片段,再划清适用边界。 - **改造前 vs 改造后对照**:能并排展示收益的,就并排展示。 能用一段可运行代码说清的,绝不用一段文字描述。 ## Rationale / 理由与取舍 > Rationale = "为什么是这个方案,而不是别的"的论证。这是区分好文档和平庸文档的关键章节。 - 解释关键决策的动机。 - **主动列出被放弃的备选方案 + 放弃原因**("我们没选 X,因为 Y")。这比单方面论证你选的方案更可信,也避免后人重复讨论。 - 回应可预见的质疑。 ## Compatibility / 兼容性 凡涉及破坏性变更,必须正面回应。 - 是不是破坏性变更?**开门见山承认**。 - 代价是什么(性能、行为变化、迁移成本)?**诚实列出**,不藏着。 - 渐进迁移路径(按模块/按文件 opt-in、灰度、特性开关)。 - 有先例佐证更好("某系统做过类似变更,结果平淡无奇")。 ## Implementation / Transition / 实现与过渡 - 如何落地、分几步、配套什么工具。 - **用数据和工具支撑"可落地"**:实测失败率、灰度结果、自动化迁移工具,比任何"我们认为风险可控"都管用。 - 兼容老版本的过渡方案(如独立发布的兼容库)。 ## Appendix / 附录(可选) 把会打断主线的细节后置:完整 API、端到端示例、FAQ。 FAQ 专门回应高频质疑("为什么叫这个名字""为什么不用某语言的做法""和 X 有何不同")。
---
Writing Style (照搬 Go 文档的文风)
Structure is the skeleton; style is the muscle. Enforce these — they're what make the doc readable.
Voice / 主语
- **决策用 "我们 / We"** — 把设计说成一群人可负责的选择,不是客观真理。("We propose…", "我们决定移除…")
- **行为用代码本身当主语** — "this code has a bug" / "这段代码会…",让注意力落在程序上。
- **说理对读者用 "你 / you"** — 像面对面解释。
- **禁止无主语的被动腔** — 不写"据建议应当…""It is suggested that…"这类推卸责任的句式。
Sentences / 句子
- **判断用短句,论证用长句**。先用一个极短的句子拍板("这段代码有 bug。"),再用信息密集的长句铺开机制。
- 长短交替制造节奏。不要通篇
An AI-driven development workflow — from PRD to shipped code, all within Claude Code.
Other skills on goal-workflow-skills.
- /article-icons
Illustrate an article (Markdown, HTML, etc.) with animated-style icons from itshover.com/icons. Fetches icons as clean inline SVG and places them at section headings, key concepts, lists, and callouts. Triggers on: /article-icons, 配图, 给文章配图标, add icons to article, illustrate
Open skill - /code-to-spec
Reverse-engineer a SPEC document from an existing project. Analyzes code, config, tests, and structure to produce a comprehensive specification. Triggers on: code-to-spec, reverse spec, generate spec, 逆向规格, 生成规格文档, 生成设计文档, 生成设计方案, extract spec, document this project, what does
Open skill - /graph
Graph engineering for parallel task execution: convert a task, PRD, SPEC, or issue set into a dependency graph (DAG), layer it into supersteps, then implement each independent node concurrently with subagents — each node runs /goal → /review-it → /ship-it in an isolated git
Open skill - /humanize-it
对指定文档进行去 AI 味的改写。自动选择最合适的人性化策略(humanizer-zh / humanize-chinese / technical-writing), 迭代改写直到效果达标或迭代 42 次为止。适用于中文文本的去 AI 化处理,包括通用文章、技术文档、学术论文等。 Use when user says: "humanize this", "去AI味", "降AIGC", "人性化改写", "改成人话", "去除AI痕迹", "humanize document", "make text human-like", "去机器味",
Open skill - /insight-diagram
为任意项目生成 UML 图、架构图和流程图。分析代码库后让用户选择要生成的图表类型,使用 architecture-diagram skill 渲染为 HTML+SVG,保存到 docs/ 目录。适用于任何软件项目的文档可视化。
Open skill - /listenhub-tts
使用 ListenHub API 将文本转换为语音(TTS)。支持三种模式:快速合成(/v1/tts)、 多角色脚本(/v1/speech)、长文本流式合成(/v1/flow-speech/episodes)。 音色未指定时自动获取音色列表供用户选择,默认使用 chat-girl-105-cn(晓曼)。 Use when user says: "tts", "text to speech", "语音合成", "文字转语音", "朗读", "生成语音", "生成音频", "转音频", "text to audio"
Open skill

