Files
jackwener__opencli/docs/adapters/browser/crates.md
jakevin 55088bbb28 feat: 13 read adapters across 5 new sites + 4 extensions (round 3) (#1346)
New sites (8 commands):
- npm    : search / package / downloads (registry.npmjs.org + api.npmjs.org)
- pypi   : package / downloads (pypi.org + pypistats.org)
- crates : search / crate (crates.io)
- mdn    : search (developer.mozilla.org)
- nvd    : cve (services.nvd.nist.gov)

Extensions (5 commands; +1 dblp/author surfaced in index):
- hf            : spaces (Hugging Face Spaces by likes / created_at / last_modified)
- dblp          : venue (search dblp's venue registry by acronym/topic)
- coingecko     : derivatives (perpetual / futures markets, 24h volume)
- stackoverflow : related (related questions for a given question id)

All commands hit public unauthenticated endpoints (Strategy.PUBLIC, browser:false),
typed-fail-fast on bad inputs (no silent fallback / clamp), and round-trip listing
ids into their detail commands where applicable.

Audits (all green vs baseline):
- typed-error-lint        : 196 = 196 baseline, no new
- silent-column-drop      : 103 = 103 baseline, no new
- listing-id-pairing      : 13 advisory (was 12; +1 = dblp/venue with no
                            corresponding venue-detail command)

Doc coverage : 120/120 adapter dirs documented (+5 new doc pages, +4 updated)
Manifest     : 722 entries (was 709; +13 commands)

Live verified:
- npm search react / npm package react / npm downloads react --period last-week
- npm downloads react --period 2025-01-01:2025-01-05
- pypi package requests / pypi downloads requests --period recent / overall
- crates search tokio / crates crate serde
- mdn search fetch
- nvd cve CVE-2021-44228
- hf spaces --limit 3
- dblp venue ICLR
- coingecko derivatives --limit 3
- stackoverflow related 79935770 --limit 3
- typed-error sanity: invalid CVE id, bad npm name, bad --period
2026-05-06 13:14:41 +08:00

2.1 KiB
Raw Permalink Blame History

crates.io

Mode: 🌐 Public · Domain: crates.io

Search and inspect crates on the public Rust crate registry. Both commands hit the unauthenticated crates.io/api/v1 directly.

Commands

Command Description
opencli crates search <query> Search the public crates.io registry by keyword
opencli crates crate <name> Single crate metadata (latest version, downloads, license, repo)

Usage Examples

# Free-text search (name / keywords / description)
opencli crates search tokio --limit 10
opencli crates search "async runtime" --limit 20

# Single-crate detail (name from search rows)
opencli crates crate serde
opencli crates crate tokio

# JSON output
opencli crates search tokio -f json

Output Columns

Command Columns
search rank, name, latestVersion, description, downloads, recentDownloads, repository, updated, url
crate name, latestVersion, description, downloads, recentDownloads, versions, license, homepage, documentation, repository, keywords, categories, created, updated, url

The name column from search round-trips into crate.

Options

Option Description
query (positional) Free-text search query
--limit Max results (1100, default: 20). 100 is crates.io's per-page upper bound.

crate

Option Description
name (positional) crates.io crate name (e.g. serde, tokio). Must match Rust's identifier rule.

Caveats

  • crates.io requires a descriptive User-Agent per the data-access policy. The adapter sets one automatically.
  • license is sourced from the latest version row in the package's version index — crate-level metadata does not carry a license field.
  • recentDownloads is the rolling 90-day count exposed by the API; downloads is the lifetime total.
  • keywords and categories are joined with , for display.

Prerequisites

  • No browser required — uses crates.io/api/v1.