AI工厂功能开发Skill ai-factory.feature

这是一个AI驱动的软件开发技能,用于自动化功能开发全周期。它通过创建Git分支、使用AI规划任务、执行代码更改来实现端到端开发,支持并行模式、测试选项和日志配置。关键词:AI开发、自动化、Git、功能开发、测试、DevOps、AI智能体、端到端开发。

AI智能体 0 次安装 0 次浏览 更新于 3/18/2026

name: ai-factory.feature description: 端到端功能开发。创建git分支,通过/ai-factory.task规划实现,然后通过/ai-factory.implement执行——全周期无手动步骤。当用户说“新功能”、“开始功能”、“实现功能”或“添加功能”时使用。 argument-hint: “[–parallel | --list | --cleanup <branch>] <功能描述>” allowed-tools: Bash(git *) Bash(cd *) Bash(cp *) Bash(mkdir *) Bash(basename *) Read Write Skill AskUserQuestion Questions disable-model-invocation: true

功能 - 新功能工作流

通过创建分支和规划实现来启动新功能。

工作流

步骤 0: 加载项目上下文

首先: 如果存在,读取.ai-factory/DESCRIPTION.md以了解:

  • 技术栈(语言、框架、数据库)
  • 项目架构
  • 现有约定

此上下文告知分支命名、任务规划和实现。

步骤 0.1: 确保Git仓库

检查git是否已初始化。如果没有,初始化它。

git rev-parse --is-inside-work-tree 2>/dev/null || git init

步骤 0.2: 解析标志

$ARGUMENTS中提取标志,然后解析功能描述:

--parallel  → 启用并行工作树模式
--list      → 显示所有活动工作树及其功能状态
--cleanup <branch> → 移除工作树并可选删除分支

解析规则:

  • $ARGUMENTS中去除--parallel--list--cleanup <branch>
  • 剩余文本成为功能描述
  • --list--cleanup是独立的——它们立即执行并停止(不要继续到步骤1+)

示例:

/ai-factory.feature --parallel 添加用户认证
→ parallel=true, description="添加用户认证"

/ai-factory.feature --list
→ 显示所有活动工作树,然后停止

/ai-factory.feature --cleanup feature/user-auth
→ 移除该分支的工作树,然后停止

/ai-factory.feature 添加用户认证
→ 正常流程(不变),parallel=false

如果存在--list,跳转到–list子命令部分。 如果存在--cleanup,跳转到–cleanup子命令部分。 否则,继续到步骤1。

步骤 1: 解析功能描述

$ARGUMENTS中提取:

  • 核心添加的功能
  • 关键领域术语
  • 类型(功能、增强、修复、重构)

步骤 2: 生成分支名称

创建描述性分支名称:

格式:<类型>/<简短描述>

示例:
- feature/user-authentication
- feature/stripe-checkout
- feature/product-search
- fix/cart-total-calculation
- refactor/api-error-handling

规则:

  • 小写字母,用连字符连接
  • 最多50个字符
  • 除连字符外无特殊字符
  • 描述性但简洁

步骤 3: 询问测试

重要:在继续前始终询问用户:

开始前,几个问题:

1. 我应该为此功能编写测试吗?
   - [ ] 是,编写测试
   - [ ] 否,跳过测试

2. 实现后更新文档?
   - [ ] 是,更新文档(/ai-factory.docs)
   - [ ] 否,跳过文档

3. 任何特定要求或约束?

存储测试和文档偏好——它们将传递给/ai-factory.task/ai-factory.implement

步骤 4(并行):创建工作树

仅当设置--parallel标志时。 如果未设置,跳过到步骤4(正常)。

这创建一个隔离的工作目录,以便多个功能可以并发开发,每个都有其自己的Claude Code会话。

4a. 获取项目目录名称

DIRNAME=$(basename "$(pwd)")
# 例如 "my-project"

4b. 在主分支上创建分支

git branch <branch-name> main

如果分支已存在,询问用户是重用还是选择不同名称。

4c. 创建工作树

git worktree add ../${DIRNAME}-<branch-name-with-hyphens> <branch-name>

为目录转换分支名称:将/替换为-

示例:

项目目录:my-project
分支:feature/user-auth
工作树:../my-project-feature-user-auth

