review-overleaf について
review-overleafは、ローカルリポジトリでOverleafの未解決レビューコメントを扱うスキルです。エージェントが対応するTeXテキストを探し、確認用の編集案を適用します。コメントの解決と同期はOverleafのWeb UIで行います。
主な機能
- 01ID、URL、名前によるプロジェクト特定
- 02未解決レビューコメントの取得
- 03コメント箇所をローカルTeXファイルで照合
- 04コメントごとの編集案作成と適用
- 05変更と未照合コメントの提示
活用シーン
- 01論文のレビュー指摘をローカルで反映
- 02ソースに対応付けられないコメントの確認
- 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 でない各レコードについて、次の操作を行います。
Readで、前後 5 行を含めてlineの位置を読み込み、文脈を確認します。- コメントスレッドの内容を、誰が何を述べたかが分かるように 1 文で要約します。
- コメントの内容に基づいて具体的な編集案を提示します。質問(例:「X という意味ですか?」)の場合は、文章内で答える編集案を提示します。訂正(例:「表記が誤っています」)の場合は、該当箇所を修正する編集案を提示します。
Editで適用します。まとめて編集してはいけません。コメントごとに編集してから、次に進みます。
file が null のレコード(スニペットが対応箇所に一致しなかったもの)はスキップし、<unmapped> リストに追加します。
ステップ 6:完了処理
ループの後、次の操作を行います。
git diffを実行し、変更内容全体をユーザーに表示します。<unmapped>レコードがあれば、手動で探せるようにdoc_idとスニペットのプレビューを一覧表示します。- 次の形式でコミットメッセージを提案します:
address overleaf review: <one-line summary of the changes>。自動コミットはしないでください。ユーザーは/github-dev:commit-stagedを実行するか、手動でコミットできます。 - ローカルの差分を確認した後、対応したスレッドを Overleaf の Web UI で解決済みにするよう、ユーザーに伝えます。
対象外
- Overleaf への再アップロード(書き込み API は使用しません)。
- Overleaf でのスレッド解決(Web UI のみ)。
- コメントが特定の引用を対象としている場合を除き、
.bibの編集は行いません。 - 段落をまたぐ複数行スニペットには対応しません。v1 では
<unmapped>に分類されます。スニペットの照合は行頭を基準とします。
連携に適したツール
github-dev— 編集ループの後に/github-dev:commit-stagedを実行します。プロジェクトが共同作業の場合は/github-dev:create-prを使用します。