Skip to main content

port-allocator

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

Zur Installation springen

Quellinformationen

Repository
RunnerQuan/SAFE-Agent
Letzte Quellaktivität
30. März 2026 um 04:33
Erkannte Sprache von SKILL.md
Englisch
Sterne
0
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
7 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
port-allocator
description
Automatically allocate and manage development server ports, avoiding port conflicts between multiple Claude Code instances
# 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: ```bash # 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**: ```bash # 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): ```json { "permissions": { "allow": [ "Bash(ls -d *)", "Bash(find * -maxdepth * -name package.json *)", "Bash(cat ~/.claude/*)", "Bash(dirname *)", "Bash(lsof -i:3*)", "Bash(lsof -ti:3*)" ] } } ``` 3. Write updated settings.json 4. 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: ```bash # 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` - If config doesn't exist, run auto-detection first - If `code_root` directory doesn't exist, prompt user to configure 2. Find all directories containing `package.json` (exact to package.json location): ```bash # 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 ``` 3. **Important**: Path must be exact to the directory containing `package.json` - Correct: `~/Codes/chekusu/landing` - Wrong: `~/Codes/chekusu` (if package.json is in subdirectory) 4. For each discovered project directory: - Check if already in registry - If not, allocate next available port range 5. Update config file (**append mode**, don't overwrite user content) 6. 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
Auf GitHub ansehen