Dignified Python Coding Standards Skill
Production-quality Python coding standards for writing clean, maintainable, modern Python code (versions 3.10-3.13).
When to Use This Skill
Auto-invoke when users ask about:
-
"make this pythonic" / "is this good python"
-
"type hints" / "type annotations" / "typing"
-
"LBYL vs EAFP" / "exception handling"
-
"pathlib vs os.path" / "path operations"
-
"CLI patterns" / "click usage"
-
"code review" / "improve this code"
-
Any Python code quality or standards question
Note: This skill is general Python standards, not Dagster-specific. Use /dagster-best-practices for Dagster patterns.
When to Use This Skill vs. Others
User Need Use This Skill Alternative Skill
"make this pythonic" ✅ Yes - Python standards
"is this good python" ✅ Yes - code quality
"type hints" ✅ Yes - typing guidance
"LBYL vs EAFP" ✅ Yes - exception patterns
"pathlib vs os.path" ✅ Yes - path handling
"best practices for dagster" ❌ No /dagster-best-practices
"implement X pipeline" ❌ No /dg for implementation
"which integration to use" ❌ No /dagster-expert
"CLI argument parsing" ✅ Yes - CLI patterns
Core Knowledge (ALWAYS Loaded)
@dignified-python-core.md
Version Detection
Identify the project's minimum Python version by checking (in order):
-
pyproject.toml
-
Look for requires-python field (e.g., requires-python = ">=3.12" )
-
setup.py or setup.cfg
-
Look for python_requires
-
.python-version file - Contains version like 3.12 or 3.12.0
-
Default to Python 3.12 if no version specifier found
Once identified, load the appropriate version-specific file:
-
Python 3.10: Load versions/python-3.10.md
-
Python 3.11: Load versions/python-3.11.md
-
Python 3.12: Load versions/python-3.12.md
-
Python 3.13: Load versions/python-3.13.md
Conditional Loading (Load Based on Task Patterns)
Core files above cover 80%+ of Python code patterns. Only load these additional files when you detect specific patterns:
Pattern detection examples:
-
If task mentions "click" or "CLI" -> Load references/cli-patterns.md
-
If task mentions "subprocess" -> Load subprocess patterns from core-standards
Reference Documentation Structure
The references/ directory contains detailed guidance organized by topic:
Core References
-
core-standards.md
-
Essential standards (always loaded)
-
cli-patterns.md
-
Command-line interface patterns (click, argparse)
Version-Specific References (references/versions/ )
-
python-3.10.md
-
Features available in Python 3.10+
-
python-3.11.md
-
Features available in Python 3.11+
-
python-3.12.md
-
Features available in Python 3.12+
-
python-3.13.md
-
Features available in Python 3.13+
Advanced Topics (references/advanced/ )
-
exception-handling.md
-
LBYL patterns, error boundaries
-
interfaces.md
-
ABC and Protocol patterns
-
typing-advanced.md
-
Advanced typing patterns
-
api-design.md
-
API design principles
When to Read Each Reference Document
references/advanced/exception-handling.md
Read when:
-
Writing try/except blocks
-
Wrapping third-party APIs that may raise
-
Seeing or writing from e or from None
-
Unsure if LBYL alternative exists
references/advanced/interfaces.md
Read when:
-
Creating ABC or Protocol classes
-
Writing @abstractmethod decorators
-
Designing gateway layer interfaces
-
Choosing between ABC and Protocol
references/advanced/typing-advanced.md
Read when:
-
Using typing.cast()
-
Creating Literal type aliases
-
Narrowing types in conditional blocks
references/module-design.md
Read when:
-
Creating new Python modules
-
Adding module-level code (beyond simple constants)
-
Using @cache decorator at module level
-
Seeing Path() or computation at module level
-
Considering inline imports
references/api-design.md
Read when:
-
Adding default parameter values to functions
-
Defining functions with 5 or more parameters
-
Using ThreadPoolExecutor.submit()
-
Reviewing function signatures
references/checklists.md
Read when:
-
Final review before committing Python code
-
Unsure if you've followed all rules
-
Need a quick lookup of requirements
How to Use This Skill
-
Core knowledge is loaded automatically (LBYL, pathlib, basic imports, anti-patterns)
-
Version detection happens once - identify the minimum Python version and load the appropriate version file
-
Reference documents are loaded on-demand based on the triggers above
-
Additional patterns may require extra loading (CLI patterns, subprocess)
-
Each file is self-contained with complete guidance for its domain