team-eo-org
Skills and tools for the EO Org team at Personio.
Installation
claude plugin install team-eo-org@personio-claude-code-marketplace
What does this plugin do?
Claude Code skills for the EO Org team — covering two distinct use cases:
- OPS / data corrections — guided, safety-gated SQL workflows for data changes that the Personio UI doesn't support. Intended for anyone handling an OPS ticket, not just engineers.
- Engineering migration playbooks — step-by-step playbooks for cross-service code migrations. Intended for engineers working in the EO Org codebase.
OPS / Data corrections
These skills require the data-access CLI and a Jira OPS ticket. They walk you through each SQL step with explicit approval gates — no write runs without your confirmation.
move-le-registration-date
Moves a Legal Entity (LE) registration date to a future date via guided SQL steps. This change cannot be made through the UI.
What you need:
- data-access CLI available in your shell
- A Jira ticket (e.g.
OPS-1234) to attach to the data-access commands - An approver email in
{name}.{surname}@personio.deformat - Manager approval may be required to access the company data via
data-access auth request-company-access
Quick Start:
"Move the registration date for legal entity 42 to 2026-03-01"
"I need to push the LE registration date forward — it can't be done via UI"
"Help me with an OPS task: change LE 99 registration date to 2025-09-15 for company 500"
What it does:
Walks you through each step with full safety gates:
- Collects company ID, LE ID, Jira ticket, approver email, and new date
- Checks for employee assignments and payroll runs that predate the new registration date
- Shows you a SELECT of the current LE state and validates the new date is strictly after the current one
- Runs the UPDATE on
legal_entitieswith your explicit approval - Updates
org_attribute_historymilestones, with constraint-failure recovery if needed - Updates
attribute_historyin the payroll-org-entity-attributes-service (PEAS), if data exists - Guides you to trigger the Rundeck republish job for ECEs
Every write command requires its own explicit approval — no blanket authorisation.
Why would you want this?
- The Personio UI does not allow moving an LE registration date forward — this is the only supported path.
- The skill enforces the correct order of operations and prevents writes without prior reads.
- Safety gates at each step mean you stay in control; the skill halts completely if you decline any step.
move-pe-registration-date
Moves a Permanent Establishment (PE) registration date to a future date via guided SQL steps. This change cannot be made through the UI.
What you need:
- data-access CLI available in your shell
- A Jira ticket (e.g.
OPS-1234) to attach to the data-access commands - An approver email in
{name}.{surname}@personio.deformat - Manager approval may be required to access the company data via
data-access auth request-company-access
Quick Start:
"Move the registration date for permanent establishment 42 to 2026-03-01"
"I need to push the PE registration date forward — it can't be done via UI"
"Help me with an OPS task: change PE 99 registration date to 2025-09-15 for company 500"
What it does:
Walks you through each step with full safety gates:
- Collects company ID, PE ID, Jira ticket, approver email, and new date
- Fetches the current PE
valid_fromand linkedlegal_entity_id, then validates the new date is strictly after the current one - Checks that the linked Legal Entity's registration date is on or before the new PE date (a PE cannot predate its parent LE)
- Checks for payroll runs that predate the new registration date
- Runs the UPDATE on
permanent_establishmentswith your explicit approval - Updates
org_attribute_historymilestones, with constraint-failure recovery if needed - Updates
attribute_historyin the payroll-org-entity-attributes-service (PEAS), if data exists - Guides you to trigger the Rundeck republish job for ECEs
Every write command requires its own explicit approval — no blanket authorisation.
Why would you want this?
- The Personio UI does not allow moving a PE registration date forward — this is the only supported path.
- The LE date guard prevents creating data inconsistencies where a PE predates its parent Legal Entity.
- Safety gates at each step mean you stay in control; the skill halts completely if you decline any step.
Engineering migration playbooks
These skills are for engineers. They assume a local dev environment, gh CLI access to Personio-Internal, and familiarity with the EO Org codebase.
le-rest-to-grpc
Migrates Personio services from the deprecated Legal Entity JSON/REST API (org-management-json-api-v1) to the LegalEntityService gRPC API.
What you need:
ghCLI authenticated againstPersonio-Internal- Local clone of the target consumer repo at
~/dev/<repo-name>/ - A Jira migration ticket (e.g.
ORG-1234) and a feature flag name from the consuming team
Quick Start:
"Migrate payroll-documents from the LE REST API to gRPC"
"Let's do the next pending migration in the LE tracker"
"Update the LE REST to gRPC migration tracker — some PRs have merged"
"Which services are still calling /public/v1/legal-entities?"
What it does:
Three modes selectable at startup:
migrate— picks the next ⏳ Pending repo from the tracker (or a named repo), walks through all 16 steps: repo prep, call site discovery, gRPC dependency check, field mask determination, Shape A/B feature flag wiring, compile + lint + test, clean build, smoke test, draft PR creation, and tracker update.update tracker— checks whether 👀 In review PRs have merged and whether ⏳ Pending repos have been self-migrated, then updates the tracker in place.discover— searches GitHub for all consumers of the deprecated REST endpoints across the Personio org and produces aLE-REST-GRPC-MIGRATION-TRACKER.md.
Every migration is behind a feature flag. The skill enforces draft PRs, no lockfile commits, and mandatory log lines in every feature-flag branch.
Why would you want this?
- The playbook encodes 25+ hard-won gotchas from real migrations (pagination loops, blocking vs coroutine stubs, MockK edge cases, ktlint CI failures, etc.).
- Consistent PR descriptions and reviewer checklists across all consumer repos.
- Tracker keeps the full migration programme visible without manual bookkeeping.
Contributing a skill to team-eo-org
Anyone on the EO Org team can add a skill to this plugin. To keep it coherent as it grows:
- Use descriptive skill names that clearly identify the entity or workflow (e.g.
move-le-registration-date). Avoid generic names that could collide with other plugins' skills. - The skill's
descriptionfrontmatter must name the domain, service, or workflow it applies to. This is what lets Claude route prompts correctly. - Add trigger and output evals under
skills/<skill-name>/evals/— see the evals README for format and thresholds. - Place the skill under the right category in this README — OPS / data corrections for
data-access-based workflows, Engineering migration playbooks for developer-facing playbooks.