team-sm

Skills and tools for the Subscription Management (SM) team at Personio — production firefighting, Datadog alert handling, and Slack incident response for the subscription-management-service.

Installation

claude plugin install team-sm@personio-claude-code-marketplace

What does this plugin do?

A home for Claude Code skills the SM team relies on during on-call rotations. All three skills speak to the same underlying domain (Chargebee subscriptions, payroll billing, SQS event processing, feature access sync) but enter from different surfaces — a Datadog alert, a Slack question, or an ad-hoc investigation request.

Required MCPs for full functionality: datadog-mcp, chargebee-data-lookup-live, chargebee-data-lookup-test, slack, atlassian. Each skill degrades gracefully when an MCP is missing and surfaces the relevant setup command.


sm-firefighter

Investigation, debugging, and reporting skill for the Subscription Management Service. Use it for payroll error reports, SLG order rejections, SQS/event processing failures, Chargebee webhook issues, feature access sync problems, or any "something is broken in subscriptions" request.

What you need:

  • datadog-mcp configured (production logs/traces)
  • chargebee-data-lookup-live and/or chargebee-data-lookup-test
  • Optionally slack (for sending reports)

Quick Start:

"Investigate this payroll error for company 4567"
"Why is this SQS message failing in subscription-management-service?"
"Look into the SLG rejection for sub_abc123"

How it works:

  1. Reads the ability router (references/investigation.md) to identify which sub-area the request belongs to.
  2. Loads only the matching ability file (payroll, SLG rejections, SQS failures, account duplication, CDOS deletion-stuck) — never all of them at once.
  3. Executes the investigation per the loaded ability — Datadog query templates, Chargebee state checks, escalation contacts.

The shared investigation references live under skills/sm-firefighter/references/ and are reused by sm-firefighter-responder.


sm-firefighter-responder

Investigates questions from Slack threads about SMS and posts confirmed, evidence-backed replies. Optionally captures the learning back into the matching Confluence sub-runbook.

What you need:

  • slack MCP (read thread + post reply). Without it, the skill produces a copyable message.
  • atlassian MCP (read runbook context + capture learnings). Without it, runbook stages are skipped.
  • datadog-mcp and Chargebee MCPs (same as sm-firefighter).

Quick Start:

"Answer this slack thread about a payroll error: https://personio.slack.com/archives/C04PLG/p1717..."
"Help me reply to this question — customer 1234 says feature access didn't update"
"Investigate and reply: [paste thread content]"

How it works:

  1. Ingests the thread (URL → Slack MCP, or pasted content).
  2. Loads the SM Firefighter Runbook (Confluence page 6568738821) for context.
  3. Routes through references/investigation.md (inside the sm-firefighter skill) and loads only the matching ability file.
  4. Drafts a Slack-formatted reply (bullets, *bold*, no # headers) and pauses for confirmation before posting.
  5. After posting, optionally integrates the learning into the matching sub-runbook (never the index page) — fetched as HTML, edited in place, updated in one call. No scripted HTML construction.

sm-alert-handler

Handles Datadog alerts by loading the correct Confluence runbook for the firing monitor and guiding the on-call engineer step by step. After resolution, captures new learnings back into the runbook.

What you need:

  • datadog-mcp (fetch monitor state)
  • atlassian MCP (read + update Confluence runbooks)

Quick Start:

"This alert is firing: https://app.datadoghq.eu/monitors/94028624"
"[SMS] High Error Logs is alerting — what do I do?"
"Handle this monitor for me — [SMS] Payroll Failures"

How it works:

  1. Fetches the monitor by URL or name to get its current status.
  2. Calls getConfluencePageDescendants on the SM Alerts Runbook parent (page 6569721859) to find the matching child runbook.
  3. Loads only the matching child page (or the template, if creating a new one).
  4. Walks through the Diagnosis Steps and matching Resolution from the runbook. Confirms before any external action when Safe to auto-fix is No.
  5. After resolution, closes the loop by integrating new learning into the existing structure — never appends a chronological log.

Contributing a skill to team-sm

Anyone on the SM team can add a skill to this plugin. To keep it coherent:

  • Prefix skill names with sm- to avoid global collisions with other plugins' skills.
  • The skill's description frontmatter must name the repo, service, or product area it applies to (e.g. subscription-management-service).
  • Add trigger and output evals under skills/<skill-name>/evals/ (≥10 should-trigger + ≥10 should-not-trigger + ≥3 output assertions).
  • Reference shared files via ${CLAUDE_PLUGIN_ROOT} when crossing skill boundaries — never hardcode absolute paths.