Skip to content
Development
Skill

/docker-extend

Use when: User wants to extend Docker with custom tools, personalize the Docker environment, or set up user-specific Docker customization. Triggers: 'extend docker', 'docker-extend', 'add tools to docker', 'customize docker', 'add my tools to the container', 'personalize docker

From plugin
archon
23k14 skills13 agents19 commands
Install
$ npx -y skills add coleam00/Archon --skill docker-extend --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/docker-extend

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when: User wants to extend Docker with custom tools, personalize the Docker environment, or set up user-specific Docker customization. Triggers: 'extend docker', 'docker-extend', 'add tools to docker', 'customize docker', 'add my tools to the container', 'personalize docker

SKILL.md

docker-extend.SKILL.md
name: docker-extend
description: |
  Use when: User wants to extend Docker with custom tools, personalize the Docker environment,
  or set up user-specific Docker customization.
  Triggers: 'extend docker', 'docker-extend', 'add tools to docker', 'customize docker',
            'add my tools to the container', 'personalize docker setup', 'docker user setup',
            'install tools in docker'.
  Does: Interactively sets up Dockerfile.user and docker-compose.override.yml so users can
  add personal tools to their Docker environment without affecting maintainer files or
  committing user-specific config to git.
argument-hint: '[optional: tools to install, e.g. "vim ripgrep jq"]'

Docker 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:**

  • `DEV_MODE` → work with `Dockerfile.user` + `docker-compose.override.yml` (repo root)
  • `DEPLOY_MODE` → work with `deploy/Dockerfile.user` + `deploy/docker-compose.override.yml`
  • `UNKNOWN_MODE` → ask the user which directory their `docker-compose.yml` lives in before proceeding

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: 1. Which files were created (if any) 2. Which tools were added to `Dockerfile.user` (if any) 3. The rebuild command to run when ready 4. A reminder that `Dockerfile.user` and `docker-compose.override.yml` are gitignored — they're personal and won't be committed

Read more
Ships witharchon

The first open-source harness builder for AI coding. Make AI coding deterministic and repeatable.

Get the whole plugin

Other skills on archon.