add-macos-statusbar
Add a macOS menu bar status indicator for NanoClaw. Shows a bolt icon with a green/red dot indicating whether NanoClaw is running, with Start, Stop, and Restart controls. macOS only.
Install
npx skills add https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-macos-statusbar
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install nanocoai-nanoclaw@llmmart
git clone https://github.com/nanocoai/nanoclaw.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole nanocoai/nanoclaw collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Add macOS Menu Bar Status Indicator
Adds a persistent menu bar icon that shows NanoClaw's running status and lets the user start, stop, or restart the service — similar to how Docker Desktop appears in the menu bar.
macOS only. Requires Xcode Command Line Tools (swiftc).
Phase 1: Pre-flight
Check platform
If not on macOS, stop and tell the user:
This skill is macOS only. The menu bar status indicator uses AppKit and requires
swiftc(Xcode Command Line Tools).
Check for swiftc
which swiftc
If not found, tell the user:
Xcode Command Line Tools are required. Install them by running:
xcode-select --installThen re-run
/add-macos-statusbar.
Check if already installed
launchctl list | grep com.nanoclaw.statusbar
If it returns a PID (not -), tell the user it's already installed and skip to Phase 3 (Verify).
Phase 2: Compile and Install
Compile the Swift binary
The source lives in the skill directory. Compile it into dist/:
mkdir -p dist
swiftc -O -o dist/statusbar "${CLAUDE_SKILL_DIR}/add/src/statusbar.swift"
This produces a small native binary at dist/statusbar.
On macOS Sequoia or later, clear the quarantine attribute so the binary can run:
xattr -cr dist/statusbar
Create the launchd plist
Determine the absolute project root and home directory:
pwd
echo $HOME
Create ~/Library/LaunchAgents/com.nanoclaw.statusbar.plist, substituting the actual values
for {PROJECT_ROOT} and {HOME}:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.nanoclaw.statusbar</string>
<key>ProgramArguments</key>
<array>
<string>{PROJECT_ROOT}/dist/statusbar</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>EnvironmentVariables</key>
<dict>
<key>HOME</key>
<string>{HOME}</string>
</dict>
<key>StandardOutPath</key>
<string>{PROJECT_ROOT}/logs/statusbar.log</string>
<key>StandardErrorPath</key>
<string>{PROJECT_ROOT}/logs/statusbar.error.log</string>
</dict>
</plist>
Load the service
launchctl load ~/Library/LaunchAgents/com.nanoclaw.statusbar.plist
Phase 3: Verify
launchctl list | grep com.nanoclaw.statusbar
The first column should show a PID (not -).
Tell the user:
The bolt icon should now appear in your macOS menu bar. Click it to see NanoClaw's status and control the service.
- Green dot — NanoClaw is running
- Red dot — NanoClaw is stopped
Use Restart after making code changes, and View Logs to open the log file directly.
To uninstall, follow REMOVE.md.
Files (nanoclaw)
-
add
-
src
-
statusbar.swift 5.1 KB · in bundle
-
-
-
REMOVE.md 547 B
# Remove macOS Menu Bar Status Indicator Every step is idempotent — safe to re-run. ## 1. Unload the launchd service ```bash launchctl bootout gui/$(id -u)/com.nanoclaw.statusbar 2>/dev/null \ || launchctl unload ~/Library/LaunchAgents/com.nanoclaw.statusbar.plist 2>/dev/null \ || true ``` ## 2. Delete the produced files ```bash rm -f ~/Library/LaunchAgents/com.nanoclaw.statusbar.plist \ dist/statusbar \ logs/statusbar.log \ logs/statusbar.error.log ``` The menu bar icon disappears once the service is unloaded. -
SKILL.md 3.1 KB
--- name: add-macos-statusbar description: Add a macOS menu bar status indicator for NanoClaw. Shows a bolt icon with a green/red dot indicating whether NanoClaw is running, with Start, Stop, and Restart controls. macOS only. --- # Add macOS Menu Bar Status Indicator Adds a persistent menu bar icon that shows NanoClaw's running status and lets the user start, stop, or restart the service — similar to how Docker Desktop appears in the menu bar. **macOS only.** Requires Xcode Command Line Tools (`swiftc`). ## Phase 1: Pre-flight ### Check platform If not on macOS, stop and tell the user: > This skill is macOS only. The menu bar status indicator uses AppKit and requires `swiftc` (Xcode Command Line Tools). ### Check for swiftc ```bash which swiftc ``` If not found, tell the user: > Xcode Command Line Tools are required. Install them by running: > > ```bash > xcode-select --install > ``` > > Then re-run `/add-macos-statusbar`. ### Check if already installed ```bash launchctl list | grep com.nanoclaw.statusbar ``` If it returns a PID (not `-`), tell the user it's already installed and skip to Phase 3 (Verify). ## Phase 2: Compile and Install ### Compile the Swift binary The source lives in the skill directory. Compile it into `dist/`: ```bash mkdir -p dist swiftc -O -o dist/statusbar "${CLAUDE_SKILL_DIR}/add/src/statusbar.swift" ``` This produces a small native binary at `dist/statusbar`. On macOS Sequoia or later, clear the quarantine attribute so the binary can run: ```bash xattr -cr dist/statusbar ``` ### Create the launchd plist Determine the absolute project root and home directory: ```bash pwd echo $HOME ``` Create `~/Library/LaunchAgents/com.nanoclaw.statusbar.plist`, substituting the actual values for `{PROJECT_ROOT}` and `{HOME}`: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.nanoclaw.statusbar</string> <key>ProgramArguments</key> <array> <string>{PROJECT_ROOT}/dist/statusbar</string> </array> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/> <key>EnvironmentVariables</key> <dict> <key>HOME</key> <string>{HOME}</string> </dict> <key>StandardOutPath</key> <string>{PROJECT_ROOT}/logs/statusbar.log</string> <key>StandardErrorPath</key> <string>{PROJECT_ROOT}/logs/statusbar.error.log</string> </dict> </plist> ``` ### Load the service ```bash launchctl load ~/Library/LaunchAgents/com.nanoclaw.statusbar.plist ``` ## Phase 3: Verify ```bash launchctl list | grep com.nanoclaw.statusbar ``` The first column should show a PID (not `-`). Tell the user: > The bolt icon should now appear in your macOS menu bar. Click it to see NanoClaw's status and control the service. > > - **Green dot** — NanoClaw is running > - **Red dot** — NanoClaw is stopped > > Use **Restart** after making code changes, and **View Logs** to open the log file directly. To uninstall, follow [REMOVE.md](REMOVE.md).
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.