Communityコーディング&開発github.com

Servosity/zammad

Zammad のチケット、記事、ナレッジベースの全操作を1つのCLIとMCPサーバーで実現。さらに、チーム管理レイヤー(エージェント負荷、顧客健全性、滞留案件、エスカレーション・トリアージ、チャーンリスク、フィードバック分析)を追加し、Zammad API 単体では取得できない情報を提供します。トリガーフレーズ:`who is overloaded in support`、`which customers are at risk`、`what tickets are open too long`、`who should we escalate`、`what feedback are we getting`、`search zammad tickets`、`use zammad`、`run zammad`。

zammad とは?

このスキルは、Zammad のチケット、記事、ナレッジベース(KB)の全操作を1つのCLIとMCPサーバーで提供し、さらにチーム管理のための高度な分析レイヤーを追加します。`agent-load`、`agent-trend` でエージェントの負荷と傾向を、`customer-health`、`churn-risk` で顧客の健全性と解約リスクを、`overdue`、`escalate`、`feedback-scan` で滞留案件の検出、ネガティブ感情のトリアージ、フィードバック分析をそれぞれ行います。Claude Code、Cursor、Codex などのAIエージェントと連携し、Zammad API だけでは集約できない複数チケットにまたがる情報を、オフラインのSQLiteストアとヒューリスティックスキャンを用いて提供するのが最大の特徴です。チケットの検索・作成・更新、KBの閲覧・検索、ユーザー・組織管理、Webhookによるリアルタイムイベント連携など、Zammad の基本的な操作もカバーしています。

対応✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Servosity/msp-skills/tree/HEAD/skills/zammad

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Zammad - Claude Code スキル

前提条件:CLIのインストール

このスキルは zammad-cli バイナリを利用します。このスキルのコマンドを実行する前に、CLIがインストールされていることを必ず確認してください。 インストールされていない場合は、まずインストールを行います。

  1. macOS / Linux:
    bash <(curl -fsSL https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/zammad/install.sh)
    
  2. Windows (PowerShell):
    iwr -useb https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/zammad/install.ps1 | iex
    
  3. 確認: zammad-cli --version
  4. ~/.local/bin (macOS / Linux) または %LOCALAPPDATA%\Programs\msp-skills (Windows) が $PATH に含まれていることを確認します。

インストーラーは zammad-cli と zammad-mcp バイナリを ~/.local/bin (macOS / Linux) または %LOCALAPPDATA%\Programs\msp-skills (Windows) にダウンロードします。このインストーラーはエージェントとのスキル登録やMCPクライアント設定の書き込みは行いません。その設定方法については mcp-install.md を参照してください。

インストール後に --version が "command not found" を報告する場合、ランタイムがバイナリディレクトリを $PATH 上で認識できていません。確認が成功するまでスキルコマンドを実行しないでください。

単一のGoバイナリでZammad REST + Knowledge Baseの全APIサーフェスをカバーし、オフラインのSQLiteストア、構造化された --json/--select 出力、すべての書き込み操作における --dry-run を提供します。パリティに加えて、同期されたチケットから計算されるチーム管理レイヤーを追加します:agent-load と agent-trend はワークロード、customer-health と churn-risk はアカウントリスク、overdue は滞留バックログ、escalate は感情トリアージ、feedback は顧客の要求マイニングを担当します。任意のZammadインスタンス(インスタンスURLとトークンを設定)で動作します。

このCLIを使用するタイミング

エージェントがZammadのチケットやナレッジベースコンテンツの読み取り、検索、トリアージを行う場合、またはチーム管理に関する質問(誰が過負荷か、どの顧客がリスクか、何が長期滞留しているか、誰がチャーンしそうか、どのフィードバックテーマが繰り返し発生しているか)に答える場合に使用します。サポートオペレーションの自動化、デイリースタンドアップ、アカウントヘルスレビューなど、複数のチケットにまたがる集計が必要な場面に最適です。

アンチトリガー

このCLIを以下の目的で使用しないでください:

  • 顧客向けマーケティングメールの送信(チケット記事の管理が目的であり、キャンペーン管理ではありません)
  • Zammadのトリガー、自動化、SLA、チャネルの設定(これらは管理コンソールの機能であり、ここでは公開されていません)
  • escalate/churn/feedback を権威ある感情分析として信頼すること(これらはヒューリスティックなキーワードトリアージであり、人間またはエージェントが判断するためのシグナルを提供するものです)

