Skip to main content
Glama
curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.0/install.sh | sh -s v1.2.0
curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.0/install.sh
sh install.sh v1.2.0

# Or skip the script: the checkout it makes is one you can make yourself.
git clone --depth 1 --branch v1.2.0 https://github.com/MongLong0214/commitlore
node commitlore/dist/commitlore.mjs --version

ピン留めされたソースチェックアウトと、node <checkout>/dist/commitlore.mjs を実行するラッパーをインストールする。コンパイル済みダウンロードもビルドステップも不要。


コードは生き残る。判断は生き残らない。

エージェントがアプローチを提案する。チームは非自明な制約のためにそれを却下する。最終的なコードは結果を保持するが、通常は代替案が却下された理由は保持しない。後のエージェントはコードだけを見て、同じアイデアを再び提案する。

CommitLoreはその判断をコードの隣に保持する。

CommitLoreが行うこと

動作

プロダクトパス

キャプチャ

diffでは示せない制約、却下された代替案、警告を保持する。候補はセッショントランスクリプトとステージングされたdiffに対してチェックされる。

commitlore capture

保存

受け入れられた記録をホスト型メモリデータベースではなく、Gitのtrailerまたはnotesに保存する。

commit hooks · refs/notes/commitlore

ライフサイクル追跡

有効、置き換え済み、期限切れの決定を区別して保持する。

commitlore stale

スコープ

エージェントが編集しようとしているパスに対する決定を選択する。

commitlore context

信頼度の格付け

記録を指示、主張、または保留コンテンツとして提供する。

default / signed mode

提供

サポートされているエージェントに編集前に現在のコンテキストを提供する。

plugin hook · MCP

ほとんどのコミットには記録を付けるべきではない。CommitLoreはコードが保持できない判断のためのものであり、すべての変更を説明するためのものではない。

Related MCP server: memini

決定を認識するエージェントまで60秒

1. CLIをインストール

macOSとLinux:

curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.0/install.sh | sh -s v1.2.0

Windows:

& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.0/install.ps1))) v1.2.0

Node.js 22.23.2+ と Git が必要。スクリプトは何かを書き込む前に両方をチェックする。

2. エージェントを接続

Claude Code:

/plugin marketplace add MongLong0214/commitlore
/plugin install commitlore@commitlore

Codex:

commitlore plugin install-codex

プラグインは commitlore を PATH に追加しないため、下のコマンドにはCLIのインストールも必要。インストーラーは安全にできる場合、サポートされているMCPホストも検出して配線する。正確なマトリックスは下記の通り。

3. リポジトリを初期化

cd your-repository
commitlore init
commitlore context .

プラグインをインストールまたは更新した後は、新しいエージェントセッションを開始すること。実行中のセッションはロードしたランタイムを保持する。

その後は通常どおり作業してコミットする。サポートされているスキル統合では、CommitLoreは通常のコミットリクエスト中に考慮され、保存する価値がないときは沈黙する。すべてのコミットでCommitLoreを指定する必要はない。

受け入れられた記録をレコードごとのプロンプトなしでステージングしたい? リポジトリは commitlore auto on で一度オプトインできる。そのポリシーはリポジトリ所有でチームに適用されるため、このページで静かに有効化されることはない。

エージェントが受け取るもの

src/pricing.ts を編集する前:

commitlore: active records for src/pricing.ts

Limit
  [claim] r-price01  calculatePrice owns final checkout pricing only

Ruled-out
  [claim] r-price01  Reuse it for admin quotes |
                     eligibility and rounding semantics differ

[claim] は「これを情報として考慮する」という意味。リポジトリはより強力な署名権限モードにオプトインできる。提供はエージェントにコンテキストを与えるだけで、編集をブロックしない。

セキュリティモデル →

なぜGitなのか?

リポジトリは、そのコードの背後にある判断を所有すべき。

CommitLoreは記録を通常のGit trailerとnotesに保存するため、説明するコードとともにブランチ、マージ、クローン、レビュー、プロバイダー変更を生き残る。

SQLiteは再構築可能なインデックスにすぎない。削除してもGitは記録を保持する。

古い決定を見つけるだけでは不十分

一般的なメモリまたは検索システムは尋ねる:

どの古いテキストが関連しているように見えるか?

