0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初学者による「AI Skillって全部把握できてる?」

0
Posted at

この記事は

初学者の個人的な学習記録が主な目的です。

同じ立場の人、これからエンジニアを目指している人に届けばと思って書いています。

⚠️ 楽しく書きたいので、所々言葉を崩しています、ご了承ください。

目次

きっかけ

Claude Code を使い始めてから、便利そうなスキルを見つけるたびにどんどん入れてたら、気づいたら 139 個になってた。

しかも名前だけじゃ意味わかんないのが大量にある。mobius-loop って何?
plan-ceo-review ってCEOが具体的に何をレビューして何してくれるやつ?とナルトとサスケが病院で喧嘩を始めているのを見守るサクラの気持ちみたいになり、全然把握できてないことに気づきました。

把握できてないと困ることが 2 つある。

ひとつはセキュリティ。誰かが作ったプロンプトを、ほぼ審査なしで AI の動作に組み込んでる。

もうひとつは心理的負担。「このタスク、スキルあったはずなのに発動してないかも?」という不安が常に頭に残る。把握できていないから確認のしようもない。

だから整備したかったのはこれ

  • 各スキルが何をするか自分でも分かる説明書
  • 導入前のセキュリティスキャン
  • スキャン → 説明書記入 → 定期棚卸しを一貫して回せるフロー

そもそもスキルって何?

「スキルを入れる」って何をしてるか、ちゃんと理解できてなかったので改めて1から調べた。

公式ドキュメント によると、スキルはプロンプトファイル(SKILL.md)をエージェントに渡す仕組み

~/.claude/skills/
└── my-skill/
    └── SKILL.md   ← ここに「このスキルの使い方・役割・制約」が書かれている

Claude Code が起動すると、インストール済みスキルの名前とdescriptionが system-reminder にまとめて渡される。Claudeくん はその情報を元に「あ、このスキルが使えるな」と判断して発動させる。

3 段階の Progressive Disclosure(段階的開示)

スキルは起動時に全部読まれるわけじゃない。

  1. system-reminder に name + description が渡される(常時)
  2. スキルが使われそうになったら SKILL.md の本文が読まれる
  3. 必要に応じて references/ 配下の追加ファイルが読まれる

コンテキストを節約しながら、必要なときだけ詳細を展開する設計になっている。

つまり詠唱破棄ってことですね。

Anthropic のエンジニアリングブログ
Equipping Agents for the Real World with Agent Skills」でも、スキルを「AI エージェントが本番業務で使える実用的なツール」として位置づけている。

番外編: どうせなら似てるもの比較してみた 整備を始める前に、参考になるスキルリポジトリ。 どちらも性格が全然違っておもしろい。

addyosmani/agent-skills

addyosmani/agent-skills は Google Chrome エンジニアリングリードの Addy Osmani 氏が作ったリポジトリ。

特徴は「シニアエンジニアの思考フロー」がスキル化されてること。

  • /spec-writer → 要件定義をシニアエンジニア視点で構造化する
  • /arch-review → アーキテクチャを複数の視点で批判的に評価する
  • /security-review → OWASP Top 10 に照らしてセキュリティ審査する

個人開発だと「シニアエンジニアが隣にいない」問題が常にある。このスキル群は、その穴を埋める存在として機能する。

gotalab/cc-sdd

gotalab/cc-sdd は別アプローチ。Amazon Kiro(AI 駆動 IDE)の SDLC パイプラインに着想を得た、要件定義から実装まで一気通貫で流せるスキル。

/kiro-impl というコマンドが特徴的で、spec から実装まで自律的に進めてくれる。

この 2 つは競合しない。cc-sdd がパイプラインの骨格を提供して、addyosmani/agent-skills が各フェーズで専門的な思考を補う。組み合わせて使うのが正解だと思う。

NVIDIA の OSS で 139 個を全部スキャンした

セキュリティスキャンを自前でやろうとして、ちょうどいいツールを見つけた。

SkillSpector 。NVIDIA が作った OSS で、AI エージェントのスキルに含まれる脆弱性・悪意あるパターンを検出するセキュリティスキャナー。Apache 2.0 ライセンス。スター数 7,551。

Research shows that 26.1% of skills contain vulnerabilities and 5.2% show likely malicious intent.
訳: 調査によると、スキルの26.1%に脆弱性があり、5.2%に悪意のある意図が見られることが示されています。

らしいでっせ。危ないでんなぁ

--no-llm モードの罠

SkillSpector には 2 つのモードがある。

  • 通常モード:静的解析 + LLM によるセマンティック評価
  • --no-llm モード:キーワードパターンマッチのみ(高速・API 不要)

今回は --no-llm で 139 個を 6 バッチに分けて並列スキャンした。

そしたら面白いことが起きた。

セキュリティを教えるスキルほど CRITICAL になる。

実際の例
security-reviewer(セキュリティ審査スキル)が CRITICAL 100/100 で「C2 フレームワークの指標あり」と判定された。
実際に中身を見たら、Metasploit などのツール名はペンテストのリファレンス表の解説として書かれてるだけ。

