Loading...
Loading...
Python software engineering guidelines from real PR review patterns. This skill should be used when writing, reviewing, or refactoring Python code — especially dataclasses, service interfaces, error handling, and type annotations. Triggers on tasks involving Python modules, API design, data modeling, type safety, exception handling, or refactoring for maintainability.
npx skill4agent add nathan-gage/python-skills python-best-practicesCRITICALHIGHMEDIUMLOW-MEDIUMLOWwarnings.deprecated()zoneinfoisinstance()assert_nevertyping_extensionsapplicability:pydantic| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Data Modeling | HIGH | |
| 2 | Error Handling | MEDIUM-HIGH | |
| 3 | Type Safety | MEDIUM-HIGH | |
| 4 | API Design | MEDIUM | |
| 5 | Code Simplification | LOW-MEDIUM | |
| 6 | Performance | LOW-MEDIUM | |
| 7 | Naming | LOW-MEDIUM | |
| 8 | Imports & Structure | LOW | |
data-data-mutable-defaultsdef f(items=[])Nonedefault_factorydata-derive-dont-storedata-mutation-contractdata-aware-datetimesdatetime.now(timezone.utc)utcnow()data-discriminated-unionsdata-explicit-variantsis_threadis_editdata-phased-compositiondata-encapsulate-mutable-statedata-sentinel-when-none-is-validNonedata-newtype-for-idsNewType('UserId', str)data-delete-dead-variantserror-error-specific-exceptionsexcept:except BaseException:except Exception:error-context-managerswithasync witherror-assert-debug-onlyassert-Oerror-validate-at-boundarieserror-trust-validated-stateerror-consolidate-try-excepterror-assert-never-exhaustivenesstyping.assert_nevererror-raise-from-for-chainsraise NewErr(...) from originalerror-inherit-base-exceptionserror-log-exception-contextlogger.exception(...)excepterror-repr-in-messagesf"tool {name!r}"types-types-fix-errors-not-ignore# type: ignoretypes-avoid-anyAnytypes-typeddict-over-dict-anyTypedDicttypes-literal-for-fixed-setsLiteral["a", "b"]types-fix-types-not-castcast()types-isinstance-for-narrowingisinstance()hasattrtype(x).__name__types-narrow-to-runtime-realitytypes-trust-the-checkertypes-remove-redundant-optional| Nonetypes-type-checking-importsif TYPE_CHECKING:api-api-required-before-optionalapi-keyword-only-params*api-no-boolean-flag-paramsLiteralEnumTrue, Falseapi-immutable-transformsapi-model-cohesionapi-underscore-for-private_prefix__all__api-deprecated-aliaseswarnings.deprecated()api-no-private-access_prefixedapi-instance-vs-module-fnsimplify-simplify-early-returnsimplify-extract-after-duplicationsimplify-cached-property@cached_propertysimplify-comprehensionsfor.append()simplify-any-all-builtinsany()all()breaksimplify-fallback-orx or defaultsimplify-flatten-nested-ifif cond1 and cond2:simplify-inline-single-use-varssimplify-remove-dead-codeperf-perf-set-for-membershipsetinperf-dict-index-over-nested-loopsdictperf-lru-cache-pure-fnsfunctools.lru_cachefunctools.cacheperf-generator-over-listperf-combine-iterationsfiltermapperf-compile-regex-module-levelperf-type-adapter-constantTypeAdapterperf-isinstance-tuple-syntaxnaming-naming-rename-on-behavior-changenaming-consistent-terminologynaming-specific-over-generictoolset_ididnaming-drop-redundant-prefixesToolConfig.descriptionToolConfig.tool_descriptionnaming-upper-case-constantsMAX_RETRIES_naming-no-type-suffixes_dict_listimports-imports-no-side-effectsimports-top-of-fileimports-optional-dependenciestryexcept ImportErrorimports-scope-helpers-to-usageimports-remove-unusedimports-no-duplicatesrules/data-mutable-defaults.md
rules/error-specific-exceptions.mdAGENTS.md