draft-related-work について
draft-related-work は、研究者向けに論文の Related Work を作成・改稿するスキルです。論文の範囲から文献のクラスタを定め、引用の網羅性を確認し、取得・検証済みの文献に基づいて執筆します。
主な機能
- 01論文の範囲から文献クラスタを導出
- 02執筆前にカバレッジを確認
- 03不足分を対象を絞った検索へ回す
- 04テーマごとに整理し差分を明示
- 05引用を監査・検証
活用シーン
- 01新しい論文の Related Work 作成
- 02薄い、羅列的な節の改稿
- 03構成を保って新たな論文を追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ shaishavmaisuria/ research-paper-lifecycle-skills --skill draft-related-workインストール後、Claude Code で/draft-related-workを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/clustering-and-deltas.mdplacement-conventions.mdscripts/audit_bib.pycheck_coverage.pygather_candidates.pypolite_http.py詳細
関連研究の草稿作成
論文の立ち位置を明確にする「関連研究」セクションを作成します。各段落は、実際に取得した先行研究のまとまりと、差分を明示する文で構成され、投稿先の慣例に合わせて整えられます。これは、次の2つの厳格なゲートを設けた執筆スキルです。
- ハルシネーション防止。 このセッションで取得・検証されていない引用は、成果物に含めません。
- 構造上の穴の防止。 セクションで必ず扱うべき研究群は、
find-papersでたまたま返された内容ではなく、論文自身が主張する対象範囲から導き出します。周辺的な研究ばかり取得されると、論文の立ち位置を自信を持って説明する一方で、論文がまさに位置する箇所に穴を残すアウトラインができてしまいます。たとえば、直接の競合研究群の欠落、主要な系譜の不在、引用がひとつもない期待される研究分野全体の欠落などです。そのギャップを確実に検出し、黙って著者への宿題にするのではなく、対象を絞った2回目の検索としてfind-papersに戻します。
使用する場面
- トピックと投稿先が決まっている新しい論文の「関連研究」を草稿する場合。
- 査読者から「論文の羅列」「内容が薄い」「比較が足りない」「新規性が不明確」と指摘された既存セクションを書き直す場合。
- 新たに見つかった論文(または査読者からの「X、Y、Z が抜けています」という指摘)を、構成を崩さず既存のセクションに組み込む場合。
- 論文を探す用途(
find-papersを使用)、1本の論文を読む用途(fetch-paper)、主題を網羅したサーベイ(literature-review)、既存の参考文献一覧だけを確認する用途(verify-citations)には使用しません。
入力
- 論文の中心的な主張・貢献、およびサブタスク・要件(草稿の序論・要旨から取得するか、ユーザーに確認します)。これらをもとにステップ2で必須の研究群を列挙します。これらがないと、セクションは取得した論文の山をなぞるだけになってしまいます。
- 投稿先 —
venues/conferences/<id>.ymlプロファイルがある場合は使用します(exemplar_distributionにより、セクションの長さと網羅性を調整します)。 - 先行研究の候補:
find-papers/literature-reviewの出力、草稿の.bib、および/またはユーザーが指定した論文。 - メタデータスクリプト用の
CONTACT_EMAIL環境変数(未設定の場合は入力を求めます)。
手順
-
投稿先の慣例を把握します。
venues/conferences/<id>.yml(family、format.template、review.blind、トラックのページ数上限の各フィールド)と、参照先のファイル群を読みます。プロファイルは出発点であり、絶対的な正解ではありません。草稿に影響する項目(テンプレート、匿名査読のレベル、ページ数の上限)に頼る前に、現在のcfp_urlと照合してください。次に、references/placement-conventions.md を読み、その投稿先の研究分野におけるセクションの配置、長さ、引用コマンドの書式、自己引用のルールを確認します。慣例が不明確な場合は、投稿先の最近の論文を3~5本取得し(find-papersの DBLP TOC クエリ、study-exemplars)、実際の配置を確認します。 -
取得済みの論文を見る前に、論文が主張する対象範囲から必須の研究群を導き出します。 概要・序論から、論文の貢献、サブタスク、要件を列挙します。それぞれについて、査読者が比較対象として位置づけることを期待する直接的な先行アプローチの研究群に加え、その研究分野の基礎となった基盤的系譜・主要な起点(直近の改良だけではなく、元となる手法)を挙げます。この一覧が目標であり、この段階ではまだ引用は含みません。コーパスではなく、論文が主張する対象範囲を起点にすることで、論文や投稿先が異なっても通用し、取得した論文の山に隠れた穴を明らかにできます。手法と具体例については、references/clustering-and-deltas.md(§ 主張された対象範囲から必須の研究群を導き出す)を参照してください。
-
候補プールを組み立てます — 検索で取得した論文のみです。 ソース: ユーザーの
.bib、find-papersの検索結果、最も近い既知論文 1〜2 件の参考文献と引用文献(find-papers --paper形式の検索)。ステップ 2 で必要なクラスターに意図的に 寄せて 集め、トピック検索で返されたものだけに頼らないでください。候補は 10〜25 件を目安にします。具体的な識別子(DOI または arXiv ID)がある場合のみ、論文をプールに加えます。ユーザーが識別子なしで論文名を挙げた場合は、まず見つけてください。見つからなければ、その旨を伝えてください。推測した参考文献で先に進んではいけません。 -
クラスタリング用ワークシートを作成します。 次を実行します。
python3 scripts/gather_candidates.py <DOI> <arXiv-ID> ... [--from-file ids.txt]各論文のメタデータ(タイトル、年、会場、引用数、要旨、tldr)を、1 回につき 1 件の丁寧なリクエストで取得し、
cluster:/delta:の欄が空のワークシートを出力します。出力は一時的な作業資料として扱ってください。要旨が含まれているため、絶対にコミットしてはいけません。未解決として示された識別子(終了コード 3)は未検証です。確認できるまで保留してください。要旨がない場合や、その論文が重要な場合は、fetch-paperで読んでください。 -
プールを必要なクラスターに割り当て、カバレッジゲートを実行します。 検索で取得した各論文を、ステップ 2 の必要なクラスターのいずれかに割り当てます(どのクラスターにも当てはまらない論文は外れ値です。査読者が期待する場合に限り、残してください)。割り当てを、小さな計画ファイルに記入します(必要なクラスターごとに 1 ブロックを作り、割り当てた cite key を列挙します)。各 key にエビデンス階層をタグ付けして、精度を明確にし、かさ増しで最低件数を満たせないようにします。論文が引用していることを確認できていない key には
!graph/!keyword/!heuristicを付けます(タグのない key は「その論文がこれを引用していると確認済み」という意味です)。"refs": ["li2018deep", "yao2019computing", # confirmed-cited "smith2023!graph", # surfaced by citation-graph edge — plausible "doe2022!heuristic"] # 'a strong paper would cite this' — weakest次に、以下を実行します。
python3 scripts/check_coverage.py plan.json # or plan.txt (see --help)最低件数に数えられるのは、引用が確認済みの文献のみです。必要なクラスターに引用確認済みの文献が 0 件あると、ゲートは FAIL になります(終了コード 3)。推測に基づく文献だけで「カバー済み」とした場合も含みます(かさ増しによって実際の不足を隠すことはできません)。最低件数(既定値は 2)を下回ると WARN が表示されます。また、精度の推定値(確認済み / 合計)を出力し、ヒューリスティックだけに基づく追加を制限します(計画全体で既定値は 2、
--heuristic-cap)。これにより、コアとなる文献群がスコープに沿ったものになります。ゲートに失敗したクラスター、または文献が薄いクラスターについては、出力された第 2 パスの検索作業リストをfind-papersに戻し、引用が確認済みの文献で不足を補ってから、再実行します。必要なクラスターが空のまま草稿を作成したり、推測に基づく文献でかさ増しして最低件数を満たしたり、不足を記録せず著者の作業事項として残したりしてはいけません。ゲートを通過した場合(またはユーザーが、文書化された文献不足のクラスターを明示的に了承した場合)に限り、クラスタリングの文章化に進みます。 -
クラスターごとに分類し、差分を明確にします。 カバレッジが確認できたら、この論文の不足点が最も明確になる軸に沿って、候補プールを 3〜6 個のテーマに分類します。次に各クラスターについて、クラスターが達成していること、この論文の問題に対して不足していること、この論文がそれにどう対処するかを、差分を示す 1 文にまとめます。方法、パターン、アンチパターンについては、references/clustering-and-deltas.md を参照してください。文章を書く前に、クラスター計画(クラスター名、構成する文献、差分の文)をユーザーに提示します。今なら構成の変更は簡単ですが、後になるとコストがかかります。
-
セクションを執筆します。 クラスターごとに1段落(主張文 → 代表的な研究 → 限界 → 差分)を設け、最も近い競合相手について専用の段落を設けたうえで、締めくくりの位置づけの段落を書きます。投稿先に合わせます。手順1に従って引用コマンドと自著への言及の表現を整えます。網羅性を最大化するのではなく、投稿先ファミリーの実測された代表例の中央値に合わせて、長さと範囲を調整します。プロファイルの
exemplar_distribution(存在する場合はrelated_workの範囲)を確認するか、study-exemplarsを使って直近の投稿論文を3~5件調べます。どちらもない場合に限り、references/placement-conventions.md のファミリー別標準に従います。.tex(LaTeX でない草稿の場合は Markdown)と、ユーザーの.bibにまだない引用の BibTeX エントリを出力します。エントリは取得したメタデータのみを厳密に使用して作成します。クラスタリングの参考資料に示された基準を満たす場合に限り、比較表を追加します。 -
決定的に監査します。 次を実行します。
python3 scripts/audit_bib.py refs.bib --tex related-work.texブロッキング扱いの指摘をすべて修正します。.bib にない引用キー、重複エントリ、DOI・eprint・URL がないエントリ(検証不能で、典型的な捏造引用の形式)、不完全なエントリが対象です。出力されるスタイルの集計は、投稿先の慣例と一致していなければなりません。
-
verify-citationsの検証を通します。 新しいセクションで引用されるすべてのエントリを、提出前に Crossref/DBLP/S2 と照合して検証します。検証に失敗したものは本文から削除するか、未確認であることをユーザーに明示します。黙って残すことも、もっともらしいフィールドをでっち上げて「修正」することも決してしません。
出力
- クラスターに分け、各クラスターに差分を含め、投稿先の引用スタイルに合わせた、執筆または書き直し済みの関連研究セクション(
.texまたは Markdown)。 - 新しい BibTeX エントリ(メタデータのみのため、常に安全に保持できます)。
- 簡潔な位置づけの要約。対象範囲から導かれた必須クラスターと各クラスターのカバレッジゲート通過状況、クラスターごとの差分、最も近い競合相手とその明確な違い、未検証の項目を記載します。
- カバレッジゲートの適合率の推定値(確認済みの引用数/参照文献の総数)と、推測による追加項目(グラフ/キーワード/ヒューリスティックの段階)を、もっともらしいものの未確認であると明示します。クラスターの最低要件を満たしたことを引用の正しさの証明とみなすのではなく、提出前にユーザーが取捨選択できるようにします。正解データが既知のサブセットである場合は、そのサブセットに対する再現率を、この適合率の範囲とは別に報告します。
- 必須クラスターを埋められなかった場合は、2回目の取得で行う調査項目リスト(
find-papers用)を明示して報告します。著者への作業依頼として黙って埋もれさせてはいけません。
ガードレール
- 引用を捏造、誇張したり、「記憶から再構成」したりしてはいけません。すべての参考文献は、このセッション内での検索結果にたどれる必要があり、
verify-citationsに合格しなければなりません。水増しした節よりも、内容が薄くても正確な節のほうが優れています。 - 必須クラスターは、取得されたコーパスだけでなく、論文が主張する適用範囲から導き出します。たまたま返された内容だけを基準に位置付けると、論文が実際に扱う領域に穴が残ります。引用がゼロの必須クラスターは、
find-papersに差し戻すブロッキングギャップです。著者への無言の宿題にしたり、隣接するクラスターを無理に広げて穴を覆ったりしてはいけません。 - これはコパイロットであり、オートパイロットではありません。カバレッジゲート、2 回目の検索作業リスト、記録された内容の薄いクラスターを受け入れるかどうかの判断は、ユーザーに提示します。このスキルがギャップを許容可能だと黙って判断することはありません。
- 長さと範囲は、網羅性を最大化するのではなく、会場のカテゴリーで測定された模範例の中央値に合わせます。徹底しているように見せるための過剰な引用は、サーベイに逸脱した印象を与えます。
- 精度は、再現率だけでなく、独立した品質指標です。論文が引用していると確認されていない参考文献(引用ネットワーク上の隣接文献、キーワードのヒット、「優れた論文ならこれを引用するはず」という推測)は、ヒットではなく仮説です。ティアを付け、確認済みの引用と同じステータスに昇格させてはいけません。また、推測のみに基づく追加は上限を設けます。隣接・基礎クラスターは、不可欠さに基づいて順位付けし、必要最低限と最も多く引用されている代表的な文献のいくつかに絞ります。残りは任意の候補プールに回し、論文が実際に扱う範囲を超えて節を水増ししないようにします。
- 差分を大きく見せるために、引用する論文の内容を誤って述べてはいけません。藁人形的な特徴付けは、敵意ある査読者(多くの場合、引用された著者本人)を招く最短の道です。
- アブストラクトと論文本文は一時的に処理し、コミットしません。ワークシートの出力はリポジトリの外に置きます。
- スクリプトの節度に関する制約を守ります。識別子は一度に 1 件、1 回の実行につき ≤25 件とし、一括収集はしません。
- 会場プロフィールが古くなっていることがあります。重要な事実は、最新の CFP で再確認します。ユーザーに代わって何かを提出してはいけません。
参考資料
- references/clustering-and-deltas.md — 主張する適用範囲から必須クラスターを導き出す方法、引用の最低数と引用ゼロのギャップの振り分け、クラスタリングの軸、クラスターごとの段落パターン、差分の表現、比較表、避けるべきパターン、最も近い競合相手の扱い。
- references/placement-conventions.md — コミュニティごとの配置と長さの基準、会場で測定された模範例の中央値に合わせた長さの調整、引用コマンドのスタイル、匿名査読段階における自己引用のルール、慣例を実証的に確認する方法。
スクリプト
scripts/gather_candidates.py— 取得した識別子のメタデータを、一時的なクラスタリング用ワークシートに取得します(節度を守り、論文を 1 件ずつ処理)。scripts/check_coverage.py— 決定論的なカバレッジゲートです。確認済みの引用がゼロの必須クラスターがある場合(推測に基づく参考文献だけで水増しされた場合を含む)は FAIL、引用の最低数を下回る場合は WARN とします。精度の推定値(確認済み/合計)と、計画ごとのヒューリスティックティアの上限を報告し、find-papers向けに対象を絞った 2 回目の検索作業リストを出力します。引用キーには、任意の根拠ティアマーカー(key!graph/!keyword/!heuristic)を付けられます。最低数に数えられるのは、確認済みのキー(タグなし)のみです。scripts/audit_bib.py— オフラインで引用・参考文献の監査とスタイルの調査を行います。