4d. 复制上下文文件到工作树

复制这些文件/目录,使工作树具有完整的AI上下文:

WORKTREE="../${DIRNAME}-<branch-name-with-hyphens>"

# 项目上下文
cp .ai-factory/DESCRIPTION.md "${WORKTREE}/.ai-factory/DESCRIPTION.md" 2>/dev/null

# 过去经验/补丁
cp -r .ai-factory/patches/ "${WORKTREE}/.ai-factory/patches/" 2>/dev/null

# Claude Code技能+设置(Claude Code工作所需)
cp -r .claude/ "${WORKTREE}/.claude/" 2>/dev/null

# 仅当CLAUDE.md存在且不被git跟踪时
if [ -f CLAUDE.md ] && ! git ls-files --error-unmatch CLAUDE.md &>/dev/null; then
  cp CLAUDE.md "${WORKTREE}/CLAUDE.md"
fi

注意: 被git跟踪的文件已通过检出在工作树中。仅复制未跟踪的上下文文件。

4e. 在工作树中创建功能目录

mkdir -p "${WORKTREE}/.ai-factory/features"

4f. 切换到工作树并继续

cd "${WORKTREE}"

显示简要确认:

✅ 并行工作树已创建!

  分支:    <branch-name>
  目录:    <worktree-path>

稍后管理工作树:
  /ai-factory.feature --list
  /ai-factory.feature --cleanup <branch-name>

继续到步骤5——在工作树目录中调用/ai-factory.task立即开始规划。

步骤 4(正常):创建分支

# 确保我们在主分支上并最新
git checkout main
git pull origin main

# 创建并切换到新分支
git checkout -b <branch-name>

如果分支已存在,询问用户:

  • 切换到现有分支?
  • 用不同名称创建?

步骤 5: 调用任务规划与分支上下文

计划文件将以分支命名:

分支:feature/user-authentication
计划文件:.ai-factory/features/feature-user-authentication.md(不是.ai-factory/PLAN.md!)

转换分支名为文件名:

  • /替换为-
  • 添加.md扩展名

调用/ai-factory.task并明确上下文:

/ai-factory.task $ARGUMENTS

来自/ai-factory.feature的上下文:
- 计划文件:.ai-factory/features/feature-user-authentication.md(使用此名称,不是.ai-factory/PLAN.md)
- 测试:是/否
- 日志记录:详细/标准/最小

重要: 将确切的计划文件名传递给/ai-factory.task。这区分了基于功能的工作与直接/ai-factory.task调用。

