spec 1.0 · 規範

仕様内を検索するには、1 ページ版を開き、ブラウザのページ内検索を使用してください。

Leji 仕様

Leji は、AI ネイティブなチームの共有コンテキストレイヤーを定めるオープンな仕様です。人と AI エージェントが作業のたびに読む、リポジトリ所有のコンテキストについて、チームによる保存、統制、読み込み、保守の方法を規定します。

仕様バージョン 1.0.0
ステータス GA。v1.3.0 のリファレンスツールのリリースをもって凍結。互換性を壊す変更には新しいメジャーバージョンが必要です。
編者 Vuong Nguyen
1 ページ版 仕様の全文を 1 ページで

原則(非規範的)#

  1. 指示ではなく意図を。 Leji が捉えるのは、命令形で記述されたベンダーごとの指示ではなく、持続する意図(何を意味し、何が成立していなければならず、なぜそうなのか)です。人もエージェントも、宣言された意図とタスクの文脈から行動を導き出します。
  2. 階層ではなく輪。人から人へ、人から AI へ、人から AI を経て人へ。この 3 つはいずれも、ひとつの共有コンテキストレイヤーを中心とする主要な流れです。アクセスは平等でも、権限は平等ではありません。コンテキストレイヤーにアクセスできる者は全員がその全体を読み、誰でも提案できますが、承認するのは人です。参加はツールではなくロールに基づきます。git に直接触れない参加者も、この輪では対等な存在です。アクセス自体を付与するのはバージョン管理システムであり、Leji ではありません。輪の範囲は、そのコンテキストレイヤーの読み手に限られます。
  3. 善意ではなく仕組みを。共有コンテキストは、放置すれば劣化します。現実は変わっても文書は自動では変わらず、ウィキを最新に保つ仕組みもありません。Leji で強制力を持つのは善意ではなく、機械的な仕組みです。変更はコードと同じレビューのゲートを通り、機械的なずれがあればツールのチェックは失敗し、鮮度の期限によって古くなったものが識別されます。古くなったコンテキストが黙って現行のものとして扱われることはありません(規範については governance.md → 鮮度)。

この仕様の残りは、これら 3 つの原則から規範的に導かれるものです。

適合性の言葉づかい#

この仕様における MUSTMUST NOTREQUIREDSHOULDSHOULD NOTRECOMMENDEDMAYOPTIONAL の各語は、RFC 2119 に記載されたとおりに解釈されます。

この仕様の引用(非規範的)#

セクションを引用する際は、見出し、仕様バージョン、セクションアンカーへのパーマリンクを記載してください。仕様サイトでは、どの見出しにもホバーするとアンカーが表示されます。

  • 形式: Leji 1.0, §セクション: https://leji.org/spec/<document>/#<anchor>
  • 例: Leji 1.0, §The circle, normatively: https://leji.org/spec/governance/#the-circle-normatively

バージョン(Leji 1.0)は必ず示してください。互換性を壊す変更は新しいメジャーバージョンとして公開されるため、バージョンを固定した引用なら、仕様が更新された後も正確さが保たれます。

用語#

以下の語は、すべての規範的文書を通じて一貫した意味で使われます。

