component-design

component-design is a skill for Claude Code, Codex from choxos/MathVizAgent. It costs 25 tokens per session (2,468 once invoked), scanned A, original, MIT.

Reusable building patterns for Manim, a Python tool that creates mathematical animations. They show how to package related visual objects into components that can be created, moved, styled, and animated together.

In plain words
What is it for?
Use them to build reusable Manim diagrams, plots, and other animated visual components with parameters and automatic redraws.
Why use it?
They reduce repeated code and keep complex visualizations easier to organize and reuse.

Skill for Claude CodeCodex

Part of the mathviz plugin — 6 skills, 4 commands, 6 agents shipped together

Install

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.

agentmods
npx agentmods add skills/choxos/mathvizagent/component-design
Any agent
npx skills add choxos/MathVizAgent --skill component-design
Clone the repo
git clone --depth 1 https://github.com/choxos/MathVizAgent

Made for: Claude Code, Codex.

Or install mathviz, the plugin that ships this one along with the rest of its 6 skills, 4 commands, 6 agents.

Wrote 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.

agentmods badge for component-design

README.md
[![agentmods](https://agentmods.dev/badge/skills/choxos/mathvizagent/component-design.svg)](https://agentmods.dev/skills/choxos/mathvizagent/component-design)
Your own site
<a href="https://agentmods.dev/skills/choxos/mathvizagent/component-design"><img src="https://agentmods.dev/badge/skills/choxos/mathvizagent/component-design.svg" alt="Measured on agentmods" height="20"></a>
Per session 25 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,468 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00025 $0.02468
Opus 5 $0.00013 $0.01234
Sonnet 5 $0.00005 $0.00494
Haiku 4.5 $0.00003 $0.00247

Measured 3d ago against content hash a9b0283420b5, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

component-design 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 3d 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.

plugins/mathviz/skills/component-design/SKILL.md · 433 lines

How it starts

The opening of the file, as written. The whole thing — 433 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Component Design

Patterns for creating reusable, well-structured Manim components.

VGroup Subclass Pattern

Basic Structure

class MyComponent(VGroup):
    """Reusable visualization component"""

    def __init__(self, param1, param2, **kwargs):
        super().__init__(**kwargs)

        # Store parameters
        self.param1 = param1
        self.param2 = param2

        # Build component
        self._build()

    def _build(self):
        """Construct the component's mobjects"""
        # Create child mobjects
        self.part_a = Circle(radius=self.param1)
        self.part_b = Square(side_length=self.param2)

        # Position relative to each other
        self.part_b.next_to(self.part_a, RIGHT)

        # Add to self (VGroup)
        self.add(self.part_a, self.part_b)

Usage

# Create instance
component = MyComponent(1.0, 0.5)

# It's a VGroup, so all VGroup methods work
component.scale(0.5)
component.move_to(LEFT * 2)
component.set_color(BLUE)

# Animate
self.play(Create(component))
self.play(component.animate.shift(RIGHT * 3))

Real-World Example: Distribution Plot

from scipy.stats import norm

class DistributionPlot(VGroup):
    """Self-contained probability distribution visualization"""

    def __init__(
        self,
        func,                # Distribution function
        x_range=(-3, 3),     # Domain
        color=BLUE,
        show_axes=True,
        **kwargs
    ):
        super().__init__(**kwargs)

        self.func = func
        self.x_min, self.x_max = x_range
        self.color = color

        self._build(show_axes)

    def _build(self, show_axes):
        # Calculate y range from function
        x_vals = np.linspace(self.x_min, self.x_max, 100)
        y_vals = [self.func(x) for x in x_vals]
        y_max = max(y_vals) * 1.1

        # Create axes
        self.axes = Axes(
            x_range=[self.x_min, self.x_max, 1],
            y_range=[0, y_max, y_max/4],
            x_length=6,
            y_length=4,
            tips=False
        )

        # Create plot
        self.curve = self.axes.plot(self.func, color=self.color)

        # Add to component
        if show_axes:
            self.add(self.axes)
        self.add(self.curve)

    # Helper methods
    def get_point(self, x):
        """Get point on curve at x value"""
        return self.axes.c2p(x, self.func(x))

    def get_area(self, x_start, x_end, color=None):
        """Get shaded area under curve"""
        return self.axes.get_area(
            self.curve,
            x_range=[x_start, x_end],
            color=color or self.color
        )

    def get_vertical_line(self, x, color=RED):
        """Get vertical line from x-axis to curve"""
        return DashedLine(
            start=self.axes.c2p(x, 0),
            end=self.get_point(x),
            color=color
        )

Read the full file on GitHub · 433 lines

Changes

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.

  1. 3d ago First seen · 433 lines · 25 tokens per session scan A a9b0283420b5

Subscribe to this mod's changes

component-design is a skill published in the GitHub repository choxos/MathVizAgent (1 stars, last pushed 3mo ago), licensed MIT. It adds 25 tokens to every session and 2,468 once invoked, about $0.0001 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-31.

Related

Other skills, from other repositories

mcp-manimgl

Skill "mcp-manimgl" from daedalus/mcp-manimgl, covering mcp-manimgl skill, description, usage and examples.

daedalus/mcp-manimgl · 0 tokens

manim-video

Create production-quality Manim Community Edition explainer videos, math animations, algorithm visualizations, paper/PDF explainers, data stories, and architecture diagrams. Use when a user asks for 3Blue1Brown-style programmatic animation, Manim scene planning/coding/rendering, Docker-based Manim setup, or…

ApliroAI/manim-video-lab · 72 tokens

figure-composer

Compose one publication-grade multi-panel figure. Entry from a one-line claim + data refs, OR from an existing figure via deriveoutlinetask(png). Runs a per-figure loop: outline (12-col grid, per-panel ask + labelbudget) → fan-out one Task subagent per panel (each loads figure-style) → tile + stamp letters →…

emaballarin/ccplugins · 157 tokens

research-poster

Turns a PDF abstract into a polished, fully-editable scientific conference poster (.pptx + PDF + preview) in a matched house style, with honest charts, verified citations, big readable typography, and a render-and-QA loop. Use whenever the user wants to make, build, design, or create a research poster, scientific…

adamjali/research-poster-skill · 166 tokens

motion

The motion, gesture & feel lens for a frontend build — where every animation earns its place and the feel IS the product. Use after the build works, when adding interaction physics, when a UI feels sluggish / janky or the gesture fights the scroll, or auditing animations. The one shift: every animation maps to a…

IamK77/Skill · 231 tokens

figure-engine

Activate when the user needs to generate, refine, or evaluate academic figures, diagrams, or statistical plots. Uses PaperBanana to transform text descriptions or data files into publication-quality illustrations via direct Python API call. Fallback: matplotlib/seaborn.

TobiasBlask/open-paper-machine · 53 tokens