skills/catalog/catalog-builder-ai/SKILL.md
AI-assisted catalog builder that generates catalog items, refines content, configures variables, sets up fulfillment workflows, and manages catalog categories from natural language descriptions
npx skillsauth add happy-technologies-llc/happy-servicenow-skills catalog-builder-aiInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides an AI-driven approach to building ServiceNow Service Catalog items from natural language descriptions:
When to use: When service owners or catalog administrators need to rapidly create catalog items from business descriptions, or when standardizing catalog item quality through AI-assisted content generation.
catalog_admin, catalog_manager, or admincom.glideapp.servicecatalog (Service Catalog), com.glide.hub.flow_designer (Flow Designer)sc_cat_item, item_option_new, sc_category, catalog_ui_policycatalog/item-creation for manual item creation, catalog/variable-management for variable details, catalog/approval-workflows for approvalsAnalyze the user's description to extract:
Example Input: "Create a catalog item for requesting a new laptop. Users should pick between Mac and Windows, choose a size, provide business justification, and get manager approval. IT should get a task to procure and configure it."
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sc_category
query: title=Hardware
fields: sys_id,title,description,parent,active,icon
limit: 5
If the category does not exist, create it:
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 Approach:
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"
}
MCP Approach:
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 Approach:
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"
}
Generate variables based on the information requirements identified in Step 1.
Select Box Variable -- Operating System:
MCP Approach:
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: ""
Then create the choices:
Tool: SN-Create-Record
Parameters:
table_name: question_choice
data:
question: "<variable_sys_id>"
text: "MacOS (MacBook Pro)"
value: "mac"
order: 100
Reference Variable -- Cost Center:
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"
Multi-Line Text -- Business Justification:
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)"
Common variable types reference:
| Type Code | Type Name | Use Case | |-----------|-----------|----------| | 1 | Yes/No | Boolean toggles | | 2 | Multi-line text | Descriptions, justifications | | 3 | Multiple choice | Select from predefined options | | 5 | Select box | Dropdown selection | | 6 | Single-line text | Short text input | | 7 | CheckBox | Multi-select toggles | | 8 | Reference | Link to another table record | | 9 | Date | Date picker | | 10 | Date/Time | Date and time picker | | 14 | IP Address | Network configuration | | 18 | Lookup select box | Dynamic lookup | | 20 | Container start | Variable grouping | | 24 | Masked | Passwords, secrets |
MCP Approach:
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: ""
MCP Approach:
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;
}
MCP Approach:
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"
Then add approval and task creation actions as described in genai/flow-generation.
MCP Approach:
Tool: SN-Update-Record
Parameters:
table_name: sc_cat_item
sys_id: "<cat_item_sys_id>"
data:
workflow: "<flow_sys_id>"
REST Approach:
PATCH /api/now/table/sc_cat_item/<cat_item_sys_id>
Body: {
"workflow": "<flow_sys_id>"
}
Enhance the generated catalog item content:
MCP Approach:
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.
Verify the complete catalog item configuration:
MCP Approach:
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
Check for completeness:
| Tool | Purpose | When to Use | |------|---------|-------------| | SN-Query-Table | Find categories, existing items, variable patterns | Discovery and validation | | SN-Create-Record | Create items, variables, UI policies, flows | Building catalog components | | SN-Update-Record | Refine content, link flows, activate items | Iteration and publishing | | SN-Get-Table-Schema | Discover variable types and field options | Understanding available configurations | | SN-Get-Record | Retrieve single item or variable details | Detailed inspection |
| Issue | Cause | Resolution |
|-------|-------|------------|
| Item not visible in catalog | Inactive or missing category assignment | Check active=true and sc_cat_item_category records |
| Variables not showing on form | Wrong cat_item reference or inactive | Verify variable's cat_item matches item sys_id |
| Fulfillment flow not triggering | Flow not linked or in draft status | Update sc_cat_item.workflow and publish the flow |
| UI policy not applying | Condition syntax error or wrong scope | Test conditions manually, verify applies_to field |
| Variable choices missing | Choices linked to wrong question | Verify question_choice.question references correct variable |
| Price not displaying | price field format incorrect | Use decimal format: "1299.99" |
Input: "Create a catalog item for requesting software licenses. Users pick the software from a list, enter the number of licenses, provide justification, and it needs director approval for items over $500."
Generated components: Catalog item with reference variable to u_software_catalog, integer variable for quantity, multi-line text for justification, conditional approval flow based on calculated cost.
Input: "Build a catalog item for new hire onboarding. HR fills in the start date, department, manager, required equipment, and building access. It should create tasks for IT, Facilities, and HR."
Generated components: Catalog item with date, reference (department, manager), multi-checkbox (equipment), and select box (building) variables. Fulfillment flow creates parallel tasks for three groups.
Input: "Make a catalog item for booking conference rooms with date, time, room selection, attendee count, and AV requirements."
Generated components: Catalog item with date/time variables, reference to cmn_location with room qualifier, integer for attendees, checkbox group for AV options (projector, video conferencing, whiteboard).
catalog/item-creation - Manual catalog item creation patternscatalog/variable-management - Detailed variable configurationcatalog/approval-workflows - Approval rule configurationcatalog/request-fulfillment - Fulfillment process designgenai/flow-generation - Flow Designer automation for fulfillmentcatalog/ui-policies - Catalog form dynamic behaviortesting
Manage supplier onboarding, qualification, performance monitoring, and offboarding with auditable lifecycle controls
tools
Identify emerging risks, prioritize intake signals, and route candidates into formal GRC risk assessment workflows
documentation
Screen inbound documents for completeness, policy risk, and routing readiness before extraction or case workflows
testing
Generate concise task summaries with status, timeline, blockers, SLA risk, and recommended next actions