Skip to main content

cnb-code-commit

编写代码、提交并创建 PR。

Ir a la instalación

Datos de origen

Repositorio
locusyuri/scoop-violet
Última actividad en el origen
12 de agosto de 2026 a las 13:53
Idioma detectado de SKILL.md
chino
Estrellas
1
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
cnb-code-commit
description
编写代码、提交并创建 PR。
# 自动编码并提交推送 根据用户需求选择: 1. 新建分支 -> 编写代码 -> 推送代码 -> 并创建 PR 2. 切换到 PR 源分支 -> 编写代码 -> 推送代码更新 PR ## 步骤 ### 1. 理解需求 分析用户输入,明确要修改的文件、功能/Bug 描述、目标分支(PR 的 base)。 如需了解项目结构,直接在当前工作区读取代码。如需了解 PR 变更,可使用 cnb-pr-diff Skill。 ### 2. 判断场景并准备分支 根据触发场景切换到正确的工作分支: - **PR 评论触发**(`CNB_PULL_REQUEST_IID` 存在):在此分支上继续修改 ```bash git checkout "$CNB_PULL_REQUEST_BRANCH" git pull origin "$CNB_PULL_REQUEST_BRANCH" ``` - **ISSUE 评论触发** PR 已存在,则切换到 PR 源分支继续开发 ```bash git checkout <PR 源分支名> && git pull ``` - **ISSUE 评论触发** PR 不存在,则基于目标分支创建新分支 `auto/{关键词1}-{关键词2}-{4位随机后缀}` ```bash git checkout -b auto/{关键词1}-{关键词2}-$(openssl rand -hex 2) ``` > ⚠️ **分支命名精简规则**: > - `{关键词}`:从 ISSUE 标题/描述中提取 **2 个核心关键词**(名词或动词),用短横线连接,每个关键词不超过 2 个英文单词 > - `{随机后缀}`:固定 4 位十六进制,用 `$(openssl rand -hex 2)` 生成 > - **总长度控制**:分支名 `auto/` 之后的部分不超过 20 个字符 > - **示例**:`auto/optimize-skill-3a7f`、`auto/login-error-b2c1` ### 3. 编写代码 直接在工作区中读取和修改文件,实现代码变更。遵循项目已有的代码风格,确保 import/依赖完整。 **生成/修改 `.cnb.yml` 时的特殊处理**: - 优先加载 `cnb-pipeline` skill 的 SKILL.md,参照其中的语法文档和校验方式生成并验证配置 - 生成完成后需通过 cnb-pipeline skill 提供的校验方式验证,校验通过后才能提交;校验失败则修复后重新校验 ### 4. 验证与提交 ```bash # 查看变更概览 git diff --stat # 如有构建/lint 命令则执行验证 # 暂存并提交 git add -A git commit -m "{类型}: {简短描述}" ``` 类型:`feat`(新功能) / `fix`(修复) / `refactor`(重构) / `docs`(文档) / `chore`(其他) ### 5. 推送变更并判断是否需要创建 PR ```bash # 推送当前分支 git push origin HEAD ``` 根据推送输出判断是否已有 PR: - **已有 PR**(输出包含 `There is already has pull request`):跳过创建 PR,直接在评论中告知用户 - **无 PR**(输出包含 `Create a pull request` 或 `new branch`):走第 6 步创建 PR > ⚠️ 只有新建分支且推送后确认无 PR 时,才执行第 6 步。 **示例 1 — 已有 PR,跳过创建:** ``` $ git push origin HEAD remote: remote: There is already has pull request for 'fix/optimize-cnb-code-commit-skill' by visiting: remote: remote: https://cnb.cool/cnb/skills/cnb-skill/-/pulls/140 remote: To https://cnb.cool/cnb/skills/cnb-skill.git e3d8f95..639bd55 HEAD -> fix/optimize-cnb-code-commit-skill # 输出包含 "There is already has pull request" → 已有 PR,不再创建 # 在评论中告知用户:PR 已存在,代码已推送到 PR #140 ``` **示例 2 — 无 PR,需要创建:** ``` $ git push origin HEAD remote: remote: Create a pull request for 'fix/optimize-cnb-code-commit-skill' to 'main' by visiting: remote: remote: https://cnb.cool/cnb/skills/cnb-skill/-/compare/main...fix/optimize-cnb-code-commit-skill remote: To https://cnb.cool/cnb/skills/cnb-skill.git * [new branch] fix/optimize-cnb-code-commit-skill -> fix/optimize-cnb-code-commit-skill # 输出包含 "Create a pull request" → 无 PR,需要走第 6 步创建 ``` ### 6. 创建 PR ```bash # 创建 PR, 仅推送后确认无 PR 时执行 cnb pulls post-pull --repo "$CNB_REPO_SLUG" \ --base "$CNB_DEFAULT_BRANCH" \ --head "$(git branch --show-current)" \ --title "{类型}: {简短描述}" \ --body '<pr-body>' ``` ## 注意事项 - 编码前先理解项目结构和代码风格 - 需求不明确或范围过大时,先在评论中确认再执行 - 不修改无关文件,推送前确认变更正确 - 生成/修改 `.cnb.yml` 文件时需使用 cnb-pipeline skill 技能 - 若任务由 Issue 发起,PR body 末尾必须追加 `Ref #<CNB_ISSUE_IID>` (如 `Ref #11`) —— 遗漏会导致 Issue 中看不到关联的 PR; - `pr-body` 使用单引号包裹传参,可减少不必要的 shell 转义,比如:可直接用**真换行**拼接,而不是 `\n` 字面量。 ## 禁止的操作 - ❌ PR 不存在时,禁止在默认分支上修改代码,需新建分支并创建 PR - ❌ `git push --force`(不要强制推送,除非用户明确要求;如需覆盖可用 `--force-with-lease`) - ❌ 推送代码后轮询/等待 CI 状态(CI 失败会自动唤起 NPC,无需主动等待)
Ver en GitHub