Searching for Skills
Tank provides three ways to find AI agent skills: the CLI, the web UI, and the REST API. All three methods query the same underlying search index and return the same results — choose whichever fits your workflow.
Three Ways to Search
| Method | Best For |
|---|---|
tank search "query" | Quick lookups while working in the terminal |
| Web browse page + Cmd+K palette | Exploring the registry visually with filters |
GET /api/v1/search | Programmatic discovery, custom tooling, MCP integrations |
How Tank Search Works
Tank uses a hybrid 3-tier ranking system that combines multiple matching strategies into a single relevance score. This means you get useful results even with typos, partial words, or short queries.
Tier 1 — ILIKE Prefix and Substring Matching (up to 400 pts)
The first pass does case-insensitive string matching against skill names and descriptions:
- Prefix match (
skill-name ILIKE 'query%'): 400 points — the query matches the start of the name - Substring match (
skill-name ILIKE '%query%'): 200 points — the query appears anywhere in the name or description
This handles the common case where you know (or almost know) the exact name.
Tier 2 — pg_trgm Fuzzy Matching (up to 300 pts)
PostgreSQL's pg_trgm extension computes trigram similarity between your query and skill names. Any skill with a similarity score above 0.15 is included, weighted by how closely it matches:
score = 300 × trigram_similarity(query, skill_name)
This is what handles typos: searching "vercel deplyo" still finds vercel-deploy because enough trigrams overlap. The GIN trigram index keeps this fast even as the registry grows.
Tier 3 — Full-Text Search via tsvector (up to 100 pts)
Skills have a precomputed searchVector column (type tsvector) that indexes names, descriptions, and tags. PostgreSQL's plainto_tsquery converts your query into a full-text search expression and ranks matches using ts_rank:
score = 100 × ts_rank(search_vector, plainto_tsquery(query))
Full-text search handles multi-word queries well and understands stemming — searching "deploys" also matches skills about "deployment".
Bonus Points for High-Quality Matches
On top of the three tiers, Tank awards additional points for specific match types:
| Match Type | Bonus Points |
|---|---|
| Exact name match | +1000 |
| Exact prefix match | +800 |
Scoped name match (@org/skill) | +600 |
| Substring match in name | +400 |
The final score is the sum of all applicable points. Results are sorted descending by this score, then by download count as a tiebreaker.
The combined scoring means a skill with a slightly lower textual match but many downloads can rank above an obscure skill with a perfect name match. This surfaces battle-tested skills first, similar to how npm surfaces popular packages.
Search Parameters
All three search interfaces accept the same filtering parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
q | string | — | Search query. Supports partial words, typos, scoped names (@org/skill) |
page | integer | 1 | Result page (1-indexed) |
limit | integer | 20 | Results per page. Min: 1, Max: 50 |
sort | string | score | Sort order: score, updated, downloads, stars, name |
visibility | string | public | Filter by visibility: all, public, private |
scoreBucket | string | all | Filter by audit score: all, high (7–10), medium (4–6), low (0–3) |
Filtering by `visibility=private` or `visibility=all` requires authentication. Unauthenticated requests are silently coerced to `visibility=public`.
CLI Search
tank search "query"
The CLI prints a color-coded table of matching skills with their name, version, description, and audit score. Scores are color-coded:
- Green (7–10) — high quality, passes all checks
- Yellow (4–6) — medium quality, some checks failed
- Red (0–3) — low quality, significant issues found
CLI Search Examples
# Search by keyword
tank search "browser automation"
# Search for a scoped skill
tank search "@vercel/deploy"
# Find skills related to code review
tank search "code review"
The CLI always returns public skills sorted by relevance score. For filtered results (by score bucket, sort order, etc.) use the web UI or API.
Web Search
Browse Page
The registry browse page at tankpkg.dev/skills lets you:
- Search with a full-text input
- Filter by security score bucket (High / Medium / Low)
- Sort by Updated, Downloads, Stars, or Relevance
- Page through results with keyboard navigation
Command Palette (Cmd+K)
Press Cmd+K (macOS) or Ctrl+K (Windows/Linux) anywhere on the Tank website to open the command palette. Type to search skills instantly — results update as you type with no page reload.
The command palette searches skill names and descriptions with a 150ms debounce. It's the fastest way to jump directly to a skill's detail page.
API Search
Use the search API directly for programmatic discovery, custom tooling, or building on top of Tank's registry.
Request
curl "https://tankpkg.dev/api/v1/search?q=browser+automation&limit=5&sort=downloads" \
-H "Authorization: Bearer $TANK_TOKEN"
Parameters as Query String
GET /api/v1/search?q=browser+automation&page=1&limit=20&sort=score&scoreBucket=high
Response
{
"results": [
{
"name": "@community/browser-automation",
"version": "2.3.1",
"description": "Playwright-based browser automation skill for AI agents",
"author": "community",
"downloads": 12400,
"stars": 341,
"auditScore": 9,
"visibility": "public",
"updatedAt": "2026-02-14T11:30:00Z",
"score": 1700
}
],
"total": 23,
"page": 1,
"limit": 20,
"pages": 2
}
Searching Scoped Skills
The API handles scoped names correctly — @org/skill is tokenized as an org-scoped query:
# Find all skills from the vercel org
curl "https://tankpkg.dev/api/v1/search?q=%40vercel" \
-H "Authorization: Bearer $TANK_TOKEN"
# Find a specific scoped skill
curl "https://tankpkg.dev/api/v1/search?q=%40vercel%2Fdeploy-skill" \
-H "Authorization: Bearer $TANK_TOKEN"
Filtering by Audit Score
Only install skills that pass Tank's security checks:
# Only return high-quality skills (score 7-10)
curl "https://tankpkg.dev/api/v1/search?q=web+scraping&scoreBucket=high"
Skills with a `low` audit score (0–3) have significant security findings. Review `tank audit @org/skill-name` carefully before installing any low-scoring skill.
Search Performance
Tank's search is designed to stay fast as the registry grows:
- GIN index on
searchVector— full-text search is O(log n) - GIN trigram index on skill names — fuzzy matching without sequential scans
- Precomputed
searchVector— updated on publish, not at query time - Combined Drizzle query — name, description, score, and download count fetched in a single round trip
Typical search latency is under 50ms at p99 for the hosted registry.
Related
- Installing Skills — install skills you find in search
- Publishing Skills — improve your skill's discoverability
- API Reference — full search API specification