CtrlK
BlogDocsLog inGet started
Tessl Logo

make-python-recipe-deployable

Makes an existing Python recipe deployable: generates the serving files a container needs (Dockerfile, .dockerignore, fast_api_app.py, app_utils/a2a.py, app_utils/services.py, app_utils/reasoning_engine_adapter.py) and configures the recipe to match (required serving dependencies, the App object in agent.py, the hatch wheel package, manifest.deployable). Interactive by design — it asks the recipe owner about runtime data directories and stops for a human decision when a recipe needs an ADK migration or carries a legacy app_utils generation. When docker is available it offers to PROVE the claim: it builds the generated Dockerfile, runs it, probes it, and refuses to flag a recipe deployable if the container does not come up. Does NOT deploy or write terraform. Use when the user wants to "make this recipe deployable", "add a Dockerfile to a recipe", "add the serving files", "containerize a recipe", "verify the container builds", or prepare a recipe for Cloud Build / Artifact Registry.

72

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

81%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A strong, highly actionable pipeline document with excellent validation feedback loops and executable commands throughout. Its main weakness is length: several evidence-and-landscape sections inflate the overview and would sit better in a dedicated reference file.

Suggestions

Move the 'Verified end to end' and 'Current recipe landscape' sections into a separate reference file (e.g. references/verification-log.md), keeping only a one-line pointer in SKILL.md — they are records, not run-time instructions.

Tighten the prose around 'Why -unverified still sets the flag' and the agents-cli-manifest provenance table to the essential rule; the full rationale can live alongside the manifest section in a reference.

Consider extracting the outcomes table (deployable-verified / containerized-unverified / blocked / etc.) into references/outcomes.md and summarizing the two-axis decision in SKILL.md, reducing the overview's token footprint.

DimensionReasoningScore

Conciseness

The body is mostly efficient and the explanatory prose is genuinely non-obvious domain knowledge (uv lock stickiness, ADK/a2a-sdk coupling), but at ~540 lines it includes lengthy narrative sections — 'Verified end to end', 'Current recipe landscape', the outcomes table — that could be tightened or moved out of the overview.

3 / 5

Actionability

Copy-paste-ready bash commands for every pipeline stage (Step 0 dry-run, Step 3 apply, Step 5 lock/ruff/validate, Step 6 boot check, Step 6.5 verify-container) with exact flags (--data-dirs, --overwrite, --region, --verify-container) and concrete decision tables covering the common cases.

5 / 5

Workflow Clarity

A clearly sequenced Step 0–Step 7 pipeline with explicit validation checkpoints (dry-run before apply, gate stops, boot check as 'the real proof', container verification that refuses to flag a non-serving container) and feedback loops (lock-command state table, docker-state table, fix-and-revalidate guidance).

5 / 5

Progressive Disclosure

The executable logic is correctly externalized to the bundled scripts/make_deployable.py and the body is well-sectioned with clear headers, but several inline narrative blocks (verified-end-to-end records, recipe landscape, template divergences) sit in SKILL.md rather than in a separate reference file, leaving minor organization gaps.

4 / 5

Total

17

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

An exemplary description: third-person voice, concrete file-level actions, explicit scope boundaries ('Does NOT deploy or write terraform'), and a rich 'Use when' trigger clause. It tells Claude exactly what it does and when to invoke it without padding.

DimensionReasoningScore

Specificity

Lists multiple specific concrete actions — generating named serving files (Dockerfile, .dockerignore, fast_api_app.py, app_utils/a2a.py, etc.) and configuring named recipe parts (serving dependencies, the App object in agent.py, the hatch wheel package, manifest.deployable) — with comprehensive coverage of what the skill does.

5 / 5

Completeness

Explicitly answers both what (generates serving files and configures the recipe to match) and when (a concrete 'Use when the user wants to...' clause with multiple trigger phrases), satisfying the top anchor.

5 / 5

Trigger Term Quality

The 'Use when' clause enumerates natural user phrases and synonyms — 'make this recipe deployable', 'add a Dockerfile to a recipe', 'add the serving files', 'containerize a recipe', 'verify the container builds' — plus Cloud Build / Artifact Registry context.

5 / 5

Distinctiveness Conflict Risk

A clear niche — making existing Python recipes deployable via specific serving-file generation and container verification — with distinct triggers and minimal overlap risk with adjacent skills like align-recipe-pyproject or extract-python-environment-variables.

5 / 5

Total

20

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (539 lines); consider splitting into references/ and linking

Warning

Total

15

/

16

Passed

Repository
google/adk-samples
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.