catalog-builder-ai について
catalog-builder-aiは、ServiceNowのサービスオーナーやカタログ管理者向けのスキルです。自然言語の要件から、コンテンツ、変数、ポリシー、フローを含むService Catalog項目を構成します。
主な機能
- 01カタログ項目とコンテンツの生成
- 02カタログ変数と選択肢の設定
- 03フローと承認の構成
- 04UIポリシーとクライアントスクリプトの作成
- 05カテゴリ別の項目整理
- 06カタログ項目の検証と公開
活用シーン
- 01業務要件からカタログ項目を作成
- 02項目のフィールドと利用者向けヘルプの標準化
- 03リクエストの承認とフローの構成
MCP 対応
SN-Query-Table、SN-Create-Record、SN-Update-RecordなどのMCPツールを使い、ServiceNowのカタログレコード、変数、ポリシー、フローを調査・作成する方法を説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill catalog-builder-aiインストール後、Claude Code で/catalog-builder-aiを入力して読み込まれたか確認します。
詳細
AI 支援カタログビルダー
概要
このスキルでは、自然言語による説明から ServiceNow のサービスカタログ項目を作成する、AI 主導のアプローチを提供します。
- 簡潔なユーザープロンプトから、タイトル、説明、メタデータを洗練させたカタログ項目レコードを生成します
- カタログ変数(テキスト、参照、選択、チェックボックス、複数行変数セット)を作成して設定します
- Flow Designer または実行計画を使って、フルフィルメントワークフローを設定します
- 動的なフォーム動作のために、カタログ UI ポリシーとクライアントスクリプトを設定します
- 項目をカテゴリとサブカテゴリに整理します
- 明確な手順とヘルプテキストを含む、ユーザー向けコンテンツを生成します
- 承認ルールと価格設定を構成します
使用する場面: サービスオーナーやカタログ管理者が、業務内容の説明からカタログ項目をすばやく作成する必要がある場合や、AI 支援によるコンテンツ生成を通じてカタログ項目の品質を標準化する場合に使用します。
前提条件
- ロール:
catalog_admin、catalog_manager、またはadmin - プラグイン:
com.glideapp.servicecatalog(Service Catalog)、com.glide.hub.flow_designer(Flow Designer) - アクセス:
sc_cat_item、item_option_new、sc_category、catalog_ui_policyへの書き込みアクセス - 知識: サービスカタログの概念、変数タイプ、フルフィルメントプロセスの設計
- 関連スキル: 手動で項目を作成するには
catalog/item-creation、変数の詳細についてはcatalog/variable-management、承認についてはcatalog/approval-workflows
手順
ステップ 1:自然言語によるリクエストを解析する
ユーザーの説明を分析し、以下の情報を抽出します。
- サービス名: カタログ項目が提供するもの
- 対象ユーザー: この項目をリクエストするユーザー(全ユーザー、IT スタッフ、マネージャー)
- 必要な情報: 収集するデータ(変数)
- フルフィルメントプロセス: 送信後に行われること(承認、タスク、自動化)
- コスト/価格: 項目に価格が設定されているか、無料か
- カテゴリの配置: カタログ階層内で項目を配置する場所
入力例:「新しいノート PC をリクエストするカタログ項目を作成してください。ユーザーは Mac と Windows から選び、サイズを指定し、業務上の正当な理由を入力して、マネージャーの承認を受ける必要があります。IT 部門には、購入と設定を行うタスクが割り当てられるようにしてください。」
ステップ 2:カタログカテゴリを特定または作成する
MCP アプローチ:
Tool: SN-Query-Table
Parameters:
table_name: sc_category
query: title=Hardware
fields: sys_id,title,description,parent,active,icon
limit: 5
カテゴリが存在しない場合は、作成します。
Tool: SN-Create-Record
Parameters:
table_name: sc_category
data:
title: "Hardware"
description: "Hardware procurement and provisioning requests"
parent: "<parent_category_sys_id>"
active: true
icon: "fa-laptop"
REST アプローチ:
GET /api/now/table/sc_category?sysparm_query=title=Hardware&sysparm_fields=sys_id,title,description,parent,active&sysparm_limit=5
POST /api/now/table/sc_category
Body: {
"title": "Hardware",
"description": "Hardware procurement and provisioning requests",
"parent": "<parent_category_sys_id>",
"active": "true"
}
ステップ 3:カタログ項目レコードを生成する
MCP アプローチ:
Tool: SN-Create-Record
Parameters:
table_name: sc_cat_item
data:
name: "New Laptop Request"
short_description: "Request a new laptop for business use"
description: |
<p>Use this form to request a new laptop computer. Available options include
Mac and Windows configurations in standard and premium tiers.</p>
<h4>What you will need:</h4>
<ul>
<li>Your preferred operating system (Mac or Windows)</li>
<li>Screen size preference</li>
<li>Business justification for the request</li>
</ul>
<h4>What happens next:</h4>
<ol>
<li>Your manager will review and approve the request</li>
<li>IT Procurement will order the hardware (3-5 business days)</li>
<li>IT Support will configure and deliver the laptop (1-2 business days)</li>
</ol>
category: "<category_sys_id>"
active: true
availability: on_desktop_and_mobile
order: 100
delivery_time: "5 business days"
price: "0"
billable: false
workflow: "<flow_sys_id>"
REST アプローチ:
POST /api/now/table/sc_cat_item
Body: {
"name": "New Laptop Request",
"short_description": "Request a new laptop for business use",
"description": "<p>Use this form to request a new laptop...</p>",
"category": "<category_sys_id>",
"active": "true",
"availability": "on_desktop_and_mobile",
"delivery_time": "5 business days"
}
ステップ 4:カタログ変数を作成する
ステップ 1 で特定した情報要件に基づいて、変数を生成します。
選択ボックス変数 -- オペレーティングシステム:
MCP アプローチ:
Tool: SN-Create-Record
Parameters:
table_name: item_option_new
data:
cat_item: "<cat_item_sys_id>"
name: "os_preference"
question_text: "Operating System"
type: 3
mandatory: true
order: 100
tooltip: "Select your preferred operating system"
default_value: ""
choice_table: ""
choice_field: ""
次に、選択肢を作成します。
Tool: SN-Create-Record
Parameters:
table_name: question_choice
data:
question: "<variable_sys_id>"
text: "MacOS (MacBook Pro)"
value: "mac"
order: 100
参照変数 -- コストセンター:
Tool: SN-Create-Record
Parameters:
table_name: item_option_new
data:
cat_item: "<cat_item_sys_id>"
name: "cost_center"
question_text: "Cost Center"
type: 8
mandatory: true
order: 300
reference: "cmn_cost_center"
reference_qual: "active=true"
複数行テキスト -- 業務上の正当な理由:
Tool: SN-Create-Record
Parameters:
table_name: item_option_new
data:
cat_item: "<cat_item_sys_id>"
name: "business_justification"
question_text: "Business Justification"
type: 2
mandatory: true
order: 400
tooltip: "Explain why you need this laptop (minimum 50 characters)"
一般的な変数タイプの一覧:
| タイプコード | タイプ名 | 使用例 |
|---|---|---|
| 1 | はい/いいえ | 真偽値の切り替え |
| 2 | 複数行テキスト | 説明、正当な理由 |
| 3 | 複数選択 | 定義済みの選択肢から選択 |
| 5 | 選択ボックス | ドロップダウン選択 |
| 6 | 1 行テキスト | 短いテキスト入力 |
| 7 | チェックボックス | 複数選択の切り替え |
| 8 | 参照 | 別のテーブルレコードへのリンク |
| 9 | 日付 | 日付ピッカー |
| 10 | 日時 | 日付と時刻のピッカー |
| 14 | IP アドレス | ネットワーク設定 |
| 18 | 検索選択ボックス | 動的検索 |
| 20 | コンテナー開始 | 変数のグループ化 |
| 24 | マスク | パスワード、シークレット |
ステップ 5:カタログ UI ポリシーを設定する
MCP アプローチ:
Tool: SN-Create-Record
Parameters:
table_name: catalog_ui_policy
data:
catalog_item: "<cat_item_sys_id>"
short_description: "Show accessories when laptop type selected"
applies_to: "item"
active: true
on_load: true
reverse_if_false: true
conditions: "os_preference=mac"
script_false: ""
script_true: ""
ステップ 6:カタログクライアントスクリプトを設定する
MCP アプローチ:
Tool: SN-Create-Record
Parameters:
table_name: catalog_script_client
data:
cat_item: "<cat_item_sys_id>"
name: "Validate business justification length"
type: onSubmit
active: true
ui_type: 0
script: |
function onSubmit() {
var justification = g_form.getValue('business_justification');
if (justification && justification.length < 50) {
g_form.showFieldMsg('business_justification',
'Please provide a more detailed justification (at least 50 characters)', 'error');
return false;
}
return true;
}
ステップ 7:フルフィルメントフローを設定する
MCP アプローチ:
Tool: SN-Create-Record
Parameters:
table_name: sys_hub_flow
data:
name: "Laptop Request Fulfillment"
description: "Handles approval and task creation for laptop requests"
trigger_type: "SERVICE_CATALOG"
table: "sc_req_item"
status: "draft"
run_as: "system"
次に、genai/flow-generationで説明されているように、承認アクションとタスク作成アクションを追加します。
ステップ 8:フルフィルメントフローをカタログ項目にリンクする
MCP アプローチ:
Tool: SN-Update-Record
Parameters:
table_name: sc_cat_item
sys_id: "<cat_item_sys_id>"
data:
workflow: "<flow_sys_id>"
REST アプローチ:
PATCH /api/now/table/sc_cat_item/<cat_item_sys_id>
Body: {
"workflow": "<flow_sys_id>"
}
ステップ 9:AI でコンテンツをブラッシュアップする
生成されたカタログアイテムのコンテンツを強化します。
- タイトルの最適化:行動を促す表現にします(「ノートパソコン」ではなく「新しいノートパソコンを申請する」)
- 説明の充実:明確な期待事項、所要期間、要件を追加します
- 変数のヘルプテキスト:各変数に、状況に応じたツールチップのテキストを生成します
- 確認メッセージ:送信後に表示する確認メッセージを作成します
MCP のアプローチ:
Tool: SN-Update-Record
Parameters:
table_name: sc_cat_item
sys_id: "<cat_item_sys_id>"
data:
sc_template: |
Thank you for your laptop request. Your order {{number}} has been submitted.
Expected delivery: {{delivery_time}}.
Your manager will be notified for approval shortly.
ステップ 10:検証して公開する
カタログアイテムの設定全体を確認します。
MCP のアプローチ:
Tool: SN-Query-Table
Parameters:
table_name: item_option_new
query: cat_item=<cat_item_sys_id>^ORDERBYorder
fields: name,question_text,type,mandatory,order,active
limit: 50
次の項目が完全に設定されていることを確認します。
- 必須の変数がすべて存在し、型も正しく設定されている
- 条件ロジックに対応する UI ポリシーが設定されている
- フルフィルメントフローがリンクされ、公開されている
- カテゴリーの割り当てが正しい
- アイテムが有効になっている
ツールの使い方
| ツール | 目的 | 使用するタイミング |
|---|---|---|
| SN-Query-Table | カテゴリー、既存のアイテム、変数パターンを探す | 調査と検証 |
| SN-Create-Record | アイテム、変数、UI ポリシー、フローを作成する | カタログコンポーネントの構築 |
| SN-Update-Record | コンテンツをブラッシュアップし、フローをリンクして、アイテムを有効化する | 反復と公開 |
| SN-Get-Table-Schema | 変数の型とフィールドの選択肢を確認する | 利用可能な設定の把握 |
| SN-Get-Record | 単一のアイテムまたは変数の詳細を取得する | 詳細な調査 |
ベストプラクティス
- 行動を促すアイテム名を使う -- 「新しいノートパソコンを申請する」は「ノートパソコン」より明確です
- エンドユーザー向けに説明を書く -- 専門用語を避け、手順を説明します
- 納期の目安を設定する -- 常に現実的なフルフィルメントの所要期間を提示します
- 必須にするフィールドは必要最低限にする -- 必須フィールドが多すぎると利用率が低下します
- 関連する変数をグループ化する -- 視覚的に整理するため、コンテナーの開始/終了を使用します
- すべての変数にヘルプテキストを追加する -- 明確なガイダンスを示してサポートへの問い合わせを減らします
- 注文時の操作をテストする -- エンドユーザーになりすましてフローを確認します
- 参照修飾子を使用する -- 参照変数の結果を関連するレコードに限定します
- 必要に応じてモバイルでの利用を設定する -- フィールドワーカー向けに設定します
- 本番カタログを変更する前に、スコープ付き更新セットで作成する
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| カタログにアイテムが表示されない | 無効になっているか、カテゴリーが割り当てられていない | active=true と sc_cat_item_category レコードを確認します |
| フォームに変数が表示されない | cat_item 参照が正しくないか、無効になっている | 変数の cat_item がアイテムの sys_id と一致していることを確認します |
| フルフィルメントフローが実行されない | フローがリンクされていないか、ドラフト状態になっている | sc_cat_item.workflow を更新し、フローを公開します |
| UI ポリシーが適用されない | 条件の構文エラー、またはスコープが正しくない | 条件を手動でテストし、applies_to フィールドを確認します |
| 変数の選択肢が表示されない | 選択肢が誤った質問にリンクされている | question_choice.question が正しい変数を参照していることを確認します |
| 価格が表示されない | price フィールドの形式が正しくない | 「1299.99」のような小数形式を使用します |
例
例 1:ソフトウェアライセンスの申請
入力:「ソフトウェアライセンスを申請するためのカタログアイテムを作成してください。ユーザーはリストからソフトウェアを選び、ライセンス数を入力して、申請理由を記入します。500 ドルを超えるアイテムにはディレクターの承認が必要です。」
生成されるコンポーネント: u_software_catalog への参照変数、ライセンス数用の整数変数、申請理由用の複数行テキスト変数を備えたカタログアイテム。算出コストに応じた条件付き承認フロー。
例 2:新入社員向けオンボーディングセット
入力:「新入社員向けオンボーディングのカタログアイテムを作成してください。人事部が入社日、部門、マネージャー、必要な機器、ビルへのアクセスを入力します。IT、施設管理、人事部向けのタスクを作成するようにしてください。」
生成されるコンポーネント: 日付、参照(部門、マネージャー)、複数選択チェックボックス(機器)、選択ボックス(ビル)の変数を備えたカタログアイテム。フルフィルメントフローが 3 つのグループ向けに並行してタスクを作成します。
例 3:会議室の予約
入力:「日付、時刻、部屋の選択、参加者数、AV 要件を指定して、会議室を予約するカタログ項目を作成してください。」
**生成されるコンポーネント:**日付/時刻の変数、部屋の条件を指定した cmn_location への参照、参加者数を入力する整数フィールド、AV オプション(プロジェクター、ビデオ会議、ホワイトボード)のチェックボックスグループを含むカタログ項目。
関連スキル
catalog/item-creation- カタログ項目を手動で作成するパターンcatalog/variable-management- 変数の設定に関する詳細catalog/approval-workflows- 承認ルールの設定catalog/request-fulfillment- リクエストの履行プロセスの設計genai/flow-generation- 履行のための Flow Designer による自動化catalog/ui-policies- カタログフォームの動的な動作