Agent skill
port-allocator
Automatically allocate and manage development server ports, avoiding port conflicts between multiple Claude Code instances
Install this agent skill to your Project
npx add-skill https://github.com/aiskillstore/marketplace/tree/main/skills/guo-yu/port-allocator
SKILL.md
Port Allocator
Smart port allocator that only assigns ports to real projects containing package.json.
Usage
| Command | Description |
|---|---|
/port-allocator |
Allocate/query port for current project |
/port-allocator list |
List all allocated ports |
/port-allocator scan |
Scan code directory, discover and allocate ports for new projects |
/port-allocator config <path> |
Set the main code directory path |
/port-allocator add <dir-path> |
Manually add port allocation for a project |
/port-allocator allow |
Configure Claude Code permissions for this skill's commands |
Important Rules
1. Only Operate on Current Project's Ports When Restarting Services
When restarting the development server, only kill processes within the current project's port range, never affect other ports:
# Correct: Only kill current project ports (e.g., 3000-3009)
lsof -ti:3000 | xargs kill -9 2>/dev/null
lsof -ti:3001 | xargs kill -9 2>/dev/null
# Wrong: Kill all node processes or other ports
pkill -f node # Will affect other projects!
lsof -ti:3010 | xargs kill # This is another project's port!
2. Append Rather Than Overwrite When Updating CLAUDE.md
When updating ~/.claude/CLAUDE.md, must preserve the user's existing content:
# Correct: Check and append or update specific sections
# Wrong: Directly overwrite the entire file
Execution Steps
Command: /port-allocator allow
Configure Claude Code to allow commands used by this skill, avoiding manual confirmation each time:
- Read
~/.claude/settings.json(if exists) - Merge the following commands into
permissions.allowarray (preserve existing config):
{
"permissions": {
"allow": [
"Bash(ls -d *)",
"Bash(find * -maxdepth * -name package.json *)",
"Bash(cat ~/.claude/*)",
"Bash(dirname *)",
"Bash(lsof -i:3*)",
"Bash(lsof -ti:3*)"
]
}
}
- Write updated settings.json
- Output the list of added permissions
Output Format:
Configured Claude Code permissions
Added allowed command patterns:
- Bash(ls -d *)
- Bash(find * -maxdepth * -name package.json *)
- Bash(cat ~/.claude/*)
- Bash(lsof -i:3*)
- Bash(lsof -ti:3*)
Config file: ~/.claude/settings.json
Command: /port-allocator config <path>
Set the user's main code directory:
- Verify path exists (required! Error and exit if not found)
- Update
code_rootfield in~/.claude/port-registry.json - Output confirmation
First Run: Auto-Detection
On first run (when ~/.claude/port-registry.json doesn't exist or has no code_root), automatically detect the code directory:
# Check common code directories
for dir in ~/Codes ~/Code ~/Projects ~/Dev ~/Development ~/repos; do
if [ -d "$dir" ]; then
CODE_ROOT="$dir"
break
fi
done
# If none exist, default to ~/Codes
CODE_ROOT="${CODE_ROOT:-~/Codes}"
Auto-detection output:
First run, detecting code directory...
Code directory detected: ~/Codes
Port registry initialized: ~/.claude/port-registry.json
To change, use:
/port-allocator config ~/your/code/path
If no directory found:
Could not auto-detect code directory.
Please configure manually:
/port-allocator config ~/your/code/path
Common locations:
~/Codes, ~/Code, ~/Projects, ~/Dev
Command: /port-allocator scan
Scan code directory, automatically discover and register projects:
- Read
~/.claude/port-registry.jsonto getcode_root- If config doesn't exist, run auto-detection first
- If
code_rootdirectory doesn't exist, prompt user to configure
- Find all directories containing
package.json(exact to package.json location):
# Find all package.json, exclude build artifact directories
find <code_root> -maxdepth 3 -name "package.json" -type f \
-not -path "*/.next/*" \
-not -path "*/node_modules/*" \
-not -path "*/dist/*" \
-not -path "*/build/*" | while read pkg; do
dirname "$pkg"
done
-
Important: Path must be exact to the directory containing
package.json- Correct:
~/Codes/chekusu/landing - Wrong:
~/Codes/chekusu(if package.json is in subdirectory)
- Correct:
-
For each discovered project directory:
- Check if already in registry
- If not, allocate next available port range
-
Update config file (append mode, don't overwrite user content)
-
Output scan result summary
Command: /port-allocator (default)
Allocate/query port for current project:
- Get current working directory
- Read config to get
code_rootand allocated ports - Match current directory to corresponding project
- If no
package.json, indicate this is not a project needing ports - If exists, check if port already allocated, auto-allocate if not
- Output port info
Command: /port-allocator list
List all allocated ports (read-only operation).
Output Format
Port Information
Project directory: ~/Codes/chekusu/landing
package.json: Detected
Port range: 3000-3009
- Main app: 3000
- API: 3001
- Other services: 3002-3009
Warning: Only operate on ports 3000-3009 when restarting services!
Scan Results
Scan complete: ~/Codes
Registered projects (N):
- chekusu/landing: 3000-3009
- saifuri: 3010-3019
Newly discovered projects (M):
- new-project: 3090-3099 (newly allocated)
Skipped (K):
- .next, node_modules (build artifacts)
- research-folder (no package.json)
Port Allocation Rules
- Each project is allocated 10 consecutive ports
- Starting port: 3000
- Interval: 10
x0: Main application (e.g., 3000, 3010, 3020)x1: API service (e.g., 3001, 3011, 3021)x2-x9: Other services (database, cache, etc.)
Configuration Files
- Port registry:
~/.claude/port-registry.json - Global instructions:
~/.claude/CLAUDE.md(append mode updates) - Claude Code settings:
~/.claude/settings.json(stores allowedCommands) - Skip patterns:
.next,node_modules,dist,build
Notes
- Only operate on project ports - Never affect other projects when restarting services
- Append not overwrite - Preserve user's existing content when updating config files
- Precise paths - Point to actual directory containing package.json
- Skip build artifacts - .next, node_modules, etc. don't get port allocation
- First use - Recommend running
/port-allocator allowto configure permissions first
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
perigon-backend
Perigon ASP.NET Core + EF Core + Aspire conventions
perigon-agent
Pointers for Copilot/agents to apply Perigon conventions
perigon-angular
Angular 21+ standalone/Material/signal conventions for Perigon WebApp
fastapi-mastery
Comprehensive FastAPI development skill covering REST API creation, routing, request/response handling, validation, authentication, database integration, middleware, and deployment. Use when working with FastAPI projects, building APIs, implementing CRUD operations, setting up authentication/authorization, integrating databases (SQL/NoSQL), adding middleware, handling WebSockets, or deploying FastAPI applications. Triggered by requests involving .py files with FastAPI code, API endpoint creation, Pydantic models, or FastAPI-specific features.
context7-efficient
Token-efficient library documentation fetcher using Context7 MCP with 86.8% token savings through intelligent shell pipeline filtering. Fetches code examples, API references, and best practices for JavaScript, Python, Go, Rust, and other libraries. Use when users ask about library documentation, need code examples, want API usage patterns, are learning a new framework, need syntax reference, or troubleshooting with library-specific information. Triggers include questions like "Show me React hooks", "How do I use Prisma", "What's the Next.js routing syntax", or any request for library/framework documentation.
browser-use
Browser automation using Playwright MCP. Navigate websites, fill forms, click elements, take screenshots, and extract data. Use when tasks require web browsing, form submission, web scraping, UI testing, or any browser interaction.
Didn't find tool you were looking for?