Skip to content
AI/LLM: This documentation page is available in plain markdown format at /docs/search.md

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.

MethodBest For
tank search "query"Quick lookups while working in the terminal
Web browse page + Cmd+K paletteExploring the registry visually with filters
GET /api/v1/searchProgrammatic 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 TypeBonus 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:

ParameterTypeDefaultDescription
qstringSearch query. Supports partial words, typos, scoped names (@org/skill)
pageinteger1Result page (1-indexed)
limitinteger20Results per page. Min: 1, Max: 50
sortstringscoreSort order: score, updated, downloads, stars, name
visibilitystringpublicFilter by visibility: all, public, private
scoreBucketstringallFilter 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`.
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.

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.

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.

Command Palette

Search skills, docs, and navigate Tank