name: gitcode-dev-workflow description: | 通用 AI 开发工作流的详细 playbook:覆盖 Phase 0-5(上下文加载 → Issue → 轻量设计 → AI 编码 → 用户自测反馈环 → 业务 PR → 用户触发归档),按 Light / Standard / Full 三模式给出具体执行清单、闸门证据、Artifact 模板、独立触发能力的调用时机,以及 Superpowers 与 gitcode skills 的串联映射。

TRIGGER when: 用户要开始一个新需求、启动开发工作流、走完整工程流程、 或说 "start workflow"、"开始开发"、"新功能开发"、"完整流程"、"从需求到交付"、 "走一遍全流程"。当用户有模糊想法但不知道从哪步开始时,这应该是第一个触发的 skill。 本 skill 也是 AGENTS.md "🚨 开发工作流分级规则" 的详细操作展开—— AGENTS.md 定约束,本 skill 给操作。

通用 AI 开发工作流(详细 playbook)

本 skill 与 AGENTS.md 的关系

文件 加载方式 内容定位
AGENTS.md 项目级 system prompt,每次会话都加载 核心约束、必须遵守的规则、模式判定、闸门简表
gitcode-dev-workflow(本 skill) 按需触发 详细操作步骤、各模式的执行清单、模板、独立能力调用时机

优先级:当本 skill 与 AGENTS.md 冲突时,以 AGENTS.md 为准。本 skill 只是把 AGENTS.md 的约束展开成可执行步骤。

前提

  • 运行环境:Windows + Trae(或其他支持 AGENTS.md / .agents/skills/ 的 AI 开发环境),技能目录 .agents/skills/
  • GitCode CLI:始终使用 gitcode 命令;gc 是 PowerShell 内置 Get-Content 别名,会冲突。
  • 凭证:依赖 Windows 用户级永久环境变量 GC_TOKEN,由初始化 Playbook 配置。
  • 多仓工作区<repo-name>/(业务仓)+ specs/(spec/issue/release 文档仓)+ .agents/skills/(项目级 skill)。

流程总览

Phase 0           Phase 1            Phase 2            Phase 3              [用户自测/反馈环]      Phase 4              Phase 5
上下文加载   →   Issue 与需求确认   →   轻量设计与计划   →   AI 编码交付   →   用户测试 → 修改   →   业务 PR 交付   →   最终归档
                                                                          (循环直到用户确认完成)                       (用户明确触发)

关键卡点

  • 模式(Light / Standard / Full)在 Phase 0 末就要确定,未确认前不动代码。
  • Phase 4 业务 PR 只能在用户明确表示自测完成后创建,不要替用户拍板。
  • Phase 5 归档只能由用户触发,AI 不主动归档。

模式选择

完整判定表见 AGENTS.md 的"流程模式判定"小节。本 skill 提供与用户对话的具体动作:

选择策略

  1. 用户明确指定模式 → 直接采用,不再判定。
  2. 用户没指定 → AI 必须先评估再向用户提议:
    • 改动规模(行数)、仓库范围(单仓/跨仓)、接口/数据/安全/部署影响、测试要求、文档要求
    • 给出推荐模式 + 判定依据 + 会执行/跳过哪些环节
    • 拿到用户确认后才进入 Phase 1

与用户确认的标准模板

基于你的需求,我推荐 [Light / Standard / Full] 模式:
- 改动规模:约 N 行,涉及 <文件/模块>
- 关键判断点:<接口/数据/安全/部署>
- 将执行:<列出会做的事>
- 将跳过:<列出会跳过的事,对应模式分级表中标"跳过"或"可选"项>

是否按此模式进行?或者你想升/降级?

模式判定边界情形

情形 建议
改动看似 30 行内但触及鉴权/数据/外部接口 升级到 Standard 或 Full(安全/接口变化优先于行数)
Standard 范围但用户明确要求快速验证一个想法 可暂时按 Light 推进,但要明确告诉用户跳过了哪些保障
Full 范围但跨仓影响仅是文档链接更新 业务仓走 Standard,specs 仓单独按需走简化流程
无法估算改动规模 默认 Full,开题用 brainstorming skill 把范围拆出来

