内容
# 快速设计模式 — 适用于 Claude Code & Codex
[](https://github.com/imvityalee/swift-design-patterns/actions/workflows/ci.yml)
一款适用于 [Claude Code](https://code.claude.com) 的插件 — 同时也适用于 [OpenAI Codex](https://github.com/openai/codex) MCP 服务器(参见 [与 Codex 结合使用](#use-with-codex))— 该插件使您的编码代理精通 **Swift 中的 23 种 Gang-of-Four 设计模式**。它包含:
- 🧰 一个 **MCP 服务器**,将模式目录作为工具公开
- 🧠 一个 **技能** + **斜杠命令**,在您使用 Swift 中的设计模式时自动启用
每个模式都附带一个 **符合 Swift 语言习惯的、编译检查的示例**(所有 46 个示例都在 Swift 6 工具链下类型检查)。
## 您将获得
### MCP 工具
| 工具 | 功能 |
|---|---|
| `list_patterns` | 浏览目录,可选按类别(创建型 / 结构型 / 行为型)筛选。 |
| `get_pattern` | 某个模式的完整参考资料 — 意图、问题、解决方案、适用性、参与者、概念性和现实世界的 Swift 示例、优缺点、相关模式。接受 ID(`abstract-factory`)或名称(`Abstract Factory`)。 |
| `recommend_pattern` | 用平实语言描述设计问题;获取带有匹配提示的排名候选模式。 |
| `get_project_conventions` | 读取当前项目的架构和约定文件,以便建议匹配 *您的* 代码库,而不是通用默认值。 |
### 技能和命令
- **`swift-design-patterns` 技能** 在您选择、实现、重构或解释 Swift 中的模式时自动调用 — 并为您驱动 MCP 工具。
- **`/pattern <名称或问题>`** — 快速查找或按需推荐(`/pattern Strategy` 或 `/pattern 我有一个巨大的 switch 选择行为`)。
- **`/recommend-pattern <问题>`** — 为描述的问题提供排名模式建议。
- **`/refactor-to-pattern <代码或坏味道>`** — 将 Swift 代码重构为合适的模式,遵循您的约定。
- **`/list-patterns [类别]`** — 浏览目录,可选按创建型 / 结构型 / 行为型分类。
- **`/compare-patterns <A> vs <B>`** — 比较两个模式以及何时选择哪个。
- **`/swift-conventions [init]`** — 查看或搭建项目的约定文件,以便插件遵循 *您的* 架构(参见下文)。
### 使其符合您的架构
目录是通用的(GoF),但每个项目的架构、习惯用法和自定义模式都不同。在 `.claude/swift-architecture.md` 中声明它们(运行 `/swift-conventions init`),插件会读取并 **遵循它们而不是通用默认值** — MVVM-C、VIPER、TCA、Clean、禁止模式、您自己的抽象、您的团队使用的任何内容。参见 [docs/conventions.md](docs/conventions.md)。
## 安装
在 Claude Code 中:
安装市场
```text
/plugin marketplace add imvityalee/swift-design-patterns
```
安装技能
```text
/plugin install swift-design-patterns
```
然后开始使用 — 询问“哪个模式适合 …?”、“在 Swift 中给我看 Observer”,或运行 `/pattern …`。MCP 服务器是捆绑的(单个自包含的 `dist/index.js`);您只需要 Node.js 可用,而 Claude Code 已经需要它。
### 在团队中使用
要在共享项目中为所有人自动启用插件(无需手动安装),请将代码片段提交到该项目的 `.claude/settings.json` 中。参见 [docs/team-setup.md](docs/team-setup.md)。
## 与 Codex 结合使用
相同的 MCP 服务器在 [OpenAI Codex](https://github.com/openai/codex) 下运行 — 包括 CLI 和 IDE 扩展,它们共享 `~/.codex/config.toml`,因此一个设置涵盖两者。Codex 没有插件市场,因此您需要直接连接:
**1. 注册 MCP 服务器(必需 — 这是工具)。** 一个命令:
```bash
codex mcp add swift-design-patterns -- npx -y swift-design-patterns-mcp
```
它在 `~/.codex/config.toml` 中写入一个 `[mcp_servers.swift-design-patterns]` 块。您更喜欢手动编辑文件?从 [`codex/config.example.toml`](codex/config.example.toml) 复制该块。无论哪种方式,所有四个工具(`list_patterns`、`get_pattern`、`recommend_pattern`、`get_project_conventions`)都可在 Codex 中使用。您只需要 `PATH` 上的 Node.js(用于 `npx`)。
**2. 添加技能(可选,推荐)。** Codex 的等效于 Claude 的自动调用技能的是 [Agent Skill](https://developers.openai.com/codex/skills)。将捆绑的技能复制到 Codex 扫描的目录中:
```bash
# 仅限此项目(存储库本地,自动发现,优先使用):
mkdir -p .agents/skills && cp -R codex/skills/swift-design-patterns .agents/skills/
# …或用于所有项目(全局):
mkdir -p ~/.agents/skills && cp -R codex/skills/swift-design-patterns ~/.agents/skills/
```
然后,当您处理 Swift 设计模式时,Codex 会自动选择该技能(或您通过 `/skills` 或 `$swift-design-patterns` 选择它),并为您驱动这四个 MCP 工具。只需自然地询问 — “哪个模式适合巨大的行为选择开关?”,“比较 Strategy 和 State”,“重构为模式” — Codex 技能不接受斜杠命令参数。
> **约定文件:** 在 Codex 下,将您的项目约定保存到存储库根目录的 `.swift-architecture.md` 中。服务器还会读取 `.claude/swift-architecture.md`(Claude 的位置),因此相同的约定适用于两个工具。
## 23 种模式
**创建型** — 抽象工厂、构建器、工厂方法、原型、单例
**结构型** — 适配器、桥梁、组合、装饰器、外观、享元、代理
**行为型** — 责任链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者
## 本地开发
```bash
npm install # 安装开发依赖(SDK、esbuild、typescript、tsx)
npm run typecheck # tsc --noEmit
npm test # 单元测试:目录完整性 + 推荐器
npm run build # 构建 src/ -> dist/index.js(已提交,因此插件无需 node_modules 即可运行)
npm run smoke # 通过 stdio 启动服务器并使用每个工具
```
CI([`.github/workflows/ci.yml`](.github/workflows/ci.yml))在每次推送/PR 时运行上述所有操作,类型检查所有 46 个 Swift 示例,并检查提交的 `dist/` 是否已过时。参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
目录位于 `src/patterns/<id>.ts` 中,每个模式一个文件,每个文件都实现了 `src/types.ts` 中的 `Pattern` 接口。添加或编辑模式,在 `src/catalog.ts` 中注册,然后运行 `npm run build`。
要类型检查 Swift 示例本身(需要 Swift 工具链):
```bash
npx esbuild scripts/dump-swift.ts --bundle --platform=node --format=esm --outfile=/tmp/dump.mjs
node /tmp/dump.mjs /tmp/sdp-swift
cd /tmp/sdp-swift && for f in *.swift; do swiftc -typecheck "$f"; done
```
## 许可证和署名
MIT — 参见 [LICENSE](LICENSE)。
本存储库中的所有模式描述和 Swift 代码都是 **原创作品**。Gang-of-Four 模式集是常识;本项目不复制或源自任何特定的受版权保护的源。它的灵感来自优秀的 [Refactoring.Guru](https://refactoring.guru/design-patterns) 目录 — 在那里可以找到更深入的图解解释 — 但不包含其任何文本或代码。