SuperAPI AI 工具集

pull-request-msg-with-gh

编程与开发

查看项目

更新于 10-16 01:10

技能介绍

用途:根据当前会话的工作内容生成 PR_MESSAGE.md 文件,汇总本次改动并形成结构化 PR 描述。需要已安装并完成认证的 gh CLI,且指向目标仓库。

前置检查:运行 gh --version 2>/dev/null && gh auth status 2>/dev/null。若 gh 未安装则停止并提示从 https://cli.github.com 安装,说明 gh 不能通过 npm 安装,安装后运行 gh auth login 认证;未就绪不得继续。

工作流程:分析会话上下文,用 git diff 和 git status 查看改动文件并结合对话历史;检测 issue 编号;确定提交类型(类型列表见 references/pr-message-format.md);按该格式写 PR_MESSAGE.md;若 .gitignore 中尚无该文件则加入;最后校验。

issue 检测:必须通过搜索 GitHub 确定,不能从分支名提取数字。先取分支名 BRANCH=$(git branch --show-current),再剥离前导数字与连字符得到关键词,例如 125-greenops-equivalencies 变为 greenops equivalencies,然后执行 gh issue list --search "$KEYWORDS" --state all --json number,title --limit 5。仅 1 条且标题含多数关键词则采用;0 条则询问用户;2 条及以上列出让用户选择;匹配含糊需用户确认。不得从分支名数字、spec 目录名或 worktree 目录名提取 issue 编号。

关键规则:摘要不得与提交主题重复;不设 ## Commit Message 段,首行即提交信息;不得修改 .markdownlint.json,改用命令行参数;文件末尾保留单个换行;结果含糊时询问用户。

校验:若上下文中有 commitlint 与 markdownlint 技能则用其校验,否则直接运行 cat PR_MESSAGE.md | npx commitlint 和 npx markdownlint --disable MD041 -- PR_MESSAGE.md。两者都不可用时须明确失败并提示安装 commitlint(npm install -g @commitlint/cli @commitlint/config-conventional)与 markdownlint(npm install -g markdownlint-cli),不得静默跳过校验。修复问题后重新校验再报告成功。