CLI Tool Discovery - Cross-Platform Support
Overview
The CLI tool catalog now supports Linux, macOS, and Windows with platform-specific filtering.
Platform Detection
- Linux:
process.platform === 'linux' - macOS:
process.platform === 'darwin' - Windows:
process.platform === 'win32'
Command Existence Checking
Unix (Linux/macOS)
bash
which ffmpegWindows
cmd
where ffmpegThe scanner automatically uses the correct command based on platform.
Tool Catalog Organization
Cross-Platform Tools (No platform restriction)
- ffmpeg, git, docker, npm, curl, etc.
- These work on all platforms (if installed)
Unix-Only Tools (Linux/macOS)
- grep, sed, awk, find, ssh, tar
- Most text processing and file utilities
- Marked with:
platforms: ['linux', 'darwin']
Windows-Only Tools
- powershell, cmd, robocopy, tasklist, ipconfig
- Marked with:
platforms: ['win32']
Windows-Specific Tools Added
Shell & Scripting
- powershell - Windows PowerShell
- pwsh - PowerShell Core (cross-platform)
- cmd - Windows Command Prompt
- wsl - Windows Subsystem for Linux
Package Managers
- winget - Windows Package Manager
- choco - Chocolatey
- scoop - Scoop installer
File Operations
- robocopy - Robust file copy
- xcopy - Extended copy
Process Management
- tasklist - List processes
- taskkill - Kill processes
Network
- netsh - Network shell
- ipconfig - IP configuration
System
- systeminfo - System information
- wmic - WMI command-line
Total Tool Count
- Cross-platform: ~90 tools
- Unix-only: ~50 tools
- Windows-only: ~15 tools
- Total catalog: ~155 tools
Usage on Different Platforms
macOS (current)
bash
export NCP_CLI_AUTOSCAN=true
ncp find "text processing"
# Returns: grep, sed, awk, etc.Linux
bash
export NCP_CLI_AUTOSCAN=true
ncp find "text processing"
# Returns: grep, sed, awk, etc.Windows
cmd
set NCP_CLI_AUTOSCAN=true
ncp find "process list"
# Returns: tasklist, wmic, etc.Testing
Test on macOS/Linux
bash
node tests/debug-cli-scanner.cjs
# Should find Unix tools (grep, sed, find, ssh, etc.)
# Should NOT find Windows toolsTest on Windows
cmd
node tests\debug-cli-scanner.cjs
# Should find Windows tools (tasklist, ipconfig, etc.)
# Should NOT find Unix tools (unless in WSL/Git Bash)Platform-Specific Notes
Windows Considerations
- Git Bash - Has Unix tools, platform detection shows 'win32'
- WSL - Full Linux environment, shows as 'linux'
- PowerShell - Native Windows, use Windows tools
macOS Considerations
- Most Unix tools pre-installed
- Homebrew for additional tools
- GNU versions available via Homebrew (gnu-sed, gnu-tar)
Linux Considerations
- Most tools pre-installed
- Package manager varies (apt, yum, dnf)
- Minimal systems may lack some tools
Future Enhancements
- [ ] Detect WSL vs native Windows
- [ ] Suggest package manager commands for missing tools
- [ ] Add more Windows PowerShell cmdlets
- [ ] Platform-specific tool aliases (dir → ls on Windows)