skills/devtu-self-evolve/SKILL.md
Orchestrate the full ToolUniverse self-improvement cycle: discover APIs, create tools, test with researcher personas, fix issues, optimize skills, and push via git. References and dispatches to all other devtu skills. Use when asked to: run the self-improvement loop, do a debug/test round, expand tool coverage, improve tool quality, or evolve ToolUniverse.
npx skillsauth add mims-harvard/tooluniverse devtu-self-evolveInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Coordinates the full development lifecycle by dispatching to specialized devtu skills.
Discover → Create → Test → Fix → Optimize → Ship → Repeat
Each phase maps to a dedicated skill:
| Phase | Skill | What it does |
|-------|-------|-------------|
| Discover | devtu-auto-discover-apis | Gap analysis, web search for APIs, batch discovery |
| Create | devtu-create-tool | Build tool class + JSON config + test examples |
| Test | (this skill) | Launch researcher persona agents to find issues |
| Fix | devtu-fix-tool | Diagnose failures, implement fixes, validate |
| Optimize | devtu-optimize-skills | Improve skill reports, evidence handling, UX |
| Optimize | devtu-optimize-descriptions | Improve tool JSON descriptions for clarity |
| Docs | devtu-docs-quality | Validate documentation accuracy |
| Ship | devtu-github | Branch, commit, push, create PR |
Pick an entry point based on what's needed:
Skill(skill="devtu-auto-discover-apis")Skill(skill="devtu-create-tool")Skill(skill="devtu-fix-tool")Skill(skill="devtu-optimize-skills")Invoke Skill(skill="devtu-auto-discover-apis") to:
Invoke Skill(skill="devtu-create-tool") for each new API:
_lazy_registry_static.py and default_config.pypython -m tooluniverse.cli test <ToolName>This is the core testing loop, run directly by this skill.
gh pr list --state openorigin/maingit fetch origin && git rebase origin/mainLaunch 2 agents per round (A + B) using the Agent tool with these parameters:
Each agent gets:
Feature-{round}{letter}-{num} (e.g., Feature-59A-001)Agent prompt template — see references/persona-template.md
Before implementing ANY agent-reported issue, verify via CLI:
python3 -m tooluniverse.cli run <ToolName> '<json_args>'
50%+ of agent reports are false positives from MCP interface confusion. Only fix verified issues.
Anti-patterns: hint text instead of validation, parameter aliases instead of fixing naming, post-hoc probing instead of pre-validation.
Standard testing verifies tools work. Usefulness testing verifies skills actually solve scientist problems. Run this after standard testing:
Score 1-10 rubric:
Common failure patterns found in usefulness tests:
| Pattern | Score Impact | Fix |
|---------|-------------|-----|
| "Call A, then B, then C" without explaining what to DO with results | -3 | Add interpretation tables |
| Tool params wrong (tool works but skill documents wrong names) | -2 | Verify ALL tool params via get_tool_info() |
| Promises data the API can't deliver (e.g., DepMap CRISPR scores) | -2 | Be honest about limitations; add computational procedure workaround |
| No synthesis phase at the end | -2 | Add "so what?" phase that combines all evidence |
| No evidence grading | -1 | Add T1-T4 or similar confidence tiers |
| No computational procedures for things tools can't do | -1 | Add Python code blocks using scipy/pandas/numpy |
When tools can't help, add computational procedures: Some analyses need Python code, not API calls. Skills should include working code blocks for:
See devtu-optimize-skills Patterns 14-15 for full guidance.
Quantify plugin performance after testing. Uses Skill(skill="devtu-benchmark-harness").
# Run lab-bench (20 MCQ)
python skills/devtu-benchmark-harness/scripts/run_eval.py --benchmark lab-bench --mode plugin-only --n 20
# Run BixBench (computational, use first 20)
python skills/devtu-benchmark-harness/scripts/run_eval.py --benchmark bixbench --mode plugin-only --n 20
# Analyze results
python skills/devtu-benchmark-harness/scripts/analyze_results.py --results <results-file>
# Generate report
python skills/devtu-benchmark-harness/scripts/generate_report.py --results <results-file> --output BENCHMARK_REPORT.md
Compare with previous round. If any category regresses, prioritize fixing that skill/tool in Phase 4.
Skill(skill="simplify") — always after writing or modifying coderuff check src/tooluniverse/<file>.pypython -c "from tooluniverse.<module> import <Class>"python -m tooluniverse.cli run <Tool> '<json>'git push origin <branch>Also see
Skill(skill="devtu-code-optimization")for reusable fix patterns and anti-patterns.
After fixes are stable:
Skill(skill="devtu-optimize-descriptions") — improve tool descriptionsSkill(skill="devtu-optimize-skills") — improve research skill qualitySkill(skill="devtu-docs-quality") — validate docs accuracyInvoke Skill(skill="devtu-github") or manually:
git fetch origin && git stash && git rebase origin/main && git stash popgit push --force-with-lease origin <branch>gh pr create / verify with gh pr view <N> --json mergeable"mergeable": "MERGEABLE" before reporting doneGitHub repo: mims-harvard/ToolUniverse — always verify with git remote -v before pushing.
git fetch origin && git rebase origin/main| Category | Signal |
|----------|--------|
| Silent parameter miss | Wrong-field check; param ignored |
| Always-fires conditional | .get("field") on wrong type |
| Silent normalization | Auto-transform not disclosed |
| Wrong notation/case | Gene fusions, Title Case names |
| Substring match | Short symbol returns multiple targets |
| try/except indent | Mismatched → SyntaxError |
Full patterns → references/bug-patterns.md
After each round: advance counter, update patterns file, keep this SKILL.md under 150 lines.
Current round: 127 (rounds completed: 52-126)
tools
Generate the success criteria for a task or question, then review work against them. Given a task, goal, or open-ended question, decompose it into scenarios, evaluation perspectives, and fine-grained weighted YES/NO criteria using the Recursive Expansion Tree (RET) method; if work is supplied, score it criterion-by-criterion and surface what is missing or could be better. Use when asked to self-review or check your own work, judge whether a task is done well or completely, build a definition-of-done or completeness checklist, create an evaluation rubric or grading criteria, score or grade answers to a question, set up an LLM-as-judge rubric, or when the user mentions self-review, completeness check, success criteria, evaluation criteria, scoring rubric, Qworld, or the RET algorithm.
tools
Find the real protein target(s) of a peptide from its sequence — peptide target deorphanization / off-target identification, for ANY target class (GPCR, ion channel, protease, cytokine/growth-factor receptor, enzyme, integrin), not only GPCRs. Use when a peptide has a phenotype but does not bind its hypothesized target, when a peptide binds a target in one species or assay but not another, or to screen candidate targets for an orphan peptide. A target-class router steers a multi-route keyless pipeline (PROSITE/ELM motif, BLAST homology, HGNC/InterPro/GPCRdb/GtoPdb target-family enumeration, OpenTargets phenotype anchor, EnsemblCompara/Alliance cross-species reconciliation) plus optional NVIDIA-NIM co-folding (Boltz2, AlphaFold2-Multimer, OpenFold3) for structural confirmation.
tools
Install or update ToolUniverse in Claude Science — create the conda env, install the tooluniverse pip package, and (re)build the tooluniverse-research skill by fetching the current workflow library from GitHub. Use for first-time setup, upgrading the ToolUniverse version, refreshing the bundled workflows after an upstream release, or reinstalling on a new machine.
tools
Install, set up, verify, update, pin, uninstall, or troubleshoot the ToolUniverse plugin on OpenAI Codex. ALWAYS consult this skill for any of those — don't answer from memory, because the exact marketplace name (mims-harvard/ToolUniverse), the "codex plugin marketplace add" then "codex plugin add -m tooluniverse" flow, Codex's startup auto-upgrade behavior, the uvx tooluniverse MCP server, and the API-key env vars are easy to get wrong. Use it whenever someone wants to get ToolUniverse (or "the 1000+ scientific tools" / "the harvard tools") working on Codex, says the Codex plugin or its tools/skills won't load, hits a uvx or MCP-server startup error, asks how Codex updates it, wants to pin or remove it, or finds it running an old tool version — even if they never say the word "plugin". Not for the Claude Code plugin (use tooluniverse-claude-code-plugin), for running research with the tools, or for authoring new tools or skills.