From dev-tools
Scaffold a new project's devcontainer setup so `drone up` works immediately. Use this skill whenever the user wants to create a new project, set up a devcontainer, bootstrap a development environment, initialize a project for containerized development, or mentions needing docker-compose.yml / Dockerfile / devcontainer.json for a new project. Also trigger when the user says 'new project', 'start a project', 'set up dev environment', or 'make this work with drone up'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dev-tools:bootstrap-projectThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill generates the `.devcontainer/` directory for a new project so that `drone up` works out of the box. Every project uses a shared base Docker image that provides the standard dev toolchain (zsh, neovim, tmux, git, ssh, node.js, claude-code CLI) and mounts the user's dotfiles into the container.
This skill generates the .devcontainer/ directory for a new project so that drone up works out of the box. Every project uses a shared base Docker image that provides the standard dev toolchain (zsh, neovim, tmux, git, ssh, node.js, claude-code CLI) and mounts the user's dotfiles into the container.
Read the reference templates to understand the current base image and mount conventions:
references/Dockerfile.template — project Dockerfile that extends the basereferences/docker-compose.template.yml — standard volume mounts and service configreferences/devcontainer.template.json — VS Code / devcontainer CLI configThese templates reflect Noah's actual working setup across multiple projects. Follow them closely.
Before generating files, gather these details (use AskUserQuestion):
/workspace but could be /development for legacy projects.env files to reference?Generate three files in <project-root>/.devcontainer/:
Extends the shared base image. Only add project-specific deps.
# Extends the shared base devcontainer image.
# Base provides: zsh, neovim, tmux, git, ssh, node.js, claude-code CLI.
#
# To rebuild the base locally:
# docker build -f ~/.config/dotfiles/devcontainer/Dockerfile.base -t devcontainer-base:local .
FROM devcontainer-base:local
# Project-specific deps
# (adjust based on the project's language/framework)
RUN apt-get update && apt-get install -y --no-install-recommends \
<project-specific-packages> \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
If the project has no extra system deps beyond what the base provides, the Dockerfile can just be:
FROM devcontainer-base:local
WORKDIR /workspace
Always include the standard dotfile mounts block. Add project-specific services as needed.
Key rules:
devcontainer (drone's container lookup greps for this)command: sleep infinitySSH_AUTH_SOCK environment variableIf extra services are needed (databases, etc.), add them with appropriate health checks and use depends_on with condition: service_healthy on the devcontainer service.
Standard config pointing at docker-compose.yml. Key rules:
features: {} — the base image handles everything, no devcontainer features neededpostCreateCommand should fix SSH permissions and install project depsshutdownAction: "stopCompose"updateRemoteUserUID: trueRemind the user:
docker build -f ~/.config/dotfiles/devcontainer/Dockerfile.base -t devcontainer-base:local .
drone up <project-name> should work immediatelydrone updev with UID/GID 1000 (inherited from the base image)/home/dev/ inside the containerdevcontainer-base:local (built locally from dotfiles)drone up / drone down / drone status are the CLI commands for managing devcontainers (part of borg-collective).devcontainer/docker-compose.yml — drone up enforces this__USERNAME__ as a placeholder for the host user's username. When
generating devcontainer files, replace __USERNAME__ with the actual username (the output of
whoami or $USER on the host machine)Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub noah-goodrich/claude-plugins --plugin dev-tools