エージェントに覚えさせる
エージェントは、新しい会話になるとそれまでの話をすべて忘れてしまいます。そこで役に立つのがメモリファイルです。AGENTS.md (または CLAUDE.md) は毎ターンプロンプトに入るので、プロジェクトのしくみや守ってほしいルールなど、いつも覚えておいてほしいことを書いておきます。
やってみる
- 入力するを押して、Enter を押します。
/initで、エージェントがプロジェクトを読んでAGENTS.mdを書きます。Yes を選びましょう。 - ルールをひとつ足します。
/memoryと入力してエディタで一行書き足すか、エージェントに頼みましょう。AGENTS.md にルールを追加して: すべてのボタンには、何をするかを書いた title 属性をつける。 /clearと入力します。会話は消えますが、メモリファイルは残ります。- 続けて、こう頼みます。
リストの下に、完了した todo を消す「Clear completed」ボタンを追加して。変更するのは index.html と app.js だけ。title のことには触れていませんが、新しいボタンに title はつきましたか?
実務では: メモリファイルはプロジェクトと一緒に少しずつ育てていくもので、コードと同じようにレビューします。
スキルを実行する
スキルは、ある種類の作業のやり方をまとめておくファイルで、.agents/skills/<name>/SKILL.md に置きます。書いてあるのはチームならではの手順なので、モデルは自分では知りません。コマンドと同じように、名前を指定して実行できます。
やってみる
- 実行を押し、メッセージに
<img src=x onerror=alert(1)>と入れて書き込みます。壊れた画像が表示されます。入力した文字がページの中でコードとして動いてしまった、ということです。 - エディタで
.agents/skills/web-security/SKILL.mdを開いてみましょう。手順は二つだけです。 - 入力するを押して、Enter を押します。依頼の文と一緒に、スキルの中身がエージェントに渡ります。
- 差分をひとつずつ確認します。修正は
app.jsに入り、スキルの手順 2 でSECURITY.mdが増えます。 - 実行を押して、同じ攻撃をもう一度試します。今度はただの文字として表示されるはずです。
- 名前を
Ann、メッセージを<b>Hello</b>にして書き込みます。Ann: <b>Hello</b>と表示され、Ann が太字になっていますか?急ごしらえの修正だと、**Ann**や<strong>Ann</strong>と出てしまうことがよくあります。そのときは、こう伝えて直してもらいましょう。ページでの名前の表示がおかしいです。太字はそのままで、<strong> は createElement で作り、textContent を設定して。
実務では: 本当のセキュリティレビューには、もっと多くのチェックやツール、そしてセキュリティに詳しい人の目が必要です。スキルは助けになりますが、それだけでページが安全になるわけではありません。
スキルを書く
スキルは名前を指定して実行するだけでなく、自動で読み込まれることもあります。エージェントは毎ターン、各スキルの description に目を通し、依頼に合うものがあればそのスキルを一緒に読み込みます。
スキルの内容は自由です。何を書くか迷ったら、docs スキルから始めましょう。README だけでなく、このプロジェクトのすべてのドキュメントの書き方をまとめたスキルです。
やってみる
- 入力するを押して Enter を押すと、エージェントが指定した内容のままスキルを保存します。エディタで自分の
.agents/skills/<name>/SKILL.mdを書いてもかまいません。その場合は、いつ使うのかを書いたdescriptionを忘れずに。 /clearと入力します。新しい会話から見えるのはスキルの名前と description だけで、次のセッションを始めたときと同じ状態です。- ファイル名は出さずに、description に当てはまる作業を頼みます。たとえば
README.md にこのプロジェクトのドキュメントを書いて。やapp.js にコメント (comments) を追加して。などです。 - エージェントが作業を始める前に
● Skill(docs)が出るか見てみましょう。出れば、description が依頼に合ってスキルが読み込まれたということです。自分で/docsを実行した場合は、ここではカウントされません。
実務では: もっと大きなモデルなら、description を読んで自分でスキルを選びます。この小さなモデルにはそれが難しいので、ここでは依頼の言葉と各 description を照らし合わせています。実際のチームでは、スキルを共有し、バージョン管理し、テストもします。
外部のツールを使う
モデルが知っているのは学習のときに見たライブラリで、このプロジェクトで使っているライブラリのことは知りません。MCP サーバーを使うと、プロジェクトの外からエージェントにツールを渡せます。このラボでは、lib/pretty-date.min.js のドキュメントを持つ docs サーバーを使います。
やってみる
/mcpと入力します。まだサーバーはありませんが、追加できるものがひとつあります。/mcp add docsと入力します。.mcp.jsonに書き込まれ、エージェントがdocs.get_docsツールを使えるようになります。もう一度/mcpと入力すると、connected と表示されます。- 入力するを押して、Enter を押します。ファイルを編集する前に
docs - get_docs (MCP)が呼ばれているか見てみましょう。 - 実行を押して書き込んでみます。
just nowと表示されましたか?
実務では: 本物の MCP サーバーはブラウザの外で動きます。セットアップが必要で、信頼できる相手かどうかの見きわめも欠かせません。実際のデータに触れることもあります。ここのサーバーはサイトに組み込まれていて、決まった答えを返すだけです。
このラボのモデル (Qwen3.5-4B) は小さく、英語がいちばん得意で、日本語だと間違いが増えます。応答がおかしいときは、英語で指示してみてください。
録画したセッションを再生しています。ゴールの判定対象は、「やってみる」で自分が行った作業だけです。