catalog-item-generation について
catalog-item-generation は、自然言語のサービス説明を設定済みの ServiceNow カタログアイテムに変換するスキルです。サービスオーナー向けに、変数、カテゴリ、承認、履行設定を扱います。
主な機能
- 01説明文からカタログアイテムを生成
- 02変数と選択肢の作成
- 03アイテムをカタログカテゴリに分類
- 04承認ルールとワークフローの設定
- 05変数セットと動的フォームの構成
- 06カタログアイテムの検証と有効化
活用シーン
- 01サービス説明から申請フォームを作成
- 02アイテムの価格に応じた承認手順の追加
- 03複数のカタログアイテムを一括作成
MCP 対応
ServiceNow MCP ツールでテーブルを照会し、レコードの作成・更新、類似アイテムの検索、スキーマ確認、バックグラウンドスクリプトの実行を行います。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill catalog-item-generationインストール後、Claude Code で/catalog-item-generationを入力して読み込まれたか確認します。
詳細
カタログアイテムの生成
概要
このスキルを使用すると、自然言語による説明から、完全なサービスカタログアイテムを生成できます。対象となる内容は次のとおりです。
- プレーンテキストの説明から、必要なすべてのフィールドを含む
sc_cat_itemのカタログアイテムを作成する - アイテムの要件に基づいて、
item_option_newにカタログ変数(質問/フィールド)を生成する sc_categoryとsc_cat_item_categoryを使用して、アイテムをカテゴリに割り当てる- アイテムの承認ルールとワークフローを設定する
- 動的なフォームの動作に必要な変数セット、UI ポリシー、クライアントスクリプトを設定する
- エンドユーザーが利用できるよう、特定のカタログとカテゴリにアイテムを公開する
使用する場面: サービスオーナーが新しいカタログの提供内容を平易な言葉で説明し、それを変数、承認、フルフィルメントルールを含む、完全に設定された ServiceNow カタログアイテムに変換する必要がある場合です。
価値: カタログアイテムの作成時間を数時間から数分に短縮し、一貫性のある変数名と設定を確保して、組織の承認およびフルフィルメント標準を自動的に適用します。
前提条件
- プラグイン:
com.glideapp.servicecatalog(サービスカタログ) - ロール:
catalog_admin、catalog_manager、またはadmin - アクセス権:
sc_cat_item、sc_category、sc_cat_item_category、item_option_new、およびワークフローテーブルへの読み取り/書き込みアクセス権 - 知識: 組織のカタログ構造、承認ポリシー、フルフィルメントグループに関する理解
手順
ステップ 1:自然言語の説明を分析する
ユーザーの説明を解析し、カタログアイテムの構成要素を特定します。
| 構成要素 | 抽出する内容 | 例 |
|---|---|---|
| アイテム名 | 簡潔で説明的なタイトル | "新しいノートパソコンのリクエスト" |
| 説明 | 提供内容の詳細な説明 | "仕様を指定して新しいノートパソコンをリクエストする" |
| カテゴリ | カタログ内の配置先 | "ハードウェアのリクエスト" |
| 変数 | 申請者が入力する質問/フィールド | モデル、RAM、ストレージ、業務上の必要性 |
| 承認 | 承認が必要な担当者 | マネージャー、2000 ドル超の場合は IT ディレクター |
| フルフィルメント | リクエストを処理する担当者 | 割り当てグループ "ハードウェアチーム" |
| 価格 | 費用または価格モデル | 基本価格 1200 ドル、モデルによって変動 |
ステップ 2:対象カテゴリを検索または作成する
既存のカテゴリを検索し、アイテムを適切な場所に配置します。
MCP を使用する(Claude Code/Desktop):
Tool: SN-Query-Table
Parameters:
table_name: sc_category
query: active=true^titleLIKEHardware
fields: sys_id,title,description,parent,sc_catalog,active,icon
limit: 10
REST API を使用する:
GET /api/now/table/sc_category?sysparm_query=active=true^titleLIKEHardware&sysparm_fields=sys_id,title,description,parent,sc_catalog,active,icon&sysparm_limit=10&sysparm_display_value=true
必要に応じて新しいカテゴリを作成する:
Tool: SN-Create-Record
Parameters:
table_name: sc_category
fields:
title: "Hardware Requests"
description: "Request new hardware including laptops, monitors, peripherals, and accessories"
sc_catalog: [catalog_sys_id]
parent: [parent_category_sys_id]
active: true
icon: "hardware-laptop"
ステップ 3:カタログアイテムを作成する
すべての基本フィールドを含むカタログアイテムレコードを生成します。
MCP を使用する:
Tool: SN-Create-Record
Parameters:
table_name: sc_cat_item
fields:
name: "New Laptop Request"
short_description: "Request a new laptop with your preferred specifications"
description: |
Use this form to request a new laptop computer. Select your preferred model,
specifications, and provide business justification. Requests over $2,000 require
IT Director approval.
**Included with all laptops:**
- Standard software image
- 3-year warranty
- Docking station and power adapter
**Expected delivery:** 5-10 business days after approval
category: [category_sys_id]
sc_catalogs: [catalog_sys_id]
active: true
availability: on_desktop
type: item
fulfillment_group: [hardware_team_sys_id]
delivery_time: "2026-03-19 08:00:00"
price: 1200
recurring_price: 0
order: 100
icon: "hardware-laptop"
mandatory_attachment: false
request_method: order_guide
REST API を使用する:
POST /api/now/table/sc_cat_item
Content-Type: application/json
{
"name": "New Laptop Request",
"short_description": "Request a new laptop with your preferred specifications",
"description": "Use this form to request a new laptop computer...",
"category": "[category_sys_id]",
"sc_catalogs": "[catalog_sys_id]",
"active": "true",
"type": "item",
"fulfillment_group": "[hardware_team_sys_id]",
"price": "1200",
"order": "100"
}
ステップ 4:カタログ変数を生成する
申請者が入力するフォーム変数(質問)を作成します。
MCP を使用する:
Tool: SN-Create-Record
Parameters:
table_name: item_option_new
fields:
cat_item: [cat_item_sys_id]
name: "laptop_model"
question_text: "Laptop Model"
type: 3
choice_table: ""
default_value: "standard"
mandatory: true
order: 100
tooltip: "Select the laptop model that best fits your work requirements"
変数タイプのリファレンス:
| タイプコード | タイプ名 | 用途 |
|---|---|---|
| 1 | はい/いいえ | ブール値の選択 |
| 2 | 複数行テキスト | 長い説明、理由 |
| 3 | 複数選択 | ドロップダウンでの選択 |
| 5 | 選択ボックス | 複数選択オプション |
| 6 | 1 行テキスト | 短いテキスト入力 |
| 7 | チェックボックス | オプションの切り替え |
| 8 | 参照 | 別のテーブルレコードへのリンク |
| 9 | 日付 | 日付ピッカー |
| 10 | 日付/時刻 | 日付と時刻のピッカー |
| 14 | マクロ | 表示専用情報 |
| 21 | リストコレクター | 複数の参照先を選択 |
| 24 | マスク | 機密情報の入力 |
フォーム全体に必要な複数の変数を作成する:
Tool: SN-Execute-Background-Script
Parameters:
description: Create catalog item variables for laptop request
script: |
var itemId = '[cat_item_sys_id]';
var variables = [
{ name: 'laptop_model', question_text: 'Laptop Model', type: 3, mandatory: true, order: 100, tooltip: 'Select your preferred model' },
{ name: 'ram_size', question_text: 'RAM (Memory)', type: 3, mandatory: true, order: 200, default_value: '16gb' },
{ name: 'storage_size', question_text: 'Storage', type: 3, mandatory: true, order: 300, default_value: '512gb' },
{ name: 'additional_software', question_text: 'Additional Software Required', type: 2, mandatory: false, order: 400 },
{ name: 'business_justification', question_text: 'Business Justification', type: 2, mandatory: true, order: 500, tooltip: 'Explain why this laptop is needed' },
{ name: 'needed_by_date', question_text: 'Date Needed By', type: 9, mandatory: false, order: 600 },
{ name: 'replace_existing', question_text: 'Is this replacing an existing laptop?', type: 1, mandatory: true, order: 700, default_value: 'false' },
{ name: 'existing_asset_tag', question_text: 'Existing Asset Tag', type: 6, mandatory: false, order: 800, tooltip: 'Enter asset tag of laptop being replaced' }
];
variables.forEach(function(v) {
var gr = new GlideRecord('item_option_new');
gr.initialize();
gr.cat_item = itemId;
gr.name = v.name;
gr.question_text = v.question_text;
gr.type = v.type;
gr.mandatory = v.mandatory || false;
gr.order = v.order;
if (v.default_value) gr.default_value = v.default_value;
if (v.tooltip) gr.tooltip = v.tooltip;
gr.active = true;
gr.insert();
});
gs.info('Created ' + variables.length + ' variables for catalog item');
複数選択変数に選択肢を追加する:
Tool: SN-Execute-Background-Script
Parameters:
description: Create choices for laptop model variable
script: |
var choices = [
{ text: 'Standard (Dell Latitude 5540)', value: 'standard', price: 1200, order: 100 },
{ text: 'Performance (Dell Latitude 7640)', value: 'performance', price: 1800, order: 200 },
{ text: 'Developer (MacBook Pro 14")', value: 'developer', price: 2400, order: 300 },
{ text: 'Executive (MacBook Pro 16")', value: 'executive', price: 3200, order: 400 }
];
choices.forEach(function(c) {
var gr = new GlideRecord('question_choice');
gr.initialize();
gr.question = '[laptop_model_var_sys_id]';
gr.text = c.text;
gr.value = c.value;
gr.price = c.price || 0;
gr.order = c.order;
gr.inactive = false;
gr.insert();
});
gs.info('Created ' + choices.length + ' choices for laptop model');
ステップ 5:承認ルールを設定する
アイテムの費用やその他の条件に基づいて、承認要件を設定します。
MCP を使用する:
Tool: SN-Create-Record
Parameters:
table_name: sysapproval_group
fields:
document_id: [cat_item_sys_id]
assignment_group: [manager_approval_group_sys_id]
approval_column: approval
condition: "price>0"
order: 100
approval: requested
REST API を使用する:
POST /api/now/table/sysapproval_group
Content-Type: application/json
{
"document_id": "[cat_item_sys_id]",
"assignment_group": "[manager_approval_group_sys_id]",
"approval_column": "approval",
"condition": "price>0",
"order": "100"
}
ステップ 6:アイテムをカテゴリにリンクする
カタログ内を移動できるよう、アイテムとカテゴリの関連付けを作成します。
MCP を使用する:
Tool: SN-Create-Record
Parameters:
table_name: sc_cat_item_category
fields:
sc_cat_item: [cat_item_sys_id]
sc_category: [category_sys_id]
REST API を使用する:
POST /api/now/table/sc_cat_item_category
Content-Type: application/json
{
"sc_cat_item": "[cat_item_sys_id]",
"sc_category": "[category_sys_id]"
}
ステップ 7:検証して有効化する
公開前に、アイテムの設定がすべて完了していることを確認します。
MCP を使用する:
Tool: SN-Query-Table
Parameters:
table_name: item_option_new
query: cat_item=[cat_item_sys_id]^active=true
fields: name,question_text,type,mandatory,order,default_value
limit: 30
order_by: order
カタログ API でアイテムを確認する:
GET /api/sn_sc/servicecatalog/items/[cat_item_sys_id]?sysparm_display_value=true
アイテムを有効化する:
Tool: SN-Update-Record
Parameters:
table_name: sc_cat_item
sys_id: [cat_item_sys_id]
fields:
active: true
visible_standalone: true
ツールの使用方法
MCP ツールのリファレンス
| ツール | 使用するタイミング |
|---|---|
SN-Query-Table | 既存のカテゴリ、アイテム、変数、承認を照会する |
SN-Create-Record | 新しいアイテム、変数、選択肢、カテゴリ、承認ルールを作成する |
SN-Update-Record | アイテムを有効化し、設定を更新する |
SN-Natural-Language-Search | 説明を基に、類似する既存のアイテムやカテゴリを検索する |
SN-Discover-Table-Schema | カタログテーブルのフィールド定義を確認する |
SN-Execute-Background-Script | 変数、選択肢、複雑な設定を一括作成する |
REST API リファレンス
| エンドポイント | メソッド | 用途 |
|---|---|---|
/api/now/table/sc_cat_item | GET/POST/PATCH | カタログアイテムを管理する |
/api/now/table/sc_category | GET/POST | カタログカテゴリを管理する |
/api/now/table/sc_cat_item_category | POST | アイテムをカテゴリに紐付ける |
/api/now/table/item_option_new | GET/POST | カタログ変数を作成、照会する |
/api/now/table/question_choice | POST | 選択式変数に選択肢を追加する |
/api/sn_sc/servicecatalog/items | GET | Service Catalog API を使用してアイテムを検証する |
ベストプラクティス
- 一貫性のある命名: すべてのアイテムで、変数名には命名規則(snake_case)、質問文にはタイトルケースを使用します
- 必須の理由説明: コストのしきい値を超えるアイテムには、必ず業務上の理由を入力する変数を含めます
- 変数数を制限: フォームの変数は12個未満にし、関連フィールドのグループ化には変数セットを使用します
- デフォルト値を設定: よく選択される項目を事前に入力し、依頼者の手間を減らします
- 参照変数を使用: フリーテキストではなく、既存のテーブル(オフィスの場所には
cmn_locationなど)にリンクします - 公開前にテスト: 表示可能にする前に、非本番カタログまたは
active=falseでアイテムを検証します - 対応方法を記載: 担当グループ向けに、アイテムの説明へ明確な対応手順を記載します
- カタログアイテムをバージョン管理: 設定変更を記録するには、アイテムの
metaフィールドまたは作業メモを使用します
トラブルシューティング
アイテムフォームに変数が表示されない
原因: 変数のcat_item参照がアイテムのsys_idと一致していないか、変数が無効になっています
解決方法: cat_item=[sys_id]を指定してitem_option_newを照会し、関連付けを確認します。各変数のactive=trueを確認します。
カタログにアイテムが表示されない
原因: アイテムが無効になっている、カタログにリンクされていない、またはユーザーに表示に必要なロールやグループがありません
解決方法: active=trueであることと、sc_catalogsが設定されていることを確認し、sc_cat_item_user_criteriaでアクセス制限を確認します。
承認が実行されない
原因: 承認ルールの条件に一致しないか、アイテムに承認グループが設定されていません
解決方法: アイテムのsysapproval_groupレコードを確認します。条件式がリクエストに対してtrueと評価されることを確認します。
ドロップダウンに選択肢が表示されない
原因: question_choiceレコードが正しい変数のsys_idにリンクされていません
解決方法: question=[variable_sys_id]を指定してquestion_choiceを照会し、inactive=falseであることを確認します。
例
例1:説明からアイテムを生成する
入力: 「駐車許可証を申請するカタログアイテムを作成してください。従業員はオフィスの場所、駐車タイプ(屋内/屋外)、車両のナンバープレート、開始日を選択します。マネージャーの承認が必要です。」
生成されたアイテム:
- 名前:「駐車許可証の申請」
- カテゴリ:「施設」
- 変数:オフィスの場所(参照)、駐車タイプ(ドロップダウン)、ナンバープレート(テキスト)、開始日(日付)
- 承認:マネージャーの承認
例2:ソフトウェアライセンスの申請
入力: 「ソフトウェアライセンスを申請するフォームが必要です。ユーザーは一覧からソフトウェアを選び、ライセンス数を入力し、理由を記入します。ライセンス数が10を超える場合は、ITディレクターの承認が必要です。」
Tool: SN-Create-Record
Parameters:
table_name: sc_cat_item
fields:
name: "Software License Request"
short_description: "Request new or additional software licenses"
category: [software_category_sys_id]
sc_catalogs: [catalog_sys_id]
active: true
type: item
fulfillment_group: [software_team_sys_id]
order: 200
例3:複数アイテムの一括作成
入力:「HR カテゴリーに、バッジの交換($25)、デスクの移動(無料)、人間工学的評価(無料)の3つのアイテムを作成してください」
ステップ4の一括バックグラウンドスクリプト方式を使用し、1回のスクリプト実行ですべてのアイテムとその変数を作成します。
関連スキル
catalog/variable-management- 高度な変数設定と変数セットcatalog/ui-policies- 変数値に基づく動的なフォーム動作catalog/approval-workflows- 複雑な承認ルーティングとエスカレーションcatalog/item-creation- 標準的なアイテム作成手順catalog/request-fulfillment- フルフィルメントワークフローの設定catalog/multi-turn-ordering- Virtual Agent による対話型注文