プログラミング
Lore – コーディングエージェントにチームが下した決定を与える
Lore – give your coding agent the decisions your team made (github.com)
要約
Loreは、チームが過去に下した決定(要件、設計、ロードマップなど)をリポジトリ内の型付きMarkdownとして管理し、コーディングエージェント(Claude Code、Cursorなど)に読み取り専用で提供するツールです。これにより、エージェントはチームの決定に違反することなくコードを生成し、決定の根拠を引用できるようになります。RAGや埋め込みを使用せず、決定論的かつ再現可能な方法で知識を検索し、CI/CDパイプラインでの検証もサポートしています。
全文翻訳
Lore クイックスタート · 比較 · 仕組み · ドキュメント · CLI · Changelog
コーディングエージェントに、チームがすでに下した決定を与えましょう。そうすれば、エージェントはあなたが却下したことをやり直すのをやめます。Loreは、チームの記録された知識(要件、決定、設計、ロードマップ、プロンプト)をリポジトリ内の型付きMarkdownとして保持し、それをMCPを介してClaude Code、Cursor、Claude Desktopに読み取り専用で提供します。これにより、エージェントはあなたの決定に違反する代わりに、それを引用するようになります。RAG、埋め込み、関連性を判断するためのモデル呼び出しは不要です。検索は決定論的で再現可能です。これは、基盤となるオープンソースエンジンであるRAC(Requirements as Code)の上に構築されており、パッケージ、CLI、およびMCPサーバーはracという名前で出荷されます。
比較:
Loreは検索インデックスやメモリツールではありません。エージェントが根拠とする、決定論的な記録システムです。あいまいな検索(RAG、エージェントメモリ)は、あいまいな質問に近いものを見つけるのに優れていますが、Loreは、正確で現在の決定を返し、廃止されたものを拒否するのに優れています。これらはうまく組み合わされます。あいまいに検索し、その後Loreで検証します。
| | Lore | あいまいな検索(RAG / エージェントメモリ) |
|---|---|---|
| 得意なこと | 正確で現在の決定 | 質問に近いものを見つけること |
| 検索 | 決定論的、再現可能 | 類似性に基づいてランク付けされ、実行ごとに異なる |
| 役割 | 信頼できる情報源、読み取り専用 | 高速なインデックスまたは作業コピー |
| CIでの強制 | 強制される(`rac validate` / `rac gate`) | その仕事ではない |
クイックスタート:
エンジンをインストールします:`pip install rac-core`
IDと最初の成果物をスキャフォールドします:`rac quickstart`
エージェントを接続します(リポジトリのルートからClaude Codeを使用):`claude mcp add lore -- rac mcp`
不正な知識が適用されないようにCIで強制します:`rac validate rac/ && rac gate rac/`
インストールコマンド:
| コマンド | 得られるもの |
|---|---|
| `pip install rac-core` | `rac` CLI + `lore` MCPサーバー |
| `pip install 'rac-core[ingest]'` | + DOCX / HTML インポート |
| `pip install 'rac-core[ingest-all]'` | + PDF / PPTX / XLSX インポート |
| `pip install 'rac-core[explorer]'` | + ターミナルエクスプローラー(`rac explorer`) |
Python 3.11+が必要です。`uv tool install rac-core`も機能します。
仕組み:
リポジトリ内の型付きMarkdown。すべての成果物は、小さなフロントマターエンベロープを持つプレーンなMarkdownであり、エンジンはそれを決定論的に分類し、タイプごとのスキーマに対して検証します。提供時には読み取り専用です。MCPサーバーは常に読み取りのみを行います。信頼境界は人間のPRレビューであり、エージェントがストアを変更することはありません。書き込み時に強制されます。`rac validate`および`rac gate`は、不正な形式の成果物、破損したまたはあいまいなリンク、および廃止された決定への参照をCIで、知識が適用される前に拒否します。設計上、エアギャップされています。エンジンはLLM呼び出しもネットワーク呼び出しも行いません。唯一の外部への送信は、同意によってゲートされたコンテンツのない使用状況pingであり、デフォルトではオフになっています。規制されたインストールでは、`rac telemetry off --enterprise`でそれがオフに保たれていることを証明できます(セキュリティ体制、ADR-086)。
エージェントを接続する:
Claude Code(リポジトリのルートから):
`claude mcp add lore -- rac mcp`
Claude Desktop / Cursor(クライアント設定の`mcpServers`):
```json
{
"mcpServers": {
"lore": {
"command": "rac",
"args": ["mcp", "--root", "/absolute/path/to/your/repo"]
}
}
}
```
成果物の作成と強制:
`rac quickstart` # IDの設定 + 最初の成果物のスキャフォールド
`rac new decision adr.md` # 型付き成果物のスキャフォールド(IDを付与)
`rac validate rac/` # ディレクトリ内のすべての成果物をチェック
`rac inspect requirement.md` # そのタイプと完全性を確認
`rac review rac/` # 全リポジトリレビュー、最悪の問題から優先
`rac gate rac/` # マージゲート:検証 + 関係性 + レビュー
既存の決定をインポート:
Confluence、Notion、またはばらばらのMarkdownにすでに決定がありますか?`rac-import`エージェントスキルは、既存のドキュメントを有効な成果物1つに変換し、書き込み前に人間によるレビューのステップを挟みます。
`rac skill install rac-import`
その後、エージェントに自然言語で尋ねます:「この決定ドキュメントをLoreにインポートしてください」。それは、ドキュメントに書かれていることのみから下書きを作成し、提案されるタイプ、タイトル、関係性を確認のために表示し、`rac new`でスキャフォールドし、`rac validate`で完了します。複数フォーマットまたは一括変換には、`rac-ingest`スキルを使用します。
コーパスをエクスポート:
`rac export rac/ --html --out lore.html` # ポータル:全グラフ、1ファイル
`rac export rac/ --okf` # 準拠したOpen Knowledge Formatバンドル
`rac export rac/ --documents` # メモリ/RAGバックエンド用のJSONL
`rac export rac/ --graph` # グラフバックエンド用の型付き決定グラフ
`--documents`および`--graph`モードは、エージェントがあいまいに検索し、その後Loreで検証できるように、外部メモリ、RAG、グラフツールに供給します。CLIリファレンスを参照してください。コネクタ自体は、別の`lore-connectors`コンパニオンに存在します。
Python API:
エンジンはライブラリでもあります。その公開インターフェースは`rac.__all__`です。
```python
from rac import parse_file, classify, find_artifacts
art = parse_file("rac/decisions/adr-001-markdown-first.md")
print(classify(art).type) # -> "decision"
result = find_artifacts("rac/", "caching")
for hit in result.matches:
print(hit.id, hit.title)
```
OKFとの関連性:
GoogleのOpen Knowledge Format(OKF)は、キャリア(YAMLフロントマター付きのMarkdownのGitツリー)を標準化し、意図的に緩やかなものです。RACは同じキャリアを書き込み、OKFが消費者に任せるもの、つまりCIでの書き込み時強制を追加します。`rac validate`と`rac relationships --validate`は、不正な形式の成果物、破損したリンク、および廃止された決定への参照を、知識が適用される前に決定論的に拒否します。`rac export --okf`は、任意のRACリポジトリを準拠したOKFバンドルに変換します。つまり、両者は競合するのではなく、相互に補完します。
対象ユーザー:
コーディングエージェント(Claude Code、Cursor)を多用しているチームで、エージェントがチームがすでに下した決定を無視することにうんざりしている人々。
すでにADR(Architecture Decision Records)を記述しており、それらの決定を実際にエージェントの行動に反映させたいチーム。
ソフトウェアの「なぜ」をコードとともにバージョン管理したいすべての人。
ドキュメント:
完全なドキュメント:https://itsthelore.github.io/rac-core/
クイックスタート — インストールと最初の成果物の作成
MCPサーバー — ツール、クライアント設定、例
CLIリファレンス — すべてのコマンド、フラグ、終了コード
起源:
LoreはRAC(Requirements as Code)の製品表面であり、基盤となるオープンソースエンジンです。パッケージ、CLI、およびMCPサーバーはracという名前で出荷され、loreはサーバーIDおよびブランドです。決定論的プロンプト複雑性ルーターであるWayfinderは、RAC内のルート実験として始まり、独自のツールとして分割されました。ルーティングは知識の問題ではなく、ランタイムの懸念事項です。
リポジトリのレイアウト:
`rac-core/`
`src/rac/` エンジン:CLI、コア、サービス、出力、インプロセスMCPサーバー(`rac mcp`)、バンドルされたスキル、テンプレート、gitフック
`rac/` ドッグフードコーパス — プロジェクト自体を管理する要件、決定、設計、ロードマップ、プロンプト
`tests/` サービスごとのバッテリーテストとコア / CLI / 成果物のカバレッジ(ADR-027)
`docs/` ドキュメントサイト(MkDocs)
`examples/` グラウンディングデモ、コーパスとテストフィクスチャに織り込まれています
`rac-localview/` ポータル / グラフビューア、エンジンにベンダーされています
テスト:
`pip install -e .[dev]`
`python -m pytest`
`ruff check`, `ruff format --check`, および`mypy src/`は、サービスごとのバッテリーテスト(ADR-027)とともにCIで実行されます。
プロジェクトのステータス:
Loreは初期段階で急速に進化しています。MCPサーバーは今日出荷されます。貢献、アイデア、実験を歓迎します — `CONTRIBUTING.md`を参照してください。
ライセンス:
Apache License 2.0。