关于 python-conventions
为以 Python 为主的开发任务提供工具、依赖、检查和测试规范,适用于编码 Agent。还说明例外处理及混合语言任务的分流方式。
主要功能
- 01使用 uv 管理包
- 02统一运行、Lint 和格式化命令
- 03采用 ty 类型检查与 pytest 测试
- 04提供例外情况处理指引
- 05分流混合语言任务
适用场景
- 01规范 Python 项目工作流
- 02检查仓库工具使用是否合规
- 03处理与其他语言混合的任务
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ wyattowalsh/ agents --skill python-conventions安装后在 Claude Code 中输入/python-conventions确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/exceptions.mdlibrary-preferences.mdperformance-tips.mdredirection-boundaries.mdtesting-patterns.mdtooling-contract.mdscripts/check.pyscripts/asset_toolkit/__init__.py_shared.pycommon.pypackage.pyvalidate_evals.pyvalidate_hooks.pyvalidate_skill.py详细介绍
Python 约定
当 Python 是主要工作流时,遵循这些约定。
调度
| $ARGUMENTS | 操作 |
|---|---|
| Active(Python 是主要工作流时自动调用) | 应用下方的操作规范 |
| Empty | 显示约定摘要和路由指南 |
check | 仅验证工具合规性 |
参考文件索引
| 文件 | 用途 |
|---|---|
references/tooling-contract.md | 安装、运行、Lint、类型检查和测试流程所需的命令顺序 |
references/redirection-boundaries.md | Python 约定应何时让位于 shell、JS/TS 或特定领域技能 |
references/exceptions.md | 何时打破约定(旧项目、企业环境) |
references/library-preferences.md | 新 Python 工作的引导式库默认选择 |
references/performance-tips.md | 性能分析工具、优化模式速查 |
references/testing-patterns.md | Fixture 作用域、标记、conftest 骨架 |
操作规范
Active
- 仅当 Python 文件、Python 工具或
pyproject.toml是任务的主要内容时,才应用此技能。 - 当 Python 与 shell、JS/TS 或其他主要工作流并存时,阅读
references/redirection-boundaries.md。 - 对包管理、命令执行、Lint、类型检查和测试,强制遵守
references/tooling-contract.md中的硬性要求。 - 建议采用任何旧项目或受限环境的偏离做法前,先查看
references/exceptions.md。 - 仅在为新的 Python 工作选择库时,阅读
references/library-preferences.md。
Empty / Help
- 概述硬性要求:
uv、uv run、uv add、ty、ruff、pytest和pyproject.toml。 - 说明硬性要求与引导式偏好之间的区别。
- 指明工具、例外、库、测试、性能和混合语言路由对应的准确参考文件。
check
- 仅验证工具合规性;除非用户提出要求,否则不要扩展为完整的实现建议。
- 报告项目是否按预期方式使用
uv、uv run、ty、ruff、pytest和pyproject.toml。 - 标记旧项目或例外路径的偏离,并要求其理由符合
references/exceptions.md。 - 拒绝使用
mypy、pip install或裸python替代仓库要求的工具的建议。
硬性要求
- 包管理器:所有 Python 包操作均使用
uv - 依赖项:酌情使用
uv add、uv add --group dev、uv remove和uv lock --upgrade-package <pkg> - 可复现安装:验证现有锁文件工作流时,使用
uv sync --locked - 项目配置:将 Python 项目配置保存在
pyproject.toml中 - 类型检查:使用
uv run ty check,而非mypy - Lint:使用
uv run ruff check和uv run ruff format - 测试:使用
uv run pytest - 任务运行:执行 Python 命令时使用
uv run <command>
虚拟环境
- 让
uv自动管理虚拟环境 - 切勿手动创建或激活
.venv目录 - 使用
uv run在项目环境中执行命令
引导式偏好
仅当开始新的 Python 工作且没有更强的本地约束时,才应用引导式库偏好。建议替换现有技术栈前,请阅读 references/library-preferences.md。
项目结构
- 使用
pyproject.toml保存所有项目元数据和依赖项 - 将源代码放在与项目名称匹配的包目录中
- 在单体仓库中使用
uv工作区成员管理子包 - 在认为 Python 工作已完成前,按照
references/tooling-contract.md执行所需的 Lint、格式化、类型检查和测试流程
性能规范
- 先分析性能,再进行优化。
- 使用
references/performance-tips.md快速了解 Python 性能分析和优化模式。 - 将广泛的性能分析、回归分析或性能调查任务交给
performance-profiler。
测试规范
- 使用 pytest 编写 Python 测试,并在
pyproject.toml中配置项目测试默认设置。 - 使用
references/testing-patterns.md了解 fixture、标记、tmp_path、monkeypatch、参数化和覆盖率策略。 - 将测试策略、测试套件设计、fixture 架构或跨语言测试计划交给
test-architect。
验证约定
在声明更改完成前,从此技能目录运行:
python scripts/check.py
git diff --check
完成标准:
scripts/check.py以状态码 0 退出。git diff --check以状态码 0 退出。- 此技能目录下不再存在可移植 CLI 违规项。
更改技能定义、公开描述、参考文件或评估行为后,如果 docs-steward 可用,请调用它。
关键规则
- 如果任务不属于明确批准的例外路径,请拒绝使用
pip install、uv pip install或裸python的 Python 环境设置建议。 - 运行时依赖必须使用
uv add,仅用于开发的依赖必须使用uv add --group dev,除非references/exceptions.md说明了合理的旧版方案或受限环境偏离情况。 - 类型检查必须使用
uv run ty check;不要将mypy或裸ty check作为此仓库的默认方案。 - 对于 Python 更改,默认完成门槛为
uv run ruff check、uv run ruff format、uv run ty check和uv run pytest,除非有记录在案的例外。 - 不要手动编辑
uv.lock;请使用uv lock、uv sync或依赖管理命令。 - 不要将指导性的库选择偏好说成是必须替换已有本地技术栈的要求。
- 批准旧版工具链、其他环境管理器或其他库方案前,请先阅读
references/exceptions.md。 - 对于混合语言或非 Python 为主的工作,请通过
references/redirection-boundaries.md转交,不要强行将整个任务套用到此技能上。
规范术语(请严格照此使用):
uv-- 必需的包管理器和任务运行器ty-- 必需的类型检查器(不是 mypy)uv run ty check-- 必需的类型检查命令ruff-- 必需的代码检查和格式化工具pyproject.toml-- 项目配置的唯一来源uv run-- 所有 Python 命令执行时的前缀uv sync --locked-- 基于锁文件的工作流中默认的可复现安装检查
扩展策略
- 更广泛的非 Python 任务中偶尔涉及 Python 文件:仅强制执行涉及 Python 负责范围的硬性要求,然后通过
references/redirection-boundaries.md转交混合工作流相关问题。 - 以 Python 为主的功能开发或重构:应用完整的操作约定,包括相关的工具、测试和指导性偏好。
- 仓库范围的 Python 工具或迁移工作:使用
check、references/tooling-contract.md和references/exceptions.md,区分硬性违规与有文档记录的过渡方案。
渐进式披露
- 默认不要加载所有参考资料。
- 有关命令顺序的问题,先阅读
references/tooling-contract.md。 - 请求中涉及 shell、JS/TS、CI 或特定框架的工作时,阅读
references/redirection-boundaries.md。 - 只有在任务似乎需要旧版方案、企业环境或受限环境例外时,才阅读
references/exceptions.md。 - 只有在为新的 Python 工作选择库时,才阅读
references/library-preferences.md。 - 只有在当前任务实际涉及性能或测试时,才阅读相应的参考资料。
范围边界
适用于: Python 工具约定、命令选择、依赖管理规则、类型检查/代码检查/测试门槛,以及考虑异常情况的仓库指南。
不适用于: JS/TS 约定、Shell 约定、CI 流水线设计、性能分析调查、测试架构,或特定于框架/领域的实现策略。
评论
支持 Markdown