关于 code-quality
面向 Python 项目的代码质量技能,可运行 Ruff 和 Mypy 检查,并按需执行 pytest、自动修复和代码简化。默认检查近期修改的文件,也可检查 synapse/ 中的全部文件。
主要功能
- 01Ruff 代码检查
- 02Mypy 类型检查
- 03可选运行 pytest
- 04Ruff 自动修复
- 05可选代码简化
适用场景
- 01检查近期修改的 Python 文件
- 02检查 synapse/ 中的全部文件
- 03自动修复 Ruff 问题
- 04通过检查后运行测试
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ s-hiraoku/ synapse-a2a --skill code-quality安装后在 Claude Code 中输入/code-quality确认已加载。
详细介绍
代码质量检查
此技能会运行代码质量工具(ruff、mypy、pytest),并可选择简化代码。
用法
/code-quality [options]
选项
--all或-a:检查synapse/中的所有文件(默认:仅检查最近修改的文件)--no-simplify:跳过 code-simplifier Agent(默认情况下,检查通过后会运行 code-simplifier)--fix或-f:使用--fix标志自动修复 ruff 问题--test或-t:lint 检查通过后运行 pytest--full:运行所有检查,包括测试(等同于--fix --test)
工作流
第 1 步:确定目标文件
如果提供了 --all 标志:
- 目标为
synapse/目录中的所有文件
否则:
- 运行
git diff --name-only HEAD~1获取最近修改的文件 - 筛选出
synapse/或tests/中的.py文件
第 2 步:运行 Ruff Linter
ruff check [files]
如果提供了 --fix 标志:
ruff check --fix [files]
报告发现的任何错误。如果修复后仍有错误,则停止并报告。
第 3 步:运行 Mypy 类型检查器
uv run mypy [files]
报告发现的任何类型错误。如果存在错误,则停止并报告。
第 4 步:运行测试(如果使用 --test 或 --full)
如果提供了 --test 或 --full 标志,且 ruff/mypy 检查通过:
pytest
要运行与修改文件相关的特定测试:
pytest tests/ -v
报告任何测试失败。
第 5 步:运行 Code Simplifier(默认)
默认情况下,所有检查通过后运行 code-simplifier。使用 --no-simplify 标志跳过。
使用 code-simplifier:code-simplifier Agent 简化最近修改的代码:
Task tool with subagent_type: code-simplifier:code-simplifier
Prompt: Simplify and refine the recently modified code in [files].
Look for opportunities to reduce duplication, simplify conditionals,
and improve readability while maintaining all functionality.
第 6 步:报告结果
总结:
- 检查的文件数量
- Ruff 状态(通过/失败;如果使用
--fix,报告修复的错误) - Mypy 状态(通过/失败)
- Pytest 状态(通过/失败;如果未运行则注明跳过)
- Code simplifier 状态(默认运行;如果使用
--no-simplify则注明跳过)
错误处理
发现错误时:
- Ruff 错误:如果提供了
--fix,先尝试自动修复。按 file:line 格式报告剩余错误。 - Mypy 错误:按 file:line 格式报告类型错误,并根据错误消息提出修复建议。
- 测试失败:报告失败的测试名称和断言错误。如果测试失败,切勿继续进行代码简化。
示例
检查最近修改的内容
/code-quality
自动修复并检查所有文件
/code-quality --all --fix
执行包含测试的完整质量检查
/code-quality --full
仅运行测试
/code-quality --test
跳过代码简化
/code-quality --no-simplify
简写
/lint # Same as /code-quality (includes simplification)
/check # Same as /code-quality
/lint -a -f # All files with auto-fix
/lint -t # With tests
/lint --full # Full check (--fix --test)
/lint --no-simplify # Skip simplification
工具配置
此项目使用以下配置(来自 pyproject.toml):
Ruff
- 目标版本:Python 3.10
- 行长度:88
- 规则:E、F、I、UP、B、SIM
- 忽略:E501、B008
- 排除:synapse/proto/a2a_pb2*.py
Mypy
- 严格模式,启用 disallow_untyped_defs
- 测试使用宽松规则(ignore_errors)
- 排除 Proto 文件
Pytest
- asyncio_mode:auto
- 运行方式:
pytest或pytest tests/ -v
评论
支持 Markdown