Agent skill

admin-unix

Native macOS and Linux administration (non-WSL). Profile-aware - reads preferences from ~/.admin/profiles/{hostname}.json. Use when: macOS/Linux system admin, Homebrew (macOS), apt (Linux), services. NOT for WSL - use admin-wsl instead.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/admin-unix

SKILL.md

Unix Administration (macOS + Linux)

Requires: macOS or native Linux (NOT WSL)


Profile-First Approach

Profile location:

bash
ADMIN_ROOT="${HOME}/.admin"
PROFILE_PATH="${ADMIN_ROOT}/profiles/$(hostname).json"

Load profile:

bash
source /path/to/admin/scripts/load-profile.sh
load_admin_profile
show_admin_summary

Platform Detection

bash
OS=$(uname -s)
case "$OS" in
    Darwin) echo "macOS" ;;
    Linux)  
        if grep -qi microsoft /proc/version 2>/dev/null; then
            echo "WSL - use admin-wsl instead"
        else
            echo "Native Linux"
        fi
        ;;
esac

Package Management (Profile-Aware)

Check Preference

bash
PKG_MGR=$(jq -r '.preferences.packages.manager' "$PROFILE_PATH")

macOS (Homebrew)

bash
# Install
brew install $package

# Update
brew upgrade $package

# List
brew list

# Search
brew search $package

Linux (apt)

bash
# Update index
sudo apt update

# Install
sudo apt install -y $package

# Upgrade all
sudo apt upgrade -y

# Search
apt search $package

Python Commands (Profile-Aware)

bash
PY_MGR=$(get_preferred_manager python)

case "$PY_MGR" in
    uv)     uv pip install "$package" ;;
    pip)    pip3 install "$package" ;;
    conda)  conda install "$package" ;;
esac

Node Commands (Profile-Aware)

bash
NODE_MGR=$(get_preferred_manager node)

case "$NODE_MGR" in
    npm)    npm install "$package" ;;
    pnpm)   pnpm add "$package" ;;
    yarn)   yarn add "$package" ;;
    bun)    bun add "$package" ;;
esac

Services

Linux (systemd)

bash
# Status
sudo systemctl status $service

# Start/Stop/Restart
sudo systemctl start $service
sudo systemctl stop $service
sudo systemctl restart $service

# Enable/Disable on boot
sudo systemctl enable $service
sudo systemctl disable $service

# View logs
journalctl -u $service -f

macOS (Homebrew services)

bash
# List
brew services list

# Start/Stop
brew services start $service
brew services stop $service
brew services restart $service

SSH to Servers

Use profile server data:

bash
ssh_to_server "cool-two"  # Helper from load-profile.sh

Or manually:

bash
SERVER=$(jq '.servers[] | select(.id == "cool-two")' "$PROFILE_PATH")
HOST=$(echo "$SERVER" | jq -r '.host')
USER=$(echo "$SERVER" | jq -r '.username')
KEY=$(echo "$SERVER" | jq -r '.keyPath')

ssh -i "$KEY" "$USER@$HOST"

Update Profile

After installing a tool:

bash
PROFILE=$(cat "$PROFILE_PATH")
PROFILE=$(echo "$PROFILE" | jq --arg ver "$(python3 --version | cut -d' ' -f2)" \
    '.tools.python.version = $ver | .tools.python.present = true')
echo "$PROFILE" | jq . > "$PROFILE_PATH"

Capabilities Check

bash
has_capability "hasDocker" && docker info
has_capability "hasGit" && git --version

Scope Boundaries

Task Handle Here Route To
Homebrew (macOS) -
apt (Linux) -
systemd services -
Python/Node -
WSL operations admin-wsl
Windows operations admin-windows
Server provisioning admin-devops

References

  • references/OPERATIONS.md - Common operations, troubleshooting

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results