crm について
crmは、HubSpot CRM v3 APIを使った日常的なHubSpot CRM操作向けのスキルです。範囲を制限できるCLIで連絡先の検索や取引パイプラインの確認を行い、ステージ変更には事前確認と明示的な承認が必要です。
主な機能
- 01連絡先の一覧・取得・検索
- 02パイプラインやステージ別の取引表示
- 03パイプラインのステージID確認
- 04取引ステージ変更のプレビューと承認
- 05範囲を制限した読み取りとJSON出力
活用シーン
- 01名前や検索語で連絡先を探す
- 02パイプラインの特定ステージにある取引を確認する
- 03承認後に取引ステージを変更する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ magnus919/ agent-skills --skill crmインストール後、Claude Code で/crmを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdevals/evals.jsonreferences/00-source-index.md01-hubspot-crm-operations.mdscripts/crm-clitests/test_crm_cli.py詳細
HubSpot CRM オペレーション
このスキルを使用すると、HubSpot CRM v3 API を通じて HubSpot CRM データを読み取り、明示的な確認を得たうえで更新できます。対象は、コンタクトレコード、コンタクト検索、取引パイプラインの表示、取引ステージの変更です。これは単一の CRM ベンダー(HubSpot)向けのツールスキルです。HubSpot アプリやワークフローの構築はアプリケーション開発にあたります。このスキルが担うのは、日常的なエージェントのワークフロー、つまり「このコンタクトは誰か?」「パイプラインには何があるか?」への回答と、確認済みのステージ変更の適用です。
運用上の契約
- 変更を加える前に、読み取り専用で情報を確認します。 コンタクトの一覧表示や検索、取引やパイプラインの表示は自由に行えます。付属の
crm-cliスクリプトは書き込みを一切行わずに読み取りを実行します。 - 実行前に対象、範囲、ロールバック手段を確認します。 取引を新しいステージに移動すると、収益レポートが参照する共有パイプラインが変更されます。そのため、取引と移動先のステージを指定する明示的な人間の指示に加え、
crm-cliによる--dry-runのプレビューと--yesによる確認が必要です。ステージの移動は元に戻せますが、監査履歴は残ります。実行前に確認してください。 - 読み取りの範囲を守ります。 HubSpot のページには
limitを指定します。タスクに必要な範囲を超えてページを取得しないでください。crm-cli --limitは、すべての一覧表示と検索の件数に上限を設定します。 - 提示する根拠の範囲を絞ります。 短い名前、メールアドレス、金額、ステージラベルを引用してください。完全なレコード、トークン、生のペイロードをチャットに出力しないでください。
- オブジェクトモデルを把握します。 コンタクトと取引は、プロパティマップを持つ別々のオブジェクトです。ステージの移行には、ステージラベルではなく、取引のパイプラインから取得したステージ ID(
pipelines list)を使用する必要があります。
crm-cli スクリプト
scripts/crm-cli は、HubSpot CRM v3 API を利用する、エージェント優先設計の標準ライブラリのみを使った CLI です。対象となる課題の範囲全体、つまりレコード、検索、パイプラインの表示に対応します。
crm/scripts/crm-cli --help # no token or network needed
crm/scripts/crm-cli --json --limit 20 contacts list
crm/scripts/crm-cli --json contacts get --id 51
crm/scripts/crm-cli --json contacts search --query "ada"
crm/scripts/crm-cli --json --limit 20 deals list
crm/scripts/crm-cli --json deals list --pipeline default --stage appointmentscheduled
crm/scripts/crm-cli --json pipelines list
crm/scripts/crm-cli deals update-stage --id 901 --stage closedwon --dry-run # preview
crm/scripts/crm-cli deals update-stage --id 901 --stage closedwon --yes # confirmed
終了コード:成功は 0、API エラーまたはチェック失敗は 1、使用方法のエラーは 2 です。ステージの変更にはガードが設けられています。--dry-run または --yes がない場合、スクリプトは終了コード 1 で処理を拒否し、API を呼び出しません。読み取りは --limit の値(デフォルトは 20、最大は 100)で上限が設定されます。
運用の流れ
- 質問の範囲を定める:CRM 内の人や情報を調べるのか、取引を移動するのかを確認します。
contacts search/contacts listまたはdeals listでオブジェクトを特定します。 - 範囲を絞って読み取る:1 件のレコードには
contacts get、パイプラインの表示にはdeals list(必要に応じてパイプラインやステージで絞り込み)を使用し、ステージラベルを ID に対応付けるにはpipelines listを使用します。 - 回答に必要な情報を整理する:質問に合わせて、コンタクトの詳細、取引金額やステージ、パイプラインの内訳などの根拠をまとめます。
- 確認を得て実行する:変更を求める人間の指示がある場合に限り、
--dry-runでプレビューし、--yesで確認して実行します。 - 結果を検証する:取引を再読み取り(
deals list --stage <target>)し、ステージが変更されたことを確認します。
レコード、検索、パイプラインの表示
- コンタクトレコード(
/objects/contacts):一覧表示(GET)または 1 件の取得(ID による GET)ができます。CLI は名、姓、メールアドレス、会社、作成日を要約します。検索(POST /objects/contacts/search)では、クエリテキストを使ってコンタクトを検索し、--limitで件数を制限します。 - 取引パイプラインの表示(
/objects/deals):金額、パイプライン、ステージとともに取引を一覧表示できます。1 つのパイプラインまたはステージで絞り込むこともできます。pipelines list(/pipelines/deals)は、ステージ ID とラベルを含むパイプラインを返します。絞り込みや更新にはステージ ID を使用してください。 - ステージの変更(
PATCH /objects/deals/{id}):dealstageプロパティを設定する、ガード付きの変更です。--dry-runで移動先のステージをプレビューし、--yesで確認してから、再度読み取って結果を検証してください。対象範囲はステージの移動のみです。その他の取引プロパティの編集はアプリケーション開発にあたります。
アクセスモデル
- HubSpot のプライベートアプリのアクセストークン(
pat_...)は、オブジェクトごとに読み取り/書き込みのスコープが設定されています。読み取りにはcrm.objects.contacts.readとcrm.objects.deals.readが必要です。ステージの更新にはcrm.objects.deals.writeが必要です。 - レコードには、プロパティ名(例:
dealstage、dealname、amount)をキーとするpropertiesマップが含まれます。プロパティ値は文字列です。CLI は、このスキルが使用するフィールドを要約します。 - トークンは認証情報です。
HUBSPOT_TOKENに保存し、コード、チャット、コミットには決して含めないでください。トークンが漏えいした場合は、プライベートアプリの設定でローテーションしてください。
リファレンスの参照先
| 次の場合に読み込む | リファレンス |
|---|---|
| ソース、スコープ表、更新手順 | references/00-source-index.md |
| エンドポイント、ページネーション、オブジェクトモデル、ステージ更新、エラー | references/01-hubspot-crm-operations.md |
含まれる成果物
scripts/crm-cli:範囲を限定した、標準ライブラリのみを使用する CLI(contacts list/get/search、deals list/update-stage、pipelines list、--json、--limit、変更操作は--dry-run/--yesで制御)。tests/test_crm_cli.py:変更操作のゲートと読み取り専用の契約を含む、スタブ HubSpot API に対する再現可能なテスト 13 件。references/:日付付きのソースインデックスと HubSpot CRM 操作リファレンス。evals/evals.json:エージェントの実行結果を評価する、出力品質の評価ケース 6 件。
検証の範囲
| 主張 | 最低限必要な証拠 |
|---|---|
| コンタクトが存在する | crm-cli contacts search --query ... --json または contacts get がレコードを返す |
| パイプラインの表示が正確である | crm-cli deals list --json が、ステージ ID と適用済みフィルターを含む取引を返す |
| ステージラベルが ID に対応している | crm-cli pipelines list --json がパイプラインのステージマップを返す |
| ステージ変更が反映された | crm-cli deals update-stage --yes が終了コード 0 で終了し、続けて実行した deals list --stage に該当する取引が表示される |
| 変更操作を安全に実行できる | crm-cli deals update-stage --dry-run が対象の取引と変更先のステージを正確に表示する |
厳守事項
- 人間からの指示、
--dry-runによるプレビュー、--yesによる確認なしに、取引のステージを変更してはいけません。パイプラインの変更は売上レポートと監査履歴に反映されます。 - トークンにオブジェクトのスコープがない可能性がある場合、レコードが存在しないと断言してはいけません。まずアクセスモデルを確認してください。
--limitを超えて読み取りをページングしてはいけません。レコード全体、トークン、生のペイロードをチャットに出力してはいけません。- このスキルは HubSpot CRM API を操作します。HubSpot アプリの構築や、他の CRM は対象外です。
使用しない場合
- HubSpot アプリ、ワークフロー自動化、カスタムオブジェクトの構築 — これは HubSpot アプリの開発です。サービス設計については backend-engineering を参照してください。
- HubSpot のマーケティング、シーケンス、メール自動化 — これらは HubSpot Marketing の領域であり、このスキルが対象とする CRM API ではありません。
- 他の CRM(Salesforce、Pipedrive、Zoho)— それぞれ独自の API とツールがあります。このスキルの対象は HubSpot です。
- CRM 戦略、営業プロセスの設計、パイプラインの方法論 — これらは組織・戦略上の業務であり、API 操作ではありません。