Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: statusline description: Use when installing or uninstalling Groundwork's optional statusline configuration argument-hint: "[install|uninstall]" disable-model-invocation: true
Groundwork Statusline
Configure Groundwork's optional statusline only after the user explicitly invokes this workflow.
Use the supplied action, install or uninstall. When no action is supplied, default to install. Reject any other action and show /groundwork:statusline [install|uninstall].
Install
The renderer asset is ${CLAUDE_PLUGIN_ROOT}/statusline-command.sh. Claude Code does not expand ${CLAUDE_PLUGIN_ROOT} inside a user statusLine command, and marketplace installs are versioned. Install a stable wrapper at $HOME/.claude/groundwork-statusline.sh so future plugin upgrades use the newest installed Groundwork plugin version.
- Before modifying any file, verify the renderer's hard dependencies. Run
command -v jqandcommand -v curl. If either command is missing, stop and report which dependency must be installed.ghis optional and only adds pull-request information.
- Resolve the absolute home directory, the current plugin root, and the current plugin versions directory:
``bash HOME_DIR="$HOME" PLUGIN_ROOT="$CLAUDE_PLUGIN_ROOT" VERSIONS_DIR="$(dirname "$CLAUDE_PLUGIN_ROOT")" ``
- Read
$HOME/.claude/settings.json, treating a missing file as{}. Inspect itsstatusLinevalue.
- If it already invokes
$HOME/.claude/groundwork-statusline.sh, Groundwork owns it; continue so the wrapper is refreshed. - If a different
statusLineexists, ask the user before replacing it. Stop without modifying settings or the wrapper when they decline.
- Write this executable wrapper, substituting the resolved absolute
<VERSIONS_DIR>and<PLUGIN_ROOT>:
``bash #!/usr/bin/env bash # Auto-generated by /groundwork:statusline. base="<VERSIONS_DIR>" fallback="<PLUGIN_ROOT>/statusline-command.sh" latest=$(ls -1 "$base" 2>/dev/null | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | sort -t. -k1,1n -k2,2n -k3,3n | tail -1) script="$base/$latest/statusline-command.sh" if [ -n "$latest" ] && [ -f "$script" ]; then exec bash "$script" elif [ -f "$fallback" ]; then exec bash "$fallback" fi ``
Then run chmod +x "$HOME/.claude/groundwork-statusline.sh".
- Add or replace only
statusLinein$HOME/.claude/settings.json, preserving all unrelated settings. Substitute the resolved absolute<HOME_DIR>; do not use~:
``json "statusLine": { "type": "command", "command": "bash <HOME_DIR>/.claude/groundwork-statusline.sh", "height": 3 } ``
- Report that installation is complete and Claude Code must be restarted to display it.
Uninstall
- Read
$HOME/.claude/settings.json. If nostatusLineexists, report that nothing is configured and stop. - Groundwork owns the setting only when its command invokes
$HOME/.claude/groundwork-statusline.sh. - If another command is configured, leave both it and the wrapper untouched and report that Groundwork does not own the active statusline.
- For an owned setting, remove only the
statusLinekey while preserving all unrelated settings. Then remove the wrapper. In other words, remove the wrapper only when Groundwork owns the configured statusLine. - Report that removal is complete and Claude Code must be restarted to apply it.