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-mcpconfigured (production logs/traces)chargebee-data-lookup-liveand/orchargebee-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:
- Reads the ability router (
references/investigation.md) to identify which sub-area the request belongs to. - Loads only the matching ability file (payroll, SLG rejections, SQS failures, account duplication, CDOS deletion-stuck) — never all of them at once.
- 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:
slackMCP (read thread + post reply). Without it, the skill produces a copyable message.atlassianMCP (read runbook context + capture learnings). Without it, runbook stages are skipped.datadog-mcpand Chargebee MCPs (same assm-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:
- Ingests the thread (URL → Slack MCP, or pasted content).
- Loads the SM Firefighter Runbook (Confluence page
6568738821) for context. - Routes through
references/investigation.md(inside thesm-firefighterskill) and loads only the matching ability file. - Drafts a Slack-formatted reply (bullets,
*bold*, no#headers) and pauses for confirmation before posting. - 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)atlassianMCP (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:
- Fetches the monitor by URL or name to get its current status.
- Calls
getConfluencePageDescendantson the SM Alerts Runbook parent (page6569721859) to find the matching child runbook. - Loads only the matching child page (or the template, if creating a new one).
- Walks through the Diagnosis Steps and matching Resolution from the runbook. Confirms before any external action when Safe to auto-fix is No.
- 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
descriptionfrontmatter 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.