メトリクスパック
あなたのタスク
スタートアップの収益データを、ファンドアナリストが最初に確認する数値に変換するよう依頼されました:
MRR、コホート、NRR – 1枚のスライドにまとめます。数値は metrics.py から取得し、あなたの頭から生成してはいけません。
入力を選択し、ヘルパーを実行し、そのCSVを読み、その周りに文章を記述します。
入力 ヘルパー (metrics.py) あなた
───── ─────────────────── ───
updates/ (a) ──┐
顧客エクスポート (b) ─┼──► mrr.csv cohorts.csv ──► metrics.md (平易な英語)
契約台帳 (c) ┘ nrr.csv excluded.csv metrics-slide.png (1枚のスライド)
成果物は <company-slug>/metrics-pack/ 内に、カレントワーキングディレクトリからの相対パスで配置します:
metrics.md– メモ。「平易な英語で」で始まります。mrr.csv、cohorts.csv、nrr.csv(契約台帳の場合はexcluded.csvも)– ヘルパーが作成し、あなたは編集しません。metrics-slide.png– 1枚の16:9スライド。
このファイルで使用される略語:MRR = 月次経常収益;NRR = ネット・レベニュー・リテンション;
CSV = カンマ区切り値ファイル;PNG = 画像ファイル;ISO = 国際日付形式
(YYYY-MM-DD、または月の場合は YYYY-MM);EUR = ユーロ;USD = アメリカドル;--as-of = 最後の請求月を指定するヘルパーオプション。
入力
$ARGUMENTS または会話から:企業名、およびオプションでファイル。3種類の入力を、優先順位の高い順に:
| 入力 | 内容 | ヘルパーへの渡し方 |
|---|---|---|
| (b) 顧客別エクスポート | CSV customer_id,month,revenue、月は YYYY-MM | --revenue <csv> |
| (c) 契約台帳 | ヘッダー行が Client, Contract value, Start month, Term (months) のCSV;ヘッダーより上の行はスキップ;月は May-26 の形式;値は "1,550,000" のような形式 | --contracts <csv> |
(a) <company-slug>/updates/ | 収益行を含む月次アップデートファイル、顧客詳細なし | revenue-chart と同様に読み取り(手順2参照)、customer_id,month,revenue を1顧客 total で作成し、その後 --revenue |
入力(a)の場合、顧客はいません。ヘルパーは cohorts.csv と nrr.csv にヘッダーのみを書き込み、mrr.csv の new、expansion、contraction、churned セルは空のままにします(1顧客の場合、これらは総成長率を言い換えるだけになるため)。これらの列は無視し、ヒートマップは表示せず、「12ヶ月NRR:まだ計算できません」(理由:顧客詳細なし)と出力します。これは、単一の顧客IDを持つ --revenue ファイルでも同様です。
もし企業名が曖昧な場合(同名の2社がある場合)、何かを読む前にどちらかを尋ねてください。
ステップ1 – 企業カードと入力
企業カード
<company-slug>/company-profile.md – 最初にこれを読んでください。存在しない場合は作成します。フィールドが空で、それを学習した場合は、それを記入し、updated / updated_by を更新します。既に記入済みのフィールドを上書きしてはいけません:異なる値を見つけた場合は、両方の値と出典を ## Conflicts に行として追加します。カードの末尾には ## Conflicts セクション(存在しない場合は作成)があり、そのテーブルヘッダーは正確に | Field | Card value | Card source | New value | New source | Found by | Date | とします。
| フィールド | 許可される値 |
|---|---|
| 顧客に提供する価値 | 1文、会社自身の言葉で引用し、URL付き |
| 誰が支払うか | 自由記述 |
| ビジネスモデル | B2B · B2C · B2G |
| 収益モデル | サブスクリプション · トランザクション · 広告 · 一括 · n.a. |
| マーケット | 1つだけ選択:Fintech & insurance · Health & bio · Commerce & retail · Logistics & supply chain · AI & data infrastructure · Enterprise software · Cybersecurity · Legal, compliance & governance · Sales & marketing · HR & talent · Education · Media, gaming & entertainment · Real estate & construction · Energy, climate & agriculture · Industrial & robotics · Consumer lifestyle & services · Other |
| 垂直分野 | 自由記述 |
| ステージ | pre-seed · seed · Series A · Series B+ · n.a. |
| 地理 | 本拠地国;販売国 |
| 調達ラウンド | 金額+通貨+証券の種類、または「記載なし」 |
| 利用可能なメトリクス | 場所(updates/、エクスポート)、または「なし」 |
フロントマター:company、slug、website、updated(ISO日付)、updated_by(スキル名)。
カードのテーブルには3列目 Source があり、全てのフィールドに記入されます。
企業名、ビジネスモデル、収益モデル、地理をカードから取得します;地理は期待される通貨を示唆します。「利用可能なメトリクス」に使用するファイルを記入します。収益モデルがサブスクリプションでない場合は、メモにMRRは経常収益を前提としていると記載します。
入力(上の表)を見つけ、<company-slug>/metrics-pack/input/ にコピーし、実行が監査可能になるようにします。所有者が公開可能と明言しない限り、顧客レベルのファイルをコミットまたは公開してはいけません。通貨: ファイルから取得します;契約台帳では記載されていないことが多いです。記載がない場合は、すべての場所に「通貨記載なし」と書き、どれかを選んではいけません。
今日と --as-of。 --as-of は実際に請求された最後の月です – 通常は今日の日付(ISO)からの今月。それ以降の月は 契約済み であり、署名済みでまだ請求されていません。
ステップ2 – ヘルパーの実行
/usr/bin/python3 または任意のPython 3.9+を使用します;metrics.py は標準ライブラリのみを必要とし、ネットワーク呼び出しは行いません。このファイルと同じ場所にあります(skills/metrics-pack/metrics.py;インストールされたプラグインでは、${CLAUDE_PLUGIN_ROOT}/skills/metrics-pack/metrics.py)。
python3 <path>/metrics.py --contracts <register.csv> --out-dir <company-slug>/metrics-pack \
--as-of 2026-11 --min-term 3
python3 <path>/metrics.py --revenue <export.csv> --out-dir <company-slug>/metrics-pack \
--as-of 2026-11
出力されるファイル:
| ファイル | 列 | 意味 |
|---|---|---|
mrr.csv | month, mrr, new, expansion, contraction, churned, status | 暦月ごとに1行;status は --as-of までは billed、それ以降は contracted |
cohorts.csv | cohort, month_offset, revenue | cohort = 顧客の最初の収益月;offset = それからの月数 |
nrr.csv | start_month, months, nrr | 各開始月について、請求済み 月のみから計算可能な12ヶ月NRR(--as-of 以降の月はカウントしません);計算不可の場合はヘッダーのみ。単一顧客エクスポートの場合もヘッダーのみ。記録された更新がない契約台帳の場合もヘッダーのみ;台帳の場合、記録された更新があるクライアントの開始月のみがリストされます(ステップ2のルール) |
excluded.csv | client, value, start, term | --min-term ヶ月(デフォルト3)より短い契約 |
ヘルパーが error: で停止した場合、問題のある列または値を示します。入力元で修正するか(所有者に尋ねてください) – 決して回避してはいけません。
ヘルパーが前提とすること(それぞれをメモに記載すること):
- 契約金額は 期間全体の総額 であり、期間全体に均等に分配されます:開始月から、金額 ÷ 期間 が月額となります。所有者が月額または年額と言った場合は、止めて尋ねてください – 答えがすべての数値を変えます。
- 契約は、その期間が少なくとも
--min-termヶ月以上の場合にのみ経常収益とみなされます。それより短いものは 非経常 であり、excluded.csvに報告され、MRRには含まれません。 - 新しい行が示さない限り、何も更新されません。契約期間が終了すると、ヘルパーは収益が
churnedとして離脱することを示します。契約台帳では、これは 契約終了であり、証明された解約ではありません – そのような月ごとにその旨を明記してください。 - 契約台帳は契約を記録し、更新を記録しません。 契約終了は収益喪失として読み取られるため、ヘルパーは
nrr.csvを、記録された更新 があるクライアントの開始月についてのみ台帳から計算します。ルール:更新とは、同じクライアントの後の経常契約(期間が少なくとも--min-term)であり、その開始月が以前の経常契約の終了月より少なくとも1ヶ月後であること(終了月 = 開始月 + 期間 - 1;したがって、終了月の翌月に開始する連続契約はカウントされ、ギャップも許容されます)。最初の契約と重複する2番目の契約(アップセルまたはアドオン)は 更新ではありません。どのクライアントにも更新がない場合、nrr.csvはヘッダーのみで、答えは「まだ計算できません」となります。一部にある場合、その数値は 台帳に記録された更新のみ を反映しており、メモとスライドでその旨を明記しなければなりません。 - 一旦停止して後に戻ってくる顧客は、再び
newとしてカウントされます。
ステップ3 – 出力の読み取り
csv モジュールでCSVを読み取ります。あなたが書くすべての数値はCSVから取得されます。文章で何も計算してはいけません;CSVにない数値(例えば割合)が必要な場合は、コマンドで計算し、そのコマンドの出力を引用します。
- MRR。 最後の請求月の
mrr;ピーク月とそのstatus;請求済み対契約済みの分割。データ内の最初と最後の月を指定します。 - ランオフ。 最後の契約開始以降の月は、データ内で更新がないため、収益が減少するのみです。それらを更新のない契約のランオフとしてマークし、解約としてはいけません。
- コホート。 少なくとも2ヶ月の 請求済み 収益があるコホートをカウントします。スライドのヒートマップには少なくとも2つのそのようなコホートが必要です;それ以外の場合はスキップして理由を述べます。
- NRR。 最初に入力を確認します。入力(a)または単一顧客エクスポートの場合、
nrr.csv、cohorts.csv、および変動列を無視します:答えは「まだ計算できません」です。それ以外の場合で、nrr.csvにデータ行がある場合はそれらを引用します;契約台帳の場合は「台帳に記録された更新のみをカウント」と追加します。ヘッダーのみの場合は、答えは 「12ヶ月NRRはまだ計算できません」 です:どの顧客も開始から12ヶ月後の収益月を持っていません。決して推定せず、より短い期間から埋めてはいけません。理由を1行で述べてください(例:「台帳内のすべての契約が2026年に開始しているため、12ヶ月経過して更新されたものはありません」)。 - 除外。 除外された契約の数、その総額、およびそれらを除外したルール。
ステップ4 – metrics-slide.png
matplotlibとnumpyが必要です(python3 -c "import matplotlib, numpy")。不足している場合は、インストール前に確認してください;クリーンな方法は使い捨ての仮想環境です。ベースは revenue-chart のチャートテンプレート(ダークテーマ、ラベル重複チェック)です。
1枚の16:9スライド、以下のレイアウト:
┌─────────────────────────────────────────────────────────────┐
│ <企業名> – 収益メトリクス as of <ISO日付> │
├──────────────────────────────┬──────────────────────────────┤
│ MRR線図:実線 = 請求済み、 │ コホートヒートマップ(請求月 │
│ 破線+網掛け = 契約済み │ のみ、月0の%)– または │
│ │ ヒートマップがない場合NRRパネル │
├──────────────────────────────┴──────────────────────────────┤
│ NRR: <数値> または