
skillscript v0.39.1
Skillscript — エージェントワークフローを作成するための小さな宣言型言語。ランタイム、コンパイラ、CLI。
安全で再利用可能な自動化をエージェントが作成。
TL;DR —
npm install -g skillscript-runtime && skillfile init && skillfile dashboard。クイックスタートを参照。
Skillscriptとは?
Skillscriptは、「バイナリの代わりにスキルを構築するならMakefileはどのように見えるか?」という問いから生まれました。答えは、Makeに触発された制約のある言語と、エージェントの推論を永続的で検査可能な自動化に変えるランタイムです。エージェントがスキルを作成し、あなたが何ができるかを承認すると、毎回同じ方法で実行されます。
これは、エージェントに無制限のシェルアクセス、任意のパッケージインストール、または本番環境の認証情報への直接制御を与えることなく、定期的なワークフローを作成・実行させたいチーム向けに構築されています。
エージェントがスキルを作成します。人間がレビューし承認します。ランタイムは設定されたコネクタ、許可リスト、セキュリティポリシーを通じてそれを実行します。
npm install -g skillscript-runtime
skillfile init
skillfile dashboard
次に、エージェントをMCPに接続します: http://localhost:7878/rpc そしてスキルの作成を依頼します。
なぜ使用するのか?
エージェントは通常、日常的なタスクをゼロから再導出します。これにより、コスト、レイテンシ、動作のドリフトが増加します。
Skillscriptは、エージェントが学習した手順を名前付きで再利用可能なアーティファクトに結晶化させることができます。これは以下が可能です:
- タスク全体を再計画することなく繰り返し実行
- 人間による検査とバージョン管理
- 承認前に検証
- 承認されたツール、ファイル、コマンド、認証情報に制限
- 他のスキルと組み合わせる
Skillscriptはオーケストレーション専用です。計算はツールとコネクタ内に留まり、スキルは小さな宣言型文法を通じてそれらの機能を調整します。これにより、定期的なワークフローにおける最先端モデルのトークン使用量を大幅に削減できます。推論コストはスキルが作成される際に一度支払われ、その後の実行は決定論的に行われ、日常的なサブタスクはより安価なローカルモデルに委ねられます。
なぜPythonやBashではないのか?
PythonとBashは実装作業には依然として有用です。問題は、エージェントが作成したスクリプトがホストへの無制限アクセスで無人実行されるリスクです。
Skillscriptはその実行面を狭めます:
- 任意のインポート、パッケージインストール、
eval、サブプロセスエスケープの禁止 - コネクタを介した外部システムへのアクセス
- デフォルト拒否のシェルとファイルシステム許可リスト
- 実行前の静的検証
- 副作用のあるスキルに対するオプションのオペレータ署名
- スキルに埋め込まれるのではなくランタイムが保持する認証情報
目標はスクリプトを置き換えることではありません。スクリプトやAPIを、オペレータが明示的に公開する機能の背後に配置することです。
スケーリング上の理由もあります。任意のコードをレビューすることは、そのコードができるすべてのことを監査することを意味し、熟練した読者を必要とします。Skillscriptはその全効果範囲をページ上に明示するため、エージェントが誰もコードを読むよりも速く作成する場合でも承認は扱いやすく、システムが許可すべきことを知っているオペレータは、ロジックを再読するのではなく宣言された効果に基づいて承認できます。
スキル
スキルは、変数、操作、依存関係、出力テンプレートを持つ型付き宣言型ワークフローです。
# Skill: hello
# Status: Approved
# Description: Greet someone by name.
# Vars: WHO=world
Hello, ${WHO}!
これは完全で実行可能なスキルです。本文が出力としてレンダリングされます。
スキルはコネクタの呼び出し、分岐、ループ、他のスキルの実行、イベントへの応答、スケジュール実行も可能です:
# Skill: daily-disk-check
# Status: Approved
# Triggers: cron:"0 6 * * *"
# Autonomous: true
Snapshot written for ${NOW}.
snapshot:
shell(command="df -h --output=source,pcent,target") -> USAGE
file_write(
path="/var/log/skillscript/disk-${EVENT.fired_at_unix}.txt",
content="${USAGE}"
)
default: snapshot
ランタイムは、オペレータがバイナリとパスを許可リストに追加するまで、シェルコマンドとファイル書き込みを拒否します。
仕組み
- 作成: MCPに接続されたエージェントが利用可能なツールを発見し、スキルを作成し、リントします。セキュアモードでは、
Draftとして届き、承認されるまで無効です。 - レビュー: 人間がスキルを検査し承認します。セキュアモードでは、承認時に承認されたコンテンツにオペレータ保持のキーで署名されます。
- 実行: スキルはCLI、MCP、cron、HTTPイベント、または他のスキルから実行されます。
- 観察: ランタイムはトレース、出力、失敗、ブロックされた操作を記録します。
スキルは3つの役割を果たせます:
| 種類 | 目的 |
|---|---|
| ヘッドレス | 自律的に実行し、出力をシステムまたは人間に送信 |
| 拡張 | 最先端エージェントのためのコンテキストを準備 |
| テンプレート | エージェントに再利用可能な手順を提供 |
クイックスタート
1. インストールしてランタイムを開始
npm install -g skillscript-runtime
skillfile init
skillfile dashboard --host 127.0.0.1 --port 7878
http://localhost:7878 を開きます。
--host 0.0.0.0は、他のコンテナやマシンがランタイムに到達する必要がある場合のみ使用し、公開されたイングレスを適切に保護してください。
2. MCPサーバーをエージェントに追加
{
"mcpServers": {
"skillscript": {
"type": "http",
"url": "http://localhost:7878/rpc"
}
}
}
3. エージェントにスキルの作成を依頼
名前で挨拶するスキルを作成してください。
エージェントがMCPを通じてスキルを作成します。ダッシュボードまたはCLIで承認してください:
skillfile approve hello
skillfile execute hello
コネクタとセキュリティ
スキルは直接の認証情報ではなく、設定されたコネクタを通じて外部システムにアクセスします。コネクタはMCPツール、データストア、ローカルモデル、エージェント配信チャネル、またはカスタムランタイム機能を公開できます。
重要なオペレータ制御設定:
| 設定 | デフォルト |
|---|---|
SKILLSCRIPT_SHELL_ALLOWLIST | すべてのバイナリを拒否 |
SKILLSCRIPT_FS_ALLOWLIST | すべてのパスを拒否 |
SKILLSCRIPT_SECURED_MODE | オフ |
SKILLSCRIPT_MAX_DEADLINE_SECONDS | 未設定(上限なし) |
SKILLSCRIPT_SUPERVISOR_SKILL | 未設定(オフ) |
SKILLSCRIPT_SECRET_<NAME> | 未設定 |
シークレットはランタイムによって解決され、承認されたシンクにのみ渡されます。スキルは生の値を印刷または検査できません。
設定ガイドとコネクタリファレンスを参照してください。
一般的なコマンド
skillfile lint <skill>
skillfile compile <skill>
skillfile execute <skill>
skillfile approve <skill>
skillfile diagram <skill>
skillfile fires <skill>
skillfile replay <trace_id>
skillfile health
オプションについては skillfile <command> --help を実行してください。
ドキュメント
- 言語リファレンス
- 設定
- 導入プレイブック
- 導入エージェントガイド
- コネクタコントラクト
- アップグレード
- 例
- その他の例はウェブサイトで
ステータス
Skillscriptはpre-1.0です。コア言語とコネクタコントラクトは安定化中であり、外部での採用と配布作業は継続中です。
コントリビューション
バグ報告と機能リクエストはIssueを通じて歓迎します。文法変更を提案する前にIssueを開き、設計について最初に議論してください。
ライセンス
MIT。 LICENSEを参照してください。