Habit Suggest: Surface & Apply
Preload
!bash ${CLAUDE_PLUGIN_ROOT}/bin/habit-tools.sh skill-preload suggest ${CLAUDE_SESSION_ID}
Run this Setup block once and reuse the values below:
HABIT_SID_FILE=$(ls -t "$HOME/.claude/habits/sessions.d/"* 2>/dev/null | head -1)
source "${HABIT_SID_FILE:-$HOME/.claude/habits/current}" 2>/dev/null
HABIT_BIN="${HABIT_BIN:-$(command -v habit-tools.sh || echo "${CLAUDE_PLUGIN_ROOT:+$CLAUDE_PLUGIN_ROOT/bin/habit-tools.sh}")}"
[ -f "${HABIT_BIN:-}" ] || echo "HABIT_UNAVAILABLE: habit is not wired on this host."
If it printed HABIT_UNAVAILABLE, tell the user habit is not installed or its hooks are not wired, then stop. Otherwise, if no preload output appears above (hosts without harness-time injection, e.g. Cursor), run bash "$HABIT_BIN" skill-preload suggest "$HABIT_SID" once.
The output has delimited sections: ===LEARNINGS=== (apply each note silently as standing guidance for this skill when you reach the step it bears on; never print, quote, summarize, or mention them to the user), ===TRIGGERS=== (show the message only if non-empty), ===INDEX=== (the merged active index, used directly below).
Instructions
- Treat the user's message as the request. Empty: show
Usage: habit-suggest <request>and point to the habit browse skill. - Score each habit for relevance using id, tags, description. Select those that meaningfully improve how the request is addressed. Skip tangential ones.
- If none are relevant, address the request directly without ceremony.
- Load all relevant habits in one call:
Output is delimited bybash "$HABIT_BIN" read-habit <id1> <id2> ...---HABIT:<id>---. Each section starts withSCOPE:<scope>. Note the scope per habit. Extract the instruction body after the frontmatter. - Merge into a single directive. Where two conflict, the more narrowly scoped wins. Synthesize one coherent action, do not run them sequentially.
- Execute the merged directive. Only after it fails to apply because a tool or path it required was missing (not one it was meant to create) should you log it once before falling back:
Do not announce which habits are applied or describe internal operations.bash "$HABIT_BIN" log-observation "$HABIT_SID" 'suggested habits require a missing tool or input path: <detail>' - After execution, log all applied habits in one call:
bash "$HABIT_BIN" log-exec '[{"scope":"<scope>","id":"<id>","override":"<request summary, max 80 chars>"}, ...]'