Product Appeal Analyzer
curiositech/some_claude_skills
Evaluate product desirability, market positioning, and emotional resonance—the complement to friction analysis.
Benchmark and profile the Dynamo frontend (dynamo.frontend HTTP + tokenizer + KV router) against mock workers (dynamo.mocker).
$ npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ai-dynamo/dynamo dynamo-frontend-benchmark --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ai-dynamo/dynamo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/dynamo-frontend-benchmark .claude/skills/dynamo-frontend-benchmark && rm -rf skills-srcUse ~/.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/
Install the "dynamo-frontend-benchmark" agent skill from https://github.com/ai-dynamo/dynamo/tree/main/.agents/skills/dynamo-frontend-benchmark into .claude/skills/dynamo-frontend-benchmark/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dynamo-frontend-benchmark", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ai-dynamo/dynamo/tree/main/.agents/skills/dynamo-frontend-benchmarkType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ai-dynamo/dynamo dynamo-frontend-benchmark --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ai-dynamo/dynamo.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/dynamo-frontend-benchmark .agents/skills/dynamo-frontend-benchmark && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dynamo-frontend-benchmark" agent skill from https://github.com/ai-dynamo/dynamo/tree/main/.agents/skills/dynamo-frontend-benchmark into .agents/skills/dynamo-frontend-benchmark/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dynamo-frontend-benchmark", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ai-dynamo/dynamo dynamo-frontend-benchmark --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ai-dynamo/dynamo.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/dynamo-frontend-benchmark .cursor/skills/dynamo-frontend-benchmark && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "dynamo-frontend-benchmark" agent skill from https://github.com/ai-dynamo/dynamo/tree/main/.agents/skills/dynamo-frontend-benchmark into .cursor/skills/dynamo-frontend-benchmark/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dynamo-frontend-benchmark", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ai-dynamo/dynamo.git --path .agents/skills/dynamo-frontend-benchmark--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ai-dynamo/dynamo dynamo-frontend-benchmark --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ai-dynamo/dynamo.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/dynamo-frontend-benchmark .gemini/skills/dynamo-frontend-benchmark && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "dynamo-frontend-benchmark" agent skill from https://github.com/ai-dynamo/dynamo/tree/main/.agents/skills/dynamo-frontend-benchmark into .gemini/skills/dynamo-frontend-benchmark/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dynamo-frontend-benchmark", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ai-dynamo/dynamo dynamo-frontend-benchmarkInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ai-dynamo/dynamo.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/dynamo-frontend-benchmark .github/skills/dynamo-frontend-benchmark && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "dynamo-frontend-benchmark" agent skill from https://github.com/ai-dynamo/dynamo/tree/main/.agents/skills/dynamo-frontend-benchmark into .github/skills/dynamo-frontend-benchmark/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dynamo-frontend-benchmark", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ai-dynamo/dynamo dynamo-frontend-benchmark --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ai-dynamo/dynamo.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/dynamo-frontend-benchmark .opencode/skills/dynamo-frontend-benchmark && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "dynamo-frontend-benchmark" agent skill from https://github.com/ai-dynamo/dynamo/tree/main/.agents/skills/dynamo-frontend-benchmark into .opencode/skills/dynamo-frontend-benchmark/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dynamo-frontend-benchmark", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
dynamo-frontend-benchmarkBenchmark and profile the Dynamo frontend (dynamo.frontend HTTP + tokenizer + KV router) against mock workers (dynamo.mocker).
Dynamo Frontend Benchmark is an agent skill from ai-dynamo/dynamo. Benchmark and profile the Dynamo frontend (dynamo.frontend HTTP + tokenizer + KV router) against mock workers (dynamo.mocker). Use when measuring frontend throughput/latency, A/B-testing a frontend change, or on-CPU/off-CPU profiling the frontend or mock workers to find bottlenecks. Covers topology setup, CPU isolation, aiperf load generation, perf/BPF profiling, throughput analysis, and the sharp edges of this setup.
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts (for example `scripts/analyze_folded.py`, `scripts/capture_offcpu.sh` and `scripts/env.sh`).
It sits in Frontend & Design, covering A/B testing. The repository describes itself as: A Datacenter Scale Distributed Inference Serving Framework. The licence is Apache-2.0.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 1668037. It shows what the files ask for, not the result of running them.
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.
Ships 11 files in scripts/ (Shell and Python), which the agent can run.
Shell commands in SKILL.md call:
bashpython3pipgitFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Dynamo Frontend Benchmark loads about 3.5k tokens when it runs. Until then it costs about 112 tokens; SKILL.md has 1,536 words of instructions outside code blocks.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
sudo bash scripts/isolate.sh # optional but recommended: CPU isolation. **perf access** for on-CPU profiling: `sudo sysctl kernel.perf_event_paranoid=-1sudo DYN_REPO=$DYN_REPO bash scripts/capture_offcpu.sh --frontend --conc 2048a non-root `pkill` can't reap it — use `sudo pkill -9 -f aiperf`.cpusets on system.slice). Re-run `sudo bash scripts/isolate.sh` after everyAutomated 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); the scripts in this folder are not scanned.
The full file from ai-dynamo/dynamo at commit 1668037, republished under its Apache-2.0 licence (© ai-dynamo). 1,536 words, ~3,479 tokens.
.claude/skills/dynamo-frontend-benchmark/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.End-to-end harness for measuring and profiling the Dynamo frontend under load
from a configurable client, served by mock workers so the backend isn't the
variable under test. Bundled scripts are in scripts/; they all
source env.sh, which requires DYN_REPO to point at your Dynamo checkout.
export DYN_REPO=/path/to/dynamo # checkout with built .venv
# 0. one-time: request plane up, venv built, FlameGraph cloned (see Setup)
sudo bash scripts/isolate.sh # optional but recommended: CPU isolation
BLOCK_SIZE=512 FRONTEND_LD_PRELOAD=$DYN_REPO/bench/jemalloc/libjemalloc.so \
bash scripts/start.sh # frontend (pinned) + N mockers
WARMUP_REQUESTS=512 bash scripts/run_aiperf.sh # one measured run
python3 scripts/extract_throughput.py $DYN_REPO/bench/results/aiperf-* # robust numbers
bash scripts/stop.sh # teardown + etcd drainFor an A/B: teardown + restart between every run, interleave arms, take the
median of 3+. For profiling: profile_oncpu.sh (non-root) and
capture_offcpu.sh (sudo).
dynamo.mocker): simulate generation with --speedup-ratio
(e.g. 1e6 = ~instant) and KV-cache block bookkeeping. Not a real vLLM
worker — no GPU compute. Use them to remove backend variance, not to model
production backends.--concurrency, so
throughput ≈ concurrency / request_latency (Little's law). This is the
single most important fact for interpreting results (see Pitfalls).:2379) + NATS with JetStream (:4222):etcdctl endpoint health.nohup nats-server -js > /tmp/nats.log 2>&1 & then confirm ss -ltn | grep 4222.uv venv && source .venv/bin/activate && (cd lib/bindings/python && maturin develop --uv --release). Rust changes
require rebuilding this; never run a build concurrently with a benchmark —
it steals cores and contaminates results.pip install aiperf (the GenAI-perf successor) in some venv; set AIPERF.git clone https://github.com/brendangregg/FlameGraph and set
FLAMEGRAPH_DIR.libjemalloc.so and pass it
via FRONTEND_LD_PRELOAD to start.sh. Big alloc-churn reductions vs glibc.sudo sysctl kernel.perf_event_paranoid=-1 kernel.kptr_restrict=0. Off-CPU (sched tracepoints / BPF) still needs root
even with paranoid=-1 (tracefs event files are root-only).env.sh)FRONTEND_CORES (e.g. 0-3), OTHER_CORES (e.g. 4-23): frontend is pinned
with taskset; mockers + client share OTHER_CORES. Keep FRONTEND_CORES
small so frontend CPU effects are observable, but give OTHER_CORES enough
headroom that the client doesn't starve the mockers (see Pitfalls).BLOCK_SIZE: frontend --kv-cache-block-size and mocker --block-size MUST
match. Affects both sides — see "Block size" below.DYN_TOKENIZER = fastokens (PCRE2+rayon, fast) or default (HF tokenizers).DYN_TOKENIZER_CACHE / _BYTES: L1 prefix cache (helps with shared system prompts).The harness encodes hard-won protocol. Follow it or results drift:
stop.sh then start.sh).
The KV router and tokenizer cache accumulate state across runs; reusing an
instance inflates later runs.stop.sh does this; verify with
count_workers). Dead frontends/mockers leave lease-backed keys that expire,
but verify the slate is clean before starting.WARMUP_REQUESTS=512) to prime the prefix cache + warm the
allocator before the measured phase. The first run after a fresh build is
still a cold-start outlier — discard it.FRONTEND_LD_PRELOAD for stable allocator behavior.run_aiperf.sh knobs (env overrides): CONCURRENCY, REQUEST_COUNT,
WARMUP_REQUESTS. Default workload: shared-system-prompt 48000 +
user-context 12000 (≈60k-token prompts), output-tokens-mean 500,
conversation-turn-mean 4.
bash scripts/profile_oncpu.sh --frontend --conc 2048 # or --mocker, or --pid N --cores 0-3
python3 scripts/analyze_folded.py <out>/oncpu.foldedperf record -F 99 --call-graph dwarf. DWARF is required: release
.sos have no frame pointers, so -g (FP unwinding) truncates Rust stacks.mpstat) and process CPU (pidstat) so you
can see if it saturates. analyze_folded.py prints top self-time leaves.sudo DYN_REPO=$DYN_REPO bash scripts/capture_offcpu.sh --frontend --conc 2048
python3 scripts/analyze_folded.py <out>/offcpu_bcc.folded --offcpuoffcputime-bpfcc -df (duration-weighted, user+kernel,
folded) and perf -e sched:sched_switch --call-graph dwarf (backup, reliable
Rust user frames). bcc's folded format uses a literal - frame to separate
user (root→leaf) from kernel stacks; the innermost user frame before - is
what called into the blocking syscall — analyze_folded.py --offcpu aggregates by it.futex/park = tokio workers idle (no runnable task)
OR mutex; epoll = waiting on network/backend; __lll_lock_wait = glibc
malloc-arena contention; rayon = fastokens pool idle/spin. Lock contention
in app code shows as parking_lot/Mutex/RwLock frames — if those are ~0%, the
process is idle-waiting, not internally serialized.extract_throughput.py <artifact_dir> — recompute from raw
JSONL (do NOT trust the finalizer; see Pitfalls). Closed-loop sanity check:
throughput ≈ concurrency / mean_latency.mpstat per-core %idle → busy = 100 - idle;
or cpu_ms_per_req × req_per_s / 1000. Per-request CPU = Δ(utime+stime from
/proc/<pid>/stat)/CLK_TCK ÷ requests.request_latency ≈ TTFT + (output_tokens × ITL).
If TTFT dominates and explodes under load → queueing upstream of generation.Benchmark methodology
concurrency / latency, NOT the server's max throughput. Idle frontend cores
usually mean the system is latency-bound (each request spends most of its
life waiting between streamed tokens), not that the frontend is slow. To push
the frontend toward saturation: raise concurrency AND lower per-request
latency (smaller block size → more frontend KV work; shorter outputs).OTHER_CORES, it can saturate those cores and starve the mockers
— making a "collapse" that's really the load generator running out of CPU.
Always check the CPU split (pidstat mocker vs mpstat on OTHER_CORES);
if cores are pegged but the mocker is low, the client is the bottleneck.aiperf
profile_export.jsonl is written incrementally — kill the
finalizer and use extract_throughput.py. Don't wait for
profile_export_aiperf.json.pkill can't reap it — use sudo pkill -9 -f aiperf.
Stray aiperf workers hold ZMQ/mmap resources and make the next run stall.--benchmark-duration N (time-based) avoids the giant fixed --request-countProfiling
sched:sched_switch) and BPF
(offcputime) require root even at perf_event_paranoid=-1 (tracefs event
files are root-readable only). On-CPU perf -F.. -g works non-root at paranoid≤1.perf --off-cpu is often NOT compiled in (needs BUILD_BPF_SKEL=1);
it silently no-ops with a warning. Use offcputime-bpfcc / bpftrace instead.perf --call-graph dwarf; bcc still gives good kernel stacks + partial
user frames. analyze_folded.py handles the bcc - separator.Topology / environment
BLOCK_SIZE=2048 requests are received but the
mocker never emits a token (40s hang → client cancel, output_tokens=0,
"Failed to publish response"). 512 and 1024 work; 64 is realistic. Smoke-test
a single request after any block-size change.isolate.sh sets runtime cgroup
cpusets on system.slice). Re-run sudo bash scripts/isolate.sh after every
reboot. unisolate.sh reverts. Check: cat /sys/fs/cgroup/system.slice/cpuset.cpus.effective.start.sh.FRONTEND_LD_PRELOAD); the mocker runs
on glibc, so its alloc churn can show glibc-arena lock contention
(__lll_lock_wait under __libc_free/Vec::finish_grow) in off-CPU. Preload
jemalloc on the mocker too if that matters.DYN_RUNTIME_NUM_WORKER_THREADS and DYN_RUNTIME_MAX_BLOCKING_THREADS are
applied to every runtime the bindings build, including the one the pyo3 async
bridge builds for itself. Thread counts are still worth checking in
/proc/<pid>/task: if the bridge builds its runtime before a
DistributedRuntime is created, the process ends up with two runtimes and
twice the threads the configuration describes (a warning says so).Known result (calibration): with mock workers, the Dynamo frontend is rarely the bottleneck — it's latency/IO-bound, sitting ~60–85% of its pinned cores with ~0 internal lock contention. Frontend micro-opts therefore show flat e2e throughput on this setup; their value is CPU-efficiency/headroom. To make the frontend the bottleneck, use small block size + high concurrency, or real backends, or move the client off-box.
scripts/)env.sh — config; set DYN_REPO; everything else overridable.start.sh — launch frontend (pinned, optional FRONTEND_LD_PRELOAD/FASTOKENS_*)NUM_WORKERS mockers; port preflight, etcd worker-count verify.stop.sh — teardown both + drain etcd to 0.run_aiperf.sh — one measured run (CONCURRENCY/REQUEST_COUNT/WARMUP_REQUESTS).isolate.sh / unisolate.sh — CPU isolation (sudo; Lite by default, --full for max).smoke.sh — single-request sanity check (use after any topology/block-size change).profile_oncpu.sh — on-CPU perf + flamegraph (non-root): --frontend/--mocker/--pid.capture_offcpu.sh — off-CPU bcc + perf (sudo): --frontend/--mocker/--pid.analyze_folded.py — top self-time (on-CPU) or innermost-frame + category (off-CPU).extract_throughput.py — robust throughput/latency from raw aiperf JSONL.© ai-dynamo, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 11 other files (scripts) in .agents/skills/dynamo-frontend-benchmark of ai-dynamo/dynamo.
Open the folder on GitHubat commit 1668037
Dynamo Frontend Benchmark 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Dynamo Frontend Benchmark this skillai-dynamo/dynamo | 8.2k | — | ~3.5k | Automated safety check: Notes | Apache-2.0 | |
| Product Appeal Analyzercuriositech/some_claude_skills | 243 | 1 repos | ~2.4k | Automated safety check: Pass | MIT | |
| Landing CraftEliasOulkadi/shokunin | 114 | — | ~4.5k | Automated safety check: Pass | MIT | |
| Finding ExperimentsPostHog/posthog | 40k | — | ~783 | Automated safety check: Pass | Custom licence | |
| Htmldropooiyeefei/ccc | 494 | — | ~5.2k | Automated safety check: Warn | MIT | |
| Ecommerce Landing Pagenexscope-ai/eCommerce-Skills | 1.1k | — | ~617 | Automated safety check: Pass | MIT |
curiositech/some_claude_skills
Evaluate product desirability, market positioning, and emotional resonance—the complement to friction analysis.
EliasOulkadi/shokunin
Build conversion-optimized landing pages with CRO frameworks (Conversion Research, LIFT Model), scroll effects, A/B testing, personalization, form optimization, and Core Web Vitals (INP, LCP, CLS).
PostHog/posthog
Resolves a PostHog experiment reference from natural language to a concrete experiment ID by browsing experiment-list (not feature-flag tools), with disambiguation when multiple experiments match.
ooiyeefei/ccc
Reach for this skill when an HTML artifact — report, deck, brief, mockup, dashboard, proposal, spec, or landing page, whether the user already has it or you just generated it — needs to reach other…
nexscope-ai/eCommerce-Skills
Audit and optimize e-commerce landing pages for conversion. An agent skill from nexscope-ai/eCommerce-Skills.
nexscope-ai/eCommerce-Skills
High-converting landing pages — campaign pages, collection pages, seasonal promos, A/B testing
ai-dynamo/dynamo
Create self-contained interactive HTML code-review dashboards from GitHub or GitLab pull requests, checked-out branch diffs, or supplied unified diffs, with correctness and safe-to-merge scores…
ai-dynamo/dynamo
Knowledge of Fern's built-in MDX component library (accordions, callouts, cards, steps, tabs, code blocks, API-reference snippets, and more) for authoring docs pages.
ai-dynamo/dynamo
Knowledge of Fern's site-level navigation and structure configuration — how a docs site is organized in docs.yml (and product/version .yml files) using sections, pages, folders, tabs, tab variants…
ai-dynamo/dynamo
Drives persistent Claude Code, Codex, or OpenCode agent sessions through a Dynamo OpenAI/Anthropic-compatible endpoint over Agent Client Protocol (ACP).
ai-dynamo/dynamo
Selects and freezes a question-driven AIPerf workload, objective, load policy, and Kubernetes execution manifest for a successfully deployed Dynamo candidate.
ai-dynamo/dynamo
Sets up a structured debugging session for a Dynamo bug — pull the report from a Linear ticket, GitHub issue, or pasted text, capture the environment, create a persistent worklog markdown file, and…
Categories
Benchmark and profile the Dynamo frontend (dynamo.frontend HTTP + tokenizer + KV router) against mock workers (dynamo.mocker). Dynamo Frontend Benchmark is an agent skill from ai-dynamo/dynamo.mocker).
Dynamo Frontend Benchmark fits situations like: measuring frontend throughput/latency; A/B-testing a frontend change; on-CPU/off-CPU profiling the frontend; mock workers to find bottlenecks.
Run `npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a claude-code`. Or copy the skill folder (.agents/skills/dynamo-frontend-benchmark in ai-dynamo/dynamo) into .claude/skills/dynamo-frontend-benchmark in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a codex`. Or copy the skill folder (.agents/skills/dynamo-frontend-benchmark in ai-dynamo/dynamo) into .agents/skills/dynamo-frontend-benchmark in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dynamo-frontend-benchmark, .gemini/skills/dynamo-frontend-benchmark, .github/skills/dynamo-frontend-benchmark and .opencode/skills/dynamo-frontend-benchmark in your project.
Going by SKILL.md and its folder, Dynamo Frontend Benchmark needs a shell and Python for the scripts in its folder and the command-line tools its instructions call (bash, python3, pip and git). Our summary lists: Python 3; A Bash shell.
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Dynamo Frontend Benchmark is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Dynamo Frontend Benchmark: Product Appeal Analyzer (curiositech/some_claude_skills, 243 stars), Landing Craft (EliasOulkadi/shokunin, 114 stars), Finding Experiments (PostHog/posthog, 40k stars) and Htmldrop (ooiyeefei/ccc, 494 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ai-dynamo (a GitHub organization) maintains it in ai-dynamo/dynamo, which has 8,245 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 8, 2026.
Source: ai-dynamo/dynamo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.