add context7 skill
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
import argparse
|
||||
import os
|
||||
|
||||
import requests
|
||||
|
||||
CONTEXT7_API_KEY = os.environ.get("CONTEXT7_API_KEY")
|
||||
|
||||
headers = {"Authorization": f"Bearer {CONTEXT7_API_KEY}"}
|
||||
|
||||
|
||||
def search_library(library: str, query: str) -> str:
|
||||
# Step 1: Search for the library
|
||||
search_response = requests.get(
|
||||
"https://context7.com/api/v2/libs/search",
|
||||
headers=headers,
|
||||
params={"libraryName": library, "query": query},
|
||||
)
|
||||
search_response.raise_for_status()
|
||||
data = search_response.json()
|
||||
best_match = data["results"][0]
|
||||
print(f"Found: {best_match['title']} ({best_match['id']})")
|
||||
return best_match["id"]
|
||||
|
||||
|
||||
def search_snippet(library: str, query: str) -> None:
|
||||
# Step 2: Get documentation context
|
||||
context_response = requests.get(
|
||||
"https://context7.com/api/v2/context",
|
||||
headers=headers,
|
||||
params={
|
||||
"libraryId": library,
|
||||
"query": query,
|
||||
"type": "json",
|
||||
},
|
||||
)
|
||||
context_response.raise_for_status()
|
||||
docs = context_response.json()
|
||||
|
||||
for snippet in docs["codeSnippets"]:
|
||||
print(f"Title: {snippet['codeTitle']}")
|
||||
for code in snippet["codeList"]:
|
||||
print(f"Code: {code['code']}")
|
||||
|
||||
for info in docs["infoSnippets"]:
|
||||
print(f"Content: {info['content']}")
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("library", help="Library name to search for")
|
||||
parser.add_argument("query", help="Documentation query to run")
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def main() -> None:
|
||||
args = parse_args()
|
||||
library_id = search_library(args.library, args.query)
|
||||
search_snippet(library_id, args.query)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user