pi スキルの動的シェル補間(pi-skill-interpolation)

Tool

概要

pi-skill-interpolation は、pi(pi-mono)用のスキル記述ファイル(SKILL.md)内に埋め込んだシェルコマンドの出力でプレースホルダを動的に置換する拡張です。SKILL.md の前書き(frontmatter)で allowed-tools を指定しておくと、その許可に従って !command“ 形式の補間を実行し、置換後のスキル内容をモデルへ渡します。これにより、PR の差分やリポジトリの状態など、実行時のコンテキストを反映したスキル記述を簡潔に管理できます。Claude Code の補間構文と互換性があり、スキルベースワークフローでの自動化を補助します。

GitHub

リポジトリの統計情報

  • スター数: 2
  • フォーク数: 0
  • ウォッチャー数: 2
  • コミット数: 2
  • ファイル数: 3
  • メインの言語: TypeScript

主な特徴

  • SKILL.md 内で !command 形式を使い、コマンドの出力をその場で補間して置換。
  • frontmatter の allowed-tools による許可制(ツール/コマンドのホワイトリスト)で実行を制御。
  • Claude Code の補間構文と互換性あり、既存のワークフローに導入しやすい。
  • 軽量な TypeScript 実装で、pi のスキル実行前処理として簡単に組み込める。

技術的なポイント

pi-skill-interpolation は、「スキルの元データ(SKILL.md)をモデルに渡す前にプレプロセスして動的値を埋め込む」ことを主目的とする小さなユーティリティです。実装は TypeScript で、主な処理は次の流れになります:SKILL.md を読み込み、YAML frontmatter をパースして allowed-tools を取得し、本文中の補間シンタックス(例: !gh pr diff)を正規表現等で検出します。各補間トークンについて、frontmatter の許可設定と照合して実行可否を判定し、許可されていれば安全にサブプロセスを起動してコマンドを実行(child_process.exec/execFile 等を利用)して標準出力を取得、取得した出力で該当トークンを置換します。置換後の完全な SKILL.md をモデルへ渡すため、モデルが受け取るプロンプトは補間済みのコンテンツになります。

設計上の注意点として、任意コマンドの実行はセキュリティリスクを伴うため、allowed-tools によるホワイトリスト方式を採用している点が重要です。許可表現はツール名とパターン(例: Bash(git:)、Bash(gh:))のような形式を想定しており、コマンド名やサブコマンドに基づく制限を行います。また、実行時のタイムアウト、標準エラーの取り扱い、出力のトリミングやエスケープ処理、あるいは改行やバイナリデータの扱いといった実装上の実務的課題が存在します。TypeScript を使うことで型安全に frontmatter を扱い、将来的な拡張(例: 非同期補間、キャッシュ、より厳密なサンドボックス実行)も行いやすくなっています。小規模なツールながら、スキルの再現性と安全性のバランスを取る設計がなされている点が特徴です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • index.ts: file
  • package.json: file

まとめ

小さな拡張でスキル記述を動的化し、pi ワークフローの表現力を高める実用ツール。

リポジトリ情報:

READMEの抜粋:

⚡ pi-skill-interpolation

Dynamic shell interpolation for pi skills. Embed !command“ in your SKILL.md and the output replaces the placeholder before the model sees it.

Compatible with Claude Code’s skill interpolation syntax.

What it does

---
name: pr-summary
description: Summarize changes in a pull request
allowed-tools: Bash(git:*) Bash(gh:*)
---

- PR diff: !`gh pr diff`
- Cha...