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/subsquid-labs/portal-mcp-servernpx agentmods add skills/subsquid-labs/portal-mcp-server/squid-perfWrote 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/subsquid-labs/portal-mcp-server/squid-perf)<a href="https://agentmods.dev/skills/subsquid-labs/portal-mcp-server/squid-perf"><img src="https://agentmods.dev/badge/skills/subsquid-labs/portal-mcp-server/squid-perf/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/subsquid-labs/portal-mcp-server/squid-perf"><img src="https://agentmods.dev/badge/skills/subsquid-labs/portal-mcp-server/squid-perf.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.00098 | $0.03524 |
| Opus 5 | $0.00049 | $0.01762 |
| Sonnet 5 | $0.00020 | $0.00705 |
| Haiku 4.5 | $0.00010 | $0.00352 |
Grade A, and why
squid-perf 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 10d 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 — 232 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Squid performance comparison
Compare sync-time performance across one or more Squid SDK deployments. Produces a self-contained HTML report and a Markdown summary in the current working directory.
Skill dir: Resolve the directory containing this SKILL.md once and use its absolute path as <skill-dir>. Do not assume a Claude-specific installation path.
Output dir: ./squid-perf-output/ (CWD-relative; created if missing)
Locked-in design (do not re-litigate)
These are settled — don't ask the user again unless they change something.
- Comparison unit: per-service (e.g., compare
settlement-arbitrumin deployment A vs B independently of other services). Services present in every compared deployment go in comparison tables; services present in only some go in a "solo metrics" section with a warning. - Sync time metric: report wall-clock elapsed (headline), active processing time (excludes gaps > 120s — configurable via
--downtime-threshold), and downtime (wall − active). All three per breakpoint. If a restart occurs, measure the final uninterrupted processor segment and report the full restart count separately. - Block alignment: assume all compared indexers cover the same block ranges (user's stated assumption). Use relative-from-first-log per deployment. If detected ranges diverge noticeably across deployments for a given service, emit a loud warning in the summary but still render.
- Tier of metrics extracted:
- Tier 1 (always):
sqd:processor/sqd:batch-processorprogress lines →(ts, current_block, target_block, rate, mapping_rate, items_per_sec, eta). - Tier 2 (always if present):
sqd:multicalllatency lines, restarts (detected viacurrent_blockgoing backward), and warning/error/critical totals. Detailed warning/error samples are capped at 1000/service. - Tier 3 (auto-discovered): any logger namespace appearing ≥10 times in ALL compared deployments for the SAME service; extract numeric fields; render as a small stats table (count, mean, median, p95).
- Tier 1 (always):
- Breakpoint selection: percentage-based — 10 evenly-spaced breakpoints at 10%, 20%, ..., 100% of each service's effective range, where effective range =
(catchupBlock - firstBlock).catchupBlock= first progress row wherecurrent >= target - 10(indexer reached chain tip). Anything past this is steady-state, not sync, and is excluded from the metric.- Rationale: fraction-based clips (e.g., "99.9% of observed range") fail when the idle tail has many progress rows but few blocks — a deployment synced in 4 min and idled 10 days ends up with 99.9% of its blocks still inside the sync phase but 100% of the time inside the tail.
- If a service has no catchup point in the logs (
stillSyncing), falls back to actuallastBlockwith a "never caught up" warning. - If a service was already caught up at the first progress row (
wasAlreadyCaughtUp), the entire captured window is the idle tail — emit a warning and fall back tolastBlock(metrics reflect steady-state latency, not sync). - For multi-deployment comparison: shared effective range =
min(catchupBlock across deployments) - firstBlock. - Output surfaces both the percentage and the absolute block count (e.g., "10% (500K blocks)"). Override via
--breakpoints 500K,1M,5M,10M,20M(absolute block offsets from firstBlock; catchup logic does NOT apply to overrides).
- Catchup gap threshold:
CATCHUP_GAP_BLOCKS = 10(constant inreport.mjs). Matches the indexer's own steady-state lag behind chain head; tuneable if a chain's head noise is higher. - Output: self-contained HTML (Chart.js inlined — no CDN), plus Markdown with tables only (no charts in MD, link to HTML at the top).
- HTML template: the HTML report MUST be rendered from
<skill-dir>/templates/report.html.report.mjsresolves this path relative to itself and substitutes placeholders rather than building markup via string concatenation. Edit the template to change layout/styling; do not inline HTML in the script. - Output layout:
./squid-perf-output/ ├── cache/ │ └── <ref-slug>__<since>.log (+ .capture-start metadata and .done sentinel) ├── <ISO-timestamp>/ │ ├── compare-syncs.json │ ├── parsed/<ref-slug>.json │ ├── report.html │ ├── report.md │ └── run.log └── latest -> <ISO-timestamp>/ - Caching:
(ref, since)keyed;.donesentinel written atomically after successful fetch.--force-refreshignores cache. Interrupted runs (no sentinel) are treated as absent. - Fetching: parallel Bash (not subagents), one per deployment, wraps
sqd logsinexpectto handle the"type \"it\" to fetch more logs"pagination prompt. Retries 3× with 10s backoff. Partial success is OK (continue with ≥1 fetched deployment); if all fail, abort. - Script language: Node (ESM, zero deps). Uses stdlib only. Shell scripts use bash + expect.
- Still-syncing detection: if last log timestamp ≤ 60s of fetch-start, flag as "live/partial" in summary.
What ships with it
19 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- scripts/cache-key.mjs 571 B runs code
- scripts/fetch-logs.sh 5.1 KB runs code
- scripts/parse.mjs 17 KB runs code
- scripts/preflight.sh 2.7 KB runs code
- scripts/report.mjs 62 KB runs code
- templates/report.html 211 KB
- tests/assert-parser.mjs 3.2 KB runs code
- tests/assert-report.mjs 2.0 KB runs code
- tests/fixtures/baseline.log 574 B
- tests/fixtures/compare-syncs.json 580 B
- tests/fixtures/current-levels.log 246 B
- tests/fixtures/fake-sqd 1.4 KB
- tests/fixtures/garbage.log 96 B
- tests/fixtures/optimized.log 506 B
- tests/fixtures/restart.log 328 B
- tests/fixtures/reverse-same-timestamp-restart.log 454 B
- tests/fixtures/same-timestamp-restart.log 328 B
- tests/fixtures/small-restart.log 328 B
- tests/run-tests.sh 37 KB runs code
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.
- 10d ago First seen · 232 lines · 98 tokens per session scan A 30138c8eb7d3
squid-perf is a skill published in the GitHub repository subsquid-labs/portal-mcp-server (1 stars, last pushed 2d ago), licensed MIT. It adds 98 tokens to every session and 3,524 once invoked, about $0.0005 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.
Other skills, from other repositories
bnb-chain-toolkit-guide
Guide to the BNB Chain Toolkit — a modular TypeScript toolkit for building, deploying, and interacting with smart contracts on BNB Chain. Includes BEP-20 token utilities, DeFi integrations, wallet management, and cross-chain bridging. Built for BNB Chain Hackathon by the Sperax team.
solana-toolkit-guide
Guide to the Solana Wallet Toolkit — vanity address generation with multi-threaded search, official Solana Labs libraries, Rust and TypeScript implementations. Includes wallet generation, custom address prefixes, and OG names on the blockchain.
blockchain-web3
Use this skill when asked about web3 frontend development, ethers.js, viem, wagmi, web3.js, wallet integration (MetaMask, Phantom, WalletConnect), dApp architecture, RPC providers (Alchemy, Infura), and TypeScript blockchain SDKs. Language: TypeScript. Covers reading blockchain state, sending transactions, wallet…
deploy-check
Pre-deployment checklist — verify contracts compile, tests pass, and deployment config is correct.
new-contract
Scaffold a new Solidity contract with test, Ignition module, and tasks following project patterns.
use-ts-sdk
Orchestrates TypeScript SDK integration for Aptos dApps. Routes to granular skills for specific tasks (client setup, accounts, transactions, view functions, types, wallet adapter). Use this skill for fullstack dApp integration or when multiple SDK concerns are involved. Triggers on: 'typescript sdk', 'ts-sdk', 'aptos…