LLM Skills
~/catalog/deployment & infra//pm2
Deployment & infraGitHub source

PM2 service commands

/pm2

Analyze a project and generate PM2 service commands for the detected front-end, back-end, or database services.

affaan-maffaan-m
240.5k
May 20, 2026
MIT License
// skill content

--- description: Analyze a project and generate PM2 service commands for detected frontend, backend, or database services. --- # PM2 Init Auto-analyze project and generate PM2 service commands. Command: $ARGUMENTS --- ## Workflow 1. Check PM2 (install via npm install -g pm2 if missing) 2. Scan project to identify services (frontend/backend/database) 3. Generate config files and individual command files --- ## Service Detection | Type | Detection | Default Port | |------|-----------|--------------| | Vite | vite.config. | 5173 | | Next.js | next.config. | 3000 | | Nuxt | nuxt.config. | 3000 | | CRA | react-scripts in package.json | 3000 | | Express/Node | server/backend/api directory + package.json | 3000 | | FastAPI/Flask | requirements.txt / pyproject.toml | 8000 | | Go | go.mod / main.go | 8080 | Port Detection Priority*: User specified > .env > config file > scripts args > default port --- ## Generated Files `` project/ ├── ecosystem.config.cjs # PM2 config ├── {backend}/start.cjs # Python wrapper (if applicable) └── .claude/ ├── commands/ │ ├── pm2-all.md # Start all + monit │ ├── pm2-all-stop.md # Stop all │ ├── pm2-all-restart.md # Restart all │ ├── pm2-{port}.md # Start single + logs │ ├── pm2-{port}-stop.md # Stop single │ ├── pm2-{port}-restart.md # Restart single │ ├── pm2-logs.md # View all logs │ └── pm2-status.md # View status └── scripts/ ├── pm2-logs-{port}.ps1 # Single service logs └── pm2-monit.ps1 # PM2 monitor ` --- ## Windows Configuration (IMPORTANT) ### ecosystem.config.cjs **Must use .cjs extension** `javascript module.exports = { apps: [ // Node.js (Vite/Next/Nuxt) { name: 'project-3000', cwd: './packages/web', script: 'node_modules/vite/bin/vite.js', args: '--port 3000', interpreter: 'C:/Program Files/nodejs/node.exe', env: { NODE_ENV: 'development' } }, // Python { name: 'project-8000', cwd: './backend', script: 'start.cjs', interpreter: 'C:/Program Files/nodejs/node.exe', env: { PYTHONUNBUFFERED: '1' } } ] } ` **Framework script paths:** | Framework | script | args | |-----------|--------|------| | Vite | node_modules/vite/bin/vite.js | --port {port} | | Next.js | node_modules/next/dist/bin/next | dev -p {port} | | Nuxt | node_modules/nuxt/bin/nuxt.mjs | dev --port {port} | | Express | src/index.js or server.js | - | ### Python Wrapper Script (start.cjs) `javascript const { spawn } = require('child_process'); const proc = spawn('python', ['-m', 'uvicorn', 'app.main:app', '--host', '0.0.0.0', '--port', '8000', '--reload'], { cwd: __dirname, stdio: 'inherit', windowsHide: true }); proc.on('close', (code) => process.exit(code)); ` --- ## Command File Templates (Minimal Content) ### pm2-all.md (Start all + monit) ``markdown Start all services and open PM2 monitor. `bash cd "{PROJECT_ROOT}" && pm2 start ecosystem.config.cjs && start wt.exe -d "{PROJECT_ROOT}" pwsh -NoExit -c "pm2 monit" ` `` ### pm2-all-stop.md ``markdown Stop all services. `bash cd "{PROJECT_ROOT}" && pm2 stop all ` `` ### pm2-all-restart.md ``markdown Restart all services. `bash cd "{PROJECT_ROOT}" && pm2 restart all ` `` ### pm2-{port}.md (Start single + logs) ``markdown Start {name} ({port}) and open logs. `bash cd "{PROJECT_ROOT}" && pm2 start ecosystem.config.cjs --only {name} && start wt.exe -d "{PROJECT_ROOT}" pwsh -NoExit -c "pm2 logs {name}" ` `` ### pm2-{port}-stop.md ``markdown Stop {name} ({port}). `bash cd "{PROJECT_ROOT}" && pm2 stop {name} ` `` ### pm2-{port}-restart.md ``markdown Restart {name} ({port}). `bash cd "{PROJECT_ROOT}" && pm2 restart {name} ` `` ### pm2-logs.md ``markdown View all PM2 logs. `bash cd "{PROJECT_ROOT}" && pm2 logs ` `` ### pm2-status.md ``markdown View PM2 status. `bash cd "{PROJECT_ROOT}" && pm2 status ` `` ### PowerShell Scripts (pm2-logs-{port}.ps1) `powershell Set-Location "{PROJECT_ROOT}" pm2 logs {name} ` ### PowerShell Scripts (pm2-monit.ps1) `powershell Set-Location "{PROJECT_ROOT}" pm2 monit ` --- ## Key Rules 1. **Config file**: ecosystem.config.cjs (not .js) 2. **Node.js**: Specify bin path directly + interpreter 3. **Python**: Node.js wrapper script + windowsHide: true 4. **Open new window**: start wt.exe -d "{path}" pwsh -NoExit -c "command" 5. **Minimal content**: Each command file has only 1-2 lines description + bash block 6. **Direct execution**: No AI parsing needed, just run the bash command --- ## Execute Based on $ARGUMENTS, execute init: 1. Scan project for services 2. Generate ecosystem.config.cjs 3. Generate {backend}/start.cjs for Python services (if applicable) 4. Generate command files in .claude/

// original public source
affaan-m/ECC
/commands/pm2.md
License: MIT License
Independent project, not affiliated with Anthropic. This skill remains the property of its original author.
// install this skill
Paste this command in your terminal at the root of your project:
mkdir -p .claude/commands && curl -o ".claude/commands/pm2.md" "https://raw.githubusercontent.com/affaan-m/ECC/main/commands/pm2.md"
Then in Claude Code, type /pm2 to activate it.
open_in_newOpen original source
// save
Save available after sign in.
loginSign in to save
// information
Creatoraffaan-m
Stars 240.5k
LicenseMIT License
UpdatedMay 20, 2026
Format.md
AccessFree
// similar

Skills Deployment & infra

View allarrow_forward