CANN/cannbot-skills GitCode工具包 【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skillsname: gitcode-toolkit description: GitCode 协作通用基础参考内部参考不直接触发。提供 GitCode API、Token 配置、URL 解析、日志规范、变更展示Git 克隆/分支/diff/log/remote 通用操作以及 PR 创建工作流API/模板/head 格式等等共享文档。供 gitcode-pr-handler、gitcode-issue-gen、gitcode-issue-handler 等 GitCode 协作类 skill 通过相对路径引用本目录下的 references/ 与本文档章节使用本 skill 自身不响应用户触发。 disable-model-invocation: true license: MITGitCode ToolkitGitCode 协作类 skill 的共享基础文档集合。定位内部参考不直接触发。其他 GitCode skillgitcode-pr-handler、gitcode-issue-gen、gitcode-issue-handler等按需引用本目录下的references/*.md与本文档「PR 创建工作流」章节无需在各自 skill 内重复实现。速查表环境预检Step 0所有 GitCode skill 必经按顺序检查token / git / curl //tmp/ 输出目录。任一失败立即 AskUserQuestion 询问一次只问一个。详见 references/env-check.md。Token 配置按优先级获取1) 用户请求中直接提供 → 2) 环境变量GITCODE_TOKEN→ 3) 询问用户。详见 references/token-config.md。URL 格式类型格式PR/pull/{n},/pulls/{n},/merge_requests/{n}Issue/issues/{n}详见 references/url-parsing.md。Git 操作核心命令# 克隆depth500 git clone --depth500 https://gitcode.com/{owner}/{repo}.git /tmp/{prefix}_{owner}_{repo}_{timestamp} # 检出 PR 分支 git fetch origin refs/merge-requests/{pr_number}/head:pr_{pr_number} git checkout pr_{pr_number} # Merge-base git fetch origin {base_ref}:base_branch MERGE_BASE$(git merge-base base_branch pr_{pr_number}) # Diffmerge-base 模式code-review、gitcode-pr-handler、gitcode-issue-gen git diff --numstat $MERGE_BASE pr_{pr_number} git diff --name-status $MERGE_BASE pr_{pr_number} # Difftriple-dot 模式pr-to-design-doc、PR 创建流程 git diff --numstat origin/${BASE_BRANCH}...HEAD # Log / Show git log -1 --prettyformat:%s git log --oneline origin/${BASE_BRANCH}..HEAD git show HEAD:path/to/file # Remote / Push git remote -v git ls-remote --heads origin ${branch} git push -u origin ${branch}更详细的操作手册见 references/clone-and-checkout.md、references/diff-and-changes.md、references/log-and-show.md、references/remote-and-branch.md、references/pitfalls.md。PR 创建工作流从 fork 仓库向上游cann组织仓库创建 Pull Request 的标准步骤作为gitcode-issue-handler等 skill 的 PR 创建子流程被引用。1. 获取信息 → 分支名、commit历史、目标仓库 2. 获取模板 → 从目标仓库获取 PR 模板 3. 分析填充 → 分析 commit 内容自动填充模板 4. 用户确认 → 展示填充后的模板等待用户确认/修改 5. 推送分支 → 确保分支已推送到 origin 6. 创建 PR → 调用 GitCode API 创建 PR 7. 记录日志 → 保存操作日志Step 1: 获取信息必需参数参数说明获取方式分支名源分支名称从当前 git 分支获取或用户指定commit 历史用于分析生成 PR 内容git log 获取变更文件列表用于推断模板字段git diff 获取默认配置配置项默认值说明上游仓库cann目标组织名称目标分支master上游仓库的目标分支用户仓库当前 git 配置从 git remote 获取1.1 检测 Remote 配置git remote -v自动识别逻辑上游仓库URL 中包含cann/的 remoteFork 仓库其他 remote非 cann 组织1.2 如果无法自动识别用 AskUserQuestion 让用户选择哪个是 fork 仓库。1.3 获取当前信息current_branch$(git branch --show-current) username$(git remote get-url ${fork_remote} | sed -E s|.*[:/](https://link.gitcode.com/i/61635d14e88b4013672c5053e45746fb)/[^/]\.git|\1|) repo$(git remote get-url ${fork_remote} | sed -E s|.*[:/][^/]/([^/])\.git|\1|) git log master..HEAD --prettyformat:%s --no-merges git diff master...HEAD --name-only git log master..HEAD --prettyformat:%s%n%b --no-mergesStep 2: 获取 PR 模板模板文件按优先级.gitcode/PULL_REQUEST_TEMPLATE.zh-CN.md.gitcode/PULL_REQUEST_TEMPLATE.mdPULL_REQUEST_TEMPLATE.mdgit show origin/master:.gitcode/PULL_REQUEST_TEMPLATE.zh-CN.md git show origin/master:.gitcode/PULL_REQUEST_TEMPLATE.md默认模板仓库无模板时使用## 描述 !--详细描述改动-- ## 关联的Issue !--Issue链接或问题单单号-- ## 测试 !--测试验证内容-- ## 文档更新 !--文档更新说明-- ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他Step 3: 分析并填充模板信息来源映射模板字段自动获取方式备选方案描述从 commit messages 汇总生成用户输入关联的Issue从 commit message 提取#数字或fix #数字用户输入测试检测 tests/ 目录变更提示用户填写用户输入文档更新检测 docs/、README.md 等文件变更用户输入类型标签从 PR 标题前缀推断用户选择类型标签推断规则标题前缀类型标签fix:Bug修复feat:新特性perf:性能优化docs:文档更新refactor:/test:/chore:其他分析脚本要点commits$(git log master..HEAD --prettyformat:%s --no-merges) issues$(git log master..HEAD --prettyformat:%s %b --no-merges | grep -oE #[0-9] | sort -u) test_files$(git diff master...HEAD --name-only | grep -E (tests?/|_test\.|_spec\.)) doc_files$(git diff master...HEAD --name-only | grep -E (docs?/|README|\.md$)) first_commit$(git log master..HEAD --prettyformat:%s --no-merges | head -1)Step 4: 用户确认用 AskUserQuestion 展示填充后的模板预览选项确认创建- 使用当前模板内容创建 PR修改模板- 用户手动编辑取消操作- 终止流程确认时展示PR 标题、源分支 → 目标分支、填充后的模板内容。Step 5: 推送分支git push -u origin ${branch_name} git ls-remote --heads origin ${branch_name}Step 6: 创建 PRAPIPOST https://api.gitcode.com/api/v5/repos/{upstream_owner}/{upstream_repo}/pulls参数类型说明access_tokenstringGitCode API TokentitlestringPR 标题bodystringPR 描述内容填充后的模板headstring源分支格式:{username}:{branch}basestring目标分支通常为mastercurl -X POST https://api.gitcode.com/api/v5/repos/${upstream_owner}/${upstream_repo}/pulls \ -H Content-Type: application/x-www-form-urlencoded \ -d access_token${token} \ -d title${pr_title} \ -d body${pr_body} \ -d head${username}:${branch_name} \ -d basemaster \ --connect-timeout 30head 参数格式从 fork 仓库向上游创建 PR 时head必须是{fork用户名}:{分支名}例如your-username:fix/xxx。当 fork 改过名时建议用更稳的{fork_owner}/{fork_repo}:{branch}格式。成功响应 (HTTP 201){ id: 8395063, iid: 1564, title: fix: 修复异构安装路径问题, state: opened, web_url: https://gitcode.com/cann/ops-math/merge_requests/1564, source_branch: fix/heterogeneous-install-path, target_branch: master }错误码处理详见 references/gitcode-api.md。Step 7: 记录日志日志文件命名logs/pr-create_{YYYYMMDD}_{HHMMSS}.log。日志格式详见 references/logging-conventions.md。常见问题Q1: PR 创建失败提示 head not found分支未推送到 origin先git push -u origin ${branch_name}。Q2: PR 创建失败提示 Another open merge request already exists该分支已有未合并 PR从 API 返回里取已有 PR 链接。Q3: 模板获取失败仓库无模板时退回默认模板见 Step 2。Q4: 查看已有 PRcurl https://api.gitcode.com/api/v5/repos/${upstream_owner}/${upstream_repo}/pulls?stateopenedsource_branch${branch_name}access_token${token}参考文档索引文档说明适用 skillreferences/env-check.mdStep 0 环境预检token / git / 临时目录 / 输出目录所有 GitCode skillreferences/gitcode-api.mdPR/Issue/仓库 API 错误处理 命令速查code-review, gitcode-pr-handler, gitcode-issue-gen, pr-compile, gitcode-issue-handlerreferences/url-parsing.mdURL 格式识别与解析PR/Issuecode-review, gitcode-pr-handler, gitcode-issue-gen, pr-to-design-doc, pr-compile, gitcode-issue-handlerreferences/token-config.mdToken 获取优先级所有 GitCode skillreferences/logging-conventions.md日志命名与记录规范所有 GitCode skillreferences/change-table-display.md变更文件列表展示格式code-review, gitcode-pr-handler, gitcode-issue-gen, pr-to-design-docreferences/clone-and-checkout.md克隆、浅克隆、PR 分支检出、base 分支确定、merge-basecode-review, gitcode-pr-handler, gitcode-issue-gen, pr-to-design-docreferences/diff-and-changes.mddiff 变更统计merge-base 模式 triple-dot 模式code-review, gitcode-pr-handler, gitcode-issue-gen, pr-to-design-doc, PR 创建流程references/log-and-show.mdgit log 元信息提取、git show 文件读取code-review, gitcode-pr-handler, gitcode-issue-gen, pr-to-design-doc, PR 创建流程references/remote-and-branch.mdremote 管理、分支查询、push、ls-remotePR 创建流程references/pitfalls.mdGit 操作易错点对照表所有使用 git 的 skill【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考