
Security News
/Research
Wallet-Draining npm Package Impersonates Nodemailer to Hijack Crypto Transactions
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
@nhangen/universal-dev-env
Advanced tools
Universal development environment setup for modern web projects
π One-click setup for modern development environments with AI tools, cloud CLIs, and optimized containers
curl -fsSL https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install.sh | bash
(Unix/Linux/macOS)Unix/Linux/macOS:
curl -fsSL https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install.sh | bash
Windows (PowerShell as Administrator):
iwr -useb https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install-windows.bat | iex
Windows (Alternative - Download & Run):
# Download and run the batch installer
curl -O https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install-windows.bat
# Right-click install-windows.bat and "Run as Administrator"
Cross-Platform (npm):
npm install -g @nhangen/universal-dev-env
macOS (Homebrew):
brew tap nhangen/universal-dev-env
brew install universal-dev-env
Windows (Chocolatey):
# Coming soon - use npm method above for now
choco install universal-dev-env
# Coming soon to VS Code Marketplace
# For now, use the npm package method above
Setup failed? β Jump to Troubleshooting Guide
Common fixes:
curl -fsSL https://raw.githubusercontent.com/nhangen/universal-dev-env/main/universal-setup.sh -o universal-setup.sh && chmod +x universal-setup.sh && ./universal-setup.sh
chmod +x universal-setup.sh
uds cache --clear
rm -rf project-name && uds init --no-cache
# Create new project directory
mkdir my-awesome-project
cd my-awesome-project
uds init
# OR initialize in current directory (no subdirectory created)
cd my-existing-directory
uds init --here
# OR initialize Python ML project with one command
uds init --type python --ml --here
cd existing-project
uds setup
uds init # Initialize project with dev environment
uds init --here # Initialize in current directory (no subdirectory)
uds init --type python --ml # Initialize Python project with ML libraries
uds init --ai-context # Initialize with AI context file for Claude/Gemini/Copilot
uds init --no-cache # Initialize without caching (fresh downloads)
uds setup # Install development tools in existing project
uds update # Update to latest version
uds uninstall # Completely remove Universal Dev Environment
uds cache --info # Show cache information
uds cache --clear # Clear cached files
universal-dev-setup # Main setup script (direct)
claude
) - AI-powered coding assistantgemini
) - Google's AI development toolgh
) - GitHub integration and automationgcloud
) - Cloud deployment and managementbrew
)choco
)apt
, yum
, apk
)uds init --type react
Choose backend during setup or use flags:
uds init --type react --backend express # React + Express
uds init --type react --backend nextjs # Next.js full-stack
uds init --type react --backend firebase # React + Firebase
uds init --type react --backend serverless # React + Vercel/Netlify
uds init --type react --backend none # Frontend only
# Add AI context for shared memory between Claude/Gemini/Copilot
uds init --type react --ai-context # Generates .ai/ folder
uds init --type node
uds init --type full-stack
uds init --type python
main.py
requirements.txt
with ML or standard packages.env
file for environment variables.gitignore
activate_env.sh
script for easy activationUniversal Dev Environment can generate a comprehensive .ai/
folder that provides shared context between Claude, Gemini, and GitHub Copilot.
uds init --ai-context # Generate .ai/ folder with context files
uds init --type python --ml --ai-context # ML project with AI context
π .ai/ Folder Structure:
.ai/
βββ context.md # Project overview and architecture
βββ recent-work.md # Development sessions and progress
βββ preferences.md # Coding patterns and project preferences
π context.md - Core project information:
π recent-work.md - Development tracking:
π¨ preferences.md - Coding standards:
Automatic configuration for maintaining settings across container rebuilds:
Claude CLI: ~/.config/claude-code/settings.local.json
Gemini CLI: ~/.config/gemini/settings.json
and state_snapshot.xml
GitHub Copilot: Automatic persistence via VS Code
Instead of re-explaining your project:
Before: "This is a React app with Express backend using Docker Compose..."
After: "Based on .ai/context.md, help me implement the user authentication system"
For ongoing development context:
"Check .ai/recent-work.md for what I completed yesterday, then help me continue with the next API endpoint"
For consistent code patterns:
"Following the patterns in .ai/preferences.md, create a new React component for the user dashboard"
When --ai-context
is used:
/workspace/.ai/
AI_CONTEXT_DIR=/workspace/.ai
Universal Dev Environment now has full Windows support via PowerShell:
-SkipDocker
)Option 1: One-line PowerShell (Recommended)
# Run PowerShell as Administrator, then:
iwr -useb https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install-windows.bat | iex
Option 2: Manual Download
# Download the installer
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install-windows.bat" -OutFile "install-windows.bat"
# Right-click and "Run as Administrator"
Option 3: Direct PowerShell Script
# Download and run PowerShell script directly
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/nhangen/universal-dev-env/main/universal-setup.ps1" -OutFile "universal-setup.ps1"
powershell -ExecutionPolicy Bypass -File "universal-setup.ps1"
# Skip Docker Desktop installation
.\universal-setup.ps1 -SkipDocker
# Skip Chocolatey installation (if you already have it)
.\universal-setup.ps1 -SkipChocolatey
# Show help
.\universal-setup.ps1 -Help
# Build and run development environment
docker build --target development -t my-dev-env .
docker run -it -p 3000:3000 -v $(pwd):/workspace my-dev-env
# Build optimized production image
docker build --target production -t my-app .
docker run -p 3000:3000 my-app
Universal Dev Environment includes intelligent caching to speed up repeated installations:
~/.universal-dev-env/cache
# Show cache information
uds cache --info
# Clear all cached files
uds cache --clear
# Initialize without using cache
uds init --no-cache
# Install without using cache
uds install --no-cache
# Default cache directory
~/.universal-dev-env/cache/
# Cache expires after 30 days OR on version update
# Automatic cleanup of old versions and failed downloads
# Version-aware cache keys ensure fresh content on updates
# Playwright configuration
export PLAYWRIGHT_BROWSERS_PATH=/usr/bin
export PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium
# Development mode
export NODE_ENV=development
Create .universal-dev-env.json
in your project root:
{
"projectType": "react",
"baseImage": "debian",
"features": {
"aiTools": true,
"cloudTools": true,
"playwright": false,
"multiStage": true
},
"ports": [3000, 3001, 8000],
"customExtensions": [
"custom.extension-id"
]
}
We welcome contributions! Please see our Contributing Guide for details.
git clone https://github.com/nhangen/universal-dev-env.git
cd universal-dev-env
npm install
npm run dev
npm test
cd vscode-extension
npm run compile
npm run package
π macOS: "Unsupported OS" Error
If you get "Unsupported OS" when running ./universal-setup.sh
:
# The shell script needs to be updated - download latest version
curl -fsSL https://raw.githubusercontent.com/nhangen/universal-dev-env/main/universal-setup.sh -o universal-setup.sh
chmod +x universal-setup.sh
./universal-setup.sh
π Package Installed but Shell Script Failed
If npm install -g @nhangen/universal-dev-env
worked but ./universal-setup.sh
failed:
# Option 1: Update to latest script
curl -fsSL https://raw.githubusercontent.com/nhangen/universal-dev-env/main/universal-setup.sh -o universal-setup.sh
chmod +x universal-setup.sh
./universal-setup.sh
# Option 2: Use Node.js CLI instead (skip shell script)
uds install # This will install the development tools via Node.js
If setup fails or you want to start fresh:
Option 1: Clear cache and retry
# Clear all cached files and retry
uds cache --clear
uds init --no-cache
Option 2: Manual restart
# Remove project directory and start over
rm -rf your-project-name
mkdir your-project-name
cd your-project-name
uds init
Option 3: Re-run shell script
# If the shell script failed, try again
chmod +x universal-setup.sh
./universal-setup.sh
One-Command Uninstall:
uds uninstall # Interactive uninstall with options
# OR
uds uninstall --yes # Skip confirmations
Manual NPM Package Removal:
npm uninstall -g @nhangen/universal-dev-env
Remove Generated Files:
# Remove cache directory
rm -rf ~/.universal-dev-env
# Remove development scripts (optional)
rm -f ~/bin/dev-start
# Remove configuration directories (optional - will lose settings)
rm -rf ~/.config/claude-code
rm -rf ~/.config/gh
rm -rf ~/.config/gemini
Remove Installed Tools (Optional):
macOS:
# Remove via Homebrew (only if you want to completely remove these tools)
brew uninstall gh google-cloud-sdk
brew uninstall --cask docker
Windows:
# Remove via Chocolatey (optional)
choco uninstall github-cli google-cloud-sdk docker-desktop
Linux:
# Remove via package manager (optional)
sudo apt-get remove gh google-cloud-sdk # Debian/Ubuntu
# or
sudo apk del github-cli # Alpine
Clean Reset:
# Complete clean slate (removes all traces)
npm uninstall -g @nhangen/universal-dev-env
rm -rf ~/.universal-dev-env
rm -rf ~/.config/claude-code ~/.config/gh ~/.config/gemini
rm -f ~/bin/dev-start
# Then reinstall fresh
npm install -g @nhangen/universal-dev-env
uds init --no-cache
This project is licensed under the MIT License - see the LICENSE file for details.
FAQs
Universal development environment setup for modern web projects
The npm package @nhangen/universal-dev-env receives a total of 12 weekly downloads. As such, @nhangen/universal-dev-env popularity was classified as not popular.
We found that @nhangen/universal-dev-env demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Β It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socketβs AI scanner detected the supply chain attack and flagged the malware.