中文 EN

Goal Workflow 使用指南

AI-driven development workflow — from PRD to shipped code

github.com/smallnest/goal-workflow

Usage Guide — 六步闭环研发工作流:规划、设计、拆解、实现、审查、交付。

目录

1. 概述

Goal Workflow 是一套基于 Claude Code / Codex 的 AI 研发工作流技能集,将软件开发的完整生命周期拆分为标准化步骤,每一步都由一个专属 Skill 驱动。

它让 AI Agent 能够像一个有经验的工程师一样——从理解需求、拆解任务、编写代码、审查质量,到最终提交合入——全流程自主完成。你只需描述功能想法,剩下的交给工作流。

/prd

需求文档生成 + Issue 拆解

  • 澄清问题 → 结构化 PRD
  • 拆解为独立可实施的 Issue
  • 支持 GitHub / Local / iCafe

/prd-to-spec

PRD 转技术设计方案

  • PRD 需求 → 架构 + API + 数据模型
  • 错误处理 + 安全 + 性能策略
  • Issue 映射 + 实施计划

/to-issues

拆解 PRD/SPEC 为 Issue 卡片

  • User Stories → 可实施的 Issue
  • 支持 GitHub / Local / iCafe
  • 可独立使用,不依赖 /prd

/goal

选择卡片进行端到端实现

  • Pick an Issue, implement it
  • 单次会话完成一个功能
  • Claude Code 或 Codex

/review-it

自动化代码审查与修复

  • 检测未提交变更或分支 diff
  • 验证发现 → 迭代修复
  • 直到审查通过为止

/ship-it

提交 → PR → 合入 → 关闭

  • Commit 关联 Issue 编号
  • Squash merge + delete branch
  • 添加实现总结并关闭卡片

/humanize-it

迭代式去 AI 味改写

  • 自动选择最佳人性化策略
  • 三路 skill 迭代直到达标
  • 最多 42 轮智能切换

/listenhub-tts

ListenHub 文本转语音

  • 快速合成 / 多角色 / 长文本
  • 音色列表供选择,默认晓曼
  • 支持 AI 润色长文本

/insight-diagram

UML 与架构图生成器

  • 分析代码库结构
  • UML / 架构图 / 流程图
  • 渲染为 HTML+SVG

/refactor

专家级代码重构

  • 22 种代码坏味道识别
  • 40+ 种重构手法 (Fowler 目录)
  • 五阶段安全协议

/modern-go

Go 代码现代化改造

  • 35+ 条 gofix 风格转换规则
  • Go 1.0 到 1.26+ 全覆盖
  • 自动检测版本 + 安全保护

/note-it

实现笔记记录

  • 设计决策 / 偏离 / 权衡
  • 待确认问题追踪
  • HTML 格式保存到 docs/

/code-to-spec

逆向生成项目规格文档

  • 分析代码、配置、测试、结构
  • 生成 12 章节完整 SPEC
  • 支持多层深度分析

/smell

架构坏味道检测

  • 8 大类、50+ 反模式和坏味道
  • 涵盖架构、耦合、内聚、设计、代码、测试、命名、复杂度
  • 输出详细 Markdown 报告与重构路线图

2. 安装

通过 npx skills CLI 一键安装所有技能:

# 安装本仓库所有 skills
npx skills add smallnest/goal-workflow

# 或安装指定 skill
npx skills add smallnest/goal-workflow --skill prd
npx skills add smallnest/goal-workflow --skill prd-to-spec
npx skills add smallnest/goal-workflow --skill to-issues
npx skills add smallnest/goal-workflow --skill review-it
npx skills add smallnest/goal-workflow --skill ship-it
npx skills add smallnest/goal-workflow --skill humanize-it
npx skills add smallnest/goal-workflow --skill listenhub-tts
npx skills add smallnest/goal-workflow --skill insight-diagram
npx skills add smallnest/goal-workflow --skill refactor
npx skills add smallnest/goal-workflow --skill modern-go
npx skills add smallnest/goal-workflow --skill note-it
npx skills add smallnest/goal-workflow --skill code-to-spec
npx skills add smallnest/goal-workflow --skill smell

