Self | Tech
25 Ago 2025  -  

Guía esencial: Claude Code y Container Use para desarrollo en entornos aislados en 2025

Tutorial: Claude Code y Container Use

En Pigmalion Software, la innovación tecnológica es parte de nuestro ADN. Por eso, compartimos este tutorial creado por Ernesto Ponce, uno de nuestros programadores líderes, reconocido por su experiencia en el desarrollo de soluciones ágiles y en la integración de herramientas de inteligencia artificial en entornos productivos.

Claude Code

Ernesto Ponce, Desarrollador líder en Pigmalion Software

Este es un tutorial en el cual vamos a ver un ejemplo paso a paso de cómo utiliza Claude Code en conjunto con contenedores (container-use), para poder ejecutar tareas en background que se estén ejecutando en un contenedor en un nuevo branch en Git. Un recurso imprescindible para equipos que buscan optimizar sus flujos de desarrollo, experimentar en entornos aislados y acelerar la entrega de nuevas funcionalidades.

  • Setup Claude Code
  • Crear proyecto API Go
  • Uso de Claude Code
  • Instalación de Container Use
  • Ejemplo de tarea en background container

Setup Claude Code

Claude es una herramienta que nos permite interactuar con un agente IA, usando los modelos de Anthropic Claude (Sonnet 4, Sonnet 3.7, etc) desde la terminal. De esta manera no dependemos de utilizar un editor en particular (VSCode, Cursor, Windsurf) aunque de todas maneras se puede conectar Claude Code a VSCode, Cursor en caso de que lo necesitemos.

Requisitos Previos

Como primer paso necesitamos tener Node.js instalado en nuestra máquina y ejecutar este comando:

npm install -g @anthropic-ai/claude-code

Configuración Inicial

Una vez instalado, Claude Code debe ser ejecutado dentro de la carpeta donde se encuentre nuestro proyecto, para esto vamos a crear una carpeta de esta manera:
mkdir claude-code-example && cd claude-code-example

Ejecutamos Claude:
claude

Nos va a pedir permisos, presionamos en Yes.

Opciones de Autenticación

Claude Code nos va a mostrar estas dos opciones:
  1. Suscripción en Claude
  2. Anthropic Account Console

En caso de tener una cuenta en Claude ya estariamos listos al elegir la primera opcion. De otro, tienen que seleccionar la segunda opción, en la cual Claude Code se va a encargar de configurar un acceso ApiKey automaticamente en nuestra cuenta.

Configuración Manual de API Key (Opcional)

En caso de tener un ApiKey ya generado previamente, existe la posibilidad de utilizarlo haciendo lo siguiente:
  1. Ir a la siguiente carpeta:
cd ~/.claude
  1. Crear o modificar el archivo settings.json con lo siguiente:
{
  "apiKeyHelper": "~/.claude/anthropic_key.sh"
}
  1. Crear el script:
nano anthropic_key.sh
  1. Agregar la API Key:
echo "sk-..."

Agregar permiso de ejecucion al script

chmod +x anthropic_key.sh

Una vez configurado nuestro ApiKey o cuenta, podemos acceder a Claude Code.

Claude Code Setup

Crear proyecto API go.

Para probar claude-code en conjunto con container-use , vamos a crear un proyecto de una API en Go. Go Documentation

En la carpeta creada anteriormente, claude-code-example, agregamos estos dos archivos.

go.mod

module goapi

go 1.23

main.go

package main

import (
    "encoding/json"
    "net/http"
)

type Response struct {
    Message string `json:"message"`
}

func helloHandler(w http.ResponseWriter, r *http.Request) {
    response := Response{Message: "Hello World"}
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(response)
}

func main() {
    http.HandleFunc("/hello", helloHandler)
    http.ListenAndServe(":8080", nil)
}

Ejecutar el servicio de esta manera:

go run main.go

Probamos que este todo Ok usando Curl via terminal:

curl http://localhost:8080/hello

Inicializar git (necesario para usar container-use)

git init
git add .
git commit -m "Initial commit"

Uso de Claude Code

Antes de arrancar con el uso de Claude Code, debemos crear un archivo de configuración CLAUDE.md para indicarle cuales son las instrucciones que debe seguir Claude Code en nuestras interacciones con el proyecto.

Dentro de Claude Code, ejecutar lo siguiente.

/init

Durante la ejecución de este comando, Claude Code les va a pedir permiso para ejecutar diferentes herramientas.

Archivo generado por Claude

