OpenCodeのskillsを使ってみた
OpenCodeは、Claude等にもあるskillsが使えます。
今まであまりAIエージェントのスキルを使ってこなかったですが、色々自動化するには便利そうと思って使ってみました。
OpenCodeのスキルについては以下の公式サイトに詳しく書かれています。
エージェントスキル
スキルの保存場所
OpenCodeはスキルの定義を「ホームディレクトリ」「プロジェクトディレクトリ」のいずれかの下に探します。
プロジェクト直下
プロジェクト設定: .opencode/skills/<name>/SKILL.md
プロジェクト Claude 互換: .claude/skills/<name>/SKILL.md
プロジェクトエージェント互換: .agents/skills/<name>/SKILL.md
ホームディレクトリ直下
グローバル設定: ~/.config/opencode/skills/<name>/SKILL.md
グローバルエージェント互換: ~/.agents/skills/<name>/SKILL.md
グローバル Claude 互換: ~/.claude/skills/<name>/SKILL.md
プロジェクト直下には、そのプロジェクト固有のスキル、ホーム直下にはプロジェクトによらない自身の普遍的なスキルを保存するのでしょう。
私は普段Codexも併用しているので、Codexが使用する .agents/skills/<name>/SKILL.md に保存することにしました。
スキルの書き方
スキルは自分で書いてもいいのですがOpenCodeに書いてもらうのが楽です。
なお、スキルは自然言語で説明文を書けばいいですが、ファイルの最初に Yaml frontmatter が必要です。
Yaml frontmatter には以下の項目が必須となります。
- name
- description
以下はこのブログのRailsアプリに定義している「 git commit する前にソースコードをセキュリティチェックするスキル」の冒頭部分の例です。
---
name: security-check
description: git commit 前にリポジトリ全体の機密情報漏洩を監査する。ハードコードされた公開IP・ドメイン・APIキー・個人名・環境変数フォールバック値などを検査する。
---
リポジトリ内の機密情報漏洩を監査するよう指示された場合、または `git commit` の実行前に、このスキルを使用すること。
## 確認方法
**grep や ripgrep などのパターンマッチ検索は補助的にのみ使用すること。** 最終的な判定は、各ファイルを直接開いて中身を読むことで行う。自動検索ではコメントアウトされた値、テンプレート内の埋め込み、暗黙的なデフォルト値などを見落とすリスクがあるため、**すべてのファイルを直接開いて参照・確認**することを原則とする。
(以降略)
このように書いてOpenCodeを再起動するとスキルがロードされます。
記述する言語
SKILL.mdにしてもAGENTS.mdにしても英語での日本語でも良いと思いますが私は日本語で書いています。
理由は、日本語であれば私のほうでルールを変更したり追加する事が簡単だからです。
使用方法
/skills
と入力すると、すでに作成済みのスキルの選択リストが表示されますので、いずれかを選択して、そのあとに実行してほしい内容の詳細を記述します。
あるいは、自然言語で命令するか、そのスキルを使うべきタイミングが来たらAIの自主判断で使用されます。
例えばさっきのセキュリティチェックは AGENTS.md の中に
## Pre-commit security check
- `git commit` を実行する**前に必ず** `.agents/skills/security_check/SKILL.md` の手順に従い、リポジトリ全体の機密情報スキャンを実行すること。
- 🔴 CRITICAL または 🟠 HIGH の指摘が見つかった場合は、**コミットを中断し**、発見内容をユーザーに報告して指示を仰ぐこと。
- 🟡 MEDIUM 以下の指摘のみの場合は、報告は行うがユーザーの判断でコミットを継続してよい。
- チェックで問題がなければ通常通りコミットを進めてよい。
のように記載しておけば、git commit を指示したときに自動的にセキュリティチェックを行ってくれます。
頻度高く実行することや、指示事項が多くて毎回支持するのが大変な内容はスキルにしておくと自分も楽だし、複数人のプロジェクトではルールの統一ができて便利ですね。
コメント
まだコメントはありません。