{"id":"8575d0aa-dca1-49f6-970b-52fb61b05570","shortId":"6ZaErb","kind":"skill","title":"forge-dev","tagline":"开发调度器。接力 forge-prd 产出的 PRD 变更，半自动调度设计(forge-design)、工程(forge-eng)、QA(forge-qa) 子技能。读取 PRD 迭代摘要，并行调研技术方案，传递 Image 2/Figma/真实截图等视觉决策索引，判断需要调用哪些子技能，列出建议顺序供用户确认后以独立上下文执行。触发方式：用户说\"开始开发\"、\"实现需求\"、\"forge-dev\"、PRD 更新后需要进入开发阶段时使用。","description":"# /forge-dev：开发调度器\n\n接力 `/forge-prd` 或 `/forge-brainstorm` 的产出，调度设计、工程、QA 子技能完成开发交付。\n\n全程中文。\n\n## 前置脚本（每次先运行）\n\n```bash\n_BRANCH=$(git branch --show-current 2>/dev/null || echo \"unknown\")\n_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)\necho \"当前分支: $_BRANCH\"\necho \"项目根目录: $_ROOT\"\n\n# 检测项目环境\n[ -f \"$_ROOT/package.json\" ] && echo \"检测到: Node.js 项目\" && cat \"$_ROOT/package.json\" | head -5\n[ -f \"$_ROOT/requirements.txt\" ] && echo \"检测到: Python 项目\"\n[ -f \"$_ROOT/go.mod\" ] && echo \"检测到: Go 项目\"\n[ -f \"$_ROOT/Cargo.toml\" ] && echo \"检测到: Rust 项目\"\n[ -f \"$_ROOT/Makefile\" ] && echo \"检测到: Makefile\"\n\n# 检查浏览器工具（QA 阶段可能需要）\nB=\"\"\n[ -n \"$_ROOT\" ] && [ -x \"$_ROOT/.claude/skills/gstack/browse/dist/browse\" ] && B=\"$_ROOT/.claude/skills/gstack/browse/dist/browse\"\n[ -z \"$B\" ] && [ -x \"$HOME/.claude/skills/gstack/browse/dist/browse\" ] && B=\"$HOME/.claude/skills/gstack/browse/dist/browse\"\n[ -n \"$B\" ] && echo \"浏览器工具: $B\" || echo \"浏览器工具: 不可用（QA 将以纯代码模式运行）\"\n\n# 检查 .do-dev 状态\n[ -f \"$_ROOT/.do-dev/state.json\" ] && echo \"发现未完成的开发流水线\" && cat \"$_ROOT/.do-dev/state.json\"\n\n# 检查 .features/ 注册表\n[ -f \"$_ROOT/.features/_registry.md\" ] && echo \"发现 Feature 注册表\" && cat \"$_ROOT/.features/_registry.md\"\n\n# 检查 brainstorm 思考文档\nls \"$_ROOT\"/brainstorm-*.md 2>/dev/null && echo \"发现思考文档（根目录）\"\nls \"$_ROOT\"/docs/brainstorm-*.md 2>/dev/null && echo \"发现思考文档（docs/）\"\n```\n\n---\n\n## 流程\n\n```\n读取 PRD 迭代摘要\n  → 项目类型判断（frontend / backend / fullstack）\n  → Discussion 阶段（结构化偏好收集，识别灰区）\n  → Research 阶段（技术调研，基于知识+代码扫描+按需搜索）\n  → 产出 RESEARCH.md\n  → 分析变更 + 调研结果，判断需要哪些子 skill\n  → 列出建议的执行计划，用户确认\n  → Wave 并行调度子 skill（每个子 skill 在独立上下文执行）\n  → 汇总交付结果\n```\n\n全程中文。\n\n---\n\n## 上下文工程（核心设计）\n\n**问题**：随着会话上下文窗口被填满，AI 输出质量会逐步劣化（context rot）。\n\n**解决方案**：主调度器只做编排，真正的工作发生在子 agent 的独立上下文中。\n\n### 原则\n\n1. **主上下文只做调度** — 读取 PRD、判断计划、协调子 agent，不做具体实现\n2. **子 skill 在独立上下文执行** — 使用 Agent 工具启动子代理，每个子 skill 拥有全新的上下文窗口\n3. **精准传递上下文** — 只传递子 skill 需要的文档路径和指令，不传递无关信息\n4. **结果汇总回主上下文** — 子 agent 返回执行摘要，主调度器汇总为交付报告\n\n### 子 skill 调用方式\n\n```\n使用 Agent 工具，prompt 中包含：\n1. 子 skill 的完整指令（从 SKILL.md 读取）\n2. 项目路径和 PRD 路径\n3. 本次变更的具体内容（从 PRD 迭代摘要提取）\n4. 前序子 skill 的产出路径（如 DESIGN.md）\n5. RESEARCH.md 路径（如有）\n```\n\n**关键约束**：\n- 每个 Agent 调用只执行一个子 skill\n- 不要在主上下文中重复子 skill 的工作\n- 子 agent 完成后，读取其产出文档确认结果，而非依赖其返回的文本\n- **传递 Feature Spec**：如果 PRD 中有 Feature Spec，SHALL 将其路径和关键内容（行为场景 + 验收检查表）传递给 forge-eng 和 forge-qa 子 agent\n- **forge-eng 行为约束**：告知 forge-eng 子 agent 每完成一个功能点后，SHALL 自验对应的 Given/When/Then 场景，确认 PASS 后再继续下一个功能点\n\n---\n\n## 模式说明\n\n### 交互模式（默认）\n\n在 3 个硬卡点暂停等待用户确认：\n1. **Discussion 完成后** — 确认偏好收集是否完整\n2. **Research + 执行计划确认** — 调研结果 + 建议的执行计划\n3. **所有子技能完成后** — 交付总结确认\n\n其他阶段正常推进，遇到不确定问题时用 AskUserQuestion 询问。\n\n### 自动模式（`--auto`）\n\n**前置沟通（1-2 轮，必须）：**\n\n执行任何阶段之前，先完成前置沟通。这不是可选的。\n\n**第1轮（必选）— 需求对齐：**\n通过 AskUserQuestion 确认：\n- \"我理解你要做的是 [复述需求]，对吗？\"\n- \"项目类型判断：[frontend / backend / fullstack]\"（决定是否跳过设计）\n- \"我的方案大纲是：[1-3 句话概括方案方向]\"\n- \"预计影响 [N 个文件 / 新建 N 个文件]\"\n\n**第2轮（按需）— 依赖确认：**\n只在以下情况触发：\n- 检测到需要外部依赖（API key、数据库、第三方服务）\n- 需求存在歧义（多种理解方式）\n- 项目结构复杂（多个入口、微服务架构）\n\n**前置沟通完毕后：** 全自动执行，不再暂停。\n\n**自动模式特殊规则：**\n- **不 git commit** — 代码改动只存在于工作区\n- **每个阶段结束保存检查点** — `git diff > .do-dev/checkpoints/phase-N-done.patch`\n- **遇到阻塞不死等** — 记录阻塞原因，跳到下一个可执行阶段，在报告中标注\n\n### 恢复模式（`--resume`）\n\n读取 `.do-dev/state.json`，从上次中断的阶段继续：\n\n1. 显示当前进度摘要\n2. 通过 AskUserQuestion 确认：\"上次停在 [阶段名]，要从这里继续吗？\"\n3. 选项：\n   - A) 从该阶段继续\n   - B) 从指定阶段重新开始\n   - C) 全部重来\n\n---\n\n## AskUserQuestion 格式规范\n\n1. **重新聚焦**：当前项目、正在调度的开发任务。（1-2句）\n2. **通俗解释**：用简单语言说清接下来要做什么。\n3. **给出推荐**：推荐的执行计划和理由。\n4. **列出选项**：可调整的执行方案。\n\n---\n\n## 状态管理\n\n### 状态文件\n\n所有调度产出写入项目根目录的 `.do-dev/` 文件夹：\n\n```\n.do-dev/\n├── state.json                    # 调度状态（持久化）\n├── visual-decision.md            # UI/设计相关任务的视觉决策索引（可选）\n├── checkpoints/\n│   ├── design-done.patch         # 设计阶段完成后的代码状态\n│   ├── eng-done.patch            # 工程阶段完成后的完整 diff\n│   └── qa-done.patch             # QA 修复后的完整 diff\n└── delivery-report.md            # 最终交付报告\n```\n\n### state.json 格式\n\n```json\n{\n  \"task\": \"需求描述\",\n  \"mode\": \"auto|interactive\",\n  \"type\": \"frontend|backend|fullstack\",\n  \"branch\": \"分支名\",\n  \"prd_version\": \"vX.Y\",\n  \"started_at\": \"ISO 8601 时间\",\n  \"phases\": {\n    \"discussion\": { \"status\": \"pending|in_progress|done|skipped\", \"note\": \"\" },\n    \"research\": { \"status\": \"pending|in_progress|done|skipped\", \"note\": \"\" },\n    \"design\": { \"status\": \"pending|in_progress|done|skipped|blocked\", \"note\": \"\" },\n    \"eng\": { \"status\": \"pending\", \"note\": \"\" },\n    \"qa\": { \"status\": \"pending\", \"note\": \"\" }\n  }\n}\n```\n\n**每次进入新阶段时：** 更新状态为 `in_progress`，写入 state.json。\n**每次完成一个阶段时：** 更新状态为 `done`，保存检查点（自动模式）。\n\n### 检查点保存\n\n自动模式下，每个阶段完成后保存检查点：\n\n```bash\nmkdir -p .do-dev/checkpoints\ngit diff > .do-dev/checkpoints/[phase]-done.patch\ngit diff --stat >> .do-dev/checkpoints/[phase]-done.patch.summary\n```\n\n**回退方法（供用户手动使用）：**\n```bash\ngit checkout -- .                                     # 清除当前工作区\ngit apply .do-dev/checkpoints/[phase]-done.patch      # 恢复到指定阶段\n```\n\n---\n\n## 第-1步：Brainstorm 感知\n\n在读取 PRD 之前，先检查项目是否有 PRD 和思考文档：\n\n```\n检查项目文档状态：\n├── 有 PRD → 正常进入第0步\n├── 无 PRD，有思考文档 →\n│     AskUserQuestion:\n│       \"发现思考文档 [{文件名}]，但没有正式 PRD 和 Feature Spec。建议：\n│        A) /forge-prd — 将思考转化为正式 PRD + Feature Spec（推荐）\n│        B) 轻量模式 — 跳过 PRD，直接基于思考文档进入开发（⚠️ 无验收锚点）\n│        C) /forge-brainstorm — 思考还不够充分，继续讨论\"\n├── 无 PRD，无思考文档 →\n│     AskUserQuestion:\n│       \"没有发现 PRD 或思考文档。建议：\n│        A) /forge-brainstorm — 先讨论一下需求再开发\n│        B) /forge-prd — 直接从零创建 PRD\n│        C) 轻量模式 — 直接告诉我要做什么，跳过文档\"\n└── 用户选择轻量模式 → 跳过第0-2步，直接进入第3步（调度建议）\n```\n\n---\n\n## 第0步：读取 PRD 输出 + Feature Spec 检查\n\n1. 根据用户指定的项目目录，定位 PRD 文件：\n   ```\n   搜索模式：\n   - {项目目录}/docs/PRD.md\n   - {项目目录}/docs/*PRD*\n   - {项目目录}/**/PRD*.md\n   ```\n\n2. 读取 PRD 的「迭代历史摘要」章节（最新版本），提取：\n   - 变更概览\n   - 迭代交付说明（前端/后端/设计/验收标准）\n   - 受影响文件\n\n3. **⚠️ Feature Spec 检查**：\n   在 PRD 中搜索 `## Feature Spec` 章节。\n   - **找到 Feature Spec** → 读取并提取行为场景（Given/When/Then）和验收检查表，作为开发的行为契约\n   - **未找到 Feature Spec** → 通过 AskUserQuestion 警告：\n     ```\n     ⚠️ PRD 中没有 Feature Spec（含 Given/When/Then 验收场景）。\n     没有 Feature Spec 意味着开发缺乏精确的行为锚点，可能导致实现偏离需求。\n     \n     A) 先运行 /forge-prd 生成 Feature Spec（推荐）\n     B) 继续开发，但接受验收标准不够精确的风险\n     ```\n   - 用户选 A → 退出 forge-dev，引导用户运行 /forge-prd\n   - 用户选 B → 继续，但在交付报告中标注「⚠️ 无 Feature Spec，验收标准可能不精确」\n\n4. 搜索并读取 CHANGELOG（如有），了解本次变更的完整决策上下文\n\n5. **项目类型判断**：\n   根据需求内容和现有代码判断类型：\n   - **frontend** — 涉及 UI、页面、组件、样式\n   - **backend** — 涉及 API、数据库、服务端逻辑、CLI 工具\n   - **fullstack** — 两者兼有\n\n---\n\n## 第1步：Discussion 阶段（结构化偏好收集）\n\n**目的**：在调研和规划之前，把用户脑中的偏好收集进来。PRD 说了\"做什么\"，但具体\"怎么做\"有很多灰区。\n\n### 灰区识别\n\n根据变更内容的类型，自动识别需要讨论的灰区：\n\n| 变更类型 | 需要讨论的灰区 |\n|---------|--------------|\n| 视觉功能 | 布局偏好、信息密度、交互方式、空状态处理、动效风格 |\n| API / CLI | 返回格式、错误码设计、参数命名、详细程度、版本策略 |\n| 内容系统 | 内容结构、语气风格、深度层级、内容流转 |\n| 数据处理 | 分组标准、去重策略、命名规则、例外处理 |\n| 组织型任务 | 目录结构、文件命名、模块划分、配置管理 |\n\n### 执行方式\n\n1. 分析 PRD 变更内容，列出识别到的灰区\n2. 对每个灰区，通过 AskUserQuestion 逐一讨论：\n   - 说明这个灰区是什么\n   - 给出推荐方案和理由\n   - 列出替代选项\n3. 用户的回答写入 `CONTEXT.md`（如果用户跳过，使用合理默认值并标注）\n4. `CONTEXT.md` 会传递给后续的 Research 和子 skill\n\n### 产出\n\n```\n{项目目录}/docs/{版本号}-CONTEXT.md\n```\n\n**可跳过**：用户说\"用默认\"或\"跳过讨论\"时，标记 discussion 为 skipped，使用合理默认值。\n\n---\n\n## 第2步：Research 阶段（技术调研）\n\n**目的**：在规划执行方案前，调研技术栈、最佳实践和潜在坑点，让后续的设计和工程方案建立在充分调研基础上。\n\n### 触发条件\n\n- **默认触发**：所有非配置类变更\n- **可跳过**：用户明确说\"跳过调研\"，或变更极小（纯配置/参数调整）\n\n### 调研方式\n\n在当前上下文中一次性完成四个维度的调研，不拉子 agent：\n\n1. **技术栈调研**：本次变更涉及的技术栈最佳实践、库选择、版本兼容性\n2. **架构模式调研**：类似功能在业界的常见架构模式、数据流设计、模块划分\n3. **坑点调研**：类似功能在实现中的常见问题和陷阱、规避策略、边界情况\n4. **现有代码分析**：用 Glob/Grep/Read 扫描项目中已有的可复用代码和模式\n\n**调研手段**：\n- 基于自身知识直接给出技术建议和风险提示\n- 使用 Glob/Grep 搜索项目已有代码，识别可复用模块\n- 需要时使用 WebSearch 搜索最新技术文档和已知问题\n\n### 产出\n\n汇总为 `RESEARCH.md`：\n\n```markdown\n# 技术调研报告 — vX.Y\n\n## 调研时间：YYYY-MM-DD\n## 调研范围：[本次 PRD 变更摘要]\n\n### 一、技术方案推荐\n[推荐的技术方案、库选择、版本兼容性]\n\n### 二、架构模式推荐\n[推荐的架构模式、数据流设计、模块划分]\n\n### 三、风险与坑点\n[已知坑点、规避策略、边界情况]\n\n### 四、可复用资产\n[项目中已有的可复用模块/函数/模式、需要重构的部分]\n\n### 五、综合建议\n[基于以上四个维度的综合推荐方案]\n```\n\n保存到 `{项目目录}/docs/{版本号}-RESEARCH.md`，传递给 forge-design 和 forge-eng。\n\n---\n\n## 第3步：分析与调度建议\n\n根据 PRD 迭代摘要 + RESEARCH.md 的内容，判断需要调用哪些子技能：\n\n### 判断规则\n\n| 变更类型 | 需要的子技能 | 说明 |\n|----------|-------------|------|\n| 涉及 UI/交互/视觉变化 | forge-design → forge-eng → forge-qa | 先设计再实现 |\n| 纯后端（API/数据/逻辑） | forge-eng → forge-qa | 跳过设计 |\n| 纯前端样式调整 | forge-design → forge-eng → forge-qa | 设计先行 |\n| 配置/参数调整 | forge-eng → forge-qa | 轻量工程+验证 |\n| 新功能（全栈） | forge-design → forge-eng → forge-qa | 完整流程 |\n| Bug 修复 | forge-eng → forge-qa | 工程+验证 |\n\n**跳过条件：** `type == \"backend\"` 时跳过 forge-design，在 state.json 中标记为 `skipped`。\n\n### 视觉决策传递（UI/前端任务）\n\n如果项目类型为 `frontend` 或 `fullstack`，且变更涉及页面、组件、状态或布局：\n\n1. 读取 `../_shared/visual-decision-layer.md`，判断是否需要 Image 2、show-widget 或真实截图。\n2. 若 PRD/brainstorm/DESIGN.md 已有视觉稿，汇总到 `.do-dev/visual-decision.md`。\n3. 调度 `forge-design` 时明确要求完成 Image 2 视觉稿门禁；若无法生成，至少产出 prompt pack 并标注阻塞。\n4. 调度 `forge-eng` / `forge-design-impl` 时传入 `.do-dev/visual-decision.md`，要求实现后用真实截图替换或对比视觉稿。\n5. 调度 `forge-qa` 时说明：Image 2 只作为观感参考，pass/fail 仍基于 Feature Spec、DESIGN.md、CSS 断言和真实截图。\n\n### 产出执行计划\n\n通过 AskUserQuestion 向用户展示：\n\n```\n项目：[项目名]\nPRD 版本：vX.Y\n项目类型：[frontend / backend / fullstack]\n本次变更：[变更摘要]\n\n调研摘要：\n- 技术方案：[RESEARCH.md 中的推荐方案]\n- 风险提示：[RESEARCH.md 中的关键坑点]\n\n建议执行计划：\n1. /forge-design — [需要设计的内容摘要]\n2. /forge-eng — [需要实现的内容摘要]\n3. /forge-qa — [需要测试的内容摘要]\n\n推荐：按上述顺序执行，因为 [理由]。\n预计影响：[N 个文件]\n```\n\n选项：\n- A) 按建议顺序执行全部\n- B) 跳过某个环节（指定跳过哪个）\n- C) 只执行其中一个（指定哪个）\n- D) 调整顺序或内容\n\n---\n\n## 第4步：Wave 并行调度子技能\n\n用户确认后，按计划执行。**核心变化：使用 Agent 工具在独立上下文中执行每个子 skill。**\n\n### Wave 分组\n\n分析子 skill 间的依赖关系，将可并行的分为同一 wave：\n\n```\nWave 1（可并行）：\n  - forge-design（如需要）— 读取 PRD + RESEARCH.md\n\nWave 2（依赖 Wave 1）：\n  - forge-eng — 读取 PRD + DESIGN.md + RESEARCH.md\n\nWave 3（依赖 Wave 2）：\n  - forge-qa — 读取 PRD + ENGINEERING.md + 代码\n```\n\n**注意**：在当前架构中 forge-design → forge-eng → forge-qa 是严格顺序依赖的，所以实际是 3 个 wave 各 1 个 skill。但如果未来有多个并行的 forge-eng 任务（如前端和后端互不依赖），可以归入同一 wave 并行执行。\n\n### 每个子 skill 的调度方式\n\n使用 Agent 工具启动独立上下文：\n\n```python\n# 伪代码示意\nfor wave in waves:\n    agents = []\n    for skill in wave.skills:\n        agent = Agent(\n            prompt=f\"\"\"\n            你是 {skill.name} 技能，现在执行以下任务：\n\n            项目路径：{project_path}\n            PRD 路径：{prd_path}\n            本次变更：{change_summary}\n            调研报告：{research_path}\n            前序产出：{previous_outputs}\n            用户偏好：{context_path}\n            视觉决策索引：{visual_decision_path or \"无\"}\n\n            请按照你的 SKILL.md 流程执行。\n            \"\"\",\n            subagent_type=\"general-purpose\"\n        )\n        agents.append(agent)\n    # 同一 wave 内的 agent 并行启动\n    # 等待所有 agent 完成后进入下一 wave\n```\n\n### 子 skill 执行后的验收\n\n每个子 skill（Agent）完成后：\n\n1. **读取产出文档** — 确认文档已正确更新（DESIGN.md / ENGINEERING.md / QA.md）\n2. **读取代码变更** — `git diff --stat` 确认变更范围合理\n3. **保存检查点**（自动模式）：`git diff > .do-dev/checkpoints/[phase]-done.patch`\n4. **阶段确认**（交互模式）：向用户简要汇报，确认是否继续下一个 wave\n\n### 阻塞处理\n\n某个子 skill 执行中遇到问题时：\n- **交互模式**：暂停并通过 AskUserQuestion 询问用户\n  - A) 修正后重试（重新启动 Agent）\n  - B) 跳过此环节继续下一个 wave\n  - C) 中止，保存当前进度\n- **自动模式**：记录阻塞原因，跳到下一个可执行阶段，在交付报告中标注\n\n---\n\n## 第5步：汇总交付\n\n所有子技能完成后，输出交付总结：\n\n```\n+================================================================+\n|                      开发交付完成                                 |\n+================================================================+\n| 项目：[项目名]                                                    |\n| PRD 版本：vX.Y                                                   |\n| 项目类型：[frontend / backend / fullstack]                        |\n| 模式：[交互 / 自动]                                               |\n+----------------------------------------------------------------+\n| Discussion：[完成/跳过] — CONTEXT.md [已生成/已跳过]               |\n| Research：[完成/跳过] — RESEARCH.md [已生成/已跳过]                |\n+----------------------------------------------------------------+\n| 执行的子技能（独立上下文）：                                        |\n|   forge-design  — [完成/跳过/阻塞] — DESIGN.md [已更新/已创建]        |\n|   forge-eng     — [完成/跳过/阻塞] — ENGINEERING.md [已更新/已创建]   |\n|   forge-qa      — [完成/跳过/阻塞] — QA.md [已更新/已创建]            |\n+----------------------------------------------------------------+\n| 代码变更：X 个文件（新增 Y / 修改 Z）                               |\n| Git 提交：N 个原子提交                                             |\n| 测试结果：[通过/有遗留问题]                                        |\n| 健康评分：XX/100                                                  |\n| 上线就绪：✅ / ⚠️ / ❌                                             |\n+----------------------------------------------------------------+\n| [自动模式] 检查点：                                                |\n|   .do-dev/checkpoints/design-done.patch                          |\n|   .do-dev/checkpoints/eng-done.patch                             |\n|   .do-dev/checkpoints/qa-done.patch                              |\n+================================================================+\n```\n\n写入 `.do-dev/delivery-report.md`，更新 state.json 所有阶段标记为 `done`。\n\n### 验收操作清单（必须产出）\n\n每次实现完成后，**必须**输出一份面向用户的验收操作清单。用户会按照清单逐步操作确认修复效果。格式如下：\n\n```\n## 验收操作清单\n\n### 改动说明\n逐条列出本次所有代码改动，每条包含：\n- **文件**：文件路径 + 行号范围\n- **改了什么**：用一句话说清楚改动内容（不用代码术语，用户能理解的语言）\n- **为什么改**：对应 PRD 的哪个变更项（如 G1、G2）\n\n### 验收步骤\n编号列出用户需要执行的操作步骤，每步包含：\n1. **操作**：具体要做什么（如\"打开频道页 → 点击 B 站 → 点击展开更多\"）\n2. **预期结果**：正确行为是什么（如\"页面不跳动，停留在原位\"）\n3. **对比旧行为**：修复前是什么样的（如\"之前会跳到 B 站所有卡片的最底部\"）\n\n### 回归检查\n列出需要额外确认没有被破坏的功能点（如\"收起按钮仍正常滚动到 section 顶部\"）\n```\n\n**规则：**\n- 验收步骤必须覆盖 PRD 变更清单中的每一项\n- 每个步骤必须具体到可操作（不能写\"检查展开功能\"，要写\"打开频道页 → 点击 B 站 → 点击展开更多\"）\n- 如果变更涉及多个 Tab/Section，必须列出所有需要检查的位置\n- 回归检查覆盖相关联的未修改功能\n\n### 出口建议（交付完成后）\n\n交付报告产出后，通过 AskUserQuestion 建议下一步：\n\n```\n开发交付完成。建议下一步：\n\nA) /forge-review — PR 审查，检查结构性问题\nB) /forge-ship — 直接发布（适合小改动，跳过审查）\nC) /forge-fupan — 先复盘再发布（推荐，沉淀经验）\nD) 继续迭代 — 还有功能要加\nE) /forge — 不确定，让 Forge 帮我判断\n```\n\n---\n\n## 单独调用模式\n\n用户也可以直接指定调用某个子技能：\n\n- `/forge-design` — 只执行设计环节\n- `/forge-eng` — 只执行工程环节\n- `/forge-qa` — 只执行 QA 验收\n\n单独调用时，子技能会自行读取 PRD 和已有的领域文档，不需要经过调度器。\n\n---\n\n## Feature 状态管理（.features/ 架构）\n\n### 核心原则\n\n**领域文档只存内容，不存运行状态。** 所有运行状态集中在 `.features/{feature-id}/status.md`，按 feature 隔离，支持多会话并行。\n\n### 状态标记协议\n\n| 标记 | 含义 |\n|------|------|\n| `[⏳ 待处理]` | 已规划，未开始 |\n| `[🔄 进行中]` | 当前正在执行 |\n| `[✅ 已完成]` | 执行完成 |\n| `[❌ 失败]` | 执行失败，需干预 |\n| `[⏸️ 暂停]` | 等待用户确认或外部依赖 |\n\n### 调度器的状态管理职责\n\nforge-dev 作为调度器，承担三重职责：\n\n#### 1. 管理自身状态（state.json + status.md）\n\nstate.json 用于调度器内部的阶段跟踪（discussion/research/dispatch 等）。\n同时通过 `.features/{feature-id}/status.md` 暴露全局可见的 Pipeline 状态。\n\n#### 2. 孤儿检测（启动时）\n\n```\n第0步启动时：\n  → 读取 .features/_registry.md\n  → 遍历所有 status == active 的 feature\n  → 如果某 feature 的 heartbeat 超过 30 分钟：\n    → 警告用户：\"Feature X 已 30+ 分钟无心跳，上次活跃 skill: Y\"\n    → 选项：A) 认领继续  B) 标记为 abandoned  C) 忽略\n```\n\n#### 3. 感知子 skill 的运行状态\n\n在调度子 skill 前后，**读取 `.features/{feature-id}/status.md` 的 Pipeline 表**：\n\n```\n调度 forge-design 前：\n  → 读取 status.md → 确认 prd 行为 [✅ 已完成]\n  → 如果 prd 行为 [🔄 进行中]，暂停并提示用户\n\n调度 forge-eng 前：\n  → 读取 status.md → 确认 design 行为 [✅ 已完成] 或 skipped\n  → 如果 design 行为 [🔄 进行中]，等待 forge-design 完成\n\n调度 forge-qa 前：\n  → 读取 status.md → 确认 eng 行为 [✅ 已完成]\n  → 如果 eng 行有 Tasks 表中存在 [❌ 失败]，提示用户\n```\n\n#### 4. 汇总全局运行状态\n\n在交付报告中，读取 `.features/{feature-id}/status.md` 汇总 Pipeline + Tasks + QA Items 的完整状态。\n\n### 传递给子 skill 的状态指令\n\n调度子 skill 时，在 Agent prompt 中加入状态管理指令：\n\n```\n状态管理要求：\n1. Feature ID: {feature-id}\n2. 状态文件: .features/{feature-id}/status.md\n3. 注册表: .features/_registry.md\n4. 开始执行时，更新 status.md Pipeline 表中对应行为 [🔄 进行中]\n5. 每个阶段/任务的状态变更实时更新到 status.md\n6. 完成时更新为 [✅ 已完成]，记录 completed 时间\n7. 失败时标记 [❌ 失败] 并在 note 中写明原因\n8. 每次状态变更都更新 _registry.md 中的 heartbeat\n9. 不要在领域文档（DESIGN.md/ENGINEERING.md/QA.md）中写入任何运行状态\n```\n\n---\n\n## 重要规则\n\n### 上下文工程规则\n- **子 skill 必须在独立上下文执行** — 使用 Agent 工具启动，不在主会话中直接执行\n- **只传递必要信息** — 文档路径 + 变更摘要 + 用户偏好，不传递主会话的完整历史\n- **主上下文保持精简** — 调度器只做编排和汇总，不做具体实现\n- **验收在主上下文完成** — 读取子 agent 的产出文档做最终确认\n\n### 调度规则\n- **半自动调度** — 列出建议，用户确认后再执行，不自动跳过任何环节\n- **上下文传递** — 确保每个子技能能读到前序产出（通过文件路径传递，非上下文传递）\n- **不重复工作** — 如果某个领域文档已经是最新（版本号与 PRD 一致），提示跳过\n- **状态文件实时更新** — 每次阶段状态变更都写 state.json\n\n### 自动模式规则\n- **前置沟通不可省略** — 自动模式的\"自动\"是沟通完毕后的执行自动，不是跳过沟通\n- **绝不 git commit** — 代码改动只在工作区，检查点用 patch 保存\n- **遇阻不死等** — 记录阻塞原因，跳到可执行阶段，在报告中标注\n\n### 质量规则\n- **不引入安全漏洞** — 每次修改都检查 OWASP Top 10\n- **不破坏现有功能** — 修改现有代码前先读懂上下文\n- **遵循项目已有风格** — 缩进、命名、目录结构与项目保持一致\n- **一个想法，一个交付** — 不要在一次流水线中塞入多个不相关的功能\n\n### 设计规则（仅 frontend/fullstack）\n- **避免 AI 模板痕迹** — 不用紫色渐变、三列功能网格、千篇一律的 SaaS 布局\n- **遵循现有设计体系** — 如果项目已有样式，新功能必须一致\n- **响应式不是可选的** — 所有新 UI 必须适配移动端","tags":["forge","dev","skills","yike-gunshi","agent-skills","ai-development","claude-code","skill-md","skillsmp"],"capabilities":["skill","source-yike-gunshi","skill-forge-dev","topic-agent-skills","topic-ai-development","topic-claude-code","topic-forge","topic-skill-md","topic-skillsmp"],"categories":["forge-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/yike-gunshi/forge-skills/forge-dev","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add yike-gunshi/forge-skills","source_repo":"https://github.com/yike-gunshi/forge-skills","install_from":"skills.sh"}},"qualityScore":"0.455","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 11 github stars · SKILL.md body (15,920 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-25T19:02:44.603Z","embedding":null,"createdAt":"2026-04-24T07:03:38.260Z","updatedAt":"2026-04-25T19:02:44.603Z","lastSeenAt":"2026-04-25T19:02:44.603Z","tsv":"'-2':380,475 '-3':402 '-5':96 '/_shared/visual-decision-layer.md':1106 '/brainstorm-':173 '/checkpoints':591,597,606,620,1394 '/checkpoints/design-done.patch':1505 '/checkpoints/eng-done.patch':1509 '/checkpoints/phase-n-done.patch':438 '/checkpoints/qa-done.patch':1513 '/delivery-report.md':1518 '/dev/null':66,78,176,185 '/docs':709,886,992 '/docs/brainstorm-':182 '/docs/prd.md':707 '/engineering.md/qa.md':1879 '/forge':1623 '/forge-brainstorm':49,665,677 '/forge-design':1192,1630 '/forge-dev':44 '/forge-eng':1195,1632 '/forge-fupan':1615 '/forge-prd':47,652,680,766,781 '/forge-qa':1198,1634 '/forge-review':1605 '/forge-ship':1610 '/prd':712 '/state.json':449 '/status.md':1655,1694,1745,1813,1843 '/visual-decision.md':1122,1150 '1':237,275,360,379,401,451,470,474,700,860,922,1104,1191,1236,1249,1286,1374,1551,1681,1831 '10':1942 '1步':626 '2':65,77,175,184,245,282,364,453,477,714,865,927,1109,1114,1130,1159,1194,1246,1261,1380,1560,1698,1837 '2/figma':31 '2步':690 '3':255,286,358,369,460,480,729,873,932,1123,1197,1258,1282,1386,1566,1733,1844 '30':1714,1720 '4':261,291,483,790,878,937,1137,1397,1805,1847 '5':297,795,1152,1854 '6':1858 '7':1864 '8':1870 '8601':535 '9':1875 'abandon':1730 'activ':1706 'agent':234,243,250,264,271,303,310,335,345,921,1225,1302,1310,1315,1316,1357,1361,1364,1372,1414,1827,1887,1900 'agents.append':1356 'ai':227,1956 'api':415,806,837,1030 'appli':616 'askuserquest':374,390,455,468,642,671,750,868,1170,1409,1600 'auto':377,521 'b':123,128,131,134,137,140,464,658,679,771,783,1210,1415,1557,1571,1589,1609,1728 'backend':195,397,525,804,1085,1179,1437 'bash':58,585,611 'block':561 'brainstorm':169,627 'branch':59,61,82,527 'bug':1073 'c':466,664,683,1213,1418,1614,1731 'cat':93,155,166 'chang':1331 'changelog':792 'checkout':613 'checkpoint':503 'cli':809,838 'commit':430,1928 'complet':1862 'context':229,1340 'context.md':875,879,888,1445 'css':1166 'current':64 'd':1216,1619 'dd':961 'decis':1344 'delivery-report.md':513 'design':15,554,998,1021,1043,1065,1089,1127,1144,1240,1273,1458,1752,1773,1779,1785 'design-done.patch':504 'design.md':296,1165,1255,1377,1462,1878 'design.md/engineering.md/qa.md':1877 'dev':3,41,149,437,448,491,495,590,596,605,619,779,1121,1149,1393,1504,1508,1512,1517,1678 'diff':434,508,512,593,601,1383,1390 'discuss':197,361,538,814,896,1442 'discussion/research/dispatch':1687 'do-dev':147,435,446,489,493,588,594,603,617,1119,1147,1391,1502,1506,1510,1515 'doc':188 'done':543,551,559,579,1522 'done.patch':599,622,1396 'done.patch.summary':608 'e':1622 'echo':67,80,83,89,99,105,111,117,138,141,153,162,177,186 'eng':19,329,338,343,563,1002,1024,1035,1046,1055,1068,1077,1141,1252,1276,1292,1467,1768,1795,1799 'eng-done.patch':506 'engineering.md':1267,1378,1471 'f':87,97,103,109,115,151,160,1318 'featur':158,164,315,320,648,655,697,730,736,740,747,754,760,768,787,1163,1643,1645,1651,1653,1657,1690,1692,1708,1710,1717,1741,1743,1809,1811,1832,1835,1839,1841 'feature-id':1652,1691,1742,1810,1834,1840 'features/_registry.md':1703,1846 'forg':2,7,14,18,22,40,328,332,337,342,778,997,1001,1020,1023,1026,1034,1037,1042,1045,1048,1054,1057,1064,1067,1070,1076,1079,1088,1126,1140,1143,1155,1239,1251,1263,1272,1275,1278,1291,1457,1466,1475,1626,1677,1751,1767,1784,1789 'forge-design':13,996,1019,1041,1063,1087,1125,1238,1271,1456,1750,1783 'forge-design-impl':1142 'forge-dev':1,39,777,1676 'forge-eng':17,327,336,341,1000,1022,1033,1044,1053,1066,1075,1139,1250,1274,1290,1465,1766 'forge-prd':6 'forge-qa':21,331,1025,1036,1047,1056,1069,1078,1154,1262,1277,1474,1788 'frontend':194,396,524,798,1098,1178,1436 'frontend/fullstack':1954 'fullstack':196,398,526,811,1100,1180,1438 'g1':1546 'g2':1547 'general':1354 'general-purpos':1353 'git':60,70,429,433,592,600,612,615,1382,1389,1490,1927 'given/when/then':349,743,757 'glob/grep':945 'glob/grep/read':940 'go':107 'head':95 'heartbeat':1712,1874 'home/.claude/skills/gstack/browse/dist/browse':133,135 'id':1654,1693,1744,1812,1833,1836,1842 'imag':30,1108,1129,1158 'impl':1145 'interact':522 'iso':534 'item':1818 'json':517 'key':416 'ls':171,180 'makefil':119 'markdown':954 'md':174,183,713 'mkdir':586 'mm':960 'mode':520 'n':124,136,405,408,1205,1492 'node.js':91 'note':545,553,562,566,570,1868 'output':1338 'owasp':1940 'p':587 'pack':1135 'pars':73 'pass':352 'pass/fail':1161 'patch':1931 'path':1325,1329,1335,1341,1345 'pend':540,548,556,565,569 'phase':537,598,607,621,1395 'pipelin':1696,1747,1815,1851 'pr':1606 'prd':8,10,26,42,191,240,284,289,318,529,630,633,637,640,646,654,661,669,673,682,695,703,710,716,734,752,820,862,964,1006,1174,1243,1254,1266,1326,1328,1432,1543,1581,1640,1757,1761,1914 'prd/brainstorm/design.md':1116 'previous':1337 'progress':542,550,558,574 'project':1324 'prompt':273,1134,1317,1828 'purpos':1355 'pwd':79 'python':101,1304 'qa':20,23,53,121,144,333,510,567,1027,1038,1049,1058,1071,1080,1156,1264,1279,1476,1636,1790,1817 'qa-done.patch':509 'qa.md':1379,1480 'registry.md':1872 'research':201,365,546,881,901,1334,1448 'research.md':208,298,953,994,1008,1185,1188,1244,1256,1451 'resum':444 'rev':72 'rev-pars':71 'root':69,85,125,172,181 'root/.claude/skills/gstack/browse/dist/browse':127,129 'root/.do-dev/state.json':152,156 'root/.features/_registry.md':161,167 'root/cargo.toml':110 'root/go.mod':104 'root/makefile':116 'root/package.json':88,94 'root/requirements.txt':98 'rot':230 'rust':113 'saa':1961 'section':1577 'shall':322,347 'show':63,75,1111 'show-curr':62 'show-toplevel':74 'show-widget':1110 'skill':212,217,219,247,253,258,268,277,293,305,307,883,1227,1231,1288,1299,1312,1368,1371,1405,1723,1735,1738,1821,1824,1884 'skill-forge-dev' 'skill.md':280,1349 'skill.name':1320 'skip':544,552,560,898,1093,1777 'source-yike-gunshi' 'spec':316,321,649,656,698,731,737,741,748,755,761,769,788,1164 'start':532 'stat':602,1384 'state.json':496,515,576,1091,1520,1683,1685,1919 'status':539,547,555,564,568,1705 'status.md':1684,1755,1771,1793,1850,1857 'subag':1351 'summari':1332 'tab/section':1593 'task':518,1801,1816 'top':1941 'topic-agent-skills' 'topic-ai-development' 'topic-claude-code' 'topic-forge' 'topic-skill-md' 'topic-skillsmp' 'toplevel':76 'type':523,1084,1352 'ui':500,800,1016,1095,1968 'unknown':68 'version':530 'visual':1343 'visual-decision.md':499 'vx.y':531,956,1176,1434 'wave':215,1219,1228,1234,1235,1245,1248,1257,1260,1284,1296,1307,1309,1359,1366,1402,1417 'wave.skills':1314 'websearch':949 'widget':1112 'x':126,132,1484,1718 'xx/100':1498 'y':1487,1724 'yyyi':959 'yyyy-mm-dd':958 'z':130,1489 '一':966 '一个交付':1950 '一个想法':1949 '一致':1915 '三':976 '三列功能网格':1959 '上下文传递':1907 '上下文工程':223 '上下文工程规则':1882 '上次停在':457 '上次活跃':1722 '上线就绪':1499 '不':428 '不传递主会话的完整历史':1894 '不传递无关信息':260 '不做具体实现':244,1897 '不再暂停':426 '不可用':143 '不在主会话中直接执行':1889 '不存运行状态':1649 '不引入安全漏洞':1938 '不拉子':920 '不是跳过沟通':1925 '不用代码术语':1539 '不用紫色渐变':1958 '不破坏现有功能':1943 '不确定':1624 '不能写':1584 '不自动跳过任何环节':1906 '不要在一次流水线中塞入多个不相关的功能':1951 '不要在主上下文中重复子':306 '不要在领域文档':1876 '不重复工作':1911 '不需要经过调度器':1642 '且变更涉及页面':1101 '两者兼有':812 '个':1283,1287 '个原子提交':1493 '个文件':406,409,1206,1485 '个硬卡点暂停等待用户确认':359 '中写入任何运行状态':1880 '中写明原因':1869 '中加入状态管理指令':1829 '中包含':274 '中搜索':735 '中有':319 '中标记为':1092 '中止':1419 '中没有':753 '中的':1873 '中的关键坑点':1189 '中的推荐方案':1186 '为':897 '为什么改':1541 '主上下文保持精简':1895 '主上下文只做调度':238 '主调度器只做编排':232 '主调度器汇总为交付报告':266 '之前':631 '之前会跳到':1570 '了解本次变更的完整决策上下文':794 '二':971 '五':987 '交互':1017,1440 '交互方式':834 '交互模式':355,1399,1407 '交付完成后':1597 '交付总结确认':371 '交付报告产出后':1598 '产出':207,884,951 '产出执行计划':1168 '产出的':9 '仅':1953 '仍基于':1162 '从':279,288 '从上次中断的阶段继续':450 '从指定阶段重新开始':465 '从该阶段继续':463 '代码':1268 '代码变更':1483 '代码扫描':205 '代码改动只在工作区':1929 '代码改动只存在于工作区':431 '任务':1293 '任务的状态变更实时更新到':1856 '会传递给后续的':880 '传递':29,314 '传递给':326,995 '传递给子':1820 '伪代码示意':1305 '但具体':823 '但在交付报告中标注':785 '但如果未来有多个并行的':1289 '但接受验收标准不够精确的风险':773 '但没有正式':645 '作为开发的行为契约':745 '作为调度器':1679 '你是':1319 '使用':249,270,944,1224,1301,1886 '使用合理默认值':899 '使用合理默认值并标注':877 '例外处理':853 '供用户手动使用':610 '依赖':1247,1259 '依赖确认':412 '保存':1932 '保存到':990 '保存当前进度':1420 '保存检查点':580,1387 '信息密度':833 '修复':1074 '修复前是什么样的':1568 '修复后的完整':511 '修改':1488 '修改现有代码前先读懂上下文':1944 '修正后重试':1412 '做什么':822 '停留在原位':1565 '健康评分':1497 '先复盘再发布':1616 '先完成前置沟通':384 '先检查项目是否有':632 '先讨论一下需求再开发':678 '先设计再实现':1028 '先运行':765 '全栈':1062 '全程中文':55,222 '全自动执行':425 '全部重来':467 '关键约束':301 '其他阶段正常推进':372 '具体要做什么':1553 '内容流转':848 '内容系统':844 '内容结构':845 '内的':1360 '写入':575,1514 '决定是否跳过设计':399 '出口建议':1596 '函数':984 '分支名':528 '分析':861 '分析与调度建议':1004 '分析变更':209 '分析子':1230 '分组':1229 '分组标准':850 '分钟':1715 '分钟无心跳':1721 '列出建议':1904 '列出建议的执行计划':213 '列出建议顺序供用户确认后以独立上下文执行':34 '列出替代选项':872 '列出识别到的灰区':864 '列出选项':484 '列出需要额外确认没有被破坏的功能点':1574 '判断是否需要':1107 '判断规则':1011 '判断计划':241 '判断需要哪些子':211 '判断需要调用哪些子技能':33,1010 '前':1753,1769,1791 '前后':1739 '前序产出':1336 '前序子':292 '前端':724 '前端任务':1096 '前置沟通':378 '前置沟通不可省略':1921 '前置沟通完毕后':424 '前置脚本':56 '动效风格':836 '千篇一律的':1960 '半自动调度':1903 '半自动调度设计':12 '协调子':242 '单独调用时':1638 '单独调用模式':1628 '原则':236 '去重策略':851 '参数命名':841 '参数调整':917,1052 '发现':163 '发现思考文档':178,187,643 '发现未完成的开发流水线':154 '受影响文件':728 '变更':11 '变更内容':863 '变更摘要':965,1182,1892 '变更概览':722 '变更清单中的每一项':1582 '变更类型':829,1012 '句':476 '句话概括方案方向':403 '只传递子':257 '只传递必要信息':1890 '只作为观感参考':1160 '只在以下情况触发':413 '只执行':1635 '只执行其中一个':1214 '只执行工程环节':1633 '只执行设计环节':1631 '可以归入同一':1295 '可复用资产':982 '可并行':1237 '可能导致实现偏离需求':763 '可调整的执行方案':485 '可跳过':889,912 '可选':502 '各':1285 '同一':1358 '同时通过':1689 '后再继续下一个功能点':353 '后端':725 '向用户展示':1171 '向用户简要汇报':1400 '含':756 '含义':1662 '启动时':1700 '告知':340 '命名':1947 '命名规则':852 '和':330,647,999 '和子':882 '和已有的领域文档':1641 '和思考文档':634 '和验收检查表':744 '响应式不是可选的':1966 '四':981 '回归检查':1573 '回归检查覆盖相关联的未修改功能':1595 '回退方法':609 '因为':1202 '在':357,733,1090,1826 '在交付报告中':1807 '在交付报告中标注':1424 '在当前上下文中一次性完成四个维度的调研':919 '在当前架构中':1270 '在报告中标注':442,1936 '在独立上下文执行':220,248 '在规划执行方案前':905 '在读取':629 '在调度子':1737 '在调研和规划之前':818 '场景':350 '坑点调研':933 '基于以上四个维度的综合推荐方案':989 '基于知识':204 '基于自身知识直接给出技术建议和风险提示':943 '复述需求':393 '多个入口':422 '多种理解方式':420 '失败':1670,1803,1866 '失败时标记':1865 '如':295,1545,1554,1563,1569,1575 '如前端和后端互不依赖':1294 '如有':300,793 '如果':317,1760,1778,1798 '如果变更涉及多个':1592 '如果某':1709 '如果某个领域文档已经是最新':1912 '如果用户跳过':876 '如果项目已有样式':1964 '如果项目类型为':1097 '如需要':1241 '子':246,263,267,276,309,334,344,1367,1883 '子技能':24 '子技能会自行读取':1639 '子技能完成开发交付':54 '孤儿检测':1699 '完成':1443,1449,1459,1468,1477,1786 '完成后':311,362,1373 '完成后进入下一':1365 '完成时更新为':1859 '完整流程':1072 '定位':702 '实现需求':38 '审查':1607 '对吗':394 '对应':1542 '对每个灰区':866 '对比旧行为':1567 '将以纯代码模式运行':145 '将其路径和关键内容':323 '将可并行的分为同一':1233 '将思考转化为正式':653 '工具':272,810 '工具启动':1888 '工具启动子代理':251 '工具启动独立上下文':1303 '工具在独立上下文中执行每个子':1226 '工程':16,52,1081 '工程阶段完成后的完整':507 '已':1719 '已创建':1464,1473,1482 '已完成':1668,1759,1775,1797,1860 '已更新':1463,1472,1481 '已有视觉稿':1117 '已生成':1446,1452 '已知坑点':978 '已规划':1664 '已跳过':1447,1453 '布局':1962 '布局偏好':832 '帮我判断':1627 '并在':1867 '并标注阻塞':1136 '并行启动':1362 '并行执行':1297 '并行调度子':216 '并行调度子技能':1220 '并行调研技术方案':28 '库选择':925,969 '建议':650,675 '建议下一步':1601,1603 '建议执行计划':1190 '建议的执行计划':368 '开发交付完成':1429,1602 '开发调度器':4,45 '开始开发':37 '开始执行时':1848 '引导用户运行':780 '当前分支':81 '当前正在执行':1667 '当前项目':472 '待处理':1663 '微服务架构':423 '必选':387 '必须':382,1526 '必须产出':1524 '必须列出所有需要检查的位置':1594 '必须在独立上下文执行':1885 '必须适配移动端':1969 '忽略':1732 '怎么做':824 '思考文档':170 '思考还不够充分':666 '恢复到指定阶段':623 '恢复模式':443 '意味着开发缺乏精确的行为锚点':762 '感知':628 '感知子':1734 '我理解你要做的是':392 '我的方案大纲是':400 '或':48,892,1099,1776 '或变更极小':915 '或思考文档':674 '或真实截图':1113 '所以实际是':1281 '所有子技能完成后':370,1427 '所有新':1967 '所有调度产出写入项目根目录的':488 '所有运行状态集中在':1650 '所有阶段标记为':1521 '所有非配置类变更':911 '打开频道页':1555,1587 '执行中遇到问题时':1406 '执行任何阶段之前':383 '执行后的验收':1369 '执行失败':1671 '执行完成':1669 '执行方式':859 '执行的子技能':1454 '执行计划确认':366 '扫描项目中已有的可复用代码和模式':941 '找到':739 '承担三重职责':1680 '技术方案':1184 '技术方案推荐':967 '技术栈调研':923 '技术调研':203,903 '技术调研报告':955 '技能':1321 '把用户脑中的偏好收集进来':819 '拥有全新的上下文窗口':254 '持久化':498 '指定哪个':1215 '指定跳过哪个':1212 '按':1656 '按上述顺序执行':1201 '按建议顺序执行全部':1209 '按计划执行':1222 '按需':411 '按需搜索':206 '接力':5,46 '推荐':657,770,1200,1617 '推荐的执行计划和理由':482 '推荐的技术方案':968 '推荐的架构模式':973 '提交':1491 '提取':721 '提示用户':1804 '提示跳过':1916 '搜索并读取':791 '搜索最新技术文档和已知问题':950 '搜索模式':705 '搜索项目已有代码':946 '操作':1552 '支持多会话并行':1659 '收起按钮仍正常滚动到':1576 '改了什么':1537 '改动说明':1531 '数据':1031 '数据处理':849 '数据库':417,807 '数据流设计':930,974 '文件':704,1534 '文件名':644 '文件命名':856 '文件夹':492 '文件路径':1535 '文档路径':1891 '断言和真实截图':1167 '新功能':1061 '新功能必须一致':1965 '新增':1486 '新建':407 '无':639,668,786,1347 '无思考文档':670 '无验收锚点':663 '时':894,1825 '时传入':1146 '时明确要求完成':1128 '时说明':1157 '时跳过':1086 '时间':536,1863 '是严格顺序依赖的':1280 '是沟通完毕后的执行自动':1924 '显示当前进度摘要':452 '暂停':1673 '暂停并提示用户':1764 '暂停并通过':1408 '暴露全局可见的':1695 '更新':1519,1849 '更新后需要进入开发阶段时使用':43 '更新状态为':572,578 '最佳实践和潜在坑点':907 '最新版本':720 '最终交付报告':514 '有':636 '有很多灰区':825 '有思考文档':641 '有遗留问题':1496 '服务端逻辑':808 '未开始':1665 '未找到':746 '本次':963 '本次变更':1181,1330 '本次变更涉及的技术栈最佳实践':924 '本次变更的具体内容':287 '架构':1646 '架构模式推荐':972 '架构模式调研':928 '某个子':1404 '标记':895,1661 '标记为':1729 '样式':803 '核心原则':1647 '核心变化':1223 '核心设计':224 '根据':1005 '根据变更内容的类型':827 '根据用户指定的项目目录':701 '根据需求内容和现有代码判断类型':797 '根目录':179 '格式':516 '格式如下':1529 '格式规范':469 '检查':146,157,168,699,732 '检查展开功能':1585 '检查浏览器工具':120 '检查点':1501 '检查点保存':582 '检查点用':1930 '检查结构性问题':1608 '检查项目文档状态':635 '检测到':90,100,106,112,118 '检测到需要外部依赖':414 '检测项目环境':86 '模块划分':857,931,975 '模式':985,1439 '模式说明':354 '模板痕迹':1957 '正在调度的开发任务':473 '正常进入第0步':638 '正确行为是什么':1562 '每个':302 '每个子':218,252,1298,1370 '每个步骤必须具体到可操作':1583 '每个阶段':1855 '每个阶段完成后保存检查点':584 '每个阶段结束保存检查点':432 '每完成一个功能点后':346 '每条包含':1533 '每次修改都检查':1939 '每次先运行':57 '每次完成一个阶段时':577 '每次实现完成后':1525 '每次状态变更都更新':1871 '每次进入新阶段时':571 '每次阶段状态变更都写':1918 '每步包含':1550 '汇总':1814 '汇总为':952 '汇总交付':1426 '汇总交付结果':221 '汇总全局运行状态':1806 '汇总到':1118 '沉淀经验':1618 '没有':759 '没有发现':672 '注册表':159,165,1845 '注意':1269 '流程':189 '流程执行':1350 '测试结果':1494 '浏览器工具':139,142 '涉及':799,805,1015 '深度层级':847 '清除当前工作区':614 '灰区识别':826 '点击':1556,1588 '点击展开更多':1559,1591 '版本':1175,1433 '版本兼容性':926,970 '版本号':887,993 '版本号与':1913 '版本策略':843 '状态':150,1697 '状态或布局':1103 '状态文件':487,1838 '状态文件实时更新':1917 '状态标记协议':1660 '状态管理':486,1644 '状态管理要求':1830 '独立上下文':1455 '现在执行以下任务':1322 '现有代码分析':938 '理由':1203 '生成':767 '用':939 '用一句话说清楚改动内容':1538 '用于调度器内部的阶段跟踪':1686 '用户也可以直接指定调用某个子技能':1629 '用户会按照清单逐步操作确认修复效果':1528 '用户偏好':1339,1893 '用户明确说':913 '用户的回答写入':874 '用户确认':214 '用户确认后':1221 '用户确认后再执行':1905 '用户能理解的语言':1540 '用户说':36,890 '用户选':774,782 '用户选择轻量模式':687 '用简单语言说清接下来要做什么':479 '用默认':891 '的':717,1707,1711,1746 '的产出':50 '的产出文档做最终确认':1901 '的产出路径':294 '的内容':1009 '的哪个变更项':1544 '的完整指令':278 '的完整状态':1819 '的工作':308 '的状态指令':1822 '的独立上下文中':235 '的调度方式':1300 '的运行状态':1736 '目录结构':855 '目录结构与项目保持一致':1948 '目的':817,904 '直接从零创建':681 '直接发布':1611 '直接告诉我要做什么':685 '直接基于思考文档进入开发':662 '直接进入第3步':691 '真实截图等视觉决策索引':32 '真正的工作发生在子':233 '确保每个子技能能读到前序产出':1908 '确认':351,391,456,1756,1772,1794 '确认偏好收集是否完整':363 '确认变更范围合理':1385 '确认文档已正确更新':1376 '确认是否继续下一个':1401 '空状态处理':835 '站':1558,1590 '站所有卡片的最底部':1572 '章节':719,738 '第':625 '第-1步':624 '第0步':693 '第0步启动时':1701 '第1步':813 '第1轮':386 '第2步':900 '第2轮':410 '第3步':1003 '第4步':1218 '第5步':1425 '第三方服务':418 '等':1688 '等待':1782 '等待所有':1363 '等待用户确认或外部依赖':1674 '管理自身状态':1682 '类似功能在业界的常见架构模式':929 '类似功能在实现中的常见问题和陷阱':934 '精准传递上下文':256 '纯前端样式调整':1040 '纯后端':1029 '纯配置':916 '组件':802,1102 '组织型任务':854 '结构化偏好收集':199,816 '结果汇总回主上下文':262 '给出推荐':481 '给出推荐方案和理由':871 '绝不':1926 '继续':784 '继续开发':772 '继续讨论':667 '继续迭代':1620 '综合建议':988 '编号列出用户需要执行的操作步骤':1549 '缩进':1946 '而非依赖其返回的文本':313 '自动':1441,1923 '自动模式':376,581,1388,1421,1500 '自动模式下':583 '自动模式特殊规则':427 '自动模式的':1922 '自动模式规则':1920 '自动识别需要讨论的灰区':828 '自验对应的':348 '至少产出':1133 '若':1115 '若无法生成':1132 '行为':1758,1762,1774,1780,1796 '行为场景':324 '行为约束':339 '行号范围':1536 '行有':1800 '表':1748 '表中存在':1802 '表中对应行为':1852 '要从这里继续吗':459 '要写':1586 '要求实现后用真实截图替换或对比视觉稿':1151 '规则':1579 '规避策略':935,979 '视觉决策传递':1094 '视觉决策索引':1342 '视觉功能':831 '视觉变化':1018 '视觉稿门禁':1131 '解决方案':231 '触发方式':35 '触发条件':909 '警告':751 '警告用户':1716 '认领继续':1727 '让':1625 '让后续的设计和工程方案建立在充分调研基础上':908 '记录':1861 '记录阻塞原因':440,1422,1934 '设计':726 '设计先行':1050 '设计相关任务的视觉决策索引':501 '设计规则':1952 '设计阶段完成后的代码状态':505 '识别可复用模块':947 '识别灰区':200 '询问':375 '询问用户':1410 '详细程度':842 '语气风格':846 '说了':821 '说明':1014 '说明这个灰区是什么':870 '请按照你的':1348 '读取':25,190,239,281,445,694,715,1105,1242,1253,1265,1702,1740,1754,1770,1792,1808 '读取产出文档':1375 '读取代码变更':1381 '读取其产出文档确认结果':312 '读取子':1899 '读取并提取行为场景':742 '调度':1124,1138,1153,1749,1765,1787 '调度器只做编排和汇总':1896 '调度器的状态管理职责':1675 '调度子':1823 '调度建议':692 '调度状态':497 '调度规则':1902 '调度设计':51 '调整顺序或内容':1217 '调用只执行一个子':304 '调用方式':269 '调研手段':942 '调研技术栈':906 '调研报告':1333 '调研摘要':1183 '调研方式':918 '调研时间':957 '调研结果':210,367 '调研范围':962 '质量规则':1937 '超过':1713 '路径':285,299,1327 '跳到下一个可执行阶段':441,1423 '跳到可执行阶段':1935 '跳过':660,1444,1450,1460,1469,1478 '跳过审查':1613 '跳过文档':686 '跳过条件':1083 '跳过某个环节':1211 '跳过此环节继续下一个':1416 '跳过第0':689 '跳过第0-2步':688 '跳过讨论':893 '跳过设计':1039 '跳过调研':914 '轮':381 '轻量工程':1059 '轻量模式':659,684 '输出':696 '输出一份面向用户的验收操作清单':1527 '输出交付总结':1428 '输出质量会逐步劣化':228 '边界情况':936,980 '返回执行摘要':265 '返回格式':839 '还有功能要加':1621 '这不是可选的':385 '进行中':1666,1763,1781,1853 '迭代交付说明':723 '迭代历史摘要':718 '迭代摘要':27,192,1007 '迭代摘要提取':290 '退出':776 '适合小改动':1612 '选项':461,1207,1725 '逐一讨论':869 '逐条列出本次所有代码改动':1532 '通俗解释':478 '通过':389,454,749,867,1169,1495,1599 '通过文件路径传递':1909 '逻辑':1032 '遇到不确定问题时用':373 '遇到阻塞不死等':439 '遇阻不死等':1933 '遍历所有':1704 '遵循现有设计体系':1963 '遵循项目已有风格':1945 '避免':1955 '配置':1051 '配置管理':858 '重新启动':1413 '重新聚焦':471 '重要规则':1881 '错误码设计':840 '问题':225 '间的依赖关系':1232 '阶段':198,202,815,902 '阶段可能需要':122 '阶段名':458 '阶段确认':1398 '阻塞':1461,1470,1479 '阻塞处理':1403 '随着会话上下文窗口被填满':226 '隔离':1658 '需干预':1672 '需求存在歧义':419 '需求对齐':388 '需求描述':519 '需要实现的内容摘要':1196 '需要时使用':948 '需要测试的内容摘要':1199 '需要的子技能':1013 '需要的文档路径和指令':259 '需要讨论的灰区':830 '需要设计的内容摘要':1193 '需要重构的部分':986 '非上下文传递':1910 '页面':801 '页面不跳动':1564 '顶部':1578 '项目':92,102,108,114,1172,1430 '项目中已有的可复用模块':983 '项目名':1173,1431 '项目根目录':84 '项目目录':706,708,711,885,991 '项目类型':1177,1435 '项目类型判断':193,395,796 '项目结构复杂':421 '项目路径':1323 '项目路径和':283 '预期结果':1561 '预计影响':404,1204 '领域文档只存内容':1648 '风险与坑点':977 '风险提示':1187 '验收':1637 '验收在主上下文完成':1898 '验收场景':758 '验收操作清单':1523,1530 '验收标准':727 '验收标准可能不精确':789 '验收检查表':325 '验收步骤':1548 '验收步骤必须覆盖':1580 '验证':1060,1082 '默认':356 '默认触发':910","prices":[{"id":"44ee78ac-c51d-4645-b0db-aed4f19bac8f","listingId":"8575d0aa-dca1-49f6-970b-52fb61b05570","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"yike-gunshi","category":"forge-skills","install_from":"skills.sh"},"createdAt":"2026-04-24T07:03:38.260Z"}],"sources":[{"listingId":"8575d0aa-dca1-49f6-970b-52fb61b05570","source":"github","sourceId":"yike-gunshi/forge-skills/forge-dev","sourceUrl":"https://github.com/yike-gunshi/forge-skills/tree/main/skills/forge-dev","isPrimary":false,"firstSeenAt":"2026-04-24T07:03:38.260Z","lastSeenAt":"2026-04-25T19:02:44.603Z"}],"details":{"listingId":"8575d0aa-dca1-49f6-970b-52fb61b05570","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"yike-gunshi","slug":"forge-dev","github":{"repo":"yike-gunshi/forge-skills","stars":11,"topics":["agent-skills","ai-development","claude-code","forge","skill-md","skillsmp"],"license":"mit","html_url":"https://github.com/yike-gunshi/forge-skills","pushed_at":"2026-04-25T10:22:48Z","description":"Forge — 文档驱动的 AI 辅助开发框架 | Document-driven AI development framework with 14 Skills covering brainstorm → PRD → design → engineering → QA → review → ship → retrospective","skill_md_sha":"b9656fe8715f046f600cd1e9775ed86ee1c7f33b","skill_md_path":"skills/forge-dev/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/yike-gunshi/forge-skills/tree/main/skills/forge-dev"},"layout":"multi","source":"github","category":"forge-skills","frontmatter":{"name":"forge-dev","description":"开发调度器。接力 forge-prd 产出的 PRD 变更，半自动调度设计(forge-design)、工程(forge-eng)、QA(forge-qa) 子技能。读取 PRD 迭代摘要，并行调研技术方案，传递 Image 2/Figma/真实截图等视觉决策索引，判断需要调用哪些子技能，列出建议顺序供用户确认后以独立上下文执行。触发方式：用户说\"开始开发\"、\"实现需求\"、\"forge-dev\"、PRD 更新后需要进入开发阶段时使用。"},"skills_sh_url":"https://skills.sh/yike-gunshi/forge-skills/forge-dev"},"updatedAt":"2026-04-25T19:02:44.603Z"}}