{"id":"07083c28-6477-4adb-8f32-d657ca567bae","shortId":"Rc8tDT","kind":"skill","title":"apilookup","tagline":"Use when work depends on current external API behavior, SDK docs, framework versions, breaking changes, migration guides, changelogs, release notes, deprecations, or syntax that may have changed.","description":"# API Lookup Skill\n\nLook up API documentation, SDK references, library versions, and migration guides using a three-tier resolution strategy that starts with local Flow skill references and escalates to targeted web searches only when needed.\n\n## Overview\n\nThree tiers of resolution, applied in order:\n\n1. **Local skill references** — if a matching Flow skill exists and the registry entry is fresh (< 30 days), load the skill's curated `references/` docs directly. No network needed.\n2. **Targeted web lookup** — if local refs are stale (> 30 days) or the query needs more, use the registry's known URLs for targeted searches (max 2-4).\n3. **Arbitrary lookup** — for technologies without a matching skill, broad web search with a version-first strategy (max 2-4 searches).\n\n## Usage Patterns\n\nExample queries this skill handles:\n\n- \"What's the latest Litestar version and what changed?\"\n- \"How do I use React Server Components?\"\n- \"Show me the SQLAlchemy 2.0 migration guide\"\n- \"What breaking changes are in Angular 19?\"\n- \"What's the current Go module proxy API?\" (arbitrary — no local skill)\n- \"Check if there's a newer version of Tailwind CSS\"\n\n<workflow>\n\n## How It Works\n\n### Version Registry\n\n`references/registry.json` maps every Flow skill to:\n\n- Current known version and last-checked date\n- Package registry (PyPI, npm, crates.io, etc.)\n- Official docs URL, changelog URL, and GitHub repo\n- Search hint keywords for targeted queries\n\n### Staleness Thresholds\n\n| Age of registry entry | Action |\n|-----------------------|--------|\n| < 30 days | Trust local skill references, answer directly |\n| 30-90 days | Use local refs as baseline, verify version via web |\n| > 90 days | Treat as potentially outdated, do full version check |\n\n### Search Budget\n\nAll web lookups are capped at **2-4 searches max**. Prefer `WebFetch` on known URLs over `WebSearch` when registry URLs are available — it is faster and more precise.\n\n</workflow>\n\n<guardrails>\n\n## Lookup Rules\n\nSee `references/lookup-strategy.md` for the full decision tree. Key principles:\n\n1. **Always start local** — check the registry and load matching skill refs if fresh\n2. **Be targeted** — use registry URLs and package names for precise queries\n3. **Respect the budget** — 2-4 searches max, stop once you have an authoritative answer\n4. **Cite sources** — always include links to official docs or changelogs\n5. **Note version gaps** — if local refs cover version X but the current release is Y, tell the user explicitly\n\n</guardrails>\n\n## References Index\n\n- **[Lookup Strategy](references/lookup-strategy.md)** — Detailed three-tier resolution instructions\n- **[Version Registry](references/registry.json)** — Package metadata and staleness tracking for all skills\n- **[Registry Schema](references/registry-schema.md)** — Documents the registry JSON format and fields\n\n<validation>\n\n## Validation Checkpoint\n\nBefore delivering an answer based on an API lookup, verify:\n\n- [ ] **Staleness check** was performed against `registry.json` for known skills\n- [ ] **Tier 1 (Local)** was tried first for fresh entries (< 30 days)\n- [ ] **Tier 2 (Targeted)** was used for stale entries, capping at 2-4 searches\n- [ ] **Tier 3 (Arbitrary)** used for unknown tech, anchoring on today's date\n- [ ] **Citations** are included with direct links to official docs or changelogs\n- [ ] **Version gaps** between local refs and current docs are explicitly noted\n\n</validation>\n\n<example>\n\n## Example: Looking up React Server Components\n\n**Query:** \"How do I use React Server Components in Next.js?\"\n\n1. **Identify Tech:** React, Next.js.\n2. **Check Registry:** Matches `react` skill. `last_checked` is 45 days ago (Tier 2).\n3. **Execute Tier 2:**\n   - **Step 1 (Version):** WebFetch `https://github.com/facebook/react/releases` -> React 19 is latest.\n   - **Step 2 (Specific):** WebSearch `site:nextjs.org react server components pattern 2026`.\n4. **Synthesize:**\n   - \"Based on Next.js 15+ documentation (compatible with React 19):\"\n   - Explain `use client` vs default server components.\n   - Provide code example of a Server Component fetching data.\n   - **Citations:** [Next.js RSC Docs](https://nextjs.org/docs/app/building-your-application/rendering/server-components), [React 19 Upgrade Guide](https://react.dev/blog/2024/12/05/react-19).\n\n</example>","tags":["apilookup","flow","cofin","agent-skills","ai-agents","beads","claude-code","codex","cursor","developer-tools","gemini-cli","opencode"],"capabilities":["skill","source-cofin","skill-apilookup","topic-agent-skills","topic-ai-agents","topic-beads","topic-claude-code","topic-codex","topic-cursor","topic-developer-tools","topic-gemini-cli","topic-opencode","topic-plugin","topic-slash-commands","topic-spec-driven-development"],"categories":["flow"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cofin/flow/apilookup","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cofin/flow","source_repo":"https://github.com/cofin/flow","install_from":"skills.sh"}},"qualityScore":"0.455","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 11 github stars · SKILL.md body (4,308 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:07:35.143Z","embedding":null,"createdAt":"2026-04-23T13:03:57.578Z","updatedAt":"2026-05-18T19:07:35.143Z","lastSeenAt":"2026-05-18T19:07:35.143Z","tsv":"'-4':130,151,297,360,476 '-90':267 '/blog/2024/12/05/react-19).':613 '/docs/app/building-your-application/rendering/server-components),':606 '/facebook/react/releases':557 '1':74,329,455,528,552 '15':578 '19':189,559,583,608 '2':103,129,150,296,343,359,466,475,533,546,550,563 '2.0':180 '2026':572 '3':131,355,479,547 '30':90,112,258,266,463 '4':370,573 '45':542 '5':381 '90':278 'action':257 'age':253 'ago':544 'alway':330,373 'anchor':485 'angular':188 'answer':264,369,438 'api':9,29,34,197,442 'apilookup':1 'appli':71 'arbitrari':132,198,480 'authorit':368 'avail':311 'base':439,575 'baselin':273 'behavior':10 'break':15,184 'broad':140 'budget':289,358 'cap':294,473 'chang':16,28,168,185 'changelog':19,240,380,500 'check':202,229,287,333,446,534,540 'checkpoint':434 'citat':490,600 'cite':371 'client':586 'code':592 'compat':580 'compon':175,517,525,570,590,597 'cover':388 'crates.io':235 'css':211 'curat':96 'current':7,193,223,393,507 'data':599 'date':230,489 'day':91,113,259,268,279,464,543 'decis':325 'default':588 'deliv':436 'depend':5 'deprec':22 'detail':406 'direct':99,265,494 'doc':12,98,238,378,498,508,603 'document':35,426,579 'entri':87,256,462,472 'escal':58 'etc':236 'everi':219 'exampl':155,512,593 'execut':548 'exist':83 'explain':584 'explicit':400,510 'extern':8 'faster':314 'fetch':598 'field':432 'first':147,459 'flow':54,81,220 'format':430 'framework':13 'fresh':89,342,461 'full':285,324 'gap':384,502 'github':243 'github.com':556 'github.com/facebook/react/releases':555 'go':194 'guid':18,42,182,610 'handl':159 'hint':246 'identifi':529 'includ':374,492 'index':402 'instruct':411 'json':429 'key':327 'keyword':247 'known':123,224,303,452 'last':228,539 'last-check':227 'latest':163,561 'librari':38 'link':375,495 'litestar':164 'load':92,337 'local':53,75,108,200,261,270,332,386,456,504 'look':32,513 'lookup':30,106,133,292,318,403,443 'map':218 'match':80,138,338,536 'max':128,149,299,362 'may':26 'metadata':416 'migrat':17,41,181 'modul':195 'name':351 'need':65,102,117 'network':101 'newer':207 'next.js':527,532,577,601 'nextjs.org':567,605 'nextjs.org/docs/app/building-your-application/rendering/server-components),':604 'note':21,382,511 'npm':234 'offici':237,377,497 'order':73 'outdat':283 'overview':66 'packag':231,350,415 'pattern':154,571 'perform':448 'potenti':282 'precis':317,353 'prefer':300 'principl':328 'provid':591 'proxi':196 'pypi':233 'queri':116,156,250,354,518 'react':173,515,523,531,537,558,568,582,607 'react.dev':612 'react.dev/blog/2024/12/05/react-19).':611 'ref':109,271,340,387,505 'refer':37,56,77,97,263,401 'references/lookup-strategy.md':321,405 'references/registry-schema.md':425 'references/registry.json':217,414 'registri':86,121,216,232,255,308,335,347,413,423,428,535 'registry.json':450 'releas':20,394 'repo':244 'resolut':48,70,410 'respect':356 'rsc':602 'rule':319 'schema':424 'sdk':11,36 'search':62,127,142,152,245,288,298,361,477 'see':320 'server':174,516,524,569,589,596 'show':176 'site':566 'skill':31,55,76,82,94,139,158,201,221,262,339,422,453,538 'skill-apilookup' 'sourc':372 'source-cofin' 'specif':564 'sqlalchemi':179 'stale':111,251,418,445,471 'start':51,331 'step':551,562 'stop':363 'strategi':49,148,404 'syntax':24 'synthes':574 'tailwind':210 'target':60,104,126,249,345,467 'tech':484,530 'technolog':135 'tell':397 'three':46,67,408 'three-tier':45,407 'threshold':252 'tier':47,68,409,454,465,478,545,549 'today':487 'topic-agent-skills' 'topic-ai-agents' 'topic-beads' 'topic-claude-code' 'topic-codex' 'topic-cursor' 'topic-developer-tools' 'topic-gemini-cli' 'topic-opencode' 'topic-plugin' 'topic-slash-commands' 'topic-spec-driven-development' 'track':419 'treat':280 'tree':326 'tri':458 'trust':260 'unknown':483 'upgrad':609 'url':124,239,241,304,309,348 'usag':153 'use':2,43,119,172,269,346,469,481,522,585 'user':399 'valid':433 'verifi':274,444 'version':14,39,146,165,208,215,225,275,286,383,389,412,501,553 'version-first':145 'via':276 'vs':587 'web':61,105,141,277,291 'webfetch':301,554 'websearch':306,565 'without':136 'work':4,214 'x':390 'y':396","prices":[{"id":"cae11840-979e-4c74-b943-b8fba91a5c46","listingId":"07083c28-6477-4adb-8f32-d657ca567bae","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cofin","category":"flow","install_from":"skills.sh"},"createdAt":"2026-04-23T13:03:57.578Z"}],"sources":[{"listingId":"07083c28-6477-4adb-8f32-d657ca567bae","source":"github","sourceId":"cofin/flow/apilookup","sourceUrl":"https://github.com/cofin/flow/tree/main/skills/apilookup","isPrimary":false,"firstSeenAt":"2026-04-23T13:03:57.578Z","lastSeenAt":"2026-05-18T19:07:35.143Z"}],"details":{"listingId":"07083c28-6477-4adb-8f32-d657ca567bae","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cofin","slug":"apilookup","github":{"repo":"cofin/flow","stars":11,"topics":["agent-skills","ai-agents","beads","claude-code","codex","context-driven-development","cursor","developer-tools","gemini-cli","opencode","plugin","slash-commands","spec-driven-development","subagents","tdd","workflow"],"license":"apache-2.0","html_url":"https://github.com/cofin/flow","pushed_at":"2026-04-27T19:07:26Z","description":"Context-Driven Development toolkit for AI agents — spec-first planning, TDD workflow, and Beads integration.","skill_md_sha":"69d64e573fa744bd41a48cbb9418d18a03cacf74","skill_md_path":"skills/apilookup/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cofin/flow/tree/main/skills/apilookup"},"layout":"multi","source":"github","category":"flow","frontmatter":{"name":"apilookup","description":"Use when work depends on current external API behavior, SDK docs, framework versions, breaking changes, migration guides, changelogs, release notes, deprecations, or syntax that may have changed."},"skills_sh_url":"https://skills.sh/cofin/flow/apilookup"},"updatedAt":"2026-05-18T19:07:35.143Z"}}