skills/hermit-settings/SKILL.md
View or change hermit configuration for this project. Manages model, channels, budget prompts, morning brief, heartbeat, routines, idle behavior, compaction thresholds, Docker packages, and unattended mode.
npx skillsauth add gtapps/claude-code-hermit hermit-settingsInstall 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.
View or modify the hermit configuration for this project.
/claude-code-hermit:hermit-settings — show all current settings
/claude-code-hermit:hermit-settings name — set agent name
/claude-code-hermit:hermit-settings language — set preferred language
/claude-code-hermit:hermit-settings timezone — set timezone
/claude-code-hermit:hermit-settings escalation — set escalation threshold
/claude-code-hermit:hermit-settings sign-off — set sign-off line
/claude-code-hermit:hermit-settings channels — configure channels
/claude-code-hermit:hermit-settings remote — toggle remote control
/claude-code-hermit:hermit-settings model — set Claude model
/claude-code-hermit:hermit-settings budget — toggle budget prompting
/claude-code-hermit:hermit-settings brief — configure morning brief
/claude-code-hermit:hermit-settings permissions — configure unattended mode
/claude-code-hermit:hermit-settings heartbeat — enable/disable, interval, quiet mode, active hours
/claude-code-hermit:hermit-settings routines — manage scheduled routines (add/edit/remove/enable/disable)
/claude-code-hermit:hermit-settings idle — set idle behavior (wait or discover)
/claude-code-hermit:hermit-settings env — view/edit environment variables
/claude-code-hermit:hermit-settings compact — configure SHELL.md compaction thresholds
/claude-code-hermit:hermit-settings docker — view/edit Docker packages
/claude-code-hermit:hermit-settings scheduled-checks — manage scheduled plugin skill checks
/claude-code-hermit:hermit-settings boot-skill — view/clear/change the always-on boot skill
Read .claude-code-hermit/config.json. If it doesn't exist, inform the operator: "No config found. Run /claude-code-hermit:hatch first."
If no argument (or argument is "all"): Display all current settings in a readable format:
Hermit Settings (.claude-code-hermit/config.json)
Identity:
Agent name: Atlas → any string | 'none' to clear
Language: pt → any locale code (e.g. en, pt, es, fr)
Timezone: Europe/Lisbon → any tz (e.g. UTC, America/New_York)
Escalation: balanced → balanced | conservative | autonomous
Sign-off: Atlas out. → any string | 'none' to clear
Operational:
Channels: none → run: /claude-code-hermit:hermit-settings channels
Remote control: disabled → yes | no
Model: default → opus | sonnet | haiku | none (for default)
Budget prompts: disabled → always | never
Morning brief: disabled → run: /claude-code-hermit:hermit-settings brief
Idle behavior: discover → discover | wait
Idle budget: $0.50 → any dollar amount (e.g. $0.25, $1.00)
Heartbeat: disabled → yes | no (interval, show_ok, active hours, stale threshold)
Routines: 2 configured → run: /claude-code-hermit:hermit-settings routines
Permission mode: acceptEdits → default | acceptEdits | plan | dontAsk | bypassPermissions
Auto session: enabled → read-only
Boot skill: /claude-code-hermit:session → any namespaced skill | 'none' to reset to default
tmux name: hermit-myproject → read-only
Compaction:
Monitoring: compact at 30 lines, keep 20
Session Summary: compact at 30 lines, keep 15
→ run: /claude-code-hermit:hermit-settings compact
Environment (env):
AGENT_HOOK_PROFILE standard
COMPACT_THRESHOLD 50
CLAUDE_AUTOCOMPACT_PCT_OVERRIDE 50
MAX_THINKING_TOKENS 10000
→ run: /claude-code-hermit:hermit-settings env
Scheduled Checks:
automation-recommender claude-code-setup interval 7 days 2026-04-01 enabled
md-audit claude-md-management interval 7 days (never) enabled
md-revise claude-md-management session — 2026-04-06 enabled
→ run: /claude-code-hermit:hermit-settings scheduled-checks
Docker:
Packages: build-essential, ffmpeg → run: /claude-code-hermit:hermit-settings docker
If argument is "name":
Ask: "Agent name? (e.g., Atlas, Hermit, Scout, or 'none' to clear) [current value or skip]"
Update agent_name in config.json. Set to null if operator says "none" or "clear".
If argument is "language":
Auto-detect the system locale via Bash as a default suggestion.
Ask: "Preferred language? (e.g., pt, en, es, fr) [current value or auto-detected]"
Update language in config.json.
If argument is "timezone":
Auto-detect the system timezone via Bash as a default suggestion.
Ask: "Timezone? (e.g., Europe/Lisbon, America/New_York, UTC) [current value or auto-detected]"
Update timezone in config.json.
If argument is "escalation": Ask: "How autonomous should your assistant be?
Choose 1-3: [current value]"
Update escalation in config.json with "conservative" / "balanced" / "autonomous".
If argument is "sign-off":
Ask: "Sign-off line for channel messages and briefs? (e.g., 'Atlas out.', '— A.', or 'none' to clear) [current value or skip]"
Update sign_off in config.json. Set to null if operator says "none" or "clear".
If argument is "channels":
Show current channel configuration from config.json → channels object:
Channels:
discord enabled allowed_users: [123456789] morning_brief: 07:00 state_dir: /abs/path/...
(or "No channels configured")
Ask: "Add, remove, or edit a channel? (add discord / add telegram / remove <name> / edit <name> / done) [done]" Loop until operator says "done":
channels.<name>: { "enabled": true, "dm_channel_id": null }. Prompt for allowed_users (paste user ID or skip) and state_dir (relative or absolute path — defaults to .claude.local/channels/<name>). Set state_dir in the channel entry. Note: "Run /claude-code-hermit:docker-setup to configure the channel token."channels.<name> from config.json.channels.<name>.allowed_users.channels.<name>.morning_brief = { "enabled": true, "time": "<HH:MM>" }. If no: set to null.channels.<name>.enabled.
Note: "Channel changes take effect on next hermit-start run."If argument is "remote":
Ask: "Enable remote control? Connect from a browser or phone via claude.ai/code.
yes — enable remote control
no — disable remote control
[current: <value>]"
Update remote in config.json.
Note: "Remote control changes take effect on next hermit-start run."
If argument is "model":
Ask: "Claude model to use?
opus → claude-opus-4-6
sonnet → claude-sonnet-4-6
haiku → claude-haiku-4-5-20251001
none → use Claude Code default (inherit from user config)
[current: <value or 'default'>]"
Update model in config.json. Set to null if operator says "none", "default", or "clear".
Note: "Model changes take effect on next hermit-start run."
If argument is "budget":
Ask: "Ask for a cost budget at session start?
always — prompt for a $ cap at every session start
never — skip the budget prompt
[current: <value>]"
Update ask_budget in config.json.
If argument is "brief":
/claude-code-hermit:hermit-settings channels."channels.<name>.morning_briefchannels.<selected-channel>.morning_brief: { "enabled": true, "time": "<HH:MM>" } in config.json. If no, set to null.If argument is "boot-skill":
Ask: "Boot skill to invoke on always-on launch? This runs after heartbeat/routines when the tmux session starts. Domain hermits (e.g. claude-code-homeassistant-hermit) declare their own — /claude-code-homeassistant-hermit:ha-boot. Leave as none to use the default (/claude-code-hermit:session).
<skill> — any namespaced skill (e.g. /claude-code-foo-hermit:foo-boot)
none — clear (falls back to /claude-code-hermit:session)
[current: <value or 'default'>]"
Update boot_skill in config.json. Set to null if operator says "none", "default", or "clear". The domain boot skill is responsible for calling /claude-code-hermit:session-start itself — this setting just controls the single bootstrap command hermit-start.py fires into the REPL.
Note: "Boot skill changes take effect on next hermit-start run."
If argument is "permissions": Ask: "Permission mode for Claude Code? (default / acceptEdits / plan / dontAsk / bypassPermissions) [current value]"
default — prompts for permission on first use of each toolacceptEdits — auto-approves file edits, prompts for shell commands (default)plan — read-only exploration, no file modifications or shell commandsdontAsk — denies all tools not in permissions.allow; requires a curated allowlist in settings.jsonbypassPermissions — no checks; isolated containers/VMs onlyauto mode exists but is only available for Teams and Enterprise accountspermission_mode in config.json.If argument is "heartbeat":
stale_threshold)Heartbeat sub-fields (press Enter to keep current value):
interval — how often to check (e.g. 5m, 15m, 30m) [current]
show_ok — post a message on healthy checks (yes / no) [current]
active — active hours window (e.g. 08:00-23:00) [current]
stale — alert if no session progress for (e.g. 2h, 30m) [current]
Then ask each field in sequence.heartbeat object in config.json.
/claude-code-hermit:heartbeat start or hermit-start.py run."If argument is "routines":
config.routines array:
Routines (config.json routines → /claude-code-hermit:hermit-routines CronCreates):
# ID Schedule Skill Status
1. morning 30 8 * * * claude-code-hermit:brief --morning enabled
2. evening 30 22 * * * claude-code-hermit:brief --evening enabled
3. weekly-deps 0 9 * * 1 claude-code-hermit:session-start ... disabled
(or "No routines configured" if empty)
30 8 * * *0 9 * * 1-50 23 * * 0*/15 * * * *0 10 1,15 * *claude-code-hermit:brief for plugin skills, ha-refresh-context for local project skills)config.json routines array.enabled field./claude-code-hermit:hermit-routines load via the Skill tool to apply the new schedule live (no restart). Surface the result inline:
/claude-code-hermit:hermit-routines load failed: <reason>. Run /claude-code-hermit:hermit-routines load manually to apply."If argument is "idle":
idle_behavior and idle_budget valuesidle_behavior in config.json with "wait" or "discover".idle_budget and offer to change it:
"Cost cap per idle task? [{current value}]"
Update idle_budget if changed.If argument is "env":
env values from config.json in a table:
Environment Variables (config.json env → .claude/settings.local.json)
AGENT_HOOK_PROFILE standard
COMPACT_THRESHOLD 50
CLAUDE_AUTOCOMPACT_PCT_OVERRIDE 50
MAX_THINKING_TOKENS 10000
AGENT_HOOK_PROFILE. These are managed by the boot script and docker-setup. If the operator tries to set one, respond: "AGENT_HOOK_PROFILE is managed by the boot script (standard for interactive, strict for Docker). To change it, edit config.json directly — the boot script validates on next start."remove <KEY>: delete the key from env<KEY> <VALUE>: set env[KEY] = VALUE.claude/settings.local.json on next hermit-start. To apply now, restart the hermit session."If argument is "compact":
compact values from config.json:
SHELL.md Compaction (config.json compact → session-mgr idle transition)
monitoring_threshold 30 (compact when Monitoring exceeds this many lines)
monitoring_keep 20 (keep this many recent entries after compacting)
summary_threshold 30 (compact when Session Summary exceeds this many lines)
summary_keep 15 (keep this many recent entries after compacting)
*_keep must not exceed its corresponding *_threshold (setting keep equal to threshold effectively disables compaction for that section)compact[key] in config.jsonIf argument is "docker":
Show current docker.packages list:
Docker Packages (config.json docker.packages → Dockerfile.hermit)
build-essential
ffmpeg
(or "No packages configured" if empty)
Ask: "Add or remove packages? (e.g., 'add ffmpeg imagemagick', 'remove ffmpeg', or 'done') [done]"
Loop until operator says "done", "skip", or presses Enter:
remove <PKG> [<PKG>...]: remove the packages from docker.packagesadd <PKG> [<PKG>...]: add the packages to docker.packages (deduplicate)After changes, note: "Rebuild your container to apply: docker compose -f docker-compose.hermit.yml build"
Then show current docker.recommended_plugins:
Recommended Plugins (config.json docker.recommended_plugins)
[enabled] claude-code-setup (claude-plugins-official) — auto-installed on boot
[enabled] claude-code-homeassistant-hermit (gtapps/claude-code-homeassistant-hermit) — auto-installed on boot
(or "No recommended plugins configured" if empty)
Ask: "Enable, disable, add, or remove recommended plugins? (e.g., 'enable claude-code-setup', 'add claude-code-setup', 'add superpowers obra/superpowers-marketplace', 'remove superpowers', or 'done') [done]"
Loop until operator says "done", "skip", or presses Enter:
enable <PLUGIN>: set enabled: true on matching entrydisable <PLUGIN>: set enabled: false on matching entryremove <PLUGIN>: remove the entry entirelyadd <PLUGIN> [<MARKETPLACE>]: add new entry with marketplace ("claude-plugins-official" if omitted), scope: "project", enabled: true. Deduplicate by plugin name.enable if it exists, add if it doesn'tAfter changes, note: "Restart container to install new plugins: .claude-code-hermit/bin/hermit-docker restart"
If argument is "scheduled-checks":
state/reflection-state.json for runtime state (last run dates). If missing, show "(no runs yet)" for all.scheduled_checks entries from config.json:
Scheduled Checks (config.json scheduled_checks)
# ID Plugin Trigger Interval Last Run Status
1. automation-recommender claude-code-setup interval 7 days 2026-04-01 enabled
2. md-audit claude-md-management interval 7 days (never) enabled
3. md-revise claude-md-management session — 2026-04-06 enabled
(or "No scheduled checks configured" if empty)
enable <id>: set enabled: true on matching entrydisable <id>: set enabled: false on matching entryinterval <id> <days>: update interval_days on matching entry (only valid for trigger: "interval")add <id> <plugin> <skill> interval [days]: add interval-triggered entry with enabled: true, interval_days (default: 7). Deduplicate by id.add <id> <plugin> <skill> session: add session-triggered entry with enabled: true. Deduplicate by id.remove <id>: delete the entry from config and its state from state/reflection-state.jsonWrite the updated config back to .claude-code-hermit/config.json.
Confirm the change to the operator.
tools
Composes and delivers the daily fitness brief — a forward-looking morning read (readiness + today's plan) or a backward-looking evening read (today's training, or an earned-rest note, + tomorrow's setup) — in the operator's configured voice. Invoke with /claude-code-fitness-hermit:fitness-brief --morning|--evening|--slot <name>. Becomes the plugin's two daily beats — the morning Strava connectivity check and the evening activity sync, RPE binding, and Run deep-dive.
development
Renew the hermit's long-lived Claude login token over the channel, before it expires. Relays a one-time sign-in link to the operator, takes the code back, installs the new token, and restarts. Activates on messages like 'relogin', 'renew my login', 'reauth', 'the login is expiring', or when doctor's credential-expiry check flags setup-token.
development
Synthesizes the past 7 days of archived briefs into a weekly digest — top stories, emerging vs faded themes, category activity, and per-source performance built from archive frontmatter. Delivers to the operator's configured channel and archives a weekly note. Designed as a weekly routine. Invoke with /feed-hermit:weekly-digest.
development
Manage developing story arcs tracked across briefs — add, resolve, and list active arcs in compiled/story-arcs-*.md. Arc Watch keywords drive the feed-brief arc-tagging enrichment. Invoke with /feed-hermit:story-arcs add|resolve|list.