# 全局安装(所有项目可用)
npx skills add smallnest/goal-workflow -g

# 安装到指定 agent
npx skills add smallnest/goal-workflow -a claude-code

前置要求

工具用途安装
ghGitHub CLI (Issue/PR 操作)brew install gh && gh auth login
claudeClaude Code CLInpm install -g @anthropic-ai/claude-code
npxnpm package runnerNode.js 自带
Tip:安装后在 Claude Code 中输入 /prd/prd-to-spec/to-issues/review-it/ship-it/refactor/modern-go/note-it/code-to-spec/humanize-it/listenhub-tts/insight-diagram/smell 即可直接调用对应技能。

3. 工作流总览

六步闭环,从需求到交付:

Goal Workflow Infographic
1 /prd
1.5 /prd-to-spec
1.6 /to-issues
2 /goal
3 /review-it
4 /ship-it
Step 1: /prd 描述功能想法 澄清问题 生成 PRD Output: PRD 1.5: /prd-to-spec 读取 PRD 技术澄清 生成 SPEC Output: SPEC (opt) 1.6: /to-issues 读取 PRD/SPEC 拆解 Issue 创建卡片 Output: Issues Step 2: /goal 选择 Issue 端到端实现 运行测试 Output: Code Step 3: /review-it 自动审查 验证发现 迭代修复 Output: ✓ Review Step 4: /ship-it Commit + Push Create PR Merge + Close Output: Shipped
步骤命令输入输出
1. 规划 /prd 功能描述 / 产品想法 PRD 文档 + Issue 卡片
1.5 设计 /prd-to-spec PRD 文档 技术 SPEC(可选)
1.6 拆解 /to-issues PRD / SPEC 文档 Issue 卡片
2. 实现 /goal 一个 Issue 卡片 可运行的代码实现
3. 审查 /review-it 代码变更 (dirty / branch) 通过审查的干净代码
4. 交付 /ship-it 已审查的代码 已合入的 PR + 已关闭的 Issue

4. Step 1: /prd — 需求规划

/prd 将一个模糊的功能想法转化为结构化的产品需求文档,并拆解为可独立实施的 Issue 卡片。

触发方式

# 在 Claude Code 中直接输入
/prd 给我们的任务管理系统加一个优先级功能

# 或使用触发词
写PRD:用户注册功能,支持邮箱和手机号
需求分析:为 API 增加限流能力

工作流程

输出示例

# 生成的 Issue 列表
📋 Generated 4 Issues from PRD:

#1: Add priority field to database (backend, high)
#2: Display priority indicator (frontend, high) — depends on #1
#3: Add priority selector (frontend, medium) — depends on #1
#4: Filter tasks by priority (frontend, medium) — depends on #1, #2
Tip:每个 Issue 的粒度应该是一个 Agent 在单次会话中可以完成的工作量。如果一个 User Story 太大(5+ 验收标准或跨前后端),会自动拆分。

5. Step 1.5: /prd-to-spec — PRD 转技术方案

/prd-to-spec 将产品需求文档(PRD)转化为可实施的技术设计方案(SPEC)。PRD 说明"做什么",SPEC 说明"怎么做"。

触发方式

# 在 Claude Code 中直接输入
/prd-to-spec tasks/prd-priority-system.md

# 或使用触发词
需求转设计:将优先级 PRD 转为技术方案
技术方案:基于 prd-user-auth.md 生成 SPEC

PRD → SPEC 映射

PRD 元素SPEC 章节转化方式
User Stories业务逻辑 + 测试映射故事 → 算法 + 测试用例
Functional RequirementsAPI 设计 + 业务逻辑FR → 端点 + 实现逻辑
Acceptance Criteria测试策略标准 → 具体测试场景
Non-Goals开放问题明确排除范围
Technical Considerations架构 + 性能约束 → 设计决策

