<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Skill on 向叔の手帳</title>
        <link>https://ttf248.life/ja/tags/skill/</link>
        <description>Recent content in Skill on 向叔の手帳</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Thu, 09 Apr 2026 15:45:31 +0800</lastBuildDate><atom:link href="https://ttf248.life/ja/tags/skill/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>AIがブログを書くという件、結局は工学的なものにする必要がある（1）</title>
        <link>https://ttf248.life/ja/p/why-blog-writer-had-to-exist/</link>
        <pubDate>Fri, 03 Apr 2026 20:58:02 +0800</pubDate>
        
        <guid>https://ttf248.life/ja/p/why-blog-writer-had-to-exist/</guid>
        <description>&lt;p&gt;昨年、多くの AI に関する記事を書きました。あの頃の最も手間のかかるプロセスは、まず自分でアウトラインや問題リストを整理し、大規模言語モデルに本文を出力させてもらい、その後その内容をローカルの &lt;code&gt;md&lt;/code&gt; ドキュメントにコピー＆ペーストし、フロントマター、タグ、カテゴリ、タイトルなどを補完してから公開するというものでした。
このプロセスが使えないわけではありませんが、非常に面倒です。本当に時間がかかるのは本文ではなく、本文の外側の繰り返しの作業です。特に最近 &lt;code&gt;Codex&lt;/code&gt; を使いすぎてからは、その不自然さがより強く感じられます。それはリポジトリを読み込めるし、ファイルを編集でき、資料を補完できるだけでなく、記事を直接ディレクトリに書き込むこともできます。もし私がまだ手動でコピー＆ペーストを繰り返していると、まるで人間がツールの足を縛っているような気分になります。&lt;/p&gt;
&lt;p&gt;この一連の記事は、実は一つのことを伝えたいのです。AI によるブログ執筆は、単なるプロンプト一つに頼るだけでは限界が来ています。今回の記事ではまず &lt;code&gt;blog-writer&lt;/code&gt; がなぜ生まれてきたのかを説明します。次の記事では &lt;a class=&#34;link&#34; href=&#34;https://ttf248.life/ja/p/how-blog-style-suite-split-style-and-token-cost/&#34; &gt;AIによるブログ執筆という事柄は、結局エンジニアリングとしてやる必要がある（2）：blog-style-suite でスタイル学習とトークンコストをどう分離するか&lt;/a&gt; を続けます。そして最終回は &lt;a class=&#34;link&#34; href=&#34;https://ttf248.life/ja/p/how-i-split-local-online-and-minimax-models/&#34; &gt;AIによるブログ執筆という事柄は、結局エンジニアリングとしてやる必要がある（3）：ローカルモデル、オンラインモデル、Minimax は最後にどう分業するか&lt;/a&gt; で締めくくります。&lt;/p&gt;
&lt;h2 id=&#34;本当に面倒なのは原稿を書くことではなくあの一連の機械的な動作だ&#34;&gt;本当に面倒なのは、原稿を書くことではなく、あの一連の機械的な動作だ
&lt;/h2&gt;&lt;p&gt;初期のワークフローは、端的に言えば外部委託されたパイプラインのようだった。
私自身がまず問題を明確にするか、あるいは大まかなアウトラインを立てる。モデルが本文を骨子として展開する。その後、人間が戻ってきて残りの公開作業を補完する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ローカルの &lt;code&gt;md&lt;/code&gt; にコピーする&lt;/li&gt;
&lt;li&gt;&lt;code&gt;title&lt;/code&gt;、&lt;code&gt;date&lt;/code&gt;、&lt;code&gt;slug&lt;/code&gt; を補完する&lt;/li&gt;
&lt;li&gt;タグとカテゴリを入力する&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;!--more--&amp;gt;&lt;/code&gt; を補完する&lt;/li&gt;
&lt;li&gt;参考資料を整理する&lt;/li&gt;
&lt;li&gt;どのディレクトリに配置するかを決定する
この一連の作業は、一つ一つのステップを見れば難しくはないが、繋げると非常に面倒だ。面倒なのは技術的な難しさではなく、それらがすべて機械的であるにもかかわらず、やらざるを得ない点にある。
だからこそ、私は後になって、「[コマンドラインベースのAIコーディングインタラクション](/ja/p/command-line-ai-coding-interaction/）」のような変化は、単に「入り口が変わった」だけではないと感じるようになった。AIがリポジトリ内で直接ファイルの読み書きができるようになった今、ブログ執筆がまだ「本文をローカルドキュメントにコピーする」レベルに留まっているとしたら、ワークフロー全体がすでに時代遅れになっているのだ。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;blog-writer-最初の価値は文体ではなく契約を固定化すること&#34;&gt;blog-writer 最初の価値は文体ではなく、契約を固定化すること
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;blog-writer&lt;/code&gt; の最も初期のノードは、2026年4月1日17:00の &lt;code&gt;991536a&lt;/code&gt; です。gitコミット履歴を見ると、このバージョンではすでに &lt;code&gt;SKILL.md&lt;/code&gt;、&lt;code&gt;write_post.py&lt;/code&gt;、そして一連の初期のスタイル資料が組み込まれています。&lt;/p&gt;
&lt;p&gt;しかし、後から振り返ってみると、このドラフトの最も価値のある点は「AI が私の文体を学んだ」ことではなく、&lt;strong&gt;執筆の契約を固定化した&lt;/strong&gt;ことです。&lt;/p&gt;
&lt;p&gt;「契約を固定化する」とはどういうことか？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入力には最低限、アウトラインとファクトアンカー（事実の錨点）が必要であること&lt;/li&gt;
&lt;li&gt;出力は必ず完全なMarkdown形式であり、未完成品であってはならないこと&lt;/li&gt;
&lt;li&gt;frontmatter は人手に頼ることはできないこと&lt;/li&gt;
&lt;li&gt;記事はチャットウィンドウ内に留まるのではなく、直接 &lt;code&gt;content/post&lt;/code&gt; に配置されること&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この点は非常に重要です。なぜなら、プロンプト自体が不安定だからです。「以前のように書いて」と今日言っても、それはトーンが少し似ていると解釈されるかもしれません。明日もう一度同じことを言っても、表面的な構文しか学べないかもしれません。しかし、それが &lt;code&gt;Skill&lt;/code&gt; として書かれると、ルールは「その場での即興」から「固定された工程」へと変わります。&lt;/p&gt;
&lt;p&gt;後続のいくつかのノードも、実質的にこの契約を補強し続けています。&lt;/p&gt;
&lt;p&gt;2026年4月2日22:54の &lt;code&gt;8eb735a&lt;/code&gt; では、著者フィールド、執筆に関する注記、元のプロンプトなどが固定されました。この段階に至ると、ブログ記事の完成は単に「本文が書き終われば完了」ではなくなり、メタ情報、トレーサビリティ（追跡可能性）、公開される注記までが標準化されたのです。&lt;/p&gt;
&lt;p&gt;したがって、&lt;code&gt;blog-writer&lt;/code&gt; の最初の価値は、モデルをより文章を書くのが上手に見せかけることではなく、&lt;strong&gt;執筆という行為自体に、再現可能な境界線を持たせたこと&lt;/strong&gt;なのです。&lt;/p&gt;
&lt;h2 id=&#34;シリーズ形式は実は執筆の契約をさらに一歩進めたもの&#34;&gt;シリーズ形式は、実は執筆の契約をさらに一歩進めたもの
&lt;/h2&gt;&lt;p&gt;単発の記事で安定して書けるようになると、次の問題がすぐに浮上します。
あるテーマは、そもそも一つの記事に詰め込むのが適していません。無理に詰め込もうとすると、結局は情報量が多すぎてメインの筋が散漫になり、どの点も深く掘り下げきれない長文になってしまいがちです。
これが、2026年4月2日 23:55 の &lt;code&gt;1a5604e&lt;/code&gt; が重要だった理由です。あの時、シリーズ形式と &lt;code&gt;write_post_series.py&lt;/code&gt; をまとめて追加しました。記事間は &lt;code&gt;relref&lt;/code&gt; で繋ぎ、一括書き込みの際に統一的に置換するようにしたのです。
これは単なるファイル生成スクリプトの小さなアップグレードに見えますが、実際はそうではありません。
それは一つのことを示しています。執筆の工程化は、「この一篇をどう生成するか」だけを考える段階から、「この一連のコンテンツをどう安定して配置し、順序をどう保証し、サイト内で相互にリンクさせるか」という視点に移ってきたということです。
翌日の2026年4月3日 09:29 の &lt;code&gt;04dccb9&lt;/code&gt; は、この件をさらに一歩進めました。シリーズ記事のタイムスタンプが分単位で増加し、もはや共通の時間を使用しないようにしたのです。この変更は非常に小さいものですが、エンジニアリング的な深みがあります。なぜなら、Hugoのリストページ、前後の記事リンク、シリーズの順序といった「実際の問題」を解決しているからです。
端的に言えば、シリーズ形式というのは、格好良く見せるためではなく、「複数の記事をまとめて公開する」という作業が、もはや手動でのフォローアップに頼らなくて済むようにするためなのです。&lt;/p&gt;
&lt;h2 id=&#34;しかし単一のスキルだけでは後でトークン制限にぶつかることになる&#34;&gt;しかし、単一のスキルだけでは、後でトークン制限にぶつかることになる
&lt;/h2&gt;&lt;p&gt;問題はここにあります。
文体学習を真剣に行い始めると、&lt;code&gt;blog-writer&lt;/code&gt; のコンテキストがすぐに肥大化します。ただ書くだけでなく、以前あなたのように書くことも期待するわけです。最も自然な方法は、過去の記事も一気に詰め込むことです。
これなら、一度だけは実行できます。
しかし、たまに記事を書くだけではなく、長期的なワークフローにしたいと思うと、すぐに問題が発生します：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;トークン消費量が高い&lt;/li&gt;
&lt;li&gt;毎回同じ古い記事を繰り返し与えることになる&lt;/li&gt;
&lt;li&gt;モデルの注意力が古い材料によって希釈される&lt;/li&gt;
&lt;li&gt;原稿執筆とスタイル維持が絡み合い、どちらも容易ではない
ここから、私は&lt;code&gt;blog-writer&lt;/code&gt;は、すべてを任せる側（生成側）というよりは、消費する側として使う方が適していることに気づき始めました。
原稿執筆という動作は、できるだけ軽く、直接的に、そしてできれば公開されたバージョンのみを参照するようにすべきです。一方、スタイルデータの生成方法、選別方法、圧縮方法は、別の生産側のパイプラインの問題なのです。この判断が、私を次のステップへと導き、それが&lt;a class=&#34;link&#34; href=&#34;https://ttf248.life/ja/p/how-blog-style-suite-split-style-and-token-cost/&#34; &gt;AIでブログを書くという件は、結局エンジニアリングにする必要がある（2）：blog-style-suiteでスタイル学習とトークンコストをどう分離するか&lt;/a&gt;へと繋がりました。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;まずプロセスを安定させてからスタイルやモデルについて語る資格が生まれる&#34;&gt;まずプロセスを安定させてから、スタイルやモデルについて語る資格が生まれる
&lt;/h2&gt;&lt;p&gt;今振り返ると、&lt;code&gt;blog-writer&lt;/code&gt; が生まれたのは、私が突然ブログライティングアシスタントを作りたいと思ったからではない。
むしろ、これまでのワークフロー自体が、新しい働き方に合わなくなってきたことが原因だ。
&lt;code&gt;Codex&lt;/code&gt; のようなツールがインターネットに接続して資料を補完できたり、リポジトリ内での読み書きができたり、スクリプトを直接呼び出せるようになった場合、「ブログを書く」という行為は「本文をローカルドキュメントにコピーする」という段階で止まっているべきではない。この部分を自動化しなければ、かえって全体のプロセスの中で最も非効率な工程になってしまう。
そのため、最初の記事の結論はここまでとする。
&lt;code&gt;blog-writer&lt;/code&gt; が最初に解決したのは、文体ではなく、公開作業における反復的な手作業だった。このレイヤー（層）という契約がなければ、後からトークンやデータ構造、ローカルモデルについて語っても、実際には根拠がない。&lt;/p&gt;
&lt;h2 id=&#34;参考資料&#34;&gt;参考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;リポジトリコミット：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ttf248/notebook/commit/991536a237d04aba7c44dec501b3d98c644040c8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;991536a237d04aba7c44dec501b3d98c644040c8&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;リポジトリコミット：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ttf248/notebook/commit/8eb735aa8448c97deb2af1ea46b86772008fa9e3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;8eb735aa8448c97deb2af1ea46b86772008fa9e3&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;リポジトリコミット：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ttf248/notebook/commit/1a5604e7e6ce0a13f260fcbb8c2c1d964cdd0892&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;1a5604e7e6ce0a13f260fcbb8c2c1d964cdd0892&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;リポジトリコミット：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ttf248/notebook/commit/04dccb98c55a6ea3b81408012b33a6219cf8ab77&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;04dccb98c55a6ea3b81408012b33a6219cf8ab77&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;リポジトリファイル：&lt;code&gt;.agents/skills/blog-writer/SKILL.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;リポジトリファイル：&lt;code&gt;.agents/skills/blog-writer/scripts/write_post.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;リポジトリファイル：&lt;code&gt;.agents/skills/blog-writer/scripts/write_post_series.py&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;作成上の注記&#34;&gt;作成上の注記
&lt;/h2&gt;&lt;h3 id=&#34;元のプロンプト&#34;&gt;元のプロンプト
&lt;/h3&gt;&lt;pre&gt;&lt;code class=&#34;language-text&#34;&gt;$blog-writer 今回の内容は多いため、シリーズ記事に分割しました。昨年も多くの原稿が大規模言語モデルによって書かれました。その時は、自分でアウトラインや質問リストを作成し、AIに原稿を生成させ、内容をローカルのmdドキュメントにコピーし、ヘッダー情報、タグ情報などを記入して投稿するという流れでした。最近はCodexを多く使用し、Codexのインターネット検索能力が非常に強力だと気づきました。そこで、これらの作業を自動化するスキルを作成できないかと考えたのが、skill blog-writer の初稿です。さらに、AIに以前の記事のスタイルを学習させたいと考えたため、blog-writerの実行時にトークンを大量に消費するという問題が発生しました。その後、私はblog-writerに対して複数のバージョンの最適化を行いました。データモジュールとデータ生成モジュールに分割したのですが、元々のデータ生成モジュールは独立したスキルでした。書き進めるうちに、Pythonプロジェクトとしてまとめた方がより適していることに気づき、それが blog-style-suite の誕生につながりました。さらに、スタイルデータの学習もトークンを消費することが多いと感じたため、ローカルの大規模言語モデルを使用することにしました。ローカルの大規模言語モデルとオンライン版の違いを比較したいと考え、minimaxとも連携させました。blog-style-suite と blog-writer の進化の歴史は、gitのコミット履歴から分析できます。ついでに、ローカルの blog-writer および blog-style-suite のコードを基にして、設計思想や、どのようにトークン節約を実現したか、データ構造はどう設計したか、といった核となる設計思想について説明することができます。トークンが潤沢であれば過去の記事を丸ごと処理できますし、前処理を行うことで多くのトークンを節約できます。
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;ライティングのアイデア概要&#34;&gt;ライティングのアイデア概要
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;最初の記事はワークフローのトリガーポイントに焦点を当て、トークンとモデルの役割分担を急ぎすぎず、3つの記事でメインテーマを奪い合うのを避ける。&lt;/li&gt;
&lt;li&gt;「本文自体は難しくないが、公開前後の一連の機械的な作業が面倒である」という判断を重点的に残した。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;991536a&lt;/code&gt;、&lt;code&gt;8eb735a&lt;/code&gt;、&lt;code&gt;1a5604e&lt;/code&gt;、&lt;code&gt;04dccb9&lt;/code&gt; などのノードを通じて、「プロセスを契約化する」ことを実際のGitの進化に落とし込む。&lt;/li&gt;
&lt;li&gt;シリーズ形式はこの記事で取り上げることで、ブログ執筆が単発の記事生成から一連の成果物（セット）へと移行したことを示すためである。&lt;/li&gt;
&lt;li&gt;最後に意図的に問題をトークンウォールに引きつけ、次の記事でのデータエンジニアリングと前処理のための布石とする。&lt;/li&gt;
&lt;/ul&gt;</description>
        </item>
        <item>
        <title>Skill は新しいプロンプトではなく、エージェントに職種マニュアルを提供するものです。</title>
        <link>https://ttf248.life/ja/p/skill-is-an-agent-handbook/</link>
        <pubDate>Thu, 02 Apr 2026 22:43:16 +0800</pubDate>
        
        <guid>https://ttf248.life/ja/p/skill-is-an-agent-handbook/</guid>
        <description>&lt;p&gt;この数日、AIプログラミングについて見てきましたが、さっきまでみんなが&lt;code&gt;MCP&lt;/code&gt;の話をしていて、次の瞬間にはまた&lt;code&gt;Skill&lt;/code&gt;の話をしています。この言葉を初めて目にする人は、本能的にこれをまた新しいプロトコルか、あるいは高度なプロンプトだと捉えがちです。&lt;/p&gt;
&lt;p&gt;私の判断は非常にシンプルで、&lt;code&gt;Skill&lt;/code&gt;は&lt;code&gt;MCP&lt;/code&gt;の座を奪いに来たものではなく、むしろエージェントに職種マニュアルのようなものを提供している感じです。&lt;code&gt;MCP&lt;/code&gt;が解決するのは「エージェントが外部世界と接続できるか」という点であり、&lt;code&gt;Skill&lt;/code&gt;が解決するのは「接続した後、どのような手順で確実にタスクを遂行するか」という点です。これらは代替関係ではなく、むしろ前後関係に近いです。&lt;/p&gt;
&lt;p&gt;端的に言えば、&lt;code&gt;MCP&lt;/code&gt;はエージェントに手足を与え、&lt;code&gt;Skill&lt;/code&gt;はエージェントが勝手に動かないようにするためのものです。&lt;/p&gt;
&lt;h2 id=&#34;skill-とは一体何なのか&#34;&gt;Skill とは一体何なのか
&lt;/h2&gt;&lt;p&gt;最も分かりやすい言葉で説明するなら、こう言います。
ベテラン社員の頭の中にある熟練したやり方を、再利用可能で、トリガーでき、実際に実行できるマニュアルとしてまとめたものが &lt;code&gt;Skill&lt;/code&gt; です。&lt;/p&gt;
&lt;p&gt;OpenAI の公式ドキュメントの定義も非常に直接的です。&lt;code&gt;Skill&lt;/code&gt; は特定のタスクに向けた能力パッケージの一種であり、指示（プロンプト）、参考資料、そしてオプションのスクリプトを格納できます。目的はモデルを「より賢くする」ことではなく、ある種のタスクにおいて固定されたワークフローに従って安定的に出力をさせることです。&lt;/p&gt;
&lt;p&gt;何に最も近いか？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通常のプロンプトとは異なり、一度話して終わりではないからです。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MCP&lt;/code&gt; とも異なります。なぜなら、ツールやデータソースを接続する責任を持たないからです。&lt;/li&gt;
&lt;li&gt;また、&lt;code&gt;AGENTS.md&lt;/code&gt; のようなものでもないからです。全リポジトリで通用するルールではないからです。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;むしろ、専門の SOP（標準作業手順書）や、職種マニュアルのようなものです。&lt;/p&gt;
&lt;p&gt;例えば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub PR のコメントを処理する場合：まずどのコメントを処理すべきかを確認し、次にユーザーにどのコメントを処理するか尋ね、コードを修正し、最後に結果をフィードバックする。&lt;/li&gt;
&lt;li&gt;CI の失敗を調査する場合：まず GitHub Actions のログを取得し、次に失敗した部分を抽出して要約し、修復計画を立て、承認されてから作業に取り掛かる。&lt;/li&gt;
&lt;li&gt;ブログ記事を書く場合：まず固定の文体でタイトルを生成し、次に事実情報を補完し、さらにフロントマター（メタデータ）を追加し、最後に公開する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらの事柄に共通しているのは、「モデルがどう回答すべきか知らない」ということではなく、「モデルのやり方が毎回異なり、逸脱しやすい」という点です。ここで &lt;code&gt;Skill&lt;/code&gt; の価値が出てくるのです。&lt;/p&gt;
&lt;h2 id=&#34;skill-と-mcp結局どこが違うのか&#34;&gt;Skill と MCP、結局どこが違うのか
&lt;/h2&gt;&lt;p&gt;これは実際のワークフローに当てはめて見ないと分かりにくいので、単なる説明だけでは誤解を招きやすいです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;MCP&lt;/code&gt; はインターフェース層のようなものです。&lt;/p&gt;
&lt;p&gt;公式における &lt;code&gt;MCP&lt;/code&gt; の定義は、「AI アプリケーションを外部システムに接続するためのオープンスタンダード」です。ファイル、ローカルデータベース、検索エンジン、デザイン稿、サードパーティサービスなど、これらすべてを &lt;code&gt;MCP&lt;/code&gt; を通じて取り込むことができます。つまり、これが解決しているのは「&lt;strong&gt;取り込み（コネクション）&lt;/strong&gt;」の部分です。&lt;/p&gt;
&lt;p&gt;一方、&lt;code&gt;Skill&lt;/code&gt; はプロセス層のようなものです。&lt;/p&gt;
&lt;p&gt;OpenAI の &lt;code&gt;Agent Skills&lt;/code&gt; ドキュメントには明確に書かれていますが、&lt;code&gt;Skill&lt;/code&gt; は再利用可能なワークフローを記述するためのフォーマットです。一つの &lt;code&gt;Skill&lt;/code&gt; には最低限 &lt;code&gt;SKILL.md&lt;/code&gt; が必要で、さらに &lt;code&gt;scripts/&lt;/code&gt;、&lt;code&gt;references/&lt;/code&gt;、&lt;code&gt;assets/&lt;/code&gt; を含めることができます。Codex はまずその &lt;code&gt;name&lt;/code&gt; と &lt;code&gt;description&lt;/code&gt; を読み込み、実際に使用する必要があると判断した場合にのみ、完全な説明をコンテキストにロードします。これが公式が言う「&lt;strong&gt;プログレッシブ・ディスクロージャー（段階的開示）&lt;/strong&gt;」です。&lt;/p&gt;
&lt;p&gt;したがって、両者の役割分担は非常に明確です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MCP&lt;/code&gt;: 能力を取り込む（コネクションする）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Skill&lt;/code&gt;: 行う手順の順序を定める&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;非常に分かりやすい例で言うと、「Figma からコードへの変換」のような作業です。もしエージェントがデザイン稿自体を読み取れていない場合、まず補うべきなのは &lt;code&gt;MCP&lt;/code&gt; です。しかし、すでにデザイン稿を読み取れるようになったのに、毎回バラバラにコーディングしてしまう（今日はコンポーネントから書き始め、明日はページ分割から始め、明後日にはビジュアルチェックを忘れる）という状況であれば、補うべきは &lt;code&gt;Skill&lt;/code&gt; なのです。&lt;/p&gt;
&lt;h2 id=&#34;スキルの開発方法&#34;&gt;スキルの開発方法
&lt;/h2&gt;&lt;p&gt;これは思ったほど重くありません。
OpenAIの公式推奨では、まず組み込みの&lt;code&gt;$skill-creator&lt;/code&gt;を使用し、トリガー条件、範囲、スクリプトが必要かどうかといった骨格部分を構築してもらうことです。デフォルトではinstruction-only（指示のみ）が優先されるため、焦ってスクリプトを書くのではなく、まずは説明を明確にすることが重要です。
手動で記述する場合でも、最小限の構造は非常にシンプルです：&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;この中で真に必要なのは&lt;code&gt;SKILL.md&lt;/code&gt;だけです。そして、このファイルには最低限2つのメタデータが必要です：&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;私が考えるに、&lt;code&gt;Skill&lt;/code&gt;を開発する上で最も重要なのは以下のステップです。&lt;/p&gt;
&lt;h3 id=&#34;1-繰り返し現れるバイアスを探す&#34;&gt;1. 「繰り返し現れるバイアス」を探す
&lt;/h3&gt;&lt;p&gt;すべてのタスクが &lt;code&gt;Skill&lt;/code&gt; にする価値があるわけではありません。
エージェントに単発で作業をさせるだけであれば、通常のプロンプトで十分です。真に &lt;code&gt;Skill&lt;/code&gt; として抽出するのに適しているのは、通常以下のようなケースです：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同じことを何度も繰り返して指示している場合&lt;/li&gt;
&lt;li&gt;エージェントには能力があるはずなのに、実行順序がいつも変わってしまう場合&lt;/li&gt;
&lt;li&gt;間違いが発生する箇所が毎回似ている場合
つまり、「能力不足」なのではなく、「手順（ノウハウ）が安定していない」ということです。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-description-をトリガー条件として記述し宣伝文句にしないこと&#34;&gt;2. &lt;code&gt;description&lt;/code&gt; をトリガー条件として記述し、宣伝文句にしないこと
&lt;/h3&gt;&lt;p&gt;このステップは非常に重要です。
公式ドキュメントでは、Codex がどの &lt;code&gt;Skill&lt;/code&gt; を暗黙的に呼び出すかについて、&lt;code&gt;description&lt;/code&gt; に大きく依存すると強調しています。「これはとても便利なスキルだ」といった表現ではなく、「いつ使うべきか、いつ使ってはいけないか」を記述してください。
例えば、&lt;code&gt;gh-fix-ci&lt;/code&gt; の公式スキルの説明は非常に明確です：「ユーザーが GitHub PR チェックの失敗をデバッグまたは修正してほしい場合に使用する」というものです。重要なのは、ログを確認し、失敗の原因を要約し、修正計画を提示することであり、そして明示的な承認を得てから実行することです。これを見るだけで、その境界線がどこにあるかがわかります。&lt;/p&gt;
&lt;h3 id=&#34;3-説明で対応できるならまずスクリプト化しない&#34;&gt;3. 説明で対応できるなら、まずスクリプト化しない
&lt;/h3&gt;&lt;p&gt;OpenAIのドキュメントでも非常に実用的なアドバイスをしています。明確な決定論的動作や外部ツールが必要でない限りは、いきなりスクリプトにするのではなく、まずは説明（プロンプト）を使うべきです。
なぜか？スクリプトが増えれば増えるほど、メンテナンスコストが上がってくるからです。
多くの&lt;code&gt;Skill&lt;/code&gt;は、最初は単に手順を明確に説明するだけで十分です：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;何から始めるか&lt;/li&gt;
&lt;li&gt;次に何をするか&lt;/li&gt;
&lt;li&gt;出力形式はどうするか&lt;/li&gt;
&lt;li&gt;どのような状況でユーザーに確認を求めるべきか
これだけでも大半の問題は解決します。
あるステップが非常に安定していて、非常に機械的で、自動化に適している場合にのみ、&lt;code&gt;scripts/&lt;/code&gt;に落とし込むようにしましょう。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-資料テンプレートリソースを分離する&#34;&gt;4. 資料、テンプレート、リソースを分離する
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Skill&lt;/code&gt; は書き進めるうちに、非常に長い説明文になりがちです。そんな時は分割すべきです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SKILL.md&lt;/code&gt; はルールと手順を担当する&lt;/li&gt;
&lt;li&gt;&lt;code&gt;references/&lt;/code&gt; には背景ドキュメントや参照資料を置く&lt;/li&gt;
&lt;li&gt;&lt;code&gt;assets/&lt;/code&gt; にはテンプレート、アイコン、サンプルを置く&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/&lt;/code&gt; には安定して実行できるアクションを置く
このようにすることで、2つの利点があります。
第一に、メインファイルが肥大化しすぎるのを防げます。第二に、モデルが必要なときだけ詳細を読み込む形になり、「プログレッシブ・ディスクロージャー（段階的開示）」という考え方に沿えます。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;5-ローカルで先に使いプロジェクトをまたいで配布する&#34;&gt;5. ローカルで先に使い、プロジェクトをまたいで配布する
&lt;/h3&gt;&lt;p&gt;公式ドキュメントでもこの点は明確に分けられています。
もしご自身の現在のリポジトリでのみ使用するのであれば、&lt;code&gt;.agents/skills/&lt;/code&gt; に配置するだけで十分です。Codex はリポジトリ、ユーザー、システムなどの場所からスキルディレクトリをスキャンします。
しかし、この仕組みが単一のリポジトリだけでなく複数の場所で使えることに気づいた場合や、複数のスキルをまとめてパッケージ化して配布したい場合は、skill folderの層に留まらず、&lt;code&gt;plugin&lt;/code&gt; を検討すべきです。OpenAI公式ドキュメントの記述も非常に明確で、&lt;code&gt;Skill&lt;/code&gt; はワークフローそのものであり、真にインストールおよび配布に適した単位は &lt;code&gt;plugin&lt;/code&gt; です。&lt;/p&gt;
&lt;h2 id=&#34;スキルが適しているシナリオ&#34;&gt;スキルが適しているシナリオ
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Skill&lt;/code&gt; は多ければ良いというものではなく、以下の種類のタスクに最も適しています。&lt;/p&gt;
&lt;h3 id=&#34;高頻度で繰り返すタスク&#34;&gt;高頻度で繰り返すタスク
&lt;/h3&gt;&lt;p&gt;毎週行う、そして毎回手順がほぼ同じもの。
例えば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PRレビューコメントの処理&lt;/li&gt;
&lt;li&gt;ブログ記事の執筆とフロントマターの追記&lt;/li&gt;
&lt;li&gt;CI失敗の調査&lt;/li&gt;
&lt;li&gt;リリース前のチェック
このような作業は、モデルができないことよりも、毎回説明し直さなければならないことが一番面倒です。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;固定フローのタスク&#34;&gt;固定フローのタスク
&lt;/h3&gt;&lt;p&gt;ある事柄には、生まれながらにして順序があるものがあります。
例えば問題の調査をする場合、まずログを確認し、次に範囲を絞り込み、それから計画を立て、そして修正するという流れになります。このような場面では、&lt;code&gt;Skill&lt;/code&gt; が特に適しています。なぜなら、順番を固定できるため、モデルがその場しのぎで対応するのを減らせるからです。&lt;/p&gt;
&lt;h3 id=&#34;専門的な文脈に紐づける必要があるタスク&#34;&gt;専門的な文脈に紐づける必要があるタスク
&lt;/h3&gt;&lt;p&gt;手順が固定されているだけでなく、強い制約を伴うタスクもあります。
例えば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;公式ドキュメントのみを参照すること&lt;/li&gt;
&lt;li&gt;特定のレビュー形式で出力しなければならないこと&lt;/li&gt;
&lt;li&gt;チーム内の既存の用語を保持しなければならないこと&lt;/li&gt;
&lt;li&gt;特定のリポジトリの記述または開発規約を遵守しなければならないこと
このような作業は、毎回プロンプトに頼って一時的に指示を出すだけでは、漏れが生じやすいです。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ツールとプロセスを併用するタスク&#34;&gt;ツールとプロセスを併用するタスク
&lt;/h3&gt;&lt;p&gt;このシナリオは特に典型的なものです。
単に「GitHubに接続する」だけで終わるのではなく、接続した後も、何らかの方法でログを確認し、問題を分類し、修正が必要かどうかを判断し、最後にどのようにフィードバックするかという一連の作業が必要です。つまり、外部接続と内部プロセスが組み合わさって機能しなければなりません。
このような場合、しばしば &lt;code&gt;MCP + Skill&lt;/code&gt; が組み合わさって登場します。&lt;/p&gt;
&lt;h2 id=&#34;スキルとして実装する必要がないシナリオ&#34;&gt;スキルとして実装する必要がないシナリオ
&lt;/h2&gt;&lt;p&gt;逆に、どこまでを「スキル」とするのかを明確に伝える必要があります。そうしないと、何でもかんでも&lt;code&gt;Skill&lt;/code&gt;にしようとしてしまいがちです。&lt;/p&gt;
&lt;h3 id=&#34;一回限りの気軽なタスク&#34;&gt;一回限りの気軽なタスク
&lt;/h3&gt;&lt;p&gt;ユーザーが一時的に質問する場合、通常のプロンプトで十分なことが多いです。&lt;/p&gt;
&lt;h3 id=&#34;あなたが望んでいるのは外部システムへの接続だけだ&#34;&gt;あなたが望んでいるのは「外部システムへの接続」だけだ
&lt;/h3&gt;&lt;p&gt;その場合は、&lt;code&gt;Skill&lt;/code&gt; ではなく &lt;code&gt;MCP&lt;/code&gt; を優先的に検討してください。&lt;/p&gt;
&lt;h3 id=&#34;リポジトリ全体の長期的な振る舞いを制約したい場合&#34;&gt;リポジトリ全体の長期的な振る舞いを制約したい場合
&lt;/h3&gt;&lt;p&gt;これは &lt;code&gt;Skill&lt;/code&gt; の仕事というよりは、&lt;code&gt;AGENTS.md&lt;/code&gt; の仕事に近いです。
したがって、簡単にまとめると以下のようになります：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;接続が不足している場合、&lt;code&gt;MCP&lt;/code&gt; を使う&lt;/li&gt;
&lt;li&gt;プロセスが不足している場合、&lt;code&gt;Skill&lt;/code&gt; を使う&lt;/li&gt;
&lt;li&gt;グローバルなルールが不足している場合、&lt;code&gt;AGENTS.md&lt;/code&gt; を使う&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;代表的な事例をいくつか&#34;&gt;代表的な事例をいくつか
&lt;/h2&gt;&lt;p&gt;概念をどれだけ説明しても、実際の事例を見る方が良いです。&lt;/p&gt;
&lt;h3 id=&#34;1-roll-dice最小限の入門ケース&#34;&gt;1. &lt;code&gt;roll-dice&lt;/code&gt;：最小限の入門ケース
&lt;/h3&gt;&lt;p&gt;このケースはOpenAI公式の&lt;code&gt;Agent Skills&lt;/code&gt;ドキュメントからのものです。
非常に小さく、ディレクトリ内にはほとんど&lt;code&gt;SKILL.md&lt;/code&gt;しかなく、エージェントがユーザーからサイコロを振るよう要求された際に、PowerShellの乱数コマンドを呼び出すようにします。
なぜこの例が良いのか？
それは&lt;code&gt;Skill&lt;/code&gt;の最も核となる骨格を直接示しているからです：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;明確なトリガー条件がある&lt;/li&gt;
&lt;li&gt;明確な実行方法がある&lt;/li&gt;
&lt;li&gt;明確な境界線がある
これは、&lt;code&gt;Skill&lt;/code&gt;が必ずしも大きくなくて良いことを示しています。あることが繰り返し発生し、モデルに無作為な振る舞いをさせたくない場合、それを&lt;code&gt;Skill&lt;/code&gt;として実装できるということです。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-gh-address-commentsgithub-コメント処理のワークフロー例&#34;&gt;2. &lt;code&gt;gh-address-comments&lt;/code&gt;：GitHub コメント処理のワークフロー例
&lt;/h3&gt;&lt;p&gt;このケースは、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; リポジトリから来ました。
目的は「GitHubに接続する」ことではなく、「現在のブランチのPRのコメントを処理する」という一連のプロセスを固定化することです。公式バージョンでの手順が非常に典型的です：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;まず&lt;code&gt;gh&lt;/code&gt;が認証済みか確認する&lt;/li&gt;
&lt;li&gt;次に、現在のPRのコメントとレビュースレッドを取得する&lt;/li&gt;
&lt;li&gt;これらのコメントに番号を振り、要約する&lt;/li&gt;
&lt;li&gt;ユーザーにどのコメントを処理するか明確に選択させる&lt;/li&gt;
&lt;li&gt;その後で初めて処理を開始する
この例は、&lt;code&gt;Skill&lt;/code&gt; の価値を特に示しています。
多くのエンジニアリングタスクにおいて、難しさは「モデルがGitHubとは何かを知っているか」という点ではなく、「正しい順序で物事を処理できるか」という点にあります。&lt;code&gt;gh-address-comments&lt;/code&gt; が解決しているのは、まさにこのような順序の問題です。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-gh-fix-cici-失敗のエンジニアリングケースの調査&#34;&gt;3. &lt;code&gt;gh-fix-ci&lt;/code&gt;：CI 失敗のエンジニアリングケースの調査
&lt;/h3&gt;&lt;p&gt;これも &lt;code&gt;openai/skills&lt;/code&gt; リポジトリ内の公式スキルです。
これは別の非常に典型的なエンジニアリングタスクを対象としています。それは、PR のチェックが失敗したとき、「直すべきか」「どう直すか」というものです。
この &lt;code&gt;Skill&lt;/code&gt; で定義されているワークフローも非常に代表的です：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;まず &lt;code&gt;gh&lt;/code&gt; のログイン状態を確認する&lt;/li&gt;
&lt;li&gt;現在の PR を見つける&lt;/li&gt;
&lt;li&gt;GitHub Actions の失敗したチェックとログを取得する&lt;/li&gt;
&lt;li&gt;失敗した部分を抽出する&lt;/li&gt;
&lt;li&gt;まず修正計画を立てる&lt;/li&gt;
&lt;li&gt;承認を得てから実行する
これは、「CI がなぜ失敗したか見て」という単なるプロンプトでは安定して対応できないシナリオです。なぜなら、権限、ログ、外部ツール、承認の境界線、実行順序など、これらすべてを定義する必要があるからです。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-リポジトリ固有のスキルチーム独自のノウハウを蓄積する&#34;&gt;4. リポジトリ固有のスキル：チーム独自のノウハウを蓄積する
&lt;/h3&gt;&lt;p&gt;公式なサンプル例以外で、私が考える &lt;code&gt;Skill&lt;/code&gt; のより大きな価値は、実はプライベートリポジトリ内にあります。
例えば、目の前のブログリポジトリにある &lt;code&gt;blog-writer&lt;/code&gt; は、本質的には非常に典型的な repo-scoped skill です。これは「モデルに中国語の書き方を学ばせる」ことを担当しているのではなく、このリポジトリで既に固定された文体、構造、ファクトチェック、出力パス、データ保存形式などをワークフローとして記述したものです。
このような &lt;code&gt;Skill&lt;/code&gt; は、最も現実的な価値を持つことが多いです。なぜなら、すべての人に向けられているわけではなく、「あなたはこのリポジトリで、どのような種類の作業が繰り返し発生し、かつ逸脱しやすいか」という点に特化して解決するものだからです。&lt;/p&gt;
&lt;h2 id=&#34;実際にskillを使うべき時&#34;&gt;実際に「Skill」を使うべき時
&lt;/h2&gt;&lt;p&gt;そこで、最後に最も実用的な問題に戻ります。いつ真剣に &lt;code&gt;Skill&lt;/code&gt; を作るべきでしょうか？
私の答えは以下の通りです。
それは、問題がもはや「モデルの能力不足」ではなく、「毎回同じ行動が安定しない」と感じたときです。
この段階でプロンプトを積み重ねても、得られる利益は通常低くなる一方です。今日一文追加し、明日また一文追加するうちに、プロンプトはまるで出来事の羅列になり、モデルはやはりミスを犯します。
むしろ、それを &lt;code&gt;Skill&lt;/code&gt; として整理し、トリガー条件、手順、境界線、スクリプト、資料などを分けて管理する方が、効果が安定しやすく、再利用性も高まります。
&lt;code&gt;MCP&lt;/code&gt; は外部世界と接続し、&lt;code&gt;Skill&lt;/code&gt; は内部のノウハウを固定化します。
前者は「できるかどうか」を解決し、後者は「どうすれば安定してできるか」を解決します。
これが私が今理解している &lt;code&gt;Skill&lt;/code&gt; です。
それは新しいプロンプトでも、新しいプロトコルでもありません。
むしろ、エージェントに職種マニュアルを渡すようなものです。&lt;/p&gt;
&lt;h2 id=&#34;参考資料&#34;&gt;参考資料
&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;作成上の注記&#34;&gt;作成上の注記
&lt;/h2&gt;&lt;h3 id=&#34;元のプロンプト&#34;&gt;元のプロンプト
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;プロンプト：AI大規模言語モデルによるプログラミングについて、まずMCPが登場し、次にSkillが登場しました。平易な言葉で、Skillが何か、どのようにSkillを開発するか、どのようなシナリオに適しているか、それぞれ具体的な代表的な事例を挙げて説明してください。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;ライティングの骨子まとめ&#34;&gt;ライティングの骨子まとめ
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;「&lt;code&gt;MCP&lt;/code&gt; と &lt;code&gt;Skill&lt;/code&gt; の概念レビュー」として繰り返し書くのではなく、重点を &lt;code&gt;Skill&lt;/code&gt; の役割と使用範囲に置いた。&lt;/li&gt;
&lt;li&gt;「職種マニュアル」「特定作業手順書（SOP）」といった平易な比喩を用いて、抽象的な定義を実際のワークフローに落とし込んだ。&lt;/li&gt;
&lt;li&gt;開発部分は公式ドキュメントの実構造に沿って記述し、&lt;code&gt;description&lt;/code&gt;、&lt;code&gt;progressive disclosure&lt;/code&gt;、&lt;code&gt;instruction-only&lt;/code&gt; といった重要な点を保持した。&lt;/li&gt;
&lt;li&gt;ケーススタディは可能な限り公式ソースを選定し、それぞれ公式ドキュメント内の &lt;code&gt;roll-dice&lt;/code&gt;、および &lt;code&gt;openai/skills&lt;/code&gt; リポジトリ内の &lt;code&gt;gh-address-comments&lt;/code&gt; と &lt;code&gt;gh-fix-ci&lt;/code&gt; を使用した。&lt;/li&gt;
&lt;li&gt;最後に、読者が読み終えた後も混同しないよう、&lt;code&gt;MCP&lt;/code&gt;、&lt;code&gt;Skill&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt; の三者の境界線を改めて整理した。&lt;/li&gt;
&lt;/ul&gt;</description>
        </item>
        
    </channel>
</rss>
