generate-codebook について
generate-codebook は、表形式データからレビュー可能で引用できるデータ辞書を作る研究者向けスキルです。ローカルの決定論的スクリプトで観測可能な属性を記述し、コード値の意味には権威ある資料を求めます。
主な機能
- 01CSV、TSV、Excel、Parquet、Stata、SASを分析
- 02JSONとMarkdownのデータ辞書を生成
- 03型、欠損、値、要約を報告
- 04辞書確認が必要な変数を表示
- 05推定した役割とコードの意味を要確認
活用シーン
- 01分析前にデータセットを記録
- 02研究者と変数の役割を確認
- 03権威ある辞書に基づきコード値を解釈
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aperivue/ medsci-skills --skill generate-codebookインストール後、Claude Code で/generate-codebookを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
skill.ymlreferences/codebook_schema.mdscripts/generate_codebook.pytests/test_generate_codebook.sh詳細
コードブック生成スキル
未加工の表形式データセットを、構造化された引用可能なデータ辞書(コードブック)に変換します。これは辞書優先ワークフローの生成側です。/define-variables と辞書優先 QC が後で利用する成果物を生成します。分布、型、欠損状況は観察可能で、付属スクリプトがプロファイルします。一方、コード値の意味(fatty_liver_grade = 0)はデータからは観察できず、正式なデータ辞書にのみ記載されています。生成するのはコードブックであり、出力を確認します。コード値の意味を創作してはいけません。
決定論的スクリプト
列の内容を記憶に頼って説明するのではなく、付属のプロファイラーを実行してください。
python "${CLAUDE_SKILL_DIR}/scripts/generate_codebook.py" data.csv --out-dir .
.csv/.tsv/.xlsx/.parquet/.dta/.sas7bdat に対応しています。フラグ:--max-levels N
(カテゴリ判定の上限、既定値は 20)、--json-only、--md-only。スクリプトは pandas のみを使用し、ローカルで実行され、データを外部に送信することはありません。
ワークフロー
ステップ 1:プロファイル(決定論的)
データセットに対して generate_codebook.py を実行します。codebook.json(機械可読形式)と codebook.md(レビュー用テーブル)を出力し、各変数について、役割
(id/連続値/カテゴリ/二値/日付/テキスト)、dtype、欠損状況、ユニーク値数、各水準の頻度または分位点の要約、および needs_dictionary フラグを報告します。
ステップ 2:研究者とレビューする(ゲート)
出力を解釈する前に ${CLAUDE_SKILL_DIR}/references/codebook_schema.md(codebook.json のスキーマ、役割推定のヒューリスティクス、needs_dictionary のルール)を読みます。codebook.md を提示し、内容をユーザーと一緒に確認します。ゲート: 役割の推定はヒューリスティックであるため、ユーザーに推定された役割を確認してもらいます(例:整数でコード化された尺度が連続値と誤判定された場合や、id 列の場合)。ユーザーが役割の割り当てを承認するまで、定義作業に進んではいけません。
ステップ 3:[NEEDS DICTIONARY] 項目を解決する(ゲート)
needs_dictionary: true とフラグ付けされた各変数について、正式な情報源がなければ水準コードを解釈できません。ゲート: 実際のデータ辞書に記載された各コードの意味(ファイル/シート/行)を提示するか、そのような辞書が存在しないことを確認するようユーザーに依頼します。label、units、および水準ごとの意味は、その情報源からのみコードブックに記入し、ファイル > シート > 行を引用します。推測で記入してはいけません。ユーザーが情報を提示できない場合は、[NEEDS DICTIONARY] マーカーを残し、削除してはいけません。
例:あるコホートファイルでは、sex(水準 1/2)と fatty_liver_grade(0..4)は水準が数字コードのみなのでフラグ付けされます。一方、smoking_status(never/former/current)はフラグ付けされません。「通常はそういうコードだから」という理由で、sex: 1 = male と書いてはいけません。辞書を参照できない場合は、フラグを残します。
ステップ 4:引き継ぐ
完成した codebook.json は、/define-variables
(操作的定義)の入力辞書となり、辞書優先 QC の引用元となります。ゲート:
下流の分析でコードブックを正式な情報源として扱う前に、未解決の needs_dictionary フラグが残っていないことをユーザーに確認します。
コードブックを外部と共有する前に、生データに対して /deidentify を実行してください。データのクリーニングや変換には /clean-data を使用します。
既知の制限
- 数字ではなく、3 文字を超えるコード(
C50.9、S001など)はコードとして認識されないため、その列にはneeds_dictionaryのフラグが付けられません。 - 異なる値が
--max-levelsより多い整数コード列はcontinuousに分類され、フラグが付けられません。このような列はステップ 2 の役割レビューで検出します。 - 数字を文字列で保持する
text列も同様です。数値(45、88)は測定値として読み取られるため、文字列としてエクスポートされた整数コードの値が--max-levelsより多い場合、フラグは付けられません。
出力形式
codebook.json(スキーマは references 内)と codebook.md(「Columns requiring dictionary lookup」セクションを含むレビュー用テーブル)。件数
(行数、列数、needs_dictionary_count)をチャットで要約し、JSON 全体を貼り付けないでください。