Provides patterns and best practices for TouchDesigner via MCP API - operator creation, network layout, rendering, GLSL shaders, data conversion (CHOP/SOP/POP/TOP/DAT). Use when working with TouchDesigner networks.
/plugin marketplace add satoruhiga/claude-touchdesigner/plugin install touchdesigner@claude-touchdesignerThis skill inherits all available tools. When active, it can use any tool Claude has access to.
reference/basics.mdreference/geometry-comp.mdreference/glsl.mdreference/operator-families.mdreference/operator-tips.mdreference/rendering.mdUse this skill when creating, modifying, or debugging TouchDesigner networks via the MCP API.
TouchDesigner is a visual programming environment. Your pre-trained knowledge about TD is very likely incorrect.
Assume your memory is completely unreliable. Always gather accurate information first:
op.TDAPI.GetParameterList() for parameter namesOutput "Gathering information first" and collect reliable information before implementation.
reference/basics.md (REQUIRED for all tasks)op.TDAPI.GetParameterList()You MUST read reference/basics.md before any implementation.
This file contains essential patterns for operator creation, layout, and error handling that differ from standard TD API.
You MUST use op.TDAPI utilities instead of raw TD API.
# ALWAYS use CreateOp (auto sets viewer=True, handles docked operators)
new_op = op.TDAPI.CreateOp(base, gridSOP, 'grid1', x=0, y=0)
# DON'T use raw API directly
# new_op = base.create(gridSOP, 'grid1') # WRONG - misses viewer, docked handling
# Auto-connects and layouts with 200px spacing
chain = op.TDAPI.ChainOperators([grid, noise, null])
# Pass op() object, NOT string path
op.TDAPI.CheckErrors(op('/project1/base1'), recurse=True)
# IMPORTANT: Error cache updates on frame boundaries
# After fixing, check in SEPARATE td_execute call:
# td_execute 1: Fix the error
# td_execute 2: cook + CheckErrors
# TD parameter names are unpredictable (e.g., radius vs radx/rady/radz)
# ALWAYS check first using GetParameterList:
params = op.TDAPI.GetParameterList('sphereSOP')
print(params) # ['radx', 'rady', 'radz', ...]
| When working on... | Read... |
|---|---|
| ALL tasks | reference/basics.md (REQUIRED) |
| Operator families, data conversion | reference/operator-families.md |
| Geometry COMP, Instancing | reference/geometry-comp.md |
| Rendering, Camera, Light | reference/rendering.md |
| GLSL TOP/MAT, shaders | reference/glsl.md |
| Feedback loops, simulations | reference/operator-tips.md |
Use Context7 to look up official TouchDesigner API documentation when you need:
This skill provides TD-specific patterns and best practices. Context7 provides official API reference.
Consider multiple approaches before coding.
Example: "Create instanced particles in a sphere shape"
| Approach | Pros | Cons |
|---|---|---|
| A: Sphere SOP → soptoCHOP → Geo + POP | Familiar pattern | Mixed families, extra conversion |
| B: Sphere POP → Null → Geo(In/Out POP) | POP unified, direct data flow | Less familiar |
| C: Sphere POP → poptoCHOP → instancing | Flexible positioning | Extra conversion step |
→ Choose B: unified family, efficient data flow, clean network structure
viewer = True after creating operators (matches UI default)op('/path').errors(recurse=True)td_execute: Run Python code in TDtd_pane: Get current network editor statetd_selection: Get selected operatorstd_operators: List operators at path${SKILL_BASE}/../../toe/TouchDesignerAPI.tox| Family | Purpose | Data Type |
|---|---|---|
| SOP | Surface/Geometry | 3D geometry (CPU) |
| POP | Point/Particle | 3D points (GPU) |
| TOP | Texture | 2D images |
| CHOP | Channel | Time-based data |
| DAT | Data | Tables, text |
| COMP | Component | Containers, scenes |
For detailed family info, operator lists, and cross-family patterns, see reference/operator-families.md.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
This skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.