mcpField
G
gap-grouping

gap-grouping

github.com/happy-technologies-llc生産性4141 回インストール2 日前に更新
リポジトリ

gap-grouping について

インシデント、検索失敗、投稿、フィードバックからナレッジギャップを分類・クラスタリングするスキルです。ナレッジ管理者が散在するニーズを、優先テーマ、担当割り当て、アクションプラン、改善状況の追跡へつなげます。

主な機能

  1. 01複数ソースからギャップ情報を収集
  2. 02トピックとサービス領域で分類
  3. 03影響度と頻度で優先順位付け
  4. 04記事作成の担当者を割り当て
  5. 05計画作成と改善状況の追跡

活用シーン

  1. 01ナレッジ作成バックログの構築
  2. 02四半期のナレッジ業務の計画
  3. 03優先ギャップに基づく執筆スプリントの編成

MCP 対応

SN-Query-TableなどのServiceNow MCPツールでギャップ情報を収集し、SN-Create-Recordでナレッジ投稿のアクションプランを作成します。検索や更新のツールも利用できます。

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/gap-groupingを入力して読み込まれたか確認します。

詳細

ナレッジギャップのグルーピングと分類

概要

このスキルでは、ギャップ分析を基に、特定されたナレッジギャップを実行可能なテーマごとにグルーピング、クラスタリング、分類します。個々のギャップは単独では優先順位を付けにくいものですが、トピック、サービス領域、ユーザーへの影響ごとにクラスタリングすると、連携した対応が必要な体系的なドキュメントの不備を示すパターンが明らかになります。

このスキルでは、次のことができます。

  • インシデント、検索ログ、フィードバック、提出内容など、複数のソースからナレッジギャップのデータを収集して正規化する
  • サービス領域、カテゴリ、構成アイテム、割り当てグループごとに関連するギャップをクラスタリングする
  • サービスドメイン全体にわたる体系的なドキュメントの不備を特定する
  • 集約した影響度、頻度、ビジネス上の重要度に基づいてギャップのクラスターに優先順位を付ける
  • ギャップのクラスターをナレッジ作成者に割り当て、期限を設定した構造化アクションプランを作成する
  • ナレッジギャップの解消に向けた取り組みの進捗を追跡する

使用するタイミング: ギャップ分析の完了後、四半期ごとのナレッジ計画の策定時、ナレッジ作成のバックログを構築するとき、またはナレッジ作成スプリントの要員を確保するときに使用します。

前提条件

  • ロール: ワークフロー全体を実行するにはknowledge_managerまたはknowledge_admin、読み取り専用の分析にはknowledge
  • アクセス: incident、kb_knowledge、kb_submission、search_log、kb_feedbackテーブルへの読み取りアクセス、およびkb_submissionとkb_knowledgeへの書き込みアクセス
  • プラグイン: com.glideapp.knowledge(ナレッジ管理)が有効化されていること
  • 推奨事項: 生のギャップデータを提供するギャップ分析(knowledge/gap-analysisスキルを参照)が完了していること
  • ナレッジ: 組織のサービスカタログの分類体系とナレッジの所有者モデルを理解していること

手順

ステップ 1:インシデントから生のギャップデータを収集する

KB 記事がリンクされていない解決済みインシデントについて、対象を限定し、取得フィールドを制限したサンプルを取得して、件数に基づくギャップを特定するためにローカルで集計します。

MCP を使用する場合:

Tool: SN-Query-Table
Parameters:
  table_name: incident
  query: opened_at>=javascript:gs.daysAgoStart(90)^state=6^kb_knowledgeISEMPTY^close_notesISNOTEMPTY
  fields: sys_id,category,subcategory,assignment_group
  limit: 1000
  instance: dev

ローカルで(category, subcategory, assignment_group)ごとに行数を数えて、降順に並べ、上位 50 件を残します。サンプルの上限に達した場合、全件を網羅する必要があれば、意図的にページネーションを行います。