Phase 0 — 上下文加载

目标

向用户输出"我知道改哪个仓、看了哪些文档、推荐什么模式",避免无差别全量扫描工作区

步骤

  1. 识别目标仓 <repo-name> 与需求范围

    • 从用户请求中提取仓名;不确定就直接问。
    • 跨仓需求:明确受影响仓集合后再分别按下面 4 项展开。
  2. 按模式加载默认上下文

    模式 必读 选读(按需检索)
    Light 目标文件本身 + 仓库 README/规则 用户指定的材料
    Standard <repo-name>/ + specs/spec/<repo-name>/ai_memory.md system_design/task_design/<需求目录>/specs/issue_docs/<repo-name>/specs/release_docs/<repo-name>/(按关键词 rg 检索)
    Full 上述全部 + specs/architecture_design/ specs/test_docs/、跨仓影响的其他仓 spec/issue
  3. 检索策略

    • 优先用 rg "<keyword>" <target-dir>,不要 cat 整个文件。
    • 先看 README/索引/设计/任务文档,再看源码细节。
    • 不要把 specs 当业务代码仓改。
  4. 分支检查(强制):

    git -C <repo-name> branch --show-current
    
    • 若在 master/main立即停止并要求用户切到或新建特性分支:
      # 业务仓
      git checkout -b feat/<description>   # 或 fix/<description>
      # specs 仓
      git checkout -b spec/<repo-name>/<change-name>
      

🔒 闸门:Phase 0 → Phase 1

向用户输出:

  • 已识别目标仓:<repo-name>
  • 当前分支:<branch>(必须不是 master/main)
  • 已加载的关键上下文:列出 3-5 个最相关的文档/文件
  • 推荐流程模式:<Light/Standard/Full> + 判定依据 + 会执行/跳过的关键环节
  • 等待用户确认

Phase 1 — Issue 与需求确认

目标

产出"业务 Issue URL + 用户确认的需求范围"。所有业务 PR 必须关联 Issue。

步骤

  1. 创建或关联业务 Issue

    • 现成 Issue:拿到编号后用 gitcode issue view <n> 核对范围。
    • 没有现成 Issue:通过 gitcode-issue-create skill 或直接 CLI 创建。
    • 含中文内容必须用 --body-file + UTF-8 写盘(见后文 Windows 编码小节)。
  2. 需求澄清(按模式深度调整):

    模式 澄清深度
    Light 需求明确时一句确认即可:「我理解是要改 X,预期行为 Y,对吗?」
    Standard 简化澄清:做什么 / 不做什么 / 验收标准
    Full 完整澄清,必要时调用 brainstorming skill,至少问清:为谁解决什么 / 验收标准 / 边界 / 参考方案
  3. 生成需求记录(按模式落盘):

    模式 产出 位置
    Light Issue/PR 描述承载即可,不强制落盘
    Standard 简版 proposal.md,必要时简版 tasks.md specs/spec/<repo-name>/task_design/<change-name>/
    Full proposal.md + design.md + tasks.md 同上

    Artifact 文件位置:所有 spec 文件落到 specs 仓,不要放在业务仓里(业务仓 PR 不允许带 spec 文件)。

  4. 跨仓引用规范

    • Issue/PR body 中跨仓引用用 <owner>/<repo>#<n> 语法。
    • 引用 spec 文件用 GitCode permalink(commit SHA URL),避免分支删除后失效:
      https://gitcode.com/<owner>/specs/blob/<commit-sha>/spec/<repo>/task_design/<change-name>/proposal.md
      

🔒 闸门:Phase 1 → Phase 2

向用户出示:

  • 业务 Issue URL
  • 用户确认的需求范围(做什么 / 不做什么 / 验收标准)
  • (Standard / Full)proposal.md / design.md 草稿路径
  • 等待用户确认

Phase 2 — 轻量设计与计划

目标

产出"实现计划 + 生成前约束清单",让用户确认 AI 接下来要改的范围和方式。

步骤

  1. 生成前约束检查(强制,所有模式):把代码审查要求前置为编码必须遵守的规范,至少包括:

    • 只修改用户指定业务仓 + 允许的 specs 范围
    • 遵循目标仓既有架构、命名、错误处理、日志、配置、测试风格
    • 避免无关重构、无关格式化、元数据 churn
    • 无硬编码凭证、敏感信息、危险默认值或明显注入风险
    • 行为变化必须有匹配的测试或说明不可测原因
  2. 按模式确认实现计划

    模式 计划深度
    Light 一句话说明将修改的文件 + 最小验证方式
    Standard 列出任务 checklist(涉及文件 + 测试方式),可不写完整 design.md
    Full 调用 writing-plans skill 拆 2-5min 原子任务;写完整 design.md(含影响范围/关键决策)+ tasks.md
  3. TDD 计划(按模式):

    模式 要求
    Full 有行为变化时优先 RED → GREEN → REFACTOR,并执行完整测试策略
    Standard 有行为变化时必须补充或更新相关测试,并运行相关验证
    Light 有行为变化且可测时补充最小测试;文案/注释/无行为配置改动可说明原因后跳过

🔒 闸门:Phase 2 → Phase 3

向用户出示:

  • 实现计划(修改文件清单 + 验证方式)
  • 生成前约束清单
  • (Standard / Full)tasks.md 路径
  • 等待用户确认

Phase 3 — AI 编码交付

目标

产出"本轮 AI 编码交付的 commit + 验证结果"。这一轮是 AI 写代码、跑验证、提交 commit,还没到业务 PR

步骤

  1. 按计划修改代码

    • 严格按 Phase 2 的实现计划改,不要做计划外的重构或格式化。
    • 行为变化优先补充/更新测试;无可测行为变化时在 commit body 或交付说明里写清原因。
  2. 运行匹配模式的必要验证

    模式 验证范围
    Light 最小相关验证(编译 + 改动文件的测试)
    Standard 相关测试 + 构建
    Full 完整测试策略要求的验证

    质量门禁完整套件(format/static/coverage 等)不是主流程强制项,需要时通过 gitcode-dev-quality skill 独立触发。具体命令由业务仓 AGENTS.md 的"质量门禁命令"小节填充。

  3. AI 交付自检:对照 Phase 2 的生成前约束清单逐条勾选;不符合的立即修复。

  4. 提交 commit(强制,每轮一次):

    • 粒度:一轮 AI 编码交付 = 一次 commit,不是每个原子任务一个 commit。
    • 用户自测反馈后的每轮修改也必须提交新 commit。
    • 格式见后文"Commit 规范详解"。

🔒 闸门:Phase 3 → 用户自测

向用户出示:

  • 本轮 commit hash + commit message 摘要
  • 验证结果(哪些测试跑了、是否通过)
  • AI 自检清单结果
  • 明确告诉用户:"请自测,发现问题继续告诉我,确认完成后我再创建业务 PR。"

用户自测 / 反馈循环

