Help us improve
Share bugs, ideas, or general feedback.
From yas
Writes statusLine.command into ~/.claude/settings.json pointing at the yet-another-statusline plugin's Python renderer. Run after plugin install and after upgrades.
npx claudepluginhub tmck-code/yet-another-statusline --plugin yasHow this skill is triggered — by the user, by Claude, or both
Slash command
/yas:inithaikuThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<objective>
Removes statusLine config for yet-another-statusline plugin from settings.json and cleans up runtime state. Run during uninstall to clear leftover config.
Installs and configures claude-2x-statusline for Claude Code. Prompts for Minimal, Standard, or Full tier with peak status, model info, rate limits, tokens, cost, timeline, and git; updates settings.json and fetches schedule.
Installs the MST HUD statusline wrapper for Claude Code. Backs up the existing statusLine.command and replaces it with a MST wrapper script. Invoked via 'HUD install' or '/mst:hud-install'.
Share bugs, ideas, or general feedback.
Write statusLine.command into ~/.claude/settings.json pointing at this plugin's Python renderer.
Run once after claude plugin install yas@yet-another-statusline.
Re-run after every upgrade — detects stale versioned path and rewrites.
PLUGIN_ROOT=$(jq -r '
.plugins
| to_entries[]
| select(.key | ascii_downcase | contains("yas"))
| .value[]
| select(.installPath != null)
| [.installedAt, .installPath]
| @tsv
' "$HOME/.claude/plugins/installed_plugins.json" 2>/dev/null \
| sort -rk1 | head -1 | cut -f2) # timeout: 5000
if [ -z "$PLUGIN_ROOT" ]; then
PLUGIN_ROOT=$(find ~/.claude/plugins/cache -maxdepth 5 -name "plugin.json" 2>/dev/null \
| xargs grep -l '"name"[[:space:]]*:[[:space:]]*"yas"' 2>/dev/null \
| while IFS= read -r f; do
dir=$(dirname "$(dirname "$f")")
[ -f "$dir/.orphaned_at" ] && continue
echo "$dir"
done \
| sort -Vr | head -1) # timeout: 10000
fi
if [ -z "$PLUGIN_ROOT" ]; then
printf "! yas plugin not found — install first:\n claude plugin marketplace add tmck-code/yet-another-statusline\n claude plugin install yas@yet-another-statusline\n"
exit 1
fi
SCRIPT="$PLUGIN_ROOT/claude/statusline_command.py"
if [ ! -f "$SCRIPT" ]; then
printf "! statusline_command.py not found at %s\n" "$SCRIPT"
exit 1
fi
printf " Plugin root: %s\n" "$PLUGIN_ROOT"
jq --arg script "$SCRIPT" -e '
(.statusLine.command // "") | contains($script)
' ~/.claude/settings.json >/dev/null 2>&1 # timeout: 5000
If exit 0: print statusLine already set to current version — skipping. and stop.
PYTHON_BIN=""
for candidate in python python3; do
bin=$(which "$candidate" 2>/dev/null) || continue
version=$("$bin" --version 2>&1) || continue
echo "$version" | grep -qE "Python 3\.(1[0-9]|[2-9][0-9])" && PYTHON_BIN="$bin" && break
done # timeout: 5000
if [ -z "$PYTHON_BIN" ]; then
printf "! Python 3.10+ not found — install Python 3.10+ and re-run /yas:init\n"
exit 1
fi
printf " Python: %s\n" "$PYTHON_BIN"
# Create settings.json with empty object if missing (no backup needed for a new file)
if [ ! -f "$HOME/.claude/settings.json" ]; then
printf '{}\n' > "$HOME/.claude/settings.json"
printf " Created ~/.claude/settings.json\n"
else
BAK_TS=$(date -u +%Y%m%dT%H%M%SZ)
cp ~/.claude/settings.json "$HOME/.claude/settings.json.bak-yas-${BAK_TS}" # timeout: 5000
printf " Backed up → settings.json.bak-yas-%s\n" "$BAK_TS"
fi
_result=$(jq --arg cmd "\"$PYTHON_BIN\" \"$SCRIPT\"" \
'.statusLine = {"async":true,"command":$cmd,"refreshInterval":1,"type":"command"}' \
~/.claude/settings.json) # timeout: 5000
[ $? -eq 0 ] && [ -n "$_result" ] || { printf "! jq failed — settings.json unchanged\n"; exit 1; }
_tmp=$(mktemp "$HOME/.claude/settings.json.XXXXXXXXXX")
printf '%s\n' "$_result" > "$_tmp" \
|| { rm -f "$_tmp"; printf "! write failed — settings.json unchanged\n"; exit 1; }
mv "$_tmp" "$HOME/.claude/settings.json" # timeout: 3000
printf " settings.json updated\n"
jq empty ~/.claude/settings.json # timeout: 5000
If invalid: restore backup, report error, stop.
Print:
statusLine set → "$PYTHON_BIN" "$SCRIPT"
Done. Reload Claude Code to activate the statusline.