align-mule3-repoAlign a freshly-imported `mule3-<country>` GitHub repo with the conventions shared by `mule3-benin` / `mule3-colombia`: GitHub Actions CI/CD (replacing any Jenkinsfile), Dockerfile that consumes a host-built artifact, npm `standard-version` sourced from the propagator's packages-branch tarball, `dev
bitbucket-jenkins-to-github-actionsMigrate a repository from Bitbucket+Jenkins to GitHub+GitHub Actions, including git history, branches, tags, CI/CD pipeline conversion (Jenkinsfile → ci-cd.yml), helm chart updates, branch deletion ruleset, and post-migration validation. Asks clarifying questions and handles external dependencies in
cas-to-keycloak-add-serviceAdd the Keycloak service to an eRegistrations instance that currently uses CAS authentication. Inserts the keycloak service block into the country's docker-compose.yml / docker-stack.yml (docker-compose or swarm shape) and the keycloak ACLs + backends into the haproxy.cfg. Idempotent — if a keycloak
cas-to-keycloak-migrate-appsFlip an eRegistrations country instance's application services from CAS to Keycloak. Removes the cas-backend / cas-frontend / partc-backend / partc-frontend service blocks from the compose, removes CAS/PARTC ACLs + backends from the haproxy, and updates each remaining service's env vars (KEYCLOAK_*,
cas-to-keycloak-orchestratorEnd-to-end orchestrator for the CAS → Keycloak cutover. Walks the ten-phase chain (verify → add-service → prepare-realm → fetch → seed → deploy → migrate-apps → backfill → rewrite-bpa-postgres → rewrite-camunda-role-groups) by invoking the sibling skills via the Skill tool, threading context (resolv
cas-to-keycloak-prepare-realmPrepare a Keycloak realm JSON configuration file by substituting all `*_PLACEHOLDER` tokens in the canonical starter-conf template with concrete values (realm code, domain, OAuth client IDs, generated client-secret UUIDs, SMTP config). Writes the realm.json to the target country's `Conf-<ENV>/compos
cas-to-keycloak-rewrite-bpa-postgresRewrite legacy PARTC integer institution_id / unit_id values in BPA's own postgres to the corresponding Keycloak group UUIDs after a CAS-to-KC migration. Required cutover step — without it, BPA-frontend's institution picker calls KC `/admin/realms/<R>/groups/{id}/children` with stale PARTC integers
cas-to-keycloak-rewrite-camunda-role-groupsRewrite legacy CAS-style tokens (`i<partc_id>[_<role>]`, `u<partc_id>[_<role>]`, bare unit ids) in Camunda's `ereg_service_role_group` table to the Keycloak group UUIDs created by the CAS-to-KC migration. Required cutover step — without it ds-backend's institution filter (`apps/utilities/institution
cas-to-keycloakEnd-to-end CAS → Keycloak user / role migration pipeline for eRegistrations country instances. Three operational modes: `fetch` (dump cas + partc schemas from a source Postgres via ssh + sudo), `seed` (run a throwaway Docker stack that imports the realm JSON and produces an enriched `sql/keycloak.sq
correct-db-passwordsGenerate a script that resets PostgreSQL and MongoDB user passwords on the DB hosts backing an eRegistrations stack to match the values in the host's `.env` file. Handles BOTH the legacy compose shape (variable-driven — `=$BPA_POSTGRES_DB_USER`, `=$BPA_POSTGRES_DB_PASSWORD`) and the swarm post-clean
create-draft-instanceCreate a draft (UAT) instance configuration for an eRegistrations LIVE instance, and wire the LIVE side to point at it. Strips LIVE-only services (keycloak, bpa-*, websocket, public-pages-*), adds the publisher service, rewrites own-domain refs to `draft.<base>.eregistrations.org`, keeps cross-refs
decrypt-edit-encryptWalk an operator through the decrypt then read/edit then re-encrypt cycle for `.env.enc` and `.secrets.enc` files (and any sibling) protected with `openssl enc -aes-256-cbc -pbkdf2`. Auto-discovers `*.enc` files in the target directory, verifies the plaintext sibling is git-ignored before decrypting
docker-swarm-migrationConvert Docker Compose files to Docker Swarm stack format for eRegistrations deployments. Handles env var replacement, secrets management, init-swarm.sh generation, reference stack validation, and dry-run preview. Use when migrating docker-compose.yml to docker-stack.yml, adding deploy sections, con
env-to-docker-secretGenerate `env-to-secrets.sh`, a self-contained converter that reads a `.env` file (`KEY=VALUE` lines) and emits a `.secrets` file containing one `printf '%s' 'VALUE' | docker secret create KEY -` line per entry. Skips comments and blank lines, strips surrounding single/double quotes from values (sta
prepare-instance-for-liveGenerate `prepare-instance-for-live.sh` — a self-contained bash script that prepares a prelive eRegistrations instance for go-live by clearing all runtime/published artifacts. Drops and recreates the Camunda and ds-backend (`display_system`) Postgres databases (Camunda's `schema-update: true` re-boo
release-platformCut a new platform release across all 28 eRegistrations repositories. Creates `release/<version>` branches from `develop`, pushes them, and bumps the minor version on `develop` in every repo. Supports `--dry-run` to preview without mutating, and an optional repo filter to operate on a subset. Usage
upgrade-2.13-to-2.14Upgrade a single eRegistrations instance under `Conf-<UPPER_ENV>/compose/<country>/docker-stack.yml` from 2.13 to 2.14, where `<env>` is one of dev/test/preview/prelive/live. This is the largest mechanical step in the chain: bumps every `unctad/<service>:$<VAR>_VER` (or pinned semver) image to `:RC`
upgrade-2.14-to-2.15Upgrade a single eRegistrations instance under `Conf-<UPPER_ENV>/compose/<country>/docker-stack.yml` from 2.14 to 2.15, where `<env>` is one of dev/test/preview/prelive/live. Bumps `EREGISTRATIONS_VERSION` from `2.14` to `2.15` everywhere it appears (typically on bpa-frontend and ereg-cms-frontend).
upgrade-2.15-to-2.16Upgrade a single eRegistrations instance under `Conf-<UPPER_ENV>/compose/<country>/docker-stack.yml` from 2.15 to 2.16, where `<env>` is one of dev/test/preview/prelive/live. Bumps unctad image tags from `:RC` to `:BETA`, version-bumps `EREGISTRATIONS_VERSION` and `BUILD_TYPE` env vars, renames `RES
upgrade-2.16-to-2.17Upgrade a single eRegistrations instance under `Conf-<UPPER_ENV>/compose/<country>/docker-stack.yml` from 2.16 to 2.17, where `<env>` is one of dev/test/preview/prelive/live. Bumps unctad image tags from `:BETA` to `:2.17`, applies the BPA/DS/GDB service renames that landed in 2.17, pins floating `:
upgrade-2.17-to-2.18Upgrade a single eRegistrations instance under `Conf-<UPPER_ENV>/compose/<country>/docker-stack.yml` from 2.17 to 2.18, where `<env>` is one of dev/test/preview/prelive/live. Bumps standard unctad images, moves the minio server to pgsty/silo (pinned on LIVE) with the new healthcheck, and removes dep
upgrade-eregistrations-instanceOrchestrator for upgrading a single eRegistrations instance to a target platform version. Resolves the instance from a natural-language phrase like "lesotho test" or "syria2 test 2.18", auto-detects the source version from `unctad/*` image tags (with `EREGISTRATIONS_VERSION` as the tiebreaker betwee