mcpField
F
feedback-summarization

feedback-summarization

github.com/happy-technologies-llc生产力4141 次安装2 天前更新
代码仓库

关于 feedback-summarization

该技能汇总 ServiceNow SPM 中的敏捷仪式反馈、利益相关者调查和项目评审记录,供 Scrum Master、项目经理及领导团队识别改进主题。它可生成行动项,并跟踪其跨迭代的处理情况。

主要功能

  1. 01提取冲刺回顾记录与评论
  2. 02收集利益相关者调查回复
  3. 03归纳跨来源的重复主题
  4. 04将反馈分类为可执行主题
  5. 05从反馈生成优先行动项
  6. 06跨冲刺跟踪行动项

适用场景

  1. 01汇总单个冲刺的回顾反馈
  2. 02识别季度内反复出现的改进主题
  3. 03分析利益相关者对交付质量的看法

MCP 相关

该技能使用 ServiceNow MCP 工具查询冲刺、调查和日志数据,生成改进故事,并将摘要写入记录。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill feedback-summarization

安装后在 Claude Code 中输入/feedback-summarization确认已加载。

详细介绍

反馈总结

概述

此技能用于总结 ServiceNow SPM 中从敏捷会议、利益相关者调查和项目评审中收集的反馈。涵盖:

  • 从 rm_sprint 中提取 Sprint 回顾记录和评论中的反馈
  • 分析 asmt_assessment_instance 中的 Sprint 评审笔记和利益相关者评估
  • 识别多个反馈来源中的重复主题
  • 将反馈归类为可执行的主题(流程、工具、沟通、质量、工作量)
  • 根据汇总的反馈生成优先级排序后的行动项
  • 跨 Sprint 跟踪行动项的解决情况,持续改进

适用场景: Scrum Master 需要总结回顾反馈、项目经理希望汇总利益相关者的整体态度、领导层需要跨团队了解重复出现的改进主题,或团队正在准备季度规划会议时。

价值主张: 将零散反馈转化为结构化见解,揭示单次回顾中不易发现的跨 Sprint 模式,并通过跨迭代跟踪改进行动来明确责任。

前提条件

  • 插件: com.snc.sdlc.agile.2.0(Agile Development 2.0)、com.snc.assessment(可选,用于调查)
  • 角色: scrum_master、scrum_admin、pa_admin 或 admin
  • 访问权限: 对 rm_sprint、rm_story、asmt_assessment_instance 和日志字段表具有读取权限
  • 知识: 了解敏捷会议、回顾形式以及团队的 Sprint 节奏

操作步骤

第 1 步:收集 Sprint 回顾数据

从 Sprint 记录和相关日志条目中获取回顾反馈。

使用 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

使用 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

获取日志/工作备注以了解详细反馈:

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
第 2 步:收集利益相关者调查回复

从 Sprint 评审或利益相关者调查中收集评估数据。

使用 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

获取各个问题的回复:

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

使用 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
第 3 步:分析 Sprint 性能指标

将反馈与实际 Sprint 性能数据关联起来。

使用 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));
第 4 步:从反馈中识别主题

分析收集到的反馈,提取重复出现的主题。

使用 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));
第 5 步:生成行动项

根据已识别的主题创建可跟踪的行动项。

使用 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]
第 6 步:生成反馈总结报告

将所有分析汇编成一份全面的总结。

使用 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
第 7 步:跨 Sprint 跟踪行动项

监控由反馈生成的行动项的解决情况。

使用 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

使用 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

工具使用

MCP 工具参考
工具使用时机
SN-Query-Table查询 Sprint、故事、评估和日志条目
SN-Get-Record获取特定 Sprint 或评估的详细信息
SN-Natural-Language-Search按关键词或主题描述查找反馈
SN-Create-Record创建改进故事,作为行动项
SN-Execute-Background-Script汇总指标、归类主题、批量分析
SN-Add-Work-Notes将总结报告添加到 Sprint 或项目记录中
REST API 参考
端点方法用途
/api/now/table/rm_sprintGET查询 Sprint 记录和回顾数据
/api/now/table/rm_storyGET/POST查询故事并创建行动项
/api/now/table/asmt_assessment_instanceGET获取利益相关者调查回复
/api/now/table/asmt_assessment_instance_questionGET获取各个调查问题的回答
/api/now/table/sys_journal_fieldGET读取工作备注和评论
/api/now/table/rm_releaseGET汇总版本级别的反馈

最佳实践

  • 持续收集反馈: 每个冲刺都使用相同的回顾格式,以便比较不同时期的主题
  • 先分类,再总结: 先将反馈归纳为不同主题,再进行总结;原始列表的可操作性较低
  • 正式跟踪行动项: 为每个行动项创建故事或任务;口头承诺容易被遗忘
  • 闭环跟进: 每次回顾开始时,先检查之前行动项的状态,再收集新反馈
  • 尽可能量化: “3 个生产环境缺陷”比“质量问题”更具可操作性
  • 区分观察与建议: 明确区分发生了什么(主题)和应采取什么措施(行动)
  • 跨团队汇总: 跨团队主题分析能揭示单个团队回顾中容易遗漏的系统性问题
  • 限制每个冲刺的行动项数量: 每个冲刺专注于 2-3 项改进措施;行动项过多会分散注意力

故障排除

回顾记录字段为空

原因: 团队可能将回顾反馈存储在工作备注、评论或外部工具中,而不是 retrospective_notes 字段 解决方案: 查询冲刺记录对应的 sys_journal_field,查找工作备注条目。检查团队是否使用需要集成的外部回顾工具。

调查回复未关联到冲刺

原因: 评估实例可能未将 trigger_id 设置为冲刺的 sys_id 解决方案: 按日期范围匹配调查,而非直接引用(调查的 taken_on 位于冲刺开始和结束日期之间)。

主题分类遗漏反馈

原因: 基于关键词的分类能力有限;反馈可能使用了不同的术语 解决方案: 根据团队使用的语言扩充关键词列表。可以考虑使用 NLU 或文本分析 API 来提高分类准确性。

行动项未完成

原因: 行动项虽已创建,但在下一个冲刺中未获优先处理或分配 解决方案: 将行动项审查设为冲刺规划中的必经步骤。创建改进故事时,将 sprint 字段设为下一个冲刺。

示例

示例 1:单个冲刺回顾摘要

输入:“总结 Sprint 25 的回顾”

流程: 针对指定冲刺运行步骤 1、3 和 6,生成包含主题、指标和 2-3 项行动项的重点摘要。

示例 2:季度改进趋势

输入:“过去一个季度反复出现了哪些改进主题?”

流程: 对该季度的所有冲刺运行步骤 1-4,然后找出出现于 3 个以上冲刺中的主题,以便升级处理。

示例 3:利益相关者情绪分析

输入:“利益相关者如何评价我们本季度的交付质量?”

# 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

相关技能

  • spm/agile-story-generation - 根据改进行动项生成故事
  • spm/acceptance-criteria - 为改进故事定义验收标准
  • spm/project-insights - 项目健康状况和速度跟踪
  • spm/planning-summarization - 冲刺和发布规划摘要
  • reporting/survey-analysis - 详细分析调查回复
  • reporting/trend-analysis - 通用趋势分析功能

评论

支持 Markdown