squid-perf

squid-perf is a skill for Claude Code from subsquid-labs/portal-mcp-server. It costs 98 tokens per session (3,524 once invoked), scanned A, original, MIT.

A tool for comparing how quickly one or more Squid SDK deployments synchronize indexed data. It creates an HTML report and a Markdown summary with timing details.

In plain words
What is it for?
Use it to compare services across deployments, inspect wall-clock time, active processing time, downtime, restarts, and metrics for services that appear in only some deployments.
Why use it?
It separates processing time from downtime and shows results at matching block-progress points, making deployment performance differences easier to locate.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: mentions subagents.

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is ./squid-perf-output/.

Part of the portal plugin — 4 skills, 1 MCP server shipped together

Good fit Use it to compare services across deployments, inspect wall-clock time, active processing time, downtime, restarts, and metrics for services that appear in only some deployments.

Compare 6 skills from other repositories ↓
Install

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.

Clone the repo
git clone --depth 1 https://github.com/subsquid-labs/portal-mcp-server
agentmods
npx agentmods add skills/subsquid-labs/portal-mcp-server/squid-perf

Made for: Claude Code.

Or install portal, the plugin that ships this one along with the rest of its 4 skills, 1 MCP server.

Wrote 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.

agentmods badge for squid-perf

README.md
[![agentmods](https://agentmods.dev/badge/skills/subsquid-labs/portal-mcp-server/squid-perf/github.svg)](https://agentmods.dev/skills/subsquid-labs/portal-mcp-server/squid-perf)
Your own site
<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.

agentmods 80×15 button for squid-perf

Your own site · 80×15
<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>
Per session 98 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,524 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 10d ago against content hash 30138c8eb7d3, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-10, from the pricing page.

Security

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.

The scan reads SKILL.md. This mod also ships 8 executable files (scripts/cache-key.mjs, scripts/fetch-logs.sh, scripts/parse.mjs, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

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.

plugins/portal/skills/squid-perf/SKILL.md · 232 lines

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-arbitrum in 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-processor progress lines → (ts, current_block, target_block, rate, mapping_rate, items_per_sec, eta).
    • Tier 2 (always if present): sqd:multicall latency lines, restarts (detected via current_block going 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).
  • 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 where current >= 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 actual lastBlock with 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 to lastBlock (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 in report.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.mjs resolves 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; .done sentinel written atomically after successful fetch. --force-refresh ignores cache. Interrupted runs (no sentinel) are treated as absent.
  • Fetching: parallel Bash (not subagents), one per deployment, wraps sqd logs in expect to 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.

Read the full file on GitHub · 232 lines

Changes

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.

  1. 10d ago First seen · 232 lines · 98 tokens per session scan A 30138c8eb7d3

Subscribe to this mod's changes

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.

Related

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.

nirholas/three.ws · 67 tokens

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.

nirholas/three.ws · 50 tokens

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…

j4flmao/agent-skills · 128 tokens

deploy-check

Pre-deployment checklist — verify contracts compile, tests pass, and deployment config is correct.

protokol/solidity-typescript-hardhat-template · 17 tokens

new-contract

Scaffold a new Solidity contract with test, Ignition module, and tasks following project patterns.

protokol/solidity-typescript-hardhat-template · 18 tokens

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…

aptos-labs/aptos-agent-skills · 102 tokens