Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add dcc-mcp/dcc-mcp-houdini --skill houdini-vexgit clone --depth 1 https://github.com/dcc-mcp/dcc-mcp-houdiniWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/dcc-mcp/dcc-mcp-houdini/houdini-vex)<a href="https://agentmods.dev/skills/dcc-mcp/dcc-mcp-houdini/houdini-vex"><img src="https://agentmods.dev/badge/skills/dcc-mcp/dcc-mcp-houdini/houdini-vex/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/dcc-mcp/dcc-mcp-houdini/houdini-vex"><img src="https://agentmods.dev/badge/skills/dcc-mcp/dcc-mcp-houdini/houdini-vex.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00056 | $0.00777 |
| Opus 5 | $0.00028 | $0.00388 |
| Sonnet 5 | $0.00011 | $0.00155 |
| Haiku 4.5 | $0.00006 | $0.00078 |
Grade A, and why
houdini-vex scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 70 lines — stays where its author put it; the contents beside it link to each section on GitHub.
houdini-vex
Typed VEX authoring and diagnosis for agents. All tools are affinity: main
because they call hou. Prefer these over houdini-scripting.execute_python
for VEX creation.
Hard constraint: VEX snippets are set via hou.Parm.set() on the "snippet"
parameter of Wrangle nodes. This skill NEVER constructs or evaluates Python
code from VEX strings. Every VEX snippet is validated client-side (allowlist
and deny-list) before it touches Houdini.
Tool groups
vex-create: create a Wrangle node with optional initial VEX snippet (create_wrangle).vex-edit: update the VEX snippet on an existing Wrangle (update_vex_snippet).vex-validate: pre-cook validation of VEX syntax, bindings, and parameters (validate_vex_syntax).vex-cook: cook a Wrangle and collect diagnostics (cook_wrangle,diagnose_wrangle).vex-query(read-only): inspect an existing Wrangle or list all wrangles under a path (get_vex_info,list_wrangles).
Tracer-bullet flow
validate_vex_snippet— check VEX syntax and bindings before committingcreate_wrangle(parent_path="/obj/geo1", wrangle_type="pointwrangle", ...)— create a typed Wrangle with the validated snippetcook_wrangle— cook the node and get initial diagnosticsget_vex_info— read back the wrangle metadata (snippet, run-over, cook state)- If errors:
diagnose_wrangle— localize the failure to a specific line or attribute binding
For iterative work, use update_vex_snippet → cook_wrangle → diagnose_wrangle
in a loop until the VEX produces the expected geometry.
Security model
- Client-side VEX allowlist: only known VEX builtins, attributes, and control flow are permitted.
- Deny list blocks:
python,exec,eval,import,subprocess,os.*,sys.*,hou.*, and unicode escape sequences. - Size limits: 64KB / 2000 lines per snippet.
- No Python execution: VEX code flows through
hou.Parm.set()— never throughexec()oreval()or any HOM Python execution path.
What ships with it
9 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- scripts/_vex_common.py 1.4 KB runs code
- scripts/cook_wrangle.py 1.3 KB runs code
- scripts/create_wrangle.py 3.1 KB runs code
- scripts/diagnose_wrangle.py 1.4 KB runs code
- scripts/get_vex_info.py 1.1 KB runs code
- scripts/list_wrangles.py 1.2 KB runs code
- scripts/update_vex_snippet.py 2.5 KB runs code
- scripts/validate_vex_syntax.py 2.3 KB runs code
- tools.yaml 8.6 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 70 lines · 56 tokens per session scan A e312887f4894
houdini-vex is a skill published in the GitHub repository dcc-mcp/dcc-mcp-houdini (12 stars, last pushed yesterday), licensed MIT. It adds 56 tokens to every session and 777 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
maya-import-to-scene
Pipeline stage — structured asset import. Consume an AssetDescriptor produced by maya-asset-source and import the asset (FBX, OBJ, USD) into the current Maya scene via cmds.file(). Handles axis/unit conversion, MaterialMode, PlacementHint, and optional target collection grouping. Returns an ImportToSceneResult with…
usd-tools
Infrastructure skill — low-level OpenUSD scene inspection and validation: read layer stacks, traverse prims, validate USD schemas. Use when working directly with raw USD files (usda, usdc, usdz) or verifying USD compliance. Not for Maya-specific USD export — use maya-pipelineexportusd for that. Not for full DCC…
maya-rigging
Authoring stage — character / prop rigging: joints, IK, skin clusters, deformers, blend shapes, control curves, skin weights, constraints, and optional rig framework detection. Use when constructing rigs. Not for keyframe animation (maya-animation), pose libraries (maya-pose-library), or final scene assembly…
maya-mesh-ops
Authoring stage — typed polygon construction and editing: loft, lathe, instance arrays, pivots, mirror, combine, separate, and cleanup. Use for creating or modifying polygon topology from explicit scene inputs. Not for primitive creation (use maya-primitives), construction-history or DG inspection (use…
maya-dynamics
Authoring stage - classic Maya dynamics primitives: rigid bodies, force fields, and field connections. Use for small simulation setup steps before baking with maya-animation. Not for keyframe editing (maya-animation), mesh modeling (maya-mesh-ops), or viewport output (maya-render).
maya-pose-library
Authoring stage — save / load / mirror character poses as JSON presets. Use for reusable pose libraries on rigged characters. Not for keyframe animation (maya-animation) or rigging setup (maya-rigging).