SPEC 输出结构(11 章节)

#章节内容
1Summary覆盖范围、PRD 引用、设计决策摘要
2Architecture系统上下文、组件设计、文件结构
3Data ModelSchema 变更、实体定义、迁移计划
4API Design端点表、请求响应 Schema、错误响应
5Business Logic核心算法、校验规则、状态机、边界情况
6Error Handling错误分类、重试策略、降级方案
7Security认证授权、输入校验、数据保护
8Performance预期负载、优化策略、数据库考量
9Testing Strategy单元/集成/E2E 测试 + 验收标准映射
10Implementation Plan实施阶段、Issue 映射、渐进交付
11Open Questions & Risks未决问题、技术风险、假设前提

工作流程

Note:/prd-to-spec 是一个可选步骤。对于大多数中小型功能,PRD 中的 Functional Requirements 和 Acceptance Criteria 已经足够让 AI agent 在 /goal 阶段自主做出技术决策——agent 会自动分析代码库、理解架构、选择合适的实现路径,不需要一份预先写好的 SPEC。仅在以下场景才建议先跑 /prd-to-spec
  • 多人或多 agent 并行开发,需要共享技术约定
  • 跨多个服务/模块的大型改动,架构决策影响面大
  • 团队有合规或评审流程要求设计文档
  • PRD 写得较模糊,需要提前补足技术细节降低理解偏差

6. Step 1.6: /to-issues — 拆解 Issue 卡片

/to-issues 将 PRD 和/或 SPEC 拆解为可独立实施的 Issue,并创建到你选择的平台。可独立使用,不需要先运行 /prd

触发方式

# 在 Claude Code 中直接输入
/to-issues

# 或使用触发词
创建issue:基于 prd-user-auth.md 创建 Issue
拆解issue:从 SPEC 拆解可实施的卡片
生成卡片:将 PRD 和 SPEC 一起拆成 Issue

输入来源

选项说明
自动检测扫描 tasks/ 目录,列出可用的 PRD 和 SPEC
指定 PRD只基于 PRD 的 User Stories 拆解
指定 SPEC使用 SPEC 的 Issue Mapping 章节作为主指导
PRD + SPEC(推荐)PRD 提供需求,SPEC 提供技术约定,Issue 最完整

创建平台

平台工具说明
GitHubgh issue create需要 gh CLI 认证
LocalMarkdown 文件保存到 .autoresearch/issues/ 或自定义目录
Baidu iCafeicafe-cli需要 iCafe 空间参数

工作流程

Note:/to-issues 是从需求到实现的关键桥梁。它可以独立使用——即使你没有用 /prd 生成 PRD,只要有一个需求文档(甚至直接粘贴),就能拆出 Issue。

7. Step 2: /goal — 功能实现

/goal 是 Claude Code 内置的目标驱动开发模式。选择一个 Issue 卡片,Agent 会理解验收标准并端到端实现。

使用方式

# Claude Code: 指定 GitHub Issue 编号
/goal #42

# Claude Code: 指定本地 Issue 文件
/goal tasks/issues/issue-001-add-priority-field.md

# Codex: 使用 --goal 参数
codex --goal "Implement issue #42: Add priority field to database"

Agent 行为

Note:/goal 是 Claude Code 的内置功能,不包含在本 skill 包中。它与本工作流天然配合——/prd 生成的 Issue 格式正是 /goal 所期望的输入。

8. Step 3: /review-it — 代码审查

/review-it 在代码提交前进行自动化审查,发现潜在问题并迭代修复,直到审查通过。

触发方式

# 审查未提交的变更(默认模式)
/review-it

# 审查整个分支 vs main
/review-it --mode branch

# 审查 + 测试并行执行
/review-it --parallel-tests "npm test"

审查原则

