claude/skills/fetch/SKILL.md
Fetch external documentation or code while protecting the main context window. Use Context7 (preferred, free) for library docs. Use Tavily for technical concepts and best practices. Use Serper for factual lookups and Google SERP features. Use `gh` CLI for GitHub operations. Cost-aware routing: free → cheap → expensive. Governs: when to skip and use training data, when to fetch inline vs delegate to a subagent.
npx skillsauth add paulnsorensen/dotfiles fetchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
External knowledge with context window hygiene. Five sources, one budget.
Skip — use training data when:
Array.map, os.path, console.log, HTTP status codesFetch when:
Try free tools first, then cheap, then expensive:
| Priority | Source | Cost | Use When | |----------|--------|------|----------| | 1 | Context7 | Free (1K calls/mo) | Library/framework API question | | 2 | Codebase (Grep/Read/tilth) | Free | Local code patterns | | 3 | Serper | ~$0.001/query | Factual lookups, SERP features, news | | 4 | Tavily search | ~$0.003-0.008/query | Technical concepts, best practices | | 5 | Tavily research | ~$0.12-2.00/call | Deep multi-source exploration (user must request) | | 6 | gh search / gh repo view | Free | GitHub code search and repo metadata | | 7 | WebSearch/WebFetch | Varies | Legacy fallback if MCPs are down |
Use Context7 first for any supported library. Returns curated, version-specific code examples with minimal context overhead.
resolve-library-id(libraryName="<library>", query="<specific question>")
→ query-docs(libraryId="<id>", query="<specific question>")
| Good queries | Bad queries | |---|---| | "useEffect cleanup return signature" | "explain React" | | "Prisma upsert with where clause" | "how does Prisma work" | | "Next.js App Router middleware config" | "Next.js authentication" |
Fall back to Tavily if the library isn't in Context7's index.
Use Tavily when Context7 doesn't cover the library or when you need technical concepts beyond API reference docs. Returns AI-processed, markdown-formatted content.
tavily_search(query="<natural language question>", search_depth="basic"|"advanced")
| search_depth | Cost | Use When | |---|---|---| | basic | 1 credit | Quick lookup, well-known topic | | advanced | 2 credits | Deep technical question, version-specific |
Cost-saving tip: tavily_search(..., include_raw_content=true) returns full
page markdown inline, combining search + extract in one call. Avoids a separate
tavily_extract call.
Use tavily_extract(urls=[...], query="<question>") only when you already have
a specific URL to read (e.g., from a Serper result).
DO NOT use tavily_research unless the user explicitly asks for deep research.
It costs 15-250 credits per call.
Use Serper when you need Google's structured SERP data: Knowledge Graph entries, answer boxes, People Also Ask, or when a keyword-optimized Google search will find the answer faster than AI search.
google_search(q="<keyword query>", gl="us", hl="en")
Serper returns URLs and snippets, not extracted content. If you need page text,
follow up with scrape(url="<url>").
Best for:
Use only if Tavily and Serper MCPs are unavailable. These are the least structured option.
Delegate to general-purpose agent when:
Task(subagent_type="general-purpose", prompt="Look up <specific question> in <library> docs. Return a focused summary.")
Use gh search code, gh search repos, and gh repo view to search GitHub from
the command line. Bounded output, no MCP surface cost.
Use when:
gh search code '<query>')gh repo view owner/repo)gh search repos '<topic>' --sort stars)Use the gh skill for GitHub operations (PRs, issues, releases, CI checks). The
gh skill uses GitHub MCP tools by default (sandbox-safe), with gh CLI as fallback.
For reading a specific URL's content:
tavily_extract(urls=["<url>"], query="<question>") — AI-processed, relevance-ranked chunksscrape(url="<url>", includeMarkdown=true) — raw page content with JSON-LD metadataTavily extract is better for long pages (it reranks by relevance). Serper scrape is cheaper and includes structured metadata.
Delegate to general-purpose agent when:
Tell the subagent to return a summary, not raw file contents.
| Situation | Action | Cost |
|---|---|---|
| Training data is sufficient | Skip fetch entirely | Free |
| Narrow library API question | Context7 inline | Free |
| Factual lookup, entity info | Serper google_search | ~$0.001 |
| Technical concept, best practice | Tavily search (basic) | ~$0.003 |
| Deep technical question | Tavily search (advanced) | ~$0.006 |
| Need to read a specific URL | Tavily extract or Serper scrape | ~$0.001-0.003 |
| GitHub code search / examples | gh search code inline | Free |
| Local code search | Grep / Read | Free |
| Broad or multi-concept docs | general-purpose subagent | Varies |
| Main context already heavy | Always delegate, never inline | — |
Array.prototype.filter or other stable stdlib APIsresolve-library-id sometimes returns the wrong library for ambiguous names — verify the resolved IDscrape if you need page textinclude_raw_content=true saves a separate extract call — use it for single-page reads/tmp/ and analyze via file readtools
Reconstruct what a past coding-agent session was doing so you can resume it — goal, files touched, last verified state, and the next step — by querying the session logs. Use when the user says "what was I working on", "recover that session", "reconstruct where I left off", "resume my last session", "what did that session change", "rebuild context from logs", or invokes /work-recovery. Report-only — it never scores or judges. Do NOT use for usage scoring (that is /skill-improver, /tool-efficiency, /prompt-analytics) or one-off interactive log queries (that is /session-analytics).
development
Curate this repo's hallouminate wiki (.hallouminate/wiki/, the repo:dotfiles:wiki corpus) — add or update architecture pages, per-harness docs, and gotchas. Use when the user says "update the wiki", "document this in the wiki", "refresh the harness docs", "add a wiki page", "curate the wiki", "the wiki is stale", or invokes /wiki-curator. Also use at session end to write back a non-obvious decision or gotcha worth preserving. Grounds the existing wiki first, follows one-topic-per-file conventions, verifies every external doc URL before writing, and reindexes. Do NOT use for general code search (that is cheez-search) or for editing AGENTS.md command reference.
tools
Audit how a tool, command, or MCP server is actually used across coding-agent sessions and produce calibrated recommendations — tool-vs-task fit, error forensics, fix recommendations, permission friction, MCP health, and token economics. Use when the user says "tool efficiency", "am I using X efficiently", "audit tool usage", "why does X keep failing", "how do I fix this error", "what should I change", "permission friction", "is this MCP worth it", "tool error rate", "fix recommendations", or invokes /tool-efficiency. Do NOT use for auditing a skill or agent definition (that is /skill-improver) or for one-off interactive log queries (that is /session-analytics).
tools
Analyze how prompts and skill routing behave across coding-agent sessions and produce calibrated recommendations — prompt-pattern analysis, routing accuracy, and knowledge gaps. Use when the user says "analyze my prompts", "prompt patterns", "is routing working", "which skill should have fired", "knowledge gaps", "what do I keep asking", or invokes /prompt-analytics. Do NOT use for auditing a single skill/agent definition (that is /skill-improver), tool/MCP efficiency (that is /tool-efficiency), or one-off interactive log queries (that is /session-analytics).