From 6f9bff598e73715ec3ad32af11f1ecd02cd1218a Mon Sep 17 00:00:00 2001 From: Pieter Viljoen Date: Tue, 18 Aug 2026 10:39:55 -0700 Subject: [PATCH 1/2] Clarify Python Verification Commands --- .agents/skills/python-codestyle/SKILL.md | 22 +++++++++++-------- .claude-plugin/fleet-skills/.source-digest | 2 +- .../skills/python-codestyle/SKILL.md | 22 +++++++++++-------- .github/skills/python-codestyle/SKILL.md | 22 +++++++++++-------- 4 files changed, 40 insertions(+), 28 deletions(-) diff --git a/.agents/skills/python-codestyle/SKILL.md b/.agents/skills/python-codestyle/SKILL.md index 9aa34aee..171f454a 100644 --- a/.agents/skills/python-codestyle/SKILL.md +++ b/.agents/skills/python-codestyle/SKILL.md @@ -5,13 +5,14 @@ description: >- profile split, the uv/ruff/pyright/mypy/pytest toolchain, src layout, formatting and linting, comment and docstring conventions, type hints, naming, imports, patterns to avoid, test conventions, and versioning. Use this whenever writing, reviewing, or editing a .py file, a - pyproject.toml, or a uv.lock, whenever deciding whether a Python subtree is a shippable project - or a lint-only scripts tree, whenever choosing pyright versus mypy for a repo's CI gate, or - whenever writing or reviewing a pytest test. Triggers even when the task looks like a small - local fix ("just add a helper function", "silence this lint warning", "add a dependency"), - because the profile split, the ruff-is-authoritative rule, and the ban on backward-compat - shims or impossible-case error handling are each easy to violate one file at a time. Applies - only to a repo's Python side, a repo with no Python has no use for this Skill. + pyproject.toml, or a uv.lock, whenever running or choosing a Python formatting, lint, type-check, + or test command, whenever deciding whether a Python subtree is a shippable project or a lint-only + scripts tree, whenever choosing pyright versus mypy for a repo's CI gate, or whenever writing or + reviewing a Python test. Triggers even when the task looks like a small local fix ("just add a + helper function", "silence this lint warning", "add a dependency") or verification step ("run + the tests"), because choosing pytest before reading the profile turns an intentional unittest + suite into a false missing-dependency diagnosis. Applies only to a repo's Python side, a repo + with no Python has no use for this Skill. --- # Python Codestyle @@ -26,11 +27,14 @@ profiles, the toolchain, layout, and the language-level conventions. ## Two profiles -Read the repo's `pyproject.toml` shape and pick the profile before applying any other rule: +Read the repo's `OPERATIONS.md` local-verification commands before substituting a generic command. +Then read the `pyproject.toml` shape and pick the profile before running Python tooling or tests: - **build** (Project): `[project]` + `[build-system]` + committed `uv.lock`. Uses `uv run`, pytest, pyright strict (or mypy where the repo requires it). -- **lint-only** (Scripts): no `[project]`, no lockfile. Uses `uvx`, unittest, mypy as CI gate. +- **lint-only** (Scripts): no `[project]`, no lockfile. Uses `uvx` for third-party tools, unittest + for tests, and mypy as the CI gate. Do not run pytest or diagnose its absence as an environment + defect. Use the exact `uvx coverage ... -m unittest` command and test scope in `OPERATIONS.md`. For the full profile specification and per-repo adaptation axes (type checker, dependency declaration, versioning, VS Code config), see `references/profiles.md`. diff --git a/.claude-plugin/fleet-skills/.source-digest b/.claude-plugin/fleet-skills/.source-digest index c554a561..8c2ac6d4 100644 --- a/.claude-plugin/fleet-skills/.source-digest +++ b/.claude-plugin/fleet-skills/.source-digest @@ -1 +1 @@ -a4b2a2c434e2ab63 +07f2962e00b87713 diff --git a/.claude-plugin/fleet-skills/skills/python-codestyle/SKILL.md b/.claude-plugin/fleet-skills/skills/python-codestyle/SKILL.md index 9aa34aee..171f454a 100644 --- a/.claude-plugin/fleet-skills/skills/python-codestyle/SKILL.md +++ b/.claude-plugin/fleet-skills/skills/python-codestyle/SKILL.md @@ -5,13 +5,14 @@ description: >- profile split, the uv/ruff/pyright/mypy/pytest toolchain, src layout, formatting and linting, comment and docstring conventions, type hints, naming, imports, patterns to avoid, test conventions, and versioning. Use this whenever writing, reviewing, or editing a .py file, a - pyproject.toml, or a uv.lock, whenever deciding whether a Python subtree is a shippable project - or a lint-only scripts tree, whenever choosing pyright versus mypy for a repo's CI gate, or - whenever writing or reviewing a pytest test. Triggers even when the task looks like a small - local fix ("just add a helper function", "silence this lint warning", "add a dependency"), - because the profile split, the ruff-is-authoritative rule, and the ban on backward-compat - shims or impossible-case error handling are each easy to violate one file at a time. Applies - only to a repo's Python side, a repo with no Python has no use for this Skill. + pyproject.toml, or a uv.lock, whenever running or choosing a Python formatting, lint, type-check, + or test command, whenever deciding whether a Python subtree is a shippable project or a lint-only + scripts tree, whenever choosing pyright versus mypy for a repo's CI gate, or whenever writing or + reviewing a Python test. Triggers even when the task looks like a small local fix ("just add a + helper function", "silence this lint warning", "add a dependency") or verification step ("run + the tests"), because choosing pytest before reading the profile turns an intentional unittest + suite into a false missing-dependency diagnosis. Applies only to a repo's Python side, a repo + with no Python has no use for this Skill. --- # Python Codestyle @@ -26,11 +27,14 @@ profiles, the toolchain, layout, and the language-level conventions. ## Two profiles -Read the repo's `pyproject.toml` shape and pick the profile before applying any other rule: +Read the repo's `OPERATIONS.md` local-verification commands before substituting a generic command. +Then read the `pyproject.toml` shape and pick the profile before running Python tooling or tests: - **build** (Project): `[project]` + `[build-system]` + committed `uv.lock`. Uses `uv run`, pytest, pyright strict (or mypy where the repo requires it). -- **lint-only** (Scripts): no `[project]`, no lockfile. Uses `uvx`, unittest, mypy as CI gate. +- **lint-only** (Scripts): no `[project]`, no lockfile. Uses `uvx` for third-party tools, unittest + for tests, and mypy as the CI gate. Do not run pytest or diagnose its absence as an environment + defect. Use the exact `uvx coverage ... -m unittest` command and test scope in `OPERATIONS.md`. For the full profile specification and per-repo adaptation axes (type checker, dependency declaration, versioning, VS Code config), see `references/profiles.md`. diff --git a/.github/skills/python-codestyle/SKILL.md b/.github/skills/python-codestyle/SKILL.md index 9aa34aee..171f454a 100644 --- a/.github/skills/python-codestyle/SKILL.md +++ b/.github/skills/python-codestyle/SKILL.md @@ -5,13 +5,14 @@ description: >- profile split, the uv/ruff/pyright/mypy/pytest toolchain, src layout, formatting and linting, comment and docstring conventions, type hints, naming, imports, patterns to avoid, test conventions, and versioning. Use this whenever writing, reviewing, or editing a .py file, a - pyproject.toml, or a uv.lock, whenever deciding whether a Python subtree is a shippable project - or a lint-only scripts tree, whenever choosing pyright versus mypy for a repo's CI gate, or - whenever writing or reviewing a pytest test. Triggers even when the task looks like a small - local fix ("just add a helper function", "silence this lint warning", "add a dependency"), - because the profile split, the ruff-is-authoritative rule, and the ban on backward-compat - shims or impossible-case error handling are each easy to violate one file at a time. Applies - only to a repo's Python side, a repo with no Python has no use for this Skill. + pyproject.toml, or a uv.lock, whenever running or choosing a Python formatting, lint, type-check, + or test command, whenever deciding whether a Python subtree is a shippable project or a lint-only + scripts tree, whenever choosing pyright versus mypy for a repo's CI gate, or whenever writing or + reviewing a Python test. Triggers even when the task looks like a small local fix ("just add a + helper function", "silence this lint warning", "add a dependency") or verification step ("run + the tests"), because choosing pytest before reading the profile turns an intentional unittest + suite into a false missing-dependency diagnosis. Applies only to a repo's Python side, a repo + with no Python has no use for this Skill. --- # Python Codestyle @@ -26,11 +27,14 @@ profiles, the toolchain, layout, and the language-level conventions. ## Two profiles -Read the repo's `pyproject.toml` shape and pick the profile before applying any other rule: +Read the repo's `OPERATIONS.md` local-verification commands before substituting a generic command. +Then read the `pyproject.toml` shape and pick the profile before running Python tooling or tests: - **build** (Project): `[project]` + `[build-system]` + committed `uv.lock`. Uses `uv run`, pytest, pyright strict (or mypy where the repo requires it). -- **lint-only** (Scripts): no `[project]`, no lockfile. Uses `uvx`, unittest, mypy as CI gate. +- **lint-only** (Scripts): no `[project]`, no lockfile. Uses `uvx` for third-party tools, unittest + for tests, and mypy as the CI gate. Do not run pytest or diagnose its absence as an environment + defect. Use the exact `uvx coverage ... -m unittest` command and test scope in `OPERATIONS.md`. For the full profile specification and per-repo adaptation axes (type checker, dependency declaration, versioning, VS Code config), see `references/profiles.md`. From e97b4d9b4ee4c00327b033a4f9f0fde1c5b6fe16 Mon Sep 17 00:00:00 2001 From: Pieter Viljoen Date: Tue, 18 Aug 2026 10:46:56 -0700 Subject: [PATCH 2/2] Clarify Lint-Only Test Guidance --- .agents/skills/python-codestyle/SKILL.md | 2 +- .claude-plugin/fleet-skills/.source-digest | 2 +- .claude-plugin/fleet-skills/skills/python-codestyle/SKILL.md | 2 +- .github/skills/python-codestyle/SKILL.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.agents/skills/python-codestyle/SKILL.md b/.agents/skills/python-codestyle/SKILL.md index 171f454a..02697a72 100644 --- a/.agents/skills/python-codestyle/SKILL.md +++ b/.agents/skills/python-codestyle/SKILL.md @@ -34,7 +34,7 @@ Then read the `pyproject.toml` shape and pick the profile before running Python pyright strict (or mypy where the repo requires it). - **lint-only** (Scripts): no `[project]`, no lockfile. Uses `uvx` for third-party tools, unittest for tests, and mypy as the CI gate. Do not run pytest or diagnose its absence as an environment - defect. Use the exact `uvx coverage ... -m unittest` command and test scope in `OPERATIONS.md`. + defect. Use the repository's exact coverage command and unittest scope from `OPERATIONS.md`. For the full profile specification and per-repo adaptation axes (type checker, dependency declaration, versioning, VS Code config), see `references/profiles.md`. diff --git a/.claude-plugin/fleet-skills/.source-digest b/.claude-plugin/fleet-skills/.source-digest index 8c2ac6d4..6388c447 100644 --- a/.claude-plugin/fleet-skills/.source-digest +++ b/.claude-plugin/fleet-skills/.source-digest @@ -1 +1 @@ -07f2962e00b87713 +6c1b501d51e448d1 diff --git a/.claude-plugin/fleet-skills/skills/python-codestyle/SKILL.md b/.claude-plugin/fleet-skills/skills/python-codestyle/SKILL.md index 171f454a..02697a72 100644 --- a/.claude-plugin/fleet-skills/skills/python-codestyle/SKILL.md +++ b/.claude-plugin/fleet-skills/skills/python-codestyle/SKILL.md @@ -34,7 +34,7 @@ Then read the `pyproject.toml` shape and pick the profile before running Python pyright strict (or mypy where the repo requires it). - **lint-only** (Scripts): no `[project]`, no lockfile. Uses `uvx` for third-party tools, unittest for tests, and mypy as the CI gate. Do not run pytest or diagnose its absence as an environment - defect. Use the exact `uvx coverage ... -m unittest` command and test scope in `OPERATIONS.md`. + defect. Use the repository's exact coverage command and unittest scope from `OPERATIONS.md`. For the full profile specification and per-repo adaptation axes (type checker, dependency declaration, versioning, VS Code config), see `references/profiles.md`. diff --git a/.github/skills/python-codestyle/SKILL.md b/.github/skills/python-codestyle/SKILL.md index 171f454a..02697a72 100644 --- a/.github/skills/python-codestyle/SKILL.md +++ b/.github/skills/python-codestyle/SKILL.md @@ -34,7 +34,7 @@ Then read the `pyproject.toml` shape and pick the profile before running Python pyright strict (or mypy where the repo requires it). - **lint-only** (Scripts): no `[project]`, no lockfile. Uses `uvx` for third-party tools, unittest for tests, and mypy as the CI gate. Do not run pytest or diagnose its absence as an environment - defect. Use the exact `uvx coverage ... -m unittest` command and test scope in `OPERATIONS.md`. + defect. Use the repository's exact coverage command and unittest scope from `OPERATIONS.md`. For the full profile specification and per-repo adaptation axes (type checker, dependency declaration, versioning, VS Code config), see `references/profiles.md`.