原则说明
Advisory审查结果视为建议,不盲目应用
Verify每个发现都通过读取真实代码路径验证
Reject noise拒绝不切实际的边界情况、投机性风险、过度重构
Iterate修复后重新审查,直到无可操作发现
Minimal优先小修复,不做不必要的大重构

审查模式

工作树状态模式操作
有未提交变更local直接 /review
已提交未推送branchgit diff origin/main...HEAD + review
已推送 / PRbranch同上,自动检测 PR base
干净工作树skip无需审查
Tip:/review-it 支持 Claude Code、Codex、OpenCode 和 DeepSeek TUI,会自动适配各 Agent 的审查命令。

9. Step 4: /ship-it — 提交交付

/ship-it 是实现完成后的标准收尾流程:提交代码、创建 PR、合入、添加实现总结、关闭 Issue。

触发方式

# 在 Claude Code 中调用
/ship-it

# 或使用触发词
提交代码
创建PR并合入

完整流程

# Step 1: 提交代码(关联 Issue)
git add <related files>
git commit -m "Add priority field to database (#42)"

# Step 2: 推送分支
git push -u origin feat/issue-42-priority-field

# Step 3: 创建 PR(body 包含 Closes #42)
gh pr create --title "Add priority field" \
  --body "Closes #42 ..."

# Step 4: 合入
gh pr merge --squash --delete-branch

# Step 5: 关闭 Issue(如未自动关闭)
gh issue close 42 --reason completed

错误处理

场景处理方式
CI checks 失败查看失败原因,修复后追加 commit 推送
Merge conflictRebase origin/main,解决冲突后 force push
Branch protection确认 required reviews 已满足
Issue 未自动关闭确认 PR body 包含 Closes #N,或手动关闭
Note:/ship-it 依赖 gh CLI。确保已通过 gh auth login 完成认证。

10. Bonus: /humanize-it — 去 AI 味改写

/humanize-it 对指定文档进行去 AI 味的改写。根据文档类型自动选择最合适的人性化策略,迭代改写直到效果达标。

触发方式

# 在 Claude Code 中直接输入
/humanize-it docs/architecture.md

# 或使用触发词
去AI味:把这篇文档改成人话
降AIGC:humanize docs/blog-draft.md

子 Skill 能力矩阵

Skill适用场景改写风格
humanizer-zh通用文本、博客、文案自然、有温度、带观点
humanize-chinese通用 + 学术 + 长文本多风格(知乎/小红书/学术/文学等)
technical-writing技术文档、架构说明、评审稿平实、严谨、可论证

自动策略选择

文档类型优先策略顺序
技术文档technical-writinghumanizer-zhhumanize-chinese
学术论文humanize-chinese (academic) → humanizer-zhtechnical-writing
通用文本humanizer-zhhumanize-chinesetechnical-writing
长文本 (≥1500字)humanize-chinese (longform) → humanizer-zhtechnical-writing

迭代机制

Tip:你可以在触发时指定偏好,如"保持学术风格"、"要更口语化"、"技术文档不要太随意",改写时会优先选择对应的策略。

11. Bonus: /listenhub-tts — 文本转语音

/listenhub-tts 使用 ListenHub API 将文本转换为语音。支持三种合成模式,覆盖从短文本到长文本的全场景。

触发方式

# 在 Claude Code 中直接输入
/listenhub-tts 把这段文字转成语音

# 或使用触发词
语音合成:将 README.md 朗读出来
生成音频:用晓曼的声音读这篇文章

三种合成模式

模式接口适用场景特点
快速合成/v1/tts短文本(< 1000 字),单音色低延迟,返回 MP3 二进制流
多角色脚本/v1/speech多角色对话、播客不同音色交替朗读
长文本流式/v1/flow-speech/episodes长文本(> 1000 字)异步合成,支持 AI 润色

音色选择

场景行为
用户已指定音色直接使用指定的 speakerId
用户未指定音色调用 API 获取音色列表,展示供用户选择
默认音色chat-girl-105-cn(晓曼 dxqqq)

前置要求