REST API を使用する場合:

GET /api/now/stats/incident?sysparm_query=opened_at>=javascript:gs.daysAgoStart(90)^state=6^kb_knowledgeISEMPTY^close_notesISNOTEMPTY&sysparm_group_by=category,subcategory,assignment_group&sysparm_count=true&sysparm_orderby=COUNT&sysparm_limit=50
ステップ 2:失敗した検索からギャップデータを収集する

対象を限定した失敗検索の行を取得し、ユーザーの満たされていないニーズのクラスターを見つけるために、正規化したsearch_termの値をローカルで集計します。

MCP を使用する場合:

Tool: SN-Query-Table
Parameters:
  table_name: search_log
  query: sys_created_on>=javascript:gs.daysAgoStart(90)^results_count=0^search_application=knowledge
  fields: sys_id,search_term
  limit: 1000
  instance: dev

REST API を使用する場合:

GET /api/now/stats/search_log?sysparm_query=sys_created_on>=javascript:gs.daysAgoStart(90)^results_count=0^search_application=knowledge&sysparm_group_by=search_term&sysparm_count=true&sysparm_orderby=COUNT&sysparm_limit=40
ステップ 3:ナレッジの提出内容からギャップデータを収集する

ユーザーが報告したギャップを把握するため、保留中のナレッジ提出(新しい記事のリクエスト)を確認します。

MCP を使用する場合:

Tool: SN-Query-Table
Parameters:
  table_name: kb_submission
  query: state=pending^ORstate=open^sys_created_on>=javascript:gs.daysAgoStart(180)
  fields: sys_id,number,short_description,description,kb_knowledge_base,category,assignment_group,priority,sys_created_on
  limit: 40

REST API を使用する場合:

GET /api/now/table/kb_submission?sysparm_query=state=pending^ORstate=open^sys_created_on>=javascript:gs.daysAgoStart(180)&sysparm_fields=sys_id,number,short_description,description,kb_knowledge_base,category,assignment_group,priority,sys_created_on&sysparm_limit=40
ステップ 4:否定的な記事フィードバックからギャップデータを収集する

トピック領域の網羅性が不十分である可能性を示す、否定的なフィードバックを受けている記事を見つけます。

MCP を使用する場合:

Tool: SN-Query-Table
Parameters:
  table_name: kb_feedback
  query: sys_created_on>=javascript:gs.daysAgoStart(90)^rating=not_helpful^ORrating=1
  fields: sys_id,article,article.number,article.short_description,article.kb_category,comments,sys_created_on
  limit: 40

REST API を使用する場合:

GET /api/now/table/kb_feedback?sysparm_query=sys_created_on>=javascript:gs.daysAgoStart(90)^rating=not_helpful^ORrating=1&sysparm_fields=sys_id,article,article.number,article.short_description,article.kb_category,comments,sys_created_on&sysparm_limit=40
ステップ 5:グルーピングの基準を定義する

次の基準を使って、収集したギャップをクラスタリングします。

グルーピング分類体系:

基準ソースフィールド目的
サービス領域category、cmdb_ci.sys_class_nameIT サービスドメインごとにグルーピングする
トピックsubcategory、short_descriptionのキーワード具体的な内容ごとにグルーピングする
対象ユーザーassignment_group、インシデントの発信者の種類社内 IT、エンドユーザー、顧客を区別する
ナレッジベースkb_knowledge_base既存の KB の所有者と連携させる
優先度層インシデントのpriority、ケースのpriorityビジネス上の重要度に基づいて順位付けする
CI/アプリケーションcmdb_ci、cmdb_ci.name影響を受けるシステムごとにグルーピングする
ステップ 6:サービス領域ごとにギャップを分類する

各ギャップをサービス領域のクラスターに対応付けます。既存の KB カテゴリを照会し、クラスターをナレッジベースの分類体系に合わせます。

MCP を使用:

