Source profileQuality 95/100

Jamie-BitFlight/claude_skills/plugins/python3-development/skills/stinkysnake/SKILL.md

stinkysnake

Progressive Python quality improvement with static analysis, type refinement, modernization planning, plan review, and test-driven implementation. Use when addressing technical debt, eliminating Any types, applying modern Python patterns, or refactoring for better design.

Source repository stars
64
Declared platforms
0
Static risk flags
0
Last source update
2026-08-25
Source checked
2026-08-25

Decision brief

What it does: where it fits

Systematic Python code quality improvement through static analysis, type refinement, modernization planning with review, and test-driven implementation.

Best for

  • Use when addressing technical debt, eliminating Any types, applying modern Python patterns, or refactoring for better design.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/Jamie-BitFlight/claude_skills --skill "plugins/python3-development/skills/stinkysnake"
Safe inspection promptEditorial

Inspect the Agent Skill "stinkysnake" from https://github.com/Jamie-BitFlight/claude_skills/blob/b70ba8737e664d9e2482912e3ddbe7ecb77e0539/plugins/python3-development/skills/stinkysnake/SKILL.md at commit b70ba8737e664d9e2482912e3ddbe7ecb77e0539. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Workflow Overview

    Review the “Workflow Overview” section in the pinned source before continuing.

    Review and apply the “Workflow Overview” source section.
  2. 02

    Phase 1: Static Analysis

    Run automated tools to fix all resolvable issues before manual work begins.

    Run automated tools to fix all resolvable issues before manual work begins.
  3. 03

    Step 1.1: Format Code

    Review the “Step 1.1: Format Code” section in the pinned source before continuing.

    Review and apply the “Step 1.1: Format Code” source section.
  4. 04

    Step 1.2: Auto-Fix Linting Issues

    Review the “Step 1.2: Auto-Fix Linting Issues” section in the pinned source before continuing.

    Review and apply the “Step 1.2: Auto-Fix Linting Issues” source section.
  5. 05

    Step 1.3: Run Type Checkers

    Inspect .pre-commit-config.yaml (then CI) first, then pyproject.toml. Default for new work: ty. If hooks or CI invoke mypy: run mypy and do not rip it out. Do not switch to mypy only because [tool.mypy] exists — many repos keep that section while ty is the real gate.

    Inspect .pre-commit-config.yaml (then CI) first, then pyproject.toml. Default for new work: ty. If hooks or CI invoke mypy: run mypy and do not rip it out. Do not switch to mypy only because [tool.mypy] exists — many re…

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score95/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars64SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
Jamie-BitFlight/claude_skills
Skill path
plugins/python3-development/skills/stinkysnake/SKILL.md
Commit
b70ba8737e664d9e2482912e3ddbe7ecb77e0539
License
MIT
Collected
2026-08-25
Default branch
main
View the original SKILL.md

<file_paths>$ARGUMENTS</file_paths>

Python Quality Improvement System

Systematic Python code quality improvement through static analysis, type refinement, modernization planning with review, and test-driven implementation.

Arguments

<file_paths/>

Workflow Overview

