design-an-interface

使用并行子 agent 为某个模块生成多个根本不同的接口设计。适用于用户希望设计某个 API、探索接口选项、对比模块形状(module shapes),或提到“design it twice(把它设计两遍)”。

Best use case

design-an-interface is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

使用并行子 agent 为某个模块生成多个根本不同的接口设计。适用于用户希望设计某个 API、探索接口选项、对比模块形状(module shapes),或提到“design it twice(把它设计两遍)”。

Teams using design-an-interface should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/design-an-interface/SKILL.md --create-dirs "https://raw.githubusercontent.com/ProgrammerAnthony/Anything-Extract/main/.agents/skills/design-an-interface/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/design-an-interface/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How design-an-interface Compares

Feature / Agentdesign-an-interfaceStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

使用并行子 agent 为某个模块生成多个根本不同的接口设计。适用于用户希望设计某个 API、探索接口选项、对比模块形状(module shapes),或提到“design it twice(把它设计两遍)”。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 设计一个接口(Design an Interface)

基于《A Philosophy of Software Design》里的 “Design It Twice(把它设计两遍)”:你的第一个想法通常不会是最好的。生成多个根本不同的设计方案,然后进行对比。

## 工作流(Workflow)

### 1. 收集需求(Gather Requirements)

在开始设计前先理解:

- [ ] 这个模块解决什么问题?
- [ ] 谁会作为调用方?(其他模块、外部用户、测试)
- [ ] 关键操作是什么?
- [ ] 有哪些约束?(性能、兼容性、既有模式)
- [ ] 应当隐藏什么、暴露什么?

提问:`这个模块需要做什么?谁会使用它?`

### 2. 生成设计方案(并行子代理 Parallel Sub-Agents)

使用 Task 工具并行启动 3 个以上的子 agent。每个子 agent 都必须产出**根本不同(radically different)**的方案。

```
给每个子 agent 的提示模板:

为以下内容设计一个接口:[模块描述]

需求:[已收集到的需求]

为这个设计分配约束:[给每个 agent 设定不同的约束]

- Agent 1: "尽量减少方法数量——目标是最多 1-3 个方法"
- Agent 2: "尽量提升灵活性——支持很多用例"
- Agent 3: "为最常见的场景优化"
- Agent 4: "借鉴 [特定范式/库] 的思路"

输出格式:
1. 接口签名(types/methods)
2. 用法示例(调用方如何使用)
3. 该设计内部隐藏了什么复杂度
4. 采用该方式的取舍(trade-offs)
```

### 3. 展示设计方案

分别展示每个设计:

1. **接口签名**:类型、方法、参数
2. **使用示例**:调用方在实践里如何使用
3. **隐藏了什么**:将复杂度保留在内部

让用户在对比之前先逐个理解每种方案的含义,因此展示顺序应按方案逐一给出。

### 4. 对比设计方案

在展示完全部设计后,从这些维度进行对比:

- **接口简洁性**:更少的方法、更简单的参数
- **通用型 vs 专用型**:灵活性 vs 专注度
- **实现效率**:这种形状是否允许高效实现?
- **深度(Depth)**:小接口隐藏显著复杂度(好) vs 大接口但实现很薄(坏)
- **正确使用的容易度** vs **被误用的容易度**

请用文字(prose)讨论取舍,而不是用表格。重点指出不同设计最分歧的地方。

### 5. 归纳(Synthesize)

通常最好的设计会融合多个选项的洞见。追问:

- 哪个设计最符合你的主要使用场景?
- 是否有来自其他设计、值得纳入的元素?

## 评价标准(Evaluation Criteria)

来自《A Philosophy of Software Design》:

- **接口简洁性(Interface simplicity)**:方法更少、参数更简单 => 更容易学习与正确使用。
- **通用型(General-purpose)**:在不改动接口的前提下能覆盖未来用例。但要警惕过度通用。
- **实现效率(Implementation efficiency)**:接口的形状是否能让实现变得高效?还是迫使你在内部做尴尬的权衡?
- **深度(Depth)**:小接口隐藏显著复杂度 => 深模块(good)。大接口但实现很薄 => 浅模块(avoid)。

