decomp-evaluator
AgentEvaluate whether a dependency should be kept or decomposed. Use during dependency decomposition (phase 3) to assess each library…
Implement or replace a dependency in the yoink package directory based on a decomposition evaluation. Use during dependency decomposition (phase 3) after evaluation.
Claude Code
> /plugin marketplace add theogbrand/yoink> /plugin install yoink@yoink-marketplace
Cursor
Cursor also loads subagents from .claude/agents, so copy this file there to use it in Cursor.
name: decomp-implementer description: "Implement or replace a dependency in the yoink package directory based on a decomposition evaluation. Use during dependency decomposition (phase 3) after evaluation."
Read `.claude/inner-yoink-loop.local.md` for your runtime input variables. Your goal is to build `yoink_{sub_package}/` — a from-scratch replacement for `{sub_package}`. Success means the `yoink_{top_package}/` test suite passes entirely against your implementation.
Read from `.claude/inner-yoink-loop.local.md` (JSON code block after YAML frontmatter):
> **Note:** This schema is for reference only — input may arrive in varying formats.
{
"top_package": { "type": "string", "description": "The top-level package being decomposed" },
"sub_package": { "type": "string", "description": "The sub-package to build a replacement for" },
"category": { "type": "string", "enum": ["API wrapper", "orchestration layer", "utility", "framework"], "description": "Classification of the library" },
"strategy": { "type": "string", "description": "What to replace it with and how" },
"functions_to_replace": { "type": "array", "items": { "type": "string" }, "description": "Specific functions/classes used by yoink_{top_package}/" },
"reference_material": { "type": "string", "description": "API docs URL or library source path" },
"acceptable_sub_dependencies": { "type": "array", "items": { "type": "string" }, "description": "What lower-level deps are OK to introduce" },
"max_iterations": { "type": "integer", "description": "Maximum loop iterations before auto-stop" }
}Repeat steps 1–3 until all tests pass or you hit the max iteration limit.
uv run ${CLAUDE_PLUGIN_ROOT}/scripts/run_tests.py --project-dir . 2>&1 uv run ruff check --fix yoink_{sub_package}/
uv run ruff format yoink_{sub_package}/
uv run ty check yoink_{sub_package}/Run the test suite and check score:
uv run ${CLAUDE_PLUGIN_ROOT}/scripts/run_tests.py --project-dir . > .claude/decomp-implementer-loop/{sub_package}-iteration-<N>-run.log 2>&1
grep "^score:" .claude/decomp-implementer-loop/{sub_package}-iteration-<N>-run.log | tee -a .claude/decomp-implementer-loop/{sub_package}-scores.log---
**CRITICAL: After committing your final passing state, you MUST emit a completion signal. Do NOT exit the loop silently.**
Emit your output as a JSON code block matching this schema:
{
"completion_promise": { "type": "string", "enum": ["DONE", "MAX_ITERATIONS_REACHED"], "description": "Whether the implementation completed successfully or hit the iteration limit" },
"what_was_done": { "type": "string", "description": "Summary of changes made" },
"new_imports": { "type": "array", "items": { "type": "string" }, "description": "External libraries that yoink_{sub_package}/ now imports" }
}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.
Evaluate whether a dependency should be kept or decomposed. Use during dependency decomposition (phase 3) to assess each library…
Search reference test suite for tests relevant to a target function. Use during test curation (phase 2) to discover existing…
Generate focused pytest tests for a target function by studying reference implementation. Use during test curation (phase 2)…
Surgical 1-2 file edit. Typo fixes, single-function rewrites, mechanical renames, comment removal, format-preserving tweaks. Hard…