plugins/axiom-python-engineering/skills/using-python-engineering/SKILL.md
Use when working on a Python task and unsure which specialist to load - routes to type-system, mypy-resolution, project-tooling, delinting, testing, async, scientific-computing, ML-workflows, debugging-and-profiling, or Textual-TUI specialists based on symptoms
npx skillsauth add tachyon-beep/skillpacks using-python-engineeringInstall 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.
This meta-skill routes you to the right Python specialist based on symptoms. Python engineering problems fall into distinct categories that require specialized knowledge. Load this skill when you encounter Python-specific issues but aren't sure which specialized skill to use.
Core Principle: Different Python problems require different specialists. Match symptoms to the appropriate specialist skill. Don't guess at solutions—route to the expert.
Load this skill when:
Don't use for: Non-Python languages, algorithm theory (not Python-specific), deployment infrastructure (not Python-specific)
IMPORTANT: All reference sheets are located in the SAME DIRECTORY as this SKILL.md file.
When this skill is loaded from:
skills/using-python-engineering/SKILL.md
Reference sheets like systematic-delinting.md are at:
skills/using-python-engineering/systematic-delinting.md
NOT at:
skills/systematic-delinting.md ← WRONG PATH
When you see a link like [systematic-delinting.md](systematic-delinting.md), read the file from the same directory as this SKILL.md.
Symptoms - Learning Type Syntax:
Route to: See modern-syntax-and-types.md for comprehensive type system guidance.
Why: Learning type hint syntax, patterns, and configuration.
Symptoms - Fixing Type Errors:
Route to: See resolving-mypy-errors.md for systematic mypy error resolution.
Why: Resolving type errors requires systematic methodology, understanding error messages, and knowing when to fix vs ignore.
Example queries:
Symptoms:
Route to: project-structure-and-tooling.md
Why: Project setup involves multiple tools (ruff, mypy, pre-commit) and architectural decisions (src vs flat layout). Need comprehensive setup guide.
Example queries:
Symptoms:
Route to: systematic-delinting.md
Why: Delinting requires systematic methodology to fix warnings without disabling them or over-refactoring. Process-driven approach needed.
Example queries:
Note: If setting UP linting (not fixing), route to project-structure-and-tooling.md first.
Symptoms:
Route to: testing-and-quality.md
Why: Testing requires understanding pytest architecture, fixture scopes, mocking patterns, and test organization strategies.
Example queries:
Symptoms:
Route to: async-patterns-and-concurrency.md
Why: Async programming has unique patterns, pitfalls (blocking event loop), and requires understanding structured concurrency.
Example queries:
Symptoms:
Route to: textual-tui-development.md
Why: Textual has unique patterns for composition, reactivity, CSS styling, and testing that differ from standard Python. The async architecture and reactive data binding require specific approaches.
Example queries:
Note: For general async issues (event loop, TaskGroup), route to async-patterns-and-concurrency.md first. Textual skill is for Textual-specific patterns.
Symptoms:
Route to: debugging-and-profiling.md FIRST
Why: MUST profile before optimizing. Many "performance" problems are actually I/O or algorithm issues. Profile to identify the real bottleneck.
After profiling, may route to:
Example queries:
Symptoms:
Route to: scientific-computing-foundations.md
Why: NumPy/pandas have specific patterns for vectorization, memory efficiency, and avoiding anti-patterns (iterrows).
Example queries:
Symptoms:
Route to: ml-engineering-workflows.md
Why: ML workflows require experiment tracking, reproducibility patterns, configuration management, and monitoring strategies.
Example queries:
Some scenarios require multiple specialized skills in sequence:
New Python project setup with ML:
Legacy code cleanup:
Slow pandas code:
Type hints for existing code:
modern-syntax-and-types (add types)Load in order of execution: Setup before optimization, diagnosis before fixes, structure before specialization.
When symptom unclear, ASK ONE clarifying question:
"Fix my Python code" → Ask: "What specific issue? Type errors? Lint warnings? Tests failing? Performance?"
"Optimize my code" → Ask: "Optimize what? Speed? Memory? Code quality?"
"Setup Python project" → Ask: "General project or ML-specific? Starting fresh or fixing existing?"
"My code doesn't work" → Ask: "What's broken? Import errors? Type errors? Runtime errors? Tests?"
Never guess when ambiguous. Ask once, route accurately.
| Symptom | Wrong Route | Correct Route | Why | |---------|-------------|---------------|-----| | "Code slow" | async-patterns | debugging-and-profiling FIRST | Don't optimize without profiling | | "Setup linting and fix" | systematic-delinting only | project-structure THEN delinting | Setup before fixing | | "Pandas slow" | debugging only | debugging THEN scientific-computing | Profile then vectorize | | "Add type hints" | modern-syntax only | project-structure THEN modern-syntax | Setup mypy first | | "Fix 1000 lint warnings" | project-structure | systematic-delinting | Process for fixing, not setup | | "Fix mypy errors" | modern-syntax-and-types | resolving-mypy-errors | Syntax vs resolution process | | "100 mypy errors" | modern-syntax-and-types | resolving-mypy-errors | Need systematic approach |
Key principle: Diagnosis before solutions, setup before optimization, profile before performance fixes.
If you catch yourself about to:
modern-syntax-and-types for comprehensive guideAll of these mean: You're about to give incomplete advice. Route to the specialist instead.
| Excuse | Reality | What To Do | |--------|---------|------------| | "User is rushed, skip routing" | Routing takes 5 seconds. Wrong fix wastes hours. | Route anyway - specialists have quick answers | | "Simple question" | Simple questions deserve complete answers. | Route to specialist for comprehensive coverage | | "Just need quick syntax" | Syntax without context leads to misuse. | Route to get syntax + patterns + anti-patterns | | "User sounds experienced" | Experience in one area ≠ expertise in all Python. | Route based on symptoms, not perceived skill | | "Already tried X" | May have done X wrong or incompletely. | Route to specialist to verify X properly | | "Too many skills" | 8 focused skills > 1 overwhelming wall of text. | Use router to navigate - that's its purpose |
If you catch yourself thinking ANY of these, STOP and route to the specialist.
Before giving ANY Python advice, ask yourself:
❓ Did I identify the symptom?
❓ Is this symptom in my routing table?
❓ Am I about to give advice directly?
❓ Is this a diagnosis issue or solution issue?
❓ Is query ambiguous?
❓ Am I feeling pressure to skip routing?
If you failed ANY check above, do NOT give direct advice. Route to specialist or ask clarifying question.
After routing, load the appropriate specialist skill for detailed guidance:
Skip Python pack when:
Python pack is for: Python-specific implementation, tooling, patterns, debugging, and optimization.
Critical: Many Python issues require diagnosis before solutions:
| Issue Type | Diagnosis Skill | Then Solution Skill | |------------|----------------|---------------------| | Performance | debugging-and-profiling | async or scientific-computing | | Slow arrays | debugging-and-profiling | scientific-computing-foundations | | Type errors | modern-syntax-and-types | modern-syntax-and-types (same) | | Lint warnings | systematic-delinting | systematic-delinting (same) |
If unclear what's wrong, route to diagnostic skill first.
Phase 1 - Standalone: Python skills are self-contained
Future cross-references:
Current focus: Route within Python pack only. Other packs handle other concerns.
tools
Use when designing, implementing, or auditing an MCP (Model Context Protocol) server — tool API design, idempotency under agent retry, structured error envelopes agents can recover from, schema versioning across model drift, transport reliability (stdio / HTTP), output-shape and pagination discipline, and choosing between tools / resources / prompts / sampling. Also use when an MCP server's tools confuse agents, return unstructured errors, deadlock under concurrent calls, double-execute under retry, or lose state across reconnects. Do not use for general REST/GraphQL API design (use `/web-backend`), for client-side prompt engineering or tool-loop design (use `/llm-specialist`), for general in-process plugin architecture (use `/system-architect`), or for cryptographic-provenance audit trails (use `/audit-pipelines`).
development
Use when running **SQLite or DuckDB inside an application process** as the durable store — not as a development convenience but as the production database. Use when scaling an SQLite layer that worked at low concurrency and is now hitting SQLITE_BUSY, WAL bloat, lock contention, schema-migration ceremony, or correctness gaps under multi-process writers. Use when introducing DuckDB as an OLAP complement to an OLTP SQLite store, or when picking between the two for a new component. Pairs with `/web-backend` (the API surface above the DB) and `/audit-pipelines` (when the DB is also the audit trail). Do not load for server databases (Postgres, MySQL), key-value stores, or ORM choice in isolation.
development
Use when designing or critiquing the structure of a staged procedure — a wizard, configuration flow, troubleshooting tree, training curriculum, multi-stage approval pipeline, decision pipeline, or any decomposition of expert work into composable stages. Use for both producer work (build the decomposition) and critic work (audit a proposed decomposition). Use when reasoning about capacity, bottlenecks, or soundness of a procedural flow. Do not use for implementation-plan critique of code changes (use `/axiom-planning` instead), for execution-time dynamics (use `/simulation-foundations`), or for rendering an already-designed procedure as docs or UI (use `/technical-writer` or `/ux-designer`).
testing
Use when the user wants to draft fiction or creative nonfiction prose, get craft critique on prose they have written, or plan story structure, outline, or premise. Workshop-voiced. Three explicit modes (draft, critique, plan) and the router will refuse to begin work without a declared mode.