From touchdesigner
Creates and manages TouchDesigner networks via MCP API: operator creation/chaining/layout, rendering, GLSL shaders, error checking, data conversion (CHOP/SOP/POP/TOP/DAT).
npx claudepluginhub satoruhiga/claude-touchdesigner --plugin touchdesignerThis skill uses the workspace's default tool permissions.
Use this skill when creating, modifying, or debugging TouchDesigner networks via the MCP API.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Use 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.
.md files in reference/ (REQUIRED for all tasks)op.TDAPI.GetParameterList()You MUST read all .md files in reference/ before any implementation.
These files contain essential patterns for operator creation, layout, error handling, and best practices 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.
When the user provides feedback about this skill (corrections, improvements, missing patterns, etc.):
.md files in this skillSKILL.md or reference/*.md as appropriateThis ensures the skill stays accurate and improves over time based on real usage.