wordpress-pro が CRITICAL になったのは、WordPress ブロック記法の
<!-- wp:... --> というコメントが「隠し命令」として検出されたから。

キーワードマッチは文脈を読まないので、「危険なものを説明している」と「危険なコードを実行する」の区別ができない

そこでOpus で再精査する 2 段階フローを組んだ

--no-llm の限界を補うために、SAFE 以外の判定が出たら自動で Claude Opus に再精査させる フローを追加した。

① SkillSpector --no-llm でスキャン
       ↓
② SAFE 以外 → Opus に「フラグされた箇所のコードと検出理由」を渡す
       ↓
③ Opus が「本物の脅威 or 誤検知」を判定
       ↓
④ 最終レポート:インストール可 / 要確認 / インストール不可

結果、139 スキル全件インストール可。CRITICAL 判定が出たものも含めて、全て誤検知だった。

全て把握しておきたい人間向け

ここで記事冒頭のきっかけ回収

名前だけじゃ意味わからないスキルが大量にある。

mobius-loop って何? plan-ceo-review って何してくれるやつ? neta-trend は?

スキルが発動する仕組みを思い出してほしい。Claude Code が起動すると、インストール済みスキルの名前だけが system-reminder にまとめて渡される。Claude はその名前から「あ、このスキルが使えるな」と判断して発動する。

つまり Claude 側は(名前から)意味を推測できる。でも私は

読めなあああああい!!!

なので2段構えで解決した

「じゃあ CLAUDE.md に全スキルの説明を書けばいい」と思うかもしれない。でもそれをやると毎回のセッションで余分なコンテキストを消費し続ける。139 個のスキル説明 = 推定 5,000〜10,000 トークンが常に消費される。

なので設計をこうした:

① 人間向けフル説明書(~/.claude/SKILLS.md

カテゴリ別に整理した完全版。
Claude Code 運用系・開発・SRE 系・マーケティング系・Toriumi 個人用……と分類して、各スキルに一行説明と「こう使う」を書いた。棚卸しのときに見る用。

② AI 向けミニマル版(グローバル CLAUDE.md に追記)

名前から意味が推測できないスキルだけを一行で 14 個追記した。

# Skills 使い分けガイド
- handover: セッション引き継ぎ記録を ~/develop/nippo/ に保存する
- mobius-loop: 複数の観点で問題を循環的に深掘りする思考フレームワーク
- plan-ceo-review: CEO視点でビジネス計画を批判的にレビューする
- neta-trend: SNS・検索トレンドからコンテンツネタを掘る
...

明らかに名前で分かるスキル(seo-auditab-test-setupcopywriting 等)は追加しない。コンテキスト節約のため。

運用フローとして定着させたかった

今回やりたかったのは「一回やって終わり」ではなくて、新スキルを入れるたびに回せるフローを作ること。

新スキル発見
    ↓
SkillSpector でスキャン(--no-llm)
    ↓ SAFE 以外
Opus で再精査
    ↓ インストール可
SKILLS.md に追記
    ↓ 名前が不明瞭なら
CLAUDE.md にも一行追記

これで「とりあえず入れたけど何者かわからん」スキルがなくなる。
頭良すぎるAIと足並みを揃える工夫ってのも大事だちょね

まとめ

  • Claude Code のスキルは名前だけが毎回読み込まれる。descriptions は Claude が推論できる、でも人間には読めない
  • 139 個も入れてたら自分で把握できなくなる。セキュリティリスクと「スキル使えてるか不安問題」が両方発生する
  • SkillSpector(NVIDIA OSS) でスキャン → Opus で再精査する 2 段階フローを組んだ。--no-llm モードはキーワードマッチだから誤検知だらけで、Opus の目を通すことで初めて、改めて「本物の脅威か」が判断の材料となる
  • 結果は全 139 件インストール可。CRITICAL 判定も含めて全部誤検知だった
  • SKILLS.md(人間向けフル説明書)と CLAUDE.md へのミニマル追記(不明瞭な名前の 14 個のみ)の 2 段構えで解決した
  • 新スキルを入れるたびに「スキャン → SKILLS.md 追記」を回す運用フローとして定着させ、初学者ゆえのトイル削減

参考


おまけ:次は「さくらの AI Engine」で試したい

今回の再精査は Claude Opus を使ったけど、初めからSkillSpectorのllmモードを使えればいいだけの話。

なので、近いうちに さくらの AI Engine を推論基盤に使ってみたいと思ってる。
OpenAI SDK 互換で base_url を変えるだけで切り替えられて、コストは Claude の約 20 分の 1。
データが国内完結なのも◎。大量スキャンを定期的に回すなら、コスト面で現実的な選択肢になる。

さらに追記
Sakana AIの Sakana Fugu が巷で流行っているので、国産かつ名前がめちゃかわちいので、こちらも様子見で使っていけたらなと思っています!


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?