team-payconnect

Claude Code toolkit for the PayConnect area at Personio. Payroll-aware skills for the preliminary, integrations, and money teams.

Installation

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

What does this plugin do?

Provides skills tuned to PayConnect teams' workflows.


/pr-review

Review a personio-web PR with two layered checks:

  1. personio-web baseline (always): scope validation, decomposability, necessity checks, React + monorepo quality analysis, general anti-patterns (AP-11..AP-17).
  2. Payroll harmonization (when the PR touches product-areas/payroll/): the payroll-domain anti-pattern catalog (AP-1..AP-10), consumer map, and placement contract.

The skill is scoped to Personio-Internal/personio-web and will short-circuit with a redirect message on any other repo. For language-agnostic reviews, use /pr-review-generic instead.

What you need

  • A personio-web checkout — the skill reads harmonization docs from product-areas/payroll/docs/harmonization/.
  • gh authenticated against Personio-Internal/personio-web.

Quick start

/pr-review 14494

Runs in interactive mode by default. After the review prints, an action menu lets you post the draft to GitHub or capture learnings.

For non-interactive runs (e.g. from automation):

/pr-review --unattended 14494

What gets loaded

On every run the skill reads:

  • CLAUDE.md at the project root.
  • Your project's per-user review-learnings memory (auto-derived path: $HOME/.claude/projects/$(pwd | tr '/.' '--')/memory/review-learnings.md). Captures corrections and domain-specific learnings between sessions; created on first save.
  • product-areas/payroll/docs/harmonization/anti-patterns.md — the canonical AP-1..AP-17 catalog.

If the PR touches product-areas/payroll/, the skill additionally loads:

  • product-areas/payroll/docs/harmonization/README.md — architectural model (Shell · Foundation · Extensions · Sibling stack), decision flowchart.
  • product-areas/payroll/docs/harmonization/consumer-map.md — provider × shared-surface matrix.
  • product-areas/payroll/docs/harmonization/code-locations.md — placement contract per location.
  • product-areas/payroll/docs/harmonization/process.md — Frame/Shape responsibilities and PR-time path triggers.

These docs live in personio-web and are the source of truth for placement decisions and the AP catalog.


/firefighter

Run the weekly firefighter check for one of the PayConnect teams. Scans Datadog, Jira (bugs only), Slack channels, and PRs in scope per the team's config; produces a prioritised P1/P2/P3 + awareness list.

What you need

  • Datadog, Atlassian, and Slack MCP plugins connected.
  • gh CLI authenticated against Personio-Internal.
  • Optional: acli for batch Jira operations.

Quick start

Start of the week (full scan), team named:

/firefighter integrations
/firefighter prepay
/firefighter money

Mid-week delta rescan (only what's new since the last scan):

/firefighter integrations delta

If you omit the team, the skill will ask. The skill also activates on natural-language phrases like "FF check", "any new firefighter issues?", "I'm on firefighter duty for money this week, what do I need to look at?".

Per-team configuration

Each team has its own config file at skills/firefighter/teams/<team>.md with:

  • Datadog on-call notification handle and active-alert query
  • Jira project key, JQL queries, and dashboard links
  • Slack channel IDs and per-channel priority
  • Services owned (for log/code search hints)
  • Team-specific scope notes (false-positive patterns, who to route to, etc.)

Currently:

  • teams/integrations.md — populated
  • 🚧 teams/prepay.md — template, needs prepay team to fill in
  • 🚧 teams/money.md — template, needs money team to fill in

To add or update a team's config, edit the matching file and open a PR. The framework (scope rules, output format, workflow) lives in SKILL.md and applies to every team.

Output

Four-tier prioritised list:

  • 🔴 P1 — Active firefighter action required
  • 🟡 P2 — Watch / investigate
  • 🟢 P3 — Bug backlog (triage hygiene)
  • 🔵 No-action awareness — also surfaces "Related cluster" lines when ≥2 items share an obvious thread (recurring theme, same root-cause hypothesis)

Each item links to the source (Jira ticket, GitHub PR, Slack permalink) so you can click through.

On Friday, the skill appends a 📋 Friday handover note for next week's firefighter — open in-flight items, teammate assignments, follow-up PRs, recurring patterns, and any MCP gaps to flag.

Framework rules (apply to every team)

These behaviours are baked into SKILL.md:

  • The skill applies whatever issue-type, priority, and product-surface scope each team's config defines. There is no hard-coded priority bar — each team sets its own.
  • PRs are tiered: directly assigned to you (P1/P2), >1d-stale via the SLA bot (P3 awareness), or no action.
  • Datadog log retention is ~7 days; the skill phrases gaps as "no occurrences in available logs".
  • Verify Slack threads with slack_read_thread, PR state with gh pr view, and Jira current status before flagging anything.
  • Security findings (SLA-breached) are monitored via the developer-portal dashboard linked in each team's config — part of the firefighter scan, not an opt-in. SEC Slack notifications are treated as fallbacks.

Each team's specifics (priorities in scope, product-surface tiers, etc.) live in their teams/<team>.md file. The integrations file currently encodes:

  • Bugs only, priority in Highest, High, Medium (Low is out of scope).
  • Three correctness-scope tiers: Business as usual (DATEV, Loket), Temporary KTLO (EOR/A3/Xero/payroll exports/Marketplace), Full Stop (Tax Advisor Platform).

Prepay and money teams should set their own equivalent rules when populating their team configs.


/renovate-sweep

Process open Renovate dependency PRs for a PayConnect team. Diagnoses shared/systemic failures first, brings stale/red branches to green via the GitHub update-branch API plus Gradle lockfile regeneration, attempts bounded code fixes for genuine post-rebase failures (including major bumps), and surfaces major-bump PRs for human approval with ready-to-run gh commands.

Why PRs pile up: The org's automerge fires only on green PRs. When a Renovate branch is behind master, CI fails with a Kotlin kapt/FIR crash that looks like a real failure but is usually a side effect of (a) the branch being behind, (b) stale Gradle lockfiles relative to master's version catalog, or (c) a dependency master already fixed being unpinned on the branch. The skill clears these en masse.

Diagnose-the-batch-first: when ≥3 PRs share the same failing check + error, the skill identifies the one systemic cause before grinding PR-by-PR — and if the root cause lives on master, it surfaces that for a master-first fix rather than rebasing 12 PRs into the same wall.

Auto-merge behaviour: minor and patch PRs are left to the org's automerge once green. Only major-bump PRs require a human approval — the skill emits gh pr review --approve + gh pr merge --auto --squash blocks for the operator to run. (On merge-queue repos where even minor/patch need an approval to enter the queue, the skill only runs the approve commands on explicit operator instruction.)

Execution notes: the skill avoids known sharp edges — gh inside nested shells fails TLS in the sandbox (it issues gh directly and runs long CI polls as a backgrounded sandbox-disabled loop), it never re-triggers CI when a re-poll suffices, and it leaves PRs already in the merge queue untouched (a queued branch can't be pushed to).

What you need

  • gh CLI authenticated against Personio-Internal.

Quick start

/renovate-sweep integrations
/renovate-sweep prepay
/renovate-sweep integrations --limit=5

The skill also activates on natural-language phrases like "разгреби renovate PR", "sweep dependency PRs for integrations", "process the renovate bot PRs".

Per-team repos

Repos to scan are listed in ## Renovate repos sections inside the firefighter team configs:

  • teams/integrations.mdPersonio-Internal/integration-service
  • teams/prepay.mdPersonio-Internal/payroll-service
  • teams/money.md → not configured (money team is still a TEMPLATE stub)

Voice

The /pr-review and /firefighter outputs are written in a senior-engineer voice: short sentences, no hedging, no em dashes, no preambles. The full voice guide is inside the skill. Future revisions may expose it as a user-overridable style profile.

Maintenance

Owned by the PayConnect engineering teams. Issues, suggestions, or contributions welcome as a PR against this plugin.

Personio Claude Code Marketplace