[{"data":1,"prerenderedAt":820},["ShallowReactive",2],{"navigation_docs":3,"-guide-quick-start":66,"-guide-quick-start-surround":815},[4,22,54],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Getting Started","\u002Fgetting-started","docs",[9,13,17],{"title":10,"path":11,"stem":12},"Introduction","\u002Fgetting-started\u002Fintroduction","docs\u002F1.getting-started\u002F1.introduction",{"title":14,"path":15,"stem":16},"Installation","\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",{"title":18,"path":19,"stem":20},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","docs\u002F1.getting-started\u002F3.agent-skills",false,{"title":23,"path":24,"stem":7,"children":25,"page":21},"Guide","\u002Fguide",[26,30,34,38,42,46,50],{"title":27,"path":28,"stem":29},"Quick Start","\u002Fguide\u002Fquick-start","docs\u002F2.guide\u002F1.quick-start",{"title":31,"path":32,"stem":33},"Scope with Presets","\u002Fguide\u002Fpresets","docs\u002F2.guide\u002F2.presets",{"title":35,"path":36,"stem":37},"Control Write Safety","\u002Fguide\u002Fapproval-control","docs\u002F2.guide\u002F3.approval-control",{"title":39,"path":40,"stem":41},"Commit Attribution","\u002Fguide\u002Fcommit-attribution","docs\u002F2.guide\u002F4.commit-attribution",{"title":43,"path":44,"stem":45},"Configure Token Scopes","\u002Fguide\u002Ftoken-permissions","docs\u002F2.guide\u002F5.token-and-permissions",{"title":47,"path":48,"stem":49},"Examples","\u002Fguide\u002Fexamples","docs\u002F2.guide\u002F6.examples",{"title":51,"path":52,"stem":53},"Durable workflows (Vercel Workflow)","\u002Fguide\u002Fdurable-workflows","docs\u002F2.guide\u002F7.durable-workflows",{"title":55,"path":56,"stem":7,"children":57,"page":21},"Api","\u002Fapi",[58,62],{"title":59,"path":60,"stem":61},"Tools Catalog","\u002Fapi\u002Ftools-catalog","docs\u002F3.api\u002F1.tools-catalog",{"title":63,"path":64,"stem":65},"API Reference","\u002Fapi\u002Freference","docs\u002F3.api\u002F2.reference",{"id":67,"title":27,"body":68,"description":801,"extension":802,"links":803,"meta":812,"navigation":248,"path":28,"seo":813,"stem":29,"__hash__":814},"docs\u002Fdocs\u002F2.guide\u002F1.quick-start.md",{"type":69,"value":70,"toc":792},"minimark",[71,76,84,174,178,185,361,371,375,378,569,574,578,585,681,693,697,721,726,730,735,747,752,761,765,788],[72,73,75],"h2",{"id":74},"install-everything-at-once","Install everything at once",[77,78,79,80,83],"p",{},"If you haven't completed ",[81,82,14],"a",{"href":15}," yet:",[85,86,87,119,138,156],"code-group",{},[88,89,95],"pre",{"className":90,"code":91,"filename":92,"language":93,"meta":94,"style":94},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add @github-tools\u002Fsdk ai zod\n","pnpm","bash","",[96,97,98],"code",{"__ignoreMap":94},[99,100,103,106,110,113,116],"span",{"class":101,"line":102},"line",1,[99,104,92],{"class":105},"sBMFI",[99,107,109],{"class":108},"sfazB"," add",[99,111,112],{"class":108}," @github-tools\u002Fsdk",[99,114,115],{"class":108}," ai",[99,117,118],{"class":108}," zod\n",[88,120,123],{"className":90,"code":121,"filename":122,"language":93,"meta":94,"style":94},"npm install @github-tools\u002Fsdk ai zod\n","npm",[96,124,125],{"__ignoreMap":94},[99,126,127,129,132,134,136],{"class":101,"line":102},[99,128,122],{"class":105},[99,130,131],{"class":108}," install",[99,133,112],{"class":108},[99,135,115],{"class":108},[99,137,118],{"class":108},[88,139,142],{"className":90,"code":140,"filename":141,"language":93,"meta":94,"style":94},"yarn add @github-tools\u002Fsdk ai zod\n","yarn",[96,143,144],{"__ignoreMap":94},[99,145,146,148,150,152,154],{"class":101,"line":102},[99,147,141],{"class":105},[99,149,109],{"class":108},[99,151,112],{"class":108},[99,153,115],{"class":108},[99,155,118],{"class":108},[88,157,160],{"className":90,"code":158,"filename":159,"language":93,"meta":94,"style":94},"bun add @github-tools\u002Fsdk ai zod\n","bun",[96,161,162],{"__ignoreMap":94},[99,163,164,166,168,170,172],{"class":101,"line":102},[99,165,159],{"class":105},[99,167,109],{"class":108},[99,169,112],{"class":108},[99,171,115],{"class":108},[99,173,118],{"class":108},[72,175,177],{"id":176},"use-tools-directly","Use tools directly",[77,179,180,181,184],{},"The simplest integration: pass all tools to ",[96,182,183],{},"generateText"," and let the model pick the right GitHub operations:",[88,186,191],{"className":187,"code":188,"filename":189,"language":190,"meta":94,"style":94},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createGithubTools } from '@github-tools\u002Fsdk'\nimport { generateText } from 'ai'\n\nconst { text } = await generateText({\n  model: 'anthropic\u002Fclaude-sonnet-4.6',\n  tools: createGithubTools(),\n  prompt: 'List open pull requests on vercel\u002Fai and summarize each one.',\n})\n\nconsole.log(text)\n","list-prs.ts","ts",[96,192,193,222,243,250,280,301,316,333,341,346],{"__ignoreMap":94},[99,194,195,199,203,207,210,213,216,219],{"class":101,"line":102},[99,196,198],{"class":197},"s7zQu","import",[99,200,202],{"class":201},"sMK4o"," {",[99,204,206],{"class":205},"sTEyZ"," createGithubTools",[99,208,209],{"class":201}," }",[99,211,212],{"class":197}," from",[99,214,215],{"class":201}," '",[99,217,218],{"class":108},"@github-tools\u002Fsdk",[99,220,221],{"class":201},"'\n",[99,223,225,227,229,232,234,236,238,241],{"class":101,"line":224},2,[99,226,198],{"class":197},[99,228,202],{"class":201},[99,230,231],{"class":205}," generateText",[99,233,209],{"class":201},[99,235,212],{"class":197},[99,237,215],{"class":201},[99,239,240],{"class":108},"ai",[99,242,221],{"class":201},[99,244,246],{"class":101,"line":245},3,[99,247,249],{"emptyLinePlaceholder":248},true,"\n",[99,251,253,257,259,262,265,268,271,274,277],{"class":101,"line":252},4,[99,254,256],{"class":255},"spNyl","const",[99,258,202],{"class":201},[99,260,261],{"class":205}," text ",[99,263,264],{"class":201},"}",[99,266,267],{"class":201}," =",[99,269,270],{"class":197}," await",[99,272,231],{"class":273},"s2Zo4",[99,275,276],{"class":205},"(",[99,278,279],{"class":201},"{\n",[99,281,283,287,290,292,295,298],{"class":101,"line":282},5,[99,284,286],{"class":285},"swJcz","  model",[99,288,289],{"class":201},":",[99,291,215],{"class":201},[99,293,294],{"class":108},"anthropic\u002Fclaude-sonnet-4.6",[99,296,297],{"class":201},"'",[99,299,300],{"class":201},",\n",[99,302,304,307,309,311,314],{"class":101,"line":303},6,[99,305,306],{"class":285},"  tools",[99,308,289],{"class":201},[99,310,206],{"class":273},[99,312,313],{"class":205},"()",[99,315,300],{"class":201},[99,317,319,322,324,326,329,331],{"class":101,"line":318},7,[99,320,321],{"class":285},"  prompt",[99,323,289],{"class":201},[99,325,215],{"class":201},[99,327,328],{"class":108},"List open pull requests on vercel\u002Fai and summarize each one.",[99,330,297],{"class":201},[99,332,300],{"class":201},[99,334,336,338],{"class":101,"line":335},8,[99,337,264],{"class":201},[99,339,340],{"class":205},")\n",[99,342,344],{"class":101,"line":343},9,[99,345,249],{"emptyLinePlaceholder":248},[99,347,349,352,355,358],{"class":101,"line":348},10,[99,350,351],{"class":205},"console",[99,353,354],{"class":201},".",[99,356,357],{"class":273},"log",[99,359,360],{"class":205},"(text)\n",[77,362,363,364,367,368,370],{},"The SDK reads ",[96,365,366],{},"GITHUB_TOKEN"," from your environment automatically. This gives the model access to all 42 tools — see the ",[81,369,59],{"href":60}," for what each one does.",[72,372,374],{"id":373},"narrow-tools-with-a-preset","Narrow tools with a preset",[77,376,377],{},"When you want to limit which GitHub operations are available, use a preset. This gives the model only pull request and commit tools:",[88,379,382],{"className":187,"code":380,"filename":381,"language":190,"meta":94,"style":94},"import { createGithubTools } from '@github-tools\u002Fsdk'\nimport { streamText } from 'ai'\n\nconst result = streamText({\n  model: 'anthropic\u002Fclaude-sonnet-4.6',\n  tools: createGithubTools({ preset: 'code-review' }),\n  prompt: 'Review the latest PR on vercel-labs\u002Fgithub-tools for security issues.',\n})\n\nfor await (const chunk of result.textStream) {\n  process.stdout.write(chunk)\n}\n","review-only.ts",[96,383,384,402,421,425,441,455,487,502,508,512,540,563],{"__ignoreMap":94},[99,385,386,388,390,392,394,396,398,400],{"class":101,"line":102},[99,387,198],{"class":197},[99,389,202],{"class":201},[99,391,206],{"class":205},[99,393,209],{"class":201},[99,395,212],{"class":197},[99,397,215],{"class":201},[99,399,218],{"class":108},[99,401,221],{"class":201},[99,403,404,406,408,411,413,415,417,419],{"class":101,"line":224},[99,405,198],{"class":197},[99,407,202],{"class":201},[99,409,410],{"class":205}," streamText",[99,412,209],{"class":201},[99,414,212],{"class":197},[99,416,215],{"class":201},[99,418,240],{"class":108},[99,420,221],{"class":201},[99,422,423],{"class":101,"line":245},[99,424,249],{"emptyLinePlaceholder":248},[99,426,427,429,432,435,437,439],{"class":101,"line":252},[99,428,256],{"class":255},[99,430,431],{"class":205}," result ",[99,433,434],{"class":201},"=",[99,436,410],{"class":273},[99,438,276],{"class":205},[99,440,279],{"class":201},[99,442,443,445,447,449,451,453],{"class":101,"line":282},[99,444,286],{"class":285},[99,446,289],{"class":201},[99,448,215],{"class":201},[99,450,294],{"class":108},[99,452,297],{"class":201},[99,454,300],{"class":201},[99,456,457,459,461,463,465,468,471,473,475,478,480,482,485],{"class":101,"line":303},[99,458,306],{"class":285},[99,460,289],{"class":201},[99,462,206],{"class":273},[99,464,276],{"class":205},[99,466,467],{"class":201},"{",[99,469,470],{"class":285}," preset",[99,472,289],{"class":201},[99,474,215],{"class":201},[99,476,477],{"class":108},"code-review",[99,479,297],{"class":201},[99,481,209],{"class":201},[99,483,484],{"class":205},")",[99,486,300],{"class":201},[99,488,489,491,493,495,498,500],{"class":101,"line":318},[99,490,321],{"class":285},[99,492,289],{"class":201},[99,494,215],{"class":201},[99,496,497],{"class":108},"Review the latest PR on vercel-labs\u002Fgithub-tools for security issues.",[99,499,297],{"class":201},[99,501,300],{"class":201},[99,503,504,506],{"class":101,"line":335},[99,505,264],{"class":201},[99,507,340],{"class":205},[99,509,510],{"class":101,"line":343},[99,511,249],{"emptyLinePlaceholder":248},[99,513,514,517,519,522,524,527,530,533,535,538],{"class":101,"line":348},[99,515,516],{"class":197},"for",[99,518,270],{"class":197},[99,520,521],{"class":205}," (",[99,523,256],{"class":255},[99,525,526],{"class":205}," chunk ",[99,528,529],{"class":201},"of",[99,531,532],{"class":205}," result",[99,534,354],{"class":201},[99,536,537],{"class":205},"textStream) ",[99,539,279],{"class":201},[99,541,543,546,548,551,553,556,558,561],{"class":101,"line":542},11,[99,544,545],{"class":205},"  process",[99,547,354],{"class":201},[99,549,550],{"class":205},"stdout",[99,552,354],{"class":201},[99,554,555],{"class":273},"write",[99,557,276],{"class":285},[99,559,560],{"class":205},"chunk",[99,562,340],{"class":285},[99,564,566],{"class":101,"line":565},12,[99,567,568],{"class":201},"}\n",[77,570,571,572,354],{},"Learn how each preset maps to tools in ",[81,573,31],{"href":32},[72,575,577],{"id":576},"wrap-tools-in-a-reusable-agent","Wrap tools in a reusable agent",[77,579,580,581,584],{},"When you need the same configuration across multiple calls, use ",[96,582,583],{},"createGithubAgent"," to get a persistent agent:",[88,586,589],{"className":187,"code":587,"filename":588,"language":190,"meta":94,"style":94},"import { createGithubAgent } from '@github-tools\u002Fsdk'\n\nconst triager = createGithubAgent({\n  model: 'anthropic\u002Fclaude-sonnet-4.6',\n  preset: 'issue-triage',\n  system: 'You classify issues as bug, feature, or question. Always post a comment with the classification.',\n})\n","triage-agent.ts",[96,590,591,610,614,629,643,659,675],{"__ignoreMap":94},[99,592,593,595,597,600,602,604,606,608],{"class":101,"line":102},[99,594,198],{"class":197},[99,596,202],{"class":201},[99,598,599],{"class":205}," createGithubAgent",[99,601,209],{"class":201},[99,603,212],{"class":197},[99,605,215],{"class":201},[99,607,218],{"class":108},[99,609,221],{"class":201},[99,611,612],{"class":101,"line":224},[99,613,249],{"emptyLinePlaceholder":248},[99,615,616,618,621,623,625,627],{"class":101,"line":245},[99,617,256],{"class":255},[99,619,620],{"class":205}," triager ",[99,622,434],{"class":201},[99,624,599],{"class":273},[99,626,276],{"class":205},[99,628,279],{"class":201},[99,630,631,633,635,637,639,641],{"class":101,"line":252},[99,632,286],{"class":285},[99,634,289],{"class":201},[99,636,215],{"class":201},[99,638,294],{"class":108},[99,640,297],{"class":201},[99,642,300],{"class":201},[99,644,645,648,650,652,655,657],{"class":101,"line":282},[99,646,647],{"class":285},"  preset",[99,649,289],{"class":201},[99,651,215],{"class":201},[99,653,654],{"class":108},"issue-triage",[99,656,297],{"class":201},[99,658,300],{"class":201},[99,660,661,664,666,668,671,673],{"class":101,"line":303},[99,662,663],{"class":285},"  system",[99,665,289],{"class":201},[99,667,215],{"class":201},[99,669,670],{"class":108},"You classify issues as bug, feature, or question. Always post a comment with the classification.",[99,672,297],{"class":201},[99,674,300],{"class":201},[99,676,677,679],{"class":101,"line":318},[99,678,264],{"class":201},[99,680,340],{"class":205},[682,683,684,685,688,689,692],"tip",{},"Start with ",[96,686,687],{},"createGithubTools()"," to learn the tools. Add a preset when you want focus. Move to ",[96,690,691],{},"createGithubAgent()"," when you need reusable behavior.",[72,694,696],{"id":695},"durable-workflows-optional","Durable workflows (optional)",[77,698,699,700,704,705,708,709,712,713,716,717,720],{},"If you deploy on Vercel (or use the Workflow SDK elsewhere) and need ",[701,702,703],"strong",{},"durable"," execution — retries, resume after failure, observable steps — use ",[96,706,707],{},"createDurableGithubAgent"," from ",[96,710,711],{},"@github-tools\u002Fsdk\u002Fworkflow"," inside a function marked with ",[96,714,715],{},"\"use workflow\"",". GitHub tools already run as individual ",[96,718,719],{},"\"use step\""," calls.",[77,722,723,724,354],{},"See the dedicated guide: ",[81,725,51],{"href":52},[72,727,729],{"id":728},"ai-assistant-prompts","AI assistant prompts",[77,731,732],{},[701,733,734],{},"First call (align with this page):",[88,736,741],{"className":737,"code":738,"filename":739,"language":740,"meta":94,"style":94},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Add a minimal example using @github-tools\u002Fsdk with the Vercel AI SDK: createGithubTools() with generateText or streamText, model of my choice, and GITHUB_TOKEN from env. Link https:\u002F\u002Fgithub-tools.com\u002Fguide\u002Fquick-start and https:\u002F\u002Fgithub-tools.com\u002Fapi\u002Ftools-catalog.\n","Prompt","txt",[96,742,743],{"__ignoreMap":94},[99,744,745],{"class":101,"line":102},[99,746,738],{},[77,748,749],{},[701,750,751],{},"New Next.js or Nuxt server route \u002F handler:",[88,753,755],{"className":737,"code":754,"filename":739,"language":740,"meta":94,"style":94},"Create a minimal AI route or server handler that uses @github-tools\u002Fsdk: createGithubTools with an appropriate preset, read GITHUB_TOKEN from env, use generateText or streamText with full TypeScript, short env comment. Point to https:\u002F\u002Fgithub-tools.com\u002Fguide\u002Fpresets and https:\u002F\u002Fgithub-tools.com\u002Fapi\u002Ftools-catalog.\n",[96,756,757],{"__ignoreMap":94},[99,758,759],{"class":101,"line":102},[99,760,754],{},[72,762,764],{"id":763},"external-references","External references",[766,767,768,779],"ul",{},[769,770,771],"li",{},[81,772,776,778],{"href":773,"rel":774},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Freference\u002Fai-sdk-core\u002Fgenerate-text",[775],"nofollow",[96,777,183],{}," API",[769,780,781],{},[81,782,785,778],{"href":783,"rel":784},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Freference\u002Fai-sdk-core\u002Fstream-text",[775],[96,786,787],{},"streamText",[789,790,791],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":94,"searchDepth":224,"depth":224,"links":793},[794,795,796,797,798,799,800],{"id":74,"depth":224,"text":75},{"id":176,"depth":224,"text":177},{"id":373,"depth":224,"text":374},{"id":576,"depth":224,"text":577},{"id":695,"depth":224,"text":696},{"id":728,"depth":224,"text":729},{"id":763,"depth":224,"text":764},"Use GitHub tools in your first AI SDK call in under five minutes.","md",[804,809],{"label":805,"icon":806,"to":60,"color":807,"variant":808},"Browse all tools","i-lucide-list-tree","neutral","subtle",{"label":810,"icon":811,"to":32,"color":807,"variant":808},"Scope with presets","i-lucide-layers",{},{"title":27,"description":801},"mNUPewW8p6t19yt2uc0pL9lX6GqLNItXGona6BqNqBk",[816,818],{"title":18,"path":19,"stem":20,"description":817,"children":-1},"Install the GitHub Tools agent skill from github-tools.com for Cursor, Claude Code, and other assistants.",{"title":31,"path":32,"stem":33,"description":819,"children":-1},"Expose only the tools your workflow needs using presets.",1779365451999]