Manifest-driven Skills ガイド
River Review のスキルを「マニフェスト(YAML/Markdown)」で柔軟に記述し、複数フェーズやファイルグロブにまたがって適用するための実装ガイドです。schemas/skill.schema.json に沿ったサンプルと、検証・運用手順をまとめています。
1. スキル定義フォーマット(Markdown / YAML)
Markdown(フロントマター)
---
id: observability
name: Logging and Observability Guard
description: 例外を握り潰さず、適切にロギングすることを促す
phase:
- midstream
applyTo:
- 'src/**/*.ts'
tags:
- observability
severity: major
inputContext:
- diff
outputKind:
- findings
modelHint: balanced
---
## Goal
- 例外の握り潰しやロギング漏れを減らす。
YAML(ネスト構造)
metadata:
id: test-coverage
name: Test Coverage Guard
description: 追加機能に対するテスト不足を検知する
phase: [downstream]
files: ['src/**/*.ts', 'tests/**/*.ts'] # files は metadata.applyTo のエイリアス(フロントマターの applyTo と同等)
severity: major
inputContext: [tests]
outputKind: [findings]
instruction: |
変更箇所に対応するテストが存在するか確認し、不足していれば具体的な提案を行う。
YAML(フラット構造)
id: security
name: Basic Security Review
description: セキュリティ上の初歩的な落とし穴を検知する
phase: [midstream, downstream]
applyTo: ['**/*.js']
tags: [security]
inputContext: [fullFile]
outputKind: [findings]
instruction: |
ハードコードされた秘密情報や危険な関数呼び出しを確認し、必要に応じて修正案を提示する。
ポイント:
phaseは単一/配列のいずれも許可される。filesはapplyToのエイリアスとして利用できる。- 本文(Markdown の場合は本文、YAML の場合は
instruction)がスキルの指示本文となる。
2. ディレクトリ構成の推奨
skills/core/既定で読み込むスキル群skills/<stream>/community/外部/ライブラリ特化のスキル(例:skills/midstream/community/)skills/private/プロジェクト固有のスキルskills/agent-skills/Agent Skills 仕様のパッケージ群(SKILL.md+references/、River Review の検証対象外)- テスト用フィクスチャは
tests/fixtures/skills/などに分離して管理
3. 検証フロー
- スキーマ検証:
npm run skills:validate - Agent Skills 検証:
npm run agent-skills:validate - Lint/フォーマット:
npm run lint(markdownlint/textlint/Prettierを含む) - ユニットテスト:
npm test(skill-loader 含む)
CI でも同コマンドを実行し、破損したマニフェストを弾く。
4. 運用のヒント
- フェーズごとの適用可否を
phaseで厳密に指定し、不要なスキルの呼び出しを避ける。 - グロブ(
applyTo/files)はできるだけ絞り、誤検知を減らす。 - 拡張フィールドを追加する場合は
x-プレフィックスを付け、将来のスキーマ更新と衝突しないようにする。 - リポジトリルート以外のスキルを読み込む場合は Runner 設定(
skillsDir)や環境変数で明示的に指定する。
5. 既存スキルとの互換性チェックリスト
- 必須フィールド(
idnamedescriptionphaseapplyTo/files)を満たす。 phaseの複数指定に合わせ、Runner 側でフェーズ判定が行われる(matchesPhase)。- Markdown/YAML いずれの形式でも
instruction(本文)が正しく取り出せる。 - 新しいエイリアス・拡張フィールドは既存のツールが無視しても破綻しない。