Aktualne docs bibliotek — Context7 + skill routingowy
Pytanie ze scorecardu: Skąd Twój agent bierze aktualne docs bibliotek? Maksymalna odpowiedź (3 pkt): Context7 + skill, który decyduje “lookup biblioteki vs ogólne programowanie”.
Dlaczego to ważne w 2026 (cutoff treningowy modelu vs cotygodniowe update’y bibliotek)
Dział zatytułowany „Dlaczego to ważne w 2026 (cutoff treningowy modelu vs cotygodniowe update’y bibliotek)”Największe źródło zmarnowanych tur w 2026 jest dokładnie to samo, co w 2024: model pisze kod pod API, którego już nie ma. React 19 wywalił implicit forwardRef. Next.js 15 zrobił params i searchParams asynchronicznymi. Tailwind 4 przeniósł konfig z tailwind.config.js do CSS-native bloków @theme. Drizzle zmienił nazwy połowy metod relational queries między 0.30 a 0.36. Cloudflare Workers dodał kilkanaście nowych bindings od ostatniego cutoffu Claude/GPT/Gemini. Żadna z tych zmian nie jest widoczna dla modelu, którego dane treningowe kończą się dziewięć miesięcy przed pytaniem — więc z pełną pewnością wkleja stary API, ty kopiujesz to do edytora, nie kompiluje się, i palisz trzy tury, żeby dojść dlaczego.
Rozwiązaniem nie jest “użyj mądrzejszego modelu”. Rozwiązaniem jest podpiąć agenta do źródła aktualnej dokumentacji bibliotek, żeby lookupował powierzchnię API, która istnieje dziś, a nie tę z cutoffu. Dokładnie to robi Context7 — i dlatego Q20 oddziela deweloperów, którzy wciąż czekają 6–12 miesięcy na następny cutoff treningowy, od tych, których agenci czytają już docs wydane w zeszły wtorek. API bibliotek zmieniają się co tydzień. Modele halucynują API, które nie istnieją. Context7 zamyka tę lukę.
Powodem, dla którego Q20 oddziela odpowiedź na 2 pkt (“czasem używam Context7”) od 3 pkt (“Context7 + skill routingowy”), jest to, że zainstalowanie Context7 to tylko połowa wygranej. Druga połowa to upewnienie się, że agent naprawdę go wywołuje, ilekroć pojawia się pytanie o bibliotekę — bez konieczności doklejania “use context7” na końcu każdego prompta. Od tego jest skill routingowy. Razem Context7 + skill zamieniają “sprawdź aktualne API tej biblioteki” z rzeczy, którą musisz pamiętać, w rzecz, którą agent robi sam.
Jak naprawdę wygląda maksymalny wynik
Dział zatytułowany „Jak naprawdę wygląda maksymalny wynik”Pełne punkty za Q20 wymagają obu połówek. Pierwsza to Context7 MCP zainstalowany i zautoryzowany, pod adresem https://mcp.context7.com/mcp, widoczny w claude mcp list (i odpowiednikach dla Codex / Cursor). Druga to skill routingowy — plik SKILL.md z opisem, który triggeruje się, ilekroć użytkownik wspomni konkretną bibliotekę, framework, SDK lub wersję, i instruuje agenta, żeby wywołał Context7 najpierw, zanim zacznie generować kod pod tę bibliotekę. Skill mieszka w ~/.claude/skills/library-lookup/ (zmirrorowany do .cursor/skills/ i ~/.agents/skills/), a jego opis jest na tyle konkretny, że model invokuje go bez wpisywania “context7” w prompt.
W praktyce wygląda to tak. Pytasz agenta o coś typu “skonfiguruj zapytanie Drizzle, które joinuje users z subscriptions i filtruje po active status”. Nie mówisz “use context7”. Nie mówisz “sprawdź docs”. Po prostu opisujesz zadanie. Skill routingowy odpala się, bo prompt wspomina nazwę biblioteki i nietrywialną powierzchnię API. Skill instruuje agenta, żeby zawołał resolve-library-id dla Drizzle, potem get-library-docs dla sekcji relational queries, a potem napisał kod pod ten payload — nie pod wspomnienie, jak Drizzle działało w momencie treningu. Wynik: kod używa aktualnego API relational queries, odwołuje się do aktualnych nazw metod i kompiluje się od pierwszego razu. Bez sufiksu “use context7”, bez halucynowanych metod, bez pętli korekt na trzy tury.
Setup za 2 pkt ma Context7 zainstalowane, ale bez skilla routingowego — więc działa, kiedy pamiętasz go wywołać, i nie działa, kiedy nie pamiętasz. Setup za 1 pkt nie ma Context7 i wraca do tego, co model pamięta z treningu, dopalanego okazjonalnym WebFetchem strony docs, kiedy użytkownik wkleja URL. Setup za 0 pkt to “ufam modelowi” — co w 2026 oznacza, że płacisz podatek halucynacyjny od każdego pytania o bibliotekę. Maksymalny wynik wymaga obu kawałków podpiętych tak, żeby lookup był automatyczny, nie opt-in.
Aktualny krajobraz (zweryfikowany przez web search)
Dział zatytułowany „Aktualny krajobraz (zweryfikowany przez web search)”Do maja 2026 Context7 skonsolidował się jako domyślne rozwiązanie problemu stale-docs w całym ekosystemie agentów. Jest serwerem #1 na MCP.Directory pod względem wyświetleń (~2× więcej niż drugi w kolejności), komenda instalacyjna pojawia się w prawie każdym zestawieniu “best MCP setup for Claude Code / Codex / Cursor” opublikowanym w ostatnich sześciu miesiącach, a większość głównych agentów IDE oferuje go dziś jako one-click install. Konkurencja istnieje — Nia Oracle raportuje nieco niższą halucynację na bleeding-edge features (52.1% vs 63.4% Context7 na najświeższym, nieoficjalnie wydanym API), a Mintlify auto-hostuje MCP dla każdego docs site’u, który u nich publikuje — ale kombinacja Context7: szerokie pokrycie (9000+ zaindeksowanych bibliotek), ciągła świeżość (nowe wersje zaindeksowane zwykle w ciągu dni od wydania) i zero-config instalacja zrobiły z niego domyślny pick.
Context7 MCP (free + paid tiers, pokrycie bibliotek)
Dział zatytułowany „Context7 MCP (free + paid tiers, pokrycie bibliotek)”Context7 to remote MCP server hostowany pod https://mcp.context7.com/mcp. Indeksuje dokumentację 9000+ bibliotek, frameworków i SDK — React, Vue, Svelte, Next.js, Nuxt, Astro, Tailwind, Vite, Rollup, Prisma, Drizzle, Kysely, tRPC, Hono, Express, Fastify, Cloudflare Workers, Vercel SDKs, AWS SDK, Stripe, Supabase, Convex, lista leci dalej. Indeks jest ciągle aktualizowany: kiedy biblioteka wydaje nową wersję ze zmianami w dokach, Context7 zwykle podchwytuje to w ciągu dni, a dla high-traffic bibliotek (React, Next.js, Tailwind) opóźnienie liczy się często w godzinach.
Free tier pokrywa większość indywidualnego użycia z limitami wystarczająco hojnymi dla normalnego workflow dewelopera. Płatne tiery podnoszą limity i dodają rzeczy typu analytics użycia na poziomie organizacji oraz priorytetowe indeksowanie bibliotek, które sam zgłaszasz. Dla większości deweloperów “free tier + zainstaluj i zapomnij” to właściwy ruch; dowiesz się, że potrzebujesz upgrade’u, kiedy uderzysz w limit, a nawet wtedy upgrade jest tani w stosunku do czasu zaoszczędzonego na sprzątaniu halucynacji.
Jak to działa (resolve-library-id → get-library-docs)
Dział zatytułowany „Jak to działa (resolve-library-id → get-library-docs)”Context7 wystawia agentowi dwa narzędzia. Pierwsze, resolve-library-id, bierze nazwę biblioteki w naturalnym języku (“Drizzle ORM”, “Next.js”, “Tailwind 4”) i zwraca kanoniczne Context7 ID, które identyfikuje bibliotekę i wersję. Drugie, get-library-docs, bierze to ID plus opcjonalny parametr topic (np. “relational queries”, “app router”, “middleware”) i opcjonalny budżet tokens, a zwraca odpowiednie fragmenty dokumentacji plus przykłady kodu dla tego tematu.
Ten dwustopniowy pattern jest celowy. resolve-library-id jest tani i rozróżnia podobnie nazwane biblioteki — “Next.js” vs “next” (npm test runner), “Drizzle” jako ORM vs “drizzle” (helper Three.js). get-library-docs to wywołanie drogie (ściąga prawdziwą treść dokumentacji), a filtr topic chroni przed over-fetchem: zamiast wrzucać całe docs Next.js do kontekstu, agent prosi o konkretną sekcję, której potrzebuje (“App Router data fetching” albo “Server Actions”) i dostaje focusowany payload. Dobrze zroutowane wywołanie Context7 zwraca 5–15 KB istotnych docs, nie 500 KB “każdej strony na sajcie”.
Porównanie z ad-hoc WebSearch / WebFetch
Dział zatytułowany „Porównanie z ad-hoc WebSearch / WebFetch”Naiwna alternatywa dla Context7 to “powiedz agentowi, żeby WebFetchował stronę docs”. To czasem działa — dla vendora z czystym HTML docs i stabilnym URLem WebFetch może zwrócić właściwą treść — ale ma trzy problemy, które Context7 rozwiązuje. Po pierwsze, jakość retrievalu: agent musi zgadnąć URL dokumentacji, co odpada dla vendorów, których docs siedzą pod nieoczywistymi ścieżkami (Cloudflare przesuwa rzeczy, Vercel rebranduje co kilka miesięcy, mniejsze biblioteki mają docs w GitHub README, których format się zmienia). Po drugie, signal-to-noise: strona docs często zawiera nav, reklamy, copy marketingowe i cross-linki do innych bibliotek — Context7 strugla to do faktycznej treści API. Po trzecie, świadomość wersji: WebFetch zwraca cokolwiek pod URL, na który go skierujesz; Context7 wie o wersjach biblioteki i może zwrócić docs dla konkretnej wersji, której używa użytkownik (lub najnowszej stabilnej, jeśli wersja nie jest podana).
WebSearch jest jeszcze gorszy dla tego use case’u — zwraca listę linków do docs, blog postów, odpowiedzi na Stack Overflow i AI-generowanych podsumowań różnej jakości. Agent musi wtedy jeden wybrać, WebFetchować i sparsować. Context7 zwija cały ten łańcuch do jednego wywołania narzędzia, które zwraca skuratorowaną, świadomą wersji, skoncentrowaną na API treść. Używaj WebFetch i WebSearch do rzeczy, których Context7 nie pokrywa (one-off blog posty, RFC, GitHub issues); używaj Context7 do wszystkiego, co ma kanoniczny docs site.
Autorstwo skilla routingowego (opis, który auto-triggeruje na wzmianki o bibliotekach)
Dział zatytułowany „Autorstwo skilla routingowego (opis, który auto-triggeruje na wzmianki o bibliotekach)”Skill routingowy to most między “Context7 jest zainstalowany” a “Context7 faktycznie się wywołuje, kiedy powinien”. To SKILL.md w ~/.claude/skills/library-lookup/, którego opis jest konkretny i lekko pushy — wymienia rodzaje promptów, na których Context7 powinien się odpalać — a którego body mówi agentowi konkretny workflow: zawołaj resolve-library-id najpierw, potem get-library-docs z targetowanym tematem, potem napisz kod pod zwrócony payload.
Opis to cała gra. Przypomnij sobie z Q8: model widzi tylko name i description każdego skilla przy starcie sesji — body jest ładowane dopiero, kiedy opis pasuje do zapytania. Więc opis musi wymieniać warunki triggera wprost: “ilekroć użytkownik wspomina konkretną bibliotekę, framework, SDK lub wersję”, “ilekroć użytkownik pyta o aktualne API biblioteki”, “ilekroć użytkownik wkleja kod importujący z third-party package i prosi o rozbudowę lub refaktor”. Mglisty opis typu “Pomaga z dokumentacją” nigdy się nie odpali. Konkretny opis typu “Triggeruje się, ilekroć użytkownik wspomina po nazwie bibliotekę JavaScript/TypeScript, framework, ORM lub SDK — Drizzle, Next.js, Tailwind, React, Hono, tRPC itd. — żeby zassać aktualne docs z Context7 przed generowaniem kodu” odpala się niezawodnie.
Krok po kroku: instalacja + routing
Dział zatytułowany „Krok po kroku: instalacja + routing”-
Zainstaluj Context7 MCP. Odpal:
Okno terminala claude mcp add --transport http context7 https://mcp.context7.com/mcpFree tier wystarcza na start; klucz API możesz wziąć później, jeśli uderzysz w limit. Potwierdź przez
claude mcp list—context7powinien się pojawić. Dla Codex CLI:codex mcp add --transport http context7 https://mcp.context7.com/mcp. Dla Cursora: dodaj przez panel MCP z tym samym URL. -
Przetestuj Context7 w sesji. Otwórz nową sesję agenta i poproś o coś typu “sprawdź aktualne API dla
db.queryw Drizzle — chcę zobaczyć rzeczywiste sygnatury metod relational queries”. Agent powinien zawołaćresolve-library-id, potemget-library-docsi zwrócić aktualną treść docs. Jeśli nie odpala się sam, nie masz jeszcze skilla routingowego — to ok, jedź dalej. -
Utwórz katalog skilla routingowego. Odpal:
Okno terminala mkdir -p ~/.claude/skills/library-lookupDla cross-tool sharingu utwórz też
~/.cursor/skills/i~/.agents/skills/i zsymlinkuj ten sam folder do obu:ln -s ~/.claude/skills/library-lookup ~/.cursor/skills/library-lookupi podobnie dla~/.agents/skills/. -
Napisz
SKILL.md. Utwórz~/.claude/skills/library-lookup/SKILL.md:---name: library-lookupdescription: Triggeruje się, ilekroć użytkownik wspomina po nazwie bibliotekę JavaScript/TypeScript/Python, framework, ORM, SDK lub CLI tool — w tym React, Next.js, Astro, Tailwind, Drizzle, Prisma, Hono, tRPC, Cloudflare Workers, Vercel AI SDK, Stripe SDK, Polar SDK, Supabase, Convex, FastAPI, Django itd. Używaj, ilekroć użytkownik pyta o aktualną powierzchnię API, kroki migracji między wersjami albo "jak zrobić X w bibliotece Y". Zawsze wołaj Context7 (resolve-library-id → get-library-docs) PRZED generowaniem kodu używającego biblioteki, i cytuj zwrócone docs w odpowiedzi, żeby użytkownik mógł zweryfikować.version: 1.0.0---# Routing lookupu bibliotek## Kiedy używaćOdpalaj ten skill, ilekroć JAKIEKOLWIEK z poniższych jest prawdą:- Użytkownik wspomina po nazwie konkretną bibliotekę, framework, SDK, ORM lub CLI tool.- Użytkownik pyta "jak zrobić X w Y", gdzie Y to third-party package.- Użytkownik wkleja kod importujący z third-party package i prosi o rozbudowę lub refaktor.- Użytkownik pyta o migrację między wersjami biblioteki.- Użytkownik pyta o aktualną powierzchnię API jakiegokolwiek package'u.NIE odpalaj na: refaktor bez pytań o bibliotekę, debug logiki biznesowej, code review, ogólne koncepcje programistyczne.## Kroki1. Zidentyfikuj nazwę(y) biblioteki w prompcie użytkownika.2. Zawołaj `resolve-library-id` z nazwą biblioteki, żeby dostać kanoniczne Context7 ID.3. Zawołaj `get-library-docs` z tym ID i focusowanym parametrem `topic`, który pasuje do tego, o co użytkownik faktycznie pytał (np. "relational queries", "App Router", "middleware"). Trzymaj `tokens` skromnie (5000–10000), chyba że użytkownik prosił o wyczerpujące pokrycie.4. Pisz kod pod zwrócony payload docs, nie pod wspomnienia z treningu.5. W odpowiedzi krótko zacytuj relewantną sygnaturę metody lub blok konfiguracji z docs, żeby użytkownik mógł sanity-check'ować.## Pułapki- NIE over-fetchuj. Wywołanie `get-library-docs` bez filtra `topic` może zwrócić setki KB nieistotnej treści i spalić budżet kontekstu użytkownika. Zawsze scope'uj przez `topic`.- NIE wracaj do wspomnień modelu, jeśli Context7 nie zwróci nic użytecznego. Zamiast tego spróbuj innej frazy `topic` albo wypłyń lukę do użytkownika ("Context7 nie zwrócił aktualnych docs dla X — chcesz, żebym WebFetchował oficjalną stronę docs?").- NIE odpalaj na generyczne wzmianki ("kocham TypeScript", "JavaScript jest fajny"). Odpalaj tylko, kiedy prompt pyta o konkretną *nazwaną bibliotekę lub framework*. -
Przetestuj, czy skill odpala się automatycznie. Otwórz świeżą sesję agenta i opisz zadanie, które powinno go uruchomić — bez mówienia “use context7” ani nazywania skilla. Przykład: “Pomóż mi skonfigurować route w Hono, który streamuje response z async generatora”. Patrz na transkrypt: czy agent załadował skill
library-lookupi wywołałresolve-library-id+get-library-docsdla Hono? Jeśli tak, gotowe. Jeśli nie, opis był za generyczny — dodaj bardziej konkretne frazy triggera (więcej nazw bibliotek, więcej wzorców czasownikowych typu “skonfiguruj”, “jak zrobić”, “ustaw”) i spróbuj jeszcze raz. -
Wrzuć skill do version controlu. Dodaj
~/.claude/skills/library-lookup/do osobistego repodotfiles(lub do zespołowego reposkills/, jeśli kilku deweloperów ma odziedziczyć ten sam routing). Skille to infrastruktura; traktuj je jak config, nie jak jednorazowe pliki. -
Iteruj na każdym pudle. Ilekroć zauważysz, że agent napisał kod pod stare API (deprecated React pattern, stara nazwa metody Drizzle, usunięta utility z Tailwind), otwórz transkrypt, znajdź prompt, który powinien był odpalić skill, i sprawdź, dlaczego nie odpalił. Zwykle opisowi brakuje relewantnego wzorca czasownikowego albo nazwy biblioteki — dodaj, zapisz, ponów. Przez kilka tygodni skill zbiega do opisu, który odpala się niezawodnie w realnym workflow.
Częste pułapki
Dział zatytułowany „Częste pułapki”- Over-fetchowanie docs. Wywołanie
get-library-docsbez filtratopicwrzuca całe docs biblioteki do kontekstu — 100–500 KB dla dużego frameworka typu Next.js. To zżera budżet kontekstu i spowalnia każdą kolejną turę w sesji. Sekcja## Krokiskilla powinna wprost mówić agentowi, żeby scope’ował przeztopicz ciasnym budżetemtokens(5000–10000), i poszerzał scope tylko, jeśli użytkownik prosi o wyczerpujące pokrycie. - Brak triggera routingowego. Zainstalowanie Context7 bez skilla routingowego oznacza, że agent invokuje go tylko, kiedy użytkownik wprost wpisuje “use context7” na końcu prompta. Większość czasu użytkownik zapomina, a agent po cichu wraca do wspomnień treningowych. Cały sens skilla to zdjąć ciężar pamiętania — jeśli twój opis jest za generyczny, żeby się sam odpalać, zainstalowałeś tylko połowę rozwiązania.
- Powrót do wspomnień modelu, kiedy Context7 nie zwraca nic użytecznego. Czasem Context7 nie ma docs dla biblioteki albo zwraca docs, które nie odpowiadają na konkretne pytanie. Zły ruch to po cichu wrócić do tego, co model pamięta z treningu (czyli dokładnie to, czego chciałeś uniknąć). Dobry ruch to wypłynąć lukę: “Context7 nie zwrócił docs dla tego — chcesz, żebym WebFetchował oficjalną stronę docs?” Sekcja
## Pułapkiskilla powinna to wprost mówić. - Over-triggerowanie na generyczne wzmianki. Opis, który odpala się na jakąkolwiek wzmiankę o “TypeScript” albo “JavaScript”, odpali się na prompty, które naprawdę nie potrzebują lookupu — paląc turę na bezsensowne
resolve-library-iddla “javascript”. Opis powinien specyfikować nazwane biblioteki, frameworki, SDK — nie generyczne wzmianki o językach. - Mylenie WebFetch z Context7. Workflow “library docs”, który używa
WebFetchURL-a docs zamiast Context7, jest kruchy: agent musi zgadnąć URL, parsuje HTML z nawigacją i reklamami, i nie ma świadomości wersji. Używaj WebFetch tylko dla one-off stron, których Context7 nie pokrywa (RFC, GitHub issues, pojedyncze blog posty) — nie jako głównego źródła docs. - Pomijanie wpisu w trio. Jeśli twoje Q10 trio nie zawiera już Context7, twój maksymalny wynik z Q20 jest niespójny z Q10 — napraw najpierw Q10, dodając Context7 do trzech esencjonalnych MCP. Q20 jest downstream konsekwencją zainstalowanego Context7; nie zmaksujesz Q20 bez wcześniejszego zmaksowania slotu Context7 w Q10.
Jak zweryfikować, że tam jesteś
Dział zatytułowany „Jak zweryfikować, że tam jesteś”claude mcp list(i odpowiedniki dla Codex / Cursor) pokazujecontext7z endpointemhttps://mcp.context7.com/mcp.~/.claude/skills/library-lookup/SKILL.mdistnieje (i jest zsymlinkowany albo skopiowany do~/.cursor/skills/i~/.agents/skills/).descriptionskilla wymienia konkretne warunki triggera — nazwy bibliotek, wzorce czasownikowe, kształty promptów — a nie generyczny jeden liner.- W ostatnim transkrypcie agenta możesz wskazać przynajmniej jedną linię, gdzie agent załadował
library-lookupi wywołałresolve-library-id+get-library-docsbez wpisywania “use context7” w prompcie. - Wywołanie
get-library-docsmiało focusowany parametrtopici skromny budżettokens— nie pusty topic, który wrzucił całą bibliotekę do kontekstu. - Skill jest w version controlu (osobiste dotfiles albo zespołowe repo
skills/), nie tylko siedzi w~/.claude/skills/czekając, aż zginie przy następnej zmianie maszyny. - Nie wpisałeś ręcznie “use context7” na końcu prompta w ostatnim tygodniu — skill routingowy zrobił to zbędnym.