fill-icmje-coi について
標準的な ICMJE COI テンプレートから個別フォームを作成するドキュメントスキルです。シード内の既存の日付、氏名、タイトルだけを置換し、承認と検証の手順で開示項目と著者のプライバシーを守ります。
主な機能
- 01日付、氏名、タイトルの入力
- 02事前入力済みの合成シードを使用
- 03開示項目と認証欄を維持
- 04承認と検証のゲート
- 05著者への配布案内
活用シーン
- 01共著者ごとの ICMJE COI フォーム作成
- 02共有前の生成フォーム確認
- 03著者レビューと署名済みフォームの回収
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aperivue/ medsci-skills --skill fill-icmje-coiインストール後、Claude Code で/fill-icmje-coiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
skill.ymlreferences/seeds.mdscripts/fill_icmje_coi.pytemplates/icmje_coi_seed_synthetic.docxtests/test_fill_icmje_coi.sh詳細
Fill-ICMJE-COI Skill
公式の ICMJE coi_disclosure.docx では、すべてのフィールドが Word のコンテンツコントロール(SDT)内にあり、python-docx の cell.text では黙って無視されます。そのため、このスクリプトは word/document.xml 内の文字列を直接置換します。この方法が機能するのは、対象の文字列がすでに存在する場合に限られるため、事前入力済みの合成データを含むシードを同梱しています。
基本原則(厳守)
- SDT の XML を一から作成しないでください。 事前入力済みのシード内に存在する文字列のみを置換してください。プログラムで作成したコンテンツコントロールは壊れやすく、Word のバージョンによって動作が異なるためです。エラーの解決にシード構造の変更が必要と思われる場合は、作業を中止してユーザーに相談してください。
- 実在の著者のデータを含むシードは、使用もコミットもしないでください。 同梱されている
templates/icmje_coi_seed_synthetic.docxは、個人を特定できる情報が削除されています(合成の氏名、タイトル、日付、メタデータはICMJE/Anonymous)。実在の人物を含むシードは、document.xmlとdocPropsの両方から個人情報が漏えいします。実在の氏名を含むカスタムシードはプロジェクトごとの非公開ディレクトリに保管し、シードを採用する前にunzip -p seed.docx docProps/core.xmlで実在の氏名が含まれていないことを確認してください。 - 13 項目の開示内容や認証チェックボックスは変更しないでください。 スクリプトが置換するのは日付、氏名、タイトルのみです。☒ None の項目はシードからそのまま引き継がれます。スクリプトが「開示内容を処理した」と決して言わないでください。スクリプトが行ったのはシードの複製であり、著者ごとの開示内容の判断は一切行っていません。実際の開示事項がある著者は、自分のフォームを Word で編集します。
- シードは事前入力済みである必要があります(すべて ☒ なし + テキスト)。このスクリプトは空の ICMJE テンプレートでは動作しません。
投稿先のジャーナルが標準の ICMJE フォームではなく、独自の申告フォーム(Elsevier Declaration of Interest、BMJ の ICMJE 派生フォームなど)を使用している場合は、このスキルを使用しないでください。まず著者向けガイドラインを確認してください。
実行
フェーズ 1 — 情報の収集
ユーザーに質問するか、会話から次の情報を抽出します。
- 論文タイトル(タイトルページに記載されたものと完全に一致するもの)
- 投稿日(例:「2026 年 4 月 20 日」)
- 著者リスト — 順序を保ち、各スロットに 1 名ずつ記載します:
[(1, "Author One"), (2, "Author Two"), ...]。論文のタイトルページまたはユーザーのリストから、原文どおりに取得します。 - 出力ディレクトリ — 通常は
submission/{journal}/icmje_forms/
ゲート 1 — ユーザーの承認。 生成を始める前に、収集した情報をユーザーに提示してください。すべての項目が None のフォームを受け取る著者の名前を示し、実際の開示事項がある著者は代わりに Word で自分のフォームを記入する必要があることを伝えてください。
フェーズ 2 — 生成
python3 ${CLAUDE_SKILL_DIR}/scripts/fill_icmje_coi.py \
--seed ${CLAUDE_SKILL_DIR}/templates/icmje_coi_seed_synthetic.docx \
--seed-name "Placeholder Author" \
--seed-title "Placeholder Manuscript Title" \
--seed-date "January 1, 2000" \
--new-title "{exact manuscript title}" \
--new-date "{submission date}" \
--out-dir {out_dir} \
--authors '[[1,"Author One"],[2,"Author Two"],...]'
著者ごとに ICMJE_COI_{NN}_{Name}.docx を 1 つ作成し、シード内の文字列が見つからない場合はゼロ以外の終了コードで終了します。--seed-*、--new-* の値、または著者名のいずれかが空の場合は、何も書き込む前に終了コード 2 で終了します。シード文字列が空だと何にも一致せず、すべてのフォームでシードの値がそのまま残るためです。
フェーズ 3 — 検証
生成した各 docx について、☒ の数が 14(13 項目の開示内容 + 最後の認証)であること、「None」の開示が 13 件あること、「Your Name:」の後に正しい氏名、「Manuscript Title:」の後に正しいタイトルがあること、シードの文字列が残っていないことを確認します。SEED にはフェーズ 2 で使用した --seed-name、--seed-title、--seed-date の値を正確に指定してください(以下の同梱プレースホルダー、またはカスタムシードに含まれる文字列)。TITLE には --new-title の値を指定してください。
python3 - {out_dir}/*.docx <<'PY'
import sys, zipfile
SEED = ("Placeholder Author", "Placeholder Manuscript Title", "January 1, 2000") # = --seed-* values
TITLE = "{exact manuscript title}" # = --new-title
assert all(s.strip() for s in SEED) and TITLE.strip(), "empty SEED/TITLE value"
for f in sys.argv[1:]:
xml = zipfile.ZipFile(f).read("word/document.xml").decode("utf-8")
assert xml.count("☒") == 14, f"{f}: bad ☒ count"
assert xml.count(">None<") + xml.count(">None ") == 13, f"{f}: bad None count"
for ph in SEED:
assert ph not in xml, f"{f}: seed leak {ph!r}"
t = TITLE.replace("&", "&").replace("<", "<").replace(">", ">")
assert t in xml, f"{f}: title missing"
print("✓", f)
PY
このスニペットでは、「Your Name:」フィールド内の氏名の位置は特定されません。各フォームを開いて氏名を確認してください。
ゲート 2 — ユーザーによる確認。 ファイルを引き渡す前に、検証結果をユーザーに提示してください。
フェーズ 4 — 回覧の案内
各著者向けにカスタマイズしたフォームに添えて送るため、共著者の言語で以下の文面をユーザーに渡してください。
添付の ICMJE COI フォームをご確認ください。
- 内容に問題がなければ、署名して PDF で返信してください。
- 変更が必要な場合は、該当項目を編集またはチェックし、署名して返信してください。
- 変更がまったくない場合は、「変更なし」と返信し、署名済み PDF を別途返送してください。
全著者へのメールは、1 つの下書きバッチで作成できます(例:gws gmail draft)。ゲート 3 — 送信前に、ユーザーがバッチを承認します。
カスタムシードとシードの由来
ユーザーがカスタムシード(デフォルトの文言を変更したもの、または項目 2/3 によく使われる助成金をあらかじめ入力したもの)を希望する場合や、同梱されているシードの作成方法について尋ねた場合は、${CLAUDE_SKILL_DIR}/references/seeds.md を読んでください。