SuperAPI AI 工具集

devtu-github

部署与运维

查看项目

更新于 10-15 14:26

技能介绍

用途

DevTU GitHub 是 ToolUniverse 项目专用的 GitHub 工作流技能。它的目标是在把 ToolUniverse 代码推送到 GitHub 时,通过强制执行推送前清理、pre-commit 钩子和测试验证,确保提交安全、干净、无冲突。当用户想要推送代码、修复 CI 或准备一次提交时,应遵循此工作流。

主要能力

该技能将推送流程划分为四个阶段:

阶段一:推送前清理 将临时文件移出根目录。会话文档和临时测试脚本不应被推送。具体做法包括:把根目录下除 README.md、CHANGELOG.md、LICENSE.md 之外的 .md 文件移动到 temp_docs_and_tests/;把根目录下的 test_.py 脚本移动到 temp_docs_and_tests/。随后用 git status --short 检查暂存区,识别不应被暂存的文件(如 _SUMMARY.md、REPORT.md、SESSION.md、根目录 test_*.py、.env 或凭据文件、temp_docs_and_tests/ 内容)。

阶段二:激活 Pre-Commit 钩子 运行 pre-commit install 启用每次提交时的自动检查,包括 ruff check --fix(Python lint 自动修复)、ruff format(代码格式化)、YAML/TOML 校验、行尾空白移除、文件末尾修复。可用 ls -la .git/hooks/pre-commit 验证钩子是否激活。

阶段三:运行测试 在本地运行完整测试套件:python -m pytest tests/ -x --tb=short -q。若测试失败,按文中给出的错误模式诊断并修复后再继续。

阶段四:提交并推送 只暂存特定文件(绝不使用 git add . 或 git add -A),提交时 pre-commit 钩子自动运行。推送前必须先 rebase 到最新 main(关键步骤,防止 PR 冲突):git fetch origin、git stash、git rebase origin/main、git stash pop。若出现冲突,解决后 git add 冲突文件并 git rebase --continue。推送使用 git push --force-with-lease origin <branch-name>。推送后用 gh pr view <PR-number> --json mergeable,mergeStateStatus 验证 PR 无冲突,应显示 "mergeable":"MERGEABLE"。

绝不应推送的文件

  • 临时会话文档(根目录 .md):_SUMMARY.md、REPORT.md、SESSION.md、IMPLEMENTATION_.md、BUG_ANALYSIS_.md、FIX_.md、AGENT_*.md。例外:README.md、CHANGELOG.md、LICENSE.md 是真实文档,必须保留。
  • 根目录测试脚本:test_*.py 属于临时脚本,不属于 tests/ 目录中的正式测试套件。
  • 其他排除项:.env(含密钥的环境变量)、temp_docs_and_tests/(已在 .gitignore 中)、.claude/、pycache/、*.pyc、.DS_Store。

常见测试失败模式

  • KeyError: 'role':访问消息字典时出现。修复:在 tu.run() 中添加 return_message=True 并使用 .get()。
  • Mock 不可下标:TypeError: 'Mock' object is not subscriptable。修复:为 all_tool_dict 使用真实字典并添加 _get_tool_instance。
  • Lint 错误(F841、E731):F841 未使用变量用 _ 前缀或 _ = func();E731 lambda 赋值改为 def。
  • 临时文件被 Git 跟踪:用 git rm -r --cached temp_docs_and_tests/ 和 git rm --cached <file> 后提交移除。

Pre-Commit 钩子配置

项目使用 .pre-commit-config.yaml,包含 pre-commit/pre-commit-hooks(end-of-file-fixer、trailing-whitespace、check-yaml、check-toml)和 astral-sh/ruff-pre-commit(ruff-check --fix、ruff-format)。作用范围仅限匹配 ^(ToolUniverse/)?src/tooluniverse/ 的文件。

使用方式与快速参考

  • 激活钩子:pre-commit install
  • 运行全部测试:pytest tests/ -x --tb=short -q
  • 运行特定测试:pytest tests/path/test.py::Class::method -xvs
  • 检查暂存文件:git status --short
  • 取消暂存:git restore --staged <file>
  • 移除跟踪:git rm --cached <file>
  • 手动运行钩子:pre-commit run --all-files

推送前检查清单

每次推送前需确认:临时 markdown 文件已从根目录移走;根目录 test_*.py 已移走;pre-commit 钩子已安装;本地测试全部通过;无 lint 错误;只暂存相关文件(无 .env、无临时文件);提交信息清晰;分支选择正确。

提交规范

提交中不得包含 AI 署名;不得提交会话文档 markdown;使用 git add <specific-files> 而非 git add .;编写干净专业的提交信息;每次提交只做一个逻辑变更。

适用场景与限制

该技能适用于 ToolUniverse 项目的代码推送、CI 修复和提交准备。它依赖项目特定的目录结构(src/tooluniverse/、tests/、temp_docs_and_tests/)和工具链(pre-commit、ruff、pytest、gh CLI)。对于其他项目或不同技术栈,其中的路径、命令和配置可能不适用。