┌─────────────────────────────────────────────────────────────────────────────┐
│                         STINKYSNAKE WORKFLOW                                │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  Phase 1: STATIC ANALYSIS                                                   │
│  ├── Run formatters (ruff format)                                           │
│  ├── Run linters (ruff check --fix)                                         │
│  ├── Run type checkers (ty default; mypy/pyright if project configures)    │
│  └── Auto-fix all resolvable issues                                         │
│           │                                                                 │
│           ▼                                                                 │
│  Phase 2: TYPE ANALYSIS                                                     │
│  ├── Determine minimum Python version                                       │
│  ├── Inventory all `Any` types                                              │
│  ├── Map type dependencies                                                  │
│  └── Identify typing gaps                                                   │
│           │                                                                 │
│           ▼                                                                 │
│  Phase 3: MODERNIZATION PLANNING                                            │
│  ├── Plan Protocol usage for duck typing                                    │
│  ├── Plan Generic type parameters                                           │
│  ├── Plan TypeGuard narrowing                                               │
│  ├── Plan TypeAlias definitions                                             │
│  ├── Plan TypedDict for dict shapes                                         │
│  ├── Plan dataclass/Pydantic models                                         │
│  └── Plan library modernization (httpx, orjson, etc.)                       │
│           │                                                                 │
│           ▼                                                                 │
│  Phase 4: PLAN REVIEW (context: fork)                                       │
│  ├── Review against pythonic best practices                                 │
│  ├── Verify against online references                                       │
│  ├── Check feasibility                                                      │
│  ├── Identify breaking changes                                              │
│  └── Produce review report                                                  │
│           │                                                                 │
│           ▼                                                                 │
│  Phase 5: PLAN REFINEMENT                                                   │
│  └── Update plan based on review feedback                                   │
│           │                                                                 │
│           ▼                                                                 │
│  Phase 6: DOCUMENTATION DISCOVERY                                           │
│  ├── Find docs requiring updates                                            │
│  └── Note what changes are needed                                           │
│           │                                                                 │
│           ▼                                                                 │
│  Phase 7: INTERFACE DESIGN                                                  │
│  └── Create interfaces/protocols first                                      │
│           │                                                                 │
│           ▼                                                                 │
│  Phase 8: TEST-FIRST (context: fork, python-pytest-architect)               │
│  ├── Write failing tests against interfaces                                 │
│  └── Stop after tests written                                               │
│           │                                                                 │
│           ▼                                                                 │
│  Phase 9: IMPLEMENTATION (/python3-development:snakepolish)                                     │
│  ├── context: fork with python-cli-architect                                │
│  ├── Follow plans and implement functions                                   │
│  └── Run tests until passing                                                │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Companion Plugins

This skill integrates with plugins in the same marketplace:

holistic-linting Plugin

Activation: Skill(skill: "holistic-linting:holistic-linting")

Provides: Linting rules knowledge base, linting-root-cause-resolver agent, automatic linter detection.

pre-commit Plugin

Activation: Skill(skill: "python3-development:pre-commit")

Provides: Git hook automation for quality gates.


Phase 1: Static Analysis

Run automated tools to fix all resolvable issues before manual work begins.

Step 1.1: Format Code

# Format all Python files
uv run ruff format $ARGUMENTS

# Verify formatting
uv run ruff format --check $ARGUMENTS

Step 1.2: Auto-Fix Linting Issues

# Fix all auto-fixable issues
uv run ruff check --fix $ARGUMENTS

# Fix unsafe fixes if appropriate
uv run ruff check --fix --unsafe-fixes $ARGUMENTS

Step 1.3: Run Type Checkers

Inspect .pre-commit-config.yaml (then CI) first, then pyproject.toml. Default for new work: ty. If hooks or CI invoke mypy: run mypy and do not rip it out. Do not switch to mypy only because [tool.mypy] exists — many repos keep that section while ty is the real gate.

# Default (ty) — when hooks run ty, [tool.ty] is active, or no mypy invocation in hooks/CI
uv run ty check $ARGUMENTS

# Project that actually runs mypy in hooks/CI — respect mypy.ini / [tool.mypy]
uv run mypy $ARGUMENTS

# Project standardizes on pyright / basedpyright
uv run pyright $ARGUMENTS
# uv run basedpyright $ARGUMENTS

Step 1.4: Document Remaining Issues

Create inventory of issues that cannot be auto-fixed:

## Static Analysis Results

### Auto-Fixed
- [X] Formatting issues: N fixed
- [X] Import sorting: N fixed
- [X] Safe linting fixes: N fixed

### Requires Manual Resolution
| File:Line | Rule | Issue | Complexity |
|-----------|------|-------|------------|
| src/api.py:45 | ANN001 | Missing type annotation | Low |
| src/models.py:120 | B006 | Mutable default | Medium |

