Receber por email
← Voltar para o catálogo

port-allocator

Automatically allocate and manage development server ports, avoiding port conflicts between multiple Claude Code instances

367estrelas
Atualizado há 4 meses

Ver no GitHub ↗

Como adicionar

/plugin marketplace add aiskillstore/marketplace

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/port-allocator/svg)](https://www.skillteca.com.br/skills/port-allocator)

Skills relacionadas

Ver todas de Segurança →

Alerta por categoria

Receba novas skills de Segurança toda segunda

1 email curto, só com as skills novas de Segurança. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

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:

  1. Read ~/.claude/settings.json (if exists)
  2. Merge the following commands into 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*)"
    ]
  }
}
  1. Write updated settings.json
  2. 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:

  1. Verify path exists (required! Error and exit if not found)
  2. Update code_root field in ~/.claude/port-registry.json
  3. 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:

  1. Read ~/.claude/port-registry.json to get code_root
  2. If config doesn't exist, run auto-detection first
  3. If code_root directory doesn't exist, prompt user to configure
  4. 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
  1. Important: Path must be exact to the directory containing package.json
  2. Correct: ~/Codes/chekusu/landing
  3. Wrong: ~/Codes/chekusu (if package.json is in subdirectory)
  1. For each discovered project directory:
  2. Check if already in registry
  3. If not, allocate next available port range
  4. Update config file (append mode, don't overwrite user content)
  5. Output scan result summary

Command: /port-allocator (default)

Allocate/query port for current project:

  1. Get current working directory
  2. Read config to get code_root and allocated ports
  3. Match current directory to corresponding project
  4. If no package.json, indicate this is not a project needing ports
  5. If exists, check if port already allocated, auto-allocate if not
  6. 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

  1. Only operate on project ports - Never affect other projects when restarting services
  2. Append not overwrite - Preserve user's existing content when updating config files
  3. Precise paths - Point to actual directory containing package.json
  4. Skip build artifacts - .next, node_modules, etc. don't get port allocation
  5. First use - Recommend running /port-allocator allow to configure permissions first
Compartilhar X LinkedIn