行为约定

  1. 不要替用户拍板"完成"。即使所有测试通过,没有用户明确确认前,不要进入 Phase 4
  2. 用户反馈问题 → AI 回到 Phase 3 修改 → 跑必要验证 → 提交新 commit → 再次交还用户。
  3. 每轮修改都是独立 commit,不要 amend 之前的 commit
  4. 这个循环可能跑多轮,每轮 commit 都引用业务 Issue(Refs #<n>)。

用户表达"完成"的信号

  • 明确说"完成了 / 可以提 PR 了 / 没问题了"
  • 明确要求"开始 Phase 4 / 创建 PR"

模糊信号(如"看起来不错")不算确认,要追问一句"是否进入 Phase 4 创建业务 PR?"。

Phase 4 — 业务 PR 交付

目标

产出"业务 PR URL"。PR 关联业务 Issue,打 ai-assisted 标签。

步骤

  1. 确认进入条件:用户已明确表示自测/反馈循环完成。

  2. 创建或更新 PR

    • 业务仓发起 PR 到 main/master
    • 关联 Issue:PR body 写 Refs #<n>Fixes #<n>
    • 必须加 ai-assisted 标签(该标签已预先创建,不要重复创建)。
    • 中文 PR 描述:gitcode pr create 已支持 --body-file,可直接一步创建;但 --labels 不支持,需创建后用 gitcode pr edit --labels ai-assisted 补打。
  3. PR 描述写清(按模式调整完整度):

    模式 PR 描述要点
    Light 变更内容 + 关联 Issue + AI 参与说明
    Standard 上述 + 验证结果摘要
    Full 上述 + 关键决策、风险与缓解、跨仓影响
  4. 可选独立能力

    • 用户要求看 CI / PR 卡在流水线 → gitcode-pipeline-analyzer
    • 用户要求 code review → gitcode-pr-review
    • 用户要求质量门禁报告 → gitcode-dev-quality
    • 用户要求安全审查 → gitcode-security-check

    这些都不是 Phase 4 的强制卡点,只在用户要求时触发。

🔒 闸门:Phase 4 完成

向用户出示:

  • 业务 PR URL
  • PR 标签包含 ai-assisted
  • PR 关联的 Issue 编号
  • 此时不要主动进入 Phase 5,等用户触发。

Phase 5 — 最终归档(用户明确触发)

触发条件

只有用户明确说"归档 / Phase 5 / 沉淀经验"才执行。业务 PR 完成或合入后,AI 不主动归档

步骤

  1. 汇总归档信息

    • 业务 Issue URL、业务 PR URL
    • 每轮 AI 编码交付 commit hash + 简短说明
    • 用户自测/反馈循环中发现的问题和修复结论
    • 最终验证结果
    • 设计偏差、实现取舍
  2. 生成 archive.md:落到 specs/spec/<repo-name>/task_design/<change-name>/archive.md。模板见下文。

  3. 沉淀 ai_memory.md(仅在确实有可复用经验时):

    • 只沉淀经过验证且未来会复用的规则。
    • 不要把一次性的实现细节塞进 ai_memory。
    • 路径:specs/spec/<repo-name>/ai_memory.md
  4. 提交 specs PR

    • 分支:spec/<repo-name>/<change-name>
    • PR 标题:docs(spec/<repo-name>): <change-name>
    • PR 描述:关联业务仓 issue(<owner>/<repo>#<n>)+ 变更摘要
    • 必须加 ai-assisted 标签
    • 必须通过 PR 合入,不允许直接 push 到 specs 仓的 master/main
  5. 证据链使用 permalink:archive.md 中引用的 commit / spec / PR 链接都用 GitCode permalink(commit SHA URL)。

🔒 闸门:Phase 5 完成

  • archive.md 已合入 specs 仓
  • 如有 ai_memory.md 更新,已合入 specs 仓
  • 业务 Issue 状态正确(关闭 or 标记完成)

Artifact 模板

proposal.md

# <Change Name>

## 需求背景
[为什么需要这个变更]

## 功能描述
[做什么,不做什么]

## 验收标准
- [ ] 标准 1
- [ ] 标准 2

## 影响范围
[受影响的模块/文件/仓]

Light 模式极简版(3 行即可):

# <change-name>
## 需求
一句话描述要改什么。
## 验收
- [ ] 预期行为

design.md

# <Change Name> — 技术设计

## 方案概述
[技术方案一句话描述]

## 架构决策
[关键决策及原因]

## 涉及文件
| 文件 | 操作 | 说明 |
|------|------|------|
| path/to/File | 新增/修改 | [说明] |

## 风险 & 缓解
[已知风险和应对]

## 跨仓影响
[如有,列出受影响仓和具体接口/契约]

无新决策时可省略,或写一行"无新增技术决策,直接修改 <file>"。

tasks.md

# <Change Name> — 实现任务

## 进度: N/M complete

- [ ] Task 1: <描述>
- [ ] Task 2: <描述>
- [ ] Task 3: <描述>

Light 模式 1 条 checkbox 即可。

archive.md

# <Change Name> — 归档

## 关联
- 业务 Issue: <permalink>
- 业务 PR: <permalink>
- specs PR: <permalink>

## 交付历程
- commit `<sha>`: <一句话说明>
- commit `<sha>`: <一句话说明>

## 用户自测反馈
- 发现问题:<描述> → 修复 commit `<sha>`

## 最终验证
- <验证项>:<结果>

## 设计偏差与取舍
- <如有>

## 可复用经验
- <如有,同步到 ai_memory.md>

## 归档日期
YYYY-MM-DD

独立触发能力

以下能力不属于主开发流程强制卡点,按用户要求或任务明确需要时触发:

能力 Skill 典型触发场景
质量检查 gitcode-dev-quality 用户要求"质量检查 / 提交前检查 / lint / 覆盖率";准备发版前;CI 失败定位
安全审查 gitcode-security-check 用户要求安全审查;改动涉及鉴权/输入/凭证/依赖
PR 审查 gitcode-pr-review 用户要求审 PR / 代码评审;merge 前最后一道 review
流水线分析 gitcode-pipeline-analyzer 用户要求看流水线 / CI 失败 / 耗时分析
发布 gitcode-release-helper 用户要求发版;准备 release note
Issue 分类 gitcode-issue-triage 存量 Issue 运营(与单需求开发无关)
仓库 onboarding gitcode-repo-onboarding 新人首次接触某仓时(与单需求开发无关)

与 Superpowers / gitcode skills 的协同

主线工作流 skill:

Phase Superpowers gitcode skills
Phase 0
Phase 1 brainstorming(Full 模式建议触发) gitcode-issue-create, gitcode-issue-review
Phase 2 writing-plans(Full)、test-driven-development(按模式)、subagent-driven-development(仅在多个独立任务时)
Phase 3 requesting-code-review(可选,每轮交付前自检)
Phase 4 finishing-a-development-branch(merge 决策辅助) gitcode-pipeline-analyzergitcode-pr-review(按需)、gitcode-release-helper(按需)
Phase 5

子代理使用规则

  • 不再按每个原子任务强制启动子代理
  • 仅在用户授权 + 任务可拆成多个互不冲突的独立工作项时使用。
  • 启动时必须传入当前分支名,子代理不得切换分支
  • 必须明确写入范围,子代理不得修改超出任务描述的文件
  • 组名建议:workflow-<task-id>

Commit 规范详解

格式

<type>(<scope>): <summary in present tense, ≤72 chars>

<body: what changed and why, reference issues if applicable>

Co-authored-by: <Tool / Agent Name> <noreply@tool-provider.com>
Generated-by: <underlying-model-id>

字段约束

字段 约束
<type> feat / fix / docs / refactor / test / chore / perf / build / ci
<scope> 模块名 / 包名 / 子系统(如 authcore;specs 仓用 spec/<repo-name>
summary 现在时祈使式,≤72 字符,不以句号结尾
body 改了什么 + 为什么;关联 issue 用 Refs #<n>Fixes #<n>;body 与 trailers 之间空 1 行
Co-authored-by AI 工具名 + provider 邮箱:
Trae <noreply@trae.ai>Claude Code <noreply@anthropic.com>Cursor <noreply@cursor.com>
Generated-by 底层模型 ID:claude-opus-4-7claude-sonnet-4-6gpt-5-codex

示例

feat(core): add batch processing support for data pipeline

添加数据管道批量处理能力,解决单条处理吞吐量不足问题。
Refs #42

Co-authored-by: Trae <noreply@trae.ai>
Generated-by: claude-opus-4-7

常见错误

  • ❌ 把多轮 AI 交付塞到一个 commit 里(应该一轮一 commit)
  • ❌ 用户反馈后 git commit --amend(应该新 commit)
  • ❌ summary 写过去式或带句号
  • ❌ 忘记 Refs #<n> 关联 Issue
  • ❌ 忘记 Generated-by(审计追踪必需)

GitCode CLI 常用命令

操作 命令
创建 Issue gitcode issue create -R <owner/repo> --title <t> --body-file <f> --label <labels>
评论 Issue gitcode issue comment <n> -R <owner/repo> --body-file <f>
关闭 Issue gitcode issue edit <n> -R <owner/repo> --state close
查询 Issue gitcode issue view <n> / gitcode issue list
创建 PR gitcode pr create -R <owner/repo> --title <t> --body-file <f> --base <branch>
PR 补打标签 gitcode pr edit <n> -R <owner/repo> --labels ai-assisted
编辑 PR body(中文) gitcode pr edit <n> -R <owner/repo> --body-file <f>
评论 PR gitcode pr comment <n> -R <owner/repo> --body-file <f>
PR 行内评论 gitcode pr comment <n> -R <owner/repo> --body <text> --path <file> --position <n>
PR 审查 gitcode pr review <n> -R <owner/repo> --approve --comment-file <f>
查询 PR gitcode pr view <n> / gitcode pr list
合并 PR gitcode pr merge <n> -R <owner/repo> --method <merge/squash/rebase> --yes
编辑 issue 评论 gitcode issue comment edit <id> --body-file <f>

跨仓引用:issue/PR body 中用 <owner>/<repo>#<n> 语法。

凭证:依赖 Windows 用户级永久环境变量 GC_TOKEN。若 gitcode auth status 报未登录,立即停止并要求用户重新提供 token,禁止自行猜测或绕过。

Windows 中文编码(强制踩坑预防)

PowerShell 默认编码与 UTF-8 不一致,直接用 --body 传中文会让远端显示乱码。所有含中文的远端写操作都必须用 --body-file + 显式 UTF-8 写盘。

正确做法

[System.IO.File]::WriteAllText("$env:TEMP\comment.md", $bodyContent, [System.Text.Encoding]::UTF8)
gitcode issue comment <n> --body-file "$env:TEMP\comment.md"

错误做法

# ❌ 直接用 --body 传中文变量
gitcode issue comment <n> --body $bodyContent

# ❌ 用 Get-Content -Raw 读中文文件后再传 --body
$body = Get-Content "comment.md" -Raw
gitcode issue comment <n> --body $body

# ❌ 用 Set-Content / Out-File 默认编码写文件(不是 UTF-8)
$bodyContent | Set-Content "$env:TEMP\comment.md"

gitcode pr create 的特殊处理

gitcode pr create 不支持 --labels 参数,标签需创建后通过 gitcode pr edit 补打。--body-file 已支持,含中文 PR 描述可直接一步到位:

# 1. 创建 PR(--body-file 直接传中文描述)
[System.IO.File]::WriteAllText("$env:TEMP\pr-body.md", $chineseContent, [System.Text.Encoding]::UTF8)
gitcode pr create -R <owner/repo> --title "feat: ..." --body-file "$env:TEMP\pr-body.md" --base main

# 2. 补打 ai-assisted 标签
gitcode pr edit <pr-number> -R <owner/repo> --labels ai-assisted

修复已发出的乱码评论

[System.IO.File]::WriteAllText("$env:TEMP\fix.md", $fixedContent, [System.Text.Encoding]::UTF8)
gitcode issue comment edit <comment-id> --body-file "$env:TEMP\fix.md"

双轨产出(Issue 评论 + Artifact 文件)

每个变更同时产生两类产物,互为备份:

轨道 形式 存储位置 用途
Issue 评论 GitCode Issue / PR 评论区 远端 团队协作、PR 关联、审计追踪
Artifact 文件 proposal.md / design.md / tasks.md / archive.md specs/spec/<repo-name>/task_design/<change-name>/ 历史追溯、新人 onboard、平台无关

两者内容应该一致——artifact 文件组装后可作为 Issue 评论内容发布。Issue 评论是审计入口,artifact 是版本化备份。

用户要求在 Issue 评论区同步进展时,把当前阶段的 artifact 内容用 gitcode issue comment --body-file 发布。

合规检查清单(每个 Phase 收尾输出)

Phase N 合规检查:
  [ ] 步骤 1: <step> — <evidence>
  [ ] 步骤 2: <step> — <evidence>
  ...
  [ ] Artifact 已落盘(如模式要求): <path>
  [ ] Issue 评论已发布(如用户要求同步): <comment_link>

  缺失项: <list or "无">
  是否允许进入下一阶段: [ ]

把这个清单作为 Phase 转换闸门的标准化输出格式。