Skills synthclaw
Render Blender files with agent-controlled procedural parameters for synthetic data generation. Use when generating training data with controlled variations, creating procedural image datasets, or automating Blender renders via natural language. Supports CYCLES (production) and EEVEE (fast testing) render engines.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/ayakimovich/synthclaw" ~/.claude/skills/openclaw-skills-synthclaw && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/ayakimovich/synthclaw" ~/.openclaw/skills/openclaw-skills-synthclaw && rm -rf "$T"
skills/ayakimovich/synthclaw/SKILL.mdWhen to Use
- Generate synthetic training data with controlled parameter variations
- Create procedural image datasets with ground truth metadata
- Automate rendering workflows for ML training data
- When you need parameter-sweep renders without manual Blender interaction
When NOT to Use
- Real-time rendering or interactive preview needs (this is batch/offline)
- Complex scene manipulation beyond Value Node adjustments
- If Blender is not installed or unavailable in PATH
Requirements
- Blender 4.0+ installed and available in
$PATH - Python 3.10+ for the synthclaw package
- Cycles or EEVEE render engine (auto-selected)
Configuration
No additional configuration required. Ensure
blender command is available:
blender --version
Tools
render_procedural_scene
Adjusts procedural Value Nodes and renders a frame in Blender.
Parameters:
(string, required): Absolute path to the .blend fileblend_file
(object, required): Key-value pairs of Value Node names and float values (e.g.,parameters
){"GrainScale": 2.5, "Roughness": 0.3}
(string, required): Where to save the rendered image (e.g.,output_path
)/path/to/output.png
(integer, optional): Cycles samples (default: 128). Ignored for EEVEE.samples
(string, optional): Render engine -engine
(default) or"CYCLES""EEVEE"
(integer, optional): Custom timeout in seconds. Defaults: 1800 for CYCLES, 60 for EEVEE.timeout
(string, optional): Complete path to a real-world reference image. Used for computing LPIPS similarity and Naturalness Delta.reference_image
(boolean, optional): Set tocompute_metrics
to compute Naturalness/LPIPS metrics after rendering. Defaulttrue
.false
Returns:
- On success:
{"status": "success", "output": "/path/to/output.png", "log": "...", "engine": "CYCLES", "samples": 128, "metrics": {"naturalness_mean": 0.85, "lpips_alex": 0.12}} - On error:
{"status": "error", "message": "..."}
Examples:
Production quality (CYCLES):
{ "blend_file": "/home/user/project/assets/test.blend", "output_path": "/home/user/output/render_01.png", "parameters": { "GrainScale": 3.0, "DisplacementStrength": 1.5 }, "engine": "CYCLES", "samples": 256 }
Fast testing (EEVEE):
{ "blend_file": "/home/user/project/assets/test.blend", "output_path": "/home/user/output/test_render.png", "parameters": { "GrainScale": 3.0 }, "engine": "EEVEE" }
render_procedural_scene_fast
Convenience function for fast EEVEE rendering. Same as
render_procedural_scene with engine="EEVEE".
Parameters:
(string, required): Absolute path to the .blend fileblend_file
(object, required): Key-value pairs of Value Node names and float valuesparameters
(string, required): Where to save the rendered imageoutput_path
render_procedural_scene_production
Convenience function for production Cycles rendering. Same as
render_procedural_scene with engine="CYCLES" and higher samples.
Parameters:
(string, required): Absolute path to the .blend fileblend_file
(object, required): Key-value pairs of Value Node names and float valuesparameters
(string, required): Where to save the rendered imageoutput_path
(integer, optional): Cycles samples (default: 512)samples
analyze_blend
Analyzes a .blend file and returns available Value Nodes that can be manipulated.
Parameters:
(string, required): Absolute path to the .blend fileblend_file
Returns: Dict containing
status, a complexity object evaluating scene realism, and value_nodes (available parameter names with current values).
Engine Comparison
| Feature | CYCLES | EEVEE |
|---|---|---|
| Quality | Photorealistic | Real-time |
| Speed | Slow (minutes) | Fast (seconds) |
| Timeout | 30 minutes | 1 minute |
| Use case | Production | Testing |
| Samples | Configurable | N/A |
Safety & Limitations
- Headless execution: Blender runs with
flag for security-b - Parameter validation: Only float values accepted; non-numeric input is rejected
- No shell injection: Uses
withsubprocess.run(shell=False)
separator-- - CPU fallback: Automatically uses CPU rendering for Cycles if no GPU available
- Timeout protection: Long renders are killed after timeout to prevent hanging
Files
| File | Purpose |
|---|---|
| OpenClaw execution wrapper with engine selection |
| Blender-side Python script (handles both engines) |
| Blender-side analysis script |
| Tool schema for LLM function calling |
| Schema for blend file analysis |
Example Workflow
- User: "Render with grain scale increased and surface rougher"
- Agent calls
to see available parametersanalyze_blend - Agent calls
(EEVEE) for quick previewrender_procedural_scene_fast - If preview looks good, agent calls
(CYCLES) for final outputrender_procedural_scene_production - Render completes, path returned to user
Version
Compatible with Blender 4.0+. Not backwards compatible with 2.7x.