Enables agents to synthesize, verify, and evolve executable tools during inference rather than relying on static tool libraries, improving reasoning on heterogeneous scientific domains through dynamic tool adaptation.
Scanned 9/9/2026
Install to Claude Code
npx -y skills add ADu2021/skillXiv --skill test-time-tool-evolution --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Test Time Tool Evolution?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/adu2021-test-time-tool-evolution)More formats (shields.io, HTML) on the badges page.
---
name: test-time-tool-evolution
title: "Beyond Static Tools: Test-Time Tool Evolution for Scientific Reasoning"
version: 0.0.2
engine: skillxiv-v0.0.2-claude-opus-4.6
license: MIT
url: "https://arxiv.org/abs/2601.07641"
keywords: [scientific-reasoning, tool-synthesis, test-time-adaptation, code-generation, dynamic-tools]
description: "Enables agents to synthesize, verify, and evolve executable tools during inference rather than relying on static tool libraries, improving reasoning on heterogeneous scientific domains through dynamic tool adaptation."
---
## Overview
Instead of depending on pre-configured tool libraries, enable agents to dynamically create and refine computational tools at inference time. This approach transforms tools from fixed resources into problem-driven solutions that adapt to domain-specific requirements.
## When to Use
- For scientific reasoning tasks in heterogeneous domains (physics, chemistry, mathematics, biology)
- When domain-specific tools don't exist or are incomplete
- When tool requirements vary significantly based on problem specifics
- For cross-domain adaptation where tools need modification between problems
## When NOT to Use
- For domains with well-established, comprehensive tool libraries
- When tool synthesis latency is unacceptable (code generation takes time)
- For security-critical applications where tool verification is difficult
- In environments where code execution is restricted
## Key Technical Components
### Tool Synthesis Agent
Design an LLM-based agent that generates executable Python tools on-demand.
```python
# Tool synthesis from problem description
def synthesize_tool(problem_description, domain_context=""):
"""Generate Python code for solving specific problem"""
prompt = f"""
Create a Python function that solves this {domain_context} problem:
{problem_description}
Requirements:
- Function should be self-contained
- Include input validation
- Return clear results
"""
return llm_generate_code(prompt)
```
### Tool Verification Framework
Implement verification that checks tool correctness before execution.
```python
# Multi-stage tool verification
class ToolVerifier:
def verify_tool(self, code, test_cases):
"""Verify tool safety and correctness"""
# Stage 1: Syntax validation
try:
compile(code, '<string>', 'exec')
except SyntaxError:
return False, "Syntax error"
# Stage 2: Test execution
for inputs, expected_output in test_cases:
result = execute_with_timeout(code, inputs, timeout=5)
if result != expected_output:
return False, f"Test failed: {inputs}"
return True, "Verified"
```
### Tool Evolution Mechanism
Enable iterative refinement of tools based on problem-solving outcomes.
```python
# Evolutionary tool improvement
def evolve_tool(original_code, failure_analysis, problem_context):
"""Refine tool based on failure mode"""
refinement_prompt = f"""
The tool failed because: {failure_analysis}
Original code:
{original_code}
Problem context: {problem_context}
Improve the tool to handle this failure case.
"""
return llm_generate_improved_code(refinement_prompt)
```
### SciEvo Benchmark Framework
Organize synthetic reasoning tasks with automatically evolved tools.
```python
# Benchmark task structure
benchmark_task = {
"problem": "Calculate quantum mechanical properties",
"domain": "quantum_physics",
"evolved_tools": [
{"code": "...", "for_subtask": "eigenvalue_calculation"},
{"code": "...", "for_subtask": "wavefunction_analysis"}
],
"expected_accuracy": 0.92
}
```
### Cross-Domain Tool Adaptation
Reuse and adapt tools across related problems in different domains.
```python
# Tool adaptation across domains
def adapt_tool_to_domain(base_tool_code, source_domain, target_domain):
"""Adapt tool from one domain to another"""
adaptation_prompt = f"""
Adapt this {source_domain} tool to {target_domain}:
{base_tool_code}
Key differences between domains:
- Data formats
- Computation patterns
- Validation requirements
"""
return llm_adapt_code(adaptation_prompt)
```
## Performance Characteristics
- SciEvo benchmark: 1,590 scientific reasoning tasks with 925 evolved tools
- Improvements over static tool baselines on both accuracy and efficiency
- Tool evolution typically takes 2-5 iterations for complex problems
- Supports diverse scientific domains: physics, chemistry, mathematics, biology
## Integration Pattern
1. Parse problem description and domain context
2. Synthesize candidate tool via LLM code generation
3. Verify tool against initial test cases
4. Execute tool on problem; capture failures
5. Evolve tool based on failure analysis
6. Repeat until tool solves problem or max iterations reached
7. Cache evolved tools for domain-similar future problems
## Safety Considerations
- Always run synthesized code in sandboxed environment
- Set strict timeouts on tool execution (5-10 seconds max)
- Validate tool outputs against expected ranges
- Log all synthesized code for auditing
## References
- Static tool libraries cannot cover heterogeneous scientific domains
- Test-time tool synthesis provides domain adaptation
- Tool evolution enables iterative problem-solving refinement
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!