<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Mcp on Uncle Xiang&#39;s Notebook</title>
        <link>https://ttf248.life/en/tags/mcp/</link>
        <description>Recent content in Mcp on Uncle Xiang&#39;s Notebook</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Thu, 09 Apr 2026 15:45:31 +0800</lastBuildDate><atom:link href="https://ttf248.life/en/tags/mcp/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Skill is not a new prompt, it is the job manual for the agent.</title>
        <link>https://ttf248.life/en/p/skill-is-an-agent-handbook/</link>
        <pubDate>Thu, 02 Apr 2026 22:43:16 +0800</pubDate>
        
        <guid>https://ttf248.life/en/p/skill-is-an-agent-handbook/</guid>
        <description>&lt;p&gt;These past few days, while reading about AI programming, people were first discussing &lt;code&gt;MCP&lt;/code&gt;, and then immediately started talking about &lt;code&gt;Skill&lt;/code&gt;. Many people who see this term for the first time will instinctively treat it as another new protocol or another advanced prompt.&lt;/p&gt;
&lt;p&gt;My judgment is very straightforward: &lt;code&gt;Skill&lt;/code&gt; isn&amp;rsquo;t here to replace &lt;code&gt;MCP&lt;/code&gt;; rather, it&amp;rsquo;s more like providing an occupational manual for the agent. &lt;code&gt;MCP&lt;/code&gt; solves the problem of &amp;ldquo;enabling the agent to connect to the external world,&amp;rdquo; while &lt;code&gt;Skill&lt;/code&gt; solves the problem of &amp;ldquo;how to reliably get the job done after connecting.&amp;rdquo; These two are not a replacement relationship; they are more like one following the other.&lt;/p&gt;
&lt;p&gt;Simply put, &lt;code&gt;MCP&lt;/code&gt; gives the agent hands and feet, and &lt;code&gt;Skill&lt;/code&gt; tells the agent not to mess around.&lt;/p&gt;
&lt;h2 id=&#34;what-exactly-is-a-skill&#34;&gt;What exactly is a Skill?
&lt;/h2&gt;&lt;p&gt;If I were to explain it in the simplest terms, I would say this:
It&amp;rsquo;s like taking the expert knowledge from a seasoned employee&amp;rsquo;s head and organizing it into a reusable, triggerable, and actionable manual. That thing is a &lt;code&gt;Skill&lt;/code&gt;.
The official OpenAI documentation defines it very directly: A &lt;code&gt;Skill&lt;/code&gt; is a package of capabilities designed for specific tasks. It can contain instructions, reference materials, and optional scripts. The goal isn&amp;rsquo;t to make the model &amp;ldquo;smarter,&amp;rdquo; but rather to ensure that when performing a certain type of task, it outputs results consistently according to a fixed workflow.
What is it most like?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It&amp;rsquo;s not like a regular prompt because it&amp;rsquo;s not something you just say once and are done with.&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s not like an &lt;code&gt;MCP&lt;/code&gt; because it doesn&amp;rsquo;t handle connecting tools and data sources.&lt;/li&gt;
&lt;li&gt;And it&amp;rsquo;s not like the general rules in &lt;code&gt;AGENTS.md&lt;/code&gt; because it&amp;rsquo;s not a universal rule for the entire repository.
It is more like a specialized Standard Operating Procedure (SOP), or a trade manual.
For example:&lt;/li&gt;
&lt;li&gt;When handling GitHub PR comments, first identify which comments need attention, then ask the user which ones to handle, then modify the code, and finally provide feedback.&lt;/li&gt;
&lt;li&gt;When debugging a CI failure, first pull the GitHub Actions logs, then extract the failing segments, then propose a fix plan, and only execute after approval.&lt;/li&gt;
&lt;li&gt;When writing a blog post, first generate titles according to a fixed style, then supplement with facts, then add frontmatter, and finally publish it.
The common thread among these tasks is not that &amp;ldquo;the model doesn&amp;rsquo;t know how to answer,&amp;rdquo; but rather that &amp;ldquo;the model&amp;rsquo;s approach varies every time, making it easy for it to drift off course.&amp;rdquo; This is where the value of a &lt;code&gt;Skill&lt;/code&gt; comes into play.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-difference-between-skill-and-mcp&#34;&gt;The Difference Between Skill and MCP
&lt;/h2&gt;&lt;p&gt;This issue really needs to be viewed within a real workflow, otherwise, it&amp;rsquo;s easy to talk too theoretically.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;MCP&lt;/code&gt; is like the interface layer.
The official definition of &lt;code&gt;MCP&lt;/code&gt; is an open standard for connecting AI applications to external systems. Files, local databases, search engines, design mockups, third-party services—all of these can be connected via &lt;code&gt;MCP&lt;/code&gt;. Therefore, it solves the problem of &amp;ldquo;connecting things.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Skill&lt;/code&gt; is like the process layer.
The OpenAI &lt;code&gt;Agent Skills&lt;/code&gt; documentation makes it very clear that a &lt;code&gt;Skill&lt;/code&gt; is the writing format for reusable workflows. A &lt;code&gt;Skill&lt;/code&gt; must have at least an &lt;code&gt;SKILL.md&lt;/code&gt;, and can also include &lt;code&gt;scripts/&lt;/code&gt;, &lt;code&gt;references/&lt;/code&gt;, and &lt;code&gt;assets/&lt;/code&gt;. Codex first reads its &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;description&lt;/code&gt;; only when it determines that it needs to use it does it load the full description into the context. This is what the official documentation calls &lt;code&gt;progressive disclosure&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;So, the division of labor between the two is very clear:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MCP&lt;/code&gt;: Connects the capabilities (the &amp;ldquo;what&amp;rdquo;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Skill&lt;/code&gt;: Defines the order of operations (the &amp;ldquo;how&amp;rdquo;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To give a very intuitive example, something like converting Figma to code. If the agent cannot read the design mockup at all, then what you need first is an &lt;code&gt;MCP&lt;/code&gt;. But if it can already read the design mockup, but just writes things randomly—writing components today, cutting pages tomorrow, and forgetting visual checks the day after—then what you need to improve is the &lt;code&gt;Skill&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;how-to-develop-skills&#34;&gt;How to Develop Skills
&lt;/h2&gt;&lt;p&gt;This is actually not as heavy as you might think.
OpenAI officially recommends starting with the built-in &lt;code&gt;$skill-creator&lt;/code&gt;, which will help you build the basic structure, such as trigger conditions, scope, and whether a script is needed. By default, it prioritizes instruction-only, meaning don&amp;rsquo;t rush to write scripts; first, make sure your instructions are clear.
If writing manually, the minimum structure is very simple:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-text&#34;&gt;my-skill/
├── SKILL.md
├── scripts/
├── references/
└── assets/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of these, only &lt;code&gt;SKILL.md&lt;/code&gt; is truly essential. Furthermore, this file must have at least two pieces of metadata:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-yaml&#34;&gt;---
name: skill-name
description: Explain exactly when this skill should and should not trigger.
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I think the most crucial steps when developing a &lt;code&gt;Skill&lt;/code&gt; are the following.&lt;/p&gt;
&lt;h3 id=&#34;1-look-for-recurring-biases&#34;&gt;1. Look for &amp;ldquo;Recurring Biases&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;Not every task is worth turning into a &lt;code&gt;Skill&lt;/code&gt;.
If you only ask the agent to do something occasionally, a regular prompt is enough. The situations that are truly suitable for creating a &lt;code&gt;Skill&lt;/code&gt; are usually like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You have repeated the same thing many times.&lt;/li&gt;
&lt;li&gt;The agent has the capability, but the execution order always changes.&lt;/li&gt;
&lt;li&gt;The location where it makes mistakes is similar every time.
Simply put, it&amp;rsquo;s not an &amp;ldquo;ability gap,&amp;rdquo; but rather an &amp;ldquo;inconsistent process.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-write-the-description-as-a-trigger-condition-not-as-marketing-copy&#34;&gt;2. Write the &lt;code&gt;description&lt;/code&gt; as a trigger condition, not as marketing copy
&lt;/h3&gt;&lt;p&gt;This step is crucial.
The official documentation specifically emphasizes that whether Codex will implicitly call a &lt;code&gt;Skill&lt;/code&gt; heavily depends on the &lt;code&gt;description&lt;/code&gt;. So, don&amp;rsquo;t write things like &amp;ldquo;This is a very useful skill&amp;rdquo;; instead, write &amp;ldquo;When it should be used and when it should &lt;em&gt;not&lt;/em&gt; be used.&amp;rdquo;
For example, the description for the official &lt;code&gt;gh-fix-ci&lt;/code&gt; skill is very clear: Use this when the user asks you to debug or fix failed GitHub PR checks; the focus is on checking logs, summarizing the failure reasons, providing a remediation plan, and only implementing it after receiving explicit approval. Just by reading it, you know its boundaries.&lt;/p&gt;
&lt;h3 id=&#34;3-if-it-can-be-solved-with-instructions-dont-write-a-script-first&#34;&gt;3. If it can be solved with instructions, don&amp;rsquo;t write a script first
&lt;/h3&gt;&lt;p&gt;OpenAI&amp;rsquo;s documentation is also very practical: unless you explicitly need deterministic behavior or external tools, prioritize using instructions rather than scripting everything right away.
Why? Because the more scripts you have, the higher the maintenance cost becomes.
Many &lt;code&gt;Skills&lt;/code&gt; initially only require clearly explaining the steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What to do first&lt;/li&gt;
&lt;li&gt;What to do next&lt;/li&gt;
&lt;li&gt;What the output format should be&lt;/li&gt;
&lt;li&gt;In which situations to stop and ask the user
This can solve most of the problems.
Only when a step is particularly stable, mechanical, or highly suitable for automation should you move it down into &lt;code&gt;scripts/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-extract-data-templates-and-resources&#34;&gt;4. Extract Data, Templates, and Resources
&lt;/h3&gt;&lt;p&gt;As you write the &lt;code&gt;Skill&lt;/code&gt;, it&amp;rsquo;s easy for it to become one long block of descriptive text. This is when you need to break things out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SKILL.md&lt;/code&gt; is responsible for explaining rules and sequence.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;references/&lt;/code&gt; holds background documents and reference materials.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;assets/&lt;/code&gt; stores templates, icons, and examples.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/&lt;/code&gt; contains actions that can be executed reliably.
Doing this has two benefits. First, the main file won&amp;rsquo;t become increasingly bloated. Second, the model only loads details when necessary, which aligns with the concept of &lt;em&gt;progressive disclosure&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;5-local-use-first-cross-project-distribution-later&#34;&gt;5. Local Use First, Cross-Project Distribution Later
&lt;/h3&gt;&lt;p&gt;The official documentation explains this very clearly.
If you are only using it for your current repository, placing it in &lt;code&gt;.agents/skills/&lt;/code&gt; is sufficient. Codex scans the skills directory from locations such as the repository, user, and system.
However, if you find that this functionality can be used across more than one repository, or if you want to package and distribute multiple skills together, then don&amp;rsquo;t stop at just the &lt;code&gt;skill&lt;/code&gt; folder level; you should consider using &lt;code&gt;plugin&lt;/code&gt;. The official OpenAI documentation is also very clear: &lt;code&gt;Skill&lt;/code&gt; is the workflow itself, while &lt;code&gt;plugin&lt;/code&gt; is the unit that is better suited for installation and distribution.&lt;/p&gt;
&lt;h2 id=&#34;what-scenarios-are-suitable-for-skills&#34;&gt;What Scenarios are Suitable for Skills
&lt;/h2&gt;&lt;p&gt;Having more &lt;code&gt;Skills&lt;/code&gt; is not always better; they are best suited for the following types of tasks.&lt;/p&gt;
&lt;h3 id=&#34;high-frequency-repetitive-tasks&#34;&gt;High-Frequency Repetitive Tasks
&lt;/h3&gt;&lt;p&gt;Tasks you do every week, and the sequence is pretty much the same each time.
For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Handling PR review comments&lt;/li&gt;
&lt;li&gt;Writing a blog post and adding frontmatter&lt;/li&gt;
&lt;li&gt;Debugging CI failures&lt;/li&gt;
&lt;li&gt;Performing pre-release checks
What&amp;rsquo;s most daunting about these kinds of tasks isn&amp;rsquo;t that the model can&amp;rsquo;t do it, but having to explain it all over again every single time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tasks-with-fixed-procedures&#34;&gt;Tasks with Fixed Procedures
&lt;/h3&gt;&lt;p&gt;Some tasks naturally have a sequence.
For example, when troubleshooting an issue, you should first check the logs, then narrow down the scope, then propose a plan, and finally make changes. In this case, &lt;code&gt;Skill&lt;/code&gt; is particularly suitable because it can enforce the order, reducing reliance on the model&amp;rsquo;s ad-hoc performance.&lt;/p&gt;
&lt;h3 id=&#34;tasks-requiring-domain-context-binding&#34;&gt;Tasks Requiring Domain Context Binding
&lt;/h3&gt;&lt;p&gt;Some tasks do not have fixed steps and come with strong constraints.
For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Must only check official documentation&lt;/li&gt;
&lt;li&gt;Must output in a specific review format&lt;/li&gt;
&lt;li&gt;Must retain existing terminology within the team&lt;/li&gt;
&lt;li&gt;Must comply with the writing or development standards of a certain repository
If you rely on prompts alone every time, it&amp;rsquo;s easy to miss these details.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tasks-requiring-tools-and-processes-together&#34;&gt;Tasks Requiring Tools and Processes Together
&lt;/h3&gt;&lt;p&gt;This scenario is particularly typical.
It&amp;rsquo;s not just about &amp;ldquo;connecting to GitHub&amp;rdquo; and being done; after connecting, you still need to examine the logs in a certain way, deduce the problems, decide whether or not to modify anything, and finally how to provide feedback. In other words, external connections and internal processes must work together.
This is often when &lt;code&gt;MCP + Skill&lt;/code&gt; appear jointly.&lt;/p&gt;
&lt;h2 id=&#34;when-not-to-use-a-skill&#34;&gt;When Not to Use a Skill
&lt;/h2&gt;&lt;p&gt;It&amp;rsquo;s also important to be clear about this, otherwise it&amp;rsquo;s easy to want to make everything into a &lt;code&gt;Skill&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;one-off-casual-tasks&#34;&gt;One-off Casual Tasks
&lt;/h3&gt;&lt;p&gt;When a user asks a quick question, a standard prompt is often sufficient.&lt;/p&gt;
&lt;h3 id=&#34;you-just-want-to-connect-an-external-system&#34;&gt;You just want to &amp;ldquo;connect an external system&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;In that case, prioritize &lt;code&gt;MCP&lt;/code&gt;, not &lt;code&gt;Skill&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;you-want-to-constrain-the-long-term-behavior-of-the-entire-repository&#34;&gt;You want to constrain the long-term behavior of the entire repository
&lt;/h3&gt;&lt;p&gt;This is more like the job of &lt;code&gt;AGENTS.md&lt;/code&gt;, not a &lt;code&gt;Skill&lt;/code&gt;.
So, to summarize simply:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Missing connections, use &lt;code&gt;MCP&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Missing processes/workflows, use &lt;code&gt;Skill&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Missing global rules, use &lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;several-representative-examples&#34;&gt;Several Representative Examples
&lt;/h2&gt;&lt;p&gt;It&amp;rsquo;s better to look at a few real-world examples than to hear too many concepts.&lt;/p&gt;
&lt;h3 id=&#34;1-roll-dice-the-minimal-viable-entry-case&#34;&gt;1. &lt;code&gt;roll-dice&lt;/code&gt;: The Minimal Viable Entry Case
&lt;/h3&gt;&lt;p&gt;This example comes from the official OpenAI &lt;code&gt;Agent Skills&lt;/code&gt; documentation.
It is very small; there is almost only an &lt;code&gt;SKILL.md&lt;/code&gt; in the directory, which allows the agent to call PowerShell&amp;rsquo;s random number command when the user requests rolling dice.
Why is this example good?
Because it directly exposes the most core skeleton of a &lt;code&gt;Skill&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It has clear triggering conditions&lt;/li&gt;
&lt;li&gt;It has a clear execution method&lt;/li&gt;
&lt;li&gt;It has clear boundaries
It illustrates one thing: a &lt;code&gt;Skill&lt;/code&gt; doesn&amp;rsquo;t have to be large. As long as something happens repeatedly, and you don&amp;rsquo;t want the model to improvise wildly, you can create it as a &lt;code&gt;Skill&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-gh-address-comments-a-workflow-example-for-handling-github-comments&#34;&gt;2. &lt;code&gt;gh-address-comments&lt;/code&gt;: A Workflow Example for Handling GitHub Comments
&lt;/h3&gt;&lt;p&gt;This example comes from the official OpenAI &lt;a class=&#34;link&#34; href=&#34;https://github.com/openai/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;openai/skills&lt;/code&gt;&lt;/a&gt; repository.
Its goal is not to &amp;ldquo;connect to GitHub,&amp;rdquo; but rather to encapsulate the process of &amp;ldquo;handling comments on the current branch&amp;rsquo;s PR.&amp;rdquo; The steps in the official version are very typical:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, confirm if &lt;code&gt;gh&lt;/code&gt; is already authenticated.&lt;/li&gt;
&lt;li&gt;Then, fetch the comments and review threads for the current PR.&lt;/li&gt;
&lt;li&gt;Number and summarize these comments.&lt;/li&gt;
&lt;li&gt;Allow the user to explicitly select which ones need processing.&lt;/li&gt;
&lt;li&gt;Only then start the actual work.
This example particularly illustrates the value of a &lt;code&gt;Skill&lt;/code&gt;.
For many engineering tasks, the difficulty isn&amp;rsquo;t whether &amp;ldquo;the model knows what GitHub is,&amp;rdquo; but rather &amp;ldquo;whether it will process things in the correct order.&amp;rdquo; &lt;code&gt;gh-address-comments&lt;/code&gt; solves exactly this kind of sequencing problem.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-gh-fix-ci-troubleshooting-engineering-cases-with-failed-ci&#34;&gt;3. &lt;code&gt;gh-fix-ci&lt;/code&gt;: Troubleshooting Engineering Cases with Failed CI
&lt;/h3&gt;&lt;p&gt;This is also the official skill in the &lt;code&gt;openai/skills&lt;/code&gt; repository.
It addresses another very typical engineering task: a PR check has failed, should it be fixed, and how to fix it.
The workflow defined in this &lt;code&gt;Skill&lt;/code&gt; is also very representative:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, confirm the &lt;code&gt;gh&lt;/code&gt; login status.&lt;/li&gt;
&lt;li&gt;Find the current PR.&lt;/li&gt;
&lt;li&gt;Pull the failed checks and logs from GitHub Actions.&lt;/li&gt;
&lt;li&gt;Extract the failure snippets.&lt;/li&gt;
&lt;li&gt;Propose a fix plan first.&lt;/li&gt;
&lt;li&gt;Only act after getting approval.
This scenario cannot be reliably handled by a simple prompt like &amp;ldquo;Help me see why CI failed.&amp;rdquo; Because it involves permissions, logs, external tools, approval boundaries, and execution order—all of which need to be defined.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-private-repository-skills-solidifying-teams-own-methodologies&#34;&gt;4. Private Repository Skills: Solidifying Team&amp;rsquo;s Own Methodologies
&lt;/h3&gt;&lt;p&gt;Beyond the official examples, I think the greater value of &lt;code&gt;Skill&lt;/code&gt; lies within private repositories.
For instance, the &lt;code&gt;blog-writer&lt;/code&gt; in this blog repository is essentially a very typical repo-scoped skill. It doesn&amp;rsquo;t aim to &amp;ldquo;teach the model how to write Chinese,&amp;rdquo; but rather codifies the writing style, structure, fact-checking process, output path, and final storage format that have already been established within this specific repository into a workflow.
These kinds of &lt;code&gt;Skills&lt;/code&gt; often hold the most practical value. This is because they are not designed for everyone; instead, they specifically solve the problem: &amp;ldquo;In this repository, what kind of task keeps recurring, and where do we tend to go off track?&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;when-to-actually-use-a-skill&#34;&gt;When to Actually Use a Skill
&lt;/h2&gt;&lt;p&gt;So, let&amp;rsquo;s get back to the most practical question: when should you seriously implement a &lt;code&gt;Skill&lt;/code&gt;?
My answer is:
When you realize the problem is no longer &amp;ldquo;the model lacks capability,&amp;rdquo; but rather &amp;ldquo;its execution is inconsistent every time.&amp;rdquo;
At this point, continuously stacking prompts yields diminishing returns. If you add one sentence today and another tomorrow, eventually the prompt becomes like a rambling diary entry, and the model will still make mistakes.
Instead, organizing it into a &lt;code&gt;Skill&lt;/code&gt;—separating the trigger conditions, steps, boundaries, scripts, and necessary data—results in more stable and reusable outcomes.
The &lt;code&gt;MCP&lt;/code&gt; brings in the external world; the &lt;code&gt;Skill&lt;/code&gt; solidifies the internal methodology.
The former solves &amp;ldquo;if it can be done,&amp;rdquo; while the latter solves &amp;ldquo;how to do it reliably.&amp;rdquo;
This is my current understanding of a &lt;code&gt;Skill&lt;/code&gt;.
It&amp;rsquo;s not just a new prompt, nor is it a new protocol.
It&amp;rsquo;s more like an operational manual for the agent.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.openai.com/codex/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agent Skills - Codex | OpenAI Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.openai.com/blog/skills-agents-sdk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Using skills to accelerate OSS maintenance | OpenAI Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://modelcontextprotocol.io/docs/getting-started/intro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;What is the Model Context Protocol (MCP)? | Model Context Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/openai/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;openai/skills | GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/openai/skills/blob/main/skills/.curated/gh-address-comments/SKILL.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;gh-address-comments/SKILL.md | openai/skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/openai/skills/blob/main/skills/.curated/gh-fix-ci/SKILL.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;gh-fix-ci/SKILL.md | openai/skills&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;writing-notes&#34;&gt;Writing Notes
&lt;/h2&gt;&lt;h3 id=&#34;original-prompt&#34;&gt;Original Prompt
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;Prompt: AI Large Model Programming, first appeared MCP, then Skill. Using plain language, explain what Skill is, how to develop a Skill, what scenarios are suitable for Skill, and provide specific, representative examples from each source.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;writing-approach-summary&#34;&gt;Writing Approach Summary
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Instead of repeating a &amp;ldquo;concept overview of &lt;code&gt;MCP&lt;/code&gt; and &lt;code&gt;Skill&lt;/code&gt;,&amp;rdquo; the focus is placed on the role and boundaries of &lt;code&gt;Skill&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Abstract definitions are grounded in real workflows using common analogies like &amp;ldquo;trade manuals&amp;rdquo; or &amp;ldquo;specialized SOPs.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;The development section follows the actual structure of official documentation, retaining key points such as &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;progressive disclosure&lt;/code&gt;, and &lt;code&gt;instruction-only&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Case studies prioritize official sources, utilizing &lt;code&gt;roll-dice&lt;/code&gt; from the official documentation, along with &lt;code&gt;gh-address-comments&lt;/code&gt; and &lt;code&gt;gh-fix-ci&lt;/code&gt; from the &lt;code&gt;openai/skills&lt;/code&gt; repository.&lt;/li&gt;
&lt;li&gt;The conclusion re-clarifies the boundaries between &lt;code&gt;MCP&lt;/code&gt;, &lt;code&gt;Skill&lt;/code&gt;, and &lt;code&gt;AGENTS.md&lt;/code&gt; to prevent readers from remaining confused after reading.&lt;/li&gt;
&lt;/ul&gt;</description>
        </item>
        
    </channel>
</rss>
