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