claudepod 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/config/claude/mcp.json +77 -0
- package/.devcontainer/config/claude/mcp.json.backup +77 -0
- package/.devcontainer/config/claude/mcp.json.template +118 -0
- package/.devcontainer/config/claude/output-styles/strict-development.md +158 -0
- package/.devcontainer/config/claude/settings.json +4 -173
- package/.devcontainer/config/claude/system-prompt.md +3 -0
- package/.devcontainer/config/searxng/ods_config.json +16 -0
- package/.devcontainer/config/searxng/searxng_env_template +71 -0
- package/.devcontainer/config/serena/serena_config.yml +72 -0
- package/.devcontainer/config/taskmaster/config.json +37 -0
- package/.devcontainer/ods_config.json +21 -0
- package/.devcontainer/post-create.sh +832 -155
- package/.devcontainer/post-start.sh +413 -187
- package/.devcontainer/sanitize-system-prompt.sh +31 -0
- package/.devcontainer/scripts/config/claude-core.sh +210 -0
- package/.devcontainer/scripts/config/searxng.sh +143 -0
- package/.devcontainer/scripts/config/serena.sh +47 -0
- package/.devcontainer/scripts/config/taskmaster.sh +41 -0
- package/.devcontainer/scripts/generate-mcp-config.js +205 -0
- package/.devcontainer/scripts/install/claude-code.sh +112 -0
- package/.devcontainer/scripts/shell/zsh-config.sh +271 -0
- package/.devcontainer/scripts/utils.sh +44 -0
- package/.devcontainer/setup-zsh.sh +51 -202
- package/README.md +166 -117
- package/package.json +16 -6
|
@@ -4,12 +4,39 @@
|
|
|
4
4
|
|
|
5
5
|
set -euo pipefail
|
|
6
6
|
|
|
7
|
+
# Clear npm prefix environment variables that conflict with NVM
|
|
8
|
+
unset npm_config_prefix 2>/dev/null || true
|
|
9
|
+
unset NPM_CONFIG_PREFIX 2>/dev/null || true
|
|
10
|
+
|
|
7
11
|
echo "🐚 Setting up enhanced ZSH configuration..."
|
|
8
12
|
|
|
13
|
+
# State tracking directory
|
|
14
|
+
STATE_DIR="/workspace/.devcontainer/state"
|
|
15
|
+
|
|
16
|
+
# Function to create state marker
|
|
17
|
+
create_state_marker() {
|
|
18
|
+
local component="$1"
|
|
19
|
+
local method="${2:-unknown}"
|
|
20
|
+
|
|
21
|
+
mkdir -p "$STATE_DIR"
|
|
22
|
+
echo "$(date '+%Y-%m-%d %H:%M:%S') - $method" > "$STATE_DIR/${component}.installed"
|
|
23
|
+
chown -R node:node "$STATE_DIR"
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
# Function to check if component is already installed
|
|
27
|
+
is_component_installed() {
|
|
28
|
+
local component="$1"
|
|
29
|
+
|
|
30
|
+
[ -f "$STATE_DIR/${component}.installed" ]
|
|
31
|
+
}
|
|
32
|
+
|
|
9
33
|
# Variables
|
|
10
34
|
ZSH_CUSTOM="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}"
|
|
11
35
|
NODE_USER="node"
|
|
12
36
|
|
|
37
|
+
# Source shell configuration modules
|
|
38
|
+
source "/workspace/.devcontainer/scripts/shell/zsh-config.sh"
|
|
39
|
+
|
|
13
40
|
# Function to install ZSH plugin
|
|
14
41
|
install_zsh_plugin() {
|
|
15
42
|
local plugin_name="$1"
|
|
@@ -42,206 +69,15 @@ install_powerlevel10k() {
|
|
|
42
69
|
fi
|
|
43
70
|
}
|
|
44
71
|
|
|
45
|
-
#
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
fi
|
|
53
|
-
|
|
54
|
-
cat > "$HOME/.zshrc" << 'EOF'
|
|
55
|
-
# ClaudePod ZSH Configuration
|
|
56
|
-
# Path to your oh-my-zsh installation
|
|
57
|
-
export ZSH="$HOME/.oh-my-zsh"
|
|
58
|
-
|
|
59
|
-
# Set name of the theme to load
|
|
60
|
-
ZSH_THEME="powerlevel10k/powerlevel10k"
|
|
61
|
-
|
|
62
|
-
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
|
|
63
|
-
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
|
64
|
-
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
|
65
|
-
fi
|
|
66
|
-
|
|
67
|
-
# Disable P10k configuration wizard
|
|
68
|
-
export POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD=true
|
|
69
|
-
|
|
70
|
-
# ZSH Configuration
|
|
71
|
-
CASE_SENSITIVE="false"
|
|
72
|
-
HYPHEN_INSENSITIVE="true"
|
|
73
|
-
DISABLE_AUTO_UPDATE="false"
|
|
74
|
-
DISABLE_UPDATE_PROMPT="true"
|
|
75
|
-
export UPDATE_ZSH_DAYS=7
|
|
76
|
-
DISABLE_MAGIC_FUNCTIONS="false"
|
|
77
|
-
DISABLE_LS_COLORS="false"
|
|
78
|
-
DISABLE_AUTO_TITLE="false"
|
|
79
|
-
ENABLE_CORRECTION="true"
|
|
80
|
-
COMPLETION_WAITING_DOTS="true"
|
|
81
|
-
DISABLE_UNTRACKED_FILES_DIRTY="false"
|
|
82
|
-
HIST_STAMPS="yyyy-mm-dd"
|
|
83
|
-
|
|
84
|
-
# ZSH Plugins
|
|
85
|
-
plugins=(
|
|
86
|
-
git
|
|
87
|
-
docker
|
|
88
|
-
docker-compose
|
|
89
|
-
node
|
|
90
|
-
npm
|
|
91
|
-
python
|
|
92
|
-
pip
|
|
93
|
-
vscode
|
|
94
|
-
zsh-syntax-highlighting
|
|
95
|
-
zsh-autosuggestions
|
|
96
|
-
zsh-completions
|
|
97
|
-
fast-syntax-highlighting
|
|
98
|
-
history-substring-search
|
|
99
|
-
colored-man-pages
|
|
100
|
-
command-not-found
|
|
101
|
-
extract
|
|
102
|
-
z
|
|
103
|
-
)
|
|
104
|
-
|
|
105
|
-
# Load Oh My Zsh
|
|
106
|
-
source $ZSH/oh-my-zsh.sh
|
|
107
|
-
|
|
108
|
-
# User configuration
|
|
109
|
-
export LANG=en_US.UTF-8
|
|
110
|
-
export EDITOR='code'
|
|
111
|
-
export ARCHFLAGS="-arch x86_64"
|
|
112
|
-
|
|
113
|
-
# History configuration
|
|
114
|
-
HISTSIZE=50000
|
|
115
|
-
SAVEHIST=50000
|
|
116
|
-
setopt HIST_EXPIRE_DUPS_FIRST
|
|
117
|
-
setopt HIST_IGNORE_DUPS
|
|
118
|
-
setopt HIST_IGNORE_ALL_DUPS
|
|
119
|
-
setopt HIST_IGNORE_SPACE
|
|
120
|
-
setopt HIST_FIND_NO_DUPS
|
|
121
|
-
setopt HIST_SAVE_NO_DUPS
|
|
122
|
-
setopt HIST_BEEP
|
|
123
|
-
setopt SHARE_HISTORY
|
|
124
|
-
|
|
125
|
-
# Path configuration
|
|
126
|
-
export PATH="$HOME/.local/bin:$PATH"
|
|
127
|
-
export PATH="/usr/local/share/npm-global/bin:$PATH"
|
|
128
|
-
|
|
129
|
-
# Node.js/NVM configuration
|
|
130
|
-
export NVM_DIR="/usr/local/share/nvm"
|
|
131
|
-
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
132
|
-
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
|
|
133
|
-
|
|
134
|
-
# Python configuration
|
|
135
|
-
if command -v python3 &> /dev/null; then
|
|
136
|
-
alias python=python3
|
|
137
|
-
alias pip=pip3
|
|
138
|
-
fi
|
|
72
|
+
# ZSH configuration is now handled by focused generator functions:
|
|
73
|
+
# - generate_zsh_basic_config(): Basic ZSH settings, plugins, history
|
|
74
|
+
# - generate_zsh_aliases(): All alias definitions
|
|
75
|
+
# - generate_zsh_functions(): Shell utility functions
|
|
76
|
+
# - generate_zsh_welcome(): Welcome message and final configuration
|
|
77
|
+
# - create_zshrc(): Main orchestrator function
|
|
78
|
+
# See: /workspace/.devcontainer/scripts/shell/zsh-config.sh
|
|
139
79
|
|
|
140
|
-
#
|
|
141
|
-
alias ll='ls -alF'
|
|
142
|
-
alias la='ls -A'
|
|
143
|
-
alias l='ls -CF'
|
|
144
|
-
alias gs='git status'
|
|
145
|
-
alias gd='git diff'
|
|
146
|
-
alias gc='git commit'
|
|
147
|
-
alias gco='git checkout'
|
|
148
|
-
alias gp='git push'
|
|
149
|
-
alias gl='git log --oneline --graph --decorate'
|
|
150
|
-
alias ga='git add'
|
|
151
|
-
alias gb='git branch'
|
|
152
|
-
alias gm='git merge'
|
|
153
|
-
alias gr='git rebase'
|
|
154
|
-
alias gf='git fetch'
|
|
155
|
-
alias gpl='git pull'
|
|
156
|
-
|
|
157
|
-
# Development aliases
|
|
158
|
-
alias c='code .'
|
|
159
|
-
alias cls='clear'
|
|
160
|
-
alias h='history'
|
|
161
|
-
alias ..='cd ..'
|
|
162
|
-
alias ...='cd ../..'
|
|
163
|
-
alias ....='cd ../../..'
|
|
164
|
-
alias ~='cd ~'
|
|
165
|
-
|
|
166
|
-
# Claude Code aliases
|
|
167
|
-
alias claude='claude --model sonnet --dangerously-skip-permissions'
|
|
168
|
-
alias claude-help='claude --help'
|
|
169
|
-
alias claude-mcp='claude mcp list'
|
|
170
|
-
alias claude-version='claude --version'
|
|
171
|
-
|
|
172
|
-
# Docker aliases (if docker is available)
|
|
173
|
-
if command -v docker &> /dev/null; then
|
|
174
|
-
alias d='docker'
|
|
175
|
-
alias dc='docker-compose'
|
|
176
|
-
alias dps='docker ps'
|
|
177
|
-
alias dpsa='docker ps -a'
|
|
178
|
-
alias di='docker images'
|
|
179
|
-
alias drm='docker rm'
|
|
180
|
-
alias drmi='docker rmi'
|
|
181
|
-
fi
|
|
182
|
-
|
|
183
|
-
# Useful functions
|
|
184
|
-
# Extract various archive formats
|
|
185
|
-
extract() {
|
|
186
|
-
if [ -f $1 ]; then
|
|
187
|
-
case $1 in
|
|
188
|
-
*.tar.bz2) tar xjf $1 ;;
|
|
189
|
-
*.tar.gz) tar xzf $1 ;;
|
|
190
|
-
*.bz2) bunzip2 $1 ;;
|
|
191
|
-
*.rar) unrar e $1 ;;
|
|
192
|
-
*.gz) gunzip $1 ;;
|
|
193
|
-
*.tar) tar xf $1 ;;
|
|
194
|
-
*.tbz2) tar xjf $1 ;;
|
|
195
|
-
*.tgz) tar xzf $1 ;;
|
|
196
|
-
*.zip) unzip $1 ;;
|
|
197
|
-
*.Z) uncompress $1 ;;
|
|
198
|
-
*.7z) 7z x $1 ;;
|
|
199
|
-
*) echo "'$1' cannot be extracted via extract()" ;;
|
|
200
|
-
esac
|
|
201
|
-
else
|
|
202
|
-
echo "'$1' is not a valid file"
|
|
203
|
-
fi
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
# Create directory and cd into it
|
|
207
|
-
mkcd() {
|
|
208
|
-
mkdir -p "$1" && cd "$1"
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
# Find process by name
|
|
212
|
-
findp() {
|
|
213
|
-
ps aux | grep -v grep | grep "$1"
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
# Quick HTTP server
|
|
217
|
-
serve() {
|
|
218
|
-
local port="${1:-8000}"
|
|
219
|
-
python3 -m http.server "$port"
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
# Load Powerlevel10k configuration
|
|
223
|
-
if [[ -r ~/.p10k.zsh ]]; then
|
|
224
|
-
source ~/.p10k.zsh
|
|
225
|
-
fi
|
|
226
|
-
|
|
227
|
-
# Auto-suggestions configuration
|
|
228
|
-
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#666666"
|
|
229
|
-
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
|
|
230
|
-
ZSH_AUTOSUGGEST_USE_ASYNC=true
|
|
231
|
-
|
|
232
|
-
# Syntax highlighting configuration
|
|
233
|
-
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern)
|
|
234
|
-
|
|
235
|
-
# Welcome message
|
|
236
|
-
if [[ -n "$ZSH_VERSION" && -z "$VSCODE_RESOLVING_ENVIRONMENT" ]]; then
|
|
237
|
-
echo "🚀 Welcome to ClaudePod!"
|
|
238
|
-
echo "💡 Type 'claude' to start using Claude Code"
|
|
239
|
-
echo "📋 Run 'claude mcp list' to see available MCP servers"
|
|
240
|
-
fi
|
|
241
|
-
EOF
|
|
242
|
-
|
|
243
|
-
echo "✅ Enhanced .zshrc created"
|
|
244
|
-
}
|
|
80
|
+
# Note: The actual create_zshrc() function is now imported from the module above
|
|
245
81
|
|
|
246
82
|
# Function to create Powerlevel10k configuration
|
|
247
83
|
create_p10k_config() {
|
|
@@ -336,6 +172,18 @@ EOF
|
|
|
336
172
|
|
|
337
173
|
# Main setup function
|
|
338
174
|
main() {
|
|
175
|
+
# Check if ZSH setup is already complete
|
|
176
|
+
if is_component_installed "zsh-setup"; then
|
|
177
|
+
echo "✅ ZSH enhancement already complete (marker found)"
|
|
178
|
+
if [ -f "$HOME/.zshrc" ] && [ -d "$HOME/.oh-my-zsh/custom/themes/powerlevel10k" ]; then
|
|
179
|
+
echo "✓ .zshrc and Powerlevel10k theme verified"
|
|
180
|
+
return 0
|
|
181
|
+
else
|
|
182
|
+
echo "⚠️ Marker exists but files missing, re-running setup..."
|
|
183
|
+
rm -f "$STATE_DIR/zsh-setup.installed"
|
|
184
|
+
fi
|
|
185
|
+
fi
|
|
186
|
+
|
|
339
187
|
echo "🐚 Starting ZSH enhancement setup..."
|
|
340
188
|
|
|
341
189
|
# Ensure we're running as the correct user
|
|
@@ -350,9 +198,9 @@ main() {
|
|
|
350
198
|
exit 1
|
|
351
199
|
fi
|
|
352
200
|
|
|
353
|
-
#
|
|
201
|
+
# Source NVM for this process
|
|
354
202
|
export NVM_DIR="/usr/local/share/nvm"
|
|
355
|
-
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
203
|
+
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
356
204
|
|
|
357
205
|
# Install Powerlevel10k theme
|
|
358
206
|
install_powerlevel10k
|
|
@@ -377,9 +225,10 @@ main() {
|
|
|
377
225
|
sudo chsh -s /usr/bin/zsh "$NODE_USER" || echo "⚠️ Could not change default shell"
|
|
378
226
|
fi
|
|
379
227
|
|
|
228
|
+
create_state_marker "zsh-setup" "plugins+theme+config"
|
|
380
229
|
echo "✅ ZSH enhancement setup complete!"
|
|
381
230
|
echo "💡 Restart your terminal or run 'source ~/.zshrc' to apply changes"
|
|
382
231
|
}
|
|
383
232
|
|
|
384
233
|
# Execute main function
|
|
385
|
-
main
|
|
234
|
+
main
|
package/README.md
CHANGED
|
@@ -1,140 +1,151 @@
|
|
|
1
|
-
# ClaudePod
|
|
1
|
+
# ClaudePod
|
|
2
2
|
|
|
3
|
-
A
|
|
3
|
+
A complete development container that sets up Claude Code with 8 powerful MCP servers, modern dev tools, and persistent configurations. Drop it into any project and get a production-ready AI development environment in minutes.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## What's Inside
|
|
6
|
+
|
|
7
|
+
**Claude Code CLI** with native binary installation and optimized configuration
|
|
8
|
+
**8 MCP Servers** providing 100+ specialized tools for code analysis, documentation search, task management, and more
|
|
9
|
+
**Modern Stack** - Node.js 20, Python 3.13, Git with delta, GitHub CLI
|
|
10
|
+
**Smart Persistence** - Your Claude config, shell history, and npm cache survive container rebuilds
|
|
11
|
+
**Enhanced Terminal** - Powerlevel10k with quiet mode and useful git aliases
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
### Using NPM Package
|
|
16
|
+
|
|
17
|
+
ClaudePod is available as an npm package at [npmjs.com/package/claudepod](https://www.npmjs.com/package/claudepod):
|
|
6
18
|
|
|
7
19
|
```bash
|
|
8
|
-
#
|
|
20
|
+
# Drop into any project
|
|
21
|
+
cd your-project
|
|
9
22
|
npx claudepod-devcontainer
|
|
10
23
|
|
|
11
|
-
#
|
|
24
|
+
# Fire it up
|
|
12
25
|
devpod up .
|
|
26
|
+
devpod ssh <workspace-name> --ide vscode # <workspace-name> is usually your project folder name
|
|
13
27
|
|
|
14
|
-
#
|
|
15
|
-
|
|
28
|
+
# Start coding with Claude
|
|
29
|
+
claude
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Cloning from Repository
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Clone the repository
|
|
36
|
+
git clone https://github.com/AnExiledDev/ClaudePod.git
|
|
37
|
+
cd ClaudePod
|
|
38
|
+
|
|
39
|
+
# Copy .devcontainer to your project
|
|
40
|
+
cp -r .devcontainer /path/to/your-project/
|
|
41
|
+
cd /path/to/your-project
|
|
42
|
+
|
|
43
|
+
# Fire it up
|
|
44
|
+
devpod up .
|
|
45
|
+
devpod ssh <workspace-name> --ide vscode # <workspace-name> is usually your project folder name
|
|
16
46
|
|
|
17
47
|
# Start coding with Claude
|
|
18
48
|
claude
|
|
19
49
|
```
|
|
20
50
|
|
|
21
|
-
|
|
51
|
+
That's it. No configuration files to edit, no API keys to hunt down. Everything works out of the box.
|
|
22
52
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
- **Git** with git-delta for beautiful diffs
|
|
27
|
-
- **GitHub CLI** for repository operations
|
|
28
|
-
- **Claude Code CLI** with optimized tool configuration
|
|
53
|
+
## The MCP Servers
|
|
54
|
+
|
|
55
|
+
ClaudePod ships with 8 MCP servers that turn Claude into a powerhouse:
|
|
29
56
|
|
|
30
|
-
### 🔌 MCP Servers (Pre-configured)
|
|
31
57
|
- **Serena** - Advanced code analysis and semantic search
|
|
32
58
|
- **DeepWiki** - GitHub repository documentation search
|
|
33
59
|
- **TaskMaster AI** - AI-powered project management
|
|
34
|
-
- **Sequential Thinking** - Structured problem-solving
|
|
35
|
-
- **
|
|
36
|
-
- **
|
|
37
|
-
- **
|
|
38
|
-
|
|
39
|
-
### ⚡ Productivity Features
|
|
40
|
-
- **Optimized tool configuration** - 79 essential tools pre-allowed (51% reduction from 161 total)
|
|
41
|
-
- **Zero permission prompts** for common development workflows
|
|
42
|
-
- **Intelligent tool selection** - Prioritizes powerful MCP tools over basic built-ins
|
|
43
|
-
- **Shell aliases** - `gs`, `gd`, `gc`, `gp`, `gl` for git operations
|
|
44
|
-
- **Persistent storage** - Claude config and shell history survive rebuilds
|
|
45
|
-
- **VS Code extensions** - Pre-configured for remote development
|
|
46
|
-
|
|
47
|
-
## 📋 Requirements
|
|
48
|
-
|
|
49
|
-
1. **DevPod** installed and configured
|
|
50
|
-
2. **VS Code** with Remote Development Extension Pack:
|
|
51
|
-
```bash
|
|
52
|
-
code --install-extension ms-vscode-remote.vscode-remote-extensionpack
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## 🔧 Usage
|
|
56
|
-
|
|
57
|
-
### Install in Existing Project
|
|
58
|
-
```bash
|
|
59
|
-
cd my-existing-project
|
|
60
|
-
npx claudepod-devcontainer
|
|
61
|
-
devpod up .
|
|
62
|
-
```
|
|
60
|
+
- **Sequential Thinking** - Structured problem-solving workflows
|
|
61
|
+
- **ccusage** - Claude Code usage analytics and cost tracking
|
|
62
|
+
- **SearXNG Enhanced** - Web search with content scraping
|
|
63
|
+
- **GitHub MCP** - Complete GitHub API integration (API key optional)
|
|
64
|
+
- **Tavily + Ref.Tools** - Web search and documentation tools (API keys optional)
|
|
63
65
|
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
mkdir new-project && cd new-project
|
|
67
|
-
npx claudepod-devcontainer
|
|
68
|
-
devpod up .
|
|
69
|
-
```
|
|
66
|
+
**Tool Permissions**: When Claude first starts, it will ask permission to use these MCP tools. You can deny or allow specific tools based on your needs - this helps manage the large number of available tools (100+). Future versions will make this easier to configure.
|
|
70
67
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
claude # Start development
|
|
77
|
-
```
|
|
68
|
+
## Requirements
|
|
69
|
+
|
|
70
|
+
- **[DevPod](https://devpod.sh/)** installed and configured - the container development platform
|
|
71
|
+
- **VS Code** with Remote Development extensions
|
|
72
|
+
- That's literally it
|
|
78
73
|
|
|
79
|
-
##
|
|
74
|
+
## Container Details
|
|
75
|
+
|
|
76
|
+
**Base**: Ubuntu 22.04
|
|
77
|
+
**User**: node (1000:1000)
|
|
78
|
+
**Workspace**: `/workspace` (your project files)
|
|
79
|
+
**Persistent**: Claude config, shell history, npm cache
|
|
80
|
+
|
|
81
|
+
Your files stay exactly where they are. ClaudePod only adds a `.devcontainer/` directory.
|
|
82
|
+
|
|
83
|
+
## Handy Commands
|
|
80
84
|
|
|
81
85
|
```bash
|
|
82
|
-
# Claude
|
|
83
|
-
claude
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
#
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
#
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
#
|
|
98
|
-
./scripts/health-check.sh # Verify everything works
|
|
86
|
+
# Claude with statusline and MCP servers
|
|
87
|
+
claude
|
|
88
|
+
|
|
89
|
+
# Git shortcuts (with beautiful diffs)
|
|
90
|
+
gs # git status
|
|
91
|
+
gd # git diff
|
|
92
|
+
gc # git commit
|
|
93
|
+
gp # git push
|
|
94
|
+
gl # git log --oneline --graph
|
|
95
|
+
|
|
96
|
+
# Python without the pain
|
|
97
|
+
uvx <package> # Run packages without installing
|
|
98
|
+
uv add <package> # Add dependencies
|
|
99
|
+
|
|
100
|
+
# Quick info
|
|
101
|
+
claudepod_info # Show status and commands
|
|
99
102
|
```
|
|
100
103
|
|
|
101
|
-
##
|
|
104
|
+
## Optional Upgrades
|
|
105
|
+
|
|
106
|
+
**Web search is already included** via the built-in SearXNG server - no limits, no API keys required. But you can add more integrations:
|
|
102
107
|
|
|
103
|
-
|
|
108
|
+
```bash
|
|
109
|
+
cp .devcontainer/.env.example .devcontainer/.env
|
|
110
|
+
# Edit .devcontainer/.env with your keys
|
|
111
|
+
```
|
|
104
112
|
|
|
105
113
|
```bash
|
|
106
114
|
# GitHub integration (recommended)
|
|
107
|
-
|
|
115
|
+
GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token
|
|
108
116
|
|
|
109
|
-
#
|
|
110
|
-
|
|
117
|
+
# Additional web search via Tavily (optional - SearXNG already provides unlimited search)
|
|
118
|
+
TAVILY_API_KEY=tvly-your-key
|
|
111
119
|
|
|
112
120
|
# Documentation tools
|
|
113
|
-
|
|
121
|
+
REF_TOOLS_API_KEY=your-key
|
|
114
122
|
```
|
|
115
123
|
|
|
116
|
-
##
|
|
124
|
+
## Customization & Pitfalls
|
|
117
125
|
|
|
118
|
-
|
|
119
|
-
your
|
|
120
|
-
├── .devcontainer/
|
|
121
|
-
│ ├── devcontainer.json # Container configuration
|
|
122
|
-
│ ├── post-create.sh # Development tools setup
|
|
123
|
-
│ └── post-start.sh # MCP server installation
|
|
124
|
-
└── (your existing files remain unchanged)
|
|
125
|
-
```
|
|
126
|
+
### The Good News
|
|
127
|
+
ClaudePod is designed to be unbreakable. It uses smart configuration templates that preserve your customizations across container rebuilds.
|
|
126
128
|
|
|
127
|
-
|
|
129
|
+
### Common Gotchas
|
|
128
130
|
|
|
129
|
-
|
|
130
|
-
- **User**: `node` (uid: 1000, gid: 1000)
|
|
131
|
-
- **Workspace**: `/workspace` (your project files)
|
|
132
|
-
- **Persistent Data**: Claude config, shell history, npm cache
|
|
133
|
-
- **Network**: Host network for optimal development server performance
|
|
131
|
+
**Override Flags** - ClaudePod has environment variables like `OVERRIDE_CLAUDE_SETTINGS=true` that can overwrite your customizations. Only use these if you want to reset to defaults.
|
|
134
132
|
|
|
135
|
-
|
|
133
|
+
**Port Conflicts** - If you run services on ports 8080, 3000, or 5000 locally, add port forwarding rules to avoid conflicts:
|
|
136
134
|
|
|
137
|
-
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"forwardPorts": [3001, 8081, 5001],
|
|
138
|
+
"portsAttributes": {
|
|
139
|
+
"3001": { "label": "Your App" }
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Configuration Complexity** - ClaudePod has many layers (devcontainer.json, .env, MCP templates, tool configs). Stick to editing `.devcontainer/.env` for most customizations.
|
|
145
|
+
|
|
146
|
+
### Safe Customization
|
|
147
|
+
|
|
148
|
+
Edit `.devcontainer/devcontainer.json` after installation:
|
|
138
149
|
|
|
139
150
|
```json
|
|
140
151
|
{
|
|
@@ -145,45 +156,83 @@ After installation, you can modify `.devcontainer/devcontainer.json`:
|
|
|
145
156
|
"vscode": {
|
|
146
157
|
"extensions": ["your.extension.id"]
|
|
147
158
|
}
|
|
159
|
+
},
|
|
160
|
+
"features": {
|
|
161
|
+
"ghcr.io/devcontainers/features/aws-cli:1": {}
|
|
148
162
|
}
|
|
149
163
|
}
|
|
150
164
|
```
|
|
151
165
|
|
|
152
|
-
##
|
|
166
|
+
## Troubleshooting
|
|
153
167
|
|
|
168
|
+
**Container won't start?**
|
|
154
169
|
```bash
|
|
155
|
-
#
|
|
156
|
-
|
|
170
|
+
devpod delete <workspace> && devpod up . # <workspace> is your project folder name
|
|
171
|
+
# Don't worry - this preserves your ClaudePod configuration and project files
|
|
172
|
+
```
|
|
157
173
|
|
|
158
|
-
|
|
174
|
+
**Claude authentication issues?**
|
|
175
|
+
```bash
|
|
159
176
|
claude login
|
|
177
|
+
```
|
|
160
178
|
|
|
161
|
-
|
|
179
|
+
**MCP servers missing?**
|
|
180
|
+
```bash
|
|
162
181
|
claude mcp list
|
|
163
|
-
|
|
182
|
+
# If empty, restart the container
|
|
183
|
+
```
|
|
164
184
|
|
|
165
|
-
|
|
166
|
-
|
|
185
|
+
**npm permission errors?**
|
|
186
|
+
```bash
|
|
187
|
+
# Inside container - fix npm permissions
|
|
188
|
+
sudo chown -R node:node /home/node/.npm
|
|
189
|
+
sudo chown -R node:node /home/node/.local
|
|
167
190
|
```
|
|
168
191
|
|
|
169
|
-
|
|
192
|
+
**Configuration got overwritten?**
|
|
193
|
+
Look in `.devcontainer/config/backups/` - ClaudePod automatically backs up your configs before making changes.
|
|
170
194
|
|
|
171
|
-
|
|
172
|
-
- `CLAUDE.md` - Complete container documentation
|
|
173
|
-
- `examples/` - Configuration examples
|
|
174
|
-
- `scripts/` - Helper scripts and utilities
|
|
195
|
+
## Architecture
|
|
175
196
|
|
|
176
|
-
|
|
197
|
+
ClaudePod uses a two-phase setup:
|
|
198
|
+
1. **post-create.sh** - Installs Claude Code, dev tools, and creates base configurations
|
|
199
|
+
2. **post-start.sh** - Installs MCP servers and validates everything works
|
|
200
|
+
|
|
201
|
+
The setup is idempotent - you can rebuild containers without losing your customizations (unless you use override flags).
|
|
202
|
+
|
|
203
|
+
## Team Usage
|
|
204
|
+
|
|
205
|
+
Perfect for teams who want consistent environments:
|
|
177
206
|
|
|
178
|
-
Each team member runs:
|
|
179
207
|
```bash
|
|
208
|
+
# Team member 1 sets up the project
|
|
180
209
|
cd shared-project
|
|
181
|
-
npx claudepod-devcontainer
|
|
182
|
-
|
|
210
|
+
npx claudepod-devcontainer
|
|
211
|
+
git add .devcontainer/ && git commit -m "Add ClaudePod"
|
|
212
|
+
|
|
213
|
+
# Everyone else just runs
|
|
214
|
+
devpod up .
|
|
183
215
|
```
|
|
184
216
|
|
|
185
|
-
|
|
217
|
+
Each developer gets an identical environment with the same Claude configuration, MCP servers, and tools.
|
|
218
|
+
|
|
219
|
+
## What Gets Added
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
your-project/
|
|
223
|
+
├── .devcontainer/
|
|
224
|
+
│ ├── devcontainer.json # Main container config
|
|
225
|
+
│ ├── post-create.sh # Tool installation
|
|
226
|
+
│ ├── post-start.sh # MCP server setup
|
|
227
|
+
│ ├── .env.example # API key template
|
|
228
|
+
│ ├── config/
|
|
229
|
+
│ │ ├── claude/ # Claude Code templates
|
|
230
|
+
│ │ ├── serena/ # Serena config
|
|
231
|
+
│ │ └── taskmaster/ # TaskMaster config
|
|
232
|
+
│ └── scripts/ # Modular setup scripts
|
|
233
|
+
└── (your files stay exactly the same)
|
|
234
|
+
```
|
|
186
235
|
|
|
187
236
|
---
|
|
188
237
|
|
|
189
|
-
**Ready to
|
|
238
|
+
**Ready to code with AI superpowers?** ClaudePod turns any project into an AI-native development environment.
|