ユニークな機能

チーム管理

  • agent-load - 各エージェントの現在のチケット負荷を状態(オープン/ペンディング/バックログ)ごとに表示し、負荷が偏る前にワークバランスを調整できます。

    誰が過負荷か、またはサポートチーム全体の作業配分がどうなっているかと聞かれたときに使用します。

    zammad-cli agent-load --json
    
  • agent-trend - 各エージェントのキューが過去N週間で増加または減少しているかを、オープン数とクローズ数の差分とともに表示します。

    チームが時間の経過とともに追いついているのか、それとも遅れをとっているのかを聞かれたときに使用します。

    zammad-cli agent-trend --weeks 2 --json
    
  • customer-health - オープンチケット数、最古オープン経過時間、再オープン率、速度、最終アクティビティから構築された健全性シグナルで組織をランク付けします。

    顧客が苦情を言う前に、どの顧客が困難に直面しているかを特定するために使用します。

    zammad-cli customer-health --at-risk --json
    
  • overdue - 期限を過ぎても new/open/pending 状態にある滞留チケットを、優先度で重み付けして表示します。最も深刻なものが上位に表示されます。

    SLA違反や停滞しそうなチケットを検出するために使用します。

    zammad-cli overdue --days 3 --json
    
  • escalate - 最近の顧客メッセージが不満を示していると思われるアクティブチケットを、ヒット数、経過時間、優先度でランク付けし、マッチしたスニペットを表示します。

    怒っているように見える顧客を見つけてエスカレーションすべきかを判断するために使用します。これはスニペット付きのキーワードトリアージであり、最終判断はユーザーが行います。

    zammad-cli escalate --json
    
  • churn-risk - 各組織のチャーンリスクを、オープンバックログ、滞留チケット、未回答のペンディング、ネガティブ感情の顧客メッセージからスコアリングし、寄与因子をリストアップします。

    チャーンに先手を打つために使用します。寄与因子が表示されるので、ユーザーが判断して行動できます。

    zammad-cli churn-risk --json
    
  • feedback-scan - チケットと記事のテキストを、機能リクエスト、価格、コンプライアンス、バグのテーマに分類し、ソースチケット参照とスニペットを表示します。

    顧客が機能、価格、コンプライアンスに関して繰り返し要求している内容をマイニングするために使用します。

    zammad-cli feedback-scan --bucket pricing --json
    

ナレッジベース

  • kb browse - 初期バンドルから解析されたカテゴリ/回答ツリーとしてナレッジベースを表示します。

    回答を読んだり検索したりする前にKB構造を確認するために使用します。

    zammad-cli kb browse
    
  • kb search - ライブKB初期バンドルからKB回答のタイトルと本文をテキスト検索します。

    キーワードで適切なKB回答を見つけるために使用します。

    zammad-cli kb search "restore" --json
    
  • kb get - 初期バンドルからKB回答IDを解決し、完全な翻訳済み本文を取得します。

    KB回答の全文を読むために使用します。

    zammad-cli kb get 42
    

チケットの利便性

  • ticket note - 1行でチケットに内部メモまたはパートナー公開メモを追加します。コンテンツタイプのデフォルトは自動設定されます。

    記事ペイロードを手動で構築することなく、チケットに対する作業を記録するために使用します。

    zammad-cli ticket note 12345 --body "調査中、ログ待ち" --internal --dry-run
    

Webhook(ポーリング不要)

Zammadはチケット作成/更新時や記事追加時にこのマシンを呼び出すことができるため、ポーリングは不要です。

