mcpField
R
review-overleaf

review-overleaf

github.com/fcakyonドキュメント1.2k47 回インストール今日更新
リポジトリ

review-overleaf について

review-overleafは、ローカルリポジトリでOverleafの未解決レビューコメントを扱うスキルです。エージェントが対応するTeXテキストを探し、確認用の編集案を適用します。コメントの解決と同期はOverleafのWeb UIで行います。

主な機能

  1. 01ID、URL、名前によるプロジェクト特定
  2. 02未解決レビューコメントの取得
  3. 03コメント箇所をローカルTeXファイルで照合
  4. 04コメントごとの編集案作成と適用
  5. 05変更と未照合コメントの提示

活用シーン

  1. 01論文のレビュー指摘をローカルで反映
  2. 02ソースに対応付けられないコメントの確認
  3. 03コミット前の変更確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/fcakyon/claude-codex-settings --skill review-overleaf

インストール後、Claude Code で/review-overleafを入力して読み込まれたか確認します。

詳細

Overleaf のレビュー

Overleaf プロジェクトから未解決のレビュー スレッドを取得し、ローカルリポジトリ内の該当箇所を見つけます。ユーザーが確認する編集案を提示し、適用します。Overleaf には反映しません。ローカルの変更をユーザーが確認した後、スレッドを解決済みにするには、引き続き Web UI を使用してください。

ステップ 1:プロジェクト ID を特定する

次のいずれかを受け付けます。

  • 24 文字の 16 進数 ID(^[0-9a-f]{24}$)
  • https://www.overleaf.com/project/<id> のような完全な URL。正規表現で ID を抽出します。
  • 引用符で囲まれたプロジェクト名。次を呼び出します。
    python3 ${CLAUDE_PLUGIN_ROOT}/scripts/overleaf_reviews.py --list-projects
    
    各行は <24-hex> <accessLevel> <name> です。名前をあいまい検索します。複数一致した場合は、AskUserQuestion で選択を求めます。

ユーザーからプロジェクト ID がまったく提示されていない場合は、--list-projects を実行し、選択できるようテーブルを表示します。

ステップ 2:Cookie を事前確認する

~/.claude/overleaf-skills/cookie が存在しない場合は、ユーザーに「set up overleaf」を実行するよう伝えます(これにより setup スキルが起動します)。その後、停止します。

存在していても認証に失敗した場合(次のスクリプト呼び出しで更新のヒントが返された場合)は、同じセットアップスキルを案内して停止します。

ステップ 3:アクセスレベルを確認する

プロジェクト ID が名前の照合によって特定された場合は、一致した項目の accessLevel を確認します。readOnly の場合は、次の警告を表示します。

プロジェクトは読み取り専用です。ローカルファイルは編集できますが、Web UI 経由で Overleaf に同期することはできません。手動でコピー&ペーストする必要があります。続行しますか?

owner、readAndWrite、review の場合は、何も通知せずに続行します。

ステップ 4:コメントを取得する

python3 ${CLAUDE_PLUGIN_ROOT}/scripts/overleaf_reviews.py --json --repo . < project-id > --unresolved-only

JSON 配列として解析されます。各レコードには、thread_id、doc_id、snippet、offset、resolved、messages({user, ts, content} のリスト)、file、line が含まれます。スニペットがローカルの *.tex のいずれにも一致しなかった場合、file と line は null になります。

ステップ 5:編集ループ

file が null でない各レコードについて、次の操作を行います。

  1. Read で、前後 5 行を含めて line の位置を読み込み、文脈を確認します。
  2. コメントスレッドの内容を、誰が何を述べたかが分かるように 1 文で要約します。
  3. コメントの内容に基づいて具体的な編集案を提示します。質問(例:「X という意味ですか?」)の場合は、文章内で答える編集案を提示します。訂正(例:「表記が誤っています」)の場合は、該当箇所を修正する編集案を提示します。
  4. Edit で適用します。まとめて編集してはいけません。コメントごとに編集してから、次に進みます。

file が null のレコード(スニペットが対応箇所に一致しなかったもの)はスキップし、<unmapped> リストに追加します。

ステップ 6:完了処理

ループの後、次の操作を行います。

  1. git diff を実行し、変更内容全体をユーザーに表示します。
  2. <unmapped> レコードがあれば、手動で探せるように doc_id とスニペットのプレビューを一覧表示します。
  3. 次の形式でコミットメッセージを提案します:address overleaf review: <one-line summary of the changes>。自動コミットはしないでください。ユーザーは /github-dev:commit-staged を実行するか、手動でコミットできます。
  4. ローカルの差分を確認した後、対応したスレッドを Overleaf の Web UI で解決済みにするよう、ユーザーに伝えます。

対象外

  • Overleaf への再アップロード(書き込み API は使用しません)。
  • Overleaf でのスレッド解決(Web UI のみ)。
  • コメントが特定の引用を対象としている場合を除き、.bib の編集は行いません。
  • 段落をまたぐ複数行スニペットには対応しません。v1 では <unmapped> に分類されます。スニペットの照合は行頭を基準とします。

連携に適したツール

  • github-dev — 編集ループの後に /github-dev:commit-staged を実行します。プロジェクトが共同作業の場合は /github-dev:create-pr を使用します。

コメント