port-allocator/SKILL.md
Automatically allocate and manage development server ports, avoiding port conflicts between multiple Claude Code instances
npx skillsauth add susuyan/skills port-allocatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Smart port allocator that only assigns ports to real projects containing package.json.
| 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 |
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!
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
/port-allocator allowConfigure Claude Code to allow commands used by this skill, avoiding manual confirmation each time:
~/.claude/settings.json (if exists)permissions.allow array (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*)"
]
}
}
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
/port-allocator config <path>Set the user's main code directory:
code_root field in ~/.claude/port-registry.jsonOn 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
/port-allocator scanScan code directory, automatically discover and register projects:
~/.claude/port-registry.json to get code_root
code_root directory doesn't exist, prompt user to configurepackage.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
~/Codes/chekusu/landing~/Codes/chekusu (if package.json is in subdirectory)For each discovered project directory:
Update config file (append mode, don't overwrite user content)
Output scan result summary
/port-allocator (default)Allocate/query port for current project:
code_root and allocated portspackage.json, indicate this is not a project needing ports/port-allocator listList all allocated ports (read-only operation).
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 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)
x0: Main application (e.g., 3000, 3010, 3020)x1: API service (e.g., 3001, 3011, 3021)x2-x9: Other services (database, cache, etc.)~/.claude/port-registry.json~/.claude/CLAUDE.md (append mode updates)~/.claude/settings.json (stores allowedCommands).next, node_modules, dist, build/port-allocator allow to configure permissions firstresearch
Skill permission analysis, one-time authorization, analyze skill permissions, batch authorization
documentation
Translate SKILL.md and README.md files into multiple languages for sharing skills internationally
development
Automatically share skills, migrate local skills to code repositories, open source skills, skill version management, configure git remote
tools
从社交媒体、技术新闻和博客文章中提取核心资源,生成结构化 Markdown 条目并归档到指定文件夹。支持智能分类和多种输出样式。