mcpField
D
dx-org-shape-manage

dx-org-shape-manage

github.com/forcedotcomクラウド・DevOps1.1k1.1k 回インストール1 日前に更新
リポジトリ

dx-org-shape-manage について

Salesforce CLI で Org Shape の作成、一覧表示、削除を行うスキルです。データやメタデータを含めず、組織設定の基準を記録します。

主な機能

  1. 01Org Shape の作成
  2. 02有効・処理中の Shape の一覧表示
  3. 03無効な Shape 履歴の照会
  4. 04確認を省略した Shape の削除
  5. 05コマンドの JSON 出力をファイル保存

活用シーン

  1. 01ソース組織の設定基準の記録
  2. 02認証済み組織にある Shape の確認
  3. 03ソース組織の無効な Shape の調査
  4. 04組織に関連付けられた Shape の削除

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/forcedotcom/sf-skills --skill dx-org-shape-manage

インストール後、Claude Code で/dx-org-shape-manageを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

examples/
create_error_output.json
create_success_output.json
delete_output.json
list_inactive_output.json
list_output.json
references/
cli_flags.md

詳細

dx-org-shape-manage

sf org create shape、sf org list shape、sf org delete shape を使用して、Salesforce 組織の形状のライフサイクル全体(作成、一覧表示、削除)を管理します。組織の形状は、ソース組織の基本設定(機能、制限、エディション、Metadata API 設定)を、そのデータやメタデータを含めずに記録します。


ツールの制限

sf org ... shape コマンドの実行には、Bash ツールのみを使用してください。MCP ツールは使用せず、完全に無視してください。

評価/テスト用の出力アーティファクト: 出力ディレクトリが利用可能な場合は、コマンドの完全な JSON レスポンスを必ずファイルに書き込んでください。どのファイルに書き込むかをユーザーに尋ねないでください。このスキルでファイル名が定義されています。各コマンドの実行後、(1)ユーザーが出力先のパス(例:「生成したすべてのファイルをフォルダー X に書き込む」)を指定した場合は、直ちにそこへ書き込みます。(2)指定がない場合は、[ -d force-app/main/adk-eval-output/ ] && echo 'force-app/main/adk-eval-output' を実行して評価ディレクトリを検出します。(3)コマンドの変更されていない完全な JSON レスポンス(status/result/warnings のラッパーを含む)を、次のファイル名を使って <output-dir>/<filename> に書き込みます。形状の作成には create-shape-result.json、形状の一覧表示には list-shapes-result.json、非アクティブな形状の SOQL クエリには list-shapes-inactive-result.json、形状の削除には delete-shapes-result.json を使用してください。これが生成される出力です。確認を求めずに書き込んでください。これらの操作について「生成するファイルはありません」と言わないでください。JSON の結果が出力アーティファクトです。


対象範囲

  • 対象:組織の形状の作成(sf org create shape)、一覧表示(sf org list shape)、特定のソース組織の非アクティブな形状を含む一覧表示(ShapeRepresentation に対する SOQL)、削除(sf org delete shape)
  • 対象外:スナップショットの作成/確認/一覧表示/削除(dx-org-snapshot-manage を使用)、スクラッチ組織の作成(dx-org-manage を使用)

必須入力

ユーザーのリクエストから次の情報を推測します。

  • 操作:作成、一覧表示、非アクティブな形状を含む一覧表示、または削除(ワークフローの手順 1 を参照)
  • ソース組織(作成、削除、非アクティブな形状を含む一覧表示):形状を作成する組織、または形状を削除/クエリする組織のユーザー名またはエイリアス。--target-org で指定します。通常の一覧表示(Active/InProgress のみ)にはソース組織は不要です。

注意:

  • --name または --description フラグはありません。形状はカスタム名ではなく、ソース組織の ID で識別されます。
  • --target-dev-hub フラグはありません。形状コマンドは Dev Hub ではなく、ソース組織に対して直接実行されます。