# 一度だけ実行(admin.webhook と admin.trigger 権限が必要)
zammad-cli webhooks register --endpoint http://127.0.0.1:8789/zammad --yes
# ZammadがPOSTするマシン上で実行し続ける
zammad-cli webhooks listen
# 到着したイベントを読み取り、次回は返されたカーソルを --since に渡す
zammad-cli events list --since 0 --json
  • register はイベントごと(zammad.ticket.created、zammad.ticket.updated、zammad.article.created)に1つのZammad Webhookと1つのトリガーを作成します。署名シークレットを生成し、APIトークンの隣に保存します。ZAMMAD_WEBHOOK_SECRET で上書き可能です。シークレットが出力されることはありません。webhooks status はシークレットの出所のみを表示します。
  • listen はデフォルトでこのマシン(127.0.0.1、ポート8789)にのみバインドし、シークレットがないと起動を拒否します。すべてのリクエストはZammadの X-Hub-Signature を保持している必要があり、ボディが読み取られる前に検証されます。すでに処理された配信はドロップされ、1MiBを超えるボディは拒否されます。
  • WebhookはIDのみを運びます。リスナーはAPI経由でチケットを取得してイベントを記録するため、顧客のテキストがWebhook内を経由することはありません。
  • Zammadは約2分間で最大5回の配信を試みた後、断念します。listen が起動するたびに、まずダウン中に変更された内容を記録します。listen 実行中にZammadが配信を試みても到達できない(ネットワーク障害)場合、イベントは記録されません。
  • Zammadがリスナーに到達できる必要があります。同一サーバー上のセルフホストZammadはデフォルトで動作します。LAN上の別マシンにあるZammadは listen --addr <lan-ip>:8789 --tls-cert <file> --tls-key <file> と https:// エンドポイントが必要です。Zammad CloudインスタンスはLAN上のマシンに到達できません。
  • ユーザーが新規または変更されたチケットにリアクションしたい場合に使用します。events list --since <cursor> で読み取り、返されたカーソルを保持します。チケットのテキストが必要な場合は tickets get <id> を実行します。
  • MCP経由では、events_list は記録されたイベントを読み取ります(読み取り専用、Zammadへの呼び出しなし)。webhooks_register と webhooks_unregister は confirm: true の場合のみZammadを変更します。listen はCLIのみです。

コマンドリファレンス

articles - チケット記事の読み取りと追加(メモとメール)

  • zammad-cli articles by-ticket - チケットの全記事を一覧表示
  • zammad-cli articles create - チケットに記事(メモまたはメール)を追加
  • zammad-cli articles get - IDで単一の記事を取得

groups - チケットルーティンググループ

  • zammad-cli groups get - IDでグループを取得
  • zammad-cli groups list - 全グループを一覧表示

kb - ナレッジベースのカテゴリと回答

  • zammad-cli kb answer-create - KB回答を作成。translations_attributes をJSONで渡し、公開または内部マークを行います。
  • zammad-cli kb answer-delete - KB回答を削除(KB編集者権限が必要)
  • zammad-cli kb answer-internal - KB回答を内部用にマーク(エージェントのみ)
  • zammad-cli kb answer-publish - KB回答を公開
  • zammad-cli kb category-create - KBカテゴリを作成。translations_attributes をJSONで渡します。
  • zammad-cli kb init - 完全なナレッジベースバンドル(カテゴリ、回答、翻訳)を取得。kb browse/search/get で使用されます。

organizations - 組織(顧客/パートナー)の読み取りと管理

  • zammad-cli organizations create - 組織を作成
  • zammad-cli organizations get - IDで組織を取得
  • zammad-cli organizations list - 組織を一覧表示(ページネーション対応)
  • zammad-cli organizations search - 名前またはカスタムフィールドで組織を検索
  • zammad-cli organizations update - 組織を更新

overviews - エージェントのチケット概要(保存済みビュー)

  • zammad-cli overviews get - IDで概要(とそのチケット)を取得
  • zammad-cli overviews list - 全概要を一覧表示

priorities - チケット優先度の参照(ID -> 名前マップ)

  • zammad-cli priorities - チケット優先度を一覧表示

states - チケット状態の参照(ID -> 名前マップ)

  • zammad-cli states - チケット状態を一覧表示

tags - チケットタグ

  • zammad-cli tags add - オブジェクトにタグを追加
  • zammad-cli tags all - インスタンスで定義されたすべてのタグを一覧表示(ボキャブラリ)
  • zammad-cli tags list - オブジェクトのタグを一覧表示(デフォルトはチケット)
  • zammad-cli tags remove - オブジェクトからタグを削除

