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:
- personio-web baseline (always): scope validation, decomposability, necessity checks, React + monorepo quality analysis, general anti-patterns (AP-11..AP-17).
- 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-webcheckout — the skill reads harmonization docs fromproduct-areas/payroll/docs/harmonization/. ghauthenticated againstPersonio-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.mdat 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.
ghCLI authenticated against Personio-Internal.- Optional:
aclifor 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 withgh 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
ghCLI authenticated againstPersonio-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.md→Personio-Internal/integration-serviceteams/prepay.md→Personio-Internal/payroll-serviceteams/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.