fsi-parallel-stack

Generates a Docker Compose override to run parallel FSI stacks on shifted ports.

Updated Jul 7, 2026
One-click install
npx skills add https://github.com/bbenefield89/skills --skill fsi-parallel-stack-bbenefield89
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: fsi-parallel-stack
Source: https://github.com/bbenefield89/skills/tree/main/skills/fsi-parallel-stack
Command: npx skills add https://github.com/bbenefield89/skills --skill fsi-parallel-stack-bbenefield89

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? Running two FSI Docker stacks at once fails out of the box because of pinned container names, fixed host ports, and a shared untagged image. This Skill generates a throwaway Compose override that shifts one stack onto its own ports, container names, image tag, and log directory, so a git worktree branch runs beside the standard stack. ## Core Features & Use Cases - Port-offset override generation: A PowerShell script writes a docker-compose.ports-<tag>.yml file that offsets every host port by slot x 100, renames the seven pinned containers, and tags the image per branch. - Collision and trap handling: The script probes shifted ports for conflicts, applies the Compose !override tag to avoid the ports-append trap, and points Compose at the main repo's .env so FHIR token acquisition works in a worktree. - Use Case: You have the main FSI stack running on standard ports and need to test branch FACS-824 from a worktree. Run the script with -Slot 1, then start the stack with the printed command and verify both projects in docker compose ls. ## Quick Start Ask the agent to run the FSI stack from this worktree on a parallel slot alongside the existing standard-port stack.

Frequently Asked Questions about fsi-parallel-stack

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run two Docker Compose stacks at the same time?

Run the New-FsiStackOverride.ps1 script from the worktree root with a slot number, such as -Slot 1. It writes a Compose override that shifts every host port by slot x 100, renames pinned containers, and tags the image, then prints the exact up and down commands.

Why does docker compose up fail with port is already allocated?

Compose appends ports lists across multiple -f files instead of replacing them, so the stack tries to bind both the standard and shifted ports. The fix is the !override YAML tag on every ports list, which requires Docker Compose 2.24 or later.

Why do FHIR calls fail with DefaultAzureCredential errors in a git worktree?

The .env file holding AZURE_TENANT_ID, AZURE_CLIENT_ID, and AZURE_CLIENT_SECRET is gitignored, so git worktree add does not copy it. Point Compose at the main repo's file with --env-file C:/repos/Fsi/.env instead of copying secrets.

Can Docker Compose override remove a pinned container_name?

No, an override can set a value but cannot unset one. The generated override renames each pinned container with a -<tag> suffix instead, since container names are global to the Docker daemon and ignore the Compose project name.

How do I tear down a parallel FSI stack cleanly?

Re-run the script with the same -Slot value plus -Remove to delete the override file and its exclude entry. Then run the printed down command, and optionally remove the named volumes and the tagged fsiapi image. Never down a Compose project you did not start.