<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI Skill Development Handbook on Code Plato</title><link>https://CodePlato3721.github.io/categories/ai-skill-development-handbook/</link><description>Recent content in AI Skill Development Handbook on Code Plato</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Fri, 29 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://CodePlato3721.github.io/categories/ai-skill-development-handbook/index.xml" rel="self" type="application/rss+xml"/><item><title>Agent Skill Handbook 01: Getting Started</title><link>https://CodePlato3721.github.io/post/agent-skill-handbook-01-getting-started/</link><pubDate>Fri, 29 May 2026 00:00:00 +0000</pubDate><guid>https://CodePlato3721.github.io/post/agent-skill-handbook-01-getting-started/</guid><description>&lt;img src="https://pub-deacd49348914a49b1254b01f351ef0d.r2.dev/2026/05/agent-skill-handbook-01-getting-started/en/banner.png" alt="Featured image of post Agent Skill Handbook 01: Getting Started" /&gt;&lt;p&gt;This is the first post in the Agent Skill Handbook series.&lt;/p&gt;
&lt;h2 id="what-is-a-skill"&gt;What is a Skill?
&lt;/h2&gt;&lt;p&gt;Many developers ask: what exactly is an Agent Skill? I&amp;rsquo;d argue it&amp;rsquo;s one of the simplest things you&amp;rsquo;ll ever learn in your programming career.&lt;/p&gt;
&lt;h3 id="how-skills-came-to-be"&gt;How Skills Came to Be
&lt;/h3&gt;&lt;p&gt;Think about onboarding a new colleague. No matter how talented they are, they still need to read the team&amp;rsquo;s how-to docs before they can start contributing. It turns out working with LLMs follows the same pattern. Ask an LLM to do something cold, and it&amp;rsquo;ll likely produce something technically impressive but completely off from what you wanted.&lt;/p&gt;
&lt;p&gt;Then people discovered that if you front-load the prompt with step-by-step instructions, the LLM does much better. So everyone started feeding LLMs how-to manuals.&lt;/p&gt;
&lt;p&gt;But context is limited, and stuffing a full manual into every prompt gets expensive fast. That&amp;rsquo;s when people realized: we don&amp;rsquo;t actually memorize how-to content ourselves either. We just remember that a certain doc exists, and look it up when we need it. We could do the same for LLMs — give them just the descriptions up front, and let them pull the full content on demand.&lt;/p&gt;
&lt;p&gt;That led to a minimal structure with two core fields: &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;description&lt;/code&gt;, plus the body. Only the name and description are loaded initially; the LLM decides whether it needs to read the rest.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Skill structure diagram" class="gallery-image" data-flex-basis="320px" data-flex-grow="133" height="1086" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-deacd49348914a49b1254b01f351ef0d.r2.dev/2026/05/agent-skill-handbook-01-getting-started/en/01.png" srcset="https://CodePlato3721.github.io/01_10133576187871978090_hu_ad092d28159b7ab2.png 800w, https://pub-deacd49348914a49b1254b01f351ef0d.r2.dev/2026/05/agent-skill-handbook-01-getting-started/en/01.png 1448w" width="1448"&gt;&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s a skill. The name doesn&amp;rsquo;t really matter — it could be called howto, guide, or manual — but &amp;ldquo;skill&amp;rdquo; is short, memorable, and self-explanatory, so it stuck. In some parallel universe it&amp;rsquo;s probably called a &amp;ldquo;guide.&amp;rdquo;&lt;/p&gt;
&lt;h3 id="who-invented-skills"&gt;Who Invented Skills?
&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;SKILL.md&lt;/code&gt; format was first popularized by Anthropic, but the idea of &amp;ldquo;teaching an AI a skill&amp;rdquo; doesn&amp;rsquo;t belong to any single company. OpenAI, OpenClaw, and Hermes Agent all have their own implementations. The concept is the same; the details differ.&lt;/p&gt;
&lt;h2 id="how-to-write-a-skill"&gt;How to Write a Skill
&lt;/h2&gt;&lt;h3 id="the-universal-skill-structure"&gt;The Universal Skill Structure
&lt;/h3&gt;&lt;p&gt;Across platforms, the common ground is: a skill is a folder.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;my-skill/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; SKILL.md # Required: metadata + instructions
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; scripts/ # Optional: executable scripts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; references/ # Optional: docs, specs, references
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;scripts&lt;/code&gt; and &lt;code&gt;references&lt;/code&gt; are optional — just common best practices. The only required file is &lt;code&gt;SKILL.md&lt;/code&gt;, and its structure is simple.&lt;/p&gt;
&lt;p&gt;A minimal &lt;code&gt;SKILL.md&lt;/code&gt; only needs &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;description&lt;/code&gt; in the frontmatter. The body can be short, but should clearly describe what the agent should do when triggered.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;skill-name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;description&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;What this skill does, when it should be triggered, when it shouldn&amp;#39;t, etc.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When a skill has complex logic that needs to run reliably, add a &lt;code&gt;scripts&lt;/code&gt; folder. When it references a lot of documentation that might overflow the context, move the bulk of it into &lt;code&gt;references&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="write-your-first-skill"&gt;Write Your First Skill
&lt;/h3&gt;&lt;p&gt;Let&amp;rsquo;s build one. I promise this is the shortest tutorial you&amp;rsquo;ll ever read. This skill replies with three &amp;ldquo;World&amp;quot;s when you say &amp;ldquo;Hello&amp;rdquo; three times. Create a &lt;code&gt;SKILL.md&lt;/code&gt; and write:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;hello-world&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;description&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;When the user says &amp;#34;Hello&amp;#34; three times (e.g. &amp;#34;Hello Hello Hello&amp;#34;), reply with &amp;#34;World&amp;#34; three times: &amp;#34;World World World&amp;#34;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Hello World&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;When the user&amp;#39;s message contains exactly three instances of &amp;#34;Hello&amp;#34;, reply with only:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;World World World&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;Nothing else. Just those three words.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then install it in your AI agent. How? Just ask your agent — it&amp;rsquo;ll tell you.&lt;/p&gt;
&lt;p&gt;Give it a try.&lt;/p&gt;
&lt;h2 id="skill-specifications"&gt;Skill Specifications
&lt;/h2&gt;&lt;h3 id="anti-misfire-mechanisms"&gt;Anti-Misfire Mechanisms
&lt;/h3&gt;&lt;p&gt;Whether a skill gets triggered is ultimately up to the LLM, which creates a real problem: skills get misfired, or fail to fire when you want them to. Each platform has its own mitigations.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Disable automatic triggering while allowing manual invocation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude / OpenClaw: &lt;code&gt;disable-model-invocation: true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Codex: &lt;code&gt;allow_implicit_invocation: false&lt;/code&gt; in &lt;code&gt;agents/openai.yaml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Disable a skill entirely:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Codex: &lt;code&gt;[[skills.config]] enabled = false&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;OpenClaw: &lt;code&gt;skills.entries.&amp;lt;skillKey&amp;gt;.enabled = false&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Skills are powerful because they&amp;rsquo;re flexible — and frustrating for the same reason. Sometimes they trigger when you don&amp;rsquo;t want them to; sometimes they don&amp;rsquo;t trigger when you do. I&amp;rsquo;ll cover patterns for dealing with this in later posts.&lt;/p&gt;
&lt;h3 id="types-of-skills"&gt;Types of Skills
&lt;/h3&gt;&lt;p&gt;As skill usage has grown, some useful distinctions have emerged.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Skills vs. Commands&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In Claude&amp;rsquo;s desktop app, you can trigger a skill by typing &lt;code&gt;/&lt;/code&gt; followed by the skill name. In OpenClaw, you opt a skill into slash-command behavior with &lt;code&gt;user-invocable: true&lt;/code&gt;. Think of command as a trigger method, not a separate category. When designing a skill, ask yourself: does this need to be invoked precisely (use a command), or can the LLM infer the right moment (let it decide)?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Workflow-style vs. App-style&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Workflow-style&lt;/strong&gt;: defines a process. A &lt;code&gt;SKILL.md&lt;/code&gt; alone is enough. If the flow is complex, move the detailed steps into &lt;code&gt;references&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App-style&lt;/strong&gt;: needs deterministic logic or external tools. Introduce &lt;code&gt;scripts&lt;/code&gt; only when necessary — more scripts isn&amp;rsquo;t better.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Skill types diagram" class="gallery-image" data-flex-basis="320px" data-flex-grow="133" height="1086" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-deacd49348914a49b1254b01f351ef0d.r2.dev/2026/05/agent-skill-handbook-01-getting-started/en/02.png" srcset="https://CodePlato3721.github.io/02_9913951991981159473_hu_ce56d308cb564460.png 800w, https://pub-deacd49348914a49b1254b01f351ef0d.r2.dev/2026/05/agent-skill-handbook-01-getting-started/en/02.png 1448w" width="1448"&gt;&lt;/p&gt;</description></item></channel></rss>