By robotnealan
Plan, build, and review 3D models with Claude Code and modeling MCPs (Rhino, Houdini). Parametric, idempotent, and frank about your geometry.
Adversarial geometry-correctness reviewer. Reasons over the geometry summary frank-review passes it -- topology, scale, units, naked edges, self-intersection, manifoldness -- and flags defects that make a model invalid, unrenderable, or unfabricable.
Confirms exact, current Houdini node types, parameter names, and VEX function usage against live introspection and authoritative SideFX docs before frank emits a procedural network. Use when a build needs a verified SOP/parm/VEX detail rather than a guessed one.
Searches docs/solutions/ for applicable past modeling learnings via frontmatter metadata (tool gotchas, capture/render policies, parametric and verification patterns, conventions). Use before planning or building in a documented area so frank's institutional knowledge carries forward.
Audits a modeling generator's parametric shape — named param block, idempotent scope isolation, re-runnability, and guard discipline — and advises on structure. Use when a frank-build generator is drafted or under review and you want design judgment on its parametric integrity, not line-level findings.
Confirms exact, current RhinoScript / RhinoCommon signatures and parameter shapes against live introspection and authoritative docs before frank emits modeling code. Use when a build needs a verified call signature, enum value, or method behavior rather than a guessed one.
Write and run an idempotent, scope-isolated, named-parameter-block generator that builds the planned model through the connected modeling MCP, then capture the result. Use when the user says 'build this model', 'generate the geometry', 'run the build', 'make the sculpture/part/scene', or when a frank-plan modeling plan is ready to execute.
Document a recently solved modeling problem to compound frank's craft knowledge. Use when 'that worked', 'it's fixed', 'the geometry is clean now', 'document this gotcha', or after frank-build/frank-review surfaces and resolves a modeling failure worth recording.
Produce a structured modeling plan before any geometry is built — intake the reference, choose the artifact type and fidelity target, survey the live document, ground primitive choices via researcher dispatch, and design the named parameter block plus geometric verification assertions. Use when the user says 'plan this model', 'how should we model X', 'plan the sculpture/part/scene', or when a reference image is ready to turn into a build.
Capture the built model from a pinned camera, compare it adversarially against the reference via two reviewer agents, and iterate toward human-accepted fidelity. Use when the user says 'review this model', 'does it match the reference', 'check the build', 'critique the render', or after `frank-build` produces geometry that needs to be judged against a target.
Check the modeling MCP connection and tell frank which tool it's driving. Detects the Claude Code harness and the connected modeling MCP family (Rhino vs Houdini), confirms a live connection, and records units/tolerance/scope so frank knows what it may write to. Use when 'set up frank', 'connect my modeler', or 'check the modeling MCP'.
Uses power tools
Uses Bash, Write, or Edit tools
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Plan, build, and review 3D models with Claude Code — through a modeling MCP (Rhino or Houdini).
Claude Code plugin · 5 skills · 6 agents
frank is a Claude Code plugin that turns a modeling MCP server into a disciplined design partner. It plans the form before touching geometry, builds it as a re-runnable parametric generator, reviews the result against your reference — and it's frank about what's wrong with your geometry.
Honest about your topology.
LLM-driven CAD usually fails the same ways: hallucinated API calls, magic-number scripts you can't tune, geometry that duplicates or stomps your existing model, and "looks done" with no actual verification. frank encodes the opposite as a workflow:
frank drives a modeling application through an MCP server — it does nothing on its own. You need:
Claude Code (CLI, desktop, or IDE).
A modeling MCP server connected to Claude Code — one of:
| Modeler | MCP server | What frank needs |
|---|---|---|
| Rhino | a RhinoMCP server, e.g. jingcheng-chen/rhinomcp | mcp__rhino__* tools available; Rhino running with its MCP addon started |
| Houdini | capoomgit/houdini-mcp | mcp__houdini__* tools available; Houdini running with the socket server started — see docs/houdini-setup.md for a hardened, step-by-step setup (the upstream has a few install gotchas frank documents and patches) |
Confirm a server is live with claude mcp list — you should see rhino or houdini as ✓ Connected.
frank is tool-agnostic: the same plan → build → review flow drives whichever modeler is connected, by loading that tool's reference pack.
claude plugin marketplace add robotnealan/frank # add the marketplace from GitHub
claude plugin install frank@frank-marketplace # install the plugin
Then run /reload-plugins in Claude Code to activate the skills and agents — no restart needed. Verify with:
claude plugin details frank@frank-marketplace # lists 5 skills + 6 agents
/reload-pluginsmay print0 skills— that's a delta counter (zero newly added), not a failure; the skills are active. See the install learning for this and other gotchas.
git clone https://github.com/robotnealan/frank
claude plugin marketplace add /path/to/frank # add by local path
claude plugin install frank@frank-marketplace
Re-run /reload-plugins after editing any skill or agent to pick up changes. The plugin's marketplace.json uses "source": "./" (plugin at the marketplace root) — on Claude Code a relative source must start with ./; bare "." is rejected.
With a modeling MCP connected, the workflow is five slash commands:
/frank-setup # verify the connection; record units, tolerance, existing layers/networks
/frank-plan # design the form: artifact type, fidelity, primitives, the param block + assertions
/frank-build # emit + run an idempotent, scope-isolated parametric generator; capture the result
/frank-review # capture → compare → adjust against your reference, with your sign-off
/frank-compound # record a solved gotcha so the next model doesn't rediscover it
You don't have to use all five — /frank-build "a parametric helical coil" works on its own. frank-plan and frank-review add rigor for harder or reference-driven forms.
npx claudepluginhub robotnealan/frank --plugin frankUltra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Curate auto-memory, promote learnings to CLAUDE.md and rules, extract proven patterns into reusable skills.
Memory compression system for Claude Code - persist context across sessions
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.