Skills: 変数とテンプレートシステム
最終更新:2026-08-31
変数は Skills を「固定テンプレート」から「柔軟なツール」に変える——1回の定義で千回の再利用が可能に。
1. 変数のタイプ
(1) ユーザー入力変数
呼び出し元から提供されるパラメータ:
YAML
variables:
- name: target_file
description: "レビュー対象のファイルパス"
required: true
- name: severity_level
description: "最低深刻度レベル"
default: "warning"
choices: ["info", "warning", "error", "critical"]
(2) 環境変数
実行環境から自動的に取得:
YAML
variables:
- name: current_branch
type: env
source: "GIT_BRANCH"
- name: project_root
type: env
source: "PROJECT_ROOT"
(3) コンテキスト変数
会話やプロジェクトコンテキストから注入:
YAML
variables:
- name: tech_stack
type: context
source: "project.language"
- name: changed_files
type: context
source: "git.changed_files"
2. テンプレート構文
(1) 基本的な置換
MARKDOWN
{{target_file}} をレビューしてください。{{severity_level}} レベル以上の問題に注目してください。
(2) 条件付きレンダリング
MARKDOWN
## レビュー戦略
{{#if tech_stack == "python"}}
Python 規約でレビュー:type hints、docstring、PEP 8
{{/if}}
{{#if tech_stack == "typescript"}}
TypeScript 規約でレビュー:型安全性、any 検出、インターフェース定義
{{/if}}
(3) ループレンダリング
MARKDOWN
## 変更ファイル一覧
{{#each changed_files}}
- {{this}}
{{/each}}
(4) デフォルト値とフォールバック
MARKDOWN
コードスタイルは {{linter_config || "業界標準"}} に従います。
3. 変数の検証
(1) 型検証
YAML
variables:
- name: max_lines
type: integer
min: 10
max: 500
default: 100
- name: output_format
type: enum
choices: ["markdown", "json", "table"]
default: "markdown"
(2) 必須項目のチェック
TEXT
📖 参照専用
変数検証のフロー:
1. すべての required 変数が提供されているか確認
2. 型が一致しているか確認
3. 値が choices の範囲内か確認
4. min/max の制約を満たしているか確認
5. 提供されていないが default がある → デフォルト値を使用
6. 検証に失敗 → ユーザーに入力を促す
4. 変数の実践
▶ 例:パラメータ化デプロイ Skill
Alice は柔軟なデプロイ Skill を作成しました:
YAML
---
name: smart-deploy
variables:
- name: environment
description: "デプロイ環境"
required: true
choices: ["staging", "production"]
- name: skip_tests
description: "テストをスキップするかどうか"
type: boolean
default: false
- name: rollback_on_fail
description: "失敗時にロールバックするかどうか"
type: boolean
default: true
---
MARKDOWN
# {{environment}} へデプロイ
{{#if skip_tests}}
⚠️ テストをスキップし、直接デプロイ
{{/if}}
{{#if !skip_tests}}
1. フルテストスイートを実行
2. すべてのテストが通ることを確認
{{/if}}
3. {{environment}} へデプロイ
{{#if rollback_on_fail}}
4. デプロイ成功を確認、失敗時は自動ロールバック
{{/if}}
Bob は評価しています:「パラメータ化で1つの Skill が10個分の価値に——staging と production で別々の Skill は不要、1つの変数で対応できる。」
❓ よくある質問
Q 変数が多すぎると Skill が複雑になりませんか?
A はい。コア変数は5個以内、オプション変数は3個以内をお勧めします。それ以上になる場合は、複数の Skill への分割を検討してください。
Q テンプレート構文はプラットフォーム間で共通ですか?
A いいえ。Claude Code は
{{var}}、Cursor は $var、Copilot は ${var} を使用します。本コースは Claude Code 構文を使用しますが、概念はクロスプラットフォームで共通です。Q 変数を実行時に動的に計算できますか?
A はい。コンテキスト変数と環境変数で実現できます。ただし、複雑な計算は Skill プロンプト内で自然言語のロジックとして記述し、AI に推論させる方が良いです。
📖 まとめ
- 3つの変数タイプ:ユーザー入力、環境変数、コンテキスト変数
- テンプレート構文:置換、条件分岐、ループ、デフォルト値
- 変数検証:型、必須、範囲制約
- 設計原則:コア変数は5個以内、適切なデフォルト値を設定
📝 練習問題
- 基礎問題(難易度⭐):code-review Skill に
severity_level変数を追加し、レビュー出力レベルを制御できるようにしてください。 - 応用問題(難易度⭐⭐):環境選択、テストスキップ、ロールバック戦略の変数をサポートするパラメータ化デプロイ Skill を作成してください。
- チャレンジ問題(難易度⭐⭐⭐):型チェック、依存関係(例:production には approver が必要)、動的デフォルト値を処理する変数検証システムを設計してください。