From python-engineering
Implements Python functions following stinkysnake modernization plan, iteratively running pytest until all tests pass. Use after planning, interfaces, and failing tests are ready.
How this skill is triggered — by the user, by Claude, or both
Slash command
/python-engineering:snakepolishThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<file_paths>$ARGUMENTS</file_paths>
<file_paths>$ARGUMENTS</file_paths>
Execute the implementation plan from /python-engineering:stinkysnake. Implement functions following the modernization plan, run tests iteratively until all pass.
<file_paths/>
Before invoking this skill, ensure:
/python-engineering:stinkysnake phases 1-8 completedpython-engineering:python-pytest-architectRead the stinkysnake plan artifacts:
ARTIFACTS TO LOAD:
- [ ] Modernization plan (Phase 3 output)
- [ ] Plan review feedback (Phase 4-5 output)
- [ ] Interface definitions (Phase 7 output)
- [ ] Failing test files (Phase 8 output)
Run tests to confirm failing state:
uv run pytest <file_paths/> -v --tb=short 2>&1 | head -100
Expected: Tests fail because implementations don't exist yet.
If tests pass: Stop. Implementation already complete or tests are not testing the right things.
Follow this implementation sequence:
IMPLEMENTATION ORDER:
1. Type definitions (TypeAlias, TypedDict, Protocol)
2. Data structures (dataclass, Pydantic models)
3. Utility functions (pure functions, no side effects)
4. Core business logic
5. Integration points (API clients, file I/O)
6. Entry points (CLI commands, handlers)
For each planned change:
FOR EACH IMPLEMENTATION ITEM:
1. Read the interface/protocol definition
2. Read the failing test(s) for this component
3. Implement the function/class
4. Run targeted tests: uv run pytest -k "test_name" -v
5. If fails: debug and fix
6. If passes: move to next item
Apply these patterns during implementation:
# Use modern union syntax
def process(data: str | None) -> dict[str, Any]:
...
# Use TypeGuard for narrowing
def is_valid_user(obj: object) -> TypeGuard[User]:
return isinstance(obj, dict) and "id" in obj
from typing import Protocol
class Serializable(Protocol):
def to_dict(self) -> dict[str, Any]: ...
def save(item: Serializable) -> None:
data = item.to_dict()
...
from dataclasses import dataclass, field
@dataclass(slots=True, frozen=True)
class Config:
name: str
options: list[str] = field(default_factory=list)
from pydantic import BaseModel, Field
class APIResponse(BaseModel):
status: int = Field(ge=100, le=599)
data: dict[str, Any]
model_config = {"strict": True}
# httpx for async HTTP
async with httpx.AsyncClient() as client:
response = await client.get(url)
# orjson for fast JSON
data = orjson.loads(response.content)
output = orjson.dumps(result, option=orjson.OPT_INDENT_2)
# tomlkit for TOML with comments preserved
doc = tomlkit.parse(content)
doc["section"]["key"] = value
After each implementation batch:
# Run full test suite
uv run pytest <file_paths/> -v --tb=short
# If failures remain, focus on failing tests
uv run pytest <file_paths/> -v --tb=long -x # Stop on first failure
Before completion, verify code quality:
uv run prek run --files $ARGUMENTS
# Fallback when no .pre-commit-config.yaml:
# uv run ruff check $ARGUMENTS
Fix any issues that arise.
Confirm all tests pass:
uv run pytest <file_paths/> -v --cov --cov-report=term-missing
Success Criteria:
When all tests pass and static analysis is clean:
If a test failure appears to be a test bug rather than implementation bug:
If an implementation is blocked:
../stinkysnake/SKILL.md - Parent workflow../../agents/python-cli-architect.md - Implementation agent../python3-core/SKILL.md - Modern Python patternsnpx claudepluginhub jamie-bitflight/claude_skills --plugin python-engineeringImplements Python functions per stinkysnake modernization plan and interfaces, applying modern patterns and iteratively running pytest until tests pass.
Improves Python code quality via static analysis, type refinement, modernization planning/review, and test-driven implementation. Use for technical debt, eliminating Any types, modern patterns, refactoring.
Guides Python implementation with typing, async, packaging, pytest, ruff/mypy checks, scripts, and performance cleanup. Reads project conventions and validates changes.