## 反模式(Anti-Patterns)

- 不要让子 agent 产出相似的设计——要强制根本差异
- 不要跳过对比——对比的价值在于“形成对照”
- 不要去实现——这项工作只关注接口形状
- 不要基于“实现成本/劳动量”去做评价

Related Skills

write-a-skill

135
from ProgrammerAnthony/Anything-Extract

以正确的技能结构、渐进式披露与打包资源来创建新的 agent 技能。适用于用户希望创建、编写或构建新的技能。

write-a-prd

135
from ProgrammerAnthony/Anything-Extract

通过用户访谈、代码库探索与模块设计来编写 PRD(产品需求文档),然后以 GitHub issue 的形式提交。适用于用户希望编写 PRD、创建产品需求文档,或规划一个新功能。

ubiquitous-language

135
from ProgrammerAnthony/Anything-Extract

从当前对话中抽取 DDD 风格的“统一语言”术语表(ubiquitous language glossary),标记歧义,并提出规范的术语选择。保存为 `UBIQUITOUS_LANGUAGE.md`。适用于用户希望定义领域术语、构建术语表、固化用词并强化术语一致性,或提到 “domain model” / “DDD”(领域模型与 DDD)。

triage-issue

135
from ProgrammerAnthony/Anything-Extract

通过探索代码库对 Bug/Issue 进行排查归因,并基于 TDD 方式生成修复计划,同时创建对应的 GitHub issue。适用于用户报告了 bug、希望创建 issue、提到“triage”,或想调查并规划某个问题的修复方案。

tdd

135
from ProgrammerAnthony/Anything-Extract

使用 RED-GREEN-重构(red-green-refactor)循环进行测试驱动开发。适用于用户希望用 TDD 构建新功能或修复 bug,提到 “red-green-refactor”,希望使用集成测试,或询问“test-first development(先写测试)”。

request-refactor-plan

135
from ProgrammerAnthony/Anything-Extract

通过用户访谈创建一个详细的重构计划,并将其拆分成很小的提交(tiny commits),最后以 GitHub issue 的形式归档。适用于用户希望规划一次重构、创建重构 RFC,或把重构拆成安全的渐进步骤。

prd-to-plan

135
from ProgrammerAnthony/Anything-Extract

使用 tracer-bullet 竖向切片方法把 PRD 转换成多阶段的落地实施计划,并保存为本地 Markdown 文件(存放在 `./plans/`)。适用于用户希望把 PRD 拆分为多个阶段、生成实施计划、从 PRD 推导阶段计划,或提到 “tracer bullets”。

prd-to-issues

135
from ProgrammerAnthony/Anything-Extract

使用 tracer-bullet 竖向切片法,把 PRD 拆分成彼此独立、可以直接认领的 GitHub issues(并形成对应的实现工单)。适用于用户想把 PRD 转成 issues、创建实现任务,或把 PRD 拆成工作项。

improve-codebase-architecture

135
from ProgrammerAnthony/Anything-Extract

探索代码库以发现架构改进机会,重点让代码库更容易测试:通过“加深浅模块(deepening shallow modules)”的方式重构模块结构。适用于用户想改善架构、寻找可重构机会、整合强耦合模块、或让代码库更便于 AI 导航与理解。

grill-me

135
from ProgrammerAnthony/Anything-Extract

对用户在计划或设计方面进行“无情的质询”,直到形成共同理解,并逐一解决决策树中每个分支的依赖关系。适用于用户希望对某个计划进行压力测试、希望被严格追问他们的设计,或提到 “grill me(来烤我/质问我)”。

frontend-code-review

135
from ProgrammerAnthony/Anything-Extract

指导在项目中对前端代码(Next.js/React/TypeScript/Tailwind 等)进行结构、可维护性、性能与一致性审查,基于既定规则清单。适用于用户请求审查 .tsx/.ts/.js/.jsx 等前端文件或前端目录下的页面与组件。不用于后端代码(如 .py)。

edit-article

135
from ProgrammerAnthony/Anything-Extract

通过重组文章的段落结构、提升表达清晰度,并收紧措辞来编辑与改进文章。适用于用户希望编辑、修订或完善一份文章草稿。