ワークフロー

  1. 操作を特定し、以下のコマンドパターンに対応させます。
  2. 作成/削除の場合はソース組織を確認します。ユーザー名/エイリアスを特定してください。指定されていない場合は、sf config get target-org でデフォルトを確認します。
  3. Bash ツールで --json フラグを付けて実行します。
  4. 結果を報告します(「出力に関する要件」とサンプルファイルを参照)。
コマンドパターン
操作ユーザーの意図Bash ツールで実行
作成組織から形状を作成するsf org create shape --target-org <alias> --json
作成デフォルトのターゲット組織から形状を作成するsf org create shape --json
一覧表示すべての組織の形状と ID/ステータスを一覧表示する(Active/InProgress のみ)sf org list shape --json
一覧表示一覧をファイルに保存するsf org list shape --json > tmp/MyOrgShapeList.json
一覧表示(非アクティブを含む)特定のソース組織のすべての形状(Inactive を含む)を一覧表示するsf data query --target-org <alias> --query "SELECT Id, Name, Status, CreatedDate, LastModifiedDate FROM ShapeRepresentation" --json
削除組織の形状を削除する(確認プロンプトあり)sf org delete shape --target-org <alias> --json
削除プロンプトなしで形状を削除する(スクリプト/CI)sf org delete shape --target-org <alias> --no-prompt --json

形状の作成後、sf org list shape --json を実行して組織 IDを取得します。

Inactive な Shape の一覧表示

sf org list shape には、Inactive な Shape を表示するフラグがなく、--target-org フラグもありません(ローカルで認証済みのすべての org を常にスキャンします)。後続の sf org create shape の実行によって置き換えられた Shape も含め、ソース org の完全な Shape 履歴を確認するには、ShapeRepresentation を直接クエリします。

sf data query --target-org <alias> --query "SELECT Id, Name, Status, CreatedDate, LastModifiedDate FROM ShapeRepresentation" --json

このクエリは、ユーザーが名前を指定したソース org のinactiveまたはすべて/過去のShape を明示的に求めた場合にのみ使用してください。通常の「自分の org の Shape を一覧表示して」というリクエストでは、引き続き sf org list shape を使用します。これはドキュメントに記載された、複数 org を対象とするコマンドであり、このスキルの他の動作とも一致しています。

注意事項:

  • ShapeRepresentation には SourceOrgId、username、alias フィールドがありません。返された生のクエリフィールド(Id、Name、Status、CreatedDate、LastModifiedDate)をそのまま報告してください。これらの行に orgId/username/alias を作り出してはいけません。
  • ユーザーが「すべて」/「履歴」ではなく、inactive な Shape を明示的に求めた場合に限り、対象を inactive な Shape のみに絞るため WHERE Status = 'Inactive' を追加してください。
  • 作成/削除と同じ ShapeRepresentation の CRUD アクセスが必要です。

ルール/制約

制約理由
常に --json フラグを使用する信頼性の高い解析とエラー処理のために、構造化された出力を提供します
ソース org で Org Shape for Scratch Orgs が有効になっている必要があります有効になっていない場合、作成/削除はアクセス権限なしのエラーで失敗します。ソース org の Setup → Scratch Orgs → Enable Org Shape for Scratch Orgs で有効にしてください
ユーザーには ShapeRepresentation オブジェクトへのアクセス権が必要ですCRUD アクセス権がない場合、作成は NoCrudAccessCreateShape で失敗します。org 管理者に依頼してください
--target-org は Dev Hub ではなく、ソース org を指定します作成/削除はこの org に対して実行され、Dev Hub に対する操作ではありません。一覧表示では --target-org を指定しません
--name/--description フラグはありませんShape は任意の名前ではなく、ソース org の ID に紐付けられます
ソース org ごとに有効な Shape は 1 つです作成を再実行すると、以前の Shape は置き換えられます(inactive に設定されます)。delete は org のすべての Shape を削除します
delete はデフォルトで確認を求めます対話なし/CI で使用する場合は --no-prompt(-p)を使用してください。確認を拒否すると、削除せずに中止します

トラブルシューティング

