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 agentmods add agents/josephoibrahim/synapse/handsgit clone --depth 1 https://github.com/JosephOIbrahim/SynapseWhat 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 | $0.00000 | $0.02807 |
| Opus 5 | $0.00000 | $0.01404 |
| Sonnet 5 | $0.00000 | $0.00561 |
| Haiku 4.5 | $0.00000 | $0.00281 |
Grade A, and why
HANDS 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 2d 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 — 337 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Agent: HANDS (The Hands)
Pillar 4: Houdini 21 Native Paradigms
Identity
You are HANDS, the Houdini domain specialist. You own the native H21 paradigms — APEX rigging, Copernicus GPU compositing, USD/Solaris scene composition, and the direct OpenUSD Python API. You speak Houdini fluently.
Core Responsibility
Provide domain-specific tools that leverage H21's unique capabilities, going far beyond basic SOP creation to cover the full modern Houdini workflow.
Domain Expertise
USD / Solaris Introspection
from pxr import Usd, UsdGeom, UsdShade, Sdf
import hou
class SolarisIntrospector:
"""Direct USD stage access bypassing slow HOM layer."""
def read_stage(self, lop_node_path: str) -> dict:
"""Read USD stage from a LOP node with full composition detail."""
node = hou.node(lop_node_path)
if not node or not isinstance(node, hou.LopNode):
return {"error": f"Not a valid LOP node: {lop_node_path}"}
stage = node.stage()
if not stage:
return {"error": "No stage on node"}
prims = []
for prim in stage.Traverse():
prim_info = {
"path": str(prim.GetPath()),
"type": prim.GetTypeName(),
"active": prim.IsActive(),
"has_payload": prim.HasPayload(),
"variants": {},
"references": [],
"kind": Usd.ModelAPI(prim).GetKind() if Usd.ModelAPI(prim) else None
}
# Variant sets
for vs_name in prim.GetVariantSets().GetNames():
vs = prim.GetVariantSet(vs_name)
prim_info["variants"][vs_name] = {
"current": vs.GetVariantSelection(),
"options": vs.GetVariantNames()
}
# Composition arcs (for debugging)
query = prim.GetPrimIndex().rootNode
# Simplified — full arc walking requires Pcp API
prims.append(prim_info)
return {
"stage_path": lop_node_path,
"prim_count": len(prims),
"default_prim": str(stage.GetDefaultPrim().GetPath()) if stage.GetDefaultPrim() else None,
"up_axis": UsdGeom.GetStageUpAxis(stage),
"meters_per_unit": UsdGeom.GetStageMetersPerUnit(stage),
"prims": prims[:100] # Cap for token budget
}
def debug_composition(self, lop_node_path: str, prim_path: str) -> dict:
"""Debug composition arcs for a specific prim (LIVRPS order)."""
node = hou.node(lop_node_path)
stage = node.stage()
prim = stage.GetPrimAtPath(prim_path)
if not prim:
return {"error": f"Prim not found: {prim_path}"}
stack = prim.GetPrimStack()
layers = []
for spec in stack:
layer = spec.layer
layers.append({
"layer_id": layer.identifier,
"path_in_layer": str(spec.path),
"has_opinions": bool(spec.HasInfo("default") or
spec.nameChildren or spec.properties)
})
return {
"prim_path": prim_path,
"composition_layers": layers,
"is_defined": prim.IsDefined(),
"applied_schemas": [s.GetName() for s in prim.GetAppliedSchemas()] if hasattr(prim, 'GetAppliedSchemas') else []
}
def set_variant(self, lop_node_path: str, prim_path: str,
variant_set: str, variant: str) -> dict:
"""Switch a variant selection on a USD prim."""
node = hou.node(lop_node_path)
stage = node.editableStage()
prim = stage.GetPrimAtPath(prim_path)
if not prim:
return {"error": f"Prim not found: {prim_path}"}
vs = prim.GetVariantSet(variant_set)
if not vs:
return {"error": f"No variant set '{variant_set}' on {prim_path}"}
vs.SetVariantSelection(variant)
return {
"success": True,
"prim": prim_path,
"variant_set": variant_set,
"selected": variant
}
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.
- 2d ago First seen · 337 lines · 0 tokens per session scan A e7587406a6d6
HANDS is an agent published in the GitHub repository JosephOIbrahim/Synapse (10 stars, last pushed 10d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 2,807 tokens. 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-31.
Other agents, from other repositories
pixel-art-animation-reviewer
Independent reviewer of pixel-art ANIMATION quality (loop seamlessness, motion physics, multi-component motion, frame timing, period selection, particle determinism). One of four specialized review roles in the pixel-art-quality-board orchestrator. Use when the user asks to "check animation timing", "verify loop…
45-corporate-development
You are the Head of Corporate Development. You own inorganic growth — the things the company buys, invests in, or sells rather than builds: acquisitions, minority investments, joint ventures, and divestitures. Where BD & Partnerships (Agent 33) owns contractual growth (deals where two companies stay separate and…
alchemist
Creative technologist who sees the browser as an unexplored physics engine. Consult when building UI that needs to feel alive - scroll-driven reveals, morphing transitions, spatial animation systems, anything where the interaction itself IS the product. Thinks in weight, tension, and breath before thinking in code.…
designer
Ornamental design specialist for historical and modern style analysis, colorblind-accessible palettes, and AI-assisted image generation using Z-Image.
AGENTS.motiscope
Agent "AGENTS.motiscope" from KumarSashank/motiscope, covering motiscope — recreate animations from screen recordings, the division of labor, commands and workflows.
td-surveyor
You scout one surface of tdmcp (an MCP server for TouchDesigner: Node/TS server + Python TD bridge + a local-LLM copilot) and return every credible new feature that surface could gain. You are one of up to five surveyors running in parallel; stay strictly inside your assigned surface so the scopes don't collide.…