# Execution Types Contract

> Keep execution engine changes aligned with stable public types (execution.py + types.py lockstep).

- Skill: `majiayu000/execution-types-contract` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add majiayu000/execution-types-contract`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/execution-types-contract/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/execution-types-contract

---

<!-- BEGIN:compound:skill-managed -->
# Purpose
When extending execution behavior, keep the public contract stable and import-safe.

# When To Use
- You change execution orchestration in `src/vibe_piper/execution.py`.
- You also add/adjust public result/config types in `src/vibe_piper/types.py`.

# Procedure
- Decide what is "public API" vs. internal implementation.
- Put public dataclasses/enums/protocols in `src/vibe_piper/types.py`.
- Keep `src/vibe_piper/execution.py` focused on orchestration and flow.
- Enforce a one-way dependency:
  - `src/vibe_piper/execution.py` may import from `vibe_piper.types`.
  - Avoid `src/vibe_piper/types.py` importing from `vibe_piper.execution`.
- If you need type-only references that would create a cycle, use `typing.TYPE_CHECKING` and forward references.
- Prefer narrow, explicit types (dataclasses/enums) over loose dicts for cross-module boundaries.
<!-- END:compound:skill-managed -->

## Manual notes

_This section is preserved when the skill is updated. Put human notes, caveats, and exceptions here._