問題解決方法
ShapeRepresentationNoAccess — "The org needs to be enabled for org shape before one can be created"ソース組織で組織シェイプが有効になっていません。ソース組織で Setup → Scratch Orgs → Enable Org Shape for Scratch Orgs に移動して有効にし、再試行してください
NoCrudAccessCreateShape — "Can't create org shape. Contact the org admin..."ShapeRepresentation オブジェクトへのアクセス権がありません。組織管理者にアクセス権を付与してもらい、再試行してください
ShapeCreateFailed — "Error creating scratch definition file..."一般的な作成エラーです。ソース組織に接続でき、認証されていることを確認して再試行してください。解決しない場合は、Salesforce サポートにお問い合わせください
作成時の UNKNOWN_EXCEPTION(サポート用の ErrorId を含む一般的なエラーで、再試行しても再現する)ShapeRepresentation が部分的に表示されていても、ソース組織で組織シェイプが完全に有効になっていない可能性があります。ソース組織で Setup → Scratch Orgs → Enable Org Shape for Scratch Orgs が有効であり、ユーザーに ShapeRepresentation の CRUD 権限があることを確認してから、再試行してください
sf org list shape が空のリストを返すシェイプがまだ存在しない(または、Active/InProgress のシェイプがない)状態です。sf org create shape で作成してください
sf org list shape に、ユーザーが想定しているシェイプが表示されないActive/InProgress のシェイプのみが表示され、これを変更するフラグはありません。以前の sf org create shape の実行によって、シェイプが Inactive になっている可能性があります。代わりに、その特定のソース組織に対して「非アクティブなシェイプの一覧表示」の SOQL クエリを使用してください
削除がコード 68 で終了する(一部失敗)一部のシェイプの削除に失敗しました。JSON の failures 配列でシェイプごとのメッセージを確認し、再試行してください
削除がコード 1 で終了する(すべて失敗)削除全体に失敗しました。組織で組織シェイプが有効であり、アクセス権があることを確認してください
No org found for <alias>/NamedOrgNotFoundErrorソース組織のエイリアスが存在しないか、認証されていません。sf org list で確認するか、sf org login web で再認証してください
デフォルトのターゲット組織がなく、--target-org も指定されていない--target-org <alias> を指定するか、sf config set target-org=<alias> でデフォルトを設定してください

出力の仕様

--json を使用すると、すべてのコマンドが JSON を返します。

  • 作成 → shapeId、success、errors。
  • 一覧表示 → シェイプの配列。各シェイプには orgId、username、alias、shapeId、status(Active または InProgress)、createdBy、createdDate が含まれます。
  • 一覧表示(非アクティブを含む) → SOQL クエリの結果(records、totalSize、done)。各レコードには Id、Name、Status(Active、InProgress、または Inactive)、CreatedDate、LastModifiedDate が含まれます。ShapeRepresentation にはそのようなフィールドがないため、orgId/username/alias は含まれません。
  • 削除 → orgId、shapeIds(削除済み)、failures。ユーザーが確認プロンプトで拒否した場合、結果は返されません。

完全なレスポンス構造については、以下で参照されているサンプルファイルをご覧ください。


スキル間の連携

必要な操作委任先
スクラッチ組織を作成する、またはスナップショットを作成/使用してスクラッチ組織を作成するdx-org-manage スキル
スナップショット自体を作成する、ステータスを確認する、一覧表示する、または削除するdx-org-snapshot-manage スキル

参照ファイル一覧

ファイル読むタイミング
examples/create_success_output.jsonシェイプ作成成功時のレスポンス構造を確認する場合
examples/create_error_output.json一般的な作成エラーのシナリオに対応する場合
examples/list_output.json一覧表示のレスポンス構造(組織 ID、ステータス)を確認する場合
examples/list_inactive_output.jsonInactive のシェイプを含む一覧表示の SOQL クエリレスポンス構造を確認する場合
examples/delete_output.json削除のレスポンス構造(削除済み ID、失敗)を確認する場合
references/cli_flags.md作成/一覧表示/削除で使用するすべてのフラグについて、詳しい説明を確認する場合

コメント