#!/usr/bin/env python3 # 根据 _bmad/_config/bmad-help.csv 与下行中文说明表,生成仓库根目录 bmad-help.zh-CN.md from __future__ import annotations import csv from pathlib import Path REPO = Path(__file__).resolve().parents[1] CSV_PATH = REPO / "_bmad" / "_config" / "bmad-help.csv" OUT_PATH = REPO / "bmad-help.zh-CN.md" MODULE_ZH = { "BMad Builder": "BMad 构建器", "BMad Method": "BMad 方法", "Core": "核心", "Creative Intelligence Suite": "创意智能套件(CIS)", "Game Dev Studio": "游戏开发工作室(GDS)", "Test Architecture Enterprise": "测试架构企业版(TEA)", "Web Design Studio": "网页设计工作室(WDS)", } PHASE_ZH = { "anytime": "随时", "1-analysis": "阶段 1 · 分析", "2-planning": "阶段 2 · 规划", "3-solutioning": "阶段 3 · 方案设计", "4-implementation": "阶段 4 · 实现", "0-learning": "阶段 0 · 学习", "1-preproduction": "前期制作", "2-design": "设计", "3-technical": "技术", "4-production": "制作", "gametest": "游戏测试", "0-wds-pitch": "WDS · 宣讲/对齐", "0-wds-agents": "WDS · 唤醒代理", "1-wds-strategy": "WDS · 策略", "2-wds-design": "WDS · 设计", "3-wds-build": "WDS · 构建/验证", } # 与 CSV 行顺序一致(共 114 行),对应「sequence」列的中文说明;空原文由脚本行号对应空序列行 ZH_BY_ROW = [ "通过对话式梳理,创建、编辑或重建 Agent 技能。", "对既有 Agent 做质量分析:结构、内聚、提示词工艺与改进空间。", "安装或更新 BMad Builder 模块配置与帮助条目。", "头脑风暴并规划 BMad 模块:创意、架构与构建计划。", "将模块基础设施脚手架化为可安装的 BMad 模块技能。", "检查模块结构是否完整、准确,且能力均已正确注册。", "创建、编辑或重建工作流或工具型技能。", "对既有工作流/技能做质量分析:结构、效率与改进空间。", "将任意技能转换为符合 BMad 的成果导向形态,并生成前后对比 HTML 报告。", "详细描述需求,由代理按文档最佳实践撰写;可多轮对话并子流程做调研/审阅。", "若发现文档惯例缺失,把你的偏好写入代理记忆中的 documentation-standards.md。", "根据描述生成 Mermaid 图;未指定类型时会建议合适的图类。", "对照文档规范与最佳实践审查指定文档,按优先级给出可执行的改进建议。", "为复杂概念撰写清晰技术说明,附示例与图示。", "专家引导,使用一种或多种技法进行项目头脑风暴。", "确保 PRD、UX、架构与 Epic/Story 彼此对齐。", "故事循环:若有问题退回 DS;通过后进入下一 CS,或 Epic 完成时走 ER。", "在重大变更时纠偏:可能建议重来、更新 PRD、重做架构/冲刺规划或修正 Epic 与 Story。", "引导式产出技术决策文档(架构)。", "在架构文档(CA)之后创建 Epic 与用户故事。", "专家引导完成产品需求文档(PRD)。", "故事循环起点:准备冲刺计划中「下一个」待做 Story,或指定 Epic/Story。", "在开发开始前校验 Story 是否就绪、完整。", "落实 UX 方案;若项目以 UI 为主,强烈建议使用。", "故事循环:执行 Story 实现与测试,经 CR,如需修复回到 DS。", "分析现有项目并产出可用文档。", "行业领域深度研究、专业术语与知识沉淀。", "在通过 PRD 校验流程后,编辑并改进指定路径的 PRD。", "扫描代码库生成精简、面向 LLM 的 project-context.md;棕地项目尤其重要。", "市场、竞品、客户需求与趋势分析。", "引导式厘清产品创意与核心价值。", "为已实现代码生成自动化 API 与 E2E 测试;非代码评审或 Story 校验(请用 CR)。", "统一「意图进、代码出」:澄清、实现、审阅与交付展示。", "可选:在 Epic 结束时回顾成果与经验,规划下一 Epic;重大问题考虑走 CC。", "启动实现阶段:生成实现代理将按序执行的冲刺计划。", "随时总结 Sprint 状态并路由到下一工作流。", "技术可行性、架构选项与实现路径研究。", "在创建 PRD(CP)之后校验 PRD 质量。", "在创意早期或思路卡住时做头脑风暴。", "生成节省 token 的蒸馏文,保留供下游 LLM 使用的关键信息。", "成稿后润色正文表达。", "当文档由多段子流程拼成或结构需加强时,做结构性编辑审阅。", "判断当前所处 BMad 流程位置并回答问题;推荐下一步技能与调用方式。", "在不加载全部文件的前提下为目录生成/更新索引,便于掌握文档地图。", "编排多代理/多视角讨论与协作。", "在定稿前做对抗性质量审查;其他模块的代码审也可自动调用,亦适用于文档。", "与对抗审搭配,从边界场景做正交补充,重方法而非「挑刺态度」。", "当单份文档过大(常为 >500 行)时拆分为可管理片段。", "用一种或多种技法主持头脑风暴会话。", "以同理心驱动的人本设计流程指导。", "识别颠覆机会并设计商业模式创新。", "运用系统化问题解决方法拆解复杂挑战。", "用成熟叙事框架与技巧撰写故事/叙述。", "快速游戏原型,验证机制与创意。", "在游戏语境下主持头脑风暴。", "在投产前确保 GDD、UX、架构与 Epic/Story 对齐。", "对标记为「待评审」的 Story 做干净上下文的 QA 代码审查。", "游戏开发冲刺偏离路线时进行纠偏。", "依据 GDD 需求创建 Epic 与 Story 列表,作为开发规格驱动。", "交互式游戏简报,引导用户明确游戏愿景。", "撰写游戏设计文档 GDD:机制、系统、进度与实现指引。", "为剧情向游戏撰写叙事文档:结构、人物弧与世界观。", "从 GDD 或从零撰写 PRD,供 bmad-assist 等外部工具使用。", "为开发代理准备上下文充分的 Story。", "落实游戏 UX/UI;若 UI 是核心,强烈建议使用。", "执行 Dev Story:按任务与测试实现。", "分析现有游戏项目并产出文档。", "游戏产业领域深度研究与术语沉淀。", "搭建 E2E 测试基础设施脚手架。", "改进并增强既有 PRD。", "产出可伸缩游戏架构:引擎、系统、网络与技术设计。", "生成适配所选智能体工具一致性的 project-context.md。", "游戏市场、竞品与玩家需求分析。", "设计性能测试策略。", "撰写结构化试玩/测试计划。", "兼顾游戏特性的灵活开发流程。", "实验性一体化快捷流:单工作流内完成澄清、计划、实现、审阅与展示。", "小需求、小改动、简单应用/工具,无需冗长规划。", "在游戏开发 Epic 完成后组织团队回顾。", "由 Epic 文件生成或更新 sprint-status.yaml。", "查看冲刺进度、暴露风险并给出下一步行动建议。", "游戏引擎选项与实现路径的技术可行性研究。", "生成自动化游戏测试。", "设计覆盖流程与质量要求的游戏测试场景。", "为 Unity / Unreal / Godot 等项目初始化游戏测试框架架构。", "评审测试质量与覆盖。", "按外部工具兼容标准校验 PRD。", "TEA 学院:通过 7 次课讲授测试基础(含进度与证书相关产出)。", "生成失败用例(TDD 红灯阶段)。", "扩展自动化测试覆盖。", "配置 CI/CD 质量流水线。", "初始化生产级测试框架脚手架。", "非功能需求(NFR)评估。", "基于风险的测试规划。", "质量审计(0–100 分制)。", "覆盖度可追溯与质量门禁决策。", "带设计日志与浏览器验证的迭代「构建—验证」循环。", "干系人共识 pitch 与服务协议;若做自有产品可跳过。", "详细规格前的快速视觉草图探索;直接场景可跳过。", "逐页逐元素记录设计决策,开发可直接据此实现。", "校验规格完整并打包为 DD yaml,供开发交接。", "管理组件库与设计令牌;设计系统模式为「无」时跳过。", "第 3–4 阶段 UX 设计师代理 Freya:检查前置条件并给出下一步。", "从规格抽取可复用模式为组件定义;无设计系统时跳过。", "治理代理 Idun:访谈组织以配置 Agent Space 与权限模型。", "以「人设 + 目标 + 结果」定义用户旅程,并与触发图驱动力关联。", "平台、设备、集成与约束等技术边界;简单落地页可跳过。", "持续改进:反馈 → 触发图 → 规格 → 代码 → 验证。", "定义产品愿景、定位与成功标准,设计决策应可追溯至此。", "第 1–2 阶段战略分析师代理 Saga:扫描仓库并建议下一步。", "跨界面串联用户旅程与入口、过渡、异常路径;简单场景可跳过。", "将业务目标映射到用户心理:人设、功能与驱动力打分。", "在真实用户环境中做可用性测试与回顾式出声思考。", "将规格转为带样式的 HTML 原型,可与 Figma 往返。", ] def _is_arg_cell(s: str) -> bool: """CSV 部分行在 phase 前插入了 [path] / {-H:...} 等参数列。""" if not s: return False if s == "[path]": return True if s.startswith("{-H") or s.startswith("{--"): return True if s.startswith("{description:"): return True return False def phase_token(r: list[str]) -> str: if r[5]: return r[7] or "" if _is_arg_cell(r[6] or ""): return r[7] or "" return r[6] or "" def phase_display(r: list[str]) -> str: p = phase_token(r) if not p or p in ("true", "false"): return "—" return PHASE_ZH.get(p, p) def prereq_display(r: list[str]) -> str: if r[5]: cand = r[12] elif _is_arg_cell(r[6] or ""): cand = r[8] or "" else: cand = r[7] or "" if not cand or cand in ("true", "false"): return "—" return cand def required_gate(r: list[str]) -> str: if r[5]: return r[13] if _is_arg_cell(r[6] or ""): return r[13] return r[12] def output_display(r: list[str]) -> str: if r[5]: loc, out = r[14], r[15] elif _is_arg_cell(r[6] or ""): loc, out = r[14], r[15] else: loc, out = r[13], r[14] parts = [x.replace("|", " · ") for x in (loc, out) if x] return " / ".join(parts) if parts else "—" def main() -> None: with CSV_PATH.open(newline="", encoding="utf-8") as f: rows = list(csv.reader(f))[1:] if len(rows) != len(ZH_BY_ROW): raise SystemExit(f"行数不匹配: CSV {len(rows)} vs ZH {len(ZH_BY_ROW)}") by_mod: dict[str, list[list[str]]] = {} for r in rows: by_mod.setdefault(r[0], []).append(r) lines: list[str] = [ "# BMad 帮助目录(中文版)", "", "本文档由 [`_bmad/_config/bmad-help.csv`](_bmad/_config/bmad-help.csv) 翻译并整理,便于中文读者检索 **菜单码**、**技能** 与用途。", "", "技能调用方式(斜杠命令 / 自然语言等)以本机 `npx bmad-method install` 与 Cursor 集成为准。", "", "## 表列说明", "", "| 列 | 含义 |", "| --- | --- |", "| **码** | 菜单快捷码(不同模块下可能重复,以技能名列区分) |", "| **显示名称** | CSV 英文显示名(与上游一致,便于对照) |", "| **技能** | 技能标识 / 工作流名 |", "| **说明** | 对「sequence」列的中文释义 |", "| **阶段** | 工作流阶段或触发时机(`anytime` 等为随时) |", "| **前置** | 建议先完成的技能或条件(CSV 中错位字段已尽量还原) |", "| **必选** | 是否后期阶段强制项(`true` / `false`) |", "| **产出** | 主要输出位置或产物类型(保留英文路径占位符) |", "", "---", "", ] idx = 0 for mod in [ "BMad Builder", "BMad Method", "Core", "Creative Intelligence Suite", "Game Dev Studio", "Test Architecture Enterprise", "Web Design Studio", ]: mrows = by_mod.get(mod) if not mrows: continue lines.append(f"## {MODULE_ZH.get(mod, mod)}") lines.append("") lines.append( "| 码 | 显示名称 | 技能 | 说明 | 阶段 | 前置 | 必选 | 产出 |" ) lines.append("| --- | --- | --- | --- | --- | --- | --- | --- |") for r in mrows: zh = ZH_BY_ROW[idx] idx += 1 req = required_gate(r) lines.append( "| {code} | {name} | `{skill}` | {desc} | {phase} | {pre} | {req} | {out} |".format( code=r[3].replace("|", "\\|"), name=r[2].replace("|", "\\|"), skill=r[1].replace("|", "\\|"), desc=zh.replace("|", "\\|"), phase=phase_display(r).replace("|", "\\|"), pre=prereq_display(r).replace("|", "\\|"), req=req.replace("|", "\\|"), out=output_display(r).replace("|", "\\|"), ) ) lines.append("") if idx != len(rows): raise SystemExit(f"索引错误: 写了 {idx} 行,预期 {len(rows)}") lines.append("---") lines.append("") lines.append( "*生成脚本:[`scripts/render_bmad_help_zh_cn.py`](scripts/render_bmad_help_zh_cn.py)(修改译文表后重新运行以更新本文档。)*" ) lines.append("") OUT_PATH.write_text("\n".join(lines), encoding="utf-8") print(f"Wrote {OUT_PATH}") if __name__ == "__main__": main()