Tool: SN-Query-Table
Parameters:
  table_name: kb_category
  query: kb_knowledge_base=[primary_kb_sys_id]^active=true^parent_id=NULL
  fields: sys_id,label,full_category,kb_knowledge_base
  limit: 30

REST API を使用:

GET /api/now/table/kb_category?sysparm_query=kb_knowledge_base=[primary_kb_sys_id]^active=true^parent_idISEMPTY&sysparm_fields=sys_id,label,full_category,kb_knowledge_base&sysparm_limit=30

インシデントカテゴリを KB カテゴリに対応付けます。

インシデントカテゴリKB カテゴリギャップ数サービス領域クラスター
ネットワークネットワークと接続性47インフラストラクチャ
ソフトウェアアプリケーション35エンドユーザーコンピューティング
ハードウェアデバイスと周辺機器28エンドユーザーコンピューティング
メールメールとコラボレーション22コミュニケーション
データベースデータサービス18インフラストラクチャ
セキュリティセキュリティとアクセス15セキュリティ
ステップ 7:ギャップクラスターを評価し、優先順位を付ける

複合スコアリングモデルを適用し、緊急度と影響度に基づいてギャップクラスターに順位を付けます。

クラスターのスコアリング式:

要素重み測定方法
インシデント総数30%クラスター内のすべてのギャップにおけるインシデントの合計
インシデント優先度の平均20%加重平均(P1=5、P2=4、P3=3、P4=2、P5=1)
検索失敗頻度20%クラスタートピックに一致する検索失敗クエリの合計
否定的なフィードバック数15%関連記事に対する否定的な評価の件数
ナレッジ投稿数15%このトピックに関する保留中の記事リクエスト数

優先度区分:

  • 緊急(スコア 4.0-5.0): 直ちに対応が必要です。次のスプリントに割り当てます
  • 高(スコア 3.0-3.9): 今四半期中に計画します
  • 中(スコア 2.0-2.9): 次の四半期に予定します
  • 低(スコア 1.0-1.9): バックログに追加し、機会に応じて対応します
ステップ 8:ナレッジ作成の担当者を特定する

割り当てグループの傾向に基づいて、各ギャップクラスターを担当するチームまたは個人を決定します。

MCP を使用:

Tool: SN-Query-Table
Parameters:
  table_name: incident
  query: opened_at>=javascript:gs.daysAgoStart(90)^state=6^category=network^kb_knowledgeISEMPTY
  fields: sys_id,assignment_group
  limit: 1000
  instance: dev

対象範囲に絞った行を assignment_group ごとにローカルで集計し、上位 10 件を残します。

REST API を使用:

GET /api/now/stats/incident?sysparm_query=opened_at>=javascript:gs.daysAgoStart(90)^state=6^category=network^kb_knowledgeISEMPTY&sysparm_group_by=assignment_group&sysparm_count=true&sysparm_limit=10

ギャップクラスターのインシデントを最も多く解決している割り当てグループが、ナレッジ記事の作成担当者として最適です。

ステップ 9:アクションプランのレコードを作成する

明確な範囲と期限を設定し、各ギャップクラスターのナレッジ投稿レコードを作成します。

MCP を使用:

Tool: SN-Create-Record
Parameters:
  table_name: kb_submission
  data:
    short_description: "Gap Cluster: Network Connectivity Troubleshooting (5 articles needed)"
    description: |
      === KNOWLEDGE GAP CLUSTER ACTION PLAN ===
      Cluster: Infrastructure - Network & Connectivity
      Priority: Critical (Score: 4.3/5)

      Gap Items:
      1. DNS configuration troubleshooting (47 incidents, 23 failed searches)
      2. VPN split tunnel configuration (31 incidents, 15 failed searches)
      3. Wireless network authentication errors (28 incidents, 12 failed searches)
      4. Network printer connectivity (22 incidents, 8 failed searches)
      5. Proxy configuration for remote users (18 incidents, 10 failed searches)

      Total Incident Impact: 146 incidents in 90 days
      Estimated Articles: 5 new, 2 updates to existing
      Target Completion: 2026-04-30
      Assigned Team: Network Operations

      Success Criteria:
      - All 5 articles published and indexed
      - Failed search rate for cluster topics reduced by 50%
      - Incident-to-KB attachment rate >60% for network category
    kb_knowledge_base: [target_kb_sys_id]
    category: Network
    assignment_group: Network Operations
    priority: 1

