Agent skill

Perf Check

by mqtt-viewer in mqtt-viewer/mqtt-viewer

Verify MQTT Viewer stays smooth under heavy broker load using the local flood harness.

GPL-3.0Auto-check passedFrontend & Design

Install Perf Check

skills CLI
$ npx skills add mqtt-viewer/mqtt-viewer --skill perf-check -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mqtt-viewer/mqtt-viewer perf-check --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mqtt-viewer/mqtt-viewer.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/perf-check .claude/skills/perf-check && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
perf-check
GitHub stars
134
Token cost
~1.6k tokens
SKILL.md length
894 words
Files
1
Skills in repo
6
Repo updated
First seen
Licence
GPL-3.0

At a glance

Verify MQTT Viewer stays smooth under heavy broker load using the local flood harness.

  • Says check performance
  • SKILL.md covers The bar, Setup (one-time), Run and What to watch, plus 3 more sections
  • Calls just, python and brew
  • Run the flood test

What it does

Perf Check is an agent skill from mqtt-viewer/mqtt-viewer. Verify MQTT Viewer stays smooth under heavy broker load using the local flood harness. Use before merging changes to message handling, the topic tree, history, or the graph view, or when the user says "check performance", "run the flood test", or reports the app lagging on busy brokers.

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design. The repository describes itself as: The modern and open-source MQTT debugging and visualisation tool for Windows, Mac and Linux. The licence is GPL-3.0.

When your agent uses it

  • Says check performance
  • Run the flood test
  • Reports the app lagging on busy brokers

Example prompts

  • “check performance”
  • “run the flood test”
  • “/perf-check”

Requirements

  • Python 3

What it can do on your machine

Read from SKILL.md and the folder at commit 5a43d7c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • just
    • python
    • brew

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Perf Check loads about 1.6k tokens when it runs. Until then it costs about 75 tokens; SKILL.md has 894 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~75
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from mqtt-viewer/mqtt-viewer at commit 5a43d7c, republished under its GPL-3.0 licence (© mqtt-viewer). 894 words, ~1,597 tokens.

