decompose
Phase 3: Dependency decomposition. Only invoke when explicitly requested by the user or by the yoink orchestrator.
Phase 2: Generate and discover tests, validate against real library. Only invoke when explicitly requested by the user or by the yoink orchestrator.
$ npx -y skills add theogbrand/yoink --skill curate-tests --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/curate-testsContext 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.
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]"
> **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:
> **Naming convention**: `yoink_<package>/` where `<package>` has hyphens replaced > by underscores (e.g., package `litellm` -> `yoink_litellm/`).
---
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.
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>"
}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>&1After 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/generatedRun the test suite against the empty `yoink_<package>/` to confirm tests fail:
uv run ${CLAUDE_PLUGIN_ROOT}/scripts/run_tests.py --project-dir . --summary-onlyScore should be ~0.0 (tests should fail against empty `yoink_<package>/`).
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.
Repo: theogbrand/yoink
Phase 3: Dependency decomposition. Only invoke when explicitly requested by the user or by the yoink orchestrator.
Scaffold project: clone repo, install real library. Only invoke when explicitly requested by the user or by the yoink orchestrator.