REST API を使用:

POST /api/now/table/kb_submission
Content-Type: application/json

{
  "short_description": "Gap Cluster: Network Connectivity Troubleshooting (5 articles needed)",
  "description": "=== KNOWLEDGE GAP CLUSTER ACTION PLAN ===\nCluster: Infrastructure...",
  "kb_knowledge_base": "[target_kb_sys_id]",
  "category": "Network",
  "assignment_group": "[group_sys_id]",
  "priority": "1"
}
ステップ 10:ギャップ解消の進捗を追跡する

新たに作成された記事を定期的に照会し、各クラスターのギャップがいくつ解消されたかを確認します。

MCP を使用:

Tool: SN-Query-Table
Parameters:
  table_name: kb_knowledge
  query: sys_created_on>=javascript:gs.daysAgoStart(30)^kb_category.label=Network^workflow_stateINdraft,review,published
  fields: sys_id,number,short_description,workflow_state,kb_category,author,sys_created_on
  limit: 20

REST API を使用:

GET /api/now/table/kb_knowledge?sysparm_query=sys_created_on>=javascript:gs.daysAgoStart(30)^kb_category.label=Network^workflow_stateINdraft,review,published&sysparm_fields=sys_id,number,short_description,workflow_state,kb_category,author,sys_created_on&sysparm_limit=20

ツールの使用方法

MCP ツールのリファレンス
ツール使用するタイミング
SN-Query-Tableギャップ、投稿、フィードバック、記事を照会し、ローカル集計用に対象範囲に絞ったフィールドを取得する
SN-Natural-Language-Searchトピックごとに既存のカバー状況を検索する
SN-Create-Recordナレッジ投稿としてアクションプランのレコードを作成する
SN-Update-Record投稿のステータスと進捗メモを更新する
SN-Add-Work-Notesクラスタリングの判断と根拠を記録する
REST API リファレンス
エンドポイントメソッド目的
/api/now/stats/incidentGETカテゴリ別にインシデント件数を集計する
/api/now/stats/search_logGET検索失敗頻度を集計する
/api/now/table/kb_submissionGET/POSTナレッジ投稿とアクションプランを管理する
/api/now/table/kb_feedbackGET否定的なフィードバックデータを取得する
/api/now/table/kb_categoryGETギャップを KB 分類体系に対応付ける
/api/now/table/kb_knowledgeGETギャップ解消の進捗を追跡する

ベストプラクティス

  • 優先順位を付ける前にグループ化する: 個々のギャップはノイズが多いため、クラスター化することで真の優先事項を明らかにし、取り組みが分散するのを防げます
  • ナレッジベースの分類体系に合わせる: ギャップのクラスターを既存のナレッジベースのカテゴリに対応付け、記事が適切な場所に配置されるようにします
  • 専門知識に基づいて担当を割り当てる: インシデントを解決するチームが、記事の執筆にも最適です。担当グループのデータを使って執筆者を特定します
  • 現実的なスケジュールを設定する: 通常、ナレッジの執筆者は週に2~3本の質の高い記事を作成できます。それに応じてクラスターごとのスケジュールを計画します
  • 成功指標を定義する: 各アクションプランには、測定可能な基準(検索ヒット率の改善、インシデントの抑制、フィードバックスコア)を含めます
  • 四半期ごとに見直す: 組織の変化に伴いギャップのクラスターも変化します。毎四半期、分析を再実行して優先順位を調整します
  • すぐに成果が出る取り組みから始める: 各クラスター内で、既存の解決メモや問題の回避策を再利用して埋められるギャップを特定します

