# Prepare Python Recipe

End-to-end orchestration to prepare or update a Python recipe under core/python/...

- Repository: https://github.com/google/adk-recipes (10565 stars)
- Category: Design
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add google/adk-recipes --skill prepare-python-recipe -g -a claude-code -y`
Codex: `npx skills add google/adk-recipes --skill prepare-python-recipe -g -a codex -y`
Cursor: `npx skills add google/adk-recipes --skill prepare-python-recipe -g -a cursor -y`
Gemini CLI: `npx skills add google/adk-recipes --skill prepare-python-recipe -g -a gemini-cli -y`

## Description

End-to-end orchestration to prepare or update a Python recipe under core/python/, contrib/python/, or plugins/<vertical>/<solution>/ so it passes every check in .github/workflows/python-validate-recipe.yml. Runs eight phases in order on an already-in-place recipe: manifest.yaml generation, environment-variable extraction, pyproject.toml alignment, ruff format+check, per-recipe `uv lock`, runnability-test generation, compile-and-run verification of the generated test file, and a final pass through the repo's own `validate manifest` / `validate structure` validators. Assumes the user has already done the manual prep (deactivated any venv, `git pull` and `uv sync` from the repo root, placed the recipe at its target path, renamed if needed). Delegates to the existing sub-skills (generate-manifest, extract-python-environment-variables, align-recipe-pyproject, generate-python-runnability-test) so the master never duplicates their logic. Pauses at fixed decision points (description mismatch, existing test regeneration) AND is free to interrupt for clarification any time a phase's output looks ambiguous, unexpected, or would benefit from a human judgment call, this is an interactive skill by design. Use when the user wants to "prepare a recipe", "update a recipe end to end", "run all the checks and fixes", "make this recipe PR-ready", or invokes it by name.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Prepare Python Recipe

Master orchestration skill. Runs the other Python-recipe skills in the right order, with the right inputs, in a single pipeline. Use when the user wants a recipe brought fully up to standard in one go.

**This is an interactive skill.** It's expected to pause and ask questions when doing so genuinely improves the outcome, not just at the fixed checkpoints below, but any time a phase's output is ambiguous, surprising, or would benefit from a judgment call. See rule 5 (fixed checkpoints) and rule 6 (judgment-based interruptions) for the difference.

---

## Canonical placeholder strings

Two ownership placeholders are written by `generate-manifest` and enforced by `tools/validate_manifest.py`. They must be the EXACT strings below, never invent, translate, or rephrase them:

```
OWNERSHIP_TEAM_PLACEHOLDER = "TODO: Replace with your team name"
OWNERSHIP_POC_PLACEHOLDER  = "TODO: Replace with your GitHub user ID"
```

`generate-manifest` is the single source of truth for these values. This skill NEVER replaces them mid-pipeline, they are intentionally left in place so CI validation fails until a human fills them in. Replacing them lives in the user's post-pipeline TODO list (see the summary's "What you still need to do" section).

---

## Prerequisites (manual, done by the user BEFORE invoking this skill)

The skill assumes the user has already:

1. **Deactivated** any active Python virtual environment.
2. **Pulled latest** from `origin` (`git pull` at the repo root).
3. **Synced repo root deps** (`uv sync` at the repo root).
4. **Placed the recipe at its target path**, either freshly scaffolded, moved from another location, or renamed to its final basename under `core/python/<name>/`, `contrib/python/<name>/`, or `plugins/<vertical>/<solution>/`.
5. **Committed the original recipe** so `git diff` shows what the skill changed.

The rest: https://github.com/google/adk-recipes/blob/HEAD/.agents/skills/prepare-python-recipe/SKILL.md
