Yoink curate-tests
Phase 2: Generate and discover tests, validate against real library. Only invoke when explicitly requested by the user or by the yoink orchestrator.
git clone https://github.com/theogbrand/yoink
T=$(mktemp -d) && git clone --depth=1 https://github.com/theogbrand/yoink "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/yoink/skills/curate-tests" ~/.claude/skills/theogbrand-yoink-curate-tests && rm -rf "$T"
plugins/yoink/skills/curate-tests/SKILL.mdCurate Tests
Do not invoke this skill unless explicitly requested. It is called by
or run standalone by the user./yoink:yoink
Prerequisite:
/yoink:setup must have been run first (reference dir and real library must exist).
Parse your prompt to identify:
- Package name: from the
line orPackage:
argument--package - Target function/feature: from the
line or prompt bodyTask:
Naming convention:
whereyoink_<package>/has hyphens replaced by underscores (e.g., package<package>->litellm).yoink_litellm/
1. Discover relevant tests
- If
is present then skip to step 2.--skip-test-discoverer
Use the yoink:test-discoverer agent to search for relevant tests from the original library's test suite.
Pass input as JSON:
{ "package_name": "<PACKAGE>", "target_function": "<TARGET_FUNCTION>" }
Discovered tests are reference material only. They exist so the test-generator can study real-world patterns and assertions. They are never executed during validation or any later step -- only generated tests are run.
2. Generate focused tests
Use the yoink:test-generator agent to write original pytest tests for the target function.
Pass input as JSON:
{ "package_name": "<PACKAGE>", "target_function": "<TARGET_FUNCTION>" }
3. Validate generated tests against the real library
Run only the generated tests using the script below against the installed real library. Do NOT run discovered tests -- they are reference only and may depend on API keys, network access, or fixtures that are not available.
uv run ${CLAUDE_PLUGIN_ROOT}/scripts/run_tests.py --project-dir . 2>&1
- If all tests pass then proceed to the next step.
- If any tests fail or error then investigate and fix the generated tests. Do NOT proceed to the next step until all generated tests pass against the real library.
4. Rewrite imports
After validation passes, rewrite imports in generated tests so they target
yoink_<package>/:
uv run ${CLAUDE_PLUGIN_ROOT}/scripts/rewrite_imports.py --package <PACKAGE> --target-dir yoink_<PACKAGE>/tests/generated
5. Sanity check
Run the test suite against the empty
yoink_<package>/ to confirm tests fail:
uv run ${CLAUDE_PLUGIN_ROOT}/scripts/run_tests.py --project-dir . --summary-only
Score should be ~0.0 (tests should fail against empty
yoink_<package>/).
- If score > 0 then something is wrong, investigate before proceeding.