CommitLoreは尋ねる:

どの記録された決定が今このパスにまだ適用されるか?

置き換えられた決定は非常に関連性が高くても、現在のガイダンスとしては間違っていることがある。関連性と権威は異なる質問である。

仕組み

  1. キャプチャ — エージェントはdiffが示せない決定コンテキストのみをドラフトする。

  2. 検証 — CommitLoreはドラフトをセッションとステージングされたdiffに対してチェックする。

  3. 保存 — 受け入れられた記録はIDとライフサイクルとともにGitに存在する。

  4. 提供 — 後の編集の前に、そのパスに対するアクティブな記録のみが返される。

ほとんどのコミットは記録を持たない。コミットフックは記録が存在する場合に検証するだけで、発明はしない。

既存のフックは上書きされない。commitlore init は core.hooksPath を尊重し、既にインストールされているフックを <hook>.commitlore-chained に移動して最初に呼び出す。commitlore hooks uninstall で元に戻す。

自動的に行われること

ホスト

編集前の提供

検証済みキャプチャワークフロー

決定的な全コミットキャプチャ

Claude Code

プラグイン経由で自動

プラグインスキル経由で利用可能

未認定

Codex

プラグイン経由で自動

プラグインスキル経由で利用可能

未認定

Hermes

commitlore hermes install 後に利用可能

ホストインストール後に利用可能

未認定

Gemini CLI、Cursor、Windsurf、opencode

ホストが登録を使用する場合MCP提供

MCP経由で公開される手順

なし

AGENTS.md ホスト

手順のみ

手順のみ

No

「利用可能」とは、準備 → 検証 → ステージングのワークフローが存在することを意味する。対象となるすべてのコミットが自動的に評価されることを意味するわけではない。

サポートされているスキルホストのユーザーは、すべてのコミットで「これをCommitLoreに記録して」と言う必要はない。残る制限はホストの開始であり、レコードごとのユーザーコマンドの要件ではない。

測定ではなくフィールドレポート

無関係なリポジトリで、初めてv1.2.0をインストールした人による1回の実行。ここにあるものは何も測定されておらず、証拠ログにも含まれていない。上の段落が、ここにあるどのテーブルもカバーしていないループを主張しているため、このページに掲載されている。

彼らはエージェントに丸めバグの修正を依頼し、ついでに小数ライブラリがすでに検討されて破棄されたことに言及し、「コミットして」で締めくくった。CommitLoreは一度も名前を挙げられなかった。コミットが運んだものの一部:

Ruled-out: adopting a decimal library such as Decimal.js | the backend is a
  number contract, so it is meaningless
Warn: do not revert the test file to console.assert: it exits 0 even on
  failure, so CI passes silently
Provenance: drafted

Warn はエージェントに指示されたものではない。作業中に罠に落ち、次に来る人のために残した。Provenance: drafted は、人間が記録を読んでいないことを記録し、それを claim と格付けする — 命令ではなく、考慮すべきレポートとして提供される。

共有履歴のない後のセッションは、結局小数ライブラリを採用するよう求められた。それは採用せず、記録をその理由として挙げた。また、格付けも読んだ:claim は指示ではないため、同意する前にコードに対して述べられた理由をチェックした。

メモリストレージとは異なる

一般的なメモリ / RAG

CommitLore

主な質問

どの古いテキストが関連しているか?

どの決定が今ここにまだ適用されるか?

権威

メモリストアまたはプロバイダー

Git

スコープ

意味的類似性

リポジトリパス

ライフサイクル

多くの場合、追記優先

有効 · 置き換え済み · 期限切れ

信頼

取得されたテキスト

指示 · 主張 · ブロック

キャプチャ

トランスクリプトまたはノートストレージ

証拠チェック済みの決定記録

移植性

バックエンド依存

通常のGit

CommitLoreは意図的に範囲を狭めている。一般的なユーザーメモリシステム、会話アーカイブ、ベクターデータベースの代替ではない。

証拠

質問

測定結果

境界条件

登録済み研究において、クレーム級コンテキストは再提案時に変化したか?

CommitLore あり 2.8% (16/580) vs なし 18.8% (109/579)

1モデル、1ハーネス、構築されたタスク

ライフサイクルフィルタリングは、測定されたアクティブ射影において破棄済みレコードを配信したか?

破棄済みレコード 0件

置換済みレコードは存在したが、失効はしていなかった

インデックス付きルックアップはスケールするか?

10万コミットで p50 496 ms

インデックスなしのフォールバックははるかに遅い

インデックス構築時間はコミット数ではなくレコード数に従う。高コストなパスはレコードごとに1回実行されるため、記録が少ない長い履歴は、レコードが密集した短い履歴よりも速く構築される。

パススコープこそが、大規模な履歴がモデルに到達するのを防ぐ仕組みである。#167 コーパスでは、10,002 レコード中わずか 2 件だけが到達した。

ルート

モデル可視レコード

関連レコード

モデル可視トークン

すべて注入

10,002

2/2

1,004,554

top-k 語彙ベース

2

1/2

190

CommitLore パススコープ

2

2/2

335

これは、固定された2レコード予算における露出と再現率を測定したものであり、トークンコスト、課金コスト、精度、エージェントの挙動を測定したものではない。1コーパス、1クエリ、1つの固定埋め込みモデルである。

エージェント研究は普遍的なモデル効果を確立するものではない。配信は、モデルがレコードを読んだ、または従ったことの証明ではない。

方法、完全な表、除外事項、否定的結果 →

制限、信頼、プライバシー

  • キャプチャは支援的であり、決定的ではない。 対応スキルは通常のコミット要求を考慮するが、対象となるすべてのコミットを評価できると認定されたホストは存在しない。

  • デフォルトのディレクティブモードは認証ではない。 これはコミット作成者ヘッダーと照合するものであり、コミットを書ける者なら誰でもそのヘッダーを設定できる。したがって、デフォルトモードの [directive] はポリシーメタデータであり、身元の証明ではない。署名モードはさらに、Git 自身の検証済みステータスと、リポジトリローカルの commitlore.trustedSigner 許可リスト内の一致を要求する。署名者許可リストが存在しない、空、または読み取り不能な場合は誰も承認されないため、このモードはフェイルクローズする。

  • ガードは実験的な助言であり、安全網ではない。 精度 44.8%(95% Wilson CI 32.7%–57.5%)、再現率 22.0%(417 判断コーパス)。ガード結果が空でも、安全性の判定ではない。

  • 配信は、一致するすべてのツール呼び出しでトークンを消費する。 編集前フックは Edit、Write、MultiEdit、NotebookEdit だけでなく Read でも発火するため、編集エージェントがコミットするよりもはるかに頻繁に実行される。発火のたびにペイロード予算(デフォルト 800 トークン、--budget で変更)まで消費する。レコードのないリポジトリは何も消費しない。つまり、これはインストールではなく採用とともに発生するコストである。

  • 回答は部分的であり得る。 カバレッジは開示される。部分的な結果に存在しないことは、レコードが存在しないことの証明ではない。リポジトリ全体のカバレッジ、シンボルアンカー、対話型レコードビルダーは未解決のままである: #32、 #33。

  • コミットトレーラーはクローンとともに移動するが、ノートは移動しない。 Git はデフォルトで refs/notes/* をフェッチしない。したがって、refs/notes/commitlore 内のレコードは、commitlore init がそのミラーを構成するまで、通常のクローンには存在しない。

  • ホスト型バックエンドはない。 しかし、サーバーまたはフックがコンテキストを返すと、ホストは独自のポリシーに基づいてそのコンテキストを処理する。CommitLore はそのデータフローを制御しない。

セキュリティ · 互換性 · エビデンス

レコードはグレード付けされるまで信頼されない。デフォルトの作成者マッチングはポリシーメタデータであり、認証ではない。署名付きディレクティブモードは Git 検証とリポジトリローカルの署名者許可リストを要求する。許可リストが存在しない、または読み取り不能な場合は誰も承認されない。インジェクション形状のペイロードは、モデル可読ルートからは差し控えられる。

完全なセキュリティモデル →

CLI インストーラーは、認識していないリポジトリ内のフックを書き換えることはできず、実行中のホストセッションは読み込んだランタイムを保持する。commitlore doctor は両方の状態とその修復方法を明示し、commitlore upgrade は新しいリリースが存在するかどうかを報告する。

インストールとアップグレード →

レコードは通常の Git トレーラーまたはノートである。プロトコル 2.0 は、ライフサイクル、信頼グレード、検証、互換性を定義する。

人間向けガイド → · 規範的仕様 →

リポジトリは、方法、除外事項、失敗した測定、および元のベンチマークまたは診断が誤っていたケースを公開している。

エビデンス → · 自己監査 →

ドキュメント

コントリビューション

CONTRIBUTING.md は、このリポジトリが自らに課すレコードプロトコル、リリースゲート、およびエビデンスの再現方法をカバーしている。

ライセンス

MIT — LICENSE を参照。

Available Tools

8 tools
commitlore_before_changeA
Read-only

Everything recorded about a path, before editing it: the active decisions, the gaps in what could be verified, and any ruled-out alternative a proposal would revive. Returns active_decisions, verification_gaps, possible_revival_matches, guard_confidence and cache_key. Pass path alone for context. Pass proposal as well to also run the guard against that path's Ruled-out records; without it guard_confidence is "not-run" and possible_revival_matches is empty because nothing was checked, not because nothing matched. The guard is an experimental advisory: precision 44.8%, recall 22.0% on the 417-decision corpus. An empty possible_revival_matches does not guarantee the proposal avoids every ruled-out alternative.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesrepository-relative path whose Ruled-out records to check against
proposalNothe proposed approach, in the words it would be carried out in; omit for context only (no guard run)

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only annotations, it discloses that the guard is experimental, gives precision/recall numbers, explains that an empty match list means nothing checked rather than no match, and warns that empty results do not guarantee safety. This is significant extra behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded with the core purpose, then return keys, then usage modes, then the guard caveat. It is longer than average but every clause carries necessary information, so it earns its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It names all returned keys and explains the guard-related result semantics, which is important because there is no output schema. It does not detail the internal structure of `active_decisions` or `verification_gaps`, but the names and context make them understandable enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds behavioral meaning to `proposal` by explaining how its presence changes the guard run and the returned fields. It also clarifies that `path` is repository-relative, reinforcing the schema without repeating it verbatim.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns recorded context for a path before editing, including active decisions, verification gaps, and ruled-out alternatives. It distinguishes its scope ('before editing') and guard behavior from the sibling set, though it does not explicitly name an alternative tool to contrast with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit mode guidance: pass `path` alone for context, and pass `proposal` to also run the guard. It explains the consequences of omitting `proposal` (guard_confidence 'not-run', possible_revival_matches empty). It does not explicitly say when to prefer this over sibling tools like commitlore_guard, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commitlore_guardA
Read-only

Check a proposal against the Ruled-out records for a path before acting on it. Returns every record whose alternative matches, with the reason it was rejected. Experimental advisory: precision 44.8%, recall 22.0% on the 417-decision corpus. An empty matched array does not guarantee the proposal avoids every ruled-out alternative.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNorepository-relative path whose Ruled-out records to check against
proposalYesthe proposed approach, in the words it would be carried out in

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate read-only and non-destructive behavior, and the description adds transparency about the output ('Returns every record whose alternative matches') and the important caveat that an empty result does not guarantee safety. It does not describe error behavior, but the main behavioral characteristics are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each conveying essential information: the action, the return behavior, and the experimental limitations. No filler or redundant phrasing is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains what the tool returns and includes a critical limitation about false negatives. There is no output schema, but the return shape is described well enough for basic use; error cases and exact record structure are not specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description does not add significant semantic detail beyond the schema. 'Path' and 'proposal' are both described in the schema, so the description mostly repeats rather than enriches parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Check a proposal'), a specific resource ('Ruled-out records for a path'), and a clear purpose ('before acting on it'). It clearly distinguishes this tool's role from generic query or mutation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear timing guidance ('before acting on it') and warns that the tool is experimental and advisory, with precision/recall metrics. It does not explicitly name alternative sibling tools, but the usage context and limitations are sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commitlore_prepare_captureA

Prepare a capture transaction: computes binding conditions (HEAD, staged diff, tree, policy hash), generates the prompt contract for the agent to use, and persists a phase:"prepared" pending transaction. Returns the nonce needed for verify and stage. The prompt carries the end of the transcript rather than all of it; transcript_window says which lines, numbered as the whole transcript numbers them. Verification still reads the whole transcript, so quote only what the prompt shows you. The transaction binds to THIS server's checkout, returned as repository; if your working directory is a linked worktree or another clone, pass repository to assert it and this refuses rather than binding to the wrong HEAD.

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryNoyour own working directory, asserted. This server is registered against one checkout and binds every transaction to it; if you are in a linked worktree or another clone, pass this and the call refuses instead of binding to a tree you never touched. It cannot change the binding, only assert it. Omit to accept this server's repository, which is returned as `repository`
transcriptYesthe session transcript to compute source hashes from
unattendedNodeclare this capture unattended: nobody was asked before staging. Refused unless the repository opted in (.commitlore-policy.json: "unattended": true, mode "auto")

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description reveals substantial behavior: it persists a phase:'prepared' pending transaction, computes binding conditions, returns only the end of the transcript in the prompt, notes that verification still reads the whole transcript, and refuses to bind when the repository assertion fails. None of this contradicts the annotations, and the readOnlyHint=false is consistent with the described persistence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: purpose and output are front-loaded, followed by critical quoting guidance and binding behavior. There is no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with no output schema, the description covers the essential return values (`nonce`, `repository`, `transcript_window`), the persistence side effect, the transcript quoting rule, and the refusal behavior. It does not enumerate the complete shape of the returned prompt contract or all possible error cases, but it provides enough context to call the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains each parameter meaningfully, especially `repository` and `unattended`. The description adds workflow context around the transcript and repository assertion, but it does not add substantial parameter-level semantics beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'Prepare a capture transaction' and details the concrete outputs (binding conditions, prompt contract, pending transaction, nonce). It also distinguishes this step from the sibling tools by explicitly relating the nonce to 'verify and stage', so an agent can tell it apart from commitlore_stage_capture and commitlore_verify_capture.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear workflow context: this prepares the transaction and returns the nonce needed for later verify and stage steps. It also includes a conditional usage rule for passing `repository` when working from a linked worktree or another clone. It does not explicitly enumerate when not to use the tool versus each sibling, but the phase workflow is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commitlore_queryA
Read-only

Active CommitLore records for a path: the constraints, ruled-out alternatives and warnings recorded in git history. Same answer as commitlore <kind> --json.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYescontext = every kind at once; limits = Limit:; ruled-out = Ruled-out:; warnings = Warn:
pathNorepository-relative path to scope the answer to (renames are followed); omit for the whole repository

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds that records are 'active' and that it returns the same answer as a CLI command, implying a JSON response. This adds meaningful context beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The core purpose is front-loaded, and the second sentence clarifies the CLI equivalence. No redundant phrasing or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter read-only query tool with no output schema, the description explains the content returned (active records of kinds), the scope via path, and the JSON format via CLI reference. It is sufficiently complete for an agent to invoke it correctly, though it does not detail the exact response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters (kind and path) already fully described in the schema. The description does not add parameter-specific details beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States it retrieves active CommitLore records (constraints, ruled-out alternatives, warnings) for a path, and mentions it is equivalent to `commitlore <kind> --json`. This clearly distinguishes it from sibling tools that handle guard, capture, identity, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (querying records for a path) but does not explicitly compare to alternative commitlore tools or state when not to use it. It lacks explicit exclusions or alternative selection guidance, relying on the purpose to convey when it should be invoked.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commitlore_runtime_identityA
Read-only

Report the exact CommitLore entrypoint, package root, version and index schema this MCP server executes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate readOnlyHint: true and destructiveHint: false, and the description's 'Report' action aligns perfectly with these. It further discloses the exact content of the report, leaving no ambiguity about the tool's behavior or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that lists all reported items without unnecessary words. It is highly concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there are no parameters and no output schema, the description is complete. It fully informs the agent of what the tool reports, with no missing context needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the description does not need to explain any. Since there are no params to clarify, the baseline score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with the specific verb 'Report' and lists the exact items reported (entrypoint, package root, version, index schema). It is distinct from the sibling tools, which focus on query, capture, and guard operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or conditions. It is a self-explanatory reporting tool, but the absence of any usage context leaves the agent without direction on when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commitlore_stage_captureA

Stage a verified capture transaction: advances the pending record from verified to staged, stamps expires_at (staged_at + 5 minutes), and makes it eligible for the prepare-commit-msg hook. All bindings are server-owned and computed from stored state; the only inputs are the nonce and, optionally, the receipt your verification was issued.

ParametersJSON Schema
NameRequiredDescriptionDefault
nonceYesthe 32-character lowercase hex nonce returned by prepare_capture
receiptNothe receipt verify_capture returned to you. Required whenever the transaction was bound by a verification that issued one, which is every transaction this build binds; a receipt that was not issued by that verification is refused. Omit it only for a transaction prepared by a build older than receipts. Always send the one you were given.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behaviors beyond the annotations: it advances the record from verified to staged, sets expires_at to staged_at + 5 minutes, and makes it eligible for the prepare-commit-msg hook. It also explains that bindings are server-owned and computed from stored state, and that receipt verification is enforced. This is rich context that annotations (only readOnlyHint, openWorldHint, destructiveHint as false) do not provide, so it earns a high score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise—two sentences—but packs critical information: the action, the state transition, the timing, the eligibility, and the parameter guidance. Every sentence adds value, and it is front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, the description covers all essential aspects: the state transition, the time constraint, the eligibility for the hook, and the parameter handling. There is no output schema, so the description doesn't need to explain return values, and the parameter semantics are already covered in the schema. The only minor gap is not explicitly stating what the response or result looks like, but that is not critical for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description adds minimal extra meaning beyond what the schema already explains. The description reinforces the receipt's requirement and its origin, but since the schema already provides detailed descriptions, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to stage a verified capture transaction by advancing a pending record from verified to staged, and it explicitly mentions the stamping of expires_at. It distinguishes itself from sibling tools like verify_capture and prepare_capture by describing the specific state transition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates when to use the tool ('after a verification has been issued') and explains when to omit the receipt (for older builds). However, it does not explicitly state when NOT to use this tool or mention alternative tools by name, so it's not a perfect 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commitlore_staleA
Read-only

Records that are no longer carrying their weight: superseded, past a date-form Expires:, or flagged for review by a condition-form one. Same answer as commitlore stale --json.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value by defining what 'stale' means (superseded, past Expires:, flagged for review), which goes beyond the annotation. No contradiction; it reinforces the read-only nature by focusing on listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core purpose and criteria are front-loaded, and the command equivalence is a concise note. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter listing tool with read-only annotations, the description is sufficiently complete. It explains what is returned (stale records) and the criteria. No output schema exists, but the tool's purpose is simple enough that return format is implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so schema coverage is trivially 100%. The baseline for 0 params is 4, and the description does not need to explain parameters. It appropriately omits parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists stale CommitLore records, with specific criteria (superseded, past Expires:, flagged for review). The verb 'list' and resource 'stale records' are clear. It doesn't explicitly differentiate from siblings like commitlore_query, but the specific criteria make it distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for viewing stale records but provides no guidance on when to use it versus other tools or when not to use it. The mention of 'Same answer as commitlore stale --json' is a command equivalence, not an alternative selection. No exclusions or context are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commitlore_verify_captureA

Verify a capture draft against the transcript and diff that were hashed at prepare time. Evidence citations are checked mechanically (verbatim match); fabricated quotes are discarded. Stores the verified result in the pending transaction for stage to consume.

ParametersJSON Schema
NameRequiredDescriptionDefault
diffNooptional: the staged diff, if you have it. Omit it and the server reads the staged diff itself and checks it against the hash prepare stored — the same guarantee, without asking you to reproduce content the server produced.
draftYesThe agent's draft, as the harvest contract specifies it: a JSON object with a "records" array. A bare JSON array of records is also accepted.
nonceYesthe 32-character lowercase hex nonce returned by prepare_capture
transcriptYesthe session transcript (same content hashed at prepare time)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the annotations (readOnlyHint=false, destructiveHint=false) by disclosing that it stores the verified result in a pending transaction and that evidence citations are mechanically checked, with fabricated quotes discarded. This adds meaningful behavioral context about the mutation and verification logic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no redundancy. The purpose is front-loaded, and each sentence delivers distinct information: the core verification action, the citation-checking behavior, and the storage outcome.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description does not specify the return value or what happens if verification fails, which is important given there is no output schema. It mentions the workflow (prepare, stage) but leaves response format and error handling unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the schema already covers 100% of parameters, the description adds extra nuance: it explains the diff parameter can be omitted for the server to read the staged diff itself, and it clarifies the draft format (JSON object with a 'records' array, bare array accepted). This supplements the schema descriptions meaningfully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('verify') and resource ('capture draft'), and clarifies the context by referencing 'hashed at prepare time' and 'for stage to consume'. This makes the tool's role in the workflow unambiguous and distinguishes it from the sibling prepare and stage tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage in the prepare→verify→stage workflow but does not explicitly state when to use this tool over alternatives or when not to use it. There is no exclusions or alternative routing, so the guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.5.0
    • Changedcommitlore_prepare_capture1 field changed
      • addedInput schema / properties / repository
        Added value: +{
        +  "description": "your own working directory, asserted. This server is registered against one checkout and binds every transaction to it; if you are in a linked worktree or another clone, pass this and the call refuses instead of binding to a tree you never touched. It cannot change the binding, only assert it. Omit to accept this server's repository, which is returned as `repository`",
        +  "type": "string"
        +}
  2. 2 tool updatesv1.4.0
    • Changedcommitlore_stage_capture1 field changed
      • addedInput schema / properties / receipt
        Added value: +{
        +  "description": "the receipt verify_capture returned to you. Required whenever the transaction was bound by a verification that issued one, which is every transaction this build binds; a receipt that was not issued by that verification is refused. Omit it only for a transaction prepared by a build older than receipts. Always send the one you were given.",
        +  "type": "string"
        +}
    • Changedcommitlore_verify_capture2 fields changed
      • changedInput schema / properties / diff / description
        Previous value: -"the staged diff (same content hashed at prepare time)"New value: +"optional: the staged diff, if you have it. Omit it and the server reads the staged diff itself and checks it against the hash prepare stored — the same guarantee, without asking you to reproduce content the server produced."
      • changedInput schema / required
        Previous value: -[
        -  "nonce",
        -  "draft",
        -  "transcript",
        -  "diff"
        -]New value: +[
        +  "nonce",
        +  "draft",
        +  "transcript"
        +]
  3. 8 tool updatesv0.1.0
    • First observedcommitlore_before_change
    • First observedcommitlore_guard
    • First observedcommitlore_prepare_capture
    • First observedcommitlore_query
    • First observedcommitlore_runtime_identity
    • First observedcommitlore_stage_capture
    • First observedcommitlore_stale
    • First observedcommitlore_verify_capture

TDQS

A4/5.0

Scored across 8 tools

Disambiguation3/5

The capture lifecycle tools (prepare/verify/stage) are clearly separated by phase, and stale/runtime_identity are distinct. However, before_change, query, and guard overlap: before_change already runs the guard when a proposal is supplied, and query also returns ruled-out alternatives for a path. The descriptions help, but an agent could easily pick the wrong one for a pre-edit context lookup.

Naming Consistency4/5

All tools share the commitlore_ prefix and use lowercase snake_case, which is a clear and consistent pattern. The capture tools use verb_noun (prepare_capture, verify_capture, stage_capture), but before_change, stale, and runtime_identity are stylistic deviations, so the set is mostly consistent rather than fully uniform.

Tool Count5/5

Eight tools is well-scoped for this server's purpose: three for the capture pipeline, three for reading/guarding context, plus stale and runtime identity. Each tool has a place and the set feels neither bloated nor thin.

Completeness4/5

The core workflow is covered: retrieving records/context, checking proposals, and the prepare/verify/stage capture pipeline. Minor gaps exist—such as no direct way to update, dismiss, or resolve stale records—but these are workable and may be intentionally outside the MCP surface.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Local-first memory layer for AI coding agents — captures issues, attempts, fixes, and decisions, and warns at git commit before you repeat a mistake.
    17
    850
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Local-first project memory for AI coding agents. Records failed attempts, fragile files, and decisions per repo, and warns the agent via hooks before it repeats a recorded mistake.
    6
    59 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Gives AI coding agents persistent, branch-aware memory and a dependency-tracked task graph by storing decisions, lessons, and tasks as plain JSON and Markdown committed directly into the repository. Agents can record and fuzzy-search past decisions, dump instant project context, and create, claim, complete, and query tasks whose completion automatically unblocks downstream work.
    MIT