From mims-harvard-tooluniverse
Orchestrates the full ToolUniverse self-improvement cycle: discovers APIs, creates tools, tests with researcher personas, fixes issues, optimizes skills, and ships via git.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mims-harvard-tooluniverse:devtu-self-evolveThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Coordinates the full development lifecycle by dispatching to specialized devtu skills.
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)
npx claudepluginhub mims-harvard/tooluniverseRuns benchmark tests on ToolUniverse tools/skills/plugins, diagnoses failures, routes fixes to devtu skills, and retests. Use after optimizations or as regression check.
Autonomously optimizes a skill's prompt via mutate/score/keep loop. Useful for evolving SKILL.md prompts through iterative testing.
Autonomously optimizes Claude Code skills by iteratively running them on test inputs, scoring against binary evals, reflecting on failures to mutate prompts, and archiving improvements. Invoke via /auto-optimize for skill enhancement or autoresearch.