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 に推論させる方が良いです。

📖 まとめ


📝 練習問題

  1. 基礎問題(難易度⭐):code-review Skill に severity_level 変数を追加し、レビュー出力レベルを制御できるようにしてください。
  2. 応用問題(難易度⭐⭐):環境選択、テストスキップ、ロールバック戦略の変数をサポートするパラメータ化デプロイ Skill を作成してください。
  3. チャレンジ問題(難易度⭐⭐⭐):型チェック、依存関係(例:production には approver が必要)、動的デフォルト値を処理する変数検証システムを設計してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%