- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
2 hours ago - edited 2 hours ago
Lab Objectives
In this lab you'll achieve the following learning objectives:
- Understand Now Assist Skill Kit capabilities
- Develop a custom generative AI skill
- Apply best practices in prompt engineering
- Integrate a skill into a flow
Overview
ServiceNow's AI capabilities are organized into layers. At the foundation, Now Assist provides out-of-box generative AI experiences built into the platform — things like case summarization, resolution notes, and search augmentation. These pre-built skills cover common scenarios and work across core workflows right out of the box.
But every organization is different. Your teams use specific terminology, follow internal processes, and have quality standards that no out-of-box product can anticipate. That's where Now Assist Skill Kit (NASK) comes in. NASK lets you extend the platform's AI capabilities by building your own custom generative AI skills — tailored to your organization's data, language, and business logic. You define what the skill receives as input, how it processes that data, what instructions guide the AI, and where the output goes.
Custom skills aren't just one-off solutions. Because NASK integrates directly with the ServiceNow AI Platform, skills you build can be deployed across multiple surfaces — the Now Assist panel, UI Actions, Flow Designer, and Virtual Agent — making them reusable components of your broader automation strategy. This means a skill you build once to generate knowledge articles from meeting transcripts can be surfaced wherever your teams work, and updated centrally without touching every workflow that uses it.
In this lab, you'll build a custom skill that automatically reviews Return Merchandise Authorization (RMA) requests — reading the PDF attached to an inbound email, retrieving your organization's RMA policy from the Knowledge Base, and returning a structured approval decision ready for downstream processing.
With NASK, you define the input data, leverage tools to process that data, activate the skill, and deploy it to the platform. The custom skill lifecycle follows a simple but powerful sequence:
- Gather Inputs — Skills can be triggered by workflows, user experiences, conversations, RAG-retrieved data, or external events. This allows the skill to respond to real platform activity.
- Build Prompt — Prompts can be preconfigured or custom-authored, and are combined with input data. Prompts can be grounded using retrieved knowledge and follow best practices like role prompting, fallback handling, and structured outputs.
- Trigger Generation — The Generative AI Controller passes the input and prompt to the selected LLM. This could be the Now LLM, a supported external provider (like OpenAI or AWS Bedrock), or a BYOLLM endpoint.
- Generate Response — The model returns a response, which is parsed and made available for follow-on automation or UI output.
You configure and activate the skill using Now Assist Admin, then either access it or configure additional processing of the output using the deployment method of your choosing. This modular and flexible architecture ensures your custom skills are reusable, maintainable, and deployable across the platform.
You can learn more about deployment methods in our Community article: Tool and Deployment Options
Exercise 0: Install demo data
- Install the following plugins:
- Hardware Asset Management
- Now Assist for Platform
- Now Assist in Document Intelligence
- Download the files named RMA Processing Flow Update Set and RMA Knowledge article.
- Import the Knowledge article XML directly into your kb_knowledge table. You should see a knowledge article named Return Merchandise Authorization (RMA) Policy.
- Upload and commit the update set file. This includes the skeleton of the Document Intelligence tool and the flow that we will be using.
Exercise 1: Navigate to Now Assist Skill Kit and Create a New Skill
Goal
In this exercise, you'll use the admin persona to configure the roles necessary to access Now Assist Skill Kit. You'll create a new skill and explore the interface to understand the options and features available to you.
1.1 Grant your User Access to Now Assist Skill Kit
Before working with Now Assist Skill Kit, you need to configure your user profile with the correct roles. This ensures you have the necessary permissions to create and manage AI skills.
Steps:
-
Navigate to your profile via the Avatar at the top right of the unified navigation header. Click Profile.
-
Click the hamburger menu (three bars) in the top-left corner next to User, then click View > Default View.
-
Scroll down to the Roles related list and click Edit.
-
Add the roles
sn_skill_builder.adminandham_adminto your user, then click Save. -
Log out, then log back in. You now have access to Now Assist Skill Kit.
1.2 Create Your First Custom Skill
In this lab, you'll build a custom skill that automates the review of Return Merchandise Authorization (RMA) requests. When a vendor or customer submits an RMA, the request arrives as a PDF attachment on an inbound email. Instead of manually reading each document and checking it against policy, your skill will do that work — extracting the request details, evaluating them against your organization's RMA policy, and returning a structured approval decision.
By the end of this section, you'll have a foundational understanding of the Now Assist Skill Kit interface and will have created your first skill using AI-prompt assistance.
The overall journey for this lab follows four stages:
Steps:
- In the All menu, type
Now Assist Skill Kitand click Home.
When the page loads for the first time, a dialog titled Add security controls for skills will appear. This explains that ACLs and role restrictions are now required when creating or updating skills. Existing skills without these controls will continue to work.
-
Click Got it to dismiss the dialog. You'll return to ACLs in a later step.
-
If a tour pop-up appears, dismiss it.
-
Take a moment to explore the homepage. It has three main areas:
- A row of quick action tiles at the top
- The skills list in the center, with two tabs: Custom skills (skills you or your team have created) and ServiceNow skills (out-of-the-box skills available to clone and modify)
- Your kickoff guide panel on the right
-
Click the Create skill button to open the guided skill setup page.
The setup page has three panels: the Set up a skill progress sidebar on the left, the General info form in the center, and the Additional information sidebar on the right.
-
Enter the following in the Skill name field:
RMA Auto Approver -
Enter the following Description:
Reviews the content of a return merchandise authorization request to verify if it is within policy or not
Note: The description field drives the Use an AI-generated prompt feature — the more specific your description, the better the generated prompt will be.
- Under Default provider, select
AWS Claude. The Default provider API will automatically populate as Amazon Bedrock Chat Completions.
Note: In your organization's instance, you may also see other providers such as Now LLM Service, Azure OpenAI, Google Gemini, and BYOK/LLM providers depending on what your AI Steward has enabled in AI Control Tower. Different providers may perform differently depending on document length and complexity. For more information see this article.
-
Under Define user access with an Access Control List (ACL), click Select roles.
-
Add the role
ham_admin. This restricts skill access to users who have permission to create and manage risk records in ServiceNow, ensuring only authorized stakeholders can trigger it. -
In the Apply role restrictions to skill section, add
ham_adminas well. This prevents the skill from inheriting more elevated permissions than necessary when invoked. -
Click Continue.
You now have the option to write a prompt from scratch, choose one from the library, or use an AI-generated prompt. The library includes foundational and best-practice templates provided by ServiceNow.
- Click the toggle labeled Use an AI-generated prompt. The LLM will automatically generate a prompt based on your description field.
Note: If a prompt doesn't appear, click Regenerate. Your prompt will not exactly match the example shown in this guide — LLMs exhibit non-deterministic behavior, meaning the same
input can produce different outputs across runs.
-
Click Continue to continue to the next step in the guided setup.
-
When prompted for Skill inputs, skip this for now — you will configure inputs in Exercise 2. Click Continue to summary.
-
Review your skill configuration. When satisfied, click Finish setup.
1.3 Configure Your Prompt in the Skill Editor
In this section, you'll navigate the Prompt editor tab to understand the options available when creating prompts, and make some initial adjustments.
A quick orientation
When you created your skill, NASK automatically created three things for you: a prompt, and placeholder inputs and outputs.
-
The prompt is the instruction set you'll send to the AI model — it tells the model what role to play, what data to look at, and what to produce. It was given the default name Incident Summarization because that's a common starting template; you renamed it to reflect what your skill actually does.
-
Inputs are the data your skill needs to do its job — in this case, the RMA request document. You skipped configuring these during setup and will add them in Exercise 2.
-
Outputs are what the skill returns after the model responds — structured fields your workflows can act on. You'll define these later as well.
Think of the skill as a container. Right now it has a name and a prompt shell. The next exercises will fill it in.
Steps:
-
You are now in the Prompt editor tab, which you'll use to develop the rest of your custom skill. Close out of the Welcome to Prompt Editor module if it appears.
-
In the Skill contents menu on the left, you'll see the list of inputs, outputs, and prompts associated with your skill.
Note: The Prompts section can contain multiple prompts — for example, one for when a record is in a Resolved state vs. New, or different prompts to compare performance across LLM providers. You can also use them for versioning.
-
Rename your prompt by clicking the pencil icon
next to the prompt name, for example, Incident Summarization.
-
Enter the name
RMA Request Approverand click Save changes. -
Explore the right-side panel icons:
-
Sparkle icon → Prompt assistance: Regenerate the prompt or select a different one from the library.
-
Tools icon → Prompt settings: Configure the following:
- Provider — The LLM provider for this prompt.
- Provider API — The specific model API from your selected provider.
- Model — Toggle between available models to compare output quality.
- Temperature — Controls response randomness. Set closer to 0 for more deterministic outputs.
- Maximum response tokens — How long the model's response can be.
- Maximum request tokens — Total tokens the model can handle in one request.
-
Diamond icon → Prompt usage conditions: Define when this prompt should be used based on input values (e.g., a specific record state).
-
Timer icon → Run test history: View past test runs for this prompt.
-
-
In Prompt settings, set Maximum response tokens to
10,000to ensure the output isn't truncated.
Congratulations! You've successfully created your first custom skill and have a foundational understanding of the Now Assist Skill Kit interface. In Exercise 2, you'll add inputs — the data your skill needs — and connect tools that bring that data into your prompt.
Exercise 2: Bring Data Into Your Prompt with the Document Intelligence Tool
Goal
In this exercise, you'll add tools to your skill. A tool is a utility configured to add context to your prompt — options include Web Search, Subflows, Flow Actions, Scripts, and Retrievers. You'll use the Document Intelligence tool to extract information from a PDF attached to an inbound email record, and a RAG Retriever to pull in your RMA policy from the Knowledge Base.
2.1 Review the Input PDF
Before configuring the Document Intelligence tool, take a moment to review the sample PDF your skill will process.
Steps:
-
Download the attachment on this article named rma_harbridge contruction 1.pdf
- In the filter navigator, type
Inboundand select System Mailboxes > Inbound > Inbox.
- Click New.
- Provide a Subject as RMA Request and populate the body text with anything to create a test email record.
- Attach the downloaded PDF to the email.
- Save the record.
- Your test email should look like this:
- Open the PDF and review its contents - this is the document your skill will analyze.
2.2 Add a Skill Input
This section walks you through adding a record reference as the input to your skill.
Steps:
-
In the Prompt editor, click the Skill contents button next to the prompt name if the left sidebar isn't visible.
-
Click the + icon next to Skill inputs.
-
Populate the Add skill input form as follows:
- Datatype: Record
- Table name:
sys_email - Name:
Email - Make input mandatory: True
- Choose test record: Search for
RMA Requestto locate the sample record
Note: This tells the skill what type of input data to expect. In this scenario, the skill will receive inbound email records, which carry the PDF attachment you'll extract data from.
-
Click Add skill input
-
Click Save as we will be navigating outside of Now Assist Skill Kit in the next step.
2.3 Create a Document Intelligence Use Case
Now you'll configure the Document Intelligence use case that will extract data from the RMA PDF.
Do note that as part of an update set we have included a premade use case named RMA Request Processor [Lab Version] for you to use as this process can be rather time consuming.
Steps:
-
In the top header, click Admin > Now Assist Admin. Close out of the tour module if it appears.
-
Click the Now Assist Skills tab.
-
In the left-hand list, click Platform > Other. Search for
Extract information from documentsand click Activate skill or Edit Configuration. -
Click + New use case.
-
Populate the Define use case form as follows:
- Use case name:
RMA Request Processor - Target table: (leave empty)
- Language of the files: Latin model (default)
- LLM provider: Amazon Bedrock - Claude Large
- Image mode: No
- Use case name:
-
Click Save and Continue.
-
Click Add a field, then select Question.
Note: This is where you define what information the model should extract from the document. You'll add two questions and four fields.
-
Add the first question with the following values, then click Save:
- Question:
what reasons were given for the product being returned? Generally related to condition of product, product defects, or other details on why product did not meet expectations.
- Field Type: Text
- Target Field: (leave empty)
- This single field is required for extraction: False
- Question:
-
Repeat the process to add a second question:
-
Question:
What shipping method was used? -
Field Type: Text
-
Target Field:(leave empty)
-
This single field is required for extraction: False
-
- Click + New field and select Field. Add the following field:
- Field:
PO Number Details:The Purchase Order number for the order. Example: PO-2026-10044Field Type: Text- Target Field:(leave empty)
- This single field is required for extraction: False
- Click Save, then repeat to add three more fields:
Field 2
-
Field:
Order Date -
Details:
The date the product was ordered or purchased. This is separate from delivery or invoice date. -
Field Type: Text
-
This single field is required for extraction: False
Field 3
-
Field:
Customer Name -
Details:
Name of the customer e.g. Vantage Procurement Group, LLC -
Field Type: Text
-
This single field is required for extraction: False
Field 4
-
Field:
Invoice Number -
Details:
The invoice number attached to the request. For example "INV-MIS-98312" -
Field Type: Text
-
This single field is required for extraction: False
-
Click + New field and select Table. Add a table with the following values:
- Table name:
Items Requested for Return - Additional Details: This table contains critical details for the different items being returned. Critical details/columns include item description, product SKU, unit price, quantities ordered and returned, and a return reason code.
- Target Field: (leave empty)
- Make this a required field: False
- Table name:
-
Click Add columns and enter the following five columns:
- Column title:
Product Description, type: Text - Column title:
Quantity Returned, type: Integer - Column title:
Product SKU, type: Text - Column title:
Unit Price, type: Text - Column title:
Reason Code, type: Text
- Column title:
- In the Column title field, enter
Product Description, keep the Text type selection, leave Select target field blank, then click + New column. - In the Column title field, enter
Quantity Returned, set the type to Integer, leave Select target field blank, then click + New column. - Repeat this process for the remaining three columns, keeping Text as the type and Select target field blank for each:
Product SKUUnit PriceReason Code -
Click Save. Your use case should look like this:
-
Click Save and Continue
-
Click Test a new document, then + Add file. Upload the
rma_harbridge_construction.pdfyou downloaded from the email record previously and click Upload. - Click Continue. Processing may take a few minutes — click Refresh to check progress.
- Once processing is complete, review the extracted content in the Results panel. You should see the text from the RMA PDF broken into structured chunks, similar to the example below:
-
Click Save and Continue through the next two screens, then click Complete setup on the review page.
-
Close the module that appears and return to your skill in Now Assist Skill Kit.
2.4 Connect the Document Intelligence Use Case to Your Skill
Steps:
- Open the skill you created earlier named RMA Auto Approver. On your skill page, click the Tool editor tab (to the right of the Prompt editor tab).
- In the flow diagram, click the (+) icon between the Start node and the Skill prompt node.
- Select Tool node, then click Add.
- Set the Tool type to Document Intelligence, then click Configure tool.
-
Populate the form as follows:
- Name:
RMAExtractor - Action: Extract Information
- Use case:
RMA Request Processor
- Name:
-
Click Continue.
-
In the Source record ID field, click the data pill picker. A panel will appear showing your skill inputs. Click the arrow next to Email, type
sysin the search bar, then select Sys ID. -
In the Source table field, type
sys_email. -
Under Filter attachments, set File format to
PDFso only PDF attachments are passed to the tool. -
Your form should look like this — if not, feel free to type in the fields so that they match the screenshot:
- Click Continue twice to move past the Tool outputs and Tool conditions screens.
-
Note: The Tool conditions screen lets you specify programmatically when a tool should run — for example, when an inbound email has no PDF attached. You'll handle that scenario in a later step.
Click Add tool. Your tool diagram should now show the RMAExtractor node between Start and the Skill prompt.
2.5 Pull in Policy Information Using a RAG Retriever
Next, you'll add a second tool to pull data from the RMA Request Policy guide stored in the instance Knowledge Base.
Steps:
-
In the tool diagram, click the (+) icon between the Start node and the DOCINTEL (Document Intelligence) node.
-
Select Tool node and click Add.
-
Set the Tool type to Retriever, check that Add as parallel node is set to True, then click Configure tool.
-
Set the Name to
GetRMAPolicy, then click Continue. -
Populate the retriever configuration as follows (leave any unlisted fields at their default values):
- Search query:
Return Merchandise Authorization (RMA) Policy - Search space type: Table-based
- Table: Knowledge (kb_knowledge)
- Limit: 1
- Search Criteria: Hybrid
- Rewrite query: False
- Embedding model: ServiceNow Embedding (E5)
- Semantic Indexes: Body
- Chunking and reranking: True
- Search query:
-
Click Continue through the remaining screens, then click Add tool.
Congratulations! Your skill will now pull in data from two sources simultaneously — the PDF attachment via Document Intelligence, and your RMA policy from the Knowledge Base via RAG. In Exercise 3, you'll build the prompt that uses both.
Exercise 3: Test, Refine, and Finalize Your Prompt
In this exercise, you'll build your prompt iteratively — starting from a basic instruction and refining it using prompt engineering best practices. The goal is to produce a prompt that extracts information from an RMA request, verifies whether it should be auto-approved based on policy, and returns a structured JSON object ready for downstream processing. Once you're satisfied with the output, you'll finalize and lock the prompt for deployment.
3.1 Write a Basic Prompt
We will start with the simplest possible instruction. It will produce output, but the format and content will be inconsistent across runs.
Steps:
-
Navigate back to the 1. Edit prompt tab in the menu bar.
-
Clear and replace any existing prompt text with the following:
Review the RMA request and decide if it should be approved.
- Click Run test, then click Run test again in the pop-up that appears. Leave the Test prompt after applying security controls checkbox checked.
- Observe the following in the output:
- The model may approve or deny without explaining why
- There is no consistent output structure
- Field names and response format will differ on every run
- Why this matters: Without a role, context, or output format, the model relies on its own defaults. The result is unpredictable and can't be reliably consumed by a downstream script or flow.
3.2 Add a Role and Context
A role tells the model what perspective to reason from. Context tells it what inputs to expect and where to find them.
Steps:
- Clear and replace your prompt with the following:
## Role You are a Return Merchandise Authorization (RMA) policy analyst. Your responsibility is to examine RMA requests and determine whether they comply with company return policy. ## Context The full text of the RMA request: {{DocIntelOutput}} The policy criteria to evaluate against: {{RetrieverOutput}} ## Instructions Review the RMA request and decide if it should be approved.
-
In the prompt, delete the
{{DocIntelOutput}}placeholder text but leave your cursor in that position. Click + Inputs and tools. -
Click the arrow next to RMAExtractor, then select Response.
-
Delete the
{{RetrieverOutput}}placeholder text and leave your cursor in that position. Click + Inputs and tools again. -
Click the arrow next to GetRMAPolicy, then select Rag Results.
-
Click Run test again and observe the output.
- Your context should now look like the following:
## Context The full text of the RMA request: {{RMAExtractor.response}} The policy criteria to evaluate against: {{GetRMAPolicy.rag_results}}- The response should now be more relevant and grounded with the additional data. However:
- The structure of the response is still unpredictable
- The model may return prose, a list, or partial JSON depending on the run
3.3 Add Step-by-Step Instructions
Breaking the task into explicit numbered steps guides the model's reasoning and reduces missed or inconsistent findings.
Steps:
- Replace the ## Instructions section with the following:
## Instructions 1. Read the entire RMA request provided in the context. 2. Identify the key elements needed for policy evaluation, such as: - Product type and SKU - Purchase order and invoice references - Reason for return (reason code) - Condition of items (unused, opened, damaged, etc.) - Required documentation (receipt, photos, serial number, etc.) - Total return value 3. Compare each identified element against the applicable return policy criteria (time limits, acceptable reasons, condition requirements, documentation needed). 4. Determine whether the request meets ALL policy requirements. 5. Produce a decision: Approved if all criteria pass, or Manual Review Required if any criterion fails. 6. Provide a brief justification (one or two sentences) referencing the specific policy rule(s) that led to the decision.
- Click Run test again. The model should now produce more complete and consistent findings. However, the output format is still variable — unsuitable for passing directly into a downstream script.
3.4 Define a Structured Output Format
The skill output will be consumed by a Flow Designer action that creates ServiceNow records, so the response must follow a precise, predictable schema.
Steps:
- Add the following ## Output section to the end of your prompt:
## Output The output should ONLY be a single JSON object in the following format. Create separate nested objects for each individual asset and line item. Do NOT include any extra text or reasoning. Ensure the JSON is valid. Do not wrap the JSON in markdown code fences or backticks. Return only the raw JSON object. { "approval_status": "approved", "request": { "short_description": "RMA - [Customer] - [PO Number]", "vendor_name": "[Vendor company name]", "customer_name": "[Customer company name]", "po_number": "[PO number]", "invoice_number": "[Invoice number]" }, "asset": [ { "asset_tag": "[SKU used as asset tag]", "description": "[Item description]", "serial_number": "[Serial number or N/A]" } ], "line": [ { "sku": "[Item SKU]", "description": "[Item description]", "quantity": 0, "reason_code": "[RC-01 through RC-06]", "return_value": 0.00, "notes": "[Supporting detail from the request]" } ] }
- Click Run test again. The output should now be a clean JSON object. Toggle between Text view and JSON view in the skill tester to validate the structure.
-
Important: The asset and line fields must be arrays even when there is only one item. This ensures the downstream ServiceNow script can iterate over them consistently regardless of how many line items the RMA contains.
-
In the results area, click the Tools tab.
-
Select RMAExtractor in the Tool selector dropdown. Verify the output contains extracted text from the RMA request — this confirms the Document Intelligence tool is successfully reading the PDF attachment.
-
Switch the Tool selector to GetRMAPolicy. Verify the output contains retrieved policy content from the Knowledge Base.
3.5 Your Completed Prompt
Your full prompt should now look like the following. Verify each section is present before saving.
## Role
You are a Return Merchandise Authorization (RMA) policy analyst. Your
responsibility is to examine the content of an RMA request and determine
whether it complies with the company's return policy. You will assess the
request against the relevant policy rules and provide a clear decision with
a concise justification.
## Context
The full text of the RMA request: {{RMAExtractor.response}}
The policy criteria to evaluate against: {{GetRMAPolicy.rag_results}}
## Instructions
1. Read the entire RMA request provided in the context.
2. Identify the key elements needed for policy evaluation, such as:
- Product type and SKU
- Purchase order and invoice references
- Reason for return (reason code)
- Condition of items (unused, opened, damaged, etc.)
- Required documentation (receipt, photos, serial number, etc.)
- Total return value
3. Compare each identified element with the applicable return policy
criteria (time limits, acceptable reasons, condition requirements,
documentation needed).
4. Determine whether the request meets ALL policy requirements.
5. Produce a decision:
- If the request complies, set approval_status to "approved".
- If any requirement is not met, set approval_status to "manual_review".
6. Provide a brief justification (one or two sentences) referencing the
specific policy rule(s) that led to the decision.
## Output
The output should ONLY be a single JSON object in the following format.
Create separate nested objects for each individual asset and line item.
Do NOT include any extra text or reasoning. Ensure the JSON is valid.
Do not wrap the JSON in markdown code fences or backticks. Return only the raw JSON object.
{
"approval_status": "approved",
"request": {
"short_description": "RMA - Vantage Procurement Group - PO-2026-10044",
"vendor_name": "Meridian Industrial Supplies, Inc.",
"customer_name": "Vantage Procurement Group, LLC",
"po_number": "PO-2026-10044",
"invoice_number": "INV-MIS-98312"
},
"asset": [
{
"asset_tag": "MIS-DR-7710",
"description": "Industrial Drill Bit Kit, HSS-Co, 29-pc",
"serial_number": "N/A"
}
],
"line": [
{
"sku": "MIS-DR-7710",
"description": "Industrial Drill Bit Kit, HSS-Co, 29-pc",
"quantity": 5,
"reason_code": "RC-04",
"return_value": 670.00,
"notes": "Damaged in transit - carrier claim FX-2026-77341"
}
]
}
3.6 Finalize the Prompt
Once you're satisfied with the test results, lock the prompt to prevent accidental changes before deployment.
Steps:
-
Locate the prompt header and click the Finalize prompt button, indicated by the lock icon.
-
A confirmation dialog will appear warning you that finalized prompts cannot be edited. Click Finalize prompt to lock this version.
Exercise 4: Deploy Your Skill as a Flow Action
Goal
In this exercise, you'll connect your custom Now Assist skill to the ServiceNow platform by creating an automated flow. You'll configure an inbound email trigger to detect when an RMA Request is received and use the Execute Skill action to process the document automatically using the AI instructions you developed in Exercise 3.
4.1 Enable Flow Deployment for your Skill
Before a skill can be used within Workflow Studio, it must be published with the correct deployment settings.
Steps:
-
In your skill, click the 4. Deployment and skill settings tab.
-
Ensure Workflow is set to Other.
-
Under Deployment options, check the box for Flow action.
-
Click Save.
-
Click Publish skill in the top right. In the confirmation dialog, ensure your latest prompt version is selected and click Publish.
4.2 Activate the Skill in Now Assist Admin
Even after publishing, a skill must be activated in the Now Assist Admin console before the platform's automation engine can access it.
Steps:
-
In the filter navigator, search for
Now Assist Adminand open the console. -
Click the Now Assist Skills tab.
-
In the left-hand list, select Other, then click the Available tab.
-
Find your RMA Auto Approver skill and click Activate skill.
-
On the configuration screen, ensure the Flow action toggle is set to On.
-
Click Save and continue on both screens, then click Activate on the final summary screen.
4.3 Configure the RMA Request Handler Flow
The RMA Request Handler flow has been preloaded into your instance within the update set committed at the beginning of this guide. You'll need to configure a few fields to connect it to the skill you built in this lab.
Steps:
-
Navigate to All > Process Automation > Workflow Studio.
-
In the Flows tab, search for
RMA Request Handlerand open the flow. -
Click Edit flow.
-
Click the Inbound Email trigger to expand it and verify the following condition is set:
- Subject | contains | RMA Request
- Subject | contains | RMA Request
-
Click Done.
-
Click the Execute Skill action to expand it and configure the following fields:
- Workflow: Other
- Product: --None--
- Feature: --None--
- Skill Config: RMA Auto Approver
-
In the Dynamic Inputs section, set the Email field to the email record passed from the trigger. Click the data pill picker and select Trigger -> Inbound Email -> Email Record.
-
Click Done.
-
Click the RMA Request Processor action to expand it.
-
In the rmaInfo field, use the data pill picker to select 1 - Execute Skill > output > response.
-
Note: This maps the JSON output from your skill to the downstream action that creates ServiceNow records.
-
Click Done.
-
Click Activate in the top header. In the prompt that appears, click Activate again.
4.3 Review the RMA Request Processor Action
The RMA Request Processor is a Flow action that handles the output from the LLM and creates the appropriate records in ServiceNow. Take a few minutes to explore how it works.
Steps:
-
Return to the Workflow Studio homepage by clicking the Workflow Studio icon in the top left of your screen.
-
Click Actions in the top navigation.
-
Click the three-dot menu next to the name column header and type
RMAin the filter field. Click Apply. -
Open the record named RMA Request Processor.
-
Click Inputs in the left panel. Notice the
rmaInfovariable you mapped in step 10 of the previous section. -
Click Script in the left panel and review the script and its comments to understand how the output from the LLM is handled.
Note: This script takes in the JSON object from the skill, parses it, and creates records across the Company, RMA Request, Hardware, RMA Request Line, and RMA Task tables. This is how structured LLM output becomes real platform data.
Exercise 5: Test the End-to-End Flow
Goal
Now that your flow is configured and your skill is active, you'll trigger the full end-to-end integration directly from Flow Designer using its built-in Test capability. This will automatically process a pre-loaded RMA request using your custom Now Assist skill and create the appropriate records in ServiceNow.
5.1 Open the Flow and Launch the Test Panel
Steps:
-
Navigate to All > Process Automation > Workflow Studio.
-
In the Flows tab, search for
RMA Request Handlerand open the flow. -
Click the Test button in the top right.
5.2 Select the Test Email Record
Steps:
-
In the Email Record field, search for:
RMA Request -
Select the record from the results.
-
Click Run Test.
Note: Processing may take 1-2 minutes. You can monitor progress in the Execution Details panel.
5.3 Review the Execution Details
Steps:
-
Once complete, click the link: Your test has finished running. View the flow execution details.
-
Confirm green Completed status on the Execute Skill and RMA Request Processor steps.
-
Click into the Execute Skill step to inspect the output — you should see a JSON object with an
approval_statusvalue.
5.4 Verify the Created Records
Steps:
-
In the filter navigator, type
core_company.listand press Enter. You should see Harbridge. as a new record. -
In the filter navigator, type
sn_hamp_rma_request_line.listand press Enter to view the RMA request line record that was created. -
Click into the record to find the associated Approval task, which will have been automatically approved or flagged for manual review based on the policy evaluation your skill performed.
Benefits and Key Takeaways
Through this lab, you've learned to:
- Create custom skills using Now Assist Skill Kit
- Apply prompt engineering best practices including role definition, context, step-by-step instructions, and structured output formatting
- Integrate skills with tools like Document Intelligence and RAG Retrievers to bring external data into your prompts
- Deploy skills to workflows using the Execute Skill action
- Build end-to-end AI-powered automations that transform LLM output into real platform data
- Custom skills extend the ServiceNow AI platform to address organization-specific challenges while maintaining consistency, traceability, and governance.