godfetch Unified external research — look up library documentation, search source code in any git repository, and check package versions from a single skill. Routing | Intent | Primary tool | Fallback | | ---------------------------------------------------------------------------- | ----------------------------------------------------------------- | -------------------------------------------------------- | | Library docs, API reference | → llms.txt | if no llms.txt published | | Changelogs, breaking changes | → llms.txt | for CHANGELOG.md | | Cross-repo code search (exact identifier) | Sourc…

\\t' read -r status ctype final \u003c\u003c\u003c\"$meta\"\n\n [[ \"$status\" != \"200\" ]] && continue\n [[ \"$ctype\" == *\"text/html\"* ]] && continue\n [[ -n \"${seen[$final]:-}\" ]] && continue\n seen[$final]=1\n\n # Try Content-Length from HEAD first; if absent, try a 1-byte range GET\n # and parse Content-Range. Some CDNs strip both — size stays \"?\".\n # `|| true` guards `set -e` against curl timeout (exit 28).\n len=$( { curl -sIk --max-time 5 \"$final\" 2>/dev/null || true; } \\\n | tr -d '\\r' \\\n | awk -F': *' 'tolower($1)==\"content-length\"{v=$2+0} END{print v+0}')\n\n if [[ -z \"$len\" || \"$len\" == \"0\" ]]; then\n len=$( { curl -sLk --max-time 5 -r 0-0 -D - -o /dev/null \"$final\" 2>/dev/null || true; } \\\n | tr -d '\\r' \\\n | awk -F'[ /]' 'tolower($1)==\"content-range:\"{v=$NF+0} tolower($1)==\"content-length:\"{cl=$2+0} END{print (v?v:cl)+0}')\n fi\n\n size=$(human_size \"$len\")\n\n if [[ \"$final\" == *\"llms-full.txt\"* ]]; then\n kind=\"full\"\n else\n kind=\"index\"\n fi\n\n printf \"%s\\t%s\\t%s\\n\" \"$kind\" \"$final\" \"$size\"\n found=1\ndone\n\nif [[ \"$found\" -eq 0 ]]; then\n echo \"No llms.txt found at https://${host}\" >&2\n exit 1\nfi\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":2809,"content_sha256":"5933a4f1acc3b09239a3fffa8fc71b69e2f5b0a1a626912d957d588440693420"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"godfetch","type":"text"}]},{"type":"paragraph","content":[{"text":"Unified external research — look up library documentation, search source code in any git repository, and check package versions from a single skill.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Routing","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Intent","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Primary tool","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Fallback","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Library docs, API reference","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"llms-probe","type":"text","marks":[{"type":"code_inline"}]},{"text":" → ","type":"text"},{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":" llms.txt","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"context7","type":"text","marks":[{"type":"code_inline"}]},{"text":" if no llms.txt published","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Changelogs, breaking changes","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"llms-probe","type":"text","marks":[{"type":"code_inline"}]},{"text":" → ","type":"text"},{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":" llms.txt","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh api contents","type":"text","marks":[{"type":"code_inline"}]},{"text":" for CHANGELOG.md","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Cross-repo code search (exact identifier)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Sourcegraph MCP ","type":"text"},{"text":"keyword_search","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh search code","type":"text","marks":[{"type":"code_inline"}]},{"text":", then ","type":"text"},{"text":"git-clone","type":"text","marks":[{"type":"code_inline"}]},{"text":" for follow-up","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Semantic / concept query in a GitHub-hosted dep (\"how does X work in lib Y\")","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"mcp__plugin_ora_morph__github_codebase_search","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"git-clone","type":"text","marks":[{"type":"code_inline"}]},{"text":" if the question keeps branching across files","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Concept query across multi-host or GitLab/Bitbucket repos","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Sourcegraph MCP ","type":"text"},{"text":"nls_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" with 2-5 extracted keywords","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"keyword_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" after picking a literal term","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Deep dive in known repo (3+ files)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"git-clone","type":"text","marks":[{"type":"code_inline"}]},{"text":" + shell tools","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Sourcegraph ","type":"text"},{"text":"read_file","type":"text","marks":[{"type":"code_inline"}]},{"text":" for one-off reads","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"GitHub issues","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh issue view \u003cN>","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh search issues","type":"text","marks":[{"type":"code_inline"}]},{"text":" for discovery","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"GitHub PRs","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh pr view \u003cN>","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh search prs","type":"text","marks":[{"type":"code_inline"}]},{"text":" for discovery","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"GitHub releases (versions, dates, notes)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh release view \u003ctag> --repo owner/repo","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh release list --repo owner/repo","type":"text","marks":[{"type":"code_inline"}]},{"text":" for browsing","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Single file (known repo + path)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Sourcegraph MCP ","type":"text"},{"text":"read_file","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh api repos/.../contents/\u003cpath>","type":"text","marks":[{"type":"code_inline"}]},{"text":" (GitHub only)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Symbol navigation (def, references)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Sourcegraph ","type":"text"},{"text":"go_to_definition","type":"text","marks":[{"type":"code_inline"}]},{"text":" / ","type":"text"},{"text":"find_references","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"git-clone","type":"text","marks":[{"type":"code_inline"}]},{"text":" + ast-grep","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Git history / diff search across repos","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Sourcegraph ","type":"text"},{"text":"commit_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" / ","type":"text"},{"text":"diff_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" / ","type":"text"},{"text":"compare_revisions","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh api /repos/.../commits","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Package version, deprecation","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"deps-dev","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"npm view","type":"text","marks":[{"type":"code_inline"}]},{"text":" for npm-only metadata","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"npm package info (non-version)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"npm view \u003cpkg>","type":"text","marks":[{"type":"code_inline"}]},{"text":" (Bash)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"WebSearch for community sentiment","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"General web lookup","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"WebSearch → WebFetch","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"—","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Comparison / decision","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"llms-probe","type":"text","marks":[{"type":"code_inline"}]},{"text":" per lib + WebSearch","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"context7","type":"text","marks":[{"type":"code_inline"}]},{"text":" for additional snippets","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"For mixed requests, launch all relevant tools in parallel. Probe and clone are I/O-bound — start them in the background and run ","type":"text"},{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":"/","type":"text"},{"text":"context7","type":"text","marks":[{"type":"code_inline"}]},{"text":"/WebSearch concurrently to mask latency.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"GitHub access rules","type":"text"}]},{"type":"paragraph","content":[{"text":"Do not use WebFetch on github.com or raw.githubusercontent.com URLs — use the right tool:","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"GitHub content","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Use","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Never","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Source code (exploration)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"git-clone","type":"text","marks":[{"type":"code_inline"}]},{"text":" + shell tools","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"browsing files via ","type":"text"},{"text":"gh api contents","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Source file (known path)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh api repos/.../contents/\u003cpath>","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":" raw.githubusercontent.com","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Issues","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh issue view \u003cN> --repo owner/repo","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":" github.com/.../issues/N","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Pull requests","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh pr view \u003cN> --repo owner/repo","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":" github.com/.../pull/N","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Issue/PR search","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh search issues \"q\" --repo ...","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":" github.com/issues?q=...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Releases (versions, dates, notes)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh release view/list --repo owner/repo","type":"text","marks":[{"type":"code_inline"}]},{"text":" or ","type":"text"},{"text":"gh api repos/.../releases","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":" github.com/.../releases — relative timestamps on the HTML get hallucinated into training-era years","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"CHANGELOG.md","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"gh api repos/.../contents/CHANGELOG.md","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":" blob/ or raw URLs","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Search discipline","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"deps-dev for versions","type":"text","marks":[{"type":"strong"}]},{"text":": when checking latest version, deprecation, or comparing installed vs latest — always use ","type":"text"},{"text":"deps-dev","type":"text","marks":[{"type":"code_inline"}]},{"text":" first. Only fall back to ","type":"text"},{"text":"npm view","type":"text","marks":[{"type":"code_inline"}]},{"text":" or WebSearch if deps-dev errors or the package is private.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"llms.txt first, context7 fallback","type":"text","marks":[{"type":"strong"}]},{"text":": for library docs, run ","type":"text"},{"text":"scripts/llms-probe.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" against the docs domain before reaching for ","type":"text"},{"text":"context7","type":"text","marks":[{"type":"code_inline"}]},{"text":". Author-published llms.txt has no community-curation lag and no enrichment layer that can hallucinate. Fall back to ","type":"text"},{"text":"context7","type":"text","marks":[{"type":"code_inline"}]},{"text":" only when probe returns nothing.","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"llms.txt — Author-Canonical Library Documentation","type":"text"}]},{"type":"paragraph","content":[{"text":"Many doc sites publish ","type":"text"},{"text":"llms.txt","type":"text","marks":[{"type":"link","attrs":{"href":"https://llmstxt.org/","title":null}}]},{"text":" (Markdown index of doc pages) and ","type":"text"},{"text":"llms-full.txt","type":"text","marks":[{"type":"code_inline"}]},{"text":" (concatenated full content). These are author-published — no enrichment layer, no community-curation lag — so they reflect the deployed docs version exactly. Prefer them over ","type":"text"},{"text":"context7","type":"text","marks":[{"type":"code_inline"}]},{"text":" when available.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 1: Probe for availability","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash scripts/llms-probe.sh \u003cdocs-domain>","type":"text"}]},{"type":"paragraph","content":[{"text":"Outputs TSV ","type":"text"},{"text":"kind \\t url \\t size","type":"text","marks":[{"type":"code_inline"}]},{"text":" for any found files. Probes root + common nested paths (","type":"text"},{"text":"/docs/","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"/en/","type":"text","marks":[{"type":"code_inline"}]},{"text":"), follows redirects, dedupes. Returns non-zero exit if nothing found.","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"kind","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Meaning","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"index","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"llms.txt","type":"text","marks":[{"type":"code_inline"}]},{"text":" — Markdown list of doc page URLs","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"full","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"llms-full.txt","type":"text","marks":[{"type":"code_inline"}]},{"text":" — entire docs corpus concatenated","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"Size shows ","type":"text"},{"text":"?","type":"text","marks":[{"type":"code_inline"}]},{"text":" when the CDN strips both ","type":"text"},{"text":"Content-Length","type":"text","marks":[{"type":"code_inline"}]},{"text":" and ","type":"text"},{"text":"Content-Range","type":"text","marks":[{"type":"code_inline"}]},{"text":" headers (Vercel does this on react.dev) — treat ","type":"text"},{"text":"?","type":"text","marks":[{"type":"code_inline"}]},{"text":" as unknown and prefer the index path.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 2: Fetch based on what's there","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Found","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Action","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"llms-full.txt","type":"text","marks":[{"type":"code_inline"}]},{"text":" ≤ ~500 KB","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":" it directly — single round trip, full corpus","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"llms-full.txt","type":"text","marks":[{"type":"code_inline"}]},{"text":" > ~500 KB or size ","type":"text"},{"text":"?","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":" ","type":"text"},{"text":"llms.txt","type":"text","marks":[{"type":"code_inline"}]},{"text":" first, pick relevant section links, fetch those","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Only index (no full)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":" the index, then fetch individual page links","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Probe failed","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Fall back to ","type":"text"},{"text":"context7","type":"text","marks":[{"type":"code_inline"}]},{"text":" (next section)","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"For multi-section pulls, dispatch the page ","type":"text"},{"text":"WebFetch","type":"text","marks":[{"type":"code_inline"}]},{"text":" calls in parallel.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Known publishers","type":"text"}]},{"type":"paragraph","content":[{"text":"Confirmed live (April 2026): React (","type":"text"},{"text":"react.dev","type":"text","marks":[{"type":"code_inline"}]},{"text":"), Next.js (","type":"text"},{"text":"nextjs.org","type":"text","marks":[{"type":"code_inline"}]},{"text":", content under ","type":"text"},{"text":"/docs/","type":"text","marks":[{"type":"code_inline"}]},{"text":"), Vercel, Anthropic (","type":"text"},{"text":"docs.anthropic.com","type":"text","marks":[{"type":"code_inline"}]},{"text":" → ","type":"text"},{"text":"platform.claude.com","type":"text","marks":[{"type":"code_inline"}]},{"text":"), Cloudflare (","type":"text"},{"text":"docs.cloudflare.com","type":"text","marks":[{"type":"code_inline"}]},{"text":" → ","type":"text"},{"text":"developers.cloudflare.com","type":"text","marks":[{"type":"code_inline"}]},{"text":"), Supabase, Drizzle (","type":"text"},{"text":"orm.drizzle.team","type":"text","marks":[{"type":"code_inline"}]},{"text":"), Hono (","type":"text"},{"text":"hono.dev","type":"text","marks":[{"type":"code_inline"}]},{"text":"), Zod (","type":"text"},{"text":"zod.dev","type":"text","marks":[{"type":"code_inline"}]},{"text":"), Expo (","type":"text"},{"text":"docs.expo.dev","type":"text","marks":[{"type":"code_inline"}]},{"text":"), tRPC (","type":"text"},{"text":"trpc.io","type":"text","marks":[{"type":"code_inline"}]},{"text":"), shadcn/ui (","type":"text"},{"text":"ui.shadcn.com","type":"text","marks":[{"type":"code_inline"}]},{"text":"). Most Mintlify- and GitBook-hosted docs auto-publish.","type":"text"}]},{"type":"paragraph","content":[{"text":"Tailwind, most pre-1.0 libraries, and many community packages do not publish — those go straight to ","type":"text"},{"text":"context7","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Rules","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Probe before assuming.","type":"text","marks":[{"type":"strong"}]},{"text":" Adoption is uneven and paths vary (root vs ","type":"text"},{"text":"/docs/","type":"text","marks":[{"type":"code_inline"}]},{"text":" vs redirects). Always run ","type":"text"},{"text":"llms-probe.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" and act on the TSV — never hardcode URLs.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Watch file size before fetching full.","type":"text","marks":[{"type":"strong"}]},{"text":" Cloudflare's ","type":"text"},{"text":"llms-full.txt","type":"text","marks":[{"type":"code_inline"}]},{"text":" is ~46 MB and Supabase reports ","type":"text"},{"text":"?","type":"text","marks":[{"type":"code_inline"}]},{"text":" (chunked). A blind fetch of either blows the context window. The 500 KB threshold is a heuristic — adjust to remaining context budget.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Index → page chain for big corpora.","type":"text","marks":[{"type":"strong"}]},{"text":" Treat ","type":"text"},{"text":"llms.txt","type":"text","marks":[{"type":"code_inline"}]},{"text":" as a routing table: parse section headings, fetch only the page URLs that match the question.","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"context7 — Library Documentation (Fallback)","type":"text"}]},{"type":"paragraph","content":[{"text":"Reach for ","type":"text"},{"text":"context7","type":"text","marks":[{"type":"code_inline"}]},{"text":" when ","type":"text"},{"text":"llms-probe.sh","type":"text","marks":[{"type":"code_inline"}]},{"text":" returns nothing — the library doesn't publish llms.txt, or its docs domain isn't reachable. Coverage spans ~33K libraries via community-curated indexes; tradeoff is an enrichment layer that can introduce inaccuracies the author-published llms.txt avoids.","type":"text"}]},{"type":"paragraph","content":[{"text":"Two-step workflow via the official ","type":"text"},{"text":"ctx7","type":"text","marks":[{"type":"code_inline"}]},{"text":" CLI. Requires ","type":"text"},{"text":"bunx ctx7@latest login","type":"text","marks":[{"type":"code_inline"}]},{"text":" once (no API key env var).","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 1: Resolve library ID","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bunx ctx7@latest library \u003cname> [query]","type":"text"}]},{"type":"paragraph","content":[{"text":"Lists library candidates with their Context7 IDs (e.g. ","type":"text"},{"text":"/websites/react_dev","type":"text","marks":[{"type":"code_inline"}]},{"text":"), trust scores, and snippet counts. The optional ","type":"text"},{"text":"[query]","type":"text","marks":[{"type":"code_inline"}]},{"text":" re-ranks results by relevance — pass it whenever you already know the topic. Add ","type":"text"},{"text":"--json","type":"text","marks":[{"type":"code_inline"}]},{"text":" for machine-readable output.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 2: Fetch documentation","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bunx ctx7@latest docs \u003clibraryId> \"\u003cquery>\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Returns markdown snippets ranked by relevance. Add ","type":"text"},{"text":"--json","type":"text","marks":[{"type":"code_inline"}]},{"text":" for structured output. If the first answer is shallow or off-topic, retry with ","type":"text"},{"text":"--research","type":"text","marks":[{"type":"code_inline"}]},{"text":" — it spins up sandboxed agents that read the source repo and run a live web search, at higher cost.","type":"text"}]},{"type":"paragraph","content":[{"text":"Rules:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"One-time setup: ","type":"text"},{"text":"bunx ctx7@latest login","type":"text","marks":[{"type":"code_inline"}]},{"text":" (interactive). Verify with ","type":"text"},{"text":"bunx ctx7@latest whoami","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Always resolve the library ID first — IDs are not guessable.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Write specific queries — ","type":"text"},{"text":"\"useState hook with objects\"","type":"text","marks":[{"type":"code_inline"}]},{"text":" beats ","type":"text"},{"text":"\"hooks\"","type":"text","marks":[{"type":"code_inline"}]},{"text":". The query drives relevance ranking on both commands.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Use ","type":"text"},{"text":"--research","type":"text","marks":[{"type":"code_inline"}]},{"text":" only as a retry when the default answer was insufficient, not by default — it's slower and more expensive.","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Reference: ","type":"text"},{"text":"references/context7.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Sourcegraph — Cross-Repo Search & Code Navigation (MCP)","type":"text"}]},{"type":"paragraph","content":[{"text":"Sourcegraph public instance exposes an HTTP MCP server at ","type":"text"},{"text":"https://sourcegraph.com/.api/mcp","type":"text","marks":[{"type":"code_inline"}]},{"text":" providing 13+ tools for cross-repo search, code navigation, and git history. Configured in ora plugin's ","type":"text"},{"text":".mcp.json","type":"text","marks":[{"type":"code_inline"}]},{"text":" — tools auto-available to Clio.","type":"text"}]},{"type":"paragraph","content":[{"text":"Indexes 2M+ OSS repos across GitHub + GitLab + Bitbucket. Sub-second cross-repo queries, no local clone overhead.","type":"text"}]},{"type":"paragraph","content":[{"text":"Tools by intent:","type":"text","marks":[{"type":"strong"}]}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Intent","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Tool","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Search by exact identifier (AND)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"keyword_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" — literal match, ALL terms required. Filters: ","type":"text"},{"text":"repo:","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"file:","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"lang:","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"rev:","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Search by concept / vocab unknown","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"nls_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" — OR logic + word stemming (","type":"text"},{"text":"handler","type":"text","marks":[{"type":"code_inline"}]},{"text":" matches ","type":"text"},{"text":"handle","type":"text","marks":[{"type":"code_inline"}]},{"text":"). NOT semantic embedding","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Read single file","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"read_file","type":"text","marks":[{"type":"code_inline"}]},{"text":" — 128KB cap; ","type":"text"},{"text":"repo","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"path","type":"text","marks":[{"type":"code_inline"}]},{"text":", optional ","type":"text"},{"text":"revision","type":"text","marks":[{"type":"code_inline"}]},{"text":" / ","type":"text"},{"text":"startLine","type":"text","marks":[{"type":"code_inline"}]},{"text":" / ","type":"text"},{"text":"endLine","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"List directory","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"list_files","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Find repos","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"list_repos","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Symbol navigation","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"go_to_definition","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"find_references","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Git history / diffs","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"commit_search","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"diff_search","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"compare_revisions","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Contributor lookup","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"get_contributor_repos","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"AI synthesis over codebase","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"deepsearch","type":"text","marks":[{"type":"code_inline"}]},{"text":" — heavy; spawns subagents","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"Rules:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Pick ","type":"text","marks":[{"type":"strong"}]},{"text":"keyword_search","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":" vs ","type":"text","marks":[{"type":"strong"}]},{"text":"nls_search","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":" by what you know.","type":"text","marks":[{"type":"strong"}]},{"text":" Concrete identifier (function/class/constant name, error string, literal phrase) → ","type":"text"},{"text":"keyword_search","type":"text","marks":[{"type":"code_inline"}]},{"text":". Vocab unknown / conceptual (\"how does X work\", cross-library pattern) → ","type":"text"},{"text":"nls_search","type":"text","marks":[{"type":"code_inline"}]},{"text":". Why: ","type":"text"},{"text":"keyword_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" is AND + literal — missing one term zeroes the result; ","type":"text"},{"text":"nls_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" is OR + stemming — broader recall but noisier ranking.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Extract keywords before ","type":"text","marks":[{"type":"strong"}]},{"text":"nls_search","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":".","type":"text","marks":[{"type":"strong"}]},{"text":" Strip question words (how, what, where, does, is) and articles. Pass 2-5 meaningful nouns/verbs, not full sentences. Example: \"how does the router match incoming requests\" → ","type":"text"},{"text":"router match request handler","type":"text","marks":[{"type":"code_inline"}]},{"text":". Why: tool stems and OR-matches each term — natural-language fillers dilute the signal.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Scope with ","type":"text","marks":[{"type":"strong"}]},{"text":"repo:^...$","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":" anchors","type":"text","marks":[{"type":"strong"}]},{"text":" to avoid matching forks. ","type":"text"},{"text":"repo:foo/bar","type":"text","marks":[{"type":"code_inline"}]},{"text":" matches ","type":"text"},{"text":"foo/bar-fork","type":"text","marks":[{"type":"code_inline"}]},{"text":" too; ","type":"text"},{"text":"repo:^github\\.com/foo/bar$","type":"text","marks":[{"type":"code_inline"}]},{"text":" does not.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Pattern: search → verify path → ","type":"text","marks":[{"type":"strong"}]},{"text":"read_file","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":".","type":"text","marks":[{"type":"strong"}]},{"text":" When a search result is annotated ","type":"text"},{"text":"repo@revision","type":"text","marks":[{"type":"code_inline"}]},{"text":" (e.g. ","type":"text"},{"text":"github.com/foo/bar@abc123","type":"text","marks":[{"type":"code_inline"}]},{"text":"), split it and pass ","type":"text"},{"text":"repo","type":"text","marks":[{"type":"code_inline"}]},{"text":" + ","type":"text"},{"text":"revision","type":"text","marks":[{"type":"code_inline"}]},{"text":" separately to ","type":"text"},{"text":"read_file","type":"text","marks":[{"type":"code_inline"}]},{"text":". Omitting ","type":"text"},{"text":"revision","type":"text","marks":[{"type":"code_inline"}]},{"text":" silently reads HEAD of the default branch and may return different content.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Parallelize independent searches.","type":"text","marks":[{"type":"strong"}]},{"text":" Three repos to compare → fire three ","type":"text"},{"text":"keyword_search","type":"text","marks":[{"type":"code_inline"}]},{"text":"/","type":"text"},{"text":"nls_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" calls in one message, not sequentially.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Discovery vs forensics","type":"text","marks":[{"type":"strong"}]},{"text":" — ","type":"text"},{"text":"keyword_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" / ","type":"text"},{"text":"nls_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" for \"find repos that…\"; ","type":"text"},{"text":"git-clone","type":"text","marks":[{"type":"code_inline"}]},{"text":" for tracing flow through 5+ files in one repo.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Index lag","type":"text","marks":[{"type":"strong"}]},{"text":" — Code published within the last ~24 hours may not be indexed. Fall back to ","type":"text"},{"text":"git-clone --refresh","type":"text","marks":[{"type":"code_inline"}]},{"text":" for just-released versions.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Repo not indexed = fallback","type":"text","marks":[{"type":"strong"}]},{"text":" — If ","type":"text"},{"text":"read_file","type":"text","marks":[{"type":"code_inline"}]},{"text":" returns null repository, drop to ","type":"text"},{"text":"git-clone","type":"text","marks":[{"type":"code_inline"}]},{"text":" or ","type":"text"},{"text":"gh api contents","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"deepsearch","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":" is heavy","type":"text","marks":[{"type":"strong"}]},{"text":" — Spawns AI subagents. Use only when ","type":"text"},{"text":"keyword_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" + ","type":"text"},{"text":"read_file","type":"text","marks":[{"type":"code_inline"}]},{"text":" can't synthesize the answer ","type":"text"},{"text":"and","type":"text","marks":[{"type":"strong"}]},{"text":" the target spans multiple repos or non-GitHub hosts. For GitHub-only synthesis use ","type":"text"},{"text":"mcp__plugin_ora_morph__github_codebase_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" instead — lighter and shaped for the same job.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Plan tier caveat","type":"text","marks":[{"type":"strong"}]},{"text":" — Sourcegraph docs note MCP access is part of Enterprise plans; public ","type":"text"},{"text":"sourcegraph.com","type":"text","marks":[{"type":"code_inline"}]},{"text":" MCP endpoint's free-tier behavior is unverified. If first tool call returns 401/403, drop to ","type":"text"},{"text":"git-clone","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Reference: ","type":"text"},{"text":"Sourcegraph MCP docs","type":"text","marks":[{"type":"link","attrs":{"href":"https://sourcegraph.com/docs/api/mcp","title":null}}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Morph ","type":"text"},{"text":"github_codebase_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" — default for GitHub-hosted semantic queries","type":"text"}]},{"type":"paragraph","content":[{"text":"mcp__plugin_ora_morph__github_codebase_search","type":"text","marks":[{"type":"code_inline"}]},{"text":" runs Morph's WarpGrep subagent against a target public GitHub repo and returns a synthesized answer with file:line citations. ","type":"text"},{"text":"Reach for it first","type":"text","marks":[{"type":"strong"}]},{"text":" when the question is shaped like \"how does library X do Y\", \"where does package Z handle case W\", \"what's the data flow for feature V in repo R\" — one morph call replaces a clone-then-grep-then-read loop.","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Use when","type":"text","marks":[{"type":"strong"}]},{"text":" the target repo is on GitHub and the question is conceptual / semantic (\"how\", \"where\", \"what wires X to Y\"). Why: morph parallelizes the per-file grep + read + synthesize the caller would otherwise do serially.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Prefer Sourcegraph","type":"text","marks":[{"type":"strong"}]},{"text":" for: GitLab/Bitbucket targets, multi-repo cross-cutting searches, exact-identifier-with-filter queries (","type":"text"},{"text":"repo:","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"lang:","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"rev:","type":"text","marks":[{"type":"code_inline"}]},{"text":"), git history / diffs.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Prefer ","type":"text","marks":[{"type":"strong"}]},{"text":"git-clone","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":" for: 3+ files of follow-up exploration in one repo, ast-grep structural queries, or when the question keeps branching (\"now show me where this is called, now show me the test for it\").","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Trust citations, verify conclusions","type":"text","marks":[{"type":"strong"}]},{"text":" — morph's ","type":"text"},{"text":"file:line","type":"text","marks":[{"type":"code_inline"}]},{"text":" references point to real locations in the target repo, but its synthesis (what that code ","type":"text"},{"text":"does","type":"text","marks":[{"type":"em"}]},{"text":", how it answers the question) can be wrong. When the answer is load-bearing, spot-check via ","type":"text"},{"text":"gh api repos/.../contents/\u003cpath>","type":"text","marks":[{"type":"code_inline"}]},{"text":" or ","type":"text"},{"text":"git-clone","type":"text","marks":[{"type":"code_inline"}]},{"text":" + Read.","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"git-clone — Source Code Exploration","type":"text"}]},{"type":"paragraph","content":[{"text":"Shallow-clone any public git repo into a local cache and explore the working tree with shell tools. Cache lives at ","type":"text"},{"text":"~/.cache/clio-repos/","type":"text","marks":[{"type":"code_inline"}]},{"text":" and is reused across sessions.","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash scripts/git-clone.sh \u003crepo> [--branch X] [--refresh]","type":"text"}]},{"type":"paragraph","content":[{"text":"The script echoes the absolute path of the cached clone. Subsequent calls for the same repo return the cached path instantly (no re-clone).","type":"text"}]},{"type":"paragraph","content":[{"text":"Repo argument forms:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"owner/repo","type":"text","marks":[{"type":"code_inline"}]},{"text":" — GitHub shortcut (e.g. ","type":"text"},{"text":"vercel/next.js","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Full HTTPS URL — works for any host (","type":"text"},{"text":"https://gitlab.com/...","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"https://gitlab.jmango360.com/...","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SSH form — ","type":"text"},{"text":"git@host:path","type":"text","marks":[{"type":"code_inline"}]},{"text":" (requires SSH key configured)","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Parallelization:","type":"text","marks":[{"type":"strong"}]},{"text":" clone is I/O-bound (1-3s for small/medium repos). When researching a topic that needs both docs and source code, dispatch the clone and ","type":"text"},{"text":"llms-probe","type":"text","marks":[{"type":"code_inline"}]},{"text":"/","type":"text"},{"text":"context7","type":"text","marks":[{"type":"code_inline"}]},{"text":"/WebSearch in parallel — by the time docs return, the clone is ready to explore.","type":"text"}]},{"type":"paragraph","content":[{"text":"Rules:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Do not read script source code. Run with ","type":"text"},{"text":"--help","type":"text","marks":[{"type":"code_inline"}]},{"text":" for usage.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Default cache is ","type":"text"},{"text":"~/.cache/clio-repos/","type":"text","marks":[{"type":"code_inline"}]},{"text":"; override with ","type":"text"},{"text":"--cache-dir","type":"text","marks":[{"type":"code_inline"}]},{"text":" when needed.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Caches are reused — pass ","type":"text"},{"text":"--refresh","type":"text","marks":[{"type":"code_inline"}]},{"text":" only when you need the latest commit.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"For one-off file fetches by exact path, prefer ","type":"text"},{"text":"gh api repos/.../contents/\u003cpath>","type":"text","marks":[{"type":"code_inline"}]},{"text":" — no clone overhead.","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"deps-dev — Package Versions","type":"text"}]},{"type":"paragraph","content":[{"text":"Query latest stable versions from public registries. No API key needed.","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"python3 scripts/get-versions.py \u003csystem> \u003cpkg1> [pkg2] ...","type":"text"}]},{"type":"paragraph","content":[{"text":"Supported ecosystems:","type":"text","marks":[{"type":"strong"}]}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Ecosystem","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"System ID","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Example","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"npm","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"npm","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"express","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"@types/node","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"PyPI","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"pypi","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"requests","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"django","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Go","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"go","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"github.com/gin-gonic/gin","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Cargo","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"cargo","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"serde","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"tokio","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Maven","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"maven","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"org.springframework:spring-core","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"NuGet","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"nuget","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Newtonsoft.Json","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"RubyGems","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"rubygems","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"rails","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"sidekiq","type":"text","marks":[{"type":"code_inline"}]}]}]}]}]},{"type":"paragraph","content":[{"text":"Output: TSV with columns ","type":"text"},{"text":"package","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"version","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"published","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"status","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"paragraph","content":[{"text":"Rules:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Do not read script source code. Run directly or use ","type":"text"},{"text":"--help","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Batch lookups when possible — pass multiple package names in one call.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Flag deprecated packages — if status says ","type":"text"},{"text":"deprecated","type":"text","marks":[{"type":"code_inline"}]},{"text":", suggest an alternative.","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Reference: ","type":"text"},{"text":"references/deps-dev.md","type":"text","marks":[{"type":"code_inline"}]}]}]},"metadata":{"date":"2026-06-05","name":"godfetch","author":"@skillopedia","source":{"stars":6,"repo_name":"agentskills","origin_url":"https://github.com/trancong12102/agentskills/blob/HEAD/godfetch/SKILL.md","repo_owner":"trancong12102","body_sha256":"7fd8c4191819a854e3007512b1ef9c8c5e2c393938dca1915e0a67131119d732","cluster_key":"f725c25b7d0753fa7e7c55435fba378aae155d83b3a9e6a1163497e8a9a6dd46","clean_bundle":{"format":"clean-skill-bundle-v1","source":"trancong12102/agentskills/godfetch/SKILL.md","attachments":[{"id":"93f74b57-c474-52c9-bc4c-f65d26f3e8f2","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/93f74b57-c474-52c9-bc4c-f65d26f3e8f2/attachment.md","path":"references/context7.md","size":3027,"sha256":"3863d80c1e8f6e070a1ef6714b60aefe77f97528f5d9b0eb3ce65fdb3fb54a1d","contentType":"text/markdown; charset=utf-8"},{"id":"e1910968-a980-533a-ba78-529104215eb6","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e1910968-a980-533a-ba78-529104215eb6/attachment.md","path":"references/deps-dev.md","size":2692,"sha256":"cbc6ae1aa59ad01a9d13de3fcf3112ed9fcc06f0418728950e0582cb0b333d60","contentType":"text/markdown; charset=utf-8"},{"id":"93de6a30-86b1-5e7f-b15e-332b6f6c386a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/93de6a30-86b1-5e7f-b15e-332b6f6c386a/attachment.py","path":"scripts/get-versions.py","size":3523,"sha256":"8edc1a78c4cb2ddcee868881b38795bc1f35a6c982ffd3b5d5965503d1842c2b","contentType":"text/x-python; charset=utf-8"},{"id":"e1a07725-388e-5c69-b066-a3f01d66ad83","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e1a07725-388e-5c69-b066-a3f01d66ad83/attachment.sh","path":"scripts/git-clone.sh","size":3233,"sha256":"cf9b0017026488c5e892fb7d4d30a5353c2a4187706402d09f9544cec951c37d","contentType":"application/x-sh; charset=utf-8"},{"id":"7725cba4-7a85-5f6d-923b-47c2cb6adb58","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/7725cba4-7a85-5f6d-923b-47c2cb6adb58/attachment.sh","path":"scripts/llms-probe.sh","size":2809,"sha256":"5933a4f1acc3b09239a3fffa8fc71b69e2f5b0a1a626912d957d588440693420","contentType":"application/x-sh; charset=utf-8"}],"bundle_sha256":"e8797539b22f4ba14a2cca6fc85dfa442c1817995d7b1aa02d8175863f065404","attachment_count":5,"text_attachments":5,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":0,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"godfetch/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"testing-qa","category_label":"Testing"},"exact_dupes_collapsed_into_this":0},"version":"v1","category":"testing-qa","import_tag":"clean-skills-v1","description":"Unified external research for documentation, GitHub code, and package versions. Use when the user needs to look up library docs or API references, search code in a public GitHub repo, check the latest version of a package, verify whether a dependency is deprecated, or any task requiring external knowledge beyond the local codebase and training data."}},"renderedAt":1782979609137}

godfetch Unified external research — look up library documentation, search source code in any git repository, and check package versions from a single skill. Routing | Intent | Primary tool | Fallback | | ---------------------------------------------------------------------------- | ----------------------------------------------------------------- | -------------------------------------------------------- | | Library docs, API reference | → llms.txt | if no llms.txt published | | Changelogs, breaking changes | → llms.txt | for CHANGELOG.md | | Cross-repo code search (exact identifier) | Sourc…