
Skill Search
Query the skillscatalog.ai registry from your agent to find installable skills by topic instead of browsing manually.
Overview
skill-search is a journey-wide agent skill that searches the skillscatalog.ai catalog from your agent—usable whenever a solo builder needs to discover installable skills before committing to custom work.
Install
npx skills add https://github.com/skillscatalog/registry --skill skill-searchWhat is this skill?
- Python CLI search_catalog.py against the Skills Catalog registry
- Manifest v1 package with integrity hash over SKILL.md and bundled script
- MIT-licensed skill-manifest layout for reproducible installs
- Documents skill API keys via skillscatalog.ai settings for authenticated catalog access
- Two-file layout: SKILL.md manifest plus scripts/ helper for agent invocation
- Manifest lists 2 packaged files (SKILL.md and scripts/search_catalog.py)
- search_catalog.py script size 8117 bytes per embedded manifest metadata
Adoption & trust: 1 installs on skills.sh; 1 GitHub stars; 2/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
What problem does it solve?
You know agent skills exist for your task but waste time manually browsing registries and copying names into your agent config.
Who is it for?
Builders who standardize on skillscatalog.ai and want programmatic discovery from Claude Code, Cursor, or similar agents.
Skip if: Teams that only use Prism or skills.sh browsing with no skillscatalog.ai API key or no need to automate registry lookup.
When should I use this skill?
You need to find an installable skill on skillscatalog.ai by keyword or task and want the agent to run catalog search rather than manual browsing.
What do I get? / Deliverables
Your agent runs catalog search locally and returns matching skills you can evaluate and install in the same workflow.
- JSON or terminal listing of catalog skills matching your query
- Reproducible manifest pin (version, integrity hash) for the search skill package
Recommended Skills
Journey fit
Useful at every journey phase - explore requirements and options before committing to a direction.
Where it fits
Search the registry for competitor-research or audience skills before you write custom prompts.
Find landing-page or pricing-related skills to narrow MVP scope without building from zero.
Locate an existing Stripe or auth skill instead of asking the agent to invent a new integration package.
Query for QA or review skills right before release week when your stack list is incomplete.
Discover SEO or distribution skills when you shift from shipping code to getting found.
How it compares
Registry integration skill with a search script—not a meta skill that authors new SKILL.md packages from scratch.
Common Questions / FAQ
Who is skill-search for?
Indie developers and agent-first teams who pull skills from skillscatalog.ai and want search inside the terminal or agent instead of only using the web UI.
When should I use skill-search?
In Idea/Discover when scouting capabilities; in Validate when looking for prototype helpers; in Build for integrations; and in Ship/Grow when you need testing, SEO, or analytics skills you have not installed yet.
Is skill-search safe to install?
It runs local Python and may call external catalog APIs using your key—verify script behavior and review the Security Audits panel on this Prism page before piping results into auto-install flows.
SKILL.md
READMESKILL.md - Skill Search
{ "$schema": "https://agentskills.io/schemas/manifest.v1.json", "manifestVersion": "1.0", "generatedAt": "2026-01-03T03:32:17.276938Z", "generator": "skill-manifest-generator/1.0.0", "skill": { "name": "skill-search", "version": "1.0.0" }, "integrity": { "algorithm": "sha256", "hash": "879a786ccd22c29248abbe8651f05090f8cf5eab4cece3bd2bd776afe497edb9" }, "files": [ { "path": "SKILL.md", "size": 2155, "sha256": "a58adfb365cae0c21380f0a116298fcdc6d351def832adcb935088f4f47658ff", "type": "manifest" }, { "path": "scripts/search_catalog.py", "size": 8117, "sha256": "4e1c61f1a94e7a1c4277168d320befa67733a82f26d9b6120f1a1c8756511c8a", "type": "script" } ], "externalReferences": [ { "url": "https://skillscatalog.ai/settings/skill-keys", "file": "SKILL.md", "line": 19, "type": "unknown" } ], "structure": { "maxDepth": 1, "totalFiles": 2, "totalBytes": 10272, "folders": [ "scripts" ] }, "license": { "spdxId": "MIT" } } #!/usr/bin/env python3 """ Agent Skills Catalog Search Search the skillscatalog.ai catalog for skills. """ import argparse import json import sys from pathlib import Path from typing import Optional # Add parent directory to path for shared imports SCRIPT_DIR = Path(__file__).parent SKILLS_DIR = SCRIPT_DIR.parent.parent SHARED_DIR = SKILLS_DIR / "_shared" sys.path.insert(0, str(SHARED_DIR)) try: from agentskills_config import get_skill_key, get_api_url, get_auth_header except ImportError: print("Error: Could not import agentskills_config.") print("Make sure the _shared/agentskills_config.py module exists.") sys.exit(1) # Optional: import requests try: import requests except ImportError: requests = None # type: ignore # ============================================================================ # API Functions # ============================================================================ def search_catalog(query: str, limit: int = 20) -> dict: """Search the catalog for skills.""" if requests is None: return { "error": "requests library not installed. Run: pip install requests", "results": [], } api_url = get_api_url() headers = get_auth_header() try: response = requests.get( f"{api_url}/api/catalog/search", headers=headers, params={"q": query}, timeout=30, ) if response.status_code == 200: data = response.json() results = data.get("results", [])[:limit] return {"results": results, "query": query, "count": len(results)} else: try: error_data = response.json() return {"error": error_data.get("error", f"HTTP {response.status_code}"), "results": []} except json.JSONDecodeError: return {"error": f"HTTP {response.status_code}", "results": []} except requests.exceptions.Timeout: return {"error": "Request timed out", "results": []} except requests.exceptions.ConnectionError: return {"error": f"Could not connect to {api_url}", "results": []} except Exception as e: return {"error": str(e), "results": []} def get_skill(vendor_key: str, skill_key: str) -> dict: """Get details for a specific skill.""" if requests is None: return {"error": "requests library not installed. Run: pip install requests"} api_url = get_api_url() headers = get_auth_header() try: response = requests.get( f"{api_url}/api/catalog/{vendor_key}/{skill_key}", headers=headers, timeout=30, ) if response.status_code == 200: return response.json() elif response.status_code == 404: return {"error": f"Skill not found: {vendor_key}/{skill_key}"} else: