dotfiles/link/claude/skills/moshi-best-practices/SKILL.md
Use when preparing or verifying a host for Moshi remote coding. Trigger this for SSH or preferably Mosh readiness, non-interactive shell PATH issues, tmux defaults, creating a tmux project session rooted at a chosen directory, adapting shell or tmux behavior with the `MOSHI_CLIENT` env signal, installing Moshi agent hooks for Claude Code or Codex CLI, or offering the optional `moshi DIR` shell helper.
npx skillsauth add kylehughes/knapsack moshi-best-practicesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill to make any host feel easy to use from Moshi.
Use it for either:
moshi DIR, use a shell function named moshi, not a literal alias. Aliases cannot take arguments safely.Target outcome:
tmux is installedmosh-server is installed when the user wants Mosh, otherwise SSH plus tmux is acceptableInspect with a small set of real checks. Keep OS-specific mechanics minimal, but do not skip verification.
Useful checks:
command -v tmux || true
command -v mosh-server || true
tmux list-sessions 2>/dev/null || true
LOGIN_SHELL="${SHELL:-/bin/sh}"
"$LOGIN_SHELL" -c 'command -v tmux'
"$LOGIN_SHELL" -c 'command -v mosh-server'
Useful macOS-specific checks when relevant:
dscl . -read "/Users/$USER" UserShell
systemsetup -getremotelogin || true
Verify after changes:
command -v tmux
tmux list-sessions
"$LOGIN_SHELL" -c 'command -v tmux'
"$LOGIN_SHELL" -c 'command -v mosh-server' || true
Then ask the user to reconnect from Moshi. Expected result: the tmux selector appears, and the transport can use Mosh instead of plain SSH when configured.
Use these defaults unless the user wants something different:
set -g history-limit 100000
set -g mouse on
set -g set-titles on
set -g set-titles-string "#I: #W"
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
Workflow:
MOSHI_CLIENT=1 is an opt-in environment variable the Moshi iOS client exports
into the remote shell so rc files, prompts, and tmux configs can detect a
Moshi-launched session and adapt. The user enables it in the app under
Settings → Integrations → Export ENV (off by default). When on, it is set
identically on both the Mosh path (via mosh-server -l MOSHI_CLIENT=1) and the
SSH fallback (via an injected export at shell start).
The main use case is protecting Moshi's swipe-to-change-window gesture, which
relies on reading the tmux status bar. A populated status-left /
status-right from a custom theme can break detection. Conditionally clearing
them when MOSHI_CLIENT is set keeps local themes intact while keeping Moshi
detection reliable. Other uses: narrower prompts, dropping nerd-font glyphs,
different key bindings.
Shell (in the user's rc file):
if [ -n "$MOSHI_CLIENT" ]; then
# running under Moshi — trim prompts, skip heavy glyphs, etc.
fi
tmux (in ~/.tmux.conf):
# propagate the variable into tmux sessions attached by this shell
set-option -ga update-environment " MOSHI_CLIENT"
# clear status regions for Moshi clients so swipe detection stays clean
if-shell '[ -n "$MOSHI_CLIENT" ]' {
set -g status-left ''
set -g status-right ''
}
After editing, reload tmux (tmux source-file ~/.tmux.conf).
Verify, after the user toggles the setting on and reconnects from Moshi:
echo "$MOSHI_CLIENT" # expect: 1
tmux show-environment | grep MOSHI_CLIENT # expect a value in new sessions
If echo prints nothing, the toggle is off in the app — confirm with the user
before editing host configs. The variable only appears in sessions opened
after the toggle was flipped.
When creating a new session:
tmux ... -c <dir>Recommended windows:
agentreviewtestsserversmiscCreate the session detached and root every initial window at the chosen directory.
Then ask the user to reconnect in Moshi. Expected result: the session is visible in the tmux selector.
moshi DIR HelperDo not install this silently. Ask the user first if they want it.
If yes:
moshi in the correct startup file for the active shell$PWDUse the exact function from references/moshi-shell-function.md.
Use moshi-hooks, not hand-written config, unless the user explicitly wants manual edits.
Core commands:
bunx moshi-hooks setup
bunx moshi-hooks token <YOUR_TOKEN>
Optional integrations:
bunx moshi-hooks setup --local
bunx moshi-hooks setup .
bunx moshi-hooks setup --codex
bunx moshi-hooks setup --opencode
Final verification:
development
Create a fully standalone escalation brief for a programming/debugging problem when an agent is stuck, repeated fixes have failed, root cause is uncertain, or the user asks to hand off context to a stronger model, senior engineer, teammate, maintainer, or external expert. Produces a no-prior-context, no-repo-access packet with goal, failure evidence, embedded relevant code/config/examples, attempted fixes, constraints, hypotheses, and verification criteria.
development
Refine and structure prompts for LLMs to ensure clarity, reliability, and optimal performance. Use when writing system prompts, complex instructions, or debugging agent behaviors.
development
Curates context, optimizes prompts with XML, and manages extended thinking for Anthropic Claude models. Use when building Claude-based agents, designing system prompts, or handling long-context tasks.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.