传递:

  • 完整功能描述
  • 确切计划文件名称(基于分支,例如.ai-factory/features/feature-user-authentication.md
  • 测试偏好
  • 日志记录偏好
  • 任何约束

计划文件允许基于当前git分支恢复工作:

git branch --show-current  # → feature/user-authentication
# → 查找.ai-factory/features/feature-user-authentication.md

步骤 6: 下一步行动(取决于模式)

并行模式(--parallel): 自动调用/ai-factory.implement——并行模式的整个目的是在隔离工作树中自主端到端执行。

/ai-factory.implement

来自/ai-factory.feature的上下文:
- 计划文件:.ai-factory/features/<branch-name>.md
- 测试:是/否
- 日志记录:详细/标准/最小
- 文档:是/否

正常模式: 规划后停止。用户审查计划并决定何时实现。

计划已创建!开始实现:
/ai-factory.implement

上下文清理

分支创建和规划后上下文很重。所有结果都保存到计划文件——建议释放空间:

AskUserQuestion: 继续前释放上下文?

选项:
1. /clear — 完全重置(推荐)
2. /compact — 压缩历史
3. 继续原样

–list子命令

当传递--list时,显示所有活动工作树及其功能状态。然后停止——不继续正常工作流。

# 显示所有工作树
git worktree list

此外,对于输出中的每个工作树路径:

  1. 检查<worktree>/.ai-factory/features/是否包含任何计划文件
  2. 对于找到的每个计划文件,显示其名称以及是否看起来完整(有任务)或仍在进行中

输出格式:

活动工作树:

  /path/to/my-project          (main)        ← 你在这里
  /path/to/my-project-feature-user-auth  (feature/user-auth)  → 计划:feature-user-auth.md
  /path/to/my-project-fix-cart-bug       (fix/cart-bug)        → 尚无计划

–cleanup子命令

当传递--cleanup <branch>时,移除工作树并可选删除分支。然后停止

DIRNAME=$(basename "$(pwd)")
BRANCH_DIR=$(echo "<branch>" | tr '/' '-')
WORKTREE="../${DIRNAME}-${BRANCH_DIR}"

# 移除工作树
git worktree remove "${WORKTREE}"

# 仅当分支已合并到主分支时才删除分支
git branch -d <branch>  # -d(不是-D)如果未合并会失败,这是安全的

如果git branch -d失败因为分支未合并,通知用户:

⚠️  分支<branch>有未合并的更改。
强制删除:git branch -D <branch>
先合并:git checkout main && git merge <branch>

如果工作树路径不存在,检查git worktree list并建议正确路径。

示例

用户: /ai-factory.feature 添加用户认证,包括邮箱/密码和OAuth

操作:

  1. 解析:认证功能,邮箱/密码 + OAuth
  2. 生成分支:feature/user-authentication
  3. 询问测试偏好
  4. 创建分支:git checkout -b feature/user-authentication
  5. 调用/ai-factory.task → 创建计划,用户审查
  6. 停止——用户准备就绪时运行/ai-factory.implement

用户: /ai-factory.feature --parallel 添加Stripe结账集成

操作:

  1. 解析标志:找到--parallel,description = “添加Stripe结账集成”
  2. 生成分支:feature/stripe-checkout
  3. 询问测试偏好
  4. 获取目录名:my-project
  5. 创建分支:git branch feature/stripe-checkout main
  6. 创建工作树:git worktree add ../my-project-feature-stripe-checkout feature/stripe-checkout
  7. 复制上下文文件(.ai-factory/DESCRIPTION.md, .ai-factory/patches/, .claude/, CLAUDE.md如果未跟踪)
  8. cd到工作树
  9. 调用/ai-factory.task → 创建计划,用户审查
  10. 自动调用/ai-factory.implement → 执行计划(并行 = 自主)

用户: /ai-factory.feature --list

操作:

  1. 运行git worktree list
  2. 检查每个工作树中.ai-factory/features/的计划文件
  3. 显示格式化列表——停止

用户: /ai-factory.feature --cleanup feature/stripe-checkout

操作:

  1. 计算工作树路径:../my-project-feature-stripe-checkout
  2. 运行git worktree remove ../my-project-feature-stripe-checkout
  3. 运行git branch -d feature/stripe-checkout
  4. 报告结果——停止

用户: /ai-factory.feature 修复购物车数量更新不正确的问题

操作:

  1. 解析:错误修复,购物车数量
  2. 生成分支:fix/cart-quantity-update
  3. 询问测试
  4. 创建分支
  5. 调用/ai-factory.task → 创建计划,用户审查
  6. 停止——用户准备就绪时运行/ai-factory.implement

重要

  • 始终询问测试在创建计划前
  • 从不假设测试偏好——始终明确询问
  • 将测试偏好传递给下游技能
  • 如果git操作失败,清晰报告并不继续
  • 如果存在相同目的的分支,不要创建分支(先询问)

关键:日志记录偏好

当询问测试时,也询问日志记录:

开始前:

1. 我应该为此功能编写测试吗?
   - [ ] 是,编写测试
   - [ ] 否,跳过测试

2. 实现的日志记录级别:
   - [ ] 详细(推荐) - 详细的DEBUG日志用于开发
   - [ ] 标准 - 仅INFO级别,关键事件
   - [ ] 最小 - 仅WARN/ERROR

3. 实现后更新文档?
   - [ ] 是,更新文档(/ai-factory.docs)
   - [ ] 否,跳过文档

4. 任何特定要求或约束?

默认为详细日志记录。 AI生成的代码从广泛日志记录中大大受益,因为:

  • 细微错误常见且无日志难以追踪
  • 用户以后可以移除日志
  • 开发期间缺少日志浪费调试时间

日志记录必须始终可配置:

  • 使用LOG_LEVEL环境变量
  • 为基于文件的日志实施日志轮换
  • 确保生产可以在无代码更改的情况下以最小日志运行

将日志记录和文档偏好与测试偏好一起传递给/ai-factory.task