CtrlK
BlogDocsLog inGet started
Tessl Logo

generate-python-runnability-test

Generates a lightweight `tests/test_runnability.py` for a Python recipe. The test just imports the recipe's agent module and asserts that `root_agent is not None` (and `app is not None` if the module defines one). The skill parses agent.py with `ast` to figure out which import-time side effects need mocking (`vertexai.init`, `google.auth.default`) and which env vars need setting (`GOOGLE_CLOUD_PROJECT`, `INTEGRATION_TEST`), and only emits the boilerplate the recipe actually needs. Runs in dry-run (report + preview) and apply (write to disk) modes. Use when the user wants to "add a runnability test", "generate test_runnability.py", "create a smoke test for the recipe", or fix the missing-required-file failure from `python-validate-recipe.yml`.

73

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.

The body is highly actionable and exceptionally well-sequenced with strong validation feedback loops, and it correctly delegates execution to a real bundled script. Its main weakness is conciseness: several historical-bug rationales and implementation-justification paragraphs explain context Claude could be trusted to infer, and some of that detail belongs in the script rather than the overview.

Suggestions

Trim or move the 'Historical bug closed by this' paragraphs and the ast.walk-breadth justification into the script's docstring; the overview only needs the rule (scan agent.py + ancestor __init__.py; broad call detection), not the bug history behind it.

Reduce the step-2 sub-bullets to the detection rules themselves; cut the parenthetical cross-session-memory example and ADC explanation that Claude can derive from the rule.

Consider condensing the import_support table to its four rows plus one sentence, dropping the multi-sentence prose around why each matters, since the table already conveys it.

DimensionReasoningScore

Conciseness

The body is mostly efficient and well-structured but contains several padded explanatory asides (e.g. multi-sentence 'Historical bug closed by this' rationales and detailed justification of why ast.walk is broad) that explain context Claude could be trusted to infer, pushing it toward the score-3 'mostly efficient but some unnecessary explanation' anchor rather than 4.

3 / 5

Actionability

Provides fully executable, copy-paste-ready bash commands for dry-run, apply, overwrite, and agent-file override modes, a concrete post-apply pytest command, a structured JSON output contract, and a real bundled script — covering the common cases exactly as the score-5 anchor requires.

5 / 5

Workflow Clarity

The six numbered steps form a clear sequence with explicit validation checkpoints (parse-only detection, refuse-to-clobber with --overwrite, never-overwrite-conftest, import-support verification, ruff format post-processing) and feedback loops (error → suggest --agent-file; refused → offer --overwrite), matching the score-5 anchor including the 'Rules for the Agent' checklist.

5 / 5

Progressive Disclosure

Structure is good — the SKILL.md body is an overview with clearly signaled sections and delegates the executable logic to the real one-level-deep bundle file `scripts/generate_runnability_test.py`; however the body inlines a fair amount of implementation detail (full detection rules, AST-walk rationale, import_support table) that arguably belongs in the script's own docstring rather than the overview, so it sits at 4 rather than 5.

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.

The description is specific, trigger-rich, and explicitly pairs a concrete 'what' with a 'Use when...' 'when' clause, hitting the top anchor on every dimension. It stays in third person and avoids fluff while still naming the key technical behaviors.

DimensionReasoningScore

Specificity

Lists multiple concrete actions — imports the agent module, asserts `root_agent is not None` and `app is not None`, parses agent.py with `ast`, mocks `vertexai.init`/`google.auth.default`, sets `GOOGLE_CLOUD_PROJECT`/`INTEGRATION_TEST`, runs in dry-run and apply modes — with comprehensive coverage matching the score-5 anchor.

5 / 5

Completeness

Explicitly answers 'what' (generates a minimal import-and-assert runnability test, parsing agent.py to emit only needed mocks/env vars) and 'when' (a clear 'Use when...' clause with concrete trigger phrases), matching the score-5 anchor for both what and when.

5 / 5

Trigger Term Quality

Includes natural quoted phrases users would actually say ('add a runnability test', 'generate test_runnability.py', 'create a smoke test for the recipe') plus the concrete CI failure file `python-validate-recipe.yml`, giving comprehensive coverage of synonyms and trigger variants.

5 / 5

Distinctiveness Conflict Risk

The niche is narrowly scoped to a single file (`tests/test_runnability.py`) for Python recipes under specific paths, with distinct triggers tied to the `python-validate-recipe.yml` Check 4 failure, giving minimal conflict risk with other skills.

5 / 5

Total

20

/

20

Passed

Validation

100%

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

Validation16 / 16 Passed

Validation for skill structure

No warnings or errors.

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.