Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/asmyshlyaev177/react-horizontal-scrolling-menunpx agentmods add skills/asmyshlyaev177/react-horizontal-scrolling-menu/menu-testing-ssrWrote 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/asmyshlyaev177/react-horizontal-scrolling-menu/menu-testing-ssr)<a href="https://agentmods.dev/skills/asmyshlyaev177/react-horizontal-scrolling-menu/menu-testing-ssr"><img src="https://agentmods.dev/badge/skills/asmyshlyaev177/react-horizontal-scrolling-menu/menu-testing-ssr/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/asmyshlyaev177/react-horizontal-scrolling-menu/menu-testing-ssr"><img src="https://agentmods.dev/badge/skills/asmyshlyaev177/react-horizontal-scrolling-menu/menu-testing-ssr.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00144 | $0.03434 |
| Opus 5.5 | $0.00058 | $0.01374 |
| Sonnet 5.5 | $0.00029 | $0.00687 |
| Haiku 4.5 | $0.00014 | $0.00343 |
Grade A, and why
menu-testing-ssr 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 1mo 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 — 437 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Testing and SSR
The library is SSR-safe but client-only: the first render emits plain
markup and IntersectionObserver attaches client-side. What the server
paints is whatever useIsVisible's defaultValue argument says; real
visibility exists only after the observer fires in the browser. Every
integration and testing decision below follows from that.
Setup
An SSR-safe menu page for Next.js App Router. The data-cy /
data-visible attributes double as the test contract used by the
Playwright patterns below.
// app/menu/page.tsx
'use client';
import React from 'react';
import {
ScrollMenu,
VisibilityContext,
type publicApiType,
} from 'react-horizontal-scrolling-menu';
import 'react-horizontal-scrolling-menu/dist/styles.css';
const items = Array.from({ length: 10 }, (_, i) => `item-${i}`);
function LeftArrow() {
const api = React.useContext<publicApiType>(VisibilityContext);
// Bakes useIsVisible('first', true): the server paints a DISABLED left
// arrow — correct for a row scrolled to its start.
const disabled = api.useLeftArrowVisible();
return (
<button disabled={disabled} onClick={() => api.scrollPrev()}>
Left
</button>
);
}
function RightArrow() {
const api = React.useContext<publicApiType>(VisibilityContext);
// Bakes useIsVisible('last', false): the server paints an ENABLED right arrow.
const disabled = api.useRightArrowVisible();
return (
<button disabled={disabled} onClick={() => api.scrollNext()}>
Right
</button>
);
}
function Card({ itemId }: { itemId: string }) {
const api = React.useContext<publicApiType>(VisibilityContext);
const visible = api.useIsVisible(itemId, false);
return (
<div data-cy={itemId} data-visible={visible} style={{ width: '160px' }}>
{itemId}
</div>
);
}
export default function Page() {
return (
<ScrollMenu LeftArrow={LeftArrow} RightArrow={RightArrow}>
{items.map((id) => (
<Card itemId={id} key={id} />
))}
</ScrollMenu>
);
}
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.
- 1mo ago Changed 0f6b0a60fe74
- 1mo ago First seen · 437 lines · 144 tokens per session scan A 4acb2e570c11
menu-testing-ssr is a skill published in the GitHub repository asmyshlyaev177/react-horizontal-scrolling-menu (788 stars, last pushed yesterday), licensed MIT. It adds 144 tokens to every session and 3,434 once invoked, about $0.0006 per session on Opus 5.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
compiler-commit
Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits with the [compiler] or [rust-compiler] prefix.
compiler-port
Port a compiler pass from TypeScript to Rust. Gathers context, plans the port, implements in a subagent with test-fix loop, then reviews.
compiler-verify
Use when you need to run all compiler checks (tests, lint, format) before committing. Detects whether TS or Rust code changed and runs the appropriate checks.
develop-ai-functions-example
Develop examples for AI SDK functions. Use when creating, running, or modifying examples under examples/ai-functions/src to validate provider support, demonstrate features, or create test fixtures.
capture-api-response-test-fixture
For provider response parsing tests, we aim at storing test fixtures with the true responses from the providers (unless they are too large in which case some cutting that does not change semantics is advised).
creating-online-evaluations
Author continuously-running online evaluations in PostHog AI observability, grounded in real failure modes you've identified. Use when the user wants evaluations that automatically score new generations or whole traces going forward — "create an eval to catch X", "continuously check that responses do Y", "turn these…