Sign inConnect your agent
infochanged

Agents - Agents SDK: Agent Skills are files in your agent's Workspace

Announced
Tags
Agents
Severity
info, set by reef/rss-rule-v1
Source
https://developers.cloudflare.com/changelog/post/2026-10-29-agent-skills-from-files/

<p><a href="https://developers.cloudflare.com/agents/skills/">Agent Skills</a> in the <a href="https://developers.cloudflare.com/agents/">Cloudflare Agents SDK</a> are now files. Write a folder with a <code>SKILL.md</code> into your agent's <a href="https://github.com/cloudflare/computer" target="_blank" rel="noopener">Computer<span class="external-link"> ↗︎</span></a> Workspace, under <code>/workspace/.agents/skills/</code>, and the agent can use it on its next turn. You do not need a build step or a deploy, and the agent can write its own skills.</p> <div><div data-nb-tabs data-nb-sync-key="workersExamples" class><div class="relative flex border-b border-border" role="tablist" data-nb-tabs-list><span class="bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out" data-nb-tabs-indicator aria-hidden="true"></span></div><div class="mt-3"><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="JavaScript" class><figure class="nb-code-figure nb-code-figure-titled" data-nb-lang="js"><figcaption class="nb-code-title" data-pagefind-ignore=""><span class="nb-code-title-name">src/server.js</span><span class="nb-code-title-lang">js</span></figcaption><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="js" data-nb-lang="js"><code><span class="line"><span class="nb-shiki-1itgoe">import</span><span class="nb-shiki-140thh"> { Think, skills } </span><span class="nb-shiki-1itgoe">from</span><span class="nb-shiki-mdbnqw"> "@cloudflare/think"</span><span class="nb-shiki-140thh">;</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-1itgoe">export</span><span class="nb-shiki-1itgoe"> class</span><span class="nb-shiki-1t8gfj"> MyAgent</span><span class="nb-shiki-1itgoe"> extends</span><span class="nb-shiki-1t8gfj"> Think</span><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-1t8gfj"> getSkills</span><span class="nb-shiki-140thh">() {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> return</span><span class="nb-shiki-140thh"> [</span></span> <span class="line"><span class="nb-shiki-140thh"> skills.</span><span class="nb-shiki-1t8gfj">workspace</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-dzsirb">this</span><span class="nb-shiki-140thh">.workspace), </span><span class="nb-shiki-21nrsd">// /workspace/.agents/skills</span></span> <span class="line"><span class="nb-shiki-140thh"> skills.</span><span class="nb-shiki-1t8gfj">r2</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-dzsirb">this</span><span class="nb-shiki-140thh">.env.</span><span class="nb-shiki-dzsirb">SKILLS_BUCKET</span><span class="nb-shiki-140thh">, { prefix: </span><span class="nb-shiki-mdbnqw">"skills/"</span><span class="nb-shiki-140thh"> }),</span></span> <span class="line"><span class="nb-shiki-140thh"> ];</span></span> <span class="line"><span class="nb-shiki-140thh"> }</span></span> <span class="line"><span class="nb-shiki-140thh">}</span></span></code></pre></figure></div><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="TypeScript" class><figure class="nb-code-figure nb-code-figure-titled" data-nb-lang="ts"><figcaption class="nb-code-title" data-pagefind-ignore=""><span class="nb-code-title-name">src/server.ts</span><span class="nb-code-title-lang">ts</span></figcaption><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="ts" data-nb-lang="ts"><code><span class="line"><span class="nb-shiki-1itgoe">import</span><span class="nb-shiki-140thh"> { Think, skills } </span><span class="nb-shiki-1itgoe">from</span><span class="nb-shiki-mdbnqw"> "@cloudflare/think"</span><span class="nb-shiki-140thh">;</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-1itgoe">export</span><span class="nb-shiki-1itgoe"> class</span><span class="nb-shiki-1t8gfj"> MyAgent</span><span class="nb-shiki-1itgoe"> extends</span><span class="nb-shiki-1t8gfj"> Think</span><span class="nb-shiki-140thh">&#x3C;</span><span class="nb-shiki-1t8gfj">Env</span><span class="nb-shiki-140thh">> {</span></span> <span class="line"><span class="nb-shiki-1t8gfj"> getSkills</span><span class="nb-shiki-140thh">() {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> return</span><span class="nb-shiki-140thh"> [</span></span> <span class="line"><span class="nb-shiki-140thh"> skills.</span><span class="nb-shiki-1t8gfj">workspace</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-dzsirb">this</span><span class="nb-shiki-140thh">.workspace), </span><span class="nb-shiki-21nrsd">// /workspace/.agents/skills</span></span> <span class="line"><span class="nb-shiki-140thh"> skills.</span><span class="nb-shiki-1t8gfj">r2</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-dzsirb">this</span><span class="nb-shiki-140thh">.env.</span><span class="nb-shiki-dzsirb">SKILLS_BUCKET</span><span class="nb-shiki-140thh">, { prefix: </span><span class="nb-shiki-mdbnqw">"skills/"</span><span class="nb-shiki-140thh"> }),</span></span> <span class="line"><span class="nb-shiki-140thh"> ];</span></span> <span class="line"><span class="nb-shiki-140thh"> }</span></span> <span class="line"><span class="nb-shiki-140thh">}</span></span></code></pre></figure></div></div></div><script type="module" src="https://developers.cloudflare.com/home/runner/work/cloudflare-docs/cloudflare-docs/src/components/ui/tabs/Tabs.astro?astro&type=script&index=0&lang.ts"></script></div> <p>This release includes:</p> <ul> <li><strong>Three sources.</strong> Load skills from a <a href="https://developers.cloudflare.com/agents/skills/sources/computer/">Computer Workspace</a>, an <a href="https://developers.cloudflare.com/agents/skills/sources/r2/">R2 bucket</a>, or <a href="https://developers.cloudflare.com/agents/skills/sources/code/">code</a>. Think lists every source again before each turn.</li> <li><strong>The open format.</strong> Every <code>SKILL.md</code> is checked against the <a href="https://agentskills.io/specification" target="_blank" rel="noopener">Agent Skills specification<span class="external-link"> ↗︎</span></a>. As the specification's guide for agents recommends, a skill that breaks a rule still loads, with a logged warning. Use <code>parseSkill()</code> to check a skill before you write it.</li> <li><strong>Scripts in the Workspace.</strong> Skill scripts are Workspace files, and the model runs them with the Workspace <code>exec</code> tool. Refer to <a href="https://developers.cloudflare.com/agents/skills/execution/">Execution</a>.</li> <li><strong>Skill tools for any harness.</strong> Use the same <code>activate_skill</code> and <code>read_skill_resource</code> tools in Think, Pi Durable, or the AI SDK. Refer to <a href="https://developers.cloudflare.com/agents/tools/skills/">Skills tools</a>.</li> <li><strong>Warm prompt caches.</strong> When a skill changes mid-conversation, Think sends the new catalog as a reminder instead of rebuilding the cached system prompt. An overridden <code>getSystemPrompt()</code> now stays at the top of the system prompt, above context blocks.</li> </ul> <p>This is a breaking change for code that uses <code>agents/skills</code> directly. The <code>agents:skills</code> Vite import, <code>agents/skills/compile</code>, <code>SkillRegistry</code>, and Think's <code>skillWorkspace</code> are removed, and <code>runner()</code> moved to <code>agents/skills/runner</code>. Install <a href="https://github.com/cloudflare/agents/releases/tag/agents%400.32.0" target="_blank" rel="noopener">Agents SDK v0.32.0<span class="external-link"> ↗︎</span></a> and <a href="https://github.com/cloudflare/agents/releases/tag/%40cloudflare%2Fthink%400.23.0" target="_blank" rel="noopener">Think v0.23.0<span class="external-link"> ↗︎</span></a> or later. Refer to the <a href="https://github.com/cloudflare/agents/tree/main/examples/computer-skills" target="_blank" rel="noopener"><code>computer-skills</code><span class="external-link"> ↗︎</span></a> and <a href="https://github.com/cloudflare/agents/tree/main/examples/r2-skills" target="_blank" rel="noopener"><code>r2-skills</code><span class="external-link"> ↗︎</span></a> examples.</p>

The text above is the source's. reef added the severity, the dates it could read from the text, and the endpoints and scopes named in code.