feedback-summarization
About feedback-summarization
This skill summarizes agile ceremony feedback, stakeholder surveys, and project reviews in ServiceNow SPM. It helps scrum masters, project managers, and leaders identify recurring improvement themes, create action items, and track them across sprints.
Key features
- 01Extract sprint retrospectives and comments
- 02Collect stakeholder survey responses
- 03Find recurring themes across sources
- 04Group feedback into actionable categories
- 05Generate prioritized action items
- 06Track action items across sprints
Use cases
- 01Summarize feedback from a single sprint retrospective
- 02Find recurring improvement themes across a quarter
- 03Analyze stakeholder views on delivery quality
MCP support
The skill uses ServiceNow MCP tools to query sprint, survey, and journal data, create improvement stories, and post summaries to records.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill feedback-summarizationAfter installing, type/feedback-summarizationin Claude Code to confirm it loaded.
Details
From the project READMEFeedback Summarization
Overview
This skill summarizes feedback collected from agile ceremonies, stakeholder surveys, and project reviews within ServiceNow SPM. It covers:
- Extracting feedback from sprint retrospective records and comments in
rm_sprint - Analyzing sprint review notes and stakeholder assessments from
asmt_assessment_instance - Identifying recurring themes across multiple feedback sources
- Categorizing feedback into actionable themes (process, tools, communication, quality, workload)
- Generating prioritized action items from aggregated feedback
- Tracking action item resolution across sprints for continuous improvement
When to use: When scrum masters need to summarize retrospective feedback, when project managers want to aggregate stakeholder sentiment, when leadership needs a cross-team view of recurring improvement themes, or when preparing for quarterly planning sessions.
Value proposition: Transforms scattered feedback into structured insights, reveals cross-sprint patterns that individual retros miss, and creates accountability for improvement actions by tracking them across iterations.
Prerequisites
- Plugins:
com.snc.sdlc.agile.2.0(Agile Development 2.0),com.snc.assessment(optional, for surveys) - Roles:
scrum_master,scrum_admin,pa_admin, oradmin - Access: Read access to
rm_sprint,rm_story,asmt_assessment_instance, and journal field tables - Knowledge: Understanding of agile ceremonies, retrospective formats, and the team's sprint cadence
Procedure
Step 1: Gather Sprint Retrospective Data
Retrieve retrospective feedback from sprint records and associated journal entries.
Using MCP (Claude Code/Desktop):
Tool: SN-Query-Table
Parameters:
table_name: rm_sprint
query: release.product.sys_id=[product_sys_id]^state=3^ORDERBYDESCend_date
fields: sys_id,number,short_description,start_date,end_date,state,story_points,capacity,retrospective_notes,velocity
limit: 6
Using REST API:
GET /api/now/table/rm_sprint?sysparm_query=release.product.sys_id=[product_sys_id]^state=3^ORDERBYDESCend_date&sysparm_fields=sys_id,number,short_description,start_date,end_date,state,story_points,capacity,retrospective_notes,velocity&sysparm_limit=6&sysparm_display_value=true
Retrieve journal/work notes for detailed feedback:
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: name=rm_sprint^element=work_notes^element_id=[sprint_sys_id]
fields: value,sys_created_on,sys_created_by
limit: 30
order_by: -sys_created_on
Step 2: Collect Stakeholder Survey Responses
Gather assessment data from sprint review or stakeholder surveys.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: asmt_assessment_instance
query: metric_type.nameLIKEsprint review^ORmetric_type.nameLIKEstakeholder^state=complete^taken_on>=javascript:gs.monthsAgoStart(3)
fields: sys_id,number,metric_type,user,user.department,taken_on,percent,state,trigger_id
limit: 50
order_by: -taken_on
Get individual question responses:
Tool: SN-Query-Table
Parameters:
table_name: asmt_assessment_instance_question
query: instance.metric_type.nameLIKEsprint review^instance.taken_on>=javascript:gs.monthsAgoStart(3)^metric.datatype=string^string_valueISNOTEMPTY
fields: string_value,metric.name,metric.question,instance.taken_on,instance.user.name
limit: 100
order_by: -instance.taken_on
Using REST API:
GET /api/now/table/asmt_assessment_instance_question?sysparm_query=instance.metric_type.nameLIKEsprint%20review^metric.datatype=string^string_valueISNOTEMPTY^instance.taken_on>=javascript:gs.monthsAgoStart(3)&sysparm_fields=string_value,metric.name,instance.taken_on,instance.user.name&sysparm_limit=100&sysparm_display_value=true
Step 3: Analyze Sprint Performance Metrics
Correlate feedback with actual sprint performance data.
Using MCP:
Tool: SN-Execute-Background-Script
Parameters:
description: Analyze sprint performance metrics for feedback context
script: |
var productId = '[product_sys_id]';
var sprintMetrics = [];
var sprint = new GlideRecord('rm_sprint');
sprint.addQuery('release.product.sys_id', productId);
sprint.addQuery('state', 3); // Complete
sprint.orderByDesc('end_date');
sprint.setLimit(6);
sprint.query();
while (sprint.next()) {
var metrics = {
sprint: sprint.short_description.toString(),
number: sprint.number.toString(),
dates: sprint.start_date.getDisplayValue() + ' to ' + sprint.end_date.getDisplayValue(),
planned_points: parseInt(sprint.capacity) || 0,
completed_points: parseInt(sprint.story_points) || 0,
velocity: 0,
stories: { total: 0, completed: 0, carried_over: 0 },
defects_found: 0
};
metrics.velocity = metrics.planned_points > 0
? Math.round((metrics.completed_points / metrics.planned_points) * 100) : 0;
// Story completion
var stories = new GlideAggregate('rm_story');
stories.addQuery('sprint', sprint.sys_id);
stories.addAggregate('COUNT');
stories.groupBy('state');
stories.query();
while (stories.next()) {
var count = parseInt(stories.getAggregate('COUNT'));
metrics.stories.total += count;
var state = parseInt(stories.state);
if (state >= 3) metrics.stories.completed += count;
else metrics.stories.carried_over += count;
}
// Defects
var defects = new GlideAggregate('rm_story');
defects.addQuery('sprint', sprint.sys_id);
defects.addQuery('classification', 'Defect');
defects.addAggregate('COUNT');
defects.query();
if (defects.next()) metrics.defects_found = parseInt(defects.getAggregate('COUNT'));
sprintMetrics.push(metrics);
}
gs.info(JSON.stringify(sprintMetrics, null, 2));
Step 4: Identify Themes from Feedback
Analyze collected feedback to extract recurring themes.
Using MCP:
Tool: SN-Execute-Background-Script
Parameters:
description: Categorize feedback into themes
script: |
var sprintIds = ['sprint_sys_id_1', 'sprint_sys_id_2', 'sprint_sys_id_3'];
var themes = {
process: { count: 0, items: [] },
tools: { count: 0, items: [] },
communication: { count: 0, items: [] },
quality: { count: 0, items: [] },
workload: { count: 0, items: [] },
positive: { count: 0, items: [] },
other: { count: 0, items: [] }
};
// Keyword mapping for theme detection
var keywords = {
process: ['standup', 'ceremony', 'planning', 'refinement', 'workflow', 'process', 'methodology', 'sprint', 'retro'],
tools: ['jira', 'servicenow', 'jenkins', 'pipeline', 'tooling', 'environment', 'infrastructure', 'slow', 'broken'],
communication: ['communication', 'unclear', 'alignment', 'stakeholder', 'meeting', 'update', 'inform', 'silos'],
quality: ['bug', 'defect', 'testing', 'review', 'code review', 'quality', 'regression', 'production issue'],
workload: ['overloaded', 'capacity', 'bandwidth', 'too many', 'burnout', 'deadline', 'overtime', 'scope creep'],
positive: ['great', 'improved', 'well done', 'excellent', 'good job', 'kudos', 'thank', 'appreciate']
};
sprintIds.forEach(function(sprintId) {
var journal = new GlideRecord('sys_journal_field');
journal.addQuery('name', 'rm_sprint');
journal.addQuery('element_id', sprintId);
journal.addQuery('element', 'work_notes');
journal.query();
while (journal.next()) {
var text = journal.value.toString().toLowerCase();
var categorized = false;
for (var theme in keywords) {
keywords[theme].forEach(function(kw) {
if (text.indexOf(kw) >= 0 && !categorized) {
themes[theme].count++;
themes[theme].items.push({
text: journal.value.toString().substring(0, 200),
sprint: sprintId,
date: journal.sys_created_on.getDisplayValue()
});
categorized = true;
}
});
}
if (!categorized) {
themes.other.count++;
themes.other.items.push({
text: journal.value.toString().substring(0, 200),
sprint: sprintId
});
}
}
});
gs.info(JSON.stringify(themes, null, 2));
Step 5: Generate Action Items
Create trackable action items from identified themes.
Using MCP:
Tool: SN-Create-Record
Parameters:
table_name: rm_story
fields:
short_description: "Retro Action: Implement automated regression test suite for checkout flow"
description: |
## Source
Sprint retrospective feedback across Sprints 23-25
## Theme
Quality - recurring defects in checkout flow detected late in sprint
## Feedback Summary
- Sprint 23: "We found 3 production bugs in checkout that should have been caught"
- Sprint 24: "Still seeing regression issues in payment processing"
- Sprint 25: "Need automated tests before we add more features"
## Action
Create ATF test suite covering all checkout scenarios. Target: 80% coverage of critical paths.
## Success Criteria
- ATF suite running in CI/CD pipeline
- Zero checkout regressions for 2 consecutive sprints
classification: Improvement
priority: 2
state: -6
epic: [improvement_epic_sys_id]
sprint: [next_sprint_sys_id]
story_points: 8
product: [product_sys_id]
Step 6: Generate the Feedback Summary Report
Compile all analysis into a comprehensive summary.
Using MCP:
Tool: SN-Add-Work-Notes
Parameters:
table_name: rm_sprint
sys_id: [current_sprint_sys_id]
work_notes: |
=== FEEDBACK SUMMARY REPORT ===
Product: Customer Portal
Period: Sprints 23-25 (Feb 3 - Mar 14, 2026)
Sources: 3 sprint retros, 12 stakeholder surveys, 45 work note entries
SPRINT PERFORMANCE TREND:
- Sprint 23: 34/40 pts completed (85% velocity)
- Sprint 24: 38/40 pts completed (95% velocity) - Improved
- Sprint 25: 32/45 pts completed (71% velocity) - Declined (scope increase)
TOP THEMES (by frequency):
1. QUALITY (18 mentions) - Recurring defects in checkout flow, need for automated testing
2. WORKLOAD (14 mentions) - Scope creep in Sprint 25, team overloaded with support tickets
3. COMMUNICATION (11 mentions) - Stakeholder requirements changing mid-sprint
4. TOOLS (7 mentions) - CI/CD pipeline reliability issues causing deployment delays
5. POSITIVE (9 mentions) - Improved sprint planning, better story refinement
RECURRING ISSUES (appeared in 2+ sprints):
- Checkout regression bugs (Sprints 23, 24, 25)
- Mid-sprint scope changes (Sprints 24, 25)
- Environment instability (Sprints 23, 25)
ACTION ITEMS GENERATED:
1. [P2] Create automated regression suite for checkout (8 pts) - Sprint 26
2. [P2] Implement change freeze policy for mid-sprint scope (3 pts) - Sprint 26
3. [P3] Investigate and stabilize CI/CD pipeline (5 pts) - Sprint 27
4. [P3] Establish support ticket rotation to protect sprint capacity (2 pts) - Sprint 26
STAKEHOLDER SENTIMENT:
- Overall satisfaction: 72% (down from 78% last quarter)
- Key concern: "Delivery predictability has decreased"
- Key positive: "Quality of delivered features has improved"
PREVIOUS ACTION ITEM STATUS:
- [DONE] Improve story refinement process - Completed Sprint 24
- [IN PROGRESS] Reduce meeting overhead - 50% reduction achieved
- [NOT STARTED] Cross-training initiative - Deferred to Q2
RECOMMENDATIONS:
1. Protect sprint scope with formal change request process
2. Invest in test automation to reduce manual regression effort
3. Address stakeholder concern about predictability with revised velocity baseline
Step 7: Track Action Items Across Sprints
Monitor resolution of feedback-generated action items.
Using MCP:
Tool: SN-Query-Table
Parameters:
table_name: rm_story
query: classification=Improvement^epic=[improvement_epic_sys_id]
fields: number,short_description,state,sprint,story_points,assigned_to,priority,sys_updated_on
limit: 25
order_by: -sys_created_on
Using REST API:
GET /api/now/table/rm_story?sysparm_query=classification=Improvement^epic=[improvement_epic_sys_id]&sysparm_fields=number,short_description,state,sprint,story_points,assigned_to,priority&sysparm_limit=25&sysparm_display_value=true
Tool Usage
MCP Tools Reference
| Tool | When to Use |
|---|---|
SN-Query-Table | Query sprints, stories, assessments, and journal entries |
SN-Get-Record | Retrieve specific sprint or assessment details |
SN-Natural-Language-Search | Find feedback by keyword or topic description |
SN-Create-Record | Create action items as improvement stories |
SN-Execute-Background-Script | Aggregate metrics, categorize themes, batch analysis |
SN-Add-Work-Notes | Post summary reports to sprint or project records |
REST API Reference
| Endpoint | Method | Purpose |
|---|---|---|
/api/now/table/rm_sprint | GET | Query sprint records and retrospective data |
/api/now/table/rm_story | GET/POST | Query stories and create action items |
/api/now/table/asmt_assessment_instance | GET | Retrieve stakeholder survey responses |
/api/now/table/asmt_assessment_instance_question | GET | Get individual survey question answers |
/api/now/table/sys_journal_field | GET | Read work notes and comments |
/api/now/table/rm_release | GET | Release-level feedback aggregation |
Best Practices
- Collect feedback consistently: Use the same retrospective format each sprint so themes can be compared across periods
- Categorize before summarizing: Group feedback into themes first, then summarize; raw lists are less actionable
- Track action items formally: Create stories or tasks for every action item; verbal commitments are forgotten
- Close the loop: Start each retro by reviewing status of previous action items before collecting new feedback
- Quantify where possible: "3 production bugs" is more actionable than "quality issues"
- Separate observation from recommendation: Clearly distinguish what happened (theme) from what to do about it (action)
- Aggregate across teams: Cross-team theme analysis reveals systemic issues that individual team retros miss
- Limit action items per sprint: Focus on 2-3 improvement actions per sprint; too many dilutes focus
Troubleshooting
Retrospective Notes Field Is Empty
Cause: Team may store retro feedback in work notes, comments, or external tools rather than the retrospective_notes field
Solution: Query sys_journal_field for the sprint record to find work note entries. Check if the team uses an external retro tool that needs integration.
Survey Responses Not Linked to Sprint
Cause: Assessment instances may not have the trigger_id set to the sprint sys_id
Solution: Match surveys by date range (survey taken_on within sprint start/end dates) rather than direct reference.
Theme Categorization Misses Feedback
Cause: Keyword-based categorization is limited; feedback may use different terminology Solution: Expand the keyword lists based on your team's language. Consider using NLU or text analysis APIs for more accurate categorization.
Action Items Not Being Completed
Cause: Action items are created but not prioritized or assigned in the next sprint
Solution: Add action item review as a mandatory step in sprint planning. Set the sprint field to the next sprint when creating the improvement story.
Examples
Example 1: Single Sprint Retro Summary
Input: "Summarize the retrospective from Sprint 25"
Process: Run Steps 1, 3, and 6 for the specific sprint to generate a focused summary with themes, metrics, and 2-3 action items.
Example 2: Quarterly Improvement Trend
Input: "What improvement themes have recurred over the last quarter?"
Process: Run Steps 1-4 across all sprints in the quarter, then identify themes appearing in 3+ sprints for escalation.
Example 3: Stakeholder Sentiment Analysis
Input: "How do stakeholders feel about our delivery quality this quarter?"
# 1. Query stakeholder assessments (Step 2)
# 2. Aggregate scores by question (quality-related questions)
# 3. Extract free-text comments about quality
# 4. Compare with previous quarter
# 5. Correlate with defect counts from Step 3
Related Skills
spm/agile-story-generation- Generate stories from improvement action itemsspm/acceptance-criteria- Define acceptance criteria for improvement storiesspm/project-insights- Project health and velocity trackingspm/planning-summarization- Sprint and release planning summariesreporting/survey-analysis- Detailed survey response analysisreporting/trend-analysis- General trend analysis capabilities