Archon docker-extend
git clone https://github.com/coleam00/Archon
T=$(mktemp -d) && git clone --depth=1 https://github.com/coleam00/Archon "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/docker-extend" ~/.claude/skills/coleam00-archon-docker-extend && rm -rf "$T"
.claude/skills/docker-extend/SKILL.mdDocker Extend
Sets up personal Docker tool customization using the project's gitignored override pattern. Your
Dockerfile.user and docker-compose.override.yml are yours — never committed to git.
Step 1: Detect Context
Determine if the user is in dev (source build) or deploy (GHCR) mode:
!
if [ -f docker-compose.yml ] && grep -q 'build: \.' docker-compose.yml 2>/dev/null; then echo "DEV_MODE: Building from source (root docker-compose.yml)"; elif [ -f deploy/docker-compose.yml ]; then echo "DEPLOY_MODE: Using GHCR image (deploy/docker-compose.yml)"; else echo "UNKNOWN_MODE: No docker-compose.yml found in root or deploy/"; fi
Decision:
→ work withDEV_MODE
+Dockerfile.user
(repo root)docker-compose.override.yml
→ work withDEPLOY_MODE
+deploy/Dockerfile.userdeploy/docker-compose.override.yml
→ ask the user which directory theirUNKNOWN_MODE
lives in before proceedingdocker-compose.yml
Step 2: Check Current State
DEV_MODE — check root files:
!
echo "=== Dockerfile.user ===" && (cat Dockerfile.user 2>/dev/null || echo "(not found — will create from example)") && echo "" && echo "=== docker-compose.override.yml ===" && (cat docker-compose.override.yml 2>/dev/null || echo "(not found — will create from example)")
DEPLOY_MODE — check deploy/ files:
!
echo "=== deploy/Dockerfile.user ===" && (cat deploy/Dockerfile.user 2>/dev/null || echo "(not found — will create from example)") && echo "" && echo "=== deploy/docker-compose.override.yml ===" && (cat deploy/docker-compose.override.yml 2>/dev/null || echo "(not found — will create from example)")
If both files already exist: Skip to Step 4 (add tools). If files are missing: Proceed to Step 3 (copy from examples). If example files are missing too: Tell the user the project hasn't added the example files yet and to check with the maintainers or the docs.
Step 3: Copy Example Files
Run only the copy commands for whichever files are missing. Do NOT overwrite existing files.
DEV_MODE:
# Only if Dockerfile.user does not exist: cp Dockerfile.user.example Dockerfile.user # Only if docker-compose.override.yml does not exist: cp docker-compose.override.example.yml docker-compose.override.yml
DEPLOY_MODE:
# Only if deploy/Dockerfile.user does not exist: cp deploy/Dockerfile.user.example deploy/Dockerfile.user # Only if deploy/docker-compose.override.yml does not exist: cp deploy/docker-compose.override.example.yml deploy/docker-compose.override.yml
After running the copy commands, confirm to the user which files were created.
Step 4: Add Tools
Parse
$ARGUMENTS for tool names (space-separated, e.g., vim ripgrep jq).
If tools were specified: Edit the appropriate
Dockerfile.user to add (or uncomment) the RUN apt-get install block with the requested packages. Use the Edit tool — do not rewrite the entire file.
The block to add/modify:
RUN apt-get update && apt-get install -y --no-install-recommends \ <tool1> \ <tool2> \ && rm -rf /var/lib/apt/lists/*
If no tools were specified: Show the user the file and ask which tools they want to add. Then edit the file accordingly.
Step 5: Rebuild
Show the user the rebuild command for their context. Do NOT run it automatically.
DEV_MODE:
docker compose build && docker compose up -d
DEPLOY_MODE:
cd deploy && docker compose build && docker compose up -d
Summary
Tell the user:
- Which files were created (if any)
- Which tools were added to
(if any)Dockerfile.user - The rebuild command to run when ready
- A reminder that
andDockerfile.user
are gitignored — they're personal and won't be committeddocker-compose.override.yml