Phase 2: Type Analysis

Determine Python compatibility and inventory typing gaps.

Step 2.1: Determine Minimum Python Version

Check project configuration:

# Check pyproject.toml
grep -E "requires-python|python_requires" pyproject.toml

# Check setup.py if exists
grep -E "python_requires" setup.py

Document the constraint:

## Python Version Constraint

Minimum Version: Python 3.11
Reason: [from pyproject.toml requires-python = ">=3.11"]

Available Language Features:
- Native generics (list[str], dict[str, int])
- Union syntax (str | None)
- Pattern matching (match/case)
- Exception groups
- Self type
- TypeVarTuple
- Required/NotRequired in TypedDict

Step 2.2: Inventory All Any Types

Search for explicit and implicit Any usage:

# Find explicit Any imports and usage
uv run rg "from typing import.*Any|: Any|-> Any" $ARGUMENTS

# Implicit Any / strict diagnostics — use the same checker the project uses
uv run ty check $ARGUMENTS 2>&1 | grep -iE "Any|implicit" || true
# If project uses mypy instead:
# uv run mypy --strict $ARGUMENTS 2>&1 | grep -E "has type.*Any|Implicit.*Any"

Create inventory:

## Any Type Inventory

### Explicit Any Usage
| Location | Variable | Current Type | Proposed Type |
|----------|----------|--------------|---------------|
| api.py:23 | response | Any | dict[str, JSONValue] |
| utils.py:45 | callback | Any | Callable[[str], None] |

### Implicit Any (from untyped libraries)
| Location | Source | Mitigation |
|----------|--------|------------|
| client.py:12 | third_party.get() | Add type stub or cast |

Step 2.3: Map Type Dependencies

Understand how types flow through the codebase:

## Type Dependency Map

Entry Points (public API):
- cli.main() -> int
- api.fetch_data(url: str) -> ???  # Needs typing

Internal Flow:
fetch_data() -> parse_response() -> validate() -> Model

Type Gaps:
- parse_response returns Any
- validate accepts Any

Phase 3: Modernization Planning

Plan how to apply modern Python features to eliminate type gaps and improve design.

Step 3.1: Load modernpython Skill

Skill(skill: "python3-development:modernpython")

Step 3.2: Plan Type System Improvements

For each Any in the inventory, plan the replacement using appropriate constructs:

Select the appropriate type construct for each Any replacement:

  • Protocol — duck-typed objects sharing behavior without inheritance
  • Generic — containers/functions preserving type info across multiple types
  • TypeGuard — runtime checks that should narrow types for the checker
  • TypeAlias — repeated complex types needing a name
  • TypedDict — dicts with known keys and specific value types
  • Dataclass/Pydantic — structured data with optional validation

See references/type-patterns.md for before/after code samples and library modernization reference table.

Step 3.3: Plan Library Modernization

See the library modernization reference table in references/type-patterns.md#library-modernization-reference.

Step 3.4: Create Modernization Plan Document

Resolve the plan directory at runtime: uv run python -c 'from dh_paths import plan_dir; print(plan_dir())' (typically ~/.dh/projects/{slug}/plan/). Create the plan at {plan_dir}/stinkysnake-plan.md using the template in references/plan-templates.md#modernization-plan-template-phase-3-output.


Phase 4: Plan Review

Delegate to a review agent with context fork to critique the plan.

Step 4.1: Launch Plan Review Agent

Delegate to code-reviewer using the prompt in references/agent-prompts.md#phase-4-plan-review.

Step 4.2: Review Report Structure

The reviewer produces a report following the template in references/plan-templates.md#plan-review-report-template-phase-4-output.


Phase 5: Plan Refinement

Update the plan based on review feedback.

Step 5.1: Address Blocking Issues

For each blocking issue:

  1. Understand the concern
  2. Research alternatives
  3. Update the plan
  4. Document the change

