This repository provides a Dockerized environment for running Claude Code with SpecKit and a comprehensive set of custom agents. All agents are source-controlled within this repository for easy version management and team collaboration.
- Claude Code CLI pre-installed (official setup)
- SpecKit integration for structured development
- Custom slash commands for streamlined workflows:
- SpecKit commands: specify, plan, tasks, implement, analyze, clarify, checklist, constitution
- Captur commands: design-angular-feature, design-csharp-feature, implement-angular-feature, implement-csharp-feature, review-current-branch, devops-prompt-engineer
- Dev commands: design-backend, design-app, implement-backend, implement-app, prompt-engineer
- 24 custom agents organized by category:
- Coordination: orchestrator
- Implementation: python-backend-dev, react-typescript-specialist, stagehand-expert
- Research & Planning: angular-expert, azure-devops-pipelines-expert, azure-monitor-logs-expert, chatgpt-expert, csharp-expert, figma-expert, maui-expert, mcp-builder-expert, nextjs-expert, prd-writer, pull-requests-expert, shadcn-expert, system-architect, ui-designer, youtube-api-expert
- Testing: api-backend-tester, api-frontend-tester
- Setup & Tools: claude-code-setup-expert, docker-expert, speckit-expert
- Enhanced Developer Experience:
- Zsh shell with plugins (git, fzf) and auto-completion
- Git-delta for beautiful git diffs
- Persistent command history across sessions
- GitHub CLI (gh) pre-installed
- Full development toolset (jq, vim, nano, etc.)
- Security: Runs as non-root user with proper permissions
- Persistent workspace for your projects
- Git and essential development tools included
- Docker installed on your system
- Docker Compose (included with Docker Desktop)
- Anthropic API key (get one here)
git clone <repository-url>
cd ai-claude-code-dockerCopy the example environment file and add your API key:
cp .env.example .envEdit .env and replace your_api_key_here with your actual Anthropic API key:
ANTHROPIC_API_KEY=sk-ant-xxxxx
docker-compose up -d --builddocker-compose exec claude-code zshOr, attach to the running container:
docker attach claude-code-containerNote: The container uses zsh as the default shell with enhanced features like syntax highlighting and auto-completion.
Once inside the container, you can start Claude Code:
claude-codeai-claude-code-docker/
├── agents/ # All custom agents (source-controlled)
│ ├── coordination/
│ │ └── orchestrator.md
│ ├── implementation/
│ │ ├── python-backend-dev.md
│ │ ├── react-typescript-specialist.md
│ │ └── stagehand-expert.md
│ ├── research-planning/
│ │ ├── angular-expert.md
│ │ ├── azure-devops-pipelines-expert.md
│ │ └── ... (more agents)
│ ├── testing/
│ │ ├── api-backend-tester.md
│ │ └── api-frontend-tester.md
│ ├── claude-code-setup-expert.md
│ ├── docker-expert.md
│ └── speckit-expert.md
├── commands/ # All custom slash commands (source-controlled)
│ ├── captur/ # Captur-specific commands
│ │ ├── design-angular-feature.md
│ │ ├── design-csharp-feature.md
│ │ ├── implement-angular-feature.md
│ │ ├── implement-csharp-feature.md
│ │ ├── review-current-branch.md
│ │ └── devops-prompt-engineer.md
│ ├── dev/ # Development workflow commands
│ │ ├── design-backend.md
│ │ ├── design-app.md
│ │ ├── implement-backend.md
│ │ ├── implement-app.md
│ │ └── prompt-engineer.md
│ ├── agent_prompts/ # Agent prompt templates
│ ├── speckit.specify.md
│ ├── speckit.plan.md
│ ├── speckit.tasks.md
│ ├── speckit.implement.md
│ └── ... (more speckit commands)
├── workspace/ # Your projects go here (gitignored)
├── .env.example # Example environment variables
├── .gitignore
├── docker-compose.yml
├── Dockerfile
├── entrypoint.sh # Startup script for permissions
├── init-firewall.sh # Network sandboxing script
└── README.md
Your projects should be placed in the workspace/ directory, which is mounted as a volume. This ensures your work persists between container restarts.
# Inside the container
cd /workspace
mkdir my-project
cd my-project
# Start coding with Claude Code
claude-codeAll agents and slash commands are pre-loaded and ready to use.
Agents - Reference with @agent-name:
- Coordination: For orchestrating complex multi-step tasks
- Implementation: For hands-on coding in Python, React/TypeScript, and more
- Research & Planning: For architecture, design, and planning tasks
- Testing: For API and frontend testing
Slash Commands - Use with /command-name:
- SpecKit:
/speckit.specify,/speckit.plan,/speckit.tasks,/speckit.implement, etc. - Captur:
/captur:design-angular-feature,/captur:implement-csharp-feature,/captur:review-current-branch - Dev:
/dev:design-backend,/dev:implement-app,/dev:prompt-engineer
To update an agent or slash command:
- Edit the corresponding
.mdfile in theagents/orcommands/directory - Changes are immediately available (no rebuild needed, they're mounted as volumes)
- To make them permanent in the image, rebuild:
docker-compose down docker-compose up -d --build
- Add the new file to the appropriate subdirectory in
agents/orcommands/ - Restart the container (or rebuild for permanent inclusion)
- Commit the changes to keep them source-controlled
docker-compose up -ddocker-compose downdocker-compose up -d --builddocker-compose logs -f claude-codedocker-compose down -vYou can customize the container behavior by modifying environment variables in the docker-compose.yml file or by creating a .env file:
ANTHROPIC_API_KEY: Your Anthropic API key (required)NODE_ENV: Node environment (default: development)
./workspace:/workspace: Your project filesclaude-code-config:/home/node/.claude: Persistent Claude Code configurationcommand-history:/commandhistory: Persistent command history across sessions./agents:/home/node/.claude/agents:ro: Agents (read-only)
To use git inside the container with your credentials, uncomment these lines in docker-compose.yml:
# - ~/.gitconfig:/home/node/.gitconfig:ro
# - ~/.ssh:/home/node/.ssh:roEnsure your .env file is in the same directory as docker-compose.yml and contains a valid API key.
Verify that the agents are mounted correctly:
docker-compose exec claude-code ls -la /home/node/.claude/agents/The container runs as the node user (non-root) for security. If you encounter permission issues with the workspace, check file ownership. Files created in the container will be owned by the node user (UID 1000).
To contribute new agents or improvements:
- Fork the repository
- Make your changes to the agent files in
agents/ - Test the changes by rebuilding the Docker image
- Submit a pull request
[Specify your license here]
For issues related to:
- Claude Code: Visit Claude Code GitHub
- SpecKit: Visit the SpecKit documentation
- This Docker setup: Open an issue in this repository