Skip to content
Development
Skill

/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.

From plugin
yoink
374 skills4 agents
Install
$ npx -y skills add theogbrand/yoink --skill curate-tests --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/curate-tests

Context preview

The summary Claude sees to decide when to auto-load this skill.

Phase 2: Generate and discover tests, validate against real library. Only invoke when explicitly requested by the user or by the yoink orchestrator.

SKILL.md

curate-tests.SKILL.md
name: curate-tests
description: "Phase 2: Generate and discover tests, validate against real library. Only invoke when explicitly requested by the user or by the yoink orchestrator."
argument-hint: "PROMPT [--package PACKAGE_NAME] [--skip-test-discoverer]"

Curate Tests

> **Do not invoke this skill unless explicitly requested.** It is called by `/yoink:yoink` or run standalone by the user.

**Prerequisite:** `/yoink:setup` must have been run first (reference dir and real library must exist).

Parse your prompt to identify:

  • **Package name**: from the `Package:` line or `--package` argument
  • **Target function/feature**: from the `Task:` line or prompt body

> **Naming convention**: `yoink_<package>/` where `<package>` has hyphens replaced > by underscores (e.g., package `litellm` -> `yoink_litellm/`).

---

1. Discover relevant tests

  • If **`--skip-test-discoverer` is present** then **skip to step 2**.

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**.
Read more
Ships withyoink

YOINK (You Only Implement Native Knowledge) is an AI agent that removes complex dependencies by reimplementing only what you need. YOINK is currently built as a Claude Code plugin that decomposes third-party dependencies into internal replacements.

Get the whole plugin
Stats
37
Stars
0
Forks
Maintained
Maintenance
Python
Language
MIT
License
5mo ago
Last commit
5mo ago
Created

Repo: theogbrand/yoink

Other skills on yoink.