トラブルシューティング

「ギャップのクラスターが広すぎて、すべてのギャップが同じカテゴリに入ります」

原因: インシデントの分類が粗すぎます(例:すべてが「ソフトウェア」) 解決策: サブカテゴリ、CI、または担当グループを追加の軸として使用します。サブカテゴリが少ない場合は、短い説明のキーワードパターンでクラスター化します

「ナレッジ記事の執筆担当を特定できません」

原因: 明確な担当グループのパターンがなく、インシデントが多数のチームに分散しています 解決策: 集中的な執筆機能としてナレッジマネジメントチームに割り当てるか、最も頻繁に解決を担当している人から対象分野の専門家を特定します

「保留中のナレッジ投稿が古く、最新の状態ではありません」

原因: 投稿は作成されましたが、トリアージも割り当ても行われていません 解決策: 投稿を経過期間で絞り込み、関連性がなくなった12か月以上前のものは終了します。過去6か月以内の投稿に注力します

「ギャップのクラスターの優先順位が頻繁に変わります」

原因: 新たなインシデントの急増や組織の変化によって、優先順位が変わります 解決策: 現在の傾向を捉えるため、直近90日間のローリングウィンドウを使用してスコアを算出します。毎月再評価し、関係者に変更を伝えます

「アクションプランのレコードが追跡されていません」

原因: ナレッジ投稿レコードに関するワークフローやレポートがありません 解決策: 状態、担当グループ、経過期間ごとにkb_submissionレコードを追跡する簡単なダッシュボードまたは定期レポートを作成します

例

例1:インフラストラクチャのギャップクラスター

クラスター: インフラストラクチャ - ネットワークと接続 スコア: 4.3/5(重大)

特定されたギャップ:

ギャップのトピックインシデント検索失敗投稿
DNSのトラブルシューティング47231
VPNのスプリットトンネル31152
無線認証エラー28120
ネットワークプリンターの設定2281
リモートユーザー向けプロキシ18100

アクションプラン: 新規記事を5本作成し、ネットワーク運用チームに割り当て、目標完了期間を4週間とします。発生件数の多いDNSとVPNから着手します。

例2:エンドユーザーコンピューティングのギャップクラスター

クラスター: エンドユーザーコンピューティング - アプリケーション スコア: 3.5/5(高)

特定されたギャップ:

ギャップのトピックインシデント検索失敗否定的なフィードバック
Office 365移行に関するFAQ35285
Adobeライセンスのアクティベーション22112
Zoomプラグインのインストール1990
ブラウザーの互換性1573

アクションプラン: 新規記事を4本作成し、記事を2本更新します。デスクトップサポートのナレッジ執筆者に割り当て、目標完了期間を3週間とします。進行中の展開に合わせて、Office 365の移行コンテンツを優先します。

例 3:顧客向けギャップのクラスター

クラスター: カスタマーサービス - 製品サポート スコア: 4.1/5(重大)

特定されたギャップ:

ギャップのトピックケース数ポータル検索の失敗数投稿数
製品の返品手続き38223
保証請求の手続き25182
注文追跡状況20141

アクションプラン: 外部 KB 向けに顧客向け記事を 3 件新規作成し、カスタマーサービスのナレッジチームに割り当てます。顧客への直接的な影響とセルフサービスへの誘導機会があるため、優先度は重大です。完了目標は 2 週間後です。

関連スキル

  • knowledge/gap-analysis - 個々のナレッジギャップを特定します(このスキルの前提条件)
  • knowledge/article-generation - 各クラスターのギャップを埋める記事を生成します
  • knowledge/duplicate-detection - ギャップのクラスター向けに記事を作成する際、重複を防止します
  • knowledge/content-recommendation - 新しい記事が関連するインシデントに表示されることを検証します

コメント