tickets - Zammadチケットの読み取り、検索、作成、変更

  • zammad-cli tickets create - チケットを作成。タイトル、グループ、顧客、初期記事を指定します。
  • zammad-cli tickets delete - チケットを完全に削除(管理者/削除権限が必要)
  • zammad-cli tickets get - IDでチケットを取得
  • zammad-cli tickets list - チケットを一覧表示(ページネーション対応)
  • zammad-cli tickets search - Zammadクエリ構文でチケットを検索(例:'state:open owner_id:3')
  • zammad-cli tickets update - チケットを更新(状態、優先度、所有者、タイトル、組織)

users - ユーザー(エージェントと顧客)の読み取りと管理

  • zammad-cli users create - ユーザーを作成
  • zammad-cli users get - IDでユーザーを取得
  • zammad-cli users list - ユーザーを一覧表示(ページネーション対応)
  • zammad-cli users me - 認証されたユーザーを取得(認証セルフチェック)
  • zammad-cli users search - メール、名前、またはクエリ(例:organization_id:5)でユーザーを検索
  • zammad-cli users update - ユーザーを更新

agent-load

  • zammad-cli agent-load - 各エージェントの現在のチケット負荷を状態(オープン/ペンディング/バックログ)ごとに表示し、負荷が偏る前にワークバランスを調整できます。

agent-trend

  • zammad-cli agent-trend - 各エージェントのキューが過去N週間で増加または減少しているかを、オープン数とクローズ数の差分とともに表示します。

churn-risk

  • zammad-cli churn-risk - 各組織のチャーンリスクを、オープンバックログ、滞留チケット、未回答のペンディング、ネガティブ感情の顧客メッセージからスコアリングし、寄与因子をリストアップします。

customer-health

  • zammad-cli customer-health - オープンチケット数、最古オープン経過時間、再オープン率、速度、最終アクティビティから構築された健全性シグナルで組織をランク付けします。

escalate

  • zammad-cli escalate - 最近の顧客メッセージが不満を示していると思われるアクティブチケットを、ヒット数、経過時間、優先度でランク付けし、マッチしたスニペットを表示します。

feedback-scan

  • zammad-cli feedback-scan - チケットと記事のテキストを、機能リクエスト、価格、コンプライアンス、バグのテーマに分類し、ソースチケット参照とスニペットを表示します。

kb

  • zammad-cli kb browse - 初期バンドルから解析されたカテゴリ/回答ツリーとしてナレッジベースを表示します。

  • zammad-cli kb search - ライブKB初期バンドルからKB回答のタイトルと本文をテキスト検索します。

  • zammad-cli kb get - 初期バンドルからKB回答IDを解決し、完全な翻訳済み本文を取得します。

events

  • zammad-cli events list - webhooks listen がカーソル以降に記録したZammadイベントを、古い順に一覧表示します(ローカル、Zammadへの呼び出しなし)。

webhooks

  • zammad-cli webhooks register - webhooks listen を呼び出すZammad Webhookとトリガーを作成します(--yes でのみ書き込み)。
  • zammad-cli webhooks listen - Zammad Webhookを受信、検証、記録します(停止するまで実行、CLIのみ)。
  • zammad-cli webhooks status - 登録されたWebhookとトリガー、およびシークレットの出所を表示します(シークレット自体は表示しません)。
  • zammad-cli webhooks unregister - webhooks register で作成されたものを削除します(--yes でのみ書き込み)。

overdue

  • zammad-cli overdue - 期限を過ぎても new/open/pending 状態にある滞留チケットを、優先度で重み付けして表示します。最も深刻なものが上位に表示されます。

ticket

  • zammad-cli ticket note - 1行でチケットに内部メモまたはパートナー公開メモを追加します。コンテンツタイプのデフォルトは自動設定されます。

適切なコマンドを見つける

実行したいことは分かっているが、どのコマンドが該当するか分からない場合、CLIに直接問い合わせることができます。

zammad-cli which "<自分の言葉で機能を説明>"

which は自然言語の機能クエリを、このCLIの厳選された機能インデックスから最適なコマンドに解決します。終了コード 0 は少なくとも1つの一致があったことを意味し、終了コード 2 は一致するコマンドが見つからなかったことを意味します。

設定

以下の環境変数が設定されていることを確認してください。

  • ZAMMAD_URL - ZammadインスタンスのベースURL(例:https://support.example.com)
  • ZAMMAD_API_TOKEN - 有効なZammad APIトークン

CLIはこれらの変数が設定されていない場合、動作しません。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル