personio-eng-monolith
Skills and conventions for working with the Personio monolith.
Installation
claude plugin install personio-eng-monolith@personio-claude-code-marketplace
What does this plugin do?
This plugin provides skills, tools, and guidance specific to the Personio monolith codebase. It covers patterns, conventions, and best practices for developers working in the monolith.
PHP LSP (Phpactor)
Integrates Phpactor to give Claude rich language intelligence for PHP files, including go-to-definition, find references, hover info, document symbols, and more.
What you need: phpactor installed and available on your PATH.
Installing Phpactor:
# macOS with Homebrew
brew install phpactor/tap/phpactor
# Or using Composer (recommended for PHP projects)
composer global require --dev phpactor/phpactor
If installed via Composer, ensure ~/.composer/vendor/bin (or ~/.config/composer/vendor/bin) is in your PATH.
What Claude can do with the LSP:
- Go to definition and implementation of symbols
- Find all references to a symbol
- Hover over symbols for type information
- List and search for symbols across the workspace
- Navigate call hierarchies (incoming and outgoing calls)
fix-flaky-test skill
End-to-end workflow for fixing flaky PHPUnit tests in the monolith — from ticket to merged-ready PR. Handles all three input forms: a Jira ticket ID, a raw PHPUnit failure dump, or a bare test FQCN.
What you need:
acliinstalled at/opt/homebrew/bin/acli(Atlassian CLI)ghCLI, authenticated (gh auth login)pupCLI for Datadog log search- Docker running (monolith-cli uses it)
Quick Start:
# From a Jira ticket
/fix-flaky-test MDX-2203
# From a FQCN (skill will create the Jira ticket for you)
/fix-flaky-test Personio\Core\Grpc\Tests\Integration\GrpcTimeoutTest::testSomething
# From pasted PHPUnit output
/fix-flaky-test FAILED Personio\Admin\Payroll\Tests\...\PayrollRunTest::testProcess
What the skill does:
- Reads the Jira ticket (or parses the FQCN/output directly)
- Verifies the test still exists; if not, comments on the ticket and transitions it to Won't Do
- Creates a Jira ticket when none was provided (FQCN / raw output path)
- Checks Datadog and CI logs for existing failure patterns
- Temporarily removes
markTestSkipped, runs the test 5× to confirm flakiness - Investigates root cause against a checklist (Faker, feature flags, sort order, time, WireMock, shared state…)
- Applies the minimal fix and re-runs 5× to confirm
- Opens a draft PR with before/after run counts in the body
- Self-evaluates and proposes concrete improvements to the skill
Why would you want this?
- One command, zero context-switching — no manual Jira, no manual
grep, no manual test-loop counting. - Safe by default — always creates a draft PR, never marks it ready.
- Handles the Won't Do case — if the test was already deleted, the ticket is closed automatically.
- Improves over time — the self-evaluation phase feeds back into the skill after each run.