plugins/languages/python/skills/core/SKILL.md
Python 核心编码规范与工具链 — PEP 8 风格、命名约定、文件结构、uv 依赖管理、ruff lint/format。Use when 编写 Python 代码、初始化 Python 项目、配置 pyproject.toml、跑 lint/format、审查 Python 风格。Also triggers on "Python 规范"、"PEP 8 风格"、"uv init"、"ruff check"、"pyproject 配置"、"Python project setup"。
npx skillsauth add lazygophers/ccplugin python-coreInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
适用于 Python 3.13/3.14 项目。所有新建/修改的 .py 文件都应遵守。
uv init --package my-project
cd my-project
uv add fastapi pydantic httpx
uv add --dev pytest pytest-cov ruff pyright
pyproject.toml 最小化配置:
[project]
name = "my-project"
version = "0.1.0"
requires-python = ">=3.13"
[tool.ruff]
line-length = 100
target-version = "py313"
[tool.ruff.lint]
select = ["E", "F", "I", "B", "UP", "ANN", "SIM", "RUF"]
ignore = ["ANN101", "ANN102"]
[tool.pyright]
typeCheckingMode = "strict"
pythonVersion = "3.13"
src layout 是默认选择 (隔离源码与测试, 防止 import 冲突):
my-project/
├── src/mypackage/
│ ├── __init__.py
│ ├── core.py
│ └── models.py
├── tests/
│ ├── conftest.py
│ └── test_core.py
├── pyproject.toml
└── uv.lock
文件 ≤ 500 行 (推荐 200-400 行)。超出就拆模块。
| 类别 | 风格 | 示例 |
|------|------|------|
| 模块/包 | lowercase 或 lower_snake | user_service.py |
| 类/异常 | CapWords | UserManager, HTTPClient (缩写大写) |
| 函数/变量 | lower_snake_case | calculate_total, user_id |
| 常量 | UPPER_SNAKE_CASE | MAX_RETRIES |
| 私有 | 前缀 _ | _internal_helper |
| 类型别名 (PEP 695) | CapWords | type UserId = int |
由 ruff format 自动处理:
ruff 自动排序)公共 API 必须有 docstring。私有/内部函数仅在逻辑非显然时写。
def calculate_average(numbers: list[float]) -> float:
"""计算浮点数列表的算术平均值。
Args:
numbers: 非空浮点数列表。
Returns:
所有数字的算术平均值。
Raises:
ValueError: 当列表为空。
"""
if not numbers:
raise ValueError("numbers cannot be empty")
return sum(numbers) / len(numbers)
注释只解释 WHY (设计动机), 不解释 WHAT (代码做了什么)。
优先使用:
list[int] / dict[str, int] / tuple[int, ...] (PEP 585, 不要 List/Dict)X | None (PEP 604, 不要 Optional[X])match 语句替代多层 if isinstancetype Alias = ... (PEP 695) 替代 TypeAlias@dataclass(slots=True) 替代手写 __init__from __future__ import annotations (PEP 649 默认延迟求值)uv run ruff check --fix .
uv run ruff format .
uv run pyright # 或 ty check
uv run pytest -q
CI 应同步跑这四条, 任一失败则阻断合并。
from typing import List, Dict, Optional (改用内置泛型 + |)os.path 操作路径 (改用 pathlib.Path)print 调试 (改用 logging / structlog, 见 python-error)requests 同步请求 (改用 httpx, 见 python-async)setup.py / requirements.txt (改用 pyproject.toml + uv.lock)try: ... except Exception: (只捕获具体异常)tools
--- name: trellisx-workspace description: 维护 `.trellis/task.md` 任务看板 —— trellis 缺的跨任务总览。**一个表格, 一行一个任务**, 列为 id/名称/描述/状态/阶段/进度/worktree (状态/阶段中文显示)。在 task create/start/阶段切换/archive 后**及时更新**对应行; 并**自动清理超 7 天的已完成行**防膨胀。保持看板与 task.json 实时一致。 when_to_use: 维护 / 创建 / 更新 `.trellis/task.md` 任务看板时; task 生命周期任一节点 (create/start/阶段推进/archive) 之后同步看板时; 用户问"当前有哪些任务 / 任务进度 / 任务看板"时。被 trellisx-flow 与 trellisx-apply 注入的流程引用。 user-invocable: true argument-hint: [show|update|sync|cleanup ...] [task id] arguments:
testing
强制以 Trellis task 闭环处理用户指定的请求 (自判新建/并入 → plan→exec→check→finish 全程不跳步)。**仅用户显式主动调用** (/trellisx-flow 或明确要求"强制走 task 处理这个"); **禁止自动 / 被动 / 推断式调用** —— 不要因为某个请求"看起来该建 task"就自动触发本 skill, 那是 apply 注入的 no_task 倾向的职责。
testing
把 强推task + subtask拆分 + worktree隔离 + 闭环收尾 四维度增量注入当前项目 .trellis/ (workflow.md 的 no_task/planning/in_progress 块 + spec 背书文档 + trellis 生命周期 hook worktree 自动化)。强推 task 与闭环为纯 prompt 软约束 (非平台 hook 硬拦截)。**纯增量追加, 绝不替换 trellis 原生文本** (no_task 分类+征同意/check/finish/前缀全保留)。幂等 (marker 包裹)。
development
Claude Code 会话历史整理 — 扫 ~/.claude/projects/**/*.jsonl 全部 session transcripts, 提取学习增量 (用户校正/决策/踩坑/L0 规则) → 全局记忆库 ~/.cortex/.wiki/memory/. 默认 --apply 落盘 (--dry-run opt-in 仅出 JSON plan 预览). 与 cortex-extract (L4-inbox 内部) 互补.