msdevflow
v0.8.11
Published
Install the msdevflow GitCode skill and its runtime dependencies
Readme
msdevflow
msdevflow npm 包提供一套 GitCode Agent Skills:msd 核心可以把已授权的 Issue 安全推进到代码实现、普通 PR、CI、检视意见闭环和最终合入,十个 msd-<action> 薄路由入口用于在输入阶段发现并运行单项能力。正式支持 Claude Code、Codex 和 OpenCode;Trae 的 Skills 安装与兼容机制尚未完成可靠验证,因此当前不宣称支持。
安装
环境要求:
- Claude Code、Codex 或 OpenCode 中至少一个;
- Node.js
>=18和 npm; - Git;
- Python
>=3.10,且标准库venv模块可用; - GitCode 账号;
- Chrome 或 Edge(推荐,用于 openLiBing OAuth)。
首次安装:
npx msdevflow setup后续升级无需卸载旧版本,显式使用 @latest 获取 npm 上的最新版:
npx msdevflow@latest setupsetup 是幂等的:内容一致时保持 current,内容不同时原子更新。
setup 默认检测 PATH 中的 Claude Code、Codex 和 OpenCode,展示完整计划并在确认后:
- 把一个
msd核心和十个msd-<action>路由器作为整套事务原子安装或更新到所需目标; - 安装或升级官方
@gitcode-cli/cli@latest; - 创建或修复 msdevflow 受管 Python venv,并在其中安装受审的 Playwright 依赖;
- 验收 Issue、PR、开放里程碑分页、Issue/PR 里程碑关联、结构化评论、行内评论、JSON、显式仓库和正文文件等 CLI 能力;
- GitCode CLI 未认证时打开官方 Token 创建页面,并让 CLI 自己的终端提示接收 Token。
显式选择客户端或只读预检:
npx msdevflow setup --targets claude
npx msdevflow setup --targets codex,opencode
npx msdevflow setup --targets all
npx msdevflow setup --dry-run --targets all安装目录映射:
Claude Code -> ~/.claude/skills/{msd,msd-*}
Codex -> ~/.agents/skills/{msd,msd-*}
仅 OpenCode -> ~/.agents/skills/{msd,msd-*}
OpenCode + Claude Code -> 复用 Claude 目标
OpenCode + Codex -> 复用 Agent Skills 目标
Claude Code + Codex -> 两套受管副本
三者同时安装 -> 两套受管副本,并提示 OpenCode 双路径发现每个物理目标都包含完整套件,薄路由器不复制核心业务规则。已有 entry 只有在 manifest 精确匹配自身名称时才允许更新;由旧版包管理的 msdevflow 目录会在新套件全部验证后安全迁移,来源不明的目录、文件或符号链接会阻断安装。
WSL 与 Windows Agent
setup 以 Agent 可执行文件实际所在环境 决定安装侧,而不是只看命令从哪个 shell 发起:
- Agent 只安装在 Windows:可以从 WSL 调用 Windows
npx.cmd,setup 会标记Runtime mode: windows-bridge-from-wsl,并把 Skill、Python venv 和 GitCode CLI 安装在 Windows 用户环境。 - Agent 只安装在 WSL:必须使用 WSL 内的 Linux Node.js/npm;若误用了 Windows Node,setup 会在写入任何 Python、npm 或 Skill 文件前停止。
- 同名 Agent 同时存在于 Windows 与 WSL:setup 不猜目标;请从目标环境的终端重新运行。
准备 WSL 原生 Agent 时先确认以下命令全部解析为 Linux 路径,而不是 /mnt/<drive>/... 或 .cmd:
type -a node npm npx opencode
npx msdevflow@latest setup示例使用 OpenCode;使用 Claude Code 或 Codex 时把 opencode 替换为实际 Agent 命令。
Windows bridge 模式应从 WSL 中解析到 Windows Agent;也可直接在 Windows Terminal/PowerShell 中运行 setup。此前失败后可直接重跑,setup 会安全复用或修复带受管 marker 的 runtime,不需要手动删除。
自定义目录:
npx msdevflow setup --skills-dir "<claude-skills-directory>"
npx msdevflow setup --agents-skills-dir "<shared-agent-skills-directory>"--skills-dir 未配合 --targets 使用时保留旧语义,只安装 Claude Code 目标。没有检测到客户端时,交互运行会要求选择目标;非交互运行必须提供 --targets。安装完成后重启或重新加载对应客户端。如果机器已有 Python 版本的 gitcode,setup 会保留它,并为 npm CLI 创建 gitcode-npm 命令;否则使用 gitcode。
setup 在所有平台使用独立受管 venv,不向系统 Python 安装包:
Windows: %LOCALAPPDATA%\msdevflow\python
macOS/Linux: ${XDG_DATA_HOME:-$HOME/.local/share}/msdevflow/python可用 MSDEVFLOW_PYTHON_DIR 覆盖,值必须是绝对路径或以 ~ 开头;setup 与后续 action 必须使用同一配置。venv 属于 CPython 标准库,但精简发行版可能未安装;Debian/Ubuntu 通常需要用户自行安装 python3-venv。setup 不执行 sudo,不回退到全局 pip,也不使用 --break-system-packages。Windows 官方 Python 和 Homebrew Python 通常已包含 venv。
运行与 action 补全
从目标仓库目录启动客户端。直接调用核心 msd 会运行完整作者 E2E:
- Claude Code:输入并提交
/msd; - Codex:使用
$msd或从/skills选择; - OpenCode:打开
/skills,选择msd,再提交插入的/msd。@用于文件、reference 或 agent,不用于选择 Skill。
核心流程为:
Issue 发现/核验
-> 需求分析与方案确认
-> 建分支、开发、本地验证
-> commit、push、创建普通 PR
-> 当前 head 的 CI 通过
-> 等待外部 reviewer
-> 处理 feedback 并重新通过 CI(可重复)
-> 独立审批门禁满足
-> 用户确认当前 PR 的最终合入
-> 远端回读 PR 已 merged调用正文可提供 Issue/PR URL、仓库路径、canonical、source 和模式。核心 msd 不显示运行时 Question 菜单;完整 E2E 在 pr-open 后不再询问是否继续,直接进入 ci。
这是可暂停、可恢复的流程。外部检视或审批有新进展后,可再次提交 /msd 和 PR 信息:
恢复 https://gitcode.com/<canonical-owner>/<repo>/pulls/<number> 的完整作者 E2E。
本地仓库:<local-repository-absolute-path>
canonical:<canonical-owner>/<repo>
source:<your-account>/<repo>
使用 guided 模式,从权威远端和本地事实定位当前位置并继续。独立 action
Claude Code/OpenCode 输入 /msd-、Codex 输入 $msd- 即可筛选十个独立入口。每个入口只运行对应 action,完成后立即停止;前置条件不足时不会隐式补跑上游流程。/msd action=<name> 和 $msd action=<name> 仍是兼容调用,但参数本身不提供跨客户端枚举补全。
| action | 用途 | 完成状态或结果 |
|---|---|---|
| discover | 只读发现当前账号负责的候选 Issue | 列出候选和排除证据 |
| create-issue | 按模板创建 Issue,并确定性选择开放里程碑 | issue-created(仓库存在 triaged 时一并追加) |
| issue | 接取并核验指定 Issue | verified |
| develop | 分析、设计、实现和本地验证 | locally-verified |
| pr | commit、push、创建普通 PR并继承 Issue 里程碑,随后触发并监控 CI | ci-passed |
| ci | 探测 CI 适配器,监控、诊断并修复当前 PR 的 CI | ci-passed |
| openlibing-auth | 验证 GitCode → openLiBing OAuth | openlibing-authenticated |
| feedback | 处理自己 PR 收到的检视意见 | feedback-resolved 或 waiting-for-review |
| code-review | 独立检视他人的 PR | review-findings、review-passed 或 review-incomplete |
| merge | 核验门禁并在最终确认后合入 | merged、waiting 或 blocked |
示例:
/msd-create-issue
在 Ascend/example 提一个 bug:升级后首次启动失败……
使用 guided 模式,确认完整预览后再创建。/msd-ci
PR:https://gitcode.com/Ascend/example/pulls/456
本地仓库:D:\work\example/msd-code-review
PR:https://gitcode.com/Ascend/example/pulls/789code-review 只能检视其他作者的 PR。发现问题时只发布高置信度、可操作的 finding;完整检视未发现问题且没有有效未解决意见时,经用户针对当前 PR/head 明确确认后,只评论并回读精确的 /lgtm,不发布检视摘要或其他前置评论。它不发送 /approve 或 /merge,也不修改作者代码。
PR 与检视规则
- 创建普通 PR,不创建 Draft PR,也不执行 Ready;
create-issue只在开放里程碑唯一时自动选择,多个时由用户选择,没有时明确为none,不会创建或猜测里程碑;pr继承已核验目标 Issue 的里程碑,并在远端写后回读确认;- 完整 E2E 在
pr-open后无需确认直接进入ci,独立praction 同样在创建 PR 后触发并监控 CI,两者到此为止行为一致; - 不主动请求检视,不触发检视机器人;
- 作者流程不会调用
code-review,也不会自行制造 LGTM/approve; - CI、review 和 merge 结论始终绑定当前 PR head SHA;
- 最终 merge 无论运行模式如何,都需要用户针对当前 PR 明确确认。
CI 适配器
ci 和 pr 的 CI 阶段先用 gitcode_verify.py detect-ci 做只读探测,再选择适配器:
openlibing:按 openLiBing 机器人评论中与当前 head 匹配的commitID定位 run;actions:按 run detail 的pull_request_id绑定 PR,并取该 PR 的最新run_number/attempt;hybrid:两类证据同时存在,两条路径都必须通过才算 CI 通过;unknown:证据不足时阻断并报告缺失项,不猜测。
探测和监控全程只读:空列表或 403 不证明仓库不支持 Actions,可查询也不代表可触发或重跑,因此不会用试跑流水线来探测权限,也不会自动修改仓库 workflow、runner 或密钥。Actions 运行中的 INIT、QUEUED、RUNNING 属于正常中间态,会继续等待而不是判定失败。触发评论(如 compile)先发送带尾签的说明评论,再单独发送精确 payload,两次写入都按写前评论集合和写后唯一 ID 校验,避免把历史同名评论当成本次触发。
中文和远端写入
Agent 写入的 PR/Issue 正文、评论和 discussion 回复末尾会附加:
——msdevflow所有人类可读远端文本通过 UTF-8 安全通道写入,并从 GitCode 逐字回读。中文变成 ?、出现乱码、截断或尾签损坏时,流程会停止并优先原地修复。
compile、/lgtm、/merge 等严格机器协议保持原样,不附加尾签。
安全边界
msdevflow:
- 不读取、打印或转存 GitCode Token;
- Token 只粘贴到 GitCode CLI 自己的终端提示,不放入 Agent 对话、命令参数、项目文件、URL 或日志;
- openLiBing Token 只在当前 Python 认证进程内短暂使用,不输出、不落盘;
- 永远不会自动下载 Playwright Chromium;
- 优先使用系统 Chrome/Edge,其次使用已经安装的 Playwright Chromium;
- 浏览器不可用时只返回可复制的 OAuth URL,并标记验证未完成;
- 不跳过 hooks、测试、CI、review 或 approval;
- 不为了启用 CI 自动迁移或修改仓库的 workflow、runner、权限或密钥;
- 不默认 force push、重写共享历史、关闭 Issue或删除分支;
- 所有远端写都显式指定目标仓库,并在结果不确定时先回读而不是盲目重试。
常见阻塞
客户端找不到 msd 或 msd-<action>
按目标确认核心和相应路由器的 manifest 都存在,然后重启或重新加载客户端:
Claude Code: ~/.claude/skills/msd/SKILL.md
~/.claude/skills/msd-<action>/SKILL.md
Codex: ~/.agents/skills/msd/SKILL.md
~/.agents/skills/msd-<action>/SKILL.md
OpenCode: 上述任一路径(按 setup 计划)Claude Code/OpenCode 可输入 /msd- 筛选 action;Codex 使用 $msd-。可运行 npx msdevflow setup --dry-run --targets <clients> 检查目标映射。
blocked: bootstrap-required
重新运行:
npx msdevflow setupGitCode 尚未登录
使用 setup 选定的命令:
<gitcode-command> auth login --web
<gitcode-command> auth status --json用户在官方页面创建 Token,并只粘贴到 GitCode CLI 自己的终端提示;不要把 Token 交给 Agent 或放入命令参数、项目文件、URL 或日志。
blocked: browser-required
安装或修复系统 Chrome/Edge 后恢复原流程。不要运行 playwright install chromium 作为默认解决方案。
waiting-for-review
这是作者流程等待独立 reviewer 的正常状态。检视意见或审批状态变化后,使用 PR URL 恢复完整 E2E。
详细文档
完整 action、恢复、模板、CI、review、UTF-8 和安全契约见 skill/msd/README.md。
