team-personio-payroll
Claude Code skills for the Personio Payroll team — covering the firefighting cycle from triage queue management and real-time monitoring through deep root-cause analysis.
Installation
claude plugin install team-personio-payroll@personio-claude-code-marketplace
What does this plugin do?
Eight skills built around the PAYBUG workflow. Triage & classification skills manage the queue and assign product area, feature, and firefighter. Status & monitoring skills surface high-priority, unassigned, and stale bugs at a glance. Analysis & reporting skills run root-cause analysis across features, product areas, and DEUEV-specific bugs, producing investigation files and Jira-ready summaries.
All skills are read-only with respect to production systems. Triage may post Jira comments and Slack drafts for your review before sending.
Triage & Classification
/triage-paybug
Triage a single PAYBUG — or the oldest untriaged bug from the queue if no ticket key is given. Determines Product Area and Feature, identifies the responsible firefighter, gathers Jira and Slack context, runs DEUEV deep research when relevant, writes a local investigation file, and posts a structured comment to the Jira ticket. It also proposes a priority (always through the approval gate). Bugs are downgraded to Low when they lack the jira_escalated customer-reported label, or are clearly low-impact (single customer, don't block payroll approval, no related tickets) — the latter can downgrade even a bug that carries the jira_escalated label. Bugs are upgraded to High when the text indicates they block payroll approval, or when a customer escalation is explicitly mentioned (the latter is flagged as requiring human review, since it's inferred from free text). High rules take precedence over the Low ones. This keeps the priority-based status queues (high-priority-paybugs, stale-paybugs) focused on bugs that genuinely warrant attention without those queues carrying a label filter of their own.
What you need:
- Atlassian MCP authenticated (Jira read/write)
- Slack MCP authenticated
ghCLI authenticated againstPersonio-Internal
Quick start:
/triage-paybug PAYBUG-12345
/triage-paybug
The no-argument form picks the oldest bug in Triage status. Pass a ticket key to triage a specific bug or re-triage an already-analyzed one.
What you get:
$PAYBUG_INVESTIGATION_DIR/PAYBUG-<n>.md(default~/.claude/team-personio-payroll/investigation/PAYBUG-<n>.md) — full investigation file with context, signals, and classification- Jira comment posted to the ticket with product area, feature, firefighter, and summary (marked 🤖)
- Slack draft saved for the firefighter mention, ready to send
/paybugs-to-be-triaged
Lists all PAYBUGs currently awaiting triage (status Open or Triage), sorted by priority, with the latest update (newest of the latest Jira comment and the latest Slack reply). Optionally auto-triages the first bug without a confirmation prompt.
What you need:
- Atlassian MCP authenticated
- Slack MCP authenticated
Quick start:
/paybugs-to-be-triaged
/paybugs-to-be-triaged auto-triage-first-one
Status & Monitoring
/high-priority-paybugs
Real-time dashboard of all open Blocker, Critical, Highest, and High PAYBUGs (excluding Root Cause Analysis status). Shows priority, status, and assignee. Every bug gets a real one-line "Latest Update" from its most recent Jira comment; bugs that have gone stale (no Jira update in the last 24 hours, matching the stale-paybugs threshold for High and above) are additionally cross-checked against the latest Slack reply, using whichever is newer (or a combination). Flags unassigned bugs, bugs with no recent discussion, and SLA breaches.
What you need:
- Atlassian MCP authenticated
- Slack MCP authenticated
Quick start:
/high-priority-paybugs
/unassigned-paybugs
Lists all open PAYBUGs with no assignee, alongside the latest update (newest of the latest Jira comment and the latest Slack reply). Highlights high-priority bugs needing an owner urgently, bugs with mentioned deadlines, and bugs with no discussion at all.
What you need:
- Atlassian MCP authenticated
- Slack MCP authenticated
Quick start:
/unassigned-paybugs
/stale-paybugs
Identifies bugs that have gone quiet, using priority-specific thresholds: 24 hours for High and above, 3 working days for Medium, 10 working days for Low, 20 working days for Root Cause Analysis. Staleness counts both Jira updates and human Slack replies, and the Latest Update column shows whichever is newer between the latest Jira comment and the latest Slack reply. After displaying the table, offers to draft Slack follow-up messages for both assigned and unassigned bugs.
What you need:
- Atlassian MCP authenticated
- Slack MCP authenticated
Quick start:
/stale-paybugs
/pay-unacked-messages-report
Pulls all unacknowledged inbound messages older than 1 day from the ITSG client service DB, enriches each row with its procedure group, and prints a formatted table to the terminal. Ordered by age ascending (youngest first).
Procedure group derivation:
- For messages with a
file_name: extracts the marker at chars 1–3 and maps viaMessageProcedure(e.g.ESAG…→ DSAK,EDSV…→ DSVV,EEAA…→ EAU,EEEL…→ EEL). - For
REGRESSION_ORCHESTRATORmessages with nofile_name: usesbusiness_process_referenceas anActionand maps viaAdminPanelProcedure(e.g.DSAS_CASE1_ONBOARDING→ UV).
What you need:
data-accessCLI installed and authenticated
Quick start:
/pay-unacked-messages-report
What you get:
- Terminal output with title "Inbound Unacked Messages", generation timestamp, an 8-column table (Age, Procedure Groups, Response ID, Data Center ID, ITSG Environment, File Name, Received At, Acknowledged At), and a
🤖 Generated with AIfooter
Analysis & Reporting
/analyze-paybugs-by-feature
Aggregates all customer-reported PAYBUGs for a single Feature over a date range. Builds monthly volume charts split by resolved vs. open, then runs per-bug root-cause analysis (RCA) on resolved tickets — verdict on code changes, recurrence risk, catchable signals, and regression detection. Outputs individual RCA files and an aggregated summary with keyword clustering. Enriches results with payroll-mode context from a built-in LE × period lookup.
What you need:
- Atlassian MCP authenticated
- Slack MCP authenticated
ghCLI authenticated againstPersonio-Internal
Quick start:
/analyze-paybugs-by-feature "Payroll Calculation" 2025-01-01 2025-03-31
/analyze-paybugs-by-feature "DEUEV"
Dates default to the previous calendar month when omitted.
What you get:
$PAYBUG_INVESTIGATION_DIR/feature-analysis/<feature>/PAYBUG-<n>.md— per-bug RCA file$PAYBUG_INVESTIGATION_DIR/feature-analysis/<feature>/summary.md— aggregated report with charts and clustering
/analyze-paybugs-by-area
Analyzes all PAYBUGs in a Product Area for a given month. Clusters by Feature, error message, recurring legal entity or employee, and linked parent issues. Enriches the top hotspots with Slack context.
What you need:
- Atlassian MCP authenticated
- Slack MCP authenticated
Quick start:
/analyze-paybugs-by-area "Payroll Native Germany" 2025-03
/analyze-paybugs-by-area "Payroll Native Germany"
Month defaults to the previous calendar month when omitted.
What you get:
$PAYBUG_INVESTIGATION_DIR/area-analysis/<pa>-<YYYY-MM>.md— full area report with clusters and hotspot detail
/analyze-deuev-bug
Deep read-only analysis for a single DEUEV-related PAYBUG. Cross-references the Jira ticket, the unresolved backlog across both the DEUEV gaps epic (PAYSI1-1796) and the Operational Excellence epic (PAYSI1-1944), the DEUEV test-case Google Sheet, and the payroll-native-germany codebase. Produces a verdict from a fixed set: Known gap tracked / Unknown gap / Implementation defect / Missing test case / Partially implemented / Inconclusive.
What you need:
- Atlassian MCP authenticated
- Slack MCP authenticated
- Read access to the
payroll-native-germanyrepository - Access to the DEUEV test-case Google Sheet
Quick start:
/analyze-deuev-bug PAYBUG-12345
What you get:
$WORKDIR/<ticket>/deuev-analysis.md(default/tmp/investigation/<ticket>/deuev-analysis.md) — full markdown report with evidence, verdict, and a Slack-ready summary block. Lands next to the JSON dumps thepayroll-firefighter-toolboxscripts produce for the same ticket.
Configuration
$PAYBUG_INVESTIGATION_DIR — shared output folder
The /triage-paybug, /analyze-paybugs-by-feature, and /analyze-paybugs-by-area skills all write their reports under one shared folder so they can find each other's output from any working directory.
- Default:
~/.claude/team-personio-payroll/investigation/ - Override: export
PAYBUG_INVESTIGATION_DIR(e.g. in your shell rc) to point at a different folder.
/analyze-deuev-bug is not part of this — it intentionally uses $WORKDIR (default /tmp/investigation/) so its report sits next to the per-ticket JSON dumps the payroll-firefighter-toolbox shell scripts produce.
Maintenance
Owned by the Personio Payroll team. Issues, suggestions, or contributions welcome as a PR against this plugin.