Agent skill

Venice Crypto Rpc

by veniceai in veniceai/skills

Use Venice as a pay-per-call JSON-RPC proxy to 27 EVM, Starknet, and Solana networks.

MITAuto-check passedBackend & APIs

Install Venice Crypto Rpc

skills CLI
$ npx skills add veniceai/skills --skill venice-crypto-rpc -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install veniceai/skills venice-crypto-rpc --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/veniceai/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/venice-crypto-rpc .claude/skills/venice-crypto-rpc && rm -rf skills-src

Use ~/.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/

Facts

Skill name
venice-crypto-rpc
GitHub stars
144
Token cost
~3.2k tokens
SKILL.md length
1,253 words
Files
1
Skills in repo
22
Repo updated
First seen
Licence
MIT

At a glance

Use Venice as a pay-per-call JSON-RPC proxy to 27 EVM, Starknet, and Solana networks.

  • Tasks that involve Smart contracts
  • SKILL.md covers Supported networks, Send a JSON-RPC request, Pricing and Unsupported methods, plus 4 more sections
  • Calls curl; reaches api.venice.ai; needs VENICE_API_KEY
  • Tasks that involve Realtime and WebSockets

What it does

Venice Crypto Rpc is an agent skill from veniceai/skills. Use Venice as a pay-per-call JSON-RPC proxy to 27 EVM, Starknet, and Solana networks. Covers the public GET /crypto/rpc/networks, POST /crypto/rpc/{network}, chain families and their explicit per-family method allowlists, the 1×/2×/4× method-tier pricing model (~$7e-7 per credit), the per-minute rate limit and per-user request serialization, idempotency keys for safe retries, single vs batch (≤100) requests, and the unsupported stateful/WebSocket methods (ethsubscribe, ethnewFilter, Subscribe, etc.).

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Smart contracts, Realtime and WebSockets and Rate limiting. It works with Solana. The repository describes itself as: Agent Skills for the Venice.ai API. One folder per surface area, each with a SKILL.md for agent runtimes (Cursor, Claude, Codex, etc.). The licence is MIT.

When your agent uses it

  • Tasks that involve Smart contracts
  • Tasks that involve Realtime and WebSockets
  • Tasks that involve Rate limiting

Example prompts

  • “/venice-crypto-rpc”

Requirements

  • A credential in VENICE_API_KEY

What it can do on your machine

Read from SKILL.md and the folder at commit 5eaeac5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.venice.ai

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • VENICE_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Venice Crypto Rpc loads about 3.2k tokens when it runs. Until then it costs about 132 tokens; SKILL.md has 1,253 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~132
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k

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.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated 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); files beside SKILL.md are not scanned.

SKILL.md

The full file from veniceai/skills at commit 5eaeac5, republished under its MIT licence (© veniceai). 1,253 words, ~3,162 tokens.

