<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Agent on AI2CORE - AI技術ブログ</title>
    <link>https://www.ai2core.com/tags/agent/</link>
    <description>Recent content in Agent on AI2CORE - AI技術ブログ</description>
    <generator>Hugo -- 0.146.4</generator>
    <language>ja</language>
    <lastBuildDate>Fri, 13 Feb 2026 10:20:00 +0900</lastBuildDate>
    <atom:link href="https://www.ai2core.com/tags/agent/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>【完全解剖】Claude Codeで「SKILLS」が発動する仕組み：裏側で何が起きているのか？</title>
      <link>https://www.ai2core.com/posts/2026-02-13-claude-skills-mechanism/</link>
      <pubDate>Fri, 13 Feb 2026 10:20:00 +0900</pubDate>
      <guid>https://www.ai2core.com/posts/2026-02-13-claude-skills-mechanism/</guid>
      <description>Claude Codeがツール（SKILLS）を認識し、実行するまでの内部プロセスを徹底解説。MCPの仕組みからカスタムスキルのデバッグまで。</description>
      <content:encoded><![CDATA[<h2 id="魔法の裏側を知りたくないですか">「魔法」の裏側を知りたくないですか？</h2>
<p>Claude Codeに「このファイルのバグを直して」と言うと、勝手にファイルを読み、修正し、保存してくれます。
また、「天気を教えて」と言えば、外部APIを叩いて答えてくれます。</p>
<p>まるで魔法のようですが、裏側では<strong>非常に論理的なプロセス</strong>が動いています。</p>
<p>本記事では、エンジニア向けに**「Claude CodeでSKILLS（スキル）が発動する仕組み」**を徹底的に解剖します。</p>
<p>ここを理解すれば、あなたはClaude Codeを「ただ使う人」から「自在に操る人（ツール開発者）」になれます。</p>
<h2 id="1-全体像発動までの4ステップ">1. 全体像：発動までの4ステップ</h2>
<p>Claude Codeがスキルを実行する時、内部では以下の4段階のプロセスが走っています。</p>
<ol>
<li><strong>ツール定義の読み込み (Tool Definition)</strong></li>
<li><strong>意図の検出 (Intent Detection)</strong></li>
<li><strong>引数の生成 (Argument Generation)</strong></li>
<li><strong>実行と結果のフィードバック (Execution &amp; Feedback)</strong></li>
</ol>
<p>それぞれ詳しく見ていきましょう。</p>
<h3 id="step-1-ツール定義の読み込み">Step 1. ツール定義の読み込み</h3>
<p>Claude Codeが起動する時、設定ファイルや <strong>MCP (Model Context Protocol)</strong> サーバーから、「自分は何ができるか」というリストを読み込みます。</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;name&#34;</span>: <span style="color:#e6db74">&#34;read_file&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;description&#34;</span>: <span style="color:#e6db74">&#34;指定されたパスのファイルを読み込む&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;parameters&#34;</span>: {
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;type&#34;</span>: <span style="color:#e6db74">&#34;object&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;properties&#34;</span>: {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;path&#34;</span>: {
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&#34;type&#34;</span>: <span style="color:#e6db74">&#34;string&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&#34;description&#34;</span>: <span style="color:#e6db74">&#34;読み込むファイルの絶対パスまたは相対パス&#34;</span>
</span></span><span style="display:flex;"><span>      }
</span></span><span style="display:flex;"><span>    },
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;required&#34;</span>: [<span style="color:#e6db74">&#34;path&#34;</span>]
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="step-2-意図の検出-intent-detection">Step 2. 意図の検出 (Intent Detection)</h3>
<p>ユーザーが「<code>src/main.py</code> の中身が見たい」と発言したとします。</p>
<p>Claudeの脳内（推論プロセス）では、以下のような思考が行われます。</p>
<blockquote>
<p>ユーザーはファイルの中身を知りたがっている。
私の持っている道具リストの中に、それを叶えるものはあるか？
&hellip;あった。<code>read_file</code> だ。
この道具を使おう。</p></blockquote>
<p>これが <strong>Function Calling（関数呼び出し）</strong> のトリガーです。</p>
<h3 id="step-3-引数の生成-argument-generation">Step 3. 引数の生成 (Argument Generation)</h3>
<p>道具を使うと決めたら、次は「どう使うか」を決めます。</p>
<p>定義書の <code>parameters</code> に従って、必要な情報を会話履歴から抽出します。</p>
<ul>
<li>ユーザーの発言: &ldquo;<code>src/main.py</code> の中身&hellip;&rdquo;</li>
<li>引数 <code>path</code>: <code>&quot;src/main.py&quot;</code></li>
</ul>
<p>Claudeは以下のような特殊なトークン（またはJSON）を出力します。</p>
<pre tabindex="0"><code>&lt;tool_use&gt;
  &lt;name&gt;read_file&lt;/name&gt;
  &lt;parameters&gt;
    {&#34;path&#34;: &#34;src/main.py&#34;}
  &lt;/parameters&gt;
&lt;/tool_use&gt;
</code></pre><h3 id="step-4-実行と結果のフィードバック">Step 4. 実行と結果のフィードバック</h3>
<p>ここが重要です。<strong>Claude自身がファイルを読むわけではありません。</strong></p>
<p>Claudeが出力した上記のJSONを、<strong>Claude Codeのランタイム（実行環境）</strong> が受け取ります。
そして、PythonやNode.jsで書かれた実際のプログラム（<code>open()</code> 関数など）が実行されます。</p>
<p>実行結果（ファイルの中身）は、再びテキストとしてClaudeに返されます。</p>
<pre tabindex="0"><code>&lt;tool_result&gt;
  import os
  print(&#34;Hello World&#34;)
&lt;/tool_result&gt;
</code></pre><p>これを見て初めて、Claudeは「ファイルの中身はこうなっていました」とユーザーに回答できるのです。</p>
<h2 id="2-mcp-model-context-protocol-とは">2. MCP (Model Context Protocol) とは？</h2>
<p>最近話題の <strong>MCP</strong> は、この「ツールの渡し方」を標準化した規格です。</p>
<p>これまで、Claudeに独自のツールを追加するには、複雑な設定が必要でした。
しかしMCPを使えば、<strong>「MCPサーバー」</strong> を立ち上げるだけで、Claude Codeが勝手にツールを認識してくれます。</p>
<h3 id="仕組み">仕組み</h3>
<ol>
<li><strong>MCPサーバー</strong>: ツール（関数）の実装を持つプロセス。</li>
<li><strong>MCPクライアント</strong>: Claude Code本体。</li>
</ol>
<p>クライアントとサーバーが通信し、「使えるツール一覧」と「実行リクエスト」をやり取りします。
これにより、ローカルのデータベース操作や、社内APIへのアクセスが安全かつ簡単に実装できるようになりました。</p>
<h2 id="まとめ">まとめ</h2>
<p>Claude Codeの「SKILLS」は、魔法ではありません。
<strong>「定義を読む」→「選ぶ」→「JSONを作る」→「実行結果を読む」</strong> という、非常に泥臭いテキスト処理のループです。</p>
<p>しかし、この仕組みを理解していれば、あなたはClaude Codeを
「ただの話し相手」から
<strong>「手足となって働く最強のパートナー」</strong> に進化させることができます。</p>
<p>ぜひ、自分だけのカスタムスキルを作ってみてください。</p>
]]></content:encoded>
      <category>Coding AI</category>
      <category>Claude Code</category>
      <category>MCP</category>
      <category>Agent</category>
      <category>Architecture</category>
    </item>
  </channel>
</rss>