用語 意味
context layer(コンテキストレイヤー) この仕様が統制する成果物。リポジトリが所有し、バージョン管理された、人が読める文書と機械可読な成果物の集合であり、チームの持続する運用上のコンテキストを表します。曖昧さを避ける完全形は「Leji コンテキストレイヤー」です。常に「コンテキストレイヤー」と書いてください。単なる「レイヤー」は、フェデレーションで数えられる個体(兄弟、ホスト、マウントされた、制限された、コンパニオン、到達不能なコンテキストレイヤー)を指すときに限ります。
agent(エージェント) 行為する AI システム。リポジトリのコンテキストを読み込み、作業を行うか支援し、変更を提案することがあります。規範における行為者を指す名詞です。
person / people(人) 人間の参加者。承認の権限を持つのは人です。
participant(参加者) 人またはエージェント。
audience(読み手) リポジトリの権限、およびチェックアウトを見せているファイルシステムや共有ドライブの権限によって、そのコンテキストレイヤーを読むことを許された人とエージェント。「全員が読む」の範囲はそのコンテキストレイヤーの読み手に限られます。読み手が異なる場合は、ひとつのレイヤーの中で内容を出し分けるのではなく、別のコンテキストレイヤーで応じます。
agent host(エージェントホスト) エージェントがそれを通じて動作する製品やランタイム(たとえば Claude Code、Codex、Cursor)。ベンダーアダプタが設定するのはエージェントホストです。
tool(ツール) エージェントが使う、呼び出し可能な能力(シェル、検索、MCP サーバー)。製品名を指すものではありません。
vendor adapter(ベンダーアダプタ) ブートプロファイルへ誘導するだけで、正典の内容を持たないエージェントホストのエントリポイントファイル。ホストをまたいで使えるもの(AGENTS.md)もあれば、単一のホスト向けのもの(CLAUDE.md.cursor/rules)もあります。規則はどちらも同じで、違いはツールが既定で何を生成するかだけです。
boot profile(ブートプロファイル) コンテキストレイヤーの、エージェントに依存しないエントリポイント。人にとってもエージェントにとっても同じです。
agent profile(エージェントプロファイル) エージェント向けの、ロールごとの読み込みと姿勢を定めた文書。
AI 形容詞的に(AI ネイティブ)、および流れの名称である人から人へ人から AI へ人から AI を経て人への中で使われます。流れの名称における「AI」は、エージェントホストを通じて動作するエージェントを指します。
model(モデル) エージェントが動く基盤となる予測エンジン。コンテキストレイヤーを読むのはモデルではなくエージェントです。エンジンを行為者と区別しなければならない場合(たとえばホスト固有の仕組みとしてのモデル選択)にのみ現れます。

階層を一行で表すと、モデルエージェントを動かし、エージェントエージェントホストを通じて動作し、ツールを呼び出します。コンテキストレイヤーが対象とするのはエージェントとホストであり、モデルを直接対象にはしません。この仕様は、このスタックのどの層に対しても中立です。使用するモデル、動作するエージェント、経由するホストにかかわらず、参照するコンテキストレイヤーは同じです。「LLM」を用語に含めていないのは意図的です。これはモデルの一種を指す語であり、この仕様は同じ原則に基づいてモデル中立だからです。

適用範囲の境界。 Leji 1.0 が統制するのは、エージェントと、リポジトリのコンテキストを読み込むエージェントホストです。エージェント的でない AI(補完、インライン提案、リポジトリのコンテキストを持たないチャット)は、コンテキストレイヤーを読み込むエージェントホストの一部として動作する場合を除き、規範の対象外です。

規範的文書#

読む順に並べます。

文書 定めるもの
context-layer.md コンテキストレイヤー、マニフェスト、ルート、ベンダーアダプタの規則
content-categories.md 5 つの論理的なコンテンツカテゴリと、インデックスファイルが内容をそれらに割り当てる方法
boot-profile.md すべてのエージェントホストが読み込む、エージェントに依存しないエントリポイント
machine-readable-surface.md マニフェスト、インデックス、変更履歴、プロファイル、決定記録
decisions.md 決定記録
governance.md 提案と承認、所有、収録と削除、鮮度
distribution.md モノレポ、複数リポジトリのサブモジュール、フェデレーション
conformance.md 4 つの適合レベルとチェックリスト
versioning.md 仕様とスキーマのバージョニング

../schemas/ にある JSON Schema は、機械可読な成果物について規範的です。../rationale/../adoption/ にある文書は非規範的です。

1.0 の適用範囲#

範囲に含まれるもの: コンテキストの提供、制約の設定、決定の記録、変更のレビュー、再利用可能なパターンの収集。エージェントに依存しない接続とベンダーアダプタ(限定的)。所有と継続性の意味づけ(限定的)。

拡張の境界。 Leji 1.0 が規定するのは、正典となる共有コンテキストレイヤーです。すなわち、チームのコンテキストをどのように記述し、所有し、バージョン管理し、提案し、承認し、インデックスし、読むかです。そのコンテキストレイヤーの周囲で動く実行プロトコル、つまりタスクエンベロープ、一般化された証拠のプロトコル、エージェント間の引き継ぎ、ツール権限のプロトコル、オーケストレーションは、意図的に規定しません。これらは前提条件ではなく拡張プロトコルです。1.0 に適合するコンテキストレイヤーは、それらがなくても有用であり続けなければなりません(MUST)。また実装は、コンテキストレイヤーを読み、提案し、レビューし、承認し、検証するために、それらを必要としてはなりません(MUST NOT)。これらは、実際の運用によって有効性が示された時点で、この言語を完成させるものです。机上で考案するものではありません。

Leji はプログラミング言語でも、DSL でも、ランタイムでも、SaaS でもありません。markdown の規約、小さな JSON スキーマ、ガバナンスの意味づけから成ります。