配置说明
LISTENHUB_API_KEYListenHub API 密钥,设置为环境变量
Tip:长文本模式支持 AI 润色(aiPolish),可在合成前自动优化文本的口语化程度,让朗读效果更自然。

12. Bonus: /insight-diagram — UML 与架构图生成

/insight-diagram 为任意项目生成 UML 图、架构图和流程图。分析代码库后让用户选择要生成的图表类型,渲染为 HTML+SVG 并保存到 docs/ 目录。

触发方式

# 在 Claude Code 中直接输入
/insight-diagram

# 或使用触发词
生成架构图:分析项目结构并生成架构图
画流程图:为这个模块绘制调用流程图
生成UML图:生成类图和时序图

支持的图表类型

共支持 17 种图表类型,分为结构性图形和行为性图形两大类:

结构性图形(静态)

编号图表类型关注点
1系统架构图 ★组件关系、全局视角(非UML,最常用)
2类图定义类、属性、操作及关系
3对象图特定时刻的对象实例及其关系
4组件图系统组件及其依赖关系
5部署图物理硬件、节点及软件部署
6包图将模型元素分组组织
7复合结构图类的内部结构
8剖面图扩展UML元模型、自定义构造型

行为性图形(动态)

编号图表类型关注点
9流程图 ★主流程与分支(非UML,最常用)
10用例图从用户角度展示系统功能
11活动图过程的流程或步骤
12状态机图对象生命周期的状态变迁
13序列图按时间顺序展示对象间交互
14通信图侧重于对象间的组织关系
15定时图侧重于状态变化的时间约束
16交互概览图结合活动图和时序图
17泳道图跨组件/角色职责流程(活动图变体)

★ 标注为最常用的图表类型。默认推荐组合:架构图 + 序列图 + 流程图。

工作流程

Tip:你可以在触发时指定关注范围,如"只看 src/services/ 目录"、"重点分析数据库层",生成结果会更聚焦。

13. Bonus: /refactor — 专家级代码重构

/refactor 基于 Martin Fowler《重构》第 2 版的完整目录,提供专家级代码重构能力。通过识别代码坏味道并应用经过验证的重构手法,在不改变外部行为的前提下改善代码的可维护性、可读性和结构。

触发方式

# 在 Claude Code 中直接输入
/refactor

# 或使用触发词
重构:重构 UserManager 类,它太大了
code smell:这个函数有 Feature Envy,修复它
extract method:把这个长方法拆分成更小的函数

代码坏味道目录

共识别 22 种代码坏味道,按五大类别组织:

类别坏味道主要重构手法
臃肿类过长方法Extract Method, Replace Temp with Query
过大的类Extract Class, Extract Subclass
基本类型偏执Replace Data Value with Object
过长参数列表Introduce Parameter Object
数据泥团Extract Class
OO 滥用类Switch 语句Replace Conditional with Polymorphism
临时字段Extract Class, Introduce Null Object
被拒绝的遗赠Replace Inheritance with Delegation
异曲同工的类Rename Method, Extract Superclass
变更阻碍类发散式变化Extract Class
霰弹式修改Move Method, Move Field
平行继承体系Move Method, Move Field
冗余类注释(代码自说明)Extract Method, Rename Variable
重复代码Extract Method, Pull Up Method
冗赘类Inline Class, Collapse Hierarchy
纯数据类Move Method, Encapsulate Field
死代码删除(Git 历史有记录)
夸夸其谈未来性Inline Class, Remove Parameter
耦合类依恋情节Move Method
狎昵关系Move Method, Move Field
消息链Hide Delegate
中间人Remove Middle Man
不完美的库类Introduce Foreign Method

重构手法目录

40+ 种重构手法,分 6 大类,每种附带机械步骤和对比示例:

类别手法数代表性手法
组合方法9Extract Method, Inline Method, Extract Variable, Replace Temp with Query, Substitute Algorithm
移动特性7Move Method, Move Field, Extract Class, Inline Class, Hide Delegate
组织数据13Replace Data Value with Object, Encapsulate Field, Replace Type Code with Subclasses, Replace Magic Number
简化条件8Decompose Conditional, Guard Clauses, Replace Conditional with Polymorphism, Introduce Null Object
方法调用13Rename Method, Separate Query from Modifier, Introduce Parameter Object, Replace Error Code with Exception
泛化9Pull Up Method, Push Down Method, Extract Interface, Form Template Method, Replace Inheritance with Delegation

安全协议

语言专属指南

语言核心建议
Javafinal 局部变量、IDE 自动重构、Records、Sealed Classes
TypeScript解构减少参数、const 优先、Union Types 替代类型码、?. 消除 null 检查
PythonType Hints、dataclasses、@property、Context Managers
Go小接口、命名返回值、表格驱动测试、early returns 消除嵌套
RustResult/Option 替代错误码和 null、Pattern Matching、From trait、Derive macros
Tip:每次重构只需告诉 AI "这个类的这个坏味道,请用对应的重构手法修复",AI 会按安全协议逐步执行,每步提交。

14. Bonus: /modern-go — Go 代码现代化改造

/modern-go 自动将 Go 代码升级为现代写法和 API,类似 go fix。扫描 go.mod 检测 Go 版本,对 Go 源文件批量应用版本适配的转换规则,覆盖从 Go 1.0 到 1.26+ 的 35+ 条规则。

触发方式

# 在 Claude Code 中直接输入
/modern-go

# 或使用触发词
modernize:现代化改造这个项目的 Go 代码
升级Go代码:更新到 Go 1.22 的写法
gofix:扫描 pkg/ 目录并应用转换

工作流程

转换规则目录(按 Go 版本)

版本规则示例(Before → After)
1.0+time.Sincetime.Now().Sub(start)time.Since(start)
1.8+time.Untildeadline.Sub(time.Now())time.Until(deadline)
1.10+strings.Builder循环内 s += itemstrings.Builder
1.13+errors.Iserr == io.EOFerrors.Is(err, io.EOF)
1.18+any, strings.Cut, bytes.Cutinterface{}any, Index+切片 → Cut
1.19+fmt.Appendf, 类型安全原子操作append(buf, fmt.Sprintf(...)...)fmt.Appendf
1.20+strings.Clone, CutPrefix/CutSuffix, errors.Joinstring([]byte(s))strings.Clone(s)
1.21+min/max, clear, slices/maps手动循环 → slices.Contains, maps.Clone
1.22+range over int, cmp.Or, reflect.TypeForfor i:=0;i<n;i++for i:=range n
1.23+迭代器 helpers, SplitSeq/FieldsSeqfor _,p:=range strings.Split(s,sep)SplitSeq
1.24+t.Context(), omitzero, b.Loop()测试中 context.Background()t.Context()
1.25+wg.Go()wg.Add(1); go func(){defer wg.Done();fn()}()wg.Go(fn)
1.26+new(expr), errors.AsTypev:=42; &vnew(42)

安全规则

Tip:可以在触发时指定范围,如 /modern-go pkg/ 仅改造 pkg/ 目录,或 /modern-go main.go 仅改造单个文件。

15. Bonus: /note-it — 实现笔记记录

/note-it 在代码实现和审查完成后,为当前 Issue 生成一份结构化实现笔记,记录设计决策、偏离、权衡和待确认问题,输出为 HTML 格式保存到 docs/ 目录。

触发方式

# 在 Claude Code 中直接输入
/note-it

# 或使用触发词
记录笔记:为 Issue #42 生成实现笔记
implementation notes:记录本次实现的决策和偏离

笔记内容

类别关注点示例
Design Decisions规格模糊处的选择及理由为什么选择接口多态而非 switch
Deviations有意偏离规格的地方及原因简化了错误处理策略的理由
Tradeoffs考虑的替代方案及取舍分析内联 vs 提取函数的选择
Open Questions需要确认或修改的事项性能假设是否需要基准测试验证

输出

定位

/note-it 位于工作流中 /review-it/ship-it 之间,作为提交前最终检查点——确保实现意图被完整记录,方便后续维护者理解代码背后的决策逻辑。

Tip:即使没有偏离规格,记录设计决策和权衡也是有价值的——6 个月后回看代码时,这些笔记比代码注释更能解释"当时为什么这么做"。

16. Bonus: /code-to-spec — 逆向生成规格文档

/code-to-spec 分析一个既有项目的代码、配置、测试和结构,反向生成一份完整的 SPEC(规格)文档。输出可用于重建项目、新人入职或对比实际实现与预期设计。

触发方式

# 在 Claude Code 中直接输入
/code-to-spec

# 或使用触发词
生成设计文档:分析当前项目并生成 SPEC
reverse spec:逆向工程这个项目的规格
生成规格文档:为 src/ 目录生成技术规格

分析深度

级别内容适用场景
Overview架构 + 技术栈 + 核心功能快速了解项目,~5 分钟
Standard(默认)+ API 合约 + 数据模型 + 配置 + 依赖全面理解项目
Deep+ 内部模块交互 + 错误处理 + 测试覆盖准备重构或重写

SPEC 文档结构(12 章节)

#章节内容
1Overview目的、核心功能、架构风格
2Tech Stack语言、框架、数据库、构建、测试、部署
3Project Structure目录树 + 各目录职责注释
4Data Model核心实体、字段、关系、状态流转
5API Surface端点/命令/函数表 + 请求响应 Schema
6Configuration环境变量、配置文件、Feature Flags
7External Dependencies第三方服务、基础设施、失败影响
8Business Rules不变量、校验规则、业务逻辑约束
9Non-Functional性能、安全、错误处理模式
10Testing Strategy测试框架、覆盖模式
11Known Gaps不确定项、假设、无测试区域
12Appendix依赖图、本地环境搭建步骤

工作流程

Tip:对于大型项目(>500 文件),建议先用 Overview 深度快速了解全貌,再对感兴趣的模块用 Deep 深度分析。

17. Bonus: /smell — 架构坏味道检测

/smell 分析代码库中的架构反模式、代码坏味道和算法复杂度热点。输出详细的 Markdown 报告,包含严重级别、证据和重构路线图。

如何调用

# 在 Claude Code 中直接输入
/smell

# 或使用触发短语
代码坏味道检测:找出代码坏味道
架构审计:检测架构反模式
复杂度扫描:分析代码复杂度

检测类别(8 大类,50+ 坏味道)

类别示例
架构大泥球、分布式单体、贫血模型、CQRS 滥用、层边界违反
耦合循环依赖、内容耦合、公共耦合(全局状态)、印记耦合
内聚上帝对象、霰弹式修改、依恋情结、数据泥团
设计抽象泄露、静态粘连、服务定位器滥用、SOLID 违反
代码重复代码、长方法、基本类型偏执、魔数、死代码
测试零测试覆盖、测试-实现耦合、不稳定测试
命名模糊命名、命名不一致
复杂度嵌套循环 (O(n²))、N+1 查询、重复线性扫描、循环内排序、渲染重复计算

报告结构

Tip:快速检查时可指定"仅严重"模式。范围可选全项目、指定模块或仅最近变更文件。

18. 支持的平台

Goal Workflow 的技能可在多个 AI Coding Agent 中使用:

Agent/prd/prd-to-spec/to-issues/goal/review-it/note-it/ship-it/refactor/modern-go/code-to-spec/smell/humanize-it/listenhub-tts/insight-diagram
Claude Code✓ (内置)
Codex✓ (--goal)
OpenCode
DeepSeek TUI

Issue 创建平台

平台工具说明
GitHubgh issue create需要 gh CLI 认证
LocalMarkdown 文件保存到本地目录
Baidu iCafeicafe-cli需要 iCafe 空间参数

19. FAQ

Q: 必须按顺序使用所有步骤吗?

不必。每个 Skill 都是独立的,可以单独使用。比如你已经有 Issue 了,可以直接从 /goal 开始;代码已经写好,可以直接用 /review-it 审查。但完整走一遍流程能获得最好的效果。

Q: /goal 是哪里来的?为什么没有在 skills 目录中?

/goal 是 Claude Code 的内置功能,不需要额外安装。本工作流的 /prd 生成的 Issue 格式与 /goal 的期望输入完全匹配。

Q: 可以在非 GitHub 项目中使用吗?

可以。/prd 支持将 Issue 保存为本地 Markdown 文件或创建到百度 iCafe。/review-it 只需要本地 git 仓库。/ship-it 目前依赖 GitHub(gh CLI)。

Q: /review-it 和手动 code review 的区别?

/review-it 是自动化的自查(self-review),在提交前发现明显问题。它不替代团队 code review,而是在 PR 创建前提升代码质量,减少 reviewer 需要指出的低级问题。

Q: Issue 粒度应该多大?

每个 Issue 应该是一个 Agent 在单次会话中可以完成的工作量——通常是 1-3 个文件的变更,有明确的验收标准。/prd 会自动按这个粒度拆解,但你可以在确认前调整。

Q: 如何在 Codex 中使用?

通过 npx skills add 安装时选择 -a codex。在 Codex 中使用 codex --goal "..." 替代 /goal/review-it 在各 Agent 中通用。

Q: /prd-to-spec 是必需的吗?什么时候可以跳过?

不是必需的。/prd-to-spec 是一个可选步骤。PRD 说的是"做什么",SPEC 说的是"怎么做"。区别在于:AI agent 在执行 /goal 时本身就具备"怎么做"的能力——它会自动分析代码库、理解现有架构和约定、在实现过程中做出合理的技术决策。换句话说,AI agent 就是一个活的 SPEC 引擎,不需要在纸面上先画一遍。

大多数中小型功能只靠 PRD → /goal 就能很好地跑通。以下场景才值得多写一步 /prd-to-spec:

如果你的项目是单人开发、功能边界清晰、agent 已经能稳定理解项目结构的,跳过 /prd-to-spec 完全合理,甚至更高效。把它当成工具包里的可选武器,需要时再拿出来。

Q: /humanize-it 的 42 次迭代上限是怎么来的?

数字 42 并非迭代次数有特殊要求,而是向经典科幻小说《银河系漫游指南》(The Hitchhiker's Guide to the Galaxy)致敬的极客文化。在该书中,超级计算机经过 750 万年计算,得出了"生命、宇宙及一切的终极答案"就是 42。在编程界,这个数字非常流行,原因有二:

实际使用中,大多数文档在 3-5 轮迭代后就能达标。迭代的核心是智能切换策略——当一种改写方式效果停滞时,自动换用另一种,三种策略组合使用可以互补覆盖不同类型的 AI 痕迹。

Q: /humanize-it 支持英文文档吗?

目前 /humanize-it 的三个子 skill 主要针对中文文本优化。humanizer-zh 的模式检测规则对英文也部分适用,但改写效果以中文为最佳。

Q: /listenhub-tts 如何获取 API Key?

前往 listenhub.ai 注册并获取 API Key,然后设置为环境变量:export LISTENHUB_API_KEY=your_key

Q: /listenhub-tts 支持哪些语言?

ListenHub 支持中文(zh)和英文(en)等多种语言的音色。调用音色列表 API 时可通过 ?language=zh 参数筛选。

Q: /insight-diagram 支持哪些图表类型?

/insight-diagram 支持 17 种图表类型,包括系统架构图、14 种 UML 图(类图、对象图、组件图、部署图、包图、复合结构图、剖面图、用例图、活动图、状态机图、序列图、通信图、定时图、交互概览图)、流程图和泳道图。输出为 HTML+SVG 格式,保存到 docs/ 目录。适用于任何软件项目。