@cursor/july 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/agent-serve.js +73 -19
- package/dist/channels/slack/channel-watch.d.ts +6 -1
- package/dist/channels/slack/channel-watch.d.ts.map +1 -1
- package/dist/channels/slack/channel-watch.js +22 -1
- package/dist/channels/slack/cursor-account.d.ts +4 -0
- package/dist/channels/slack/cursor-account.d.ts.map +1 -1
- package/dist/channels/slack/cursor-account.js +12 -2
- package/dist/channels/slack/defaults.d.ts +10 -5
- package/dist/channels/slack/defaults.d.ts.map +1 -1
- package/dist/channels/slack/defaults.js +39 -17
- package/dist/channels/slack/dispatch.d.ts +18 -0
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +141 -38
- package/dist/channels/slack/inbound.d.ts +13 -3
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +17 -9
- package/dist/channels/slack/index.d.ts +4 -0
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +4 -0
- package/dist/channels/slack/live-delivery.d.ts.map +1 -1
- package/dist/channels/slack/live-delivery.js +1 -0
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +3 -0
- package/dist/channels/slack/nudge-carrier.d.ts +19 -0
- package/dist/channels/slack/nudge-carrier.d.ts.map +1 -0
- package/dist/channels/slack/nudge-carrier.js +166 -0
- package/dist/channels/slack/nudge-store.d.ts +61 -0
- package/dist/channels/slack/nudge-store.d.ts.map +1 -0
- package/dist/channels/slack/nudge-store.js +266 -0
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +74 -25
- package/dist/channels/slack/stop.d.ts +14 -0
- package/dist/channels/slack/stop.d.ts.map +1 -0
- package/dist/channels/slack/stop.js +22 -0
- package/dist/channels/slack/thread-context.d.ts +81 -0
- package/dist/channels/slack/thread-context.d.ts.map +1 -0
- package/dist/channels/slack/thread-context.js +470 -0
- package/dist/channels/slack/types.d.ts +27 -0
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.DMboGKUD.js → app.BP8mAVMW.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DevOabKJ.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.DkEqEnJU.js → VPLocalSearchBox.1FXIZbz8.js} +1 -1
- package/dist/docs/assets/chunks/{theme.ASugdMNm.js → theme.Dm1R02v9.js} +2 -2
- package/dist/docs/assets/example-agents_index.md.CwtWu5ix.js +2 -0
- package/dist/docs/assets/{example-agents_index.md.CRqJlnIf.lean.js → example-agents_index.md.CwtWu5ix.lean.js} +1 -1
- package/dist/docs/assets/example-agents_oncall.md.BG_sUMly.js +10 -0
- package/dist/docs/assets/example-agents_oncall.md.BG_sUMly.lean.js +1 -0
- package/dist/docs/assets/{guides_slack.md.CCwqHvSV.js → guides_slack.md.FWale6Ip.js} +4 -3
- package/dist/docs/assets/{guides_slack.md.CCwqHvSV.lean.js → guides_slack.md.FWale6Ip.lean.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.DdjWabnN.js → reference_sessions.md.DLd6mvbv.js} +2 -2
- package/dist/docs/assets/{reference_sessions.md.DdjWabnN.lean.js → reference_sessions.md.DLd6mvbv.lean.js} +1 -1
- package/dist/docs/assets/{storage.md.CVnInNiN.js → storage.md.Cu3MwM2a.js} +3 -2
- package/dist/docs/assets/{storage.md.CVnInNiN.lean.js → storage.md.Cu3MwM2a.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +4 -4
- package/dist/docs/deployment.html +4 -4
- package/dist/docs/evals.html +4 -4
- package/dist/docs/example-agents/approval-buddy.html +4 -4
- package/dist/docs/example-agents/benny.html +5 -5
- package/dist/docs/example-agents/bugbot.html +5 -5
- package/dist/docs/example-agents/codebase-wiki.html +4 -4
- package/dist/docs/example-agents/codeowners-review.html +4 -4
- package/dist/docs/example-agents/concierge.html +4 -4
- package/dist/docs/example-agents/fsd.html +4 -4
- package/dist/docs/example-agents/index.html +6 -6
- package/dist/docs/example-agents/knowledge-base.html +4 -4
- package/dist/docs/example-agents/oncall.html +34 -0
- package/dist/docs/example-agents/security-reviewer.html +4 -4
- package/dist/docs/example-agents/slack-agent.html +4 -4
- package/dist/docs/example-agents/weather-agent.html +4 -4
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/cloud-runtime.html +4 -4
- package/dist/docs/guides/github.html +4 -4
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/slack.html +7 -6
- package/dist/docs/guides/webhooks.html +4 -4
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +4 -4
- package/dist/docs/index.html +4 -4
- package/dist/docs/quickstart.html +4 -4
- package/dist/docs/reference/agent-config.html +4 -4
- package/dist/docs/reference/channels.html +4 -4
- package/dist/docs/reference/cli.html +4 -4
- package/dist/docs/reference/connections.html +4 -4
- package/dist/docs/reference/hooks.html +4 -4
- package/dist/docs/reference/http-api.html +4 -4
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +4 -4
- package/dist/docs/reference/schedules.html +4 -4
- package/dist/docs/reference/sessions.html +5 -5
- package/dist/docs/reference/skills.html +4 -4
- package/dist/docs/reference/subagents.html +4 -4
- package/dist/docs/reference/tools.html +4 -4
- package/dist/docs/scaffolding-agents.html +4 -4
- package/dist/docs/storage.html +7 -6
- package/dist/docs/troubleshooting.html +4 -4
- package/dist/evals.d.ts +2 -2
- package/dist/internal/cli-ax.d.ts +23 -10
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +358 -55
- package/dist/internal/cli-mcp.d.ts +64 -0
- package/dist/internal/cli-mcp.d.ts.map +1 -0
- package/dist/internal/cli-mcp.js +570 -0
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +2 -0
- package/dist/internal/eval-run-store.d.ts +2 -0
- package/dist/internal/eval-run-store.d.ts.map +1 -1
- package/dist/internal/eval-run-store.js +4 -4
- package/dist/internal/evals-client.d.ts +96 -0
- package/dist/internal/evals-client.d.ts.map +1 -0
- package/dist/internal/evals-client.js +262 -0
- package/dist/internal/host-kv.d.ts +17 -0
- package/dist/internal/host-kv.d.ts.map +1 -0
- package/dist/internal/host-kv.js +77 -0
- package/dist/internal/init-project.js +3 -3
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +19 -2
- package/dist/internal/session-engine.d.ts +42 -7
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +247 -51
- package/dist/internal/storage-coordinator.d.ts +18 -1
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +43 -0
- package/dist/playground/assets/index-Bpr4Th4M.js +319 -0
- package/dist/playground/index.html +1 -1
- package/dist/storage-backends/file-kv.d.ts +42 -0
- package/dist/storage-backends/file-kv.d.ts.map +1 -0
- package/dist/storage-backends/file-kv.js +190 -0
- package/dist/storage-backends/postgres-kv.d.ts +77 -0
- package/dist/storage-backends/postgres-kv.d.ts.map +1 -0
- package/dist/storage-backends/postgres-kv.js +180 -0
- package/dist/storage.d.ts +10 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +10 -1
- package/dist/types.d.ts +79 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/example-agents/index.md +14 -9
- package/docs/example-agents/oncall.md +216 -0
- package/docs/guides/slack.md +11 -2
- package/docs/reference/sessions.md +13 -4
- package/docs/storage.md +27 -0
- package/package.json +15 -1
- package/skills/framework-map/SKILL.md +6 -4
- package/src/bin/agent-serve.ts +79 -18
- package/src/channels/slack/channel-watch.ts +28 -1
- package/src/channels/slack/cursor-account.ts +20 -0
- package/src/channels/slack/defaults.ts +51 -20
- package/src/channels/slack/dispatch.ts +215 -40
- package/src/channels/slack/inbound.ts +30 -10
- package/src/channels/slack/index.ts +4 -0
- package/src/channels/slack/live-delivery.ts +1 -0
- package/src/channels/slack/manifest.ts +3 -0
- package/src/channels/slack/nudge-carrier.ts +182 -0
- package/src/channels/slack/nudge-store.ts +308 -0
- package/src/channels/slack/slack-channel.ts +106 -31
- package/src/channels/slack/stop.ts +25 -0
- package/src/channels/slack/thread-context.ts +572 -0
- package/src/channels/slack/types.ts +27 -0
- package/src/evals.ts +2 -2
- package/src/internal/cli-ax.ts +466 -75
- package/src/internal/cli-mcp.ts +708 -0
- package/src/internal/distribution.ts +2 -0
- package/src/internal/eval-run-store.ts +5 -0
- package/src/internal/evals-client.ts +431 -0
- package/src/internal/host-kv.ts +85 -0
- package/src/internal/init-project.ts +3 -3
- package/src/internal/server.ts +43 -0
- package/src/internal/session-engine.ts +351 -50
- package/src/internal/storage-coordinator.ts +41 -0
- package/src/storage-backends/file-kv.ts +221 -0
- package/src/storage-backends/postgres-kv.ts +248 -0
- package/src/storage.ts +11 -1
- package/src/types.ts +83 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.O6eP7QZr.js +0 -1
- package/dist/docs/assets/example-agents_index.md.CRqJlnIf.js +0 -2
- package/dist/playground/assets/index-mux9aj5P.js +0 -319
|
@@ -9,21 +9,21 @@
|
|
|
9
9
|
<link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
|
|
10
10
|
<link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
|
|
11
11
|
|
|
12
|
-
<script type="module" src="/docs/assets/app.
|
|
12
|
+
<script type="module" src="/docs/assets/app.BP8mAVMW.js"></script>
|
|
13
13
|
<link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
|
-
<link rel="modulepreload" href="/docs/assets/chunks/theme.
|
|
14
|
+
<link rel="modulepreload" href="/docs/assets/chunks/theme.Dm1R02v9.js">
|
|
15
15
|
<link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
|
|
16
16
|
<link rel="modulepreload" href="/docs/assets/example-agents_slack-agent.md.buLbgvBf.lean.js">
|
|
17
17
|
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
|
18
18
|
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
|
19
19
|
</head>
|
|
20
20
|
<body>
|
|
21
|
-
<div id="app"><div class="Layout" data-v-05085060><!--[--><!--]--><!--[--><span tabindex="-1" data-v-30dc752a></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-30dc752a>Skip to content</a><!--]--><!----><header class="VPNav" data-v-05085060 data-v-cbe59881><div class="VPNavBar" data-v-cbe59881 data-v-dd8a1864><div class="wrapper" data-v-dd8a1864><div class="container" data-v-dd8a1864><div class="title" data-v-dd8a1864><div class="VPNavBarTitle has-sidebar" data-v-dd8a1864 data-v-f9346b2b><a class="title" href="/docs/" data-v-f9346b2b><!--[--><!--]--><!----><span data-v-f9346b2b>agentkit</span><!--[--><!--]--></a></div></div><div class="content" data-v-dd8a1864><div class="content-body" data-v-dd8a1864><!--[--><!--]--><div class="VPNavBarSearch search" data-v-dd8a1864><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-dd8a1864 data-v-7ed6e5ac><span id="main-nav-aria-label" class="visually-hidden" data-v-7ed6e5ac> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/quickstart.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/webhooks.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/example-agents/" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-dd8a1864 data-v-2b2b395e><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-2b2b395e data-v-182deabf data-v-2562b538><span class="check" data-v-2562b538><span class="icon" data-v-2562b538><!--[--><span class="vpi-sun sun" data-v-182deabf></span><span class="vpi-moon moon" data-v-182deabf></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-dd8a1864 data-v-f3b584b7 data-v-82133de6><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-82133de6><span class="vpi-more-horizontal icon" data-v-82133de6></span></button><div class="menu" data-v-82133de6><div class="VPMenu" data-v-82133de6 data-v-759c9e19><!----><!--[--><!--[--><!----><div class="group" data-v-f3b584b7><div class="item appearance" data-v-f3b584b7><p class="label" data-v-f3b584b7>Appearance</p><div class="appearance-action" data-v-f3b584b7><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f3b584b7 data-v-182deabf data-v-2562b538><span class="check" data-v-2562b538><span class="icon" data-v-2562b538><!--[--><span class="vpi-sun sun" data-v-182deabf></span><span class="vpi-moon moon" data-v-182deabf></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-dd8a1864 data-v-ab07e844><span class="container" data-v-ab07e844><span class="top" data-v-ab07e844></span><span class="middle" data-v-ab07e844></span><span class="bottom" data-v-ab07e844></span></span></button></div></div></div></div><div class="divider" data-v-dd8a1864><div class="divider-line" data-v-dd8a1864></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-05085060 data-v-826b8761><div class="container" data-v-826b8761><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-826b8761><span class="vpi-align-left menu-icon" data-v-826b8761></span><span class="menu-text" data-v-826b8761>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-826b8761 data-v-01af9e73><button data-v-01af9e73>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-05085060 data-v-5cd5b4d8><div class="curtain" data-v-5cd5b4d8></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-5cd5b4d8><span class="visually-hidden" id="sidebar-aria-label" data-v-5cd5b4d8> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Getting started</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Quickstart</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/scaffolding-agents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Scaffold an agent with Cursor</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/concepts.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Concepts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Improving agents</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Building agents with agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/evals.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/ab.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Live A/B metrics</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/storage.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Storage</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Hillclimbing</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Guides</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Webhooks & custom channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/human-in-the-loop.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Human-in-the-loop approvals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Agent-to-agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/cloud-runtime.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Cloud runtime</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0 has-active" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Example agents</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Choose an example</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/weather-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Weather agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/slack-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Slack agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/concierge.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Concierge</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/benny.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Playbook router</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/bugbot.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>PR evidence reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/approval-buddy.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Approval Buddy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/security-reviewer.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Security Reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/fsd.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Remote PR coordinator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/knowledge-base.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Knowledge base</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/codebase-wiki.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Codebase wiki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/codeowners-review.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Codeowners review</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Operating</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/deployment.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Fix common problems</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0 collapsible" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b6893b1b><span class="vpi-chevron-right caret-icon" data-v-b6893b1b></span></div></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-05085060 data-v-8eedf2ac><div class="VPDoc has-sidebar has-aside" data-v-8eedf2ac data-v-53b9fda6><!--[--><!--]--><div class="container" data-v-53b9fda6><div class="aside" data-v-53b9fda6><div class="aside-curtain" data-v-53b9fda6></div><div class="aside-container" data-v-53b9fda6><div class="aside-content" data-v-53b9fda6><div class="VPDocAside" data-v-53b9fda6 data-v-e448ecab><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-e448ecab data-v-b0b42374><div class="content" data-v-b0b42374><div class="outline-marker" data-v-b0b42374></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-b0b42374>On this page</div><ul class="VPDocOutlineItem root" data-v-b0b42374 data-v-ae03bd52><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-e448ecab></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-53b9fda6><div class="content-container" data-v-53b9fda6><!--[--><!--]--><main class="main" data-v-53b9fda6><div style="position:relative;" class="vp-doc _docs_example-agents_slack-agent" data-v-53b9fda6><div><h1 id="put-a-minimal-agent-in-slack" tabindex="-1">Put a minimal agent in Slack <a class="header-anchor" href="#put-a-minimal-agent-in-slack" aria-label="Permalink to "Put a minimal agent in Slack""></a></h1><p>Slack agent is the smallest channel example. It has one runtime config, one instruction file, and one authored channel. A teammate mentions the agent, the local runtime harness runs a turn, and the answer returns to the same Slack thread.</p><p>Use it to learn the minimum needed for a Slack agent before adding tools, workflows, or a dedicated app.</p><p><a href="./../../examples/slack-agent/">Browse the Slack agent source.</a></p><h2 id="keep-the-slack-channel-small" tabindex="-1">Keep the Slack channel small <a class="header-anchor" href="#keep-the-slack-channel-small" aria-label="Permalink to "Keep the Slack channel small""></a></h2><p>Slack agent delegates transport details to the host connection. The authored file selects the account-linked transport, gives the agent a single-token router name and icon, and supplies suggested prompts.</p><p>The complete channel lives in <a href="../../examples/slack-agent/agent/channels/slack.ts"><code>agent/channels/slack.ts</code></a>. The framework supplies message intake, thread-scoped sessions, delivery, status updates, and suggested prompts.</p><h2 id="follow-a-slack-message" tabindex="-1">Follow a Slack message <a class="header-anchor" href="#follow-a-slack-message" aria-label="Permalink to "Follow a Slack message""></a></h2><ol><li>A user mentions the agent or sends the host app a direct message naming it.</li><li>The Slack relay selects this channel by its single-token <code>agentName</code>.</li><li>Agentkit maps the Slack channel and thread timestamp to a continuation key.</li><li>The local harness runs with <a href="./../../examples/slack-agent/agent/instructions.html"><code>instructions.md</code></a>.</li><li>The response returns to the triggering thread.</li><li>A later message in the same thread resumes the durable session.</li></ol><p>The prompt asks for concise threaded replies. It doesn't define domain policy or tool routing.</p><h2 id="map-the-slack-agent-files" tabindex="-1">Map the Slack agent files <a class="header-anchor" href="#map-the-slack-agent-files" aria-label="Permalink to "Map the Slack agent files""></a></h2><table tabindex="0"><thead><tr><th>File</th><th>Purpose</th></tr></thead><tbody><tr><td><a href="../../examples/slack-agent/package.json"><code>package.json</code></a></td><td>Declares the example package and agentkit dependency.</td></tr><tr><td><a href="../../examples/slack-agent/agent/agent.ts"><code>agent/agent.ts</code></a></td><td>Names the agent and selects the model. The omitted <code>runtime</code> defaults to local.</td></tr><tr><td><a href="./../../examples/slack-agent/agent/instructions.html"><code>agent/instructions.md</code></a></td><td>Sets the always-on response style.</td></tr><tr><td><a href="../../examples/slack-agent/agent/channels/slack.ts"><code>agent/channels/slack.ts</code></a></td><td>Connects the signed-in host account to Slack.</td></tr></tbody></table><p>There are no authored tools, skills, MCP connections, subagents, schedules, hooks, A/B experiments, or evals. This small surface is the lesson.</p><h2 id="connect-the-host" tabindex="-1">Connect the host <a class="header-anchor" href="#connect-the-host" aria-label="Permalink to "Connect the host""></a></h2><p>You need:</p><ul><li>Node 22.13 or newer.</li><li>An agent-runtime credential.</li><li>Slack connected through the selected channel transport.</li></ul><p>Sign in and confirm the active account:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agentkit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> login</span></span>
|
|
21
|
+
<div id="app"><div class="Layout" data-v-05085060><!--[--><!--]--><!--[--><span tabindex="-1" data-v-30dc752a></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-30dc752a>Skip to content</a><!--]--><!----><header class="VPNav" data-v-05085060 data-v-cbe59881><div class="VPNavBar" data-v-cbe59881 data-v-dd8a1864><div class="wrapper" data-v-dd8a1864><div class="container" data-v-dd8a1864><div class="title" data-v-dd8a1864><div class="VPNavBarTitle has-sidebar" data-v-dd8a1864 data-v-f9346b2b><a class="title" href="/docs/" data-v-f9346b2b><!--[--><!--]--><!----><span data-v-f9346b2b>agentkit</span><!--[--><!--]--></a></div></div><div class="content" data-v-dd8a1864><div class="content-body" data-v-dd8a1864><!--[--><!--]--><div class="VPNavBarSearch search" data-v-dd8a1864><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-dd8a1864 data-v-7ed6e5ac><span id="main-nav-aria-label" class="visually-hidden" data-v-7ed6e5ac> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/quickstart.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/webhooks.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/example-agents/" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-dd8a1864 data-v-2b2b395e><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-2b2b395e data-v-182deabf data-v-2562b538><span class="check" data-v-2562b538><span class="icon" data-v-2562b538><!--[--><span class="vpi-sun sun" data-v-182deabf></span><span class="vpi-moon moon" data-v-182deabf></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-dd8a1864 data-v-f3b584b7 data-v-82133de6><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-82133de6><span class="vpi-more-horizontal icon" data-v-82133de6></span></button><div class="menu" data-v-82133de6><div class="VPMenu" data-v-82133de6 data-v-759c9e19><!----><!--[--><!--[--><!----><div class="group" data-v-f3b584b7><div class="item appearance" data-v-f3b584b7><p class="label" data-v-f3b584b7>Appearance</p><div class="appearance-action" data-v-f3b584b7><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f3b584b7 data-v-182deabf data-v-2562b538><span class="check" data-v-2562b538><span class="icon" data-v-2562b538><!--[--><span class="vpi-sun sun" data-v-182deabf></span><span class="vpi-moon moon" data-v-182deabf></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-dd8a1864 data-v-ab07e844><span class="container" data-v-ab07e844><span class="top" data-v-ab07e844></span><span class="middle" data-v-ab07e844></span><span class="bottom" data-v-ab07e844></span></span></button></div></div></div></div><div class="divider" data-v-dd8a1864><div class="divider-line" data-v-dd8a1864></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-05085060 data-v-826b8761><div class="container" data-v-826b8761><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-826b8761><span class="vpi-align-left menu-icon" data-v-826b8761></span><span class="menu-text" data-v-826b8761>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-826b8761 data-v-01af9e73><button data-v-01af9e73>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-05085060 data-v-5cd5b4d8><div class="curtain" data-v-5cd5b4d8></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-5cd5b4d8><span class="visually-hidden" id="sidebar-aria-label" data-v-5cd5b4d8> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Getting started</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Quickstart</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/scaffolding-agents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Scaffold an agent with Cursor</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/concepts.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Concepts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Improving agents</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Building agents with agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/evals.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/ab.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Live A/B metrics</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/storage.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Storage</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Hillclimbing</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Guides</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Webhooks & custom channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/human-in-the-loop.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Human-in-the-loop approvals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Agent-to-agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/cloud-runtime.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Cloud runtime</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0 has-active" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Example agents</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Choose an example</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/weather-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Weather agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/slack-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Slack agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/concierge.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Concierge</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/benny.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Playbook router</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/oncall.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Alert investigator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/bugbot.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>PR evidence reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/approval-buddy.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Approval Buddy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/security-reviewer.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Security Reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/fsd.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Remote PR coordinator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/knowledge-base.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Knowledge base</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/codebase-wiki.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Codebase wiki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/codeowners-review.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Codeowners review</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Operating</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/deployment.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Fix common problems</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0 collapsible" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b6893b1b><span class="vpi-chevron-right caret-icon" data-v-b6893b1b></span></div></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-05085060 data-v-8eedf2ac><div class="VPDoc has-sidebar has-aside" data-v-8eedf2ac data-v-53b9fda6><!--[--><!--]--><div class="container" data-v-53b9fda6><div class="aside" data-v-53b9fda6><div class="aside-curtain" data-v-53b9fda6></div><div class="aside-container" data-v-53b9fda6><div class="aside-content" data-v-53b9fda6><div class="VPDocAside" data-v-53b9fda6 data-v-e448ecab><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-e448ecab data-v-b0b42374><div class="content" data-v-b0b42374><div class="outline-marker" data-v-b0b42374></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-b0b42374>On this page</div><ul class="VPDocOutlineItem root" data-v-b0b42374 data-v-ae03bd52><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-e448ecab></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-53b9fda6><div class="content-container" data-v-53b9fda6><!--[--><!--]--><main class="main" data-v-53b9fda6><div style="position:relative;" class="vp-doc _docs_example-agents_slack-agent" data-v-53b9fda6><div><h1 id="put-a-minimal-agent-in-slack" tabindex="-1">Put a minimal agent in Slack <a class="header-anchor" href="#put-a-minimal-agent-in-slack" aria-label="Permalink to "Put a minimal agent in Slack""></a></h1><p>Slack agent is the smallest channel example. It has one runtime config, one instruction file, and one authored channel. A teammate mentions the agent, the local runtime harness runs a turn, and the answer returns to the same Slack thread.</p><p>Use it to learn the minimum needed for a Slack agent before adding tools, workflows, or a dedicated app.</p><p><a href="./../../examples/slack-agent/">Browse the Slack agent source.</a></p><h2 id="keep-the-slack-channel-small" tabindex="-1">Keep the Slack channel small <a class="header-anchor" href="#keep-the-slack-channel-small" aria-label="Permalink to "Keep the Slack channel small""></a></h2><p>Slack agent delegates transport details to the host connection. The authored file selects the account-linked transport, gives the agent a single-token router name and icon, and supplies suggested prompts.</p><p>The complete channel lives in <a href="../../examples/slack-agent/agent/channels/slack.ts"><code>agent/channels/slack.ts</code></a>. The framework supplies message intake, thread-scoped sessions, delivery, status updates, and suggested prompts.</p><h2 id="follow-a-slack-message" tabindex="-1">Follow a Slack message <a class="header-anchor" href="#follow-a-slack-message" aria-label="Permalink to "Follow a Slack message""></a></h2><ol><li>A user mentions the agent or sends the host app a direct message naming it.</li><li>The Slack relay selects this channel by its single-token <code>agentName</code>.</li><li>Agentkit maps the Slack channel and thread timestamp to a continuation key.</li><li>The local harness runs with <a href="./../../examples/slack-agent/agent/instructions.html"><code>instructions.md</code></a>.</li><li>The response returns to the triggering thread.</li><li>A later message in the same thread resumes the durable session.</li></ol><p>The prompt asks for concise threaded replies. It doesn't define domain policy or tool routing.</p><h2 id="map-the-slack-agent-files" tabindex="-1">Map the Slack agent files <a class="header-anchor" href="#map-the-slack-agent-files" aria-label="Permalink to "Map the Slack agent files""></a></h2><table tabindex="0"><thead><tr><th>File</th><th>Purpose</th></tr></thead><tbody><tr><td><a href="../../examples/slack-agent/package.json"><code>package.json</code></a></td><td>Declares the example package and agentkit dependency.</td></tr><tr><td><a href="../../examples/slack-agent/agent/agent.ts"><code>agent/agent.ts</code></a></td><td>Names the agent and selects the model. The omitted <code>runtime</code> defaults to local.</td></tr><tr><td><a href="./../../examples/slack-agent/agent/instructions.html"><code>agent/instructions.md</code></a></td><td>Sets the always-on response style.</td></tr><tr><td><a href="../../examples/slack-agent/agent/channels/slack.ts"><code>agent/channels/slack.ts</code></a></td><td>Connects the signed-in host account to Slack.</td></tr></tbody></table><p>There are no authored tools, skills, MCP connections, subagents, schedules, hooks, A/B experiments, or evals. This small surface is the lesson.</p><h2 id="connect-the-host" tabindex="-1">Connect the host <a class="header-anchor" href="#connect-the-host" aria-label="Permalink to "Connect the host""></a></h2><p>You need:</p><ul><li>Node 22.13 or newer.</li><li>An agent-runtime credential.</li><li>Slack connected through the selected channel transport.</li></ul><p>Sign in and confirm the active account:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agentkit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> login</span></span>
|
|
22
22
|
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agentkit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> whoami</span></span></code></pre></div><p>The selected transport owns Slack credential setup. See the <a href="./../guides/slack.html">Slack guide</a> for account-linked and dedicated-app options.</p><h2 id="validate-and-start-the-server" tabindex="-1">Validate and start the server <a class="header-anchor" href="#validate-and-start-the-server" aria-label="Permalink to "Validate and start the server""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agentkit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> validate</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> examples/slack-agent</span></span>
|
|
23
23
|
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agentkit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> info</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> examples/slack-agent</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --json</span></span>
|
|
24
24
|
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agentkit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dev</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> examples/slack-agent</span></span></code></pre></div><p>The dev command prints the playground URL. It also mounts the Slack channel and waits for relayed messages.</p><p>In Slack, address the configured host app and router name, then send:</p><blockquote><p><code><host-app mention> <router name></code> Explain agentkit in three bullets.</p></blockquote><p>Reply in the generated thread:</p><blockquote><p>Make the second bullet simpler.</p></blockquote><p>The second message reaches the same session. You can open that session in the playground to inspect the received message, model events, final reply, and usage.</p><h2 id="test-without-slack" tabindex="-1">Test without Slack <a class="header-anchor" href="#test-without-slack" aria-label="Permalink to "Test without Slack""></a></h2><p>Every project gets the built-in HTTP channel even when no HTTP file exists. Run a one-shot turn through it:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agentkit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> examples/slack-agent</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \</span></span>
|
|
25
25
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --message</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Explain agentkit simply."</span></span></code></pre></div><p>The same project also exposes an MCP endpoint. Since this agent has no server tools, its MCP surface contains <code>ask</code> and <code>check</code>, but not <code>call_tool</code>.</p><p>These automatic surfaces let you test the prompt from the CLI and let another agent delegate to it later. The authored Slack channel only changes how work arrives and where replies go.</p><h2 id="know-when-to-add-a-dedicated-app" tabindex="-1">Know when to add a dedicated app <a class="header-anchor" href="#know-when-to-add-a-dedicated-app" aria-label="Permalink to "Know when to add a dedicated app""></a></h2><p>An account-linked Slack transport is a fit for mentions, direct messages, thread continuity, and agent-branded replies. Move to a dedicated Socket Mode channel when you need:</p><ul><li>top-level channel watching,</li><li>interactive approval buttons,</li><li>a separate bot identity, or</li><li>Slack app events unsupported by the account-linked relay.</li></ul><p>Compare this example with <a href="./benny.html">Playbook router</a>, which adds allowlisted channel watching, and <a href="./weather-agent.html">Weather agent</a>, which adds approval buttons through a second Slack channel.</p><h2 id="turn-the-channel-into-your-own-slack-agent" tabindex="-1">Turn the channel into your own Slack agent <a class="header-anchor" href="#turn-the-channel-into-your-own-slack-agent" aria-label="Permalink to "Turn the channel into your own Slack agent""></a></h2><p>Copy the three authored files, then change:</p><ul><li><code>name</code> in <code>agent.ts</code> for the harness identity,</li><li><code>agentName</code> in <code>slack.ts</code> for the single-token router name,</li><li>the instructions for your domain, and</li><li>suggested prompts for the tasks teammates should try.</li></ul><p>Keep <code>agentName</code> free of whitespace. Use PascalCase for multiword names.</p><h2 id="where-to-go-next" tabindex="-1">Where to go next <a class="header-anchor" href="#where-to-go-next" aria-label="Permalink to "Where to go next""></a></h2><ul><li><a href="./../guides/slack.html">Slack</a></li><li><a href="./../reference/channels.html">Channels</a></li><li><a href="./../reference/sessions.html">Sessions and streaming</a></li><li><a href="./../reference/playground.html">Playground</a></li></ul></div></div></main><footer class="VPDocFooter" data-v-53b9fda6 data-v-3958cc3f><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-3958cc3f><span class="visually-hidden" id="doc-footer-aria-label" data-v-3958cc3f>Pager</span><div class="pager" data-v-3958cc3f><a class="VPLink link pager-link prev" href="/docs/example-agents/weather-agent.html" data-v-3958cc3f><!--[--><span class="desc" data-v-3958cc3f>Previous page</span><span class="title" data-v-3958cc3f>Weather agent</span><!--]--></a></div><div class="pager" data-v-3958cc3f><a class="VPLink link pager-link next" href="/docs/example-agents/concierge.html" data-v-3958cc3f><!--[--><span class="desc" data-v-3958cc3f>Next page</span><span class="title" data-v-3958cc3f>Concierge</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
|
|
26
|
-
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"BMCZ6Hd7\",\"building-with-agents.md\":\"CJCtZCyi\",\"concepts.md\":\"Cfb9b-k1\",\"deployment.md\":\"BtfEsc9S\",\"evals.md\":\"DAgEc_hL\",\"example-agents_approval-buddy.md\":\"8R5phXb5\",\"example-agents_benny.md\":\"B0gjhI-p\",\"example-agents_bugbot.md\":\"DelIdhxB\",\"example-agents_codebase-wiki.md\":\"DC6sgwn0\",\"example-agents_codeowners-review.md\":\"Ku_tG2RY\",\"example-agents_concierge.md\":\"4rQTSMXt\",\"example-agents_fsd.md\":\"CzgUrDfi\",\"example-agents_index.md\":\"
|
|
26
|
+
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"BMCZ6Hd7\",\"building-with-agents.md\":\"CJCtZCyi\",\"concepts.md\":\"Cfb9b-k1\",\"deployment.md\":\"BtfEsc9S\",\"evals.md\":\"DAgEc_hL\",\"example-agents_approval-buddy.md\":\"8R5phXb5\",\"example-agents_benny.md\":\"B0gjhI-p\",\"example-agents_bugbot.md\":\"DelIdhxB\",\"example-agents_codebase-wiki.md\":\"DC6sgwn0\",\"example-agents_codeowners-review.md\":\"Ku_tG2RY\",\"example-agents_concierge.md\":\"4rQTSMXt\",\"example-agents_fsd.md\":\"CzgUrDfi\",\"example-agents_index.md\":\"CwtWu5ix\",\"example-agents_knowledge-base.md\":\"BPJiVueF\",\"example-agents_oncall.md\":\"BG_sUMly\",\"example-agents_security-reviewer.md\":\"D2rtwDTO\",\"example-agents_slack-agent.md\":\"buLbgvBf\",\"example-agents_weather-agent.md\":\"C9Qv-W0o\",\"guides_agent-to-agent.md\":\"Bpzgq2Pq\",\"guides_cloud-runtime.md\":\"gVzabdQL\",\"guides_github.md\":\"DOOCpqsW\",\"guides_human-in-the-loop.md\":\"DlUqsp1S\",\"guides_slack.md\":\"FWale6Ip\",\"guides_webhooks.md\":\"B1EswtUu\",\"hillclimbing.md\":\"DHNast08\",\"index.md\":\"COiu-1jL\",\"quickstart.md\":\"BU6Iwi_9\",\"reference_agent-config.md\":\"DrW2JUM8\",\"reference_channels.md\":\"DdmiKgqf\",\"reference_cli.md\":\"D189RBCH\",\"reference_connections.md\":\"zaEYCLHT\",\"reference_hooks.md\":\"DyLVfE1O\",\"reference_http-api.md\":\"Dx_nmDG6\",\"reference_instructions.md\":\"CgoV-YEb\",\"reference_playground.md\":\"CPZhfYaO\",\"reference_project-layout.md\":\"Bd_CKtNS\",\"reference_schedules.md\":\"w_F2mXB6\",\"reference_sessions.md\":\"DLd6mvbv\",\"reference_skills.md\":\"B_jHN7JL\",\"reference_subagents.md\":\"zWAMNfi1\",\"reference_tools.md\":\"CqgJroI0\",\"scaffolding-agents.md\":\"C3pTrmoE\",\"storage.md\":\"Cu3MwM2a\",\"troubleshooting.md\":\"DkovjS7h\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"agentkit\",\"description\":\"Filesystem-first framework for building and serving Cursor agents.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/webhooks\"},{\"text\":\"Examples\",\"link\":\"/example-agents/\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Scaffold an agent with Cursor\",\"link\":\"/scaffolding-agents\"},{\"text\":\"Concepts\",\"link\":\"/concepts\"}]},{\"text\":\"Improving agents\",\"items\":[{\"text\":\"Building agents with agents\",\"link\":\"/building-with-agents\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Live A/B metrics\",\"link\":\"/ab\"},{\"text\":\"Storage\",\"link\":\"/storage\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"}]},{\"text\":\"Guides\",\"items\":[{\"text\":\"Webhooks & custom channels\",\"link\":\"/guides/webhooks\"},{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Human-in-the-loop approvals\",\"link\":\"/guides/human-in-the-loop\"},{\"text\":\"Agent-to-agent\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Cloud runtime\",\"link\":\"/guides/cloud-runtime\"}]},{\"text\":\"Example agents\",\"items\":[{\"text\":\"Choose an example\",\"link\":\"/example-agents/\"},{\"text\":\"Weather agent\",\"link\":\"/example-agents/weather-agent\"},{\"text\":\"Slack agent\",\"link\":\"/example-agents/slack-agent\"},{\"text\":\"Concierge\",\"link\":\"/example-agents/concierge\"},{\"text\":\"Playbook router\",\"link\":\"/example-agents/benny\"},{\"text\":\"Alert investigator\",\"link\":\"/example-agents/oncall\"},{\"text\":\"PR evidence reviewer\",\"link\":\"/example-agents/bugbot\"},{\"text\":\"Approval Buddy\",\"link\":\"/example-agents/approval-buddy\"},{\"text\":\"Security Reviewer\",\"link\":\"/example-agents/security-reviewer\"},{\"text\":\"Remote PR coordinator\",\"link\":\"/example-agents/fsd\"},{\"text\":\"Knowledge base\",\"link\":\"/example-agents/knowledge-base\"},{\"text\":\"Codebase wiki\",\"link\":\"/example-agents/codebase-wiki\"},{\"text\":\"Codeowners review\",\"link\":\"/example-agents/codeowners-review\"}]},{\"text\":\"Operating\",\"items\":[{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Fix common problems\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
|
27
27
|
|
|
28
28
|
</body>
|
|
29
29
|
</html>
|
|
@@ -9,16 +9,16 @@
|
|
|
9
9
|
<link rel="preload stylesheet" href="/docs/assets/style.Bj-IXa5W.css" as="style">
|
|
10
10
|
<link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
|
|
11
11
|
|
|
12
|
-
<script type="module" src="/docs/assets/app.
|
|
12
|
+
<script type="module" src="/docs/assets/app.BP8mAVMW.js"></script>
|
|
13
13
|
<link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
|
-
<link rel="modulepreload" href="/docs/assets/chunks/theme.
|
|
14
|
+
<link rel="modulepreload" href="/docs/assets/chunks/theme.Dm1R02v9.js">
|
|
15
15
|
<link rel="modulepreload" href="/docs/assets/chunks/framework.CAZyNGu9.js">
|
|
16
16
|
<link rel="modulepreload" href="/docs/assets/example-agents_weather-agent.md.C9Qv-W0o.lean.js">
|
|
17
17
|
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
|
18
18
|
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
|
19
19
|
</head>
|
|
20
20
|
<body>
|
|
21
|
-
<div id="app"><div class="Layout" data-v-05085060><!--[--><!--]--><!--[--><span tabindex="-1" data-v-30dc752a></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-30dc752a>Skip to content</a><!--]--><!----><header class="VPNav" data-v-05085060 data-v-cbe59881><div class="VPNavBar" data-v-cbe59881 data-v-dd8a1864><div class="wrapper" data-v-dd8a1864><div class="container" data-v-dd8a1864><div class="title" data-v-dd8a1864><div class="VPNavBarTitle has-sidebar" data-v-dd8a1864 data-v-f9346b2b><a class="title" href="/docs/" data-v-f9346b2b><!--[--><!--]--><!----><span data-v-f9346b2b>agentkit</span><!--[--><!--]--></a></div></div><div class="content" data-v-dd8a1864><div class="content-body" data-v-dd8a1864><!--[--><!--]--><div class="VPNavBarSearch search" data-v-dd8a1864><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-dd8a1864 data-v-7ed6e5ac><span id="main-nav-aria-label" class="visually-hidden" data-v-7ed6e5ac> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/quickstart.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/webhooks.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/example-agents/" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-dd8a1864 data-v-2b2b395e><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-2b2b395e data-v-182deabf data-v-2562b538><span class="check" data-v-2562b538><span class="icon" data-v-2562b538><!--[--><span class="vpi-sun sun" data-v-182deabf></span><span class="vpi-moon moon" data-v-182deabf></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-dd8a1864 data-v-f3b584b7 data-v-82133de6><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-82133de6><span class="vpi-more-horizontal icon" data-v-82133de6></span></button><div class="menu" data-v-82133de6><div class="VPMenu" data-v-82133de6 data-v-759c9e19><!----><!--[--><!--[--><!----><div class="group" data-v-f3b584b7><div class="item appearance" data-v-f3b584b7><p class="label" data-v-f3b584b7>Appearance</p><div class="appearance-action" data-v-f3b584b7><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f3b584b7 data-v-182deabf data-v-2562b538><span class="check" data-v-2562b538><span class="icon" data-v-2562b538><!--[--><span class="vpi-sun sun" data-v-182deabf></span><span class="vpi-moon moon" data-v-182deabf></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-dd8a1864 data-v-ab07e844><span class="container" data-v-ab07e844><span class="top" data-v-ab07e844></span><span class="middle" data-v-ab07e844></span><span class="bottom" data-v-ab07e844></span></span></button></div></div></div></div><div class="divider" data-v-dd8a1864><div class="divider-line" data-v-dd8a1864></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-05085060 data-v-826b8761><div class="container" data-v-826b8761><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-826b8761><span class="vpi-align-left menu-icon" data-v-826b8761></span><span class="menu-text" data-v-826b8761>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-826b8761 data-v-01af9e73><button data-v-01af9e73>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-05085060 data-v-5cd5b4d8><div class="curtain" data-v-5cd5b4d8></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-5cd5b4d8><span class="visually-hidden" id="sidebar-aria-label" data-v-5cd5b4d8> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Getting started</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Quickstart</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/scaffolding-agents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Scaffold an agent with Cursor</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/concepts.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Concepts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Improving agents</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Building agents with agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/evals.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/ab.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Live A/B metrics</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/storage.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Storage</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Hillclimbing</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Guides</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Webhooks & custom channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/human-in-the-loop.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Human-in-the-loop approvals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Agent-to-agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/cloud-runtime.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Cloud runtime</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0 has-active" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Example agents</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Choose an example</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/weather-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Weather agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/slack-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Slack agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/concierge.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Concierge</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/benny.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Playbook router</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/bugbot.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>PR evidence reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/approval-buddy.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Approval Buddy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/security-reviewer.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Security Reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/fsd.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Remote PR coordinator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/knowledge-base.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Knowledge base</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/codebase-wiki.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Codebase wiki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/codeowners-review.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Codeowners review</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Operating</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/deployment.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Fix common problems</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0 collapsible" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b6893b1b><span class="vpi-chevron-right caret-icon" data-v-b6893b1b></span></div></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-05085060 data-v-8eedf2ac><div class="VPDoc has-sidebar has-aside" data-v-8eedf2ac data-v-53b9fda6><!--[--><!--]--><div class="container" data-v-53b9fda6><div class="aside" data-v-53b9fda6><div class="aside-curtain" data-v-53b9fda6></div><div class="aside-container" data-v-53b9fda6><div class="aside-content" data-v-53b9fda6><div class="VPDocAside" data-v-53b9fda6 data-v-e448ecab><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-e448ecab data-v-b0b42374><div class="content" data-v-b0b42374><div class="outline-marker" data-v-b0b42374></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-b0b42374>On this page</div><ul class="VPDocOutlineItem root" data-v-b0b42374 data-v-ae03bd52><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-e448ecab></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-53b9fda6><div class="content-container" data-v-53b9fda6><!--[--><!--]--><main class="main" data-v-53b9fda6><div style="position:relative;" class="vp-doc _docs_example-agents_weather-agent" data-v-53b9fda6><div><h1 id="explore-the-full-agentkit-surface-with-a-weather-agent" tabindex="-1">Explore the full agentkit surface with a weather agent <a class="header-anchor" href="#explore-the-full-agentkit-surface-with-a-weather-agent" aria-label="Permalink to "Explore the full agentkit surface with a weather agent""></a></h1><p>The weather agent is the broadest small example in the repository. It fetches live conditions and forecasts, converts units through MCP, writes notes in a session workspace, and pauses an alert tool for human approval. The same agent also runs from HTTP, Slack, a schedule, and the MCP endpoint.</p><p>Use this project when you want to see how agentkit's filesystem pieces fit together before you design a larger agent.</p><p><a href="./../../examples/weather-agent/">Browse the weather agent source.</a></p><h2 id="see-every-local-runtime-feature-together" tabindex="-1">See every local runtime feature together <a class="header-anchor" href="#see-every-local-runtime-feature-together" aria-label="Permalink to "See every local runtime feature together""></a></h2><p>Most examples focus on one architecture. Weather agent puts the major local runtime features side by side:</p><table tabindex="0"><thead><tr><th>Capability</th><th>Source</th><th>Role</th></tr></thead><tbody><tr><td>Root config and instructions</td><td><a href="../../examples/weather-agent/agent/agent.ts"><code>agent/agent.ts</code></a>, <a href="./../../examples/weather-agent/agent/instructions.html"><code>agent/instructions.md</code></a></td><td>Select the local runtime and route each request.</td></tr><tr><td>Server tools</td><td><a href="./../../examples/weather-agent/agent/tools/"><code>agent/tools/</code></a></td><td>Fetch Open-Meteo data, call MCP, and model an approval-gated action.</td></tr><tr><td>Agent tool</td><td><a href="../../examples/weather-agent/agent/tools/save_weather_note.ts"><code>save_weather_note.ts</code></a></td><td>Run a Python script inside the session workspace.</td></tr><tr><td>Stdio MCP</td><td><a href="../../examples/weather-agent/agent/mcp-connections/units.ts"><code>units.ts</code></a></td><td>Expose conversion tools to the model, host tools, and channel handlers.</td></tr><tr><td>Custom HTTP</td><td><a href="../../examples/weather-agent/agent/channels/webhook.ts"><code>webhook.ts</code></a></td><td>Start a turn or call MCP without a model turn.</td></tr><tr><td>Slack</td><td><a href="../../examples/weather-agent/agent/channels/slack.ts"><code>slack.ts</code></a>, <a href="../../examples/weather-agent/agent/channels/slack-app.ts"><code>slack-app.ts</code></a></td><td>Compare account-linked chat with a dedicated app offering approval buttons.</td></tr><tr><td>Skill and subagent</td><td><a href="./../../examples/weather-agent/agent/skills/forecast.html"><code>forecast.md</code></a>, <a href="./../../examples/weather-agent/agent/subagents/researcher/"><code>researcher/</code></a></td><td>Load a procedure on demand or delegate broad research.</td></tr><tr><td>Schedule and hook</td><td><a href="./../../examples/weather-agent/agent/schedules/heartbeat.html"><code>heartbeat.md</code></a>, <a href="../../examples/weather-agent/agent/hooks/audit.ts"><code>audit.ts</code></a></td><td>Start recurring task sessions and observe completed turns.</td></tr><tr><td>A/B and evals</td><td><a href="../../examples/weather-agent/agent/ab.ts"><code>agent/ab.ts</code></a>, <a href="./../../examples/weather-agent/evals/"><code>evals/</code></a></td><td>Compare a sticky variant and protect tool routing with regression cases.</td></tr></tbody></table><h2 id="follow-one-request" tabindex="-1">Follow one request <a class="header-anchor" href="#follow-one-request" aria-label="Permalink to "Follow one request""></a></h2><p>A current-weather question takes this path:</p><ol><li>The built-in HTTP channel, Slack, or the custom <code>/report</code> route creates a durable session.</li><li><code>instructions.md</code> tells the model to call <code>get_weather</code> instead of guessing.</li><li>The server tool geocodes the city, fetches Open-Meteo, validates the response, and returns normalized fields.</li><li>The agent writes a short answer. Agentkit records every event in the session stream.</li><li>The audit hook observes <code>turn.completed</code>. If the session joined the A/B experiment, the collector updates its metrics too.</li></ol><p>Forecasts route to <code>get_forecast</code>. Unit conversions route to <code>convert_temperature</code>, which calls the <code>units</code> MCP server through <code>ctx.host.mcp</code>. Climate history and broad comparisons route to the <code>researcher</code> subagent.</p><h2 id="prepare-the-example" tabindex="-1">Prepare the example <a class="header-anchor" href="#prepare-the-example" aria-label="Permalink to "Prepare the example""></a></h2><p>You need:</p><ul><li>Node 22.13 or newer.</li><li>An agent-runtime credential.</li><li>Network access to Open-Meteo.</li><li>Python 3 for <code>save_weather_note</code>.</li></ul><p>The project mounts an account-linked Slack channel. Agentkit checks the connection at startup, so sign in even when you plan to call a deterministic tool.</p><p>The optional approval-enabled Slack app also needs:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> WEATHER_AGENT_SLACK_BOT_TOKEN</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">xoxb-...</span></span>
|
|
21
|
+
<div id="app"><div class="Layout" data-v-05085060><!--[--><!--]--><!--[--><span tabindex="-1" data-v-30dc752a></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-30dc752a>Skip to content</a><!--]--><!----><header class="VPNav" data-v-05085060 data-v-cbe59881><div class="VPNavBar" data-v-cbe59881 data-v-dd8a1864><div class="wrapper" data-v-dd8a1864><div class="container" data-v-dd8a1864><div class="title" data-v-dd8a1864><div class="VPNavBarTitle has-sidebar" data-v-dd8a1864 data-v-f9346b2b><a class="title" href="/docs/" data-v-f9346b2b><!--[--><!--]--><!----><span data-v-f9346b2b>agentkit</span><!--[--><!--]--></a></div></div><div class="content" data-v-dd8a1864><div class="content-body" data-v-dd8a1864><!--[--><!--]--><div class="VPNavBarSearch search" data-v-dd8a1864><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-dd8a1864 data-v-7ed6e5ac><span id="main-nav-aria-label" class="visually-hidden" data-v-7ed6e5ac> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/quickstart.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Quickstart</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/guides/webhooks.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Guides</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/example-agents/" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Examples</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/reference/project-layout.html" tabindex="0" data-v-7ed6e5ac data-v-65720067><!--[--><span data-v-65720067>Reference</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-dd8a1864 data-v-2b2b395e><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-2b2b395e data-v-182deabf data-v-2562b538><span class="check" data-v-2562b538><span class="icon" data-v-2562b538><!--[--><span class="vpi-sun sun" data-v-182deabf></span><span class="vpi-moon moon" data-v-182deabf></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-dd8a1864 data-v-f3b584b7 data-v-82133de6><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-82133de6><span class="vpi-more-horizontal icon" data-v-82133de6></span></button><div class="menu" data-v-82133de6><div class="VPMenu" data-v-82133de6 data-v-759c9e19><!----><!--[--><!--[--><!----><div class="group" data-v-f3b584b7><div class="item appearance" data-v-f3b584b7><p class="label" data-v-f3b584b7>Appearance</p><div class="appearance-action" data-v-f3b584b7><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f3b584b7 data-v-182deabf data-v-2562b538><span class="check" data-v-2562b538><span class="icon" data-v-2562b538><!--[--><span class="vpi-sun sun" data-v-182deabf></span><span class="vpi-moon moon" data-v-182deabf></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-dd8a1864 data-v-ab07e844><span class="container" data-v-ab07e844><span class="top" data-v-ab07e844></span><span class="middle" data-v-ab07e844></span><span class="bottom" data-v-ab07e844></span></span></button></div></div></div></div><div class="divider" data-v-dd8a1864><div class="divider-line" data-v-dd8a1864></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-05085060 data-v-826b8761><div class="container" data-v-826b8761><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-826b8761><span class="vpi-align-left menu-icon" data-v-826b8761></span><span class="menu-text" data-v-826b8761>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-826b8761 data-v-01af9e73><button data-v-01af9e73>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-05085060 data-v-5cd5b4d8><div class="curtain" data-v-5cd5b4d8></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-5cd5b4d8><span class="visually-hidden" id="sidebar-aria-label" data-v-5cd5b4d8> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Getting started</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/quickstart.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Quickstart</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/scaffolding-agents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Scaffold an agent with Cursor</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/concepts.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Concepts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Improving agents</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/building-with-agents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Building agents with agents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/evals.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Evals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/ab.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Live A/B metrics</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/storage.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Storage</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/hillclimbing.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Hillclimbing</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Guides</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/webhooks.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Webhooks & custom channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/github.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>GitHub</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/slack.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Slack</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/human-in-the-loop.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Human-in-the-loop approvals</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/agent-to-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Agent-to-agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/guides/cloud-runtime.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Cloud runtime</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0 has-active" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Example agents</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Choose an example</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/weather-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Weather agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/slack-agent.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Slack agent</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/concierge.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Concierge</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/benny.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Playbook router</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/oncall.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Alert investigator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/bugbot.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>PR evidence reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/approval-buddy.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Approval Buddy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/security-reviewer.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Security Reviewer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/fsd.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Remote PR coordinator</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/knowledge-base.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Knowledge base</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/codebase-wiki.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Codebase wiki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/example-agents/codeowners-review.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Codeowners review</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Operating</h2><!----></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/deployment.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Deployment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/troubleshooting.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Fix common problems</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-6b69f472><section class="VPSidebarItem level-0 collapsible" data-v-6b69f472 data-v-b6893b1b><div class="item" role="button" tabindex="0" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><h2 class="text" data-v-b6893b1b>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b6893b1b><span class="vpi-chevron-right caret-icon" data-v-b6893b1b></span></div></div><div class="items" data-v-b6893b1b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/project-layout.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Project layout</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/agent-config.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Agent config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/instructions.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Instructions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/tools.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Tools</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/skills.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Skills</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/connections.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>MCP Connections</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/subagents.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Subagents</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/channels.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Channels</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/schedules.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Schedules & reminders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/hooks.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/sessions.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Sessions & streaming</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/playground.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>Playground</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/cli.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>CLI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b6893b1b><div class="item" data-v-b6893b1b><div class="indicator" data-v-b6893b1b></div><a class="VPLink link link" href="/docs/reference/http-api.html" data-v-b6893b1b><!--[--><p class="text" data-v-b6893b1b>HTTP API</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-05085060 data-v-8eedf2ac><div class="VPDoc has-sidebar has-aside" data-v-8eedf2ac data-v-53b9fda6><!--[--><!--]--><div class="container" data-v-53b9fda6><div class="aside" data-v-53b9fda6><div class="aside-curtain" data-v-53b9fda6></div><div class="aside-container" data-v-53b9fda6><div class="aside-content" data-v-53b9fda6><div class="VPDocAside" data-v-53b9fda6 data-v-e448ecab><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-e448ecab data-v-b0b42374><div class="content" data-v-b0b42374><div class="outline-marker" data-v-b0b42374></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-b0b42374>On this page</div><ul class="VPDocOutlineItem root" data-v-b0b42374 data-v-ae03bd52><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-e448ecab></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-53b9fda6><div class="content-container" data-v-53b9fda6><!--[--><!--]--><main class="main" data-v-53b9fda6><div style="position:relative;" class="vp-doc _docs_example-agents_weather-agent" data-v-53b9fda6><div><h1 id="explore-the-full-agentkit-surface-with-a-weather-agent" tabindex="-1">Explore the full agentkit surface with a weather agent <a class="header-anchor" href="#explore-the-full-agentkit-surface-with-a-weather-agent" aria-label="Permalink to "Explore the full agentkit surface with a weather agent""></a></h1><p>The weather agent is the broadest small example in the repository. It fetches live conditions and forecasts, converts units through MCP, writes notes in a session workspace, and pauses an alert tool for human approval. The same agent also runs from HTTP, Slack, a schedule, and the MCP endpoint.</p><p>Use this project when you want to see how agentkit's filesystem pieces fit together before you design a larger agent.</p><p><a href="./../../examples/weather-agent/">Browse the weather agent source.</a></p><h2 id="see-every-local-runtime-feature-together" tabindex="-1">See every local runtime feature together <a class="header-anchor" href="#see-every-local-runtime-feature-together" aria-label="Permalink to "See every local runtime feature together""></a></h2><p>Most examples focus on one architecture. Weather agent puts the major local runtime features side by side:</p><table tabindex="0"><thead><tr><th>Capability</th><th>Source</th><th>Role</th></tr></thead><tbody><tr><td>Root config and instructions</td><td><a href="../../examples/weather-agent/agent/agent.ts"><code>agent/agent.ts</code></a>, <a href="./../../examples/weather-agent/agent/instructions.html"><code>agent/instructions.md</code></a></td><td>Select the local runtime and route each request.</td></tr><tr><td>Server tools</td><td><a href="./../../examples/weather-agent/agent/tools/"><code>agent/tools/</code></a></td><td>Fetch Open-Meteo data, call MCP, and model an approval-gated action.</td></tr><tr><td>Agent tool</td><td><a href="../../examples/weather-agent/agent/tools/save_weather_note.ts"><code>save_weather_note.ts</code></a></td><td>Run a Python script inside the session workspace.</td></tr><tr><td>Stdio MCP</td><td><a href="../../examples/weather-agent/agent/mcp-connections/units.ts"><code>units.ts</code></a></td><td>Expose conversion tools to the model, host tools, and channel handlers.</td></tr><tr><td>Custom HTTP</td><td><a href="../../examples/weather-agent/agent/channels/webhook.ts"><code>webhook.ts</code></a></td><td>Start a turn or call MCP without a model turn.</td></tr><tr><td>Slack</td><td><a href="../../examples/weather-agent/agent/channels/slack.ts"><code>slack.ts</code></a>, <a href="../../examples/weather-agent/agent/channels/slack-app.ts"><code>slack-app.ts</code></a></td><td>Compare account-linked chat with a dedicated app offering approval buttons.</td></tr><tr><td>Skill and subagent</td><td><a href="./../../examples/weather-agent/agent/skills/forecast.html"><code>forecast.md</code></a>, <a href="./../../examples/weather-agent/agent/subagents/researcher/"><code>researcher/</code></a></td><td>Load a procedure on demand or delegate broad research.</td></tr><tr><td>Schedule and hook</td><td><a href="./../../examples/weather-agent/agent/schedules/heartbeat.html"><code>heartbeat.md</code></a>, <a href="../../examples/weather-agent/agent/hooks/audit.ts"><code>audit.ts</code></a></td><td>Start recurring task sessions and observe completed turns.</td></tr><tr><td>A/B and evals</td><td><a href="../../examples/weather-agent/agent/ab.ts"><code>agent/ab.ts</code></a>, <a href="./../../examples/weather-agent/evals/"><code>evals/</code></a></td><td>Compare a sticky variant and protect tool routing with regression cases.</td></tr></tbody></table><h2 id="follow-one-request" tabindex="-1">Follow one request <a class="header-anchor" href="#follow-one-request" aria-label="Permalink to "Follow one request""></a></h2><p>A current-weather question takes this path:</p><ol><li>The built-in HTTP channel, Slack, or the custom <code>/report</code> route creates a durable session.</li><li><code>instructions.md</code> tells the model to call <code>get_weather</code> instead of guessing.</li><li>The server tool geocodes the city, fetches Open-Meteo, validates the response, and returns normalized fields.</li><li>The agent writes a short answer. Agentkit records every event in the session stream.</li><li>The audit hook observes <code>turn.completed</code>. If the session joined the A/B experiment, the collector updates its metrics too.</li></ol><p>Forecasts route to <code>get_forecast</code>. Unit conversions route to <code>convert_temperature</code>, which calls the <code>units</code> MCP server through <code>ctx.host.mcp</code>. Climate history and broad comparisons route to the <code>researcher</code> subagent.</p><h2 id="prepare-the-example" tabindex="-1">Prepare the example <a class="header-anchor" href="#prepare-the-example" aria-label="Permalink to "Prepare the example""></a></h2><p>You need:</p><ul><li>Node 22.13 or newer.</li><li>An agent-runtime credential.</li><li>Network access to Open-Meteo.</li><li>Python 3 for <code>save_weather_note</code>.</li></ul><p>The project mounts an account-linked Slack channel. Agentkit checks the connection at startup, so sign in even when you plan to call a deterministic tool.</p><p>The optional approval-enabled Slack app also needs:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> WEATHER_AGENT_SLACK_BOT_TOKEN</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">xoxb-...</span></span>
|
|
22
22
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> WEATHER_AGENT_SLACK_APP_TOKEN</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">xapp-...</span></span>
|
|
23
23
|
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agentkit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> slack</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> doctor</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --prefix</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> WEATHER_AGENT</span></span></code></pre></div><p>Without those two tokens, the dedicated channel stays idle. The account-linked channel still works.</p><h2 id="inspect-before-running" tabindex="-1">Inspect before running <a class="header-anchor" href="#inspect-before-running" aria-label="Permalink to "Inspect before running""></a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agentkit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> validate</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> examples/weather-agent</span></span>
|
|
24
24
|
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agentkit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> info</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> examples/weather-agent</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --json</span></span>
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --message</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Compare record summer temperatures across Paris, London, and Rome."</span></span></code></pre></div><p>Use a skill when the same agent needs a procedure. Use a subagent when the parent should hand a bounded task to a specialist. The <a href="./../reference/subagents.html">subagents reference</a> explains the current inheritance limits.</p><h2 id="trigger-the-schedule-and-inspect-the-hook" tabindex="-1">Trigger the schedule and inspect the hook <a class="header-anchor" href="#trigger-the-schedule-and-inspect-the-hook" aria-label="Permalink to "Trigger the schedule and inspect the hook""></a></h2><p>The heartbeat schedule runs at 09:00 UTC on weekdays. Automatic schedule timers stay off under <code>--dev</code>, so dispatch it manually:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -s</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -X</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> POST</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \</span></span>
|
|
43
43
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> http://127.0.0.1:3000/weather-agent/v1/dev/schedules/heartbeat</span></span></code></pre></div><p>It creates a task session to check San Francisco, New York, and London. The audit hook logs usage after each completed turn. Hooks observe recorded events; their failures don't fail the turn.</p><h2 id="measure-variants-and-regressions" tabindex="-1">Measure variants and regressions <a class="header-anchor" href="#measure-variants-and-regressions" aria-label="Permalink to "Measure variants and regressions""></a></h2><p>The <code>weather-tool-efficiency</code> A/B experiment assigns sessions by a sticky hash:</p><ul><li><code>control</code> returns current conditions in Fahrenheit.</li><li><code>treatment</code> adds a brief Celsius instruction and changes <code>get_weather</code> to return Celsius fields.</li></ul><p>Samples and aggregate snapshots persist under <code>.agent-serve/</code>. The treatment only changes current conditions; <code>get_forecast</code> still returns Fahrenheit. Treat the branch as an example of <code>ctx.session.abs</code>, not a complete unit policy.</p><p>List and run the evals:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agentkit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> eval</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> examples/weather-agent</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --list</span></span>
|
|
44
44
|
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">agentkit</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> eval</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dir</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> examples/weather-agent</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --json</span></span></code></pre></div><p>Six cases cover current weather and forecasts against live Open-Meteo. Two more cover the local MCP converter and workspace note tool. Together they test model routing, external data, host MCP, and agent-side execution.</p><h2 id="turn-the-weather-tour-into-your-own-agent" tabindex="-1">Turn the weather tour into your own agent <a class="header-anchor" href="#turn-the-weather-tour-into-your-own-agent" aria-label="Permalink to "Turn the weather tour into your own agent""></a></h2><p>Keep the architecture and replace the domain:</p><ul><li>Swap Open-Meteo tools for your typed service clients.</li><li>Keep deterministic transforms behind direct server tools or MCP.</li><li>Use an agent tool only when code must run in the agent workspace.</li><li>Gate side effects with <code>needsApproval</code>.</li><li>Put reusable procedures in skills and narrow specialist work into subagents.</li><li>Add a channel only when the external surface needs its own identity, continuation key, or delivery behavior.</li></ul><h2 id="where-to-go-next" tabindex="-1">Where to go next <a class="header-anchor" href="#where-to-go-next" aria-label="Permalink to "Where to go next""></a></h2><ul><li><a href="./../reference/tools.html">Tools</a></li><li><a href="./../reference/connections.html">MCP connections</a></li><li><a href="./../guides/human-in-the-loop.html">Human-in-the-loop approvals</a></li><li><a href="./../guides/slack.html">Slack</a></li><li><a href="./../reference/schedules.html">Schedules and reminders</a></li><li><a href="./../evals.html">Evals</a></li><li><a href="./../ab.html">Live A/B metrics</a></li></ul></div></div></main><footer class="VPDocFooter" data-v-53b9fda6 data-v-3958cc3f><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-3958cc3f><span class="visually-hidden" id="doc-footer-aria-label" data-v-3958cc3f>Pager</span><div class="pager" data-v-3958cc3f><a class="VPLink link pager-link prev" href="/docs/example-agents/" data-v-3958cc3f><!--[--><span class="desc" data-v-3958cc3f>Previous page</span><span class="title" data-v-3958cc3f>Choose an example</span><!--]--></a></div><div class="pager" data-v-3958cc3f><a class="VPLink link pager-link next" href="/docs/example-agents/slack-agent.html" data-v-3958cc3f><!--[--><span class="desc" data-v-3958cc3f>Next page</span><span class="title" data-v-3958cc3f>Slack agent</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
|
|
45
|
-
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"BMCZ6Hd7\",\"building-with-agents.md\":\"CJCtZCyi\",\"concepts.md\":\"Cfb9b-k1\",\"deployment.md\":\"BtfEsc9S\",\"evals.md\":\"DAgEc_hL\",\"example-agents_approval-buddy.md\":\"8R5phXb5\",\"example-agents_benny.md\":\"B0gjhI-p\",\"example-agents_bugbot.md\":\"DelIdhxB\",\"example-agents_codebase-wiki.md\":\"DC6sgwn0\",\"example-agents_codeowners-review.md\":\"Ku_tG2RY\",\"example-agents_concierge.md\":\"4rQTSMXt\",\"example-agents_fsd.md\":\"CzgUrDfi\",\"example-agents_index.md\":\"
|
|
45
|
+
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ab.md\":\"BMCZ6Hd7\",\"building-with-agents.md\":\"CJCtZCyi\",\"concepts.md\":\"Cfb9b-k1\",\"deployment.md\":\"BtfEsc9S\",\"evals.md\":\"DAgEc_hL\",\"example-agents_approval-buddy.md\":\"8R5phXb5\",\"example-agents_benny.md\":\"B0gjhI-p\",\"example-agents_bugbot.md\":\"DelIdhxB\",\"example-agents_codebase-wiki.md\":\"DC6sgwn0\",\"example-agents_codeowners-review.md\":\"Ku_tG2RY\",\"example-agents_concierge.md\":\"4rQTSMXt\",\"example-agents_fsd.md\":\"CzgUrDfi\",\"example-agents_index.md\":\"CwtWu5ix\",\"example-agents_knowledge-base.md\":\"BPJiVueF\",\"example-agents_oncall.md\":\"BG_sUMly\",\"example-agents_security-reviewer.md\":\"D2rtwDTO\",\"example-agents_slack-agent.md\":\"buLbgvBf\",\"example-agents_weather-agent.md\":\"C9Qv-W0o\",\"guides_agent-to-agent.md\":\"Bpzgq2Pq\",\"guides_cloud-runtime.md\":\"gVzabdQL\",\"guides_github.md\":\"DOOCpqsW\",\"guides_human-in-the-loop.md\":\"DlUqsp1S\",\"guides_slack.md\":\"FWale6Ip\",\"guides_webhooks.md\":\"B1EswtUu\",\"hillclimbing.md\":\"DHNast08\",\"index.md\":\"COiu-1jL\",\"quickstart.md\":\"BU6Iwi_9\",\"reference_agent-config.md\":\"DrW2JUM8\",\"reference_channels.md\":\"DdmiKgqf\",\"reference_cli.md\":\"D189RBCH\",\"reference_connections.md\":\"zaEYCLHT\",\"reference_hooks.md\":\"DyLVfE1O\",\"reference_http-api.md\":\"Dx_nmDG6\",\"reference_instructions.md\":\"CgoV-YEb\",\"reference_playground.md\":\"CPZhfYaO\",\"reference_project-layout.md\":\"Bd_CKtNS\",\"reference_schedules.md\":\"w_F2mXB6\",\"reference_sessions.md\":\"DLd6mvbv\",\"reference_skills.md\":\"B_jHN7JL\",\"reference_subagents.md\":\"zWAMNfi1\",\"reference_tools.md\":\"CqgJroI0\",\"scaffolding-agents.md\":\"C3pTrmoE\",\"storage.md\":\"Cu3MwM2a\",\"troubleshooting.md\":\"DkovjS7h\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"agentkit\",\"description\":\"Filesystem-first framework for building and serving Cursor agents.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/webhooks\"},{\"text\":\"Examples\",\"link\":\"/example-agents/\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Scaffold an agent with Cursor\",\"link\":\"/scaffolding-agents\"},{\"text\":\"Concepts\",\"link\":\"/concepts\"}]},{\"text\":\"Improving agents\",\"items\":[{\"text\":\"Building agents with agents\",\"link\":\"/building-with-agents\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Live A/B metrics\",\"link\":\"/ab\"},{\"text\":\"Storage\",\"link\":\"/storage\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"}]},{\"text\":\"Guides\",\"items\":[{\"text\":\"Webhooks & custom channels\",\"link\":\"/guides/webhooks\"},{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Human-in-the-loop approvals\",\"link\":\"/guides/human-in-the-loop\"},{\"text\":\"Agent-to-agent\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Cloud runtime\",\"link\":\"/guides/cloud-runtime\"}]},{\"text\":\"Example agents\",\"items\":[{\"text\":\"Choose an example\",\"link\":\"/example-agents/\"},{\"text\":\"Weather agent\",\"link\":\"/example-agents/weather-agent\"},{\"text\":\"Slack agent\",\"link\":\"/example-agents/slack-agent\"},{\"text\":\"Concierge\",\"link\":\"/example-agents/concierge\"},{\"text\":\"Playbook router\",\"link\":\"/example-agents/benny\"},{\"text\":\"Alert investigator\",\"link\":\"/example-agents/oncall\"},{\"text\":\"PR evidence reviewer\",\"link\":\"/example-agents/bugbot\"},{\"text\":\"Approval Buddy\",\"link\":\"/example-agents/approval-buddy\"},{\"text\":\"Security Reviewer\",\"link\":\"/example-agents/security-reviewer\"},{\"text\":\"Remote PR coordinator\",\"link\":\"/example-agents/fsd\"},{\"text\":\"Knowledge base\",\"link\":\"/example-agents/knowledge-base\"},{\"text\":\"Codebase wiki\",\"link\":\"/example-agents/codebase-wiki\"},{\"text\":\"Codeowners review\",\"link\":\"/example-agents/codeowners-review\"}]},{\"text\":\"Operating\",\"items\":[{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Fix common problems\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
|
46
46
|
|
|
47
47
|
</body>
|
|
48
48
|
</html>
|