local-dev-server
Empathy Ledgerのローカル開発環境を、PM2を使って手間なく簡単に管理し、開発作業をスムーズに進められるように支援するSkill。
📜 元の英語説明(参考)
Zero-friction local development server management for Empathy Ledger using PM2
🇯🇵 日本人クリエイター向け解説
Empathy Ledgerのローカル開発環境を、PM2を使って手間なく簡単に管理し、開発作業をスムーズに進められるように支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o local-dev-server.zip https://jpskill.com/download/16994.zip && unzip -o local-dev-server.zip && rm local-dev-server.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/16994.zip -OutFile "$d\local-dev-server.zip"; Expand-Archive "$d\local-dev-server.zip" -DestinationPath $d -Force; ri "$d\local-dev-server.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
local-dev-server.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
local-dev-serverフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
ローカル開発サーバーの管理
目的: PM2 を使用した Empathy Ledger のための、摩擦のないローカル開発サーバー管理
トリガー: ユーザーがローカル開発サーバーの起動/停止/再起動を必要とする場合、または "address already in use" エラーが発生した場合
クイックコマンド
# 単一プロジェクト (Empathy Ledger のみ)
pm2 start empathy-ledger # サーバーを起動
pm2 restart empathy-ledger # サーバーを再起動
pm2 stop empathy-ledger # サーバーを停止
pm2 logs empathy-ledger # ログを表示
# フル ACT エコシステム (すべてのプロジェクト)
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh start
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh restart
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh stop
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh logs
これが解決する問題
問題点:
- ❌ ポートが使用中の場合、"address already in use" エラーが発生する
- ❌ コード変更後にサーバーを再起動するのを忘れる
- ❌ サーバーがクラッシュし、自動再起動しない
- ❌ どのプロセスがポートを使用しているかを見つけられない
- ❌ 手動の
npm run devは脆弱で、永続化されない
解決策:
- ✅ PM2 がプロセスライフサイクルを自動的に管理する
- ✅ クラッシュ時に自動再起動
- ✅ 一元化されたロギング
- ✅ ACT エコシステムデプロイスクリプトと連携
- ✅ 起動/停止/再起動のためのシンプルなコマンド
PM2 と npm run dev の使い分け
PM2 を使用する場合:
- 複数の ACT プロジェクトを同時に作業する場合
- ファイル変更時に自動再起動が必要な場合
- プロジェクト全体で一元化されたロギングが必要な場合
- テストのためにローカルにデプロイする場合
- サーバーがクラッシュし続け、永続性が必要な場合
npm run dev を使用する場合:
- 簡単な単発テスト
- コンソールログで積極的にデバッグする場合
- Empathy Ledger のみを作業する場合
- 迅速なコード変更を行い、即座にフィードバックを得たい場合
セットアップ (初回のみ)
1. PM2 をグローバルにインストール
npm install -g pm2
2. Empathy Ledger PM2 設定を作成
グローバルなエコシステム設定には、すでに Empathy Ledger が以下で設定されています。
/Users/benknight/act-global-infrastructure/deployment/ecosystem.config.cjs
Empathy Ledger 設定:
{
name: 'empathy-ledger',
script: '/Users/benknight/.nvm/versions/node/v20.19.3/bin/npm',
args: 'run dev',
cwd: '/Users/benknight/Code/empathy-ledger-v2',
env: {
PORT: 3001, // 注: スタンドアロン (3030) とは異なる
NODE_ENV: 'development',
},
autorestart: true,
max_restarts: 10,
min_uptime: '10s',
}
使用パターン
パターン 1: 単一プロジェクト (Empathy Ledger のみ)
サーバーを起動:
cd /Users/benknight/Code/empathy-ledger-v2
pm2 start npm --name "empathy-ledger-solo" -- run dev
ステータスを確認:
pm2 list
ログを表示:
pm2 logs empathy-ledger-solo
コード変更後に再起動:
pm2 restart empathy-ledger-solo
サーバーを停止:
pm2 stop empathy-ledger-solo
pm2 delete empathy-ledger-solo # PM2 から削除
パターン 2: フル ACT エコシステム
すべてのプロジェクトを起動 (推奨):
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh start
これにより、以下が起動します。
- ACT Regenerative Studio (ポート 3002)
- Empathy Ledger (ポート 3001)
- JusticeHub (ポート 3003)
- The Harvest Website (ポート 3004)
- ACT Farm (ポート 3005)
- ACT Placemat (ポート 3999)
すべて再起動:
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh restart
すべて停止:
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh stop
すべてのログを表示:
pm2 logs
すべてのプロジェクトを監視:
pm2 monit
パターン 3: "Address Already in Use" エラーの修正
問題: ポート 3030 (または任意のポート) が使用中
解決策 1: プロセスを強制終了し、PM2 で再起動
# ポート上のプロセスを見つけて強制終了
lsof -ti :3030 | xargs kill -9
# 自動復旧のために PM2 で起動
pm2 start npm --name "empathy-ledger-solo" -- run dev
解決策 2: PM2 の再起動を使用 (クリーンアップを処理)
pm2 restart empathy-ledger
解決策 3: エコシステムスクリプトを使用
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh restart
トラブルシューティング
サーバーが起動しない
PM2 のステータスを確認:
pm2 list
pm2 logs empathy-ledger --lines 50
ポートの可用性を確認:
lsof -i :3030
lsof -i :3001 # エコシステム設定を使用している場合
強制終了して再起動:
pm2 delete empathy-ledger
lsof -ti :3030 | xargs kill -9
pm2 start npm --name "empathy-ledger-solo" -- run dev
サーバーが繰り返しクラッシュする
最大再起動回数を確認:
pm2 logs empathy-ledger --err --lines 100
"max restarts reached" と表示される場合は、コードエラーの可能性があります。エラーログを確認してください。
cat /Users/benknight/act-global-infrastructure/deployment/logs/empathy-ledger-error.log
最大再起動回数を増やす (必要に応じて):
エコシステム設定を編集し、max_restarts: 10 → max_restarts: 20 に増やします。
コードの変更が反映されない
PM2 はデフォルトでは自動リロードしません
オプション 1: 変更後に手動で再起動:
pm2 restart empathy-ledger
オプション 2: ウォッチモードを有効にする (Next.js には推奨されません):
pm2 start npm --name "empathy-ledger-solo" --watch -- run dev
オプション 3: アクティブな開発には npm run dev を直接使用する
ベストプラクティス
開発ワークフロー
-
朝の起動:
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh start -
すべて実行中か確認:
pm2 list -
コードの作業 (自動再起動がクラッシュを処理)
-
必要に応じてログを表示:
pm2 logs empathy-ledger -
一日の終わり:
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh stop
テストワークフロー
-
コードを変更
-
サーバーを再起動:
(原文がここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Local Development Server Management
Purpose: Zero-friction local development server management for Empathy Ledger using PM2
Trigger: When user needs to start/stop/restart local dev server, or when "address already in use" errors occur
Quick Commands
# Single project (Empathy Ledger only)
pm2 start empathy-ledger # Start server
pm2 restart empathy-ledger # Restart server
pm2 stop empathy-ledger # Stop server
pm2 logs empathy-ledger # View logs
# Full ACT ecosystem (all projects)
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh start
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh restart
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh stop
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh logs
Problem This Solves
Pain Points:
- ❌ "address already in use" errors when port is occupied
- ❌ Forgetting to restart server after code changes
- ❌ Server crashes and doesn't auto-restart
- ❌ Can't find which process is using the port
- ❌ Manual
npm run devis fragile and doesn't persist
Solution:
- ✅ PM2 manages process lifecycle automatically
- ✅ Auto-restart on crashes
- ✅ Centralized logging
- ✅ Works with ACT ecosystem deployment script
- ✅ Simple commands for start/stop/restart
When to Use PM2 vs npm run dev
Use PM2 When:
- Working on multiple ACT projects simultaneously
- Need auto-restart on file changes
- Want centralized logging across projects
- Deploying locally for testing
- Server keeps crashing and you need persistence
Use npm run dev When:
- Quick one-off testing
- Actively debugging with console logs
- Only working on Empathy Ledger
- Making rapid code changes and want instant feedback
Setup (One-Time)
1. Install PM2 Globally
npm install -g pm2
2. Create Empathy Ledger PM2 Config
The global ecosystem config already has Empathy Ledger configured at:
/Users/benknight/act-global-infrastructure/deployment/ecosystem.config.cjs
Empathy Ledger Config:
{
name: 'empathy-ledger',
script: '/Users/benknight/.nvm/versions/node/v20.19.3/bin/npm',
args: 'run dev',
cwd: '/Users/benknight/Code/empathy-ledger-v2',
env: {
PORT: 3001, // Note: Different from standalone (3030)
NODE_ENV: 'development',
},
autorestart: true,
max_restarts: 10,
min_uptime: '10s',
}
Usage Patterns
Pattern 1: Single Project (Empathy Ledger Only)
Start Server:
cd /Users/benknight/Code/empathy-ledger-v2
pm2 start npm --name "empathy-ledger-solo" -- run dev
Check Status:
pm2 list
View Logs:
pm2 logs empathy-ledger-solo
Restart After Code Changes:
pm2 restart empathy-ledger-solo
Stop Server:
pm2 stop empathy-ledger-solo
pm2 delete empathy-ledger-solo # Remove from PM2
Pattern 2: Full ACT Ecosystem
Start All Projects (Recommended):
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh start
This starts:
- ACT Regenerative Studio (port 3002)
- Empathy Ledger (port 3001)
- JusticeHub (port 3003)
- The Harvest Website (port 3004)
- ACT Farm (port 3005)
- ACT Placemat (port 3999)
Restart All:
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh restart
Stop All:
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh stop
View All Logs:
pm2 logs
Monitor All Projects:
pm2 monit
Pattern 3: Fix "Address Already in Use" Errors
Problem: Port 3030 (or any port) is occupied
Solution 1: Kill Process and Restart with PM2
# Find and kill process on port
lsof -ti :3030 | xargs kill -9
# Start with PM2 for auto-recovery
pm2 start npm --name "empathy-ledger-solo" -- run dev
Solution 2: Use PM2 Restart (Handles Cleanup)
pm2 restart empathy-ledger
Solution 3: Use Ecosystem Script
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh restart
Troubleshooting
Server Won't Start
Check PM2 Status:
pm2 list
pm2 logs empathy-ledger --lines 50
Check Port Availability:
lsof -i :3030
lsof -i :3001 # If using ecosystem config
Force Kill and Restart:
pm2 delete empathy-ledger
lsof -ti :3030 | xargs kill -9
pm2 start npm --name "empathy-ledger-solo" -- run dev
Server Crashes Repeatedly
Check Max Restarts:
pm2 logs empathy-ledger --err --lines 100
If you see "max restarts reached", there's likely a code error. Check the error logs:
cat /Users/benknight/act-global-infrastructure/deployment/logs/empathy-ledger-error.log
Increase Max Restarts (if needed):
Edit ecosystem config and increase max_restarts: 10 → max_restarts: 20
Code Changes Not Reflecting
PM2 Doesn't Auto-Reload by Default
Option 1: Restart manually after changes:
pm2 restart empathy-ledger
Option 2: Enable watch mode (not recommended for Next.js):
pm2 start npm --name "empathy-ledger-solo" --watch -- run dev
Option 3: Use npm run dev directly for active development
Best Practices
Development Workflow
-
Morning Startup:
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh start -
Check All Running:
pm2 list -
Work on Code (Auto-Restart Handles Crashes)
-
View Logs When Needed:
pm2 logs empathy-ledger -
End of Day:
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh stop
Testing Workflow
-
Make Code Changes
-
Restart Server:
pm2 restart empathy-ledger -
Wait 3-5 Seconds for Startup
-
Test API/Feature
-
Check Logs for Errors:
pm2 logs empathy-ledger --lines 20
Integration with Existing Tools
Works With Supabase Local Dev
# Start Supabase
npx supabase start
# Start Empathy Ledger with PM2
pm2 start npm --name "empathy-ledger-solo" -- run dev
# Both run together
pm2 list
Works With Database Migrations
# Run migration
npx supabase db push
# Restart server to load new schema
pm2 restart empathy-ledger
Works With Testing Scripts
# Server already running via PM2
pm2 list
# Run test script
bash test-syndication.sh
# Logs show the requests
pm2 logs empathy-ledger --lines 30
PM2 Cheat Sheet
| Command | Purpose |
|---|---|
pm2 start <script> |
Start a process |
pm2 list |
Show all processes |
pm2 logs |
View all logs (live) |
pm2 logs <name> |
View specific process logs |
pm2 restart <name> |
Restart process |
pm2 stop <name> |
Stop process |
pm2 delete <name> |
Remove from PM2 |
pm2 monit |
Open monitoring dashboard |
pm2 flush |
Clear all logs |
pm2 save |
Save current process list |
pm2 startup |
Enable PM2 on system boot |
Automation Recommendations
Create Project-Specific Script
Add to package.json:
{
"scripts": {
"dev": "next dev -p 3030",
"dev:pm2": "pm2 start npm --name empathy-ledger-solo -- run dev",
"dev:restart": "pm2 restart empathy-ledger-solo",
"dev:stop": "pm2 stop empathy-ledger-solo && pm2 delete empathy-ledger-solo",
"dev:logs": "pm2 logs empathy-ledger-solo"
}
}
Usage:
npm run dev:pm2 # Start with PM2
npm run dev:restart # Restart
npm run dev:logs # View logs
npm run dev:stop # Stop and remove
Create Alias in Shell (.zshrc or .bashrc)
# Empathy Ledger shortcuts
alias el-start='pm2 start npm --name empathy-ledger-solo -- run dev'
alias el-restart='pm2 restart empathy-ledger-solo'
alias el-stop='pm2 stop empathy-ledger-solo && pm2 delete empathy-ledger-solo'
alias el-logs='pm2 logs empathy-ledger-solo'
alias el-status='pm2 list | grep empathy'
# ACT Ecosystem shortcuts
alias act-start='/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh start'
alias act-restart='/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh restart'
alias act-stop='/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh stop'
alias act-logs='pm2 logs'
alias act-status='pm2 list'
Reload shell:
source ~/.zshrc # or source ~/.bashrc
Usage:
el-start # Start Empathy Ledger
el-restart # Restart
el-logs # View logs
el-stop # Stop
ACT Ecosystem Deployment Script
Location: /Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh
Commands:
./deploy-act-ecosystem.sh start # Start all projects
./deploy-act-ecosystem.sh stop # Stop all projects
./deploy-act-ecosystem.sh restart # Restart all projects
./deploy-act-ecosystem.sh status # Show status
./deploy-act-ecosystem.sh logs # Show all logs
./deploy-act-ecosystem.sh monitor # Open PM2 dashboard
Features:
- ✅ Starts all 6 ACT projects
- ✅ Auto-opens sites in Chrome (via AppleScript)
- ✅ Centralized logging to
/Users/benknight/act-global-infrastructure/deployment/logs/ - ✅ Auto-restart on crashes
- ✅ Color-coded status output
Ports:
- ACT Studio: 3002
- Empathy Ledger: 3030
- JusticeHub: 3003
- Harvest: 3004
- ACT Farm: 3005
- Placemat: 3999
Note: All projects use consistent ports across standalone and ecosystem modes
Common Scenarios
Scenario 1: "Address Already in Use" Error
User sees:
Error: listen EADDRINUSE: address already in use :::3030
Claude Response:
# Kill existing process
lsof -ti :3030 | xargs kill -9
# Start with PM2 for reliability
pm2 start npm --name "empathy-ledger-solo" -- run dev
# Verify running
pm2 list
Scenario 2: Server Needs Restart After Schema Fix
User says: "I fixed the schema, now restart the server"
Claude Response:
# If using PM2
pm2 restart empathy-ledger
# If using ecosystem
/Users/benknight/act-global-infrastructure/deployment/scripts/deploy-act-ecosystem.sh restart
# Wait for startup
sleep 5
# Test
curl http://localhost:3030
Scenario 3: Testing Syndication System
User says: "Test the syndication API"
Claude Response:
# Ensure server is running
pm2 list | grep empathy || pm2 start npm --name "empathy-ledger-solo" -- run dev
# Wait for startup
sleep 5
# Run test
bash test-syndication.sh
# Check logs if errors
pm2 logs empathy-ledger-solo --lines 50
Integration with Development Workflow
Sprint Development Cycle
Sprint Start:
act-start # Start all ACT projects
During Development:
# Make code changes
# ...
# Restart to test
pm2 restart empathy-ledger
# View logs
pm2 logs empathy-ledger
End of Sprint:
# Stop all projects
act-stop
# Or keep running if continuing tomorrow
pm2 save # Save current state
Log Management
View Live Logs:
pm2 logs empathy-ledger
View Last N Lines:
pm2 logs empathy-ledger --lines 100
View Error Logs Only:
pm2 logs empathy-ledger --err
Clear All Logs:
pm2 flush
Log File Locations (Ecosystem):
/Users/benknight/act-global-infrastructure/deployment/logs/empathy-ledger-out.log
/Users/benknight/act-global-infrastructure/deployment/logs/empathy-ledger-error.log
When Claude Should Use This Skill
Trigger Phrases:
- "Start the dev server"
- "Restart the server"
- "Address already in use"
- "Port 3030 is busy"
- "Server won't start"
- "Test the API" (ensure server running first)
- "Deploy locally"
- "Run all ACT projects"
Actions Claude Should Take:
-
Check if server is running:
pm2 list | grep empathy -
If not running, start it:
pm2 start npm --name "empathy-ledger-solo" -- run dev -
If running but needs restart:
pm2 restart empathy-ledger-solo -
Wait for startup:
sleep 5 -
Verify responsive:
curl -s http://localhost:3030 > /dev/null && echo "✅ Server running" || echo "❌ Server not responding" -
Proceed with testing/development
Success Criteria
After following this skill, user should:
- ✅ Have server running reliably
- ✅ Be able to restart server easily
- ✅ No more "address already in use" errors
- ✅ Have access to centralized logs
- ✅ Know how to use PM2 for all ACT projects
This skill eliminates the "local deployment shit fight" by providing a consistent, reliable, PM2-based workflow that aligns with the ACT ecosystem deployment strategy.