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 Topman-14/mobius-mcp --skill mobius-perf-stakeoutgit clone --depth 1 https://github.com/Topman-14/mobius-mcpWrote 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/topman-14/mobius-mcp/mobius-perf-stakeout)<a href="https://agentmods.dev/skills/topman-14/mobius-mcp/mobius-perf-stakeout"><img src="https://agentmods.dev/badge/skills/topman-14/mobius-mcp/mobius-perf-stakeout/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/topman-14/mobius-mcp/mobius-perf-stakeout"><img src="https://agentmods.dev/badge/skills/topman-14/mobius-mcp/mobius-perf-stakeout.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.00073 | $0.01429 |
| Opus 5 | $0.00036 | $0.00714 |
| Sonnet 5 | $0.00015 | $0.00286 |
| Haiku 4.5 | $0.00007 | $0.00143 |
Grade A, and why
mobius-perf-stakeout 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 12d 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 — 38 lines — stays where its author put it; the contents beside it link to each section on GitHub.
mobius-perf-stakeout
"It feels slow" is vague on purpose — the user isn't wrong, but they can't tell you why, and network delay, JS-bound rendering, and a slowly growing memory leak all look identical from the outside while needing completely different fixes. Guessing which one it is wastes a round-trip; measuring takes one pass.
When to use this
- A vague sluggishness/jank report with no error attached.
- "It gets slower the longer I use it" — a leak suspicion.
- Before proposing a performance fix, to confirm which layer actually owns the delay.
Workflow
mobius_diagnose— CPU/memory profiling and this skill's later steps require the browser extension (CDP); confirm the tab is ready and has that capability first.- Baseline (network):
clear_logs, then drive the interaction once yourself —findthe control andclick(ref, { observe: { windowMs: 5000 } }), which returns the requests it fired without a second call. CheckdurationMson anything involved. Two distinct signals live here, don't stop at just the slowest one:- One request dominates the delay — network-bound. Look at whether it's a genuinely slow backend, an oversized
responseBody, or something that should've been cached/debounced/batched instead of re-fetched. Stop here. - The same method+URL appears more than once, clustered within milliseconds of each other — this is the network-visible fingerprint of a render loop, not organic traffic. Skip straight to step 4 instead of profiling first; a burst of identical requests is a much cheaper signal to spot than a CPU profile and points directly at the cause.
- One request dominates the delay — network-bound. Look at whether it's a genuinely slow backend, an oversized
- If network is fine (one clean call, or none) but the UI still lags:
start_cpu_profile(tabId, durationMs)bracketing the interaction, pollget_job_statusuntil done, thenget_job_result. Look for the heaviest self-time frames — long tasks, expensive re-renders, layout thrashing. A single hot frame that's the same function called once is "this component is just expensive"; the same frame appearing many times in one short profile is actually a render loop too (see step 4) — profile output can surface the same bug the network burst check does, from the other side. - Render loop or race condition (React
useEffectand equivalent reactivity in other frameworks): this is the same underlying bug family regardless of framework — something re-triggers work every render/update instead of once — so trace it the same way everywhere:- Confirm the pattern: repeated identical requests in step 2, or a CPU profile (step 3) dominated by the same function called repeatedly rather than one expensive call.
- Grep the component/module for the reactive trigger: a
useEffect/useMemo/useCallbackwhose dependency array is missing an entry (fires once then never stops re-syncing) or includes a new reference every render — an inline object/array/function literal, or a value derived without memoization — which re-fires on every render since referential equality never holds. Same idea in other frameworks: a Vuewatch/computed with an over-broad source, a Svelte reactive statement ($:) depending on something that changes every tick, Angular change detection re-running a getter that allocates a new object each call. - Missing cleanup is a common companion bug, not just a symptom: an effect that starts a subscription/interval/listener without a cleanup function compounds across every re-run, which is often why the loop gets worse over time rather than settling.
- Race condition (stale response wins): compare when each request was sent against when its response was applied — with
get_logs_sinceor the debug-session timeline, if a request fired first but its response-bearing event lands after a later request's, and the UI reflects the earlier (slower) one's data, that's a classic unaborted-fetch race (rapid search-as-you-type, tab-switching, or any handler re-firing before the previous call resolved). Grep for the call site: noAbortController, no "is this still the latest request" guard, or auseEffectthat doesn't cancel/ignore its previous in-flight call before firing a new one. - If it gets worse the longer the session runs and steps 4–5 don't explain it:
start_memory_profile, then repeat the interaction N times with a singlerun_sequenceof real clicks, then profile again and compare heap growth viaget_job_result. Use real actions rather than anevaluate_jsloop — a syntheticelement.click()can skip the very listeners and handlers that leak. A heap growing roughly linearly with identical repeated actions (rather than plateauing) points to a leak — unreleased event listeners, detached DOM nodes still referenced, or a cache that only ever grows. - Report which bucket it falls into with the specific evidence (the dominant request + its duration; the burst pattern + the offending effect/watcher; the heaviest frame; the heap delta per iteration) — not a raw profile dump.
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.
- 12d ago First seen · 38 lines · 73 tokens per session scan A 08c9be248ce2
mobius-perf-stakeout is a skill published in the GitHub repository Topman-14/mobius-mcp (18 stars, last pushed 23d ago), licensed MIT. It adds 73 tokens to every session and 1,429 once invoked, about $0.0004 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
debug-optimize-lcp
Guides debugging and optimizing Largest Contentful Paint (LCP) using Chrome DevTools MCP tools. Use this skill whenever the user asks about LCP performance, slow page loads, Core Web Vitals optimization, or wants to understand why their page's main content takes too long to appear. Also use when the user mentions…
systematic-debugging
Use when debugging a failing test, build error, or runtime issue that isn't immediately obvious. Guides a 4-phase root cause analysis instead of random fix attempts.
diagnose
Trace from a reproduced symptom to the source code that causes it. Pin the specific file and approximate line, rate confidence in the cause and clarity of the fix independently, and always propose a concrete fix.
repro-admin
Reproduce an EmDash admin UI bug. Attach a container, start the demo dev server, drive the admin with agent-browser using the dev-bypass session, and capture the reproduction as screenshots plus a replayable transcript.
log-error-digest
Analyze log files to troubleshoot errors, identify peak error periods, and produce error clustering, frequency statistics, and time distribution reports. Supports JSON, syslog, and Nginx formats with automatic detection. Use when a user uploads a .log file and asks to analyze errors, find patterns, debug issues, or…
byted-util-volcengine-detect-retry
An orchestration workflow for Volcengine Cloud Detect, a service that checks websites or network endpoints from test locations.