
Web Search
- 6 installs
- 217 repo stars
- Updated August 2, 2026
- pasky/pi-amplike
Helps with ai & agent building tasks during AI-assisted development.
About
web-search is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- web-search
- AI & Agent Building
- AI-coding skill
Web Search by the numbers
- 6 all-time installs (skills.sh)
- Ranked #12,825 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/pasky/pi-amplike --skill web-searchAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 6 |
|---|---|
| repo stars | ★ 217 |
| Last updated | August 2, 2026 |
| Repository | pasky/pi-amplike ↗ |
What it does
Helps with ai & agent building tasks during AI-assisted development.
Files
Web Search
Perform web searches using the Jina Search API. Returns formatted search results with titles, URLs, and descriptions.
Setup
Optionally get a Jina API key for higher rate limits: 1. Create an account at https://jina.ai/ 2. Get your API key from the dashboard 3. Add to your shell profile (~/.profile or ~/.zprofile for zsh):
export JINA_API_KEY="your-api-key-here"Without an API key, the service works with rate limits.
Usage
{baseDir}/search.py "your search query"Examples
# Basic search
{baseDir}/search.py "python async await tutorial"
# Search for recent news
{baseDir}/search.py "latest AI developments 2024"
# Find documentation
{baseDir}/search.py "nodejs fs promises API"Output Format
Returns markdown-formatted search results:
## Search Results
[Title of first result](https://example.com/page1)
Description or snippet from the search result...
[Title of second result](https://example.com/page2)
Description or snippet from the search result...When to Use
- Searching for documentation or API references
- Looking up facts or current information
- Finding relevant web pages for research
- Any task requiring web search without interactive browsing
#!/usr/bin/env python3
"""Web search using Jina Search API."""
import os
import sys
import urllib.parse
import urllib.request
from urllib.error import HTTPError, URLError
TIMEOUT = 30
def main():
if len(sys.argv) < 2:
print("Usage: search.py <query>")
print()
print("Searches the web using Jina Search API.")
print()
print("Environment:")
print(" JINA_API_KEY Optional. Your Jina API key for higher rate limits.")
print()
print("Examples:")
print(' search.py "python async await"')
print(' search.py "rust ownership tutorial"')
sys.exit(1)
query = " ".join(sys.argv[1:])
encoded_query = urllib.parse.quote(query)
url = f"https://s.jina.ai/?q={encoded_query}"
# Build headers
headers = {
"User-Agent": "pi-skill/1.0",
"X-Respond-With": "no-content",
"Accept": "text/plain",
}
api_key = os.environ.get("JINA_API_KEY")
if api_key:
headers["Authorization"] = f"Bearer {api_key}"
req = urllib.request.Request(url, headers=headers)
try:
with urllib.request.urlopen(req, timeout=TIMEOUT) as response:
content = response.read().decode("utf-8", errors="replace").strip()
if not content:
print("No search results found. Try a different query.")
sys.exit(0)
print("## Search Results")
print()
print(content)
except HTTPError as e:
print(f"Error: HTTP {e.code} - {e.reason}", file=sys.stderr)
sys.exit(1)
except URLError as e:
print(f"Error: {e.reason}", file=sys.stderr)
sys.exit(1)
except Exception as e:
print(f"Error: {e}", file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":
main()