Download SKILL.mdSave it as .claude/skills/perf-check/SKILL.md (or your agent's skills folder).
name
perf-check
description
Verify MQTT Viewer stays smooth under heavy broker load using the local flood harness. Use before merging changes to message handling, the topic tree, history, or the graph view, or when the user says "check performance", "run the flood test", or reports the app lagging on busy brokers.

Performance check under broker load

The bar

Two brokers, each flooded at around 2000 msg/s across a wide topic tree, with the app connected to both. The UI must stay responsive: topic tree updates, panel interactions, and the graph view must not stutter or leak memory over several minutes. This reproduces what heavy public brokers like test.mosquitto.org do to the app.

Setup (one-time)

sh
# local brokers (macOS)
brew install mosquitto

# python env for the harness (and the rest of the checkout setup)
just setup

scripts/.venv is gitignored, so it does not exist in a fresh agent worktree. just setup (scripts/setup-worktree.sh) creates it with paho-mqtt, or symlinks the main checkout's venv if it cannot, and is safe to re-run. Check scripts/.venv/bin/python -c 'import paho.mqtt' before backgrounding a flood: a missing interpreter fails silently and looks like a broker with no traffic.

Run

Terminals 1 and 2, one broker each:

sh
mosquitto -p 1883
mosquitto -p 1884

Ports 1883/1884 are often taken on this machine (OrbStack binds 1883, other sessions leave mosquitto on 1884). Check with lsof -i :1883 -i :1884 and fall back to 11883/11884; the flood script and the app both accept any port. When running the flood scripts in the background, note their stdout is block-buffered (no tty), so verify throughput with timeout 3 mosquitto_sub -p <port> -t '#' | wc -l instead of reading their output.

Terminals 3 and 4, one flood each (each prints achieved msg/s once per second; confirm it holds the target rate):

sh
scripts/.venv/bin/python scripts/mqtt-flood.py --port 1883 --rate 2000
scripts/.venv/bin/python scripts/mqtt-flood.py --port 1884 --rate 2000

A single flood process tops out around 1,700 msg/s on this machine (paho's python client is the ceiling, not the broker). To hold a true 2,000, run two floods per broker at --rate 1000 rather than trusting the target. Each mqtt-flood.py process connects with its own client id (flood-<port>-<pid>), so two on one broker do not knock each other off. For sparkplug-flood.py, also give each its own --group (for example --group PlantA and --group PlantB; the default is Plant): two floods in the same group publish as the same edge nodes, and their interleaved seq numbers show up as false sequence gaps.

Add --topics 200000 to one of them when the change touches history, the topic tree or memory: high topic cardinality is a separate axis from throughput and several bounds only bite there.

Then run the app (just dev), connect to both brokers (localhost:1883 and localhost:1884), and exercise it for at least a few minutes.

scripts/mqtt-sim.py is the companion script for realistic varied cadences rather than sustained flood; use it when debugging behavior rather than throughput.

What to watch

  • Topic tree and message counters keep updating without multi-second freezes.
  • Selecting topics and opening the right panel stays instant.
  • The graph view (if the change touches it) holds an acceptable frame rate; it has culling/LOD/adaptive-fps logic that should degrade gracefully rather than freeze.
  • Memory: watch the process in Activity Monitor for unbounded growth over 5+ minutes.
  • CPU settles rather than climbing after you disconnect the floods.

Report concrete observations (achieved msg/s, where it stuttered, memory trend), not just "seems fine".

Reading memory correctly

Two things make RSS misleading, so judge growth only while the floods are still running:

  • macOS compresses an idle process's pages. Once the floods stop, RSS collapses (a run holding ~600 MB read as 34 MB) and tells you nothing.
  • In-RAM history is capped by DefaultMemoryBudgetBytes, 512 MB per connection, so two connections climb toward ~1 GB of retained messages by design. With Go's default GOGC the process sits well above that. Rising toward the budget is the eviction working, not a leak. What would be a leak is growth that keeps going after the budget is full.
Show full SKILL.md (315 more words)Show less

Benchmarking the message path

If the change is to ingest itself, a Go benchmark pins it down faster than watching the UI. Two traps:

  • receiveMessage debug-logs every message. That logging is off in production builds (backend/app/startup.go), but on in tests, where it costs roughly as much as the work itself: ingest measures ~700-800 ns per message with it off, ~1200 ns with it formatting to a discard handler, and ~4000 ns writing to the console handler. Swap in a discard handler with slog.SetDefault for the benchmark, or you are timing the logger.
  • Work handed to another goroutine does not get counted. Measure to completion: spin until the messages have actually landed in history before b.StopTimer(), otherwise deferring work looks like a speedup. runtime.NumGoroutine() sampled during the run is worth reporting too, since a backlog shows up there first.

Driving the app headlessly

scripts/serve-browser.sh runs the real backend and is drivable from any browser, including one your harness drives, which is usually easier than the native window. Two things to know: live message events already flow with no changes to the page, because the runtime loads /wails/custom.js itself. Do not inject that script tag by hand: it opens a second event WebSocket and every message count and rate reads double (see AGENTS.md).

On SIGTERM or Ctrl+C it waits up to 5 seconds for in-flight HTTP requests, then exits. Further signals during that wait are ignored, so give it the 5 seconds before reaching for kill -9. The open event WebSocket does not hold it up.

An agent-embedded browser or hidden tab can throttle requestAnimationFrame to about 2 fps (frames 1000 ms apart, zero long tasks), so rAF frame timing there means nothing and layout read straight after a resize can be stale. Measure main-thread load with a MessageChannel or setTimeout event-loop-lag sampler plus a longtask PerformanceObserver, and wait about a second after a resize before measuring.

© mqtt-viewer, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/perf-check of mqtt-viewer/mqtt-viewer.

Open the folder on GitHubat commit 5a43d7c

Compare with similar skills

Perf Check next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Perf Check compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Perf Check this skillmqtt-viewer/mqtt-viewer134—~1.6kAutomated safety check: PassGPL-3.0
Web Artifacts Builderanthropics/skills180k41 repos~769Automated safety check: PassApache-2.0
React Doctormakeplane/plane61k12 repos~657Automated safety check: PassAGPL-3.0
Impeccablebestofjs/bestofjs3.1k27 repos~2.6kAutomated safety check: PassMIT
Figma Design System Builderwarpdotdev/warp65k2 repos~4.4kAutomated safety check: PassAGPL-3.0
Web Interface Guidelines Reviewervercel-labs/openreview1.7k97 repos~308Automated safety check: PassNone

Similar skills

  • Web Artifacts Builder

    anthropics/skills

    Official

    Builds multi-component claude.ai HTML artifacts as a small React, TypeScript and Tailwind project, then bundles it into one shareable HTML file.

    180k GitHub starsUsed in 41 repos~769 tokens
    Frontend & DesignAuto-check passed
  • React Doctor

    makeplane/plane

    Scans React code for lint, accessibility, bundle size and architecture issues, reports a health score and checks that changes do not lower it.

    61k GitHub starsUsed in 12 repos~657 tokens
    Frontend & DesignAuto-check passed
  • Impeccable

    bestofjs/bestofjs

    A skill your agent uses when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a…

    3.1k GitHub starsUsed in 27 repos~2.6k tokens
    Frontend & DesignAuto-check passed
  • Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.

    65k GitHub starsUsed in 2 repos~4.4k tokens
    Frontend & DesignAuto-check passed
  • Web Interface Guidelines Reviewer

    vercel-labs/openreview

    Official

    Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my…

    1.7k GitHub starsUsed in 97 repos~308 tokens
    Frontend & DesignAuto-check passed
  • Tailwindcss Development

    anonaddy/anonaddy

    Always invoke when the user's message includes 'tailwind' in any form.

    4.9k GitHub starsUsed in 10 repos~865 tokens
    Frontend & DesignAuto-check passed

More from mqtt-viewer/mqtt-viewer

  • Changelog

    mqtt-viewer/mqtt-viewer

    Add or update the in-app "What's new" changelog for MQTT Viewer.

    134 GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Ds Figma Handover

    mqtt-viewer/mqtt-viewer

    Diff the Figma component library against the MQTT Viewer frontend and produce a handover doc listing exactly what code needs to change.

    134 GitHub stars~990 tokensUpdated yesterday
    Auto-check passed
  • Release

    mqtt-viewer/mqtt-viewer

    Publish a MQTT Viewer release end to end. An agent skill from mqtt-viewer/mqtt-viewer.

    134 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed
  • Ds Add Component

    mqtt-viewer/mqtt-viewer

    Add a new component to the design-system library, or formalize an existing one — scaffold its colocated .spec.json, classify its tier, author a Storybook story, and link it to Figma.

    134 GitHub stars~936 tokensUpdated yesterday
    Auto-check passed
  • Ds Implement Handover

    mqtt-viewer/mqtt-viewer

    Implement a Figma→code handover doc — apply the listed changes to Svelte components, update their colocated .spec.json and stories, and get pnpm ds:validate green.

    134 GitHub stars~853 tokensUpdated yesterday
    Auto-check passed

Questions about Perf Check

What does Perf Check do?

Verify MQTT Viewer stays smooth under heavy broker load using the local flood harness. Perf Check is an agent skill from mqtt-viewer/mqtt-viewer. Verify MQTT Viewer stays smooth under heavy broker load using the local flood harness.

When should I use Perf Check?

Perf Check fits situations like: says check performance; run the flood test; reports the app lagging on busy brokers.

How do I install Perf Check in Claude Code?

Run `npx skills add mqtt-viewer/mqtt-viewer --skill perf-check -a claude-code`. Or copy the skill folder (.claude/skills/perf-check in mqtt-viewer/mqtt-viewer) into .claude/skills/perf-check in your project. Claude Code loads it when a task matches its description.

How do I install Perf Check in Codex?

Run `npx skills add mqtt-viewer/mqtt-viewer --skill perf-check -a codex`. Or copy the skill folder (.claude/skills/perf-check in mqtt-viewer/mqtt-viewer) into .agents/skills/perf-check in your project. Codex loads it when a task matches its description.

Can I use Perf Check in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mqtt-viewer/mqtt-viewer --skill perf-check -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/perf-check, .gemini/skills/perf-check, .github/skills/perf-check and .opencode/skills/perf-check in your project.

What does Perf Check need to run?

Going by SKILL.md and its folder, Perf Check needs the command-line tools its instructions call (just, python and brew). Our summary lists: Python 3.

Does Perf Check access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Perf Check safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Perf Check use?

Perf Check is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Perf Check use?

About 1.6k tokens (SKILL.md is roughly 6.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Perf Check?

Skills that share tags, products or a category with Perf Check: Web Artifacts Builder (anthropics/skills, 180k stars), React Doctor (makeplane/plane, 61k stars), Impeccable (bestofjs/bestofjs, 3.1k stars) and Figma Design System Builder (warpdotdev/warp, 65k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Perf Check?

mqtt-viewer (a GitHub organization) maintains it in mqtt-viewer/mqtt-viewer, which has 134 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 8, 2026.

Source: mqtt-viewer/mqtt-viewer on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.