This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
compose2pod — a dependency-free, stdlib-only Python package and CLI that
converts a Docker Compose document into a POSIX sh script running the
services as a single Podman pod. See README.md for usage and the supported
compose subset.
This repo follows Artur Shiriev's canonical planning convention
(lesnik512/planning-convention, applied version in
planning/.convention-version). Before starting any non-trivial change, read
planning/README.md's Quick path section — it is
the authoritative process for choosing a lane (Full / Lightweight / Tiny) and
shaping the change file. Run just check-planning before pushing.
architecture/ (repo root) holds the living truth about what the system does
now — one file per capability, plus architecture/glossary.md for shared
terminology. When a change alters a capability's behavior, update the
matching architecture/<capability>.md in the same PR.
- Core package has zero runtime dependencies (stdlib only); PyYAML is
only the optional
[yaml]extra. - All imports at module level — the optional PyYAML import uses the
module-level
try/except ImportErrorpattern, never an in-function import. - Annotate every function argument. Use
ty: ignore, nevertype: ignore. just lint-ci(ruffselect=ALLwith--no-fix, ruff format, ty, eof-fixer, planning check) must pass clean. Never run bareruff check— the repo config autofixes destructively.just test-cimust pass at 100% line coverage (--cov-fail-under=100).- Commit messages: conventional-commit subjects, no
Co-authored-bytrailer.