بنقرة واحدة
cmd-pm2
Auto-analyze project and generate PM2 service configuration and startup commands.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Auto-analyze project and generate PM2 service configuration and startup commands.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Scan installed skills to extract cross-cutting principles and distill them into rules — append, revise, or create new rule files.
Audit all installed OpenClaw skills for quality: content overlap, freshness, and uniqueness. Supports Quick Scan (changed only) and Full Stocktake modes.
Cluster MEMORY.md entries by theme and optionally generate SKILL.md drafts.
Export MEMORY.md to a timestamped markdown file for sharing or backup.
Import memory entries from a markdown export file, merging with MEMORY.md without duplicating.
Show current workspace memory: MEMORY.md contents, pending recalls, and index status.
| name | cmd_pm2 |
| description | Auto-analyze project and generate PM2 service configuration and startup commands. |
| user-invocable | true |
| origin | openclaw-mas |
| argument-hint | <project-path> |
The first argument is the project path. Before doing anything else:
Auto-analyze project and generate PM2 service commands.
Command: $ARGUMENTS
npm install -g pm2 if missing)| 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
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
Must use .cjs extension
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 | - |
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));
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"
```
Stop all services.
```bash
cd "{PROJECT_ROOT}" && pm2 stop all
```
Restart all services.
```bash
cd "{PROJECT_ROOT}" && pm2 restart all
```
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}"
```
Stop {name} ({port}).
```bash
cd "{PROJECT_ROOT}" && pm2 stop {name}
```
Restart {name} ({port}).
```bash
cd "{PROJECT_ROOT}" && pm2 restart {name}
```
View all PM2 logs.
```bash
cd "{PROJECT_ROOT}" && pm2 logs
```
View PM2 status.
```bash
cd "{PROJECT_ROOT}" && pm2 status
```
Set-Location "{PROJECT_ROOT}"
pm2 logs {name}
Set-Location "{PROJECT_ROOT}"
pm2 monit
ecosystem.config.cjs (not .js)windowsHide: truestart wt.exe -d "{path}" pwsh -NoExit -c "command"Based on $ARGUMENTS, execute init:
ecosystem.config.cjs{backend}/start.cjs for Python services (if applicable).claude/commands/.claude/scripts/After generating files, append PM2 section to project's CLAUDE.md (create if not exists):
## PM2 Services
| Port | Name | Type |
|------|------|------|
| {port} | {name} | {type} |
**Terminal Commands:**
```bash
pm2 start ecosystem.config.cjs # First time
pm2 start all # After first time
pm2 stop all / pm2 restart all
pm2 start {name} / pm2 stop {name}
pm2 logs / pm2 status / pm2 monit
pm2 save # Save process list
pm2 resurrect # Restore saved list
```
Rules for CLAUDE.md update:
After all files generated, output:
## PM2 Init Complete
**Services:**
| Port | Name | Type |
|------|------|------|
| {port} | {name} | {type} |
**Claude Commands:** /pm2-all, /pm2-all-stop, /pm2-{port}, /pm2-{port}-stop, /pm2-logs, /pm2-status
**Terminal Commands:**
## First time (with config file)
pm2 start ecosystem.config.cjs && pm2 save
## After first time (simplified)
pm2 start all # Start all
pm2 stop all # Stop all
pm2 restart all # Restart all
pm2 start {name} # Start single
pm2 stop {name} # Stop single
pm2 logs # View logs
pm2 monit # Monitor panel
pm2 resurrect # Restore saved processes
**Tip:** Run `pm2 save` after first start to enable simplified commands.