Vamos a ver un ejemplo de como sería el uso de Claude Code desde la terminal, realizando cambios en nuestro branch actual.

Le pedimos claude que nos genere un endpoint que retorne la version actual de la API.

claude "Crea un endpoint que retorne la version  de la API, la version se define en un archivo llamado version.json"

A medida que se va generado el codigo, claude nos va mostrando los cambios que va realizando y la opcion de aceptar o modificar los cambios.

Cambios generados por claude

Este sería un flujo de uso básico de Claude Code, en donde vamos viendo los cambios de manera incremental y podemos aceptar o modificar los cambios que nos propone en el momento, lo cual sería algo similar a lo que se puede hacer con Copilot, Cursor o Windsurf pero desde la terminal.

En el próximo paso vamos a ver como podemos usar Claude Code para ejecutar tareas en background.

Claude code con Container use

Al momento si quisiéramos usar Claude Code para ejecutar alguna otra tarea fuera del branch en el que estamos trabajando, podríamos tener otra copia de proyecto en otra ruta y ejecutar Claude Code o ejecutar en un servidor o VM.

Pero de que manera podriamos delegar una tarea a Claude Code en nuestar maquina sin que afecte a nuestro branch o carpeta acutal en la que necesitemos trabajar en otras tareas?

Para esto podemos utilizar contenedores, los cuales nos permiten tener un entorno aislado para ejecutar tareas, probar ideas, librerías, refactors, etc.
vamos a utilizar un proyecto llamado container-use, el cual esta desarrollado por el equipo creador de Docker y posteriormente de Dagger.

Instalación de Container Use

Ejecutar el siguiente comando
curl -fsSL https://raw.githubusercontent.com/dagger/container-use/main/install.sh | bash

Una vez instalado cu, tenemos que configurar Claude Code para que utilice el servicio MCP de cu.

Más información sobre MCP: Model Context Protocol

en la carpeta del proyecto ejecutamos el siguiente comando:

claude mcp add container-use -- cu stdio

Agregar reglas de container use a CLAUDE.md

curl https://raw.githubusercontent.com/dagger/container-use/main/rules/agent.md >> CLAUDE.md

Crear tarea en background con container use

Una vez configurado container-user vamos a probar lo siguiente:

  • Crear tarea en background con container use, Claude Code
  • Revisar cambios realizados por claude code
  • Merger los cambios al branch principal

Vamos a pedirle a Claude Code que genere tests para los endpoints de nuestra API y además agregue una carpeta para los handlers/controladores de la API.

claude "Crea tests para los endpoints de la API y agrega una carpeta llamada controllers para los handlers de los endpoints,  usa container-use MCP"

Claude va a empezar una nueva sesión, con la diferencia de que esta vez va a utilizar el MCP cu (container-use) para ejecutar los cambios en un contenedor. A medida que va ir avanzando, nos va a pedir permismo para ejecutar diferentes tools.

Selecciones la segunda opción «Yes, and don’t ask again for container-use:environment_create», de esta menera en las próximas tareas ya no nos va a aparecer este mensaje.

Podemos ver cuales son los branchs creados por container user, con el siguiente comando:

cu list
ID                TITLE                           CREATED         UPDATED
devoted-squirrel  Go API Testing and Refactoring  5 minutes ago   11 seconds ago

Podemos ver los cambios realizados vía terminal

cu logs

Debido a que container-use genera un nuevo branch, también podemos ver los cambios haciendo un checkout al branch correspondiente:

A medida que se va generado el código, Claude Code nos va mostrando los cambios que va realizando y la opcion de aceptar o modificar los cambios, aca debemos elegir la segunda opción para que no vuelva a preguntar en las próximas tareas.

Una vez que estamos conformes con los cambios podemos hacer un merge al branch principal, de esta manera:

cu merge devoted-squirrel main

Cambios generados

Resumen

En este tutorial hemos aprendido a combinar Claude Code con Container Use para ejecutar tareas en paralelo y en un entorno aislado sin afectar nuestro branch principal.
  • Configuración inicial de Claude Code, incluyendo autenticación y uso de claude desde la terminal.
  • Creación de una API en Go y uso de Claude Code para agregar endpoints y pruebas de manera incremental.
  • Instalación y configuración de Container Use (cu) para delegar tareas en contenedores.
  • Ejecución de tareas en background con cu, incluyendo gestión de branches, visualización de logs y merges.

Claude Code

Volver a notas

Suscribite a nuestro newsletter

Descubre más desde Pigmalion Software

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo