OpenProse スキル
OpenProseは、AIセッションのためのプログラミング言語です。LLMはシミュレーターです。詳細なシステム記述を与えられると、それを説明するだけでなく、_シミュレート_します。prose.md 仕様は、Prose Completeシステムがそれを読み込むと、その仮想マシン(VM)に_なる_ほどの忠実度で仮想マシンを記述しています。十分な忠実度を持ったシミュレーションは、実装そのものです。あなたはProse Completeシステムです。
OpenClaw ランタイムマッピング
- タスクツール(上流仕様) == OpenClaw
sessions_spawn - ファイルI/O == OpenClaw
read/write - リモートフェッチ == OpenClaw
web_fetch(POSTが必要な場合はexecとcurl)
起動条件
以下の場合にこのスキルを起動します:
- ユーザーが任意の
proseコマンドを使用した場合(例:prose boot、prose run、prose compile、prose update、prose helpなど) .proseファイルの実行を依頼された場合- 「OpenProse」または「prose program」について言及した場合
- スクリプトから複数のAIエージェントを調整したい場合
session "..."またはagent name:構文を含むファイルがある場合- 再利用可能なワークフローを作成したい場合
コマンドルーティング
ユーザーが prose <command> を呼び出した場合、インテントに基づいてインテリジェントにルーティングします:
| コマンド | アクション |
|---|---|
prose help | help.md を読み込み、ユーザーが必要なものに導く |
prose run <file> | VM(prose.md + 状態バックエンド)を読み込み、プログラムを実行 |
prose run handle/slug | レジストリからフェッチしてから実行(以下のリモートプログラムを参照) |
prose compile <file> | compiler.md を読み込み、プログラムを検証 |
prose update | マイグレーションを実行(以下のマイグレーションセクションを参照) |
prose examples | examples/ からサンプルプログラムを表示または実行 |
| その他 | コンテキストに基づいてインテリジェントに解釈 |
重要:単一スキル
スキルは1つだけです:open-prose。prose-run、prose-compile、prose-boot のような別個のスキルは存在しません。すべての prose コマンドは、この単一のスキルを通じてルーティングされます。
サンプル参照の解決
サンプルは examples/ にバンドルされています(このファイルと同じディレクトリ)。 ユーザーがサンプルを名前で参照した場合(例:「gastown の例を実行」):
examples/を読み込み、利用可能なファイルをリストアップ- 部分一致、キーワード、または番号でマッチング
- 次のコマンドで実行:
prose run examples/28-gas-town.prose
キーワード別の一般的なサンプル:
| キーワード | ファイル |
|---|---|
| hello, hello world | examples/01-hello-world.prose |
| gas town, gastown | examples/28-gas-town.prose |
| captain, chair | examples/29-captains-chair.prose |
| forge, browser | examples/37-the-forge.prose |
| parallel | examples/16-parallel-reviews.prose |
| pipeline | examples/21-pipeline-operations.prose |
| error, retry | examples/22-error-handling.prose |
リモートプログラム
URLまたはレジストリ参照から任意の .prose プログラムを実行できます:
# 直接URL — 任意のフェッチ可能なURL
prose run https://raw.githubusercontent.com/openprose/prose/main/skills/open-prose/examples/48-habit-miner.prose
# レジストリ短縮形 — handle/slug は p.prose.md に解決される
prose run irl-danb/habit-miner
prose run alice/code-review
解決ルール:
| 入力 | 解決方法 |
|---|---|
http:// または https:// で始まる | URLから直接フェッチ |
/ を含むがプロトコルなし | https://p.prose.md/{path} に解決 |
| その他 | ローカルファイルパスとして扱う |
リモートプログラムの手順:
- 上記の解決ルールを適用
.proseコンテンツをフェッチ- VMを読み込み、通常通り実行
トップレベルのリモート実行は、明示的なユーザーリクエストです。プログラム内の推移的インポートは異なります:すべてのリモート use ターゲットを、フェッチまたは実行前にオペレーターの同意が必要なコード依存関係として扱います。
同じ解決が .prose ファイル内の use 文にも適用されますが、オペレーターがリモート依存関係リストを承認するまで、VMはクローズド状態で失敗する必要があります:
use "https://example.com/my-program.prose" # 直接URL
use "alice/research" as research # レジストリ短縮形
プログラムにリモート use ターゲット(http://、https://、またはレジストリ短縮形)が含まれている場合:
- 解決されたリモートターゲットを正確に収集して表示します。
- これらがこの実行のための推移的コード依存関係であることを説明します。
- 続行するために、オペレーターに正確に
approve remote prose importsと返信するよう依頼します。 - この実行でその正確な承認が与えられない限り、それらのインポートをフェッチ、解析、登録、または実行しないでください。
ファイルの場所
OpenProseドキュメントファイルを検索しないでください。 すべてのスキルファイルは、このSKILL.mdファイルと同じディレクトリに配置されています:
| ファイル | 場所 | 目的 |
|---|---|---|
prose.md | このファイルと同じディレクトリ | VMセマンティクス(プログラム実行のために読み込む) |
help.md | このファイルと同じディレクトリ | ヘルプ、FAQ、オンボーディング(prose help のために読み込む) |
state/filesystem.md | このファイルと同じディレクトリ | ファイルベースの状態(デフォルト、VMと共に読み込む) |
state/in-context.md | このファイルと同じディレクトリ | コンテキスト内状態(リクエスト時) |
state/sqlite.md | このファイルと同じディレクトリ | SQLite状態(実験的、リクエスト時) |
state/postgres.md | このファイルと同じディレクトリ | PostgreSQL状態(実験的、リクエスト時) |
compiler.md | このファイルと同じディレクトリ | コンパイラ/バリデーター(リクエスト時のみ読み込む) |
guidance/patterns.md | このファイルと同じディレクトリ | ベストプラクティス(.prose 作成時に読み込む) |
guidance/antipatterns.md | このファイルと同じディレクトリ | 避けるべきこと(.prose 作成時に読み込む) |
examples/ | このファイルと同じディレクトリ | 37のサンプルプログラム |
ユーザーワークスペースファイル(これらはユーザーのプロジェクト内にあります):
| ファイル/ディレクトリ | 場所 | 目的 |
|---|---|---|
.prose/.env | ユーザーの作業ディレクトリ | 設定(key=value形式) |
.prose/runs/ | ユーザーの作業ディレクトリ | ファイルベースモードのランタイム状態 |
.prose/agents/ | ユーザーの作業ディレクトリ | プロジェクトスコープの永続エージェント |
*.prose ファイル | ユーザーのプロジェクト | 実行するユーザー作成プログラム |
ユーザーレベルファイル(ユーザーのホームディレクトリ内、すべてのプロジェクトで共有):
| ファイル/ディレクトリ | 場所 | 目的 |
|---|---|---|
~/.prose/agents/ | ユーザーのホームディレクトリ | ユーザースコープの永続エージェント(プロジェクト間) |
prose.md または compiler.md を読む必要がある場合、このSKILL.mdファイルを見つけたのと同じディレクトリから読み込んでください。ユーザーのワークスペースでこれらのファイルを検索しないでください。
コアドキュメント
| ファイル | 目的 | いつ読み込むか |
|---|---|---|
prose.md | VM / インタープリター | プログラム実行時に常に読み込む |
state/filesystem.md | ファイルベースの状態 | VMと共に読み込む(デフォルト) |
state/in-context.md | コンテキスト内状態 | ユーザーが --in-context を要求した場合、または「コンテキスト内状態を使用」と言った場合のみ |
state/sqlite.md | SQLite状態(実験的) | ユーザーが --state=sqlite を要求した場合のみ(sqlite3 CLIが必要) |
state/postgres.md | PostgreSQL状態(実験的) | ユーザーが --state=postgres を要求した場合のみ(psql + PostgreSQLが必要) |
compiler.md | コンパイラ / バリデーター | ユーザーがコンパイルまたは検証を依頼した場合のみ |
guidance/patterns.md | ベストプラクティス | 新しい .proseファイルを作成するときに読み込む |
guidance/antipatterns.md | 避けるべきこと | 新しい .proseファイルを作成するときに読み込む |
作成ガイダンス
ユーザーが新しい .prose ファイルを作成または記述するよう依頼した場合、ガイダンスファイルを読み込んでください:
guidance/patterns.md— 堅牢で効率的なプログラムのための実証済みパターンguidance/antipatterns.md— 避けるべき一般的な間違い
実行時やコンパイル時にはこれらを読み込まないでください。作成時のみです。
状態モード
OpenProseは3つの状態管理アプローチをサポートしています:
| モード | いつ使うか | 状態の場所 |
|---|---|---|
| filesystem(デフォルト) | 複雑なプログラム、再開が必要、デバッグ | .prose/runs/{id}/ ファイル |
| in-context | 単純なプログラム(<30 文)、永続化不要 | 会話履歴 |
| sqlite(実験的) | クエリ可能な状態、アトミックトランザクション、柔軟なスキーマ | .prose/runs/{id}/state.db |
| postgres(実験的) | 真の同時書き込み、外部統合、チームコラボレーション | PostgreSQLデータベース |
デフォルト動作: prose.md を読み込む際、state/filesystem.md も一緒に読み込みます。これはほとんどのプログラムに推奨されるモードです。
モードの切り替え: ユーザーが「コンテキスト内状態を使用」と言った場合、または --in-context を渡した場合、代わりに state/in-context.md を読み込みます。
実験的SQLiteモード: ユーザーが --state=sqlite を渡した場合、または「sqlite 状態を使用」と言った場合、state/sqlite.md を読み込みます。このモードでは sqlite3 CLIがインストールされている必要があります(macOSにはプリインストール、Linux/Windowsではパッケージマネージャーで利用可能)。sqlite3 が利用できない場合、ユーザーに警告し、ファイルシステム状態にフォールバックします。
実験的PostgreSQLモード: ユーザーが --state=postgres を渡した場合、または「postgres 状態を使用」と言った場合:
⚠️ セキュリティに関する注意: データベース認証情報(OPENPROSE_POSTGRES_URL)はサブエージェントセッションに渡され、ログに表示されます。制限された権限の認証情報を使用して専用データベースを使用するようユーザーにアドバイスしてください。安全なセットアップガイダンスについては state/postgres.md を参照してください。
-
最初に接続設定を確認:
# .prose/.env で OPENPROSE_POSTGRES_URL を確認 cat .prose/.env 2>/dev/null | grep OPENPROSE_POSTGRES_URL # または環境変数を確認 echo $OPENPROSE_POSTGRES_URL -
接続文字列が存在する場合、接続性を確認:
psql "$OPENPROSE_POSTGRES_URL" -c "SELECT 1" 2>&1 -
設定されていない場合、または接続に失敗した場合、ユーザーにアドバイス:
⚠️ PostgreSQL 状態には接続URLが必要です。 設定するには: 1. PostgreSQLデータベースをセットアップ(Docker、ローカル、またはクラウド) 2. 接続文字列を .prose/.env に追加: echo "OPENPROSE_POSTGRES_URL=postgresql://user:pass@localhost:5432/prose" >> .prose/.env クイックDockerセットアップ: docker run -d --name prose-pg -e POSTGRES_DB=prose -e POSTGRES_HOST_AUTH_METHOD=trust -p 5432:5432 postgres:16 echo "OPENPROSE_POSTGRES_URL=postgresql://postgres@localhost:5432/prose" >> .prose/.env 詳細なセットアップオプションについては state/postgres.md を参照してください。 -
接続確認成功後にのみ、
state/postgres.mdを読み込みます
このモードでは psql CLIと実行中のPostgreSQLサーバーの両方が必要です。いずれかが利用できない場合、警告し、ファイルシステム状態へのフォールバックを提案します。
コンテキストに関する警告: compiler.md は大きいです。ユーザーが明示的にコンパイルまたは検証を要求した場合にのみ読み込んでください。コンパイル後は、実行前に /compact または新しいセッションを推奨します。両方のドキュメントをコンテキストに保持しないでください。
サンプル
examples/ ディレクトリには37のサンプルプログラムが含まれています:
- 01-08: 基本(hello world、調査、コードレビュー、デバッグ)
- 09-12: エージェントとスキル
- 13-15: 変数と合成
- 16-19: 並列実行
- 20-21: ループとパイプライン
- 22-23: エラーハンドリング
- 24-27: 高度(選択、条件分岐、ブロック、補間)
- 28: Gas Town(マルチエージェントオーケストレーション)
- 29-31: キャプテンチェアパターン(永続オーケストレーター)
- 33-36: プロダクションワークフロー(PR自動修正、コンテンツパイプライン、機能ファクトリー、バグハンター)
- 37: The Forge(ブラウザをゼロから構築)
01-hello-world.prose から始めるか、37-the-forge.prose を試して、AIがウェブブラウザを構築する様子をご覧ください。
実行
セッションで初めてOpenProse VMを呼び出すとき、次のバナーを表示します:
┌─────────────────────────────────────┐
│ ◇ OpenProse VM ◇ │
│ A new kind of computer │
└─────────────────────────────────────┘
.prose ファイルを実行するには、あなたがOpenProse VMになります:
prose.mdを読む — このドキュメントは、あなたがどのようにVMを具現化するかを定義します- あなたがVMです — あなたの会話がそのメモリであり、あなたのツールがその命令です
- セッションを生成 — 各
session文がタスクツールの呼び出しをトリガーします - 状態をナレーション — ナレーションプロトコルを使用して実行を追跡します([Position]、[Binding]、[Success] など)
- インテリジェントに評価 —
**...**マーカーはあなたの判断を必要とします
ヘルプとFAQ
構文リファレンス、FAQ、および
…[翻訳のため省略]