csm-kb-generation
Skill41 starsChanged 6 days agoApache-2.0View on GitHub
Generate knowledge articles from resolved CSM cases with customer-facing language, structured content, screenshot placeholders, and FAQ sections
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 7 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 44
When to use: After resolving a CSM case that addresses a common or recurring issue, when knowledge gaps are identified during case …
- Very specific: line 52
Access: Read access to sn_customerservice_case, interaction, csm_consumer, sys_journal_field.
- Distinctive: line 127
Search for duplicate or related articles to avoid redundancy.
- Distinctive: line 297
Structure consistently: Use Problem > Cause > Resolution > FAQ format for all generated articles
- Very specific: line 300
Set expiration dates: Add valid_to dates to trigger periodic review and ensure article accuracy
- Distinctive: line 301
Avoid exposing internal details: Never include agent names, internal escalation paths, or system architecture details in customer-facing …
- Distinctive: line 302
Tag with products and versions: Use metadata fields to associate articles with specific products and versions for targeted search results
- Distinctive: line 303
Submit as draft: Always create articles in draft state for review before publishing to maintain quality standards
- Distinctive: line 324
Cause: No similar cases found to extract common questions from.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Knowledge Article Generation from CSM Cases
Overview
This skill generates polished knowledge base articles from resolved customer service cases. It transforms internal case resolution data into customer-facing documentation that can deflect future cases and empower self-service. It covers:
- Extracting resolution steps, root cause, and workarounds from resolved CSM cases
- Structuring articles with customer-friendly language, removing internal jargon
- Inserting screenshot placeholders with descriptive alt text for visual guidance
- Generating FAQ sections based on common follow-up questions from similar cases
- Categorizing and tagging articles for optimal searchability
- Publishing articles through the knowledge workflow for review and approval
When to use: After resolving a CSM case that addresses a common or recurring issue, when knowledge gaps are identified during case handling, or during periodic knowledge harvesting from closed case data.
Value proposition: Converts tribal knowledge locked in case resolutions into reusable self-service content. Reduces case volume by enabling customers to find answers independently and ensures consistent resolution guidance across the support team.
Prerequisites
- Plugins: Customer Service Management (
com.sn_customerservice), Knowledge Management (com.glideapp.knowledge) - Roles:
knowledge_admin,knowledge_manager, orknowledge(for article creation);sn_customerservice_agent(for case access) - Access: Read access to
sn_customerservice_case,interaction,csm_consumer,sys_journal_field; read/write access tokb_knowledge,kb_knowledge_base,kb_category - Knowledge: Understanding of your organization's knowledge base structure, article templates, and publishing workflows
Procedure
Step 1: Identify Candidate Cases for KB Generation
Query resolved cases that are good candidates for knowledge articles based on frequency, category, and resolution quality.
Using MCP (Claude Code/Desktop):
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: state=3^resolution_codeISNOTEMPTY^closed_atONLast 30 days@javascript:gs.beginningOfLast30Days()@javascript:gs.endOfLast30Days()^ORDERBYDESCclosed_at
fields: sys_id,number,short_description,category,subcategory,resolution_code,resolved_by,product,close_notes,opened_at,closed_at
limit: 20Using REST API:
GET /api/now/table/sn_customerservice_case?sysparm_query=state=3^resolution_codeISNOTEMPTY^closed_atONLast 30 days@javascript:gs.beginningOfLast30Days()@javascript:gs.endOfLast30Days()^ORDERBYDESCclosed_at&sysparm_fields=sys_id,number,short_description,category,subcategory,resolution_code,resolved_by,product,close_notes,opened_at,closed_at&sysparm_limit=20&sysparm_display_value=trueStep 2: Extract Full Resolution Details from the Case
Retrieve the complete case record including close notes, work notes, and resolution information.
Using MCP:
Tool: SN-Get-Record
Parameters:
table_name: sn_customerservice_case
sys_id: [case_sys_id]
fields: sys_id,number,short_description,description,state,category,subcategory,resolution_code,close_notes,cause,product,contact_type,opened_at,closed_at,resolved_byThen retrieve work notes for step-by-step resolution context:
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: element_id=[case_sys_id]^elementINwork_notes,comments^ORDERBYsys_created_on
fields: sys_id,element,value,sys_created_on,sys_created_by
limit: 30Using REST API:
GET /api/now/table/sn_customerservice_case/{case_sys_id}?sysparm_fields=sys_id,number,short_description,description,state,category,subcategory,resolution_code,close_notes,cause,product,contact_type,opened_at,closed_at,resolved_by&sysparm_display_value=true
GET /api/now/table/sys_journal_field?sysparm_query=element_id=[case_sys_id]^elementINwork_notes,comments^ORDERBYsys_created_on&sysparm_fields=sys_id,element,value,sys_created_on,sys_created_by&sysparm_limit=30Step 3: Find Similar Resolved Cases for FAQ Generation
Query related cases to identify common follow-up questions and alternative resolutions.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: category=[case_category]^subcategory=[case_subcategory]^state=3^sys_id!=[case_sys_id]^ORDERBYDESCclosed_at
fields: sys_id,number,short_description,close_notes,resolution_code,description
limit: 10Using REST API:
GET /api/now/table/sn_customerservice_case?sysparm_query=category=[case_category]^subcategory=[case_subcategory]^state=3^sys_id!=[case_sys_id]^ORDERBYDESCclosed_at&sysparm_fields=sys_id,number,short_description,close_notes,resolution_code,description&sysparm_limit=10&sysparm_display_value=trueStep 4: Check for Existing Knowledge Articles
Search for duplicate or related articles to avoid redundancy.
Using MCP:
Tool: SN-Query-Table
Parameters:
query: workflow_state=published^123TEXTQUERY321=[case_short_description]
table_name: kb_knowledge
limit: 5Using REST API:
GET /api/now/table/kb_knowledge?sysparm_query=short_descriptionLIKE[key_terms]^workflow_stateINpublished,draft&sysparm_fields=sys_id,number,short_description,workflow_state,sys_view_count,kb_knowledge_base&sysparm_limit=5&sysparm_display_value=trueStep 5: Identify the Target Knowledge Base and Category
Determine where the article should be published.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge_base
query: active=true
fields: sys_id,title,description,owner,kb_version
limit: 10Tool: SN-Query-Table
Parameters:
table_name: kb_category
query: kb_knowledge_base=[kb_sys_id]^active=true
fields: sys_id,label,parent_id,full_category
limit: 20Using REST API:
GET /api/now/table/kb_knowledge_base?sysparm_query=active=true&sysparm_fields=sys_id,title,description,owner&sysparm_limit=10&sysparm_display_value=true
GET /api/now/table/kb_category?sysparm_query=kb_knowledge_base=[kb_sys_id]^active=true&sysparm_fields=sys_id,label,parent_id,full_category&sysparm_limit=20&sysparm_display_value=trueStep 6: Generate and Create the Knowledge Article
Compose the article with customer-facing language and create it in ServiceNow.
Using MCP:
Tool: SN-Create-Record
Parameters:
table_name: kb_knowledge
fields:
short_description: "How to Resolve Online Return Processing Errors"
kb_knowledge_base: [kb_sys_id]
kb_category: [category_sys_id]
text: |
<h2>Problem</h2>
<p>When attempting to process a return through the online portal, you may encounter an error message stating "Unable to process return" or the page may time out during submission.</p>
<h2>Cause</h2>
<p>This issue occurs when the browser session expires during the return process, typically after being idle for more than 15 minutes on the return form.</p>
<h2>Resolution</h2>
<ol>
<li>Clear your browser cache and cookies for the portal domain</li>
<li>Log out and log back in to establish a fresh session</li>
<li>Navigate to <strong>My Orders > Returns</strong></li>
<!-- [SCREENSHOT: Navigation to Returns page showing My Orders menu] -->
<li>Select the order containing the item(s) to return</li>
<li>Click <strong>Start Return</strong> and complete the form within 10 minutes</li>
<!-- [SCREENSHOT: Start Return button highlighted on the order detail page] -->
<li>Submit the return request and note the confirmation number</li>
<!-- [SCREENSHOT: Return confirmation page with confirmation number] -->
</ol>
<h2>If the Issue Persists</h2>
<p>If you continue to experience errors after following the steps above:</p>
<ul>
<li>Try using a different browser (Chrome, Firefox, or Edge recommended)</li>
<li>Disable browser extensions that may interfere with the portal</li>
<li>Contact support with your order number and the error message</li>
</ul>
<h2>Frequently Asked Questions</h2>
<p><strong>Q: Will I lose my return information if the page times out?</strong></p>
<p>A: Yes, you will need to re-enter the return details. The system does not save partial return submissions.</p>
<p><strong>Q: Can I process returns through the mobile app instead?</strong></p>
<p>A: Yes, the mobile app maintains a longer session and is recommended for complex returns with multiple items.</p>
<p><strong>Q: How long does the return take to process after submission?</strong></p>
<p>A: Returns are typically processed within 3-5 business days. You will receive an email confirmation when the return is approved.</p>
workflow_state: draft
article_type: text
valid_to: "2027-03-19"
source: case_resolutionUsing REST API:
POST /api/now/table/kb_knowledge
Content-Type: application/json
{
"short_description": "How to Resolve Online Return Processing Errors",
"kb_knowledge_base": "[kb_sys_id]",
"kb_category": "[category_sys_id]",
"text": "<h2>Problem</h2><p>When attempting to process a return...</p>",
"workflow_state": "draft",
"article_type": "text",
"source": "case_resolution"
}Step 7: Link the Article to the Source Case
Associate the new article with the originating case for traceability.
Using MCP:
Tool: SN-Create-Record
Parameters:
table_name: m2m_kb_task
fields:
kb_knowledge: [article_sys_id]
task: [case_sys_id]Using REST API:
POST /api/now/table/m2m_kb_task
Content-Type: application/json
{
"kb_knowledge": "[article_sys_id]",
"task": "[case_sys_id]"
}Tool Usage
MCP Tools Reference
| Tool | When to Use |
SN-Natural-Language-Search | Find existing KB articles semantically matching the case topic |
SN-Query-Table | Query resolved cases, work notes, KB bases, and categories |
SN-Get-Record | Retrieve full case details by sys_id |
SN-Create-Record | Create the KB article and case-article association |
SN-Update-Record | Update article content or workflow state |
SN-Execute-Background-Script | Batch-generate articles from multiple resolved cases |
REST API Reference
| Endpoint | Method | Purpose |
/api/now/table/sn_customerservice_case | GET | Query resolved cases for article candidates |
/api/now/table/sys_journal_field | GET | Retrieve work notes with resolution steps |
/api/now/table/kb_knowledge | GET/POST/PATCH | Search, create, and update knowledge articles |
/api/now/table/kb_knowledge_base | GET | List available knowledge bases |
/api/now/table/kb_category | GET | Browse knowledge categories |
/api/now/table/kb_feedback | GET | Check article feedback for improvement |
Best Practices
- Use customer-facing language: Replace internal jargon, case references, and technical shorthand with clear language the customer can follow
- Structure consistently: Use Problem > Cause > Resolution > FAQ format for all generated articles
- Include screenshot placeholders: Mark visual guidance locations with
<!-- [SCREENSHOT: description] -->for content teams to fill in - Generate FAQs from case patterns: Analyze similar resolved cases to build FAQ sections that address common follow-up questions
- Set expiration dates: Add
valid_todates to trigger periodic review and ensure article accuracy - Avoid exposing internal details: Never include agent names, internal escalation paths, or system architecture details in customer-facing articles
- Tag with products and versions: Use metadata fields to associate articles with specific products and versions for targeted search results
- Submit as draft: Always create articles in draft state for review before publishing to maintain quality standards
Troubleshooting
"Article content is too technical"
Cause: Work notes often contain technical shorthand intended for internal teams. Solution: Post-process the generated text to replace technical terms. Use a glossary mapping (e.g., "GlideRecord" -> "database query", "BR" -> "automated rule") before composing the article.
"Duplicate article detected"
Cause: A knowledge article covering the same topic already exists. Solution: Compare the existing article with the new resolution. If the new case provides additional context, update the existing article rather than creating a duplicate.
"No close notes available"
Cause: The resolving agent did not populate close notes on the case. Solution: Fall back to work notes to reconstruct the resolution steps. Filter work notes for resolution-related content by looking for keywords like "resolved", "fixed", "solution", "workaround".
"FAQ section is empty"
Cause: No similar cases found to extract common questions from. Solution: Generate generic FAQs based on the article category (e.g., "How long does this take?", "What if this doesn't work?", "Who do I contact for help?").
Examples
Example 1: Generate Article from a Single Resolved Case
Scenario: Case CS0045678 resolved a recurring login issue.
Tool: SN-Get-Record
Parameters:
table_name: sn_customerservice_case
sys_id: [case_sys_id]
fields: number,short_description,description,close_notes,resolution_code,category,productGenerated article structure:
- Title: "How to Fix Login Failures After Password Reset"
- Problem: Description of the login error symptoms
- Cause: Password policy sync delay between identity provider and portal
- Resolution: Step-by-step fix with screenshot placeholders
- FAQ: 3 questions from 8 similar resolved cases
Example 2: Batch Generate Articles from Case Category
Scenario: Generate articles for all resolved cases in the "Billing" category from the last 30 days.
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: category=billing^state=3^closed_atONLast 30 days@javascript:gs.beginningOfLast30Days()@javascript:gs.endOfLast30Days()^close_notesISNOTEMPTY
fields: sys_id,number,short_description,close_notes,resolution_code
limit: 50Group cases by subcategory, then generate one consolidated article per subcategory covering the most common resolutions.
Example 3: Enrich Existing Article with New Case Data
Scenario: An existing KB article needs updated resolution steps based on a newly resolved case.
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge
query: number=KB0045123
fields: sys_id,short_description,text,workflow_state
limit: 1Tool: SN-Update-Record
Parameters:
table_name: kb_knowledge
sys_id: [article_sys_id]
fields:
text: [updated_html_content_with_new_resolution_steps]
workflow_state: draftRelated Skills
csm/case-summarization- Summarize cases for context before KB generationcsm/resolution-notes- Generate structured resolution notes on case closurecsm/suggested-steps- Generate resolution steps that can seed KB contentknowledge/content-recommendation- Recommend existing articles to avoid duplicationknowledge/article-generation- Optimize article searchability and quality
In this repository184 other files it gives its agents.
- happy-platform-skillsSkill
- application-scopeSkill
- batch-operationsSkill
- configuration-validationSkill
- deployment-workflowSkill
- generic-crud-operationsSkill
- instance-managementSkill
- schema-discoverySkill
- script-executionSkill
- script-syncSkill
- smart-assessmentSkill
- task-analysisSkill
- task-summarizationSkill
- update-set-managementSkill
- user-provisioningSkill
- workflow-creationSkill
- workspace-insightsSkill
- approval-summarizationSkill
- approval-workflowsSkill
- catalog-builder-aiSkill
- catalog-item-generationSkill
- item-creationSkill
- multi-turn-orderingSkill
- request-fulfillmentSkill
- ui-policiesSkill
- variable-managementSkill
- ci-discoverySkill
- cmdb-search-analysisSkill
- data-qualitySkill
- impact-analysisSkill
- relationship-mappingSkill
- service-graph-diagnosisSkill
- activity-responseSkill
- csm-case-summarizationSkill
- chat-recommendationSkill
- email-recommendationSkill
- resolution-notesSkill
- csm-sentiment-analysisSkill
- csm-sidebar-summarizationSkill
- csm-suggested-stepsSkill
- trending-topicsSkill
- automated-testingSkill
- business-rulesSkill
- client-scriptsSkill
- code-assistSkill
- code-reviewSkill
- data-importSkill
- debugging-techniquesSkill
- fluent-sdkSkill
- glide-api-referenceSkill
- mcp-server-installationSkill
- mcp-serverSkill
- notificationsSkill
- performance-optimizationSkill
- scheduled-jobsSkill
- scripted-rest-apisSkill
- script-includesSkill
- servicenow-docs-mcpSkill
- test-generationSkill
- ui-actionsSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

