yeet:OpenAI 官方 Skill,一句话跑完 stage → commit → push → 开 PR

前言

改完代码、跑完测试,接下来往往是一串固定动作:git addgit commitgit push,再打开浏览器或终端用 gh pr create 填标题和描述。步骤本身不难,但在 AI 辅助编程场景里,Agent 帮你改完文件后,你还得再口述一遍「帮我提交并开个 PR」——中间任何一步漏掉、PR 描述写得太泛、或者分支上已经有 PR 却又重复创建,都会打断节奏。

yeet 是 OpenAI 在 openai/skills 仓库 .curated 目录下维护的一个 Agent Skill。名字来自网络梗(大意是「一把扔出去」),功能却很落地:当你明确要求走完整 Git 发布流程时,Agent 按 SKILL.md 里的步骤,借助 GitHub CLI(gh)依次完成暂存、提交、推送,并创建或更新 Pull Request。它属于通用的 SKILL.md 格式,可在 Codex、Cursor、Claude Code 等支持 Agent Skills 的工具中使用。

yeet 是什么

yeet 的定位可以概括为一句话:

仅在用户明确要求时,使用 GitHub CLI(gh)一次性完成 stage、commit、push 并打开 GitHub Pull Request。

来源与归属:

  • 维护方:OpenAI,收录于官方技能目录 skills/.curated/yeet
  • 官方地址:https://github.com/openai/skills/tree/main/skills/.curated/yeet
  • 许可:Apache License 2.0(见目录内 LICENSE.txt
  • 格式:标准 SKILL.md,含 YAML frontmatter(namedescription)与 Markdown 正文指令

需要说明的是,openai/skills 仓库首页已标注为 deprecated,后续 Codex 插件体系会迁移至 openai/plugins;但 yeet 的 SKILL.md 原文仍可访问,JetBrains 等生态也有同名 Skill 的镜像引用。本文以 OpenAI 官方 curated 版本为准。

核心功能与亮点

根据官方 SKILL.md,yeet 覆盖的能力可以分几块来看:

1. 完整 Git 发布链路

Agent 会按顺序执行:

  1. 确认当前分支;若在 main / master 或仓库默认分支上,先 git checkout -b "{description}" 建新分支
  2. git status -sb 查看状态,再 git add -A 暂存全部变更
  3. git commit -m "{description}" 用简短描述提交
  4. 若尚未跑过检查,执行项目检查;因缺依赖失败时,安装依赖并重试一次
  5. git push -u origin $(git branch --show-current) 推送并设置上游
  6. gh 创建或更新 PR,并修正标题与正文

2. 智能 PR 模板感知

2026 年 5 月,OpenAI 对 yeet 做过一次重要更新(commit 590b49e),使其模板感知分支感知。创建 PR 前,Agent 会从仓库根目录按优先级查找模板:

  • .github/pull_request_template.md
  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/pull_request_template/ 下的 *.md
  • .github/PULL_REQUEST_TEMPLATE/ 下的 *.md

若找到唯一模板,读取后通过 gh pr create --template 套用;若多个模板并存,会停下来询问用户选哪一个;没有模板时,使用 Skill 内置的 fallback 结构(Why / What Changed)。

3. 避免重复 PR,保留审查状态

推送后会检查当前分支是否已有 PR:

gh pr view "$(git branch --show-current)" --json number,isDraft,url
  • 已有 PR:原地更新标题和描述,不会再建一条,也不会改变现有 PR 的 draft / ready-for-review 状态
  • 尚无 PR:创建草稿 PR--draft),后续再编辑标题与正文

这一点对「同一分支多次 push、持续迭代」的场景很实用。

4. 规范的 PR 标题与正文

Skill 内嵌了 Conventional Commits 风格的 PR 标题指引,例如:

feat: add hat wobble
^--^  ^------------^
|     |
|     +-> 现在时态的摘要
|
+-------> 类型:chore, docs, feat, fix, refactor, style, test

PR 正文强调先写 Why(动机与影响),再写 What Changed(净变更)。若仓库模板要求 Verification 章节,只在有真实行为证据时填写,避免用「跑了 lint / 测试通过」之类空泛内容凑数。

5. 名字够梗,门槛够低

相比需要理解 MCP、浏览器自动化或部署平台的 Skill,yeet 只依赖 gitgh——几乎每个 GitHub 开发者本机都有。名字 memorable,触发方式也清晰(见下文注意事项),属于「装完就想试」的类型。

前置条件

yeet 启动前,Skill 要求 Agent 先验证两件事:

1. 已安装 GitHub CLI

gh --version

未安装则提示用户安装 GitHub CLI 并停止。

2. 已完成 gh 认证

gh auth status

未登录则提示运行 gh auth login,并重新检查状态。

此外,当前目录必须是 Git 仓库,且 remote 指向 GitHub(PR 流程依赖 gh)。

安装与启用

在 OpenAI Codex 中

根据 openai/skills README,curated 技能可通过内置安装器按名称安装:

$skill-installer yeet

也可指定 GitHub 目录 URL:

$skill-installer install https://github.com/openai/skills/tree/main/skills/.curated/yeet

安装后需重启 Codex 才能加载新 Skill。.system 目录下的系统技能在最新版 Codex 中会自动安装;curated 技能需手动安装。

在 Cursor 中

Cursor 会从以下路径自动发现 Skill(项目级或全局均可):

路径 作用域
.cursor/skills/ 项目级,可提交到仓库共享给团队
~/.cursor/skills/ 用户级,跨项目可用
.agents/skills/ 项目级,多 Agent 工具通用

手动安装 yeet 的步骤:

mkdir -p .cursor/skills/yeet
curl -L -o .cursor/skills/yeet/SKILL.md \
  https://raw.githubusercontent.com/openai/skills/main/skills/.curated/yeet/SKILL.md

目录名 yeet 需与 SKILL.md frontmatter 里的 name: "yeet" 一致。保存后重启 Cursor 或重新打开工作区,Agent 即可在对话中识别该 Skill。

在 Claude Code 等其他工具中

Claude Code 等工具通常支持将 Skill 目录放入 .claude/skills/ 或用户级 ~/.claude/skills/。Cursor 文档亦说明会兼容加载 .claude/skills/.codex/skills/ 等路径。具体目录以各工具官方文档为准;核心都是「一个文件夹 + 一份 SKILL.md」。

典型用法示例

yeet 不会在 Agent 改完代码后自动触发。官方 description 写得很明确:「Use only when the user explicitly asks…」。因此你需要在对话里明确说出完整意图,例如:

帮我把当前改动 stage、commit、push,并开一个 GitHub PR,描述是 fix login redirect loop

或更口语化:

yeet 一下,commit message 用 feat: add retry for API timeout

Agent 读取 yeet Skill 后,大致会执行类似下面的命令序列({description} 由你的描述替换):

# 若在默认分支上,先建分支
git checkout -b "fix-login-redirect-loop"

git status -sb
git add -A
git commit -m "fix login redirect loop"

git push -u origin $(git branch --show-current)

# 无已有 PR 时,创建草稿 PR(有模板则加 --template)
GH_PROMPT_DISABLED=1 GIT_TERMINAL_PROMPT=0 \
  gh pr create --draft --fill \
  --head "$(git branch --show-current)"

# 将正文写入临时文件(真实换行),再编辑 PR
gh pr edit --body-file /tmp/pr-body.md

若当前分支已经有 PR,Agent 会走更新路径,而不是 --draft 新建:

gh pr view "$(git branch --show-current)" --json number --jq '.number'
gh pr edit <number> --title "fix: login redirect loop" --body-file /tmp/pr-body.md

命名约定

官方 curated 版本的分支、提交、PR 标题默认都围绕 {description} 展开:

对象 规则
分支名 从默认分支切出时用 {description}
Commit message 简短 {description}
PR 标题 概括完整 diff;推荐 type(scope): summary 格式

社区镜像(如 JetBrains/skills 中的 yeet)可能使用 codex/{description} 分支前缀或 [codex] PR 标题前缀——若你使用的是 fork 版本,以实际 SKILL.md 为准。

适用场景与注意事项

适合谁、什么场景:

  • 日常功能开发完,希望 Agent 一次性帮你提交并开 Draft PR,自己再去 GitHub 上改标题、加 reviewer
  • 团队仓库配置了 PR 模板,希望 Agent 按模板填 Why / What,而不是生成空泛描述
  • 同一 feature 分支上多次迭代,需要更新已有 PR 而非重复创建
  • 已在用 gh 管理 GitHub,希望把「最后一公里」也交给 Agent

需要注意的限制:

  1. 必须显式触发——Agent 不会在你没要求时擅自 commit 或 push(这与许多项目的安全规范一致)。
  2. git add -A 暂存全部变更——若有不想提交的文件,先自行 .gitignore 或手动调整,再让 Agent 执行 yeet。
  3. 新 PR 默认为 Draft——方便你最后审一遍 diff;已有 PR 不会被改回 Draft。
  4. 依赖 gh 与 GitHub——GitLab、Gitee 等平台不适用。
  5. openai/skills 仓库已 deprecated——长期维护可关注 OpenAI Plugins 文档;短期仍可直接拷贝 SKILL.md 使用。
  6. 推送失败时的重试——Skill 提到若因 workflow 认证错误导致 push 失败,会 pull 默认分支后重试;复杂冲突仍需人工介入。

小结

yeet 把开发者最高频的 Git 收尾动作——暂存、提交、推送、开 PR——封装成一份可复用的 Agent Skill 指令。它不替代 Code Review 或 CI,但能把「改完代码到 PR 出现在 GitHub 上」这段重复劳动标准化,还兼顾 PR 模板、已有 PR 更新、Conventional 标题等工程化细节。

若你已经在用 Cursor、Codex 或 Claude Code,不妨把官方 yeet 装进 .cursor/skills/(或对应目录),下次改完代码直接说一句「帮我把改动 yeet 出去」——剩下的交给 Agent 和 gh

官方 Skill 目录:https://github.com/openai/skills/tree/main/skills/.curated/yeet

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