agentsclimarketplace

Python tooling

Skill fblissjr/fb-claude-skills/skills/dev-conventions/skills/python-tooling

House Python conventions plus the type-checking failures that get misdiagnosed: the dependency pinning policy (applications exact, libraries floors), the rule that linters, formatters and tests are never auto-run after an edit unless asked, and the two mechanical mistakes behind most Pydantic/Pyright diagnostic walls. Use when adding or pinning a dependency with uv add, when about to run ruff, pytest or a formatter after editing Python, when pyright reports a wall of "Arguments missing for parameters" or reportCallIssue, when a [tool.pyright] block seems to have no effect, when type errors appear on BaseModel subclasses whose fields have defaults, or when asked to suppress type errors in a Python project.From its SKILL.md

Install
npx -y skills add fblissjr/fb-claude-skills --skill python-tooling

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

2.1 KB, as published. Nobody here has run it

Python conventions and type-checking traps

Claude already knows uv. This skill carries only what it cannot derive: the house pinning policy, and the failures that reliably get misdiagnosed.

Pinning policy

Applications pin exact (uv add httpx==0.27.2); libraries and dev dependencies use floors (uv add 'httpx>=0.27'). Unsure → exact. uv lock --check after.

Before suppressing a wall of type errors

Two mechanical mistakes produce hundreds of diagnostics that read as unfixable Pydantic/Pyright noise. Measured on one real project: 698 errors → 264, from a keyword argument and a single annotation. Check both before writing a suppression: references/type-checking.md.

The same file covers Pyright config precedence — pyrightconfig.json always outranks [tool.pyright], which is why a config block can appear to do nothing.

After an edit, stop

Do not auto-run linters, formatters, or tests after an edit unless asked. This is the one behavioural default worth overriding here: the reflex is strong, the output is long, and it buries the change the user actually wants to look at.

Adjacent, owned elsewhere

  • Lint config and ruff findings — ruff-diagnostics plugin.
  • Pointing Pyright at the project venv — pyright-autoconfig plugin.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.