Download SKILL.mdSave it as .claude/skills/venice-crypto-rpc/SKILL.md (or your agent's skills folder).
name
venice-crypto-rpc
description
Use Venice as a pay-per-call JSON-RPC proxy to 27 EVM, Starknet, and Solana networks. Covers the public GET /crypto/rpc/networks, POST /crypto/rpc/{network}, chain families and their explicit per-family method allowlists, the 1×/2×/4× method-tier pricing model (~$7e-7 per credit), the per-minute rate limit and per-user request serialization, idempotency keys for safe retries, single vs batch (≤100) requests, and the unsupported stateful/WebSocket methods (eth_subscribe, eth_newFilter, *Subscribe, etc.).

Venice Crypto RPC (JSON-RPC proxy)

Venice exposes a multi-chain JSON-RPC proxy billed per call. Same request shape as Alchemy / Infura — change the base URL and pay per credit from your Venice balance (DIEM → earned credits → bundled credits → USD) or an x402 wallet.

EndpointAuthNotes
GET /crypto/rpc/networksNone (public)Returns { "networks": [...] }, sorted alphabetically.
POST /crypto/rpc/{network}Bearer API key (INFERENCE or ADMIN) or SIGN-IN-WITH-X (x402 wallet)Forward a JSON-RPC 2.0 request (single or batch).

Supported networks

bash
curl https://api.venice.ai/api/v1/crypto/rpc/networks

It currently returns 27 slugs (always verify — the catalog grows):

arbitrum-mainnet    arbitrum-sepolia
avalanche-mainnet   avalanche-fuji
base-mainnet        base-sepolia
blast-mainnet       blast-sepolia
bsc-mainnet         bsc-testnet
ethereum-mainnet    ethereum-sepolia    ethereum-holesky
linea-mainnet       linea-sepolia
optimism-mainnet    optimism-sepolia
polygon-mainnet     polygon-amoy
robinhood-mainnet   robinhood-testnet
solana-mainnet      solana-devnet
starknet-mainnet    starknet-sepolia
zksync-mainnet      zksync-sepolia

Use the slug as {network} in the proxy path. An unknown slug is a 400. The spec's example list for /networks omits blast-mainnet / blast-sepolia, but the live endpoint and proxy include them — trust GET /crypto/rpc/networks, and don't hardcode a client-side allowlist.

Chain families

Each network speaks exactly one method family, and the allowlist is enforced per family. Sending an EVM method to a Solana network (or the reverse) is a 400, not a pass-through.

FamilyNetworks
evmEverything except Starknet and Solana, including Robinhood Chain (an Arbitrum Orbit L2).
starknetstarknet-mainnet, starknet-sepolia
solanasolana-mainnet, solana-devnet

The allowlists are explicit method names, not prefixes: a method in a supported namespace that isn't on the list (e.g. an unlisted debug_* or trace_* method) is rejected. The EVM list is shared by every EVM network, so a chain-specific method (zks_*, linea_*, bor_*) passes Venice's check on any EVM chain but only works upstream on its own chain.

Send a JSON-RPC request

Single call
bash
curl -X POST https://api.venice.ai/api/v1/crypto/rpc/ethereum-mainnet \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
json
{ "jsonrpc": "2.0", "id": 1, "result": "0x1" }

Each request object must have a string method; otherwise 400.

Batch (up to 100 calls)
bash
curl -X POST https://api.venice.ai/api/v1/crypto/rpc/base-mainnet \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1},
    {"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":2}
  ]'
  • An empty array or more than 100 items ⇒ 400.
  • A single unsupported method in a batch ⇒ the entire batch fails with 400, and the message lists every offending method. (A WebSocket-only method fails the batch immediately with its own message naming just that method.)
  • Give every item a unique id: billing pairs response items to requests by id.
Drop-in with viem
ts
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http('https://api.venice.ai/api/v1/crypto/rpc/ethereum-mainnet', {
    fetchOptions: { headers: { Authorization: `Bearer ${process.env.VENICE_API_KEY}` } },
  }),
})

Pricing

Credits per call = baseCredits[chain] × methodTier, at $0.0000007 (7e-7) per credit.

Base creditsChains
20Ethereum, Base, Optimism, Arbitrum, Polygon, Linea, Avalanche, BSC, Blast, Robinhood, Starknet (mainnets and testnets).
30zkSync Era, Solana.
TierMultiplierMethods
Standard1×EVM core (eth_call, eth_getBalance, eth_blockNumber, eth_chainId, eth_getLogs, eth_estimateGas, eth_feeHistory, eth_getBlockReceipts, eth_getProof, eth_simulateV1, eth_sendRawTransaction, …), net_version / net_listening / net_peerCount, web3_clientVersion / web3_sha3, ERC-4337 bundler (eth_sendUserOperation, eth_estimateUserOperationGas, eth_getUserOperationByHash, eth_getUserOperationReceipt, eth_supportedEntryPoints, pimlico_getUserOperationGasPrice, pimlico_getUserOperationStatus), chain extensions (zks_*, linea_*, bor_* — listed methods only), all listed starknet_* methods, and Solana methods (getAccountInfo, getBalance, getLatestBlockhash, getProgramAccounts, sendTransaction, simulateTransaction, …).
Advanced2×trace_block, trace_call, trace_callMany, trace_filter, trace_transaction, trace_rawTransaction, debug_traceBlock, debug_traceBlockByHash, debug_traceBlockByNumber, debug_traceCall, debug_traceTransaction, debug_storageRangeAt, txpool_inspect, txpool_status, arbtrace_block / _call / _callMany / _filter / _transaction. EVM only.
Large4×trace_replayBlockTransactions, trace_replayTransaction, txpool_content, arbtrace_replayBlockTransactions, arbtrace_replayTransaction, and Solana getLargestAccounts / getSupply.

Examples:

  • Standard EVM call (20 × 1 = 20 credits) = $0.000014
  • Advanced trace on Ethereum (20 × 2) = $0.000028
  • Large trace replay (20 × 4) = $0.000056
  • zkSync or Solana standard call (30 × 1) = $0.000021
  • Solana getLargestAccounts (30 × 4) = $0.000084

Error billing:

  • An item that comes back with a JSON-RPC error (HTTP 200 — e.g. bad params, method not available on that chain) is billed a flat 5 credits instead of its tier. In a batch, a success item whose id doesn't match a request is also billed 5.
  • If the upstream node returns HTTP 4xx, each item is billed 5 credits. Upstream 402, 429, and 5xx are billed 0.
  • Requests Venice rejects itself (400, 401, 402, 429) are not billed.

Before forwarding, Venice checks that the balance of your current consumption currency covers the estimated full-tier cost; otherwise 402.

Response headers

Set on every response relayed from the node (any status) and on idempotent replays; responses Venice generates itself (validation errors, 402, 429, upstream-fetch 500) don't carry them.

HeaderMeaning
X-Venice-RPC-CreditsTotal credits charged (sum over the batch). On a replay it repeats the original call's credits, although the replay itself is not billed.
X-Venice-RPC-Cost-USDDollar cost to 8 decimal places.
X-Request-ID32-char correlation ID — include in support tickets.
Idempotent-Replayed"true" when served from the idempotency cache.

On 2xx the Content-Type is always application/json; upstream error bodies are sanitized before being forwarded. The spec also lists X-Balance-Remaining for x402 callers, but the proxy does not set it — use GET /x402/balance/{walletAddress}.

Unsupported methods

These always return 400:

  • Stateful filter methods — eth_newFilter, eth_newBlockFilter, eth_newPendingTransactionFilter, eth_getFilterChanges, eth_getFilterLogs, eth_uninstallFilter. Filter state is pinned to one backend and a load-balanced HTTP proxy can't keep it. Use eth_getLogs instead.
  • WebSocket-only methods — EVM eth_subscribe / eth_unsubscribe and Solana *Subscribe / *Unsubscribe (account, block, logs, program, root, signature, slot, slotsUpdates, vote). This proxy is HTTP only.
  • Wallet / miner methods — eth_sign, eth_accounts, eth_getWork, eth_submitWork, eth_mining, eth_hashrate.
  • Solana add-ons and legacy aliases — getAsset* (DAS) and deprecated getConfirmed*.
  • Cross-family methods — starknet_* or Solana getBalance on an EVM chain, eth_call on Solana, etc.
  • Anything else not on the allowlist. The error message names the rejected methods.
Show full SKILL.md (465 more words)Show less

Idempotency

Set Idempotency-Key to a string matching [A-Za-z0-9_-]{1,255} for safe retries:

bash
curl -X POST https://api.venice.ai/api/v1/crypto/rpc/ethereum-mainnet \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Idempotency-Key: send-tx-2026-04-21-nonce-42" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x..."],"id":1}'
  • The full response (status, body, credits, X-Request-ID) is cached for 24 hours keyed on (user, idempotency-key).
  • A replay with the same body returns the cached response with Idempotent-Replayed: true and is not billed again. Replays still count toward the per-minute rate limit.
  • Same key + different body ⇒ 400.
  • A key that doesn't match the pattern is silently ignored (the request runs without idempotency) — validate keys client-side.
  • Caching is best-effort and happens after the response is sent; a replay that arrives before the original finishes is not deduplicated.

Use this for state-mutating methods (eth_sendRawTransaction, eth_sendUserOperation, Solana sendTransaction) so a network retry doesn't double-broadcast.

Rate limits and concurrency

  • 100 requests per minute per user. Every request counts, including ones later rejected with 400 and idempotent replays.
  • Over the cap ⇒ 429 with X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset (Unix seconds). The breach also shows in GET /api_keys/rate_limits/log (ADMIN key only) as modelId: "endpoint:api/v1/crypto/rpc".
  • A batch counts as one request, so batching is the way to raise throughput.
  • Requests are processed one at a time per user. A concurrent request waits briefly (~0.5 s) and otherwise gets 429 "Another request for this user is in flight". Retry with jitter, or batch instead of fanning out in parallel.
  • There is no daily credit cap. (The spec text still mentions a 10,000,000-credits/24h cap; it no longer applies.)
  • Upstream calls time out after 30 s.

Errors

StatusTypical cause
400Unknown network slug, empty body or batch, batch > 100, item without a string method, unsupported / WebSocket / filter / cross-family method, idempotency-key reuse with a different body.
401Invalid Bearer key or invalid SIGN-IN-WITH-X.
402No credentials at all (x402 auth challenge with authOptions); balance below the estimated cost; per-key spend limit reached; or an x402 wallet under $0.10 (body carries top-up instructions — see venice-x402).
429Per-minute cap, another request from the same user still in flight, the generic API error budget, or x402's 5-concurrent-request limit.
500Upstream fetch failed / timed out, or the service is misconfigured. Safe to retry with the same Idempotency-Key.
otherNon-2xx statuses from the upstream node are passed through (sanitized).

Patterns

  • Multi-chain dashboards — One API key covers every network. No per-chain keys to rotate.
  • High-throughput indexing — Batch up to 100 calls per request; each item is billed individually, but it's one request against the rate limit and the one-at-a-time rule.
  • Wallet-based (x402) RPC — Top up USDC on Base or Solana, then send SIGN-IN-WITH-X. A 402 means low credit and carries top-up instructions.
  • Cost tracking — Log X-Venice-RPC-Credits and X-Venice-RPC-Cost-USD per request (skip responses with Idempotent-Replayed: true, which weren't billed); aggregate by method to see where credits go. Ledger entries use the SKU crypto-rpc-<network>.
  • Safe transaction submission — Always send an Idempotency-Key with eth_sendRawTransaction so client retries within 24 hours replay instead of rebroadcasting.

© veniceai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/venice-crypto-rpc of veniceai/skills.

Open the folder on GitHubat commit 5eaeac5

Compare with similar skills

Venice Crypto Rpc 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.

Venice Crypto Rpc compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Venice Crypto Rpc this skillveniceai/skills144—~3.2kAutomated safety check: PassMIT
Switchboard Oracle SDKinternet-court/internet-court-skill6.6k2 repos~2.9kAutomated safety check: PassApache-2.0
Raptor Dexagiprolabs/claude-trading-skills410—~2.2kAutomated safety check: PassMIT
Okx Dex Trenchesnirholas/three.ws229—~2.6kAutomated safety check: PassMIT
Solana Devsolana-foundation/solana-dev-skill573—~3.8kAutomated safety check: PassMIT
RadarAuditware/radar154—~2.1kAutomated safety check: PassGPL-3.0

Similar skills

  • Switchboard Oracle SDK

    internet-court/internet-court-skill

    Covers integrating Switchboard oracles on Solana: pull feeds, oracle quotes, VRF randomness and Surge WebSocket streaming, from both the TypeScript SDK and Rust.

    6.6k GitHub starsUsed in 2 repos~2.9k tokens
    Backend & APIsAuto-check passed
  • Raptor Dex

    agiprolabs/claude-trading-skills

    Self-hosted Solana DEX aggregator by SolanaTracker — multi-hop routing across 25+ DEXes, WebSocket streaming, Yellowstone Jet TPU submission, no rate limits

    410 GitHub stars~2.2k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Okx Dex Trenches

    nirholas/three.ws

    Read-only on-chain research for pump.fun and other meme-token launchpads (Solana / BSC / X Layer / TRON).

    229 GitHub stars~2.6k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Solana Dev

    solana-foundation/solana-dev-skill

    A skill your agent uses when user asks to "build a Solana dapp", "write an Anchor program", "create a token", "debug Solana errors", "set up wallet connection", "test my Solana program", "fuzz my…

    573 GitHub stars~3.8k tokensUpdated 2 days ago
    Backend & APIsAuto-check passed
  • Radar

    Auditware/radar

    Use radar for smart contract security analysis, AST generation, and detection template development.

    154 GitHub stars~2.1k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Safe Solana Builder

    Frankcastleauditor/safe-solana-builder

    A skill your agent uses whenever the user wants to write, scaffold, or build a Solana smart contract or program from scratch.

    145 GitHub stars~3.6k tokensUpdated 6 days ago
    Backend & APIsAuto-check passed

More from veniceai/skills

All 22 skills in this repo
  • Picks which Venice text model to call for a prompt based on privacy tier, input modality, capabilities and cost, and decides when to escalate from a local agent.

    144 GitHub stars~5.2k tokensUpdated 5 days ago
    Auto-check passed
  • Venice Models API

    veniceai/skills

    Documents Venice's model discovery endpoints, GET /models, /models/traits and /models/compatibility_mapping, so an agent can pick a model by capability, constraint or price.

    144 GitHub stars~4.3k tokensUpdated 5 days ago
    Auto-check passed
  • Venice API Keys

    veniceai/skills

    Manages Venice API keys through the /api_keys endpoints: create, list, update and revoke keys, set spending limits, and read rate limits.

    144 GitHub stars~3.8k tokensUpdated 5 days ago
    Auto-check passed
  • Venice API Overview

    veniceai/skills

    High-level map of the Venice.ai API: base URL, auth modes per endpoint, endpoint categories, response headers, pricing model, error shape and versioning.

    144 GitHub stars~3.5k tokensUpdated 5 days ago
    Auto-check passed
  • Venice Audio Music

    veniceai/skills

    Async music, sound-effect and long-form voice generation via Venice.

    144 GitHub stars~3.1k tokensUpdated 5 days ago
    Auto-check passed
  • Venice Audio Speech

    veniceai/skills

    Generate speech from text via POST /audio/speech, and clone a voice via POST /audio/voices.

    144 GitHub stars~3.6k tokensUpdated 5 days ago
    Auto-check passed

Works with

Categories

Questions about Venice Crypto Rpc

What does Venice Crypto Rpc do?

Use Venice as a pay-per-call JSON-RPC proxy to 27 EVM, Starknet, and Solana networks. Venice Crypto Rpc is an agent skill from veniceai/skills. Use Venice as a pay-per-call JSON-RPC proxy to 27 EVM, Starknet, and Solana networks.

When should I use Venice Crypto Rpc?

Venice Crypto Rpc fits situations like: tasks that involve Smart contracts; tasks that involve Realtime and WebSockets; tasks that involve Rate limiting.

How do I install Venice Crypto Rpc in Claude Code?

Run `npx skills add veniceai/skills --skill venice-crypto-rpc -a claude-code`. Or copy the skill folder (skills/venice-crypto-rpc in veniceai/skills) into .claude/skills/venice-crypto-rpc in your project. Claude Code loads it when a task matches its description.

How do I install Venice Crypto Rpc in Codex?

Run `npx skills add veniceai/skills --skill venice-crypto-rpc -a codex`. Or copy the skill folder (skills/venice-crypto-rpc in veniceai/skills) into .agents/skills/venice-crypto-rpc in your project. Codex loads it when a task matches its description.

Can I use Venice Crypto Rpc in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add veniceai/skills --skill venice-crypto-rpc -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/venice-crypto-rpc, .gemini/skills/venice-crypto-rpc, .github/skills/venice-crypto-rpc and .opencode/skills/venice-crypto-rpc in your project.

What does Venice Crypto Rpc need to run?

Going by SKILL.md and its folder, Venice Crypto Rpc needs the command-line tools its instructions call (curl) and credentials named VENICE_API_KEY. Our summary lists: A credential in VENICE_API_KEY.

Does Venice Crypto Rpc access the network?

SKILL.md names 1 domain. In commands or code: api.venice.ai; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Venice Crypto Rpc safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Venice Crypto Rpc use?

Venice Crypto Rpc is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Venice Crypto Rpc use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Venice Crypto Rpc?

Skills that share tags, products or a category with Venice Crypto Rpc: Switchboard Oracle SDK (internet-court/internet-court-skill, 6.6k stars), Raptor Dex (agiprolabs/claude-trading-skills, 410 stars), Okx Dex Trenches (nirholas/three.ws, 229 stars) and Solana Dev (solana-foundation/solana-dev-skill, 573 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Venice Crypto Rpc?

veniceai (a GitHub organization) maintains it in veniceai/skills, which has 144 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 5, 2026.

Source: veniceai/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.