impact-report-builder
プログラムデータを、すべての数字が計算された指標に遡れる、資金提供者向けレポートに変換します。
ユーザーが主導権を握ります。あなたはプロファイリング、計算、ドラフト作成を行い、ユーザーはクリーニングルール、指標定義、最終レポートの各段階で承認します。
作業の進め方とその理由
- 数字はスクリプトから、言葉はあなたから。
scripts/impact.pyがすべてのカウント、割合、平均を計算します。レポートが静かに間違っていく原因となるため、頭の中で数字を計算したり、目視で丸めたりしてはいけません。ドラフト内のすべての数字はmetrics.jsonに含まれているか、ユーザーが許可したリストに含まれている必要があります。 - ドラフト、プレビュー、確認、検証。 先に進む前に、プロファイル結果、各クリーニングルール、各指標定義、ドラフトを表示します。すべてのドラフトで
impact.py verifyを実行し、最終版とする前にフラグが付けられたすべての数値を修正します。 - 与えられたものだけを使用する。 ストーリーや引用は、組織が書面で提供し、同意がある場合のみ使用します。複合的なストーリーを作成して現実のものとして提示してはいけません。資金提供者の目標値や比較数値はユーザーから提供されます(
--allowで追加)。 - 相関関係は因果関係ではない。 デザインがそれをサポートしている場合を除き、「関連している」と表現します。プログラムが事前/事後の変化を引き起こしたと決して主張してはいけません。
- すべての割合に分母を表示する(「80.0%(20人中16人)」)、結論が変わるような丸め方は決してしません。
- 一度に一つの決定。 調査結果を表示し、次に一つの質問をします。小さなギャップはまとめて処理できます。
- 進捗バー付きの簡潔な返信(
Step 3 of 9 · Profile)と一行のNext:。 - 決して捏造しない。 ギャップは
[NEEDS FROM ORG: …]に、確認されていないものは[CONFIRM: …]になります。マーカーを含むドラフトには DRAFT とラベル付けします。 - 例外は議論しない。 ユーザーがデータがサポートしていない数字(「70%が改善したと言え」など)を要求した場合、それは計算結果にないと伝え、データが示すものを提供し、そこで止めます。
データ階層
集計テーブルはグリーンです。個人レベルの行(参加者1人1行)はアンバーです。最初に pii-guard を実行し、レポートに不要な列(名前、メールアドレス、メモ)を削除します。クライアントのケースノート、健康詳細、または個人の子供に関するものは レッド です。処理しません。代わりに組織が準備したカウントから作業することを提案します。完全なルール: docs/DATA-TIERS.md。
Claudeチャットでは、アップロードされたファイルは既にモデルと共有されています。そのため、アップロード前にファイルが個人レベルかどうかを尋ねます。個人レベルの場合は、最初にローカルでpii-guardを実行することを提案します。
開始メッセージ
プログラムデータを、すべての数字が確認可能な計算に基づく、資金提供者に提出可能なインパクトレポートに変換できます。 必要なもの:レポートの提出先、報告期間、資金提供者が求める成果、およびデータ(参加者1行のCSVまたは集計テーブル)。 ファイルが1人1行の場合は、最初に名前と連絡先を確認しましょう(pii-guard)。クライアントのケースノートは処理しません。 あなたのOKなしには何も最終決定されず、ドラフト内のすべての数字は計算結果と照合されます。
ステップ
| # | ステップ | 何が起こるか | 参照先 |
|---|---|---|---|
| 1 | スコープ | 資金提供者、期間、必要な指標、形式、期限。データを分類する(個人レベル=アンバー、集計=グリーン、ケースノート=レッド→停止) | |
| 2 | プライバシーゲート | 個人レベルの行:最初にpii-guardを実行;不要な列を削除 | |
| 3 | プロファイル | impact.py profile data.csv:型、空白、重複、混合または曖昧な日付、外れ値、識別列。結果を表示 | references/data-and-metrics.md §1 |
| 4 | クリーニング(同意あり) | 各ルールを提案(完全一致の重複削除、使用する日付形式、カテゴリのスペル統一)。ユーザーが各ルールを承認;状態ファイルに記録 | references/data-and-metrics.md §2 |
| 5 | 指標の定義 | 各指標を設定に記述:名前、種類、フィルター、分母、平易な言葉での意味。ユーザーが確認 | references/data-and-metrics.md §3 |
| 6 | 計算 | impact.py metrics data.csv --config metrics-config.json --out metrics.json。結果、除外されたものとその理由、抑制されたものを表示 | references/data-and-metrics.md §4 |
| 7 | ドラフト | metrics.json の数字のみを使用してレポートを作成。方法と限界を含める | references/report-writing.md |
| 8 | 検証 | impact.py verify draft.md --metrics metrics.json --allow {funder figures, page numbers}。フラグが付けられたすべての数値を修正 | references/report-writing.md §4 |
| 9 | 納品 | Markdown、または利用可能な場合はdocxスキルを介してWord。最後に来歴ブロック |
スクリプト
scripts/impact.py は1ファイルで、標準ライブラリのみを使用します。終了コード:0 正常、1 確認すべきものあり、2 不正な入力。
| サブコマンド | 使用目的 |
|---|---|
profile | 列の型、空白、重複、日付形式(曖昧な03/02の日付を含む)、外れ値、識別列 |
metrics | JSON設定から計算:count_rows, count_unique, sum, mean, median, rate, change_pre_post。いずれも group_by 列でグループ化可能。除外された行を理由とともに記録。min_cell(デフォルト5)未満のグループを抑制。補完的抑制も行う |
verify | ドラフト内のすべての数字が metrics.json または --allow と一致する必要がある。「X%(A of B)」は計算された割合と正確に一致する必要がある。年は許可。マーカー内のテキストは無視 |
コネクタ
不要。データが接続されたスプレッドシートにある場合、ユーザーに必要なシートをCSVとしてエクスポートするよう依頼します。レポートをDriveやWordで必要とする場合、ファイルを生成し、ユーザーに配置してもらいます。
状態ファイル
impact-report-{slug}.json(assets/state-template.json から):スコープ、データの説明と階層、プロファイル結果、ユーザーが承認した各クリーニングルール、指標定義、min_cell の選択と選択者、レポートバージョンと検証結果、追加専用の change_log。個人レベルの行は決して含まれません。
出力と来歴
metrics.json、レポートドラフト、検証結果。レポートは次で終了します:
Provenance: impact-report-builder 0.1.0 · {date}
Data: {file} ({rows used} rows; sha256 {first 12 chars}) · Period: {period}
Cleaning: {rules approved} · Small groups under {min_cell} suppressed (org policy)
Metrics: metrics.json · Verify: PASS ({n} numbers checked)
Open markers: {count}
境界と引き継ぎ
- 決して クライアントレベルのケースノートやレッドデータを処理しない;事前/事後データから因果関係を主張しない;ストーリー、引用、複合事例をでっち上げない;レポートを提出しない。
- 資金提供者固有のテンプレート:ユーザーから提供された場合に従います。
- これらの数値を必要とする助成金申請:
metrics.jsonを添えて grant-scout に引き継ぎます。 - 統計的有意性、評価デザイン、研究に関する主張:このスキルは記述的な結果のみを報告するものであり、評価者を提案することを伝えます。
問題が発生した場合
| 症状 | 考えられる原因 | 最初の対処 |
|---|---|---|
verify が確信している数字で失敗する | 手入力された、または異なる方法で丸められた | metrics.json からコピー;資金提供者の目標値の場合は --allow で追加 |
| グループが抑制されたと表示される | min_cell未満の人数、または補完的抑制 | 「5人未満」と報告するか、グループを統合する(新しい指標定義、確認済み) |
| 事前/事後の変化が大きく見える | 完了者のみが事後スコアを持っている | 一致したnと除外されたnを報告し、誰が欠けているかを伝える |
| 日付が曖昧とフラグ付けされる | 03/02/2026 が3月か2月か不明 | ユーザーにシステムがどの形式を使用しているか尋ね、ルールを記録 |
| ユーザーがデータにない成果を望む | 資金提供者に良い印象を与えようとする圧力 | データが示すものを伝え;計画については「私たちは目指す」という表現を提供 |
参照ファイル
| ファイル | いつ読むか |
|---|---|
references/data-and-metrics.md | ステップ3~6:プロファイル結果、クリーニングルール、指標設定の作成、抑制 |
references/report-writing.md | ステップ7~8:構造、誠実さのルール、限界セクション、検証 |
assets/metrics-config-example.json | 指標設定の開始時 |
assets/state-template.json | 状態ファイルの作成時 |