Step 5.2: Acknowledge Warnings

For each warning:

  1. Add mitigation to the plan
  2. Or accept risk with justification

Step 5.3: Consider Suggestions

For each suggestion:

  1. Evaluate effort vs benefit
  2. Include if beneficial, defer if not

Step 5.4: Update Plan Document

Update {plan_dir}/stinkysnake-plan.md (resolve plan_dir as in Step 3.4) using the revised plan format in references/plan-templates.md#revised-plan-template-phase-5-output.


Phase 6: Documentation Discovery

Find documentation that needs updating after code changes.

Step 6.1: Inventory Documentation

# Find all documentation files
fd -e md -e rst -e txt . docs/ README.md CHANGELOG.md

# Find docstrings in affected files
uv run rg "^\s+\"\"\"" $ARGUMENTS

Step 6.2: Map Code to Docs

Create documentation update plan using the template in references/plan-templates.md#documentation-update-plan-template-phase-6-output.


Phase 7: Interface Design

Create interfaces and protocols before implementation.

Step 7.1: Define Type Aliases

# src/types.py
from typing import TypeAlias

JSONValue: TypeAlias = str | int | float | bool | None | list["JSONValue"] | dict[str, "JSONValue"]
APIResponse: TypeAlias = dict[str, JSONValue]

Step 7.2: Define Protocols

# src/protocols.py
from typing import Protocol


class Handler(Protocol):
    def handle(self, data: bytes) -> None: ...


class Serializable(Protocol):
    def to_dict(self) -> dict[str, Any]: ...

Step 7.3: Define TypedDicts

# src/schemas.py
from typing import TypedDict, NotRequired


class UserData(TypedDict):
    name: str
    email: str
    age: NotRequired[int]

Step 7.4: Define Data Classes

# src/models.py
from dataclasses import dataclass


@dataclass
class User:
    name: str
    email: str
    age: int | None = None

Phase 8: Test-First Implementation

Delegate to python-pytest-architect to write failing tests against the interfaces.

Step 8.1: Launch Test Writing Agent

Delegate to python-pytest-architect using the prompt in references/agent-prompts.md#phase-8-test-writing-agent.

Step 8.2: Verify Tests Fail

# Run tests - they should fail
uv run pytest tests/ -v

# Expected output: X failed, 0 passed

Phase 9: Implementation

Use the /python3-development:snakepolish skill to implement until tests pass.

Step 9.1: Launch Implementation Skill

/python3-development:snakepolish $ARGUMENTS

This skill:

  • Has context: fork to work in isolation
  • Uses agent: python-cli-architect for implementation
  • Follows the refined plan
  • Runs tests after each change
  • Continues until all tests pass

Step 9.2: Verify All Tests Pass

# Final verification
uv run pytest tests/ -v
uv run ty check $ARGUMENTS
# If project uses mypy: uv run mypy $ARGUMENTS
uv run ruff check $ARGUMENTS

Output Artifacts

The complete workflow produces:

ArtifactLocationPurpose
Static Analysis Results.claude/reports/static-analysis-{ts}.mdAuto-fix summary
Type Inventory.claude/reports/type-inventory-{ts}.mdAny types found
Modernization Plan{plan_dir}/stinkysnake-plan.mdImplementation plan
Plan Review.claude/reports/plan-review-{ts}.mdReview feedback
Revised Plan{plan_dir}/stinkysnake-plan.mdUpdated plan
Doc Update Plan.claude/reports/doc-updates-{ts}.mdDocs to change
Test Filestests/test_*.pyFailing tests
Implementationsrc/Passing code

Quick Reference

Skill Activations

Skill(skill: "holistic-linting:holistic-linting")     # Linting workflows
Skill(skill: "python3-development:pre-commit")       # Git hooks
Skill(skill: "python3-development:modernpython")     # Python 3.11+ patterns
Skill(skill: "python3-development:python3-development")  # Core patterns

Agent Delegations

Agent(subagent_type="holistic-linting:linting-root-cause-resolver", ...)  # Phase 1 linting
Agent(subagent_type="python3-development:code-reviewer", ...)     # Phase 4 review
Agent(subagent_type="python3-development:python-pytest-architect", ...)  # Phase 8 tests

Related Skills

/python3-development:snakepolish  # Phase 9 implementation (context: fork)


Agent Team Alternative for Phase 4

When Phase 4 (quality improvement implementation) involves 3+ independent improvement areas where findings from one area inform or challenge another, consider agent teams instead of sequential subagents.

When Agent Teams Apply

A quality improvement workflow is a candidate for agent teams when ALL of these are true:

  1. 3+ independent improvement areas (enough parallelism to justify coordination overhead)
  2. Areas benefit from cross-communication (findings from one area inform or challenge another)
  3. No shared file mutations (each teammate owns different files)
  4. Result is a synthesis, not a concatenation (value comes from combining, deduplicating, or reconciling findings across areas)

When Subagents Suffice

A quality improvement workflow is NOT a candidate for agent teams when:

  • Only 1-2 improvement areas (subagent overhead is lower)
  • Areas are fully independent with no cross-communication need (subagents suffice)
  • Result is just collecting N outputs (no synthesis step)
  • Work is sequential (each step depends on the previous)

Reference

See ../../../plugin-creator/skills/claude-skills-overview-2026/resources/agent-teams.md for complete criteria, architecture, and usage patterns.

SOURCE: Lines 27-39 of agent-teams.md (accessed 2026-02-06)

References

Skill Reference Files

  • ../python3-development/references/python3-standards.md — Shared development standards, knowledge graph, and process graph
  • references/plan-templates.md — document formats for modernization plan, review report, revised plan, and documentation update plan
  • references/agent-prompts.md — pre-built delegation prompts for Phase 4 review agent and Phase 8 test writing agent

External Documentation

Companion Plugins

  • holistic-linting - Linting rules knowledge base
  • pre-commit - Git hook automation

Frequently asked questions

What to verify before installation and use

What does the stinkysnake source document cover?

Systematic Python code quality improvement through static analysis, type refinement, modernization planning with review, and test-driven implementation.

How do I install stinkysnake?

The source record exposes this install command: npx skills add https://github.com/Jamie-BitFlight/claude_skills --skill "plugins/python3-development/skills/stinkysnake". Inspect the command and pinned source before running it.

Alternatives

Compare before choosing

Computed 9694

travisjneuman/.claude

test-specialist

This skill should be used when writing test cases, fixing bugs, analyzing code for potential issues, or improving test coverage for JavaScript/TypeScript applications. Use this for unit tests, integration tests, end-to-end tests, debugging runtime errors, logic bugs, performance issues, security vulnerabilities, and systematic code analysis.

Computed 9364

Jamie-BitFlight/claude_skills

stinkysnake

Multi-phase Python quality improvement system for file paths passed as arguments. Runs prek/ruff/ty static analysis with auto-fixes, inventories Any types and typing gaps, plans Protocol/Generic/TypeGuard/TypedDict/dataclass modernization, forks a code-reviewer agent to critique the plan, refines the plan, discovers documentation changes, designs interfaces first, forks python-pytest-architect for failing tests, then hands off to snakepolish for implementation. Use when eliminating Any types, ad

Computed 97223

yonatangross/orchestkit

verify

Grade work that already exists and decide whether it can merge. Runs the project's current unit, integration, and E2E suites plus security scanning and type checking, scores every dimension 0-10, and returns a merge verdict with a VERIFIED-vs-CLAIMED evidence manifest. Writes no test files and edits no source. Use when verifying changes are ready to merge. Use /ork:cover instead when the tests still have to be written.

Computed 97183

microsoft/Sico

android-tester

Execute Android UI workflows on a sandbox device, review results, and produce a structured execution report.