VS Code で Claude Code の SKILL.md を開くと allowed-tools is not supported や Unexpected indentation のエラーが出る。原因は GitHub Copilot の Agent Skills バリデータが .claude/skills/ を自動検出している ためです。Claude Code の動作には影響ないけど、エディタがエラーとか出してると目障りなのでね…
files.associations に1行追加すれば消えます。
{
"files.associations": {
"**/.claude/skills/*/SKILL.md": "markdown"
}
}以下、原因の詳細と Agent Skills 標準の経緯、関連する既知の Issue を整理します。
何が起きているのか
GitHub Copilot が 2025年12月に Agent Skills というオープンスタンダードに対応しました。このスタンダード、実は Anthropic が 2025年10月に Claude Code で先行リリースしていたもので、後にオープンスタンダードとして公開された経緯があります。
で、このスタンダードでは Skills のファイル名として SKILL.md を使います。Claude Code も Copilot も同じ名前。偶然の一致じゃなくて、同じ仕様に基づいています。
問題はここからで、VS Code の Copilot バリデータが .claude/skills/ 配下の SKILL.md も 自動検出してバリデーションをかけてくる んですよね。
なぜ Warning が出るのか
Agent Skills 標準には以下のフィールドが定義されています。
| フィールド | 必須 | 実験的 |
|---|---|---|
name | Yes | No |
description | Yes | No |
license | No | No |
compatibility | No | No |
metadata | No | No |
allowed-tools | No | Yes |
allowed-tools は実験的フィールドです。Claude Code では普通に使えるんですが、VS Code 側の Copilot バリデータがまだ対応していないので Warning が出ます。
ただ、問題は allowed-tools だけじゃありません。
description: | で Error が出る
実際の SKILL.md を見てみましょう。Claude Code の Skills では description に YAML のブロックスカラー(|)を使って複数行で書くのが一般的です。
---
name: blog-scraper
description: |
This skill should be used when the user asks to "ブログをスクレイピングして",
"SIOS Tech Labの記事を保存して", or provides a SIOS Tech Lab blog URL to scrape and save.
allowed-tools: Read, Edit, Bash
---これを VS Code で開くと、こうなります。
Error: Unexpected indentation (L4, L5)
Warning: Attribute 'This skill should be used when...' is not supported in skill files.
Warning: Attribute 'allowed-tools' is not supported in skill files.Error 2つに Warning 3つ。結構派手に怒られます。
原因は Copilot のバリデータが YAML のブロックスカラー記法(|)を解釈できていない こと。description: | の後のインデントされた行を「description の値の続き」ではなく「別の属性」として読んでしまうので、インデントが不正だと怒り、さらに行の内容を未知の属性名として Warning を出します。
Claude Code 側はちゃんとパースしているので、| で書いても動作は問題ありません。確認済みです。
ちなみに | を使わずに1行で書けば Error は消えます。ただ、description が長くなると読みにくいので、実用的にはちょっと厳しい。結局 files.associations で抑制するのが現実的な対処です。
自動検出されるパス
VS Code Copilot は以下のパスを自動で検出します。
| パス | 用途 |
|---|---|
.github/skills/ | プロジェクト(標準) |
.claude/skills/ | プロジェクト(後方互換) |
~/.copilot/skills/ | パーソナル |
~/.claude/skills/ | パーソナル(後方互換) |
.claude/skills/ が「後方互換」として検出対象に入っています(後方互換性なのか??)。Claude Code ユーザーの Skills がそのまま Copilot でも使えるようにする意図なんですが、バリデータの対応が追いついていない状態です。
回避策: files.associations で Markdown として認識させる
回避策はシンプルです。SKILL.md を Copilot の Skill ファイルではなく、通常の Markdown ファイルとして認識させます。
.vscode/settings.json に以下を追加してください。
{
"files.associations": {
"**/.claude/skills/*/SKILL.md": "markdown"
}
}devcontainer を使っている場合は devcontainer.json の settings に追加しても OK です。
{
"customizations": {
"vscode": {
"settings": {
"files.associations": {
"**/.claude/skills/*/SKILL.md": "markdown"
}
}
}
}
}検証結果
| 項目 | 設定前 | 設定後 |
|---|---|---|
description: | の Error | Unexpected indentation | なし |
allowed-tools の Warning | not supported in skill files | なし |
| Claude Code の動作 | 正常 | 正常(影響なし) |
設定後に VS Code の Diagnostics を確認したところ、Warning は完全に消えていました。Claude Code 側のスキル一覧にも正常に表示されます。まぁMarkdownとして認識させているんで当たり前ですね。Claude Codeの設定ファイルを書くときは自力で頑張りましょう。
Agent Skills 標準の経緯
せっかくなので背景も整理しておきます。
| 日付 | できごと |
|---|---|
| 2025年10月16日 | Anthropic が Agent Skills を発表(Claude Code で利用可能に) |
| 2025年12月18日 | オープンスタンダードとして公開。同日に GitHub が Copilot での対応を発表 |
| 2025年12月 | VS Code 1.108 で実験的サポート追加 |
Anthropic が先に作ったものをオープン化して、GitHub が同日に採用を発表した流れです。Agent Skills は「一度書けばどこでも使える(write once, use everywhere)」を目指していて、対応ツールは Claude Code、GitHub Copilot の他に、Cursor、Goose、Amp なども実験的に対応しています。
Claude Code が先行して独自拡張を進めている分、標準仕様との差分が Warning として表面化したのが今回の件ですね。
関連する既知の Issue
この問題に関連して、いくつか Open の Issue があります。
| Issue | 内容 |
|---|---|
| anthropics/claude-code #23723 | user-invocable と user-invokable のスペル不一致。Claude Code CLI は user-invocable で動作するが、VS Code のスキーマは user-invokable を期待する |
| anthropics/skills #314 | SKILL.md のファイル名が大文字小文字を区別する仕様がドキュメントに記載されていない。skill.md(小文字)だとエラーなく無視される |
| anthropics/claude-code #13586 | .claude/commands/skill.md を作ると組み込みの Skill ツールと名前が衝突して、全カスタムコマンドが読み込まれなくなる |
user-invocable / user-invokable の件は結構ハマりそうなポイントです。Claude Code CLI では user-invocable が正しいので、VS Code 側で Warning が出てもそのまま使ってください。VS Code の警告に従って user-invokable に変更すると、逆に Claude Code で動かなくなります。
まとめ
- 原因:
Claude Code と GitHub Copilot が同じ Agent Skills 標準を使っており、VS Code Copilot のバリデータが.claude/skills/の SKILL.md を検出して Error / Warning を出す。description: |のブロックスカラーとallowed-toolsが引っかかる - 対処:
files.associationsで Markdown として認識させる(1行追加) - 影響:
Claude Code の動作には一切影響なし
2026年2月15日時点の情報です。検証環境は以下のとおり。
| ソフトウェア | バージョン |
|---|---|
| VS Code | 1.109.3 |
| GitHub Copilot Chat 拡張 | 0.37.6 |
| Claude Code CLI / 拡張 | 2.1.42 |
Agent Skills はまだ発展途上で、VS Code 側のバリデータが allowed-tools に対応したり、user-invocable のスペルが統一されたりすれば、この設定自体が不要になるはずです。
個人的には Claude Code の Skills と GitHub Copilot の Skills が統合される未来に期待してますが、まぁ希望的観測ですかね。今のところは Claude Code がガンガン先行しているので、この手の差分とはしばらく付き合うことになりそうです。


