Skip to content

原文(日本語訳)

既にロード済みのSkillを再度呼び出した際に、その指示内容の重複コピーがコンテキストに追加されてしまう不具合を修正しました。

原文(英語)

Fixed re-invoking an already-loaded skill appending a duplicate copy of its instructions to context

概要

これはバグ修正です。従来、同一セッション内で一度読み込まれたSkillを再度呼び出すと、そのSkillの指示内容(SKILL.mdの本文)がすでにコンテキストに存在しているにもかかわらず、もう一度そのままコンテキストに追加されてしまう問題がありました。この修正により、既にロード済みのSkillを再利用する際に不要な重複コンテンツが挿入されなくなり、コンテキストウィンドウの無駄な消費が減って、長いセッションでもより効率的にトークンを使えるようになります。

基本的な使い方

Skillsは SKILL.md にYAMLフロントマターと指示内容を記述したファイルで、~/.claude/skills/ やプロジェクトの .claude/skills/ に配置することで利用できます。Claude Codeはタスクの内容に応じて、フロントマターの description を手がかりに関連するSkillを自動的に検出し、必要になった時点で本文をコンテキストに読み込みます(プログレッシブディスクロージャー方式)。

yaml
---
name: pdf-processor
description: PDFファイルの読み取り・変換・フォーム入力を行う
---

PDFファイルを処理する際は以下の手順に従ってください。
1. ...
2. ...

一度Claudeがこのようなskillを認識してコンテキストに読み込むと、以降同じセッション内でそのSkillが必要になった場合は、既にロード済みの指示内容を再利用します(今回の修正前は、ここで指示内容がもう一度追加されてしまっていました)。

実践例

同じSkillを一つのセッション内で繰り返し使う場合

例えば、大量のPDFファイルを1件ずつ処理していくようなワークフローでは、pdf-processor のようなSkillが同一セッション中に何度も呼び出されます。

> 請求書1.pdfからデータを抽出して
> 請求書2.pdfからデータを抽出して
> 請求書3.pdfからデータを抽出して

修正前は、呼び出すたびに SKILL.md の本文がコンテキストに追加され、ファイル数が増えるほど同じ指示文がコンテキスト内に何重にも積み上がってしまい、トークンを圧迫していました。修正後は最初の1回だけ本文が読み込まれ、2回目以降の呼び出しでは重複が発生しないため、コンテキストを圧迫せずに同じワークフローを何十回でも繰り返せます。

複数のSubagentやタスクをまたいで同じSkillを利用する場合

コードレビュー用Skillやテスト実行用Skillのように、1つのセッション内で複数の異なるタスク(例えば複数ファイルの修正やテストの実行)ごとに繰り返し参照されるSkillでも、この修正の恩恵を受けます。

> このファイルを/code-reviewでチェックして
> (別ファイルを編集後)このファイルも/code-reviewでチェックして

以前はレビューを依頼するたびにSkillの指示文が重複して積み上がり、長時間のセッションではコンテキストウィンドウの残量を無駄に消費して、他の作業履歴やファイル内容が圧迫される原因になっていました。修正後はSkillの指示内容が1セッションにつき実質1コピーのみ保持されるため、長時間・多工程のセッションでもコンテキストを効率的に使えます。

注意点

  • この修正はSkillの指示内容がコンテキストに重複して追加されないようにするものであり、Skill自体の動作や出力結果を変更するものではありません。
  • コンテキストが圧迫されにくくなることで、結果的に長いセッションでのコンパクション(要約)発生頻度が下がるなど、間接的な体験改善が期待できます。
  • Skillの指示内容を意図的に更新した場合(SKILL.md を編集した場合)は、変更を反映するために新しいセッションを開始するか、Skillを再読み込みする必要がある点は従来と同様です。

関連情報