claudepod 1.0.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.
@@ -0,0 +1,385 @@
1
+ #!/bin/bash
2
+ # ZSH Configuration Script for ClaudePod
3
+ # This script enhances the ZSH setup with plugins, themes, and productivity features
4
+
5
+ set -euo pipefail
6
+
7
+ echo "🐚 Setting up enhanced ZSH configuration..."
8
+
9
+ # Variables
10
+ ZSH_CUSTOM="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}"
11
+ NODE_USER="node"
12
+
13
+ # Function to install ZSH plugin
14
+ install_zsh_plugin() {
15
+ local plugin_name="$1"
16
+ local plugin_repo="$2"
17
+ local plugin_dir="$ZSH_CUSTOM/plugins/$plugin_name"
18
+
19
+ if [ ! -d "$plugin_dir" ]; then
20
+ echo "📦 Installing ZSH plugin: $plugin_name"
21
+ git clone "https://github.com/$plugin_repo.git" "$plugin_dir" || {
22
+ echo "⚠️ Failed to install $plugin_name plugin"
23
+ return 1
24
+ }
25
+ else
26
+ echo "✅ ZSH plugin $plugin_name already installed"
27
+ fi
28
+ }
29
+
30
+ # Function to install Powerlevel10k theme
31
+ install_powerlevel10k() {
32
+ local theme_dir="$ZSH_CUSTOM/themes/powerlevel10k"
33
+
34
+ if [ ! -d "$theme_dir" ]; then
35
+ echo "🎨 Installing Powerlevel10k theme..."
36
+ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "$theme_dir" || {
37
+ echo "⚠️ Failed to install Powerlevel10k theme"
38
+ return 1
39
+ }
40
+ else
41
+ echo "✅ Powerlevel10k theme already installed"
42
+ fi
43
+ }
44
+
45
+ # Function to create enhanced .zshrc
46
+ create_zshrc() {
47
+ echo "📝 Creating enhanced .zshrc configuration..."
48
+
49
+ # Backup existing .zshrc if it exists
50
+ if [ -f "$HOME/.zshrc" ]; then
51
+ cp "$HOME/.zshrc" "$HOME/.zshrc.backup.$(date +%s)" 2>/dev/null || true
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
139
+
140
+ # ClaudePod aliases
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
+ }
245
+
246
+ # Function to create Powerlevel10k configuration
247
+ create_p10k_config() {
248
+ echo "⚡ Creating Powerlevel10k configuration..."
249
+
250
+ cat > "$HOME/.p10k.zsh" << 'EOF'
251
+ # Powerlevel10k configuration for ClaudePod
252
+ 'builtin' 'local' '-a' 'p10k_config_opts'
253
+ [[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases')
254
+ [[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob')
255
+ [[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
256
+ 'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
257
+
258
+ () {
259
+ emulate -L zsh -o extended_glob
260
+
261
+ # Unset all configuration options (safely).
262
+ local var
263
+ for var in ${(M)${(k)parameters[@]}:#POWERLEVEL9K_*}; do
264
+ unset $var
265
+ done
266
+
267
+ # The list of segments shown on the left. Fill it with the most important segments.
268
+ typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
269
+ os_icon # os identifier
270
+ dir # current directory
271
+ vcs # git status
272
+ prompt_char # prompt symbol
273
+ )
274
+
275
+ # The list of segments shown on the right. Fill it with less important segments.
276
+ typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
277
+ status # exit code of the last command
278
+ command_execution_time # duration of the last command
279
+ background_jobs # presence of background jobs
280
+ direnv # direnv status (https://direnv.net/)
281
+ asdf # asdf version manager (https://github.com/asdf-vm/asdf)
282
+ virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html)
283
+ anaconda # conda environment (https://conda.io/)
284
+ pyenv # python environment (https://github.com/pyenv/pyenv)
285
+ goenv # go environment (https://github.com/syndbg/goenv)
286
+ nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv)
287
+ nvm # node.js version from nvm (https://github.com/nvm-sh/nvm)
288
+ nodeenv # node.js environment (https://github.com/ekalinin/nodeenv)
289
+ node_version # node.js version
290
+ time # current time
291
+ )
292
+
293
+ # Basic style options that define the overall look of your prompt.
294
+ typeset -g POWERLEVEL9K_BACKGROUND= # transparent background
295
+ typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace
296
+ typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space
297
+ typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol
298
+ typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION= # no segment icons
299
+
300
+ # Directory colors
301
+ typeset -g POWERLEVEL9K_DIR_BACKGROUND=4
302
+ typeset -g POWERLEVEL9K_DIR_FOREGROUND=254
303
+ typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=250
304
+ typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=255
305
+ typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
306
+
307
+ # Git colors
308
+ typeset -g POWERLEVEL9K_VCS_CLEAN_BACKGROUND=2
309
+ typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=0
310
+ typeset -g POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=3
311
+ typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=0
312
+ typeset -g POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=1
313
+ typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=0
314
+
315
+ # Prompt character
316
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS}_FOREGROUND=76
317
+ typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS}_FOREGROUND=196
318
+
319
+ # Time format
320
+ typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
321
+
322
+ # Command execution time threshold
323
+ typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
324
+
325
+ # Node.js version display
326
+ typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true
327
+ }
328
+
329
+ # Apply configuration
330
+ (( ! $#p10k_config_opts )) || setopt ${p10k_config_opts[@]}
331
+ 'builtin' 'unset' 'p10k_config_opts'
332
+ EOF
333
+
334
+ echo "✅ Powerlevel10k configuration created"
335
+ }
336
+
337
+ # Main setup function
338
+ main() {
339
+ echo "🐚 Starting ZSH enhancement setup..."
340
+
341
+ # Ensure we're running as the correct user
342
+ if [ "$(whoami)" != "$NODE_USER" ]; then
343
+ echo "❌ This script should run as user $NODE_USER"
344
+ exit 1
345
+ fi
346
+
347
+ # Check if Oh My Zsh is installed
348
+ if [ ! -d "$HOME/.oh-my-zsh" ]; then
349
+ echo "❌ Oh My Zsh not found. Ensure the common-utils feature installed it."
350
+ exit 1
351
+ fi
352
+
353
+ # Suppress NVM errors during this process
354
+ export NVM_DIR="/usr/local/share/nvm"
355
+ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" 2>/dev/null || true
356
+
357
+ # Install Powerlevel10k theme
358
+ install_powerlevel10k
359
+
360
+ # Install useful ZSH plugins (with error handling)
361
+ echo "📦 Installing ZSH plugins..."
362
+ install_zsh_plugin "zsh-autosuggestions" "zsh-users/zsh-autosuggestions" || echo "⚠️ Failed to install zsh-autosuggestions"
363
+ install_zsh_plugin "zsh-syntax-highlighting" "zsh-users/zsh-syntax-highlighting" || echo "⚠️ Failed to install zsh-syntax-highlighting"
364
+ install_zsh_plugin "zsh-completions" "zsh-users/zsh-completions" || echo "⚠️ Failed to install zsh-completions"
365
+ install_zsh_plugin "fast-syntax-highlighting" "zdharma-continuum/fast-syntax-highlighting" || echo "⚠️ Failed to install fast-syntax-highlighting"
366
+ install_zsh_plugin "history-substring-search" "zsh-users/zsh-history-substring-search" || echo "⚠️ Failed to install history-substring-search"
367
+
368
+ # Create enhanced .zshrc
369
+ create_zshrc
370
+
371
+ # Create Powerlevel10k configuration
372
+ create_p10k_config
373
+
374
+ # Set ZSH as default shell
375
+ echo "🔧 Setting ZSH as default shell..."
376
+ if [ -f "/usr/bin/zsh" ]; then
377
+ sudo chsh -s /usr/bin/zsh "$NODE_USER" || echo "⚠️ Could not change default shell"
378
+ fi
379
+
380
+ echo "✅ ZSH enhancement setup complete!"
381
+ echo "💡 Restart your terminal or run 'source ~/.zshrc' to apply changes"
382
+ }
383
+
384
+ # Execute main function
385
+ main
package/README.md ADDED
@@ -0,0 +1,189 @@
1
+ # ClaudePod DevContainer Package
2
+
3
+ A fully configured DevContainer optimized for Claude Code development with MCP servers, modern development tools, and persistent configuration. Easily add this development environment to any project with one command.
4
+
5
+ ## 🚀 Quick Setup
6
+
7
+ ```bash
8
+ # Install in any project directory
9
+ npx claudepod-devcontainer
10
+
11
+ # Start the container
12
+ devpod up .
13
+
14
+ # Connect with VS Code
15
+ devpod ssh <workspace-name> --ide vscode
16
+
17
+ # Start coding with Claude
18
+ claude
19
+ ```
20
+
21
+ ## ✨ What You Get
22
+
23
+ ### 🛠️ Development Stack
24
+ - **Node.js 20** (via NVM) + npm/npx
25
+ - **Python 3.13** with pipx, uv/uvx, and common tools
26
+ - **Git** with git-delta for beautiful diffs
27
+ - **GitHub CLI** for repository operations
28
+ - **Claude Code CLI** with optimized tool configuration
29
+
30
+ ### 🔌 MCP Servers (Pre-configured)
31
+ - **Serena** - Advanced code analysis and semantic search
32
+ - **DeepWiki** - GitHub repository documentation search
33
+ - **TaskMaster AI** - AI-powered project management
34
+ - **Sequential Thinking** - Structured problem-solving
35
+ - **GitHub MCP** - Complete GitHub API integration (requires API key)
36
+ - **Tavily Search** - Web search capabilities (requires API key)
37
+ - **Ref.Tools** - Documentation tools (requires API key)
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
+ ```
63
+
64
+ ### New Project Setup
65
+ ```bash
66
+ mkdir new-project && cd new-project
67
+ npx claudepod-devcontainer
68
+ devpod up .
69
+ ```
70
+
71
+ ### First-Time Container Setup
72
+ ```bash
73
+ # Inside the container
74
+ ./scripts/setup-env.sh # Optional environment setup
75
+ claude login # Authenticate with Claude
76
+ claude # Start development
77
+ ```
78
+
79
+ ## 🎯 Quick Commands
80
+
81
+ ```bash
82
+ # Claude Code (with MCP servers, no permission prompts)
83
+ claude # Start Claude
84
+ claude mcp list # List available MCP servers
85
+
86
+ # Git (with aliases and delta highlighting)
87
+ gs # git status
88
+ gd # git diff
89
+ gc -m "message" # git commit
90
+ gp # git push
91
+ gl # git log --oneline --graph
92
+
93
+ # Python development
94
+ uvx <package> # Run packages without installing
95
+ uv add <package> # Add dependencies
96
+
97
+ # Health check
98
+ ./scripts/health-check.sh # Verify everything works
99
+ ```
100
+
101
+ ## 🔑 Optional API Keys
102
+
103
+ Add these to your environment for enhanced features:
104
+
105
+ ```bash
106
+ # GitHub integration (recommended)
107
+ export GITHUB_PERSONAL_ACCESS_TOKEN="ghp_your_token"
108
+
109
+ # Web search capabilities
110
+ export TAVILY_API_KEY="tvly-your-key"
111
+
112
+ # Documentation tools
113
+ export REF_TOOLS_API_KEY="your-key"
114
+ ```
115
+
116
+ ## 📁 What Gets Installed
117
+
118
+ ```
119
+ your-project/
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
+
127
+ ## 🏗️ Container Architecture
128
+
129
+ - **Base**: Ubuntu 22.04
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
134
+
135
+ ## 🔧 Customization
136
+
137
+ After installation, you can modify `.devcontainer/devcontainer.json`:
138
+
139
+ ```json
140
+ {
141
+ "containerEnv": {
142
+ "YOUR_API_KEY": "${localEnv:YOUR_API_KEY}"
143
+ },
144
+ "customizations": {
145
+ "vscode": {
146
+ "extensions": ["your.extension.id"]
147
+ }
148
+ }
149
+ }
150
+ ```
151
+
152
+ ## 🩺 Troubleshooting
153
+
154
+ ```bash
155
+ # Container not starting?
156
+ devpod delete <workspace> && devpod up .
157
+
158
+ # Claude not authenticated?
159
+ claude login
160
+
161
+ # MCP servers not working?
162
+ claude mcp list
163
+ claude mcp remove <server> && claude mcp add <server>
164
+
165
+ # Check container health
166
+ ./scripts/health-check.sh
167
+ ```
168
+
169
+ ## 📚 Documentation
170
+
171
+ After installation, see:
172
+ - `CLAUDE.md` - Complete container documentation
173
+ - `examples/` - Configuration examples
174
+ - `scripts/` - Helper scripts and utilities
175
+
176
+ ## 🤝 Team Usage
177
+
178
+ Each team member runs:
179
+ ```bash
180
+ cd shared-project
181
+ npx claudepod-devcontainer # Installs .devcontainer
182
+ devpod up . # Starts identical environment
183
+ ```
184
+
185
+ Perfect for ensuring consistent development environments across your team!
186
+
187
+ ---
188
+
189
+ **Ready to supercharge your development with AI!** 🚀
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "claudepod",
3
+ "version": "1.0.0",
4
+ "description": "A fully configured DevPod environment optimized for Claude Code development with MCP servers and modern tools.",
5
+ "main": "setup.js",
6
+ "bin": {
7
+ "claudepod-setup": "./setup.js"
8
+ },
9
+ "scripts": {
10
+ "test": "node test.js"
11
+ },
12
+ "keywords": [
13
+ "devcontainer",
14
+ "claude",
15
+ "claude-code",
16
+ "mcp",
17
+ "development-environment",
18
+ "devpod",
19
+ "vscode"
20
+ ],
21
+ "author": "AnExiledDev",
22
+ "license": "MIT",
23
+ "files": [
24
+ ".devcontainer/**/*",
25
+ "setup.js",
26
+ "README.md"
27
+ ],
28
+ "engines": {
29
+ "node": ">=14.0.0"
30
+ },
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "https://github.com/yourusername/claudepod-devcontainer.git"
34
+ },
35
+ "homepage": "https://github.com/yourusername/claudepod-devcontainer#readme",
36
+ "bugs": {
37
+ "url": "https://github.com/yourusername/claudepod-devcontainer/issues"
38
+ }
39
+ }
package/setup.js ADDED
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+
6
+ function copyDirectory(src, dest) {
7
+ if (!fs.existsSync(dest)) {
8
+ fs.mkdirSync(dest, { recursive: true });
9
+ }
10
+
11
+ const entries = fs.readdirSync(src, { withFileTypes: true });
12
+
13
+ for (const entry of entries) {
14
+ const srcPath = path.join(src, entry.name);
15
+ const destPath = path.join(dest, entry.name);
16
+
17
+ if (entry.isDirectory()) {
18
+ copyDirectory(srcPath, destPath);
19
+ } else {
20
+ fs.copyFileSync(srcPath, destPath);
21
+ }
22
+ }
23
+ }
24
+
25
+ function main() {
26
+ const currentDir = process.cwd();
27
+ const packageDir = __dirname;
28
+ const devcontainerSrc = path.join(packageDir, '.devcontainer');
29
+ const devcontainerDest = path.join(currentDir, '.devcontainer');
30
+
31
+ console.log('🚀 Setting up ClaudePod DevContainer...');
32
+
33
+ // Check if .devcontainer already exists
34
+ if (fs.existsSync(devcontainerDest)) {
35
+ console.log('⚠️ .devcontainer directory already exists.');
36
+ console.log(' Remove it first or run in a different directory.');
37
+ process.exit(1);
38
+ }
39
+
40
+ // Check if source .devcontainer exists
41
+ if (!fs.existsSync(devcontainerSrc)) {
42
+ console.error('❌ Error: .devcontainer source directory not found in package.');
43
+ process.exit(1);
44
+ }
45
+
46
+ try {
47
+ // Copy .devcontainer directory
48
+ copyDirectory(devcontainerSrc, devcontainerDest);
49
+
50
+ console.log('✅ ClaudePod DevContainer configuration installed!');
51
+ console.log('');
52
+ console.log('🔧 Next steps:');
53
+ console.log(' 1. devpod up .');
54
+ console.log(' 2. devpod ssh <workspace-name> --ide vscode');
55
+ console.log(' 3. Start coding with Claude: claude');
56
+ console.log('');
57
+ console.log('📚 Features included:');
58
+ console.log(' • Claude Code CLI with optimized tool configuration');
59
+ console.log(' • MCP servers: Serena, DeepWiki, TaskMaster AI, Sequential Thinking');
60
+ console.log(' • Development tools: Node.js 20, Python 3.13, Git with delta');
61
+ console.log(' • Persistent configuration and shell history');
62
+ console.log('');
63
+ console.log('🔗 Documentation: See .devcontainer/README.md');
64
+
65
+ } catch (error) {
66
+ console.error('❌ Error copying .devcontainer:', error.message);
67
+ process.exit(1);
68
+ }
69
+ }
70
+
71
+ if (require.main === module) {
72
+ main();
73
+ }
74
+
75
+ module.exports = { copyDirectory, main };