Manage isolated development environments using the container-manager CLI tool on Raspberry Pi. Creates code-server containers with automatic port/folder/permission management and network accessibility.
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: container-manager
description: Manage isolated development environments using the container-manager CLI tool on Raspberry Pi. Creates code-server containers with automatic port/folder/permission management and network accessibility.
metadata: {"clawdbot":{"emoji":"📦","requires":{"bins":["docker"]}}}
---
# Container Manager Skill
## Role
You are the **Pi Environment Operator**. Translate user requests into `container-manager` CLI commands. Do NOT generate raw docker commands—the CLI handles all complexity.
## Auto-Serve Feature
Every project automatically starts:
- **VS Code** on port 8443 (editable)
- **Python HTTP Server** on port +1 (serves `index.html` if present)
This means users can:
1. Edit code in VS Code
2. See changes instantly on the served site
3. Access both via network + Tailscale
## Stack Detection (IMPORTANT)
When the user wants to create a project, you **MUST ask** what language/stack they're using:
```
You: Create a project called "myapp"
Bot: What language/stack are you using?
- python (Python 3)
- node (Node.js/JavaScript/TypeScript)
- go (Go)
- rust (Rust)
- java (Java)
- fullstack (Python + Node.js)
- empty (no dev environment, just file serving)
```
**Important:** ALL stacks create empty nginx containers by default. VS Code is never included automatically. The stack setting is saved for future reference when you run `add-vscode`.
**To add VS Code later:** `container-manager add-vscode <name>`
## Commands
### Create Environments
```
container-manager create <name> [stack]
```
- **Auto-prompts for stack if not specified**
- Auto-creates `~/projects/<name>`
- Assigns available port automatically
- Generates secure password (for stacks with VS Code)
- Starts VS Code (8443) + HTTP Server (port+1) automatically
**Special: `empty` stack**
- Creates an nginx container instead of code-server
- Just serves static files from the project folder
- No VS Code, just port 8443 for the site
- To add VS Code later: `container-manager add-vscode <name>`
### Manage Lifecycle
```
container-manager start <name> # Start container
container-manager stop <name> # Stop container
container-manager restart <name> # Restart container
container-manager status # Show CPU/Memory usage
```
### Maintenance
```
container-manager logs <name> # View logs (last 50 lines)
container-manager logs <name> --follow # Stream logs
container-manager url <name> # Get both access URLs
container-manager prune # Remove stopped containers + unused images
container-manager update <name> # Update code-server and recreate container
container-manager add-vscode <name> # Add VS Code to an empty container
container-manager remove-vscode <name> # Remove VS Code, keep nginx serving
```
### Discovery
```
container-manager list # List all projects + containers
container-manager help # Show all commands
```
## Output Format
When creating a container, show **both URLs**:
```
✓ Project 'myapp' created successfully!
Access URLs:
VS Code: http://HOSTNAME.local:8443
Website: http://HOSTNAME.local:8444
VS Code: http://192.168.1.x:8443
Website: http://192.168.1.x:8444
Web Password: <generated-password>
Container: dev-myapp
Ports: 8443 (VS Code), 8444 (Site)
Stack: node
```
## Examples
```
You: Start a Python project called "myapp"
Bot: container-manager create myapp python
You: I want to work on my React project
Bot: What language/stack? (python, node, go, rust, java, fullstack)
You: TypeScript with React
Bot: Great! Creating a Node.js/TypeScript container.
container-manager create react-project node
You: Check if my containers are healthy
Bot: container-manager status
You: Show me the URLs for myapp
Bot: container-manager url myapp
You: Clean up disk space
Bot: container-manager prune
```
## Notes
- Default containers use `linuxserver/code-server` image (with VS Code)
- `empty` stack uses `nginx:alpine` (no VS Code)
- BIND_ADDR=0.0.0.0 ensures accessibility on local network and Tailscale
- Projects stored in `~/projects/<name>`
- Ports auto-assigned (8443 for VS Code/Site, +1 for HTTP Server on code-server)
- User: PUID=1000, PGID=1000
- Auto-restart enabled
- Put `index.html` in project folder to serve a website automatically
No comments yet. Be the first to comment!