---
name: python-architecture
description: "Activate when creating new modules, refactoring class hierarchies, introducing design patterns, or making changes spanning 3+ files in the APM CLI codebase."
license: "MIT"
metadata:
  decimalai-skill-id: "a6671757-b24e-4089-a5d5-0a57384d63c2"
  decimalai-version-id: "6c080d8e-3ceb-4bc3-a21c-ab61afbe6592"
  decimalai-version: "2"
  decimalai-body-sha256: "d00ea341032517528286198c9dfdc3491ddb2e928058ccf9e1e00ae2ab5e9de0"
  decimalai-name: "python-architecture"
  decimalai-format: "1"
  decimalai-invocation: "model"
  decimalai-category: "coding"
  decimalai-source: "https://app.decimal.ai/s/python-architecture@2/SKILL.md"
---
# Python Architecture Skill

[Python architect persona](../../../.apm/agents/python-architect.agent.md)

## When to activate

- Creating new Python modules or packages under `src/apm_cli/`
- Refactoring class hierarchies or introducing base classes
- Changes that touch 3+ files with shared logic patterns
- Introducing new design patterns (Strategy, Observer, etc.)
- Cross-cutting concerns (logging, auth, error handling)
- Performance-sensitive paths (parallel downloads, large manifests)

## Key rules

- Follow existing patterns (BaseIntegrator, CommandLogger, AuthResolver) before inventing new ones
- Prefer composition over deep inheritance
- Push shared logic into base classes, not duplicated across siblings
- One canonical owner per decision: route through the existing authority (target_catalog, AuthResolver/host_providers, runtime registry, CommandLogger, CompiledOutputWriter, deployment_ledger, install-outcome, neutral hook IR, BaseIntegrator); extend it, never fork it. Full rule: `.apm/instructions/architecture.instructions.md`
- Lock every centralization with a dual guardrail: a regression test plus a static check in `scripts/lint-architecture-boundaries.sh`
