mcpField
B
build

build

github.com/redisearch开发6.2k45 次安装今天更新
代码仓库

关于 build

面向开发重大功能的团队的开发技能,引导工作依次进行调研、实施规划、进度跟踪、分阶段执行和状态检查,并在 `docs/{name}/` 下管理文档。

主要功能

  1. 01调研功能需求
  2. 02制定分阶段实施计划
  3. 03建立进度跟踪
  4. 04执行实施阶段
  5. 05检查功能状态

适用场景

  1. 01探索待开发功能
  2. 02拆分实施阶段
  3. 03跟踪功能进度
  4. 04继续进行中的功能

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/redisearch/redisearch --skill build

安装后在 Claude Code 中输入/build确认已加载。

详细介绍

功能开发流程——研究、规划、跟踪并实现重要功能。

说明

此命令管理一个分为 4 个阶段的功能开发工作流,用于构建重要功能。解析 $ARGUMENTS 以确定要运行的子命令。

提供的参数: $ARGUMENTS

参数解析

解析 $ARGUMENTS 的第一个词,以确定子命令:

  • research [name] → 运行研究阶段
  • implementation [name] → 运行实现阶段
  • progress [name] → 运行进度阶段
  • phase [n] [name] → 运行实现的第 n 阶段
  • status [name] → 显示当前状态并建议下一步
  • (空或无法识别)→ 显示使用帮助

如果参数中未提供功能名称,你 MUST 使用 AskUserQuestion 提示用户提供。


子命令:帮助(参数为空)

如果没有提供参数,显示以下帮助:

/build - Feature Development Pipeline

Subcommands:
  /build research [name]        Deep research on a feature idea
  /build implementation [name]  Create phased implementation plan
  /build progress [name]        Set up progress tracking
  /build phase [n] [name]       Execute implementation phase n
  /build status [name]          Show status and next steps

Example workflow:
  /build research chat-interface
  /build implementation chat-interface
  /build progress chat-interface
  /build phase 1 chat-interface

然后使用 AskUserQuestion 询问用户想做什么:

  • question: "你想做什么?"
  • header: "操作"
  • multiSelect: false
  • options:
    • label: "开始研究新功能" description: "开始对新的功能构想进行深入研究"
    • label: "继续现有功能" description: "继续处理正在开发的功能"
    • label: "查看状态" description: "查看某个功能接下来要执行的步骤"

子命令:research

步骤 1:获取功能名称

如果参数中未提供功能名称,使用 AskUserQuestion:

  • question: "请为此功能提供一个简短标识符。(使用小写字母,可用连字符,例如 'chat-interface'、'user-auth'、'data-export'。)选择 'Other' 可自行输入。"
  • header: "功能名称"
  • multiSelect: false
  • options:
    • label: "我来输入名称" description: "输入一个简短的 kebab-case 功能标识符"
步骤 2:检查是否已有研究文档

检查 docs/{name}/RESEARCH.md 是否已存在。

如果已存在,使用 AskUserQuestion:

  • question: "此功能已有 RESEARCH.md。你想怎么处理?"
  • header: "现有文档"
  • multiSelect: false
  • options:
    • label: "覆盖" description: "以新的探索内容替换现有研究"
    • label: "追加" description: "在现有内容下方添加新研究"
    • label: "跳过" description: "保留现有研究,并建议下一步"

如果选择了“跳过”,建议运行 /build implementation {name},然后退出。

步骤 3:收集功能背景

使用 AskUserQuestion 了解该功能:

  • question: "描述一下你想构建的功能。它解决什么问题?应该实现什么?(选择 'Other' 进行描述。)"
  • header: "描述"
  • multiSelect: false
  • options:
    • label: "我来描述" description: "详细描述该功能"
步骤 4:确定研究范围

使用 AskUserQuestion:

  • question: "研究应重点关注哪些方面?"
  • header: "关注领域"
  • multiSelect: true
  • options:
    • label: "技术实现" description: "API、库、架构模式"
    • label: "UI/UX 设计" description: "界面设计、用户流程、交互"
    • label: "数据需求" description: "要存储的数据、架构、隐私"
    • label: "平台能力" description: "操作系统 API、系统集成、权限"
步骤 5:开展深入研究

现在对该功能开展深入研究:

  1. 代码库探索:了解现有模式、类似功能和相关代码
  2. 网络搜索:研究最佳实践、类似实现和相关 API
  3. 技术深挖:探索具体技术、库和框架
  4. 频繁使用 AskUserQuestion:验证假设、澄清需求,并征求用户对决策的意见

研究应涵盖:

  • 问题定义和用户需求
  • 技术方案及其权衡
  • 所需数据模型和存储
  • UI/UX 注意事项
  • 与现有代码的集成点
  • 潜在挑战和风险
  • 附带理由的推荐方案
第 6 步:撰写研究文档

如有需要,创建目录:docs/{name}/

按照以下结构将研究结果写入 docs/{name}/RESEARCH.md:

# {Feature Name} Research

## Overview
[Brief description of the feature and its purpose]

## Problem Statement
[What problem this solves, why it matters]

## User Stories / Use Cases
[Concrete examples of how users will use this]

## Technical Research

### Approach Options
[Different ways to implement this, with pros/cons]

### Recommended Approach
[The approach you recommend and why]

### Required Technologies
[APIs, libraries, frameworks needed]

### Data Requirements
[What data needs to be stored/tracked]

## UI/UX Considerations
[Interface design thoughts, user flows]

## Integration Points
[How this connects to existing code/features]

## Risks and Challenges
[Potential issues and mitigation strategies]

## Open Questions
[Things that still need to be decided]

## References
[Links to relevant documentation, examples, articles]
第 7 步:下一步

撰写研究文档后,告知用户:

"研究完成!文档已保存到 docs/{name}/RESEARCH.md

下一步: 运行 /build implementation {name},创建分阶段实施计划。"


子命令:implementation

第 1 步:获取功能名称

如果参数中没有功能名称,使用 AskUserQuestion 提示用户输入(与研究阶段相同)。

第 2 步:确认研究文档存在

检查 docs/{name}/RESEARCH.md 是否存在。

如果不存在:

  • 告知用户:"在 docs/{name}/RESEARCH.md 未找到研究文档"
  • 建议:"请先运行 /build research {name} 创建研究文档。"
  • 退出
第 3 步:检查现有实施文档

检查 docs/{name}/IMPLEMENTATION.md 是否已存在。

如果存在,使用 AskUserQuestion:

  • question: "IMPLEMENTATION.md 已存在。你想怎么做?"
  • header: "现有文档"
  • multiSelect: false
  • options:
    • label: "Overwrite" description: "创建一份全新的实施计划"
    • label: "Append" description: "在现有内容后添加新阶段"
    • label: "Skip" description: "保留现有计划,并建议下一步"

如果选择 "Skip",建议运行 /build progress {name},然后退出。

第 4 步:阅读研究文档

阅读 docs/{name}/RESEARCH.md,了解:

  • 推荐方案
  • 技术要求
  • 所需的数据模型
  • UI/UX 设计
  • 集成点
第 5 步:设计实施阶段

将研究内容拆分为切实可行的实施阶段。每个阶段应:

  • 独立提供价值(交付可用的成果)
  • 足够精简,能在一次专注的工作时段内完成
  • 基于前一阶段构建
  • 有明确的成功标准

使用 AskUserQuestion 确认阶段划分:

  • question: "实施阶段应划分得多细?"
  • header: "阶段规模"
  • multiSelect: false
  • options:
    • label: "小阶段(1-2 小时)" description: "划分为多个专注的小阶段,更容易跟踪进度"
    • label: "中等阶段(半天)" description: "均衡方案,阶段数量适中"
    • label: "大阶段(一天)" description: "阶段较少,每个阶段交付重要功能"
第 6 步:开展阶段研究

针对计划中的每个阶段开展专项研究:

  • 搜索实施细节
  • 检查代码库中的相关代码
  • 确定各阶段之间的依赖关系

如对阶段顺序或范围有任何疑问,使用 AskUserQuestion。

第 7 步:撰写实施文档

按照以下结构写入 docs/{name}/IMPLEMENTATION.md:

# {Feature Name} Implementation Plan

## Overview
[Brief recap of what we're building and the approach from research]

## Prerequisites
[What needs to be in place before starting]

## Phase Summary
[Quick overview of all phases]

---

## Phase 1: [Phase Title]

### Objective
[What this phase accomplishes]

### Rationale
[Why this phase comes first, what it enables]

### Tasks
- [ ] Task 1
- [ ] Task 2
- [ ] Task 3

### Success Criteria
[How to verify this phase is complete]

### Files Likely Affected
[List of files that will probably need changes]

---

## Phase 2: [Phase Title]

[Same structure as Phase 1]

---

[Continue for all phases]

---

## Post-Implementation
- [ ] Documentation updates
- [ ] Testing strategy
- [ ] Performance validation

## Notes
[Any additional context or decisions made during planning]
第 8 步:下一步

撰写实施文档后,告知用户:

"实施计划已完成!文档已保存到 docs/{name}/IMPLEMENTATION.md

下一步: 运行 /build progress {name},设置进度跟踪。"


子命令:progress

第 1 步:获取功能名称

如果参数中没有功能名称,使用 AskUserQuestion 提示用户输入。

第 2 步:确认实施文档存在

检查 docs/{name}/IMPLEMENTATION.md 是否存在。

如果不存在:

  • 告知用户:"在 docs/{name}/IMPLEMENTATION.md 未找到实施文档"
  • 建议:"请先运行 /build implementation {name}。"
  • 退出
第 3 步:检查现有进度文档

检查 docs/{name}/PROGRESS.md 是否已存在。

如果存在,使用 AskUserQuestion:

  • question: "PROGRESS.md 已存在。你想怎么做?"
  • header: "现有文档"
  • multiSelect: false
  • options:
    • label: "Overwrite" description: "重新开始跟踪进度"
    • label: "Keep existing" description: "保留当前进度,并建议下一步"

如果选择 "Keep existing",阅读进度文档,并建议下一个尚未完成的阶段。

第 4 步:阅读实现文档

阅读 docs/{name}/IMPLEMENTATION.md,提取:

  • 所有阶段标题
  • 每个阶段的任务
  • 成功标准
第 5 步:创建进度文档

将以下结构写入 docs/{name}/PROGRESS.md:

# {Feature Name} Progress

## Status: Phase 1 - Not Started

## Quick Reference
- Research: `docs/{name}/RESEARCH.md`
- Implementation: `docs/{name}/IMPLEMENTATION.md`

---

## Phase Progress

### Phase 1: [Title from Implementation]
**Status:** Not Started

#### Tasks Completed
- (none yet)

#### Decisions Made
- (none yet)

#### Blockers
- (none)

---

### Phase 2: [Title]
**Status:** Not Started

[Same structure]

---

[Continue for all phases]

---

## Session Log

### [Date will be added as work happens]
- Work completed
- Decisions made
- Notes for next session

---

## Files Changed
(Will be updated as implementation progresses)

## Architectural Decisions
(Major technical decisions and rationale)

## Lessons Learned
(What worked, what didn't, what to do differently)
第 6 步:下一步

创建进度文档后:

"进度跟踪已设置!文档已保存至 docs/{name}/PROGRESS.md

**下一步:**运行 /build phase 1 {name} 开始实施。"


子命令:phase

第 1 步:解析参数

解析参数以提取:

  • 阶段编号(如果已提供)
  • 功能名称(如果已提供)

如果两者均未提供,请使用 AskUserQuestion 询问。

第 2 步:获取功能名称

如果尚未确定功能名称,请使用 AskUserQuestion 询问。

第 3 步:验证所有文档是否存在

检查以下三个文档是否都存在:

  • docs/{name}/RESEARCH.md
  • docs/{name}/IMPLEMENTATION.md
  • docs/{name}/PROGRESS.md

如果缺少任何文档,告知用户缺少哪个文档,并建议使用相应的 /build 命令创建它。

第 4 步:获取阶段编号

如果参数中未包含阶段编号:

阅读 docs/{name}/IMPLEMENTATION.md,提取可用阶段。

使用 AskUserQuestion 让用户选择:

  • question: "您想处理哪个阶段?"
  • header: "阶段"
  • multiSelect: false
  • options: [根据 IMPLEMENTATION.md 中找到的阶段动态生成,并标记已完成的阶段]
第 5 步:阅读所有上下文

阅读全部三个文档,以充分了解:

  • 研究内容和理由(RESEARCH.md)
  • 特定阶段的任务和成功标准(IMPLEMENTATION.md)
  • 当前进度和已作出的决定(PROGRESS.md)
第 6 步:深入研究阶段内容

开始实施前:

  1. 搜索网络,查找与此阶段相关的具体实施细节
  2. 探索代码库,查找相关现有代码
  3. 使用 AskUserQuestion,澄清阶段要求中的任何歧义
第 7 步:执行阶段工作

开始实施此阶段:

  1. 逐项完成阶段中的任务
  2. 经常使用 AskUserQuestion 讨论实施决策
  3. 遵循“始终可用”的理念,边做边测试
  4. 作出决定时,在 PROGRESS.md 中记录
第 8 步:更新进度文档

工作期间,更新 docs/{name}/PROGRESS.md:

  • 将任务标记为已完成
  • 记录作出的决定及其原因
  • 记下遇到的任何阻碍
  • 列出已更改的文件
  • 添加架构决策
  • 使用当天的工作更新会话日志

更新阶段状态:

  • 开始时设为“In Progress”(进行中)
  • 所有任务完成且达到成功标准后设为“Completed”(已完成)
第 9 步:下一步

完成阶段后:

  1. 阅读 PROGRESS.md,确定下一个未完成的阶段
  2. 告知用户已完成,并建议下一步操作:

"阶段 {n} 已完成!进度已更新至 docs/{name}/PROGRESS.md

**下一步:**运行 /build phase {n+1} {name},继续处理[下一阶段标题]。"

或者,如果所有阶段均已完成:

"所有阶段均已完成!{feature name} 功能已实施完毕。

请考虑:

  • 运行测试以验证一切正常
  • 更新文档
  • 创建 PR 以供审查"

子命令:status

第 1 步:获取功能名称

如果参数中未包含功能名称,请使用 AskUserQuestion 询问。

第 2 步:检查哪些文档存在

检查以下文档是否存在:

  • docs/{name}/RESEARCH.md
  • docs/{name}/IMPLEMENTATION.md
  • docs/{name}/PROGRESS.md
第 3 步:确定状态和下一步

根据现有文档:

没有文档: "未找到功能“{name}”的文档。 下一步: 运行 /build research {name} 以开始。"

仅存在 RESEARCH.md: "已完成“{name}”的研究。 下一步: 运行 /build implementation {name} 以制定实施计划。"

存在 RESEARCH.md 和 IMPLEMENTATION.md: "已完成“{name}”的研究和实施计划。 下一步: 运行 /build progress {name} 以设置进度跟踪。"

三个文件均存在: 读取 PROGRESS.md,查找当前阶段状态。 "功能“{name}”正在进行中。 当前状态: [阶段 X - 状态] 下一步: 运行 /build phase {next incomplete phase} {name} 以继续。"

如果所有阶段均已完成: "功能“{name}”已完成实施!"


重要指南

灵活使用 AskUserQuestion

在所有阶段中,遇到以下情况时使用 AskUserQuestion:

  • 需求存在歧义
  • 存在多种可行方案
  • 需要验证某项假设
  • 某项决定会对实施产生重大影响
  • 不确定范围或优先级
深度研究的要求

“深度研究”意味着:

  • 针对不同方面进行多次网络搜索
  • 全面探索代码库
  • 阅读相关文档
  • 考虑多种方案
  • 了解各种权衡

不要仓促完成研究——它是良好实施的基础。

进度跟踪

在阶段工作期间实时更新 PROGRESS.md:

  • 不要等到最后才更新
  • 做出决定时及时记录
  • 立即记录阻碍因素
  • 这能为未来的会话提供有价值的上下文
范围管理

此工作流的一个关键目的是防止范围蔓延:

  • 每个阶段都应有明确的边界
  • 如果出现新需求,将其记录下来,留待未来阶段处理
  • 不要在实施过程中扩大当前阶段的范围
  • 使用 AskUserQuestion 确认某项内容是否在范围内
始终确保可用的理念

实施阶段时:

  • 边做边测试更改
  • 不要假定代码能够正常工作——要进行验证
  • 如果有内容无法正常工作,先修复再继续
  • 目标是交付可运行的软件,而不只是编写代码

评论

支持 Markdown