Skip to content

Commit bf37f83

Browse files
committed
v0.2.5: Fix host↔Docker plugin root; rename upgrade→hermit-upgrade, status→hermit-state
1 parent 71b1bc0 commit bf37f83

File tree

17 files changed

+96
-46
lines changed

17 files changed

+96
-46
lines changed

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "claude-code-hermit",
3-
"version": "0.2.4",
3+
"version": "0.2.5",
44
"description": "A personal assistant that lives in your project — memory-driven learning, daily rhythm, idle agency, and operational hygiene for Claude Code",
55
"author": {
66
"name": "gtapps"

.claude/skills/release/SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Bump the plugin version, write a detailed changelog entry for the u
44
---
55
# Release
66

7-
Bump version, write changelog, commit, and push. The changelog entry is critical because the upgrade skill (`skills/upgrade/SKILL.md`) reads it to know what to tell hermits during `/claude-code-hermit:upgrade`.
7+
Bump version, write changelog, commit, and push. The changelog entry is critical because the upgrade skill (`skills/hermit-upgrade/SKILL.md`) reads it to know what to tell hermits during `/claude-code-hermit:hermit-upgrade`.
88

99
## Steps
1010

@@ -43,7 +43,7 @@ Prepend a new entry to `CHANGELOG.md` immediately after the `# Changelog` header
4343

4444
### Upgrade Instructions
4545

46-
Run `/claude-code-hermit:upgrade`. The upgrade skill handles:
46+
Run `/claude-code-hermit:hermit-upgrade`. The upgrade skill handles:
4747

4848
1. **What it does** — Explanation of what the upgrade skill will do automatically.
4949

@@ -53,7 +53,7 @@ Run `/claude-code-hermit:upgrade`. The upgrade skill handles:
5353
**The Upgrade Instructions section is the most important part.** The upgrade skill reads this to know what actions to take for each hermit. Be specific about:
5454
- Whether CLAUDE-APPEND needs refreshing (it almost always does)
5555
- Whether templates changed
56-
- Whether config.json needs new keys (reference the table in `skills/upgrade/SKILL.md` if adding new interactive/silent keys)
56+
- Whether config.json needs new keys (reference the table in `skills/hermit-upgrade/SKILL.md` if adding new interactive/silent keys)
5757
- Whether there are manual steps the operator needs to take
5858
- What is NOT affected (so the upgrade skill doesn't touch things unnecessarily)
5959

CHANGELOG.md

Lines changed: 50 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,43 @@
11
# Changelog
22

3+
## [0.2.5] - 2026-04-01
4+
5+
### Fixed
6+
7+
- **`hermit-run` now resolves plugin root across host↔Docker moves** — When `hermit-init` is run in Docker, `_plugin_root` is written with the container's home path (e.g., `/home/claude/.claude/...`). Running `hermit-start` on the host then fails with "Plugin root not found or invalid" because that path doesn't exist there. The existing `CLAUDE_CONFIG_DIR` remap only fired inside Docker (where the env var is set), not on the host. Fixed by adding a `$HOME/.claude/{suffix}` fallback that always fires: both environments share the same path suffix (`plugins/marketplaces/claude-code-hermit`) with only the home prefix differing. The remap is not written back to `config.json` so the value remains portable across both environments.
8+
9+
### Changed
10+
11+
- **Renamed `upgrade` skill to `hermit-upgrade`** — The bare name `upgrade` conflicted with Claude Code's native `/upgrade` command. Now invoked as `/claude-code-hermit:hermit-upgrade`. All documentation, skill cross-references, scripts, and CLAUDE-APPEND template updated.
12+
13+
- **Renamed `status` skill to `hermit-state`** — The bare name `status` risks collision with native Claude Code commands. Now invoked as `/claude-code-hermit:hermit-state`. All cross-references updated.
14+
15+
### Files affected
16+
17+
| File | Change |
18+
|------|--------|
19+
| `state-templates/bin/hermit-run` | Added `$HOME/.claude` fallback remap; unified both remap branches |
20+
| `skills/hermit-upgrade/SKILL.md` | Renamed from `skills/upgrade/SKILL.md` |
21+
| `skills/hermit-state/SKILL.md` | Renamed from `skills/status/SKILL.md` |
22+
| `CLAUDE.md` | Updated skill list and quick reference |
23+
| `state-templates/CLAUDE-APPEND.md` | Updated skill invocation references |
24+
| `scripts/hermit-start.py`, `scripts/check-upgrade.sh` | Updated invocation references |
25+
| `state-templates/bin/hermit-run` | Updated invocation reference |
26+
| `docs/HOW-TO-USE.md`, `docs/TROUBLESHOOTING.md`, `docs/UPGRADING.md` | Updated references |
27+
| `skills/session/SKILL.md`, `skills/monitor/SKILL.md` | Updated status references |
28+
| `skills/hermit-init/SKILL.md` | Updated upgrade reference in next-steps |
29+
30+
### Upgrade Instructions
31+
32+
Run `/claude-code-hermit:hermit-upgrade`. The upgrade skill handles:
33+
34+
1. **Boot script update** — Copies updated `hermit-run` from `state-templates/bin/` into `.claude-code-hermit/bin/` (step 5b). Required to get the host↔Docker fix and updated skill name references.
35+
2. **CLAUDE-APPEND block update** — Refreshes the session discipline block in `CLAUDE.md`, which now references `hermit-state` and `hermit-upgrade` instead of the old names.
36+
37+
**No config.json changes required.** No template changes other than `CLAUDE-APPEND.md`.
38+
39+
---
40+
341
## [0.2.4] - 2026-04-01
442

543
### Changed
@@ -17,7 +55,7 @@
1755

1856
### Upgrade Instructions
1957

20-
Run `/claude-code-hermit:upgrade`. The upgrade skill handles:
58+
Run `/claude-code-hermit:hermit-upgrade`. The upgrade skill handles:
2159

2260
1. **CLAUDE-APPEND block update** — Refreshed session discipline block (no content change in this version, but the upgrade skill always checks).
2361

@@ -55,7 +93,7 @@ Run `/claude-code-hermit:upgrade`. The upgrade skill handles:
5593

5694
### Upgrade Instructions
5795

58-
Run `/claude-code-hermit:upgrade`. The upgrade skill handles:
96+
Run `/claude-code-hermit:hermit-upgrade`. The upgrade skill handles:
5997

6098
1. **CLAUDE-APPEND block update** — Refreshed session discipline block (no content change in this version, but the upgrade skill always checks).
6199

@@ -79,7 +117,7 @@ Run `/claude-code-hermit:upgrade`. The upgrade skill handles:
79117

80118
### Upgrade Instructions
81119

82-
Run `/claude-code-hermit:upgrade`. The upgrade skill handles:
120+
Run `/claude-code-hermit:hermit-upgrade`. The upgrade skill handles:
83121

84122
1. **CLAUDE-APPEND block update** — Refreshed session discipline block (no content change in this version, but the upgrade skill always checks).
85123

@@ -110,7 +148,7 @@ Run `/claude-code-hermit:upgrade`. The upgrade skill handles:
110148

111149
### Upgrade Instructions
112150

113-
Run `/claude-code-hermit:upgrade`. The upgrade skill handles:
151+
Run `/claude-code-hermit:hermit-upgrade`. The upgrade skill handles:
114152

115153
1. **CLAUDE-APPEND block update** — The session discipline block in your project's CLAUDE.md is refreshed to include the new "Proposal Pipeline (mandatory)" section. This is the primary fix — it prevents hermits from skipping the proposal workflow.
116154

@@ -172,7 +210,7 @@ Run `/claude-code-hermit:upgrade`. The upgrade skill handles:
172210

173211
### Upgrade Instructions
174212

175-
Run `/claude-code-hermit:upgrade`. The upgrade skill handles:
213+
Run `/claude-code-hermit:hermit-upgrade`. The upgrade skill handles:
176214

177215
1. **Task list ID setup** — Writes `CLAUDE_CODE_TASK_LIST_ID` to `.claude/settings.local.json` (derived from project basename). This makes native Tasks persistent and lets hooks read task files.
178216

@@ -334,7 +372,7 @@ Then rebuild: `docker compose -f docker-compose.hermit.yml build`
334372

335373
### Upgrade Instructions
336374

337-
Run `/claude-code-hermit:upgrade` to refresh templates and migrate existing files.
375+
Run `/claude-code-hermit:hermit-upgrade` to refresh templates and migrate existing files.
338376

339377
**Migration: Session reports to YAML frontmatter**
340378

@@ -408,7 +446,7 @@ Report: "Migrated N proposals with YAML frontmatter."
408446

409447
**What you need to do:**
410448

411-
1. Run `/claude-code-hermit:upgrade` to migrate config and refresh templates
449+
1. Run `/claude-code-hermit:hermit-upgrade` to migrate config and refresh templates
412450
2. Review migrated routines: `/claude-code-hermit:hermit-settings routines`
413451
3. Optionally add `## When Idle` to OPERATOR.md and set `idle_behavior` to `discover`
414452

@@ -441,7 +479,7 @@ Report: "Migrated N proposals with YAML frontmatter."
441479

442480
**What you need to do:**
443481

444-
1. Run `/claude-code-hermit:upgrade` to refresh templates
482+
1. Run `/claude-code-hermit:hermit-upgrade` to refresh templates
445483
2. **Deny patterns (recommended):** Add safety deny rules to `.claude/settings.json` — run `/claude-code-hermit:hermit-init` step 9 or add manually:
446484
```json
447485
"permissions": {
@@ -480,7 +518,7 @@ Env vars are now managed in `config.json` `env` and written to `.claude/settings
480518

481519
**What you need to do:**
482520

483-
1. Run `/claude-code-hermit:upgrade` — it adds the `env` key to your config.json with defaults
521+
1. Run `/claude-code-hermit:hermit-upgrade` — it adds the `env` key to your config.json with defaults
484522
2. If you have channels configured, the upgrade also adds `DISCORD_STATE_DIR` / `TELEGRAM_STATE_DIR` to `env`
485523
3. If you use Docker: rebuild (`docker compose -f docker-compose.hermit.yml build`) and regenerate compose with `/claude-code-hermit:docker-setup` to get the slimmed-down `environment:` section — or just remove the 5 non-auth env vars from your existing compose file manually
486524

@@ -540,9 +578,9 @@ The hermit state directory has moved from `.claude/.claude-code-hermit/` to `.cl
540578
- `"Edit(.claude/.claude-code-hermit/**)"``"Edit(.claude-code-hermit/**)"`
541579
- `"Write(.claude/.claude-code-hermit/**)"``"Write(.claude-code-hermit/**)"`
542580

543-
4. **If you have a custom hermit** with skills, agents, or scripts that reference `.claude/.claude-code-hermit/` — update those references to `.claude-code-hermit/` before running `/claude-code-hermit:upgrade`
581+
4. **If you have a custom hermit** with skills, agents, or scripts that reference `.claude/.claude-code-hermit/` — update those references to `.claude-code-hermit/` before running `/claude-code-hermit:hermit-upgrade`
544582

545-
Then run `/claude-code-hermit:upgrade` — it will refresh templates and clean up any remaining stale permissions.
583+
Then run `/claude-code-hermit:hermit-upgrade` — it will refresh templates and clean up any remaining stale permissions.
546584

547585
---
548586

@@ -699,7 +737,7 @@ Valid values: `"default"`, `"acceptEdits"`, `"dontAsk"`, `"bypassPermissions"`.
699737
3. Update `NEXT-MISSION.md``NEXT-TASK.md` in any skill that reads/writes it
700738
4. Update `CLAUDE-APPEND.md` to use new section names
701739
5. Replace "domain pack" or "hermit agent" with "hermit" in docs and skill descriptions
702-
6. Run `/claude-code-hermit:upgrade` in target projects to refresh templates
740+
6. Run `/claude-code-hermit:hermit-upgrade` in target projects to refresh templates
703741

704742
### Added
705743

CLAUDE.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ After install, run `/claude-code-hermit:hermit-init` in the target project to cr
1616
## Plugin Structure
1717

1818
- `agents/` — subagent definitions (session-mgr only; hermit plugins add more subagents)
19-
- `skills/` — skill definitions (namespaced as `/claude-code-hermit:*`): session, session-start, session-close, status, brief, monitor, heartbeat, hermit-settings, proposal-create, proposal-list, proposal-act, reflect, channel-responder, hermit-init, upgrade, docker-setup, hermit-takeover, hermit-hand-back
19+
- `skills/` — skill definitions (namespaced as `/claude-code-hermit:*`): session, session-start, session-close, hermit-state, brief, monitor, heartbeat, hermit-settings, proposal-create, proposal-list, proposal-act, reflect, channel-responder, hermit-init, hermit-upgrade, docker-setup, hermit-takeover, hermit-hand-back
2020
- `hooks/hooks.json` — hook registrations
2121
- `scripts/` — hook implementation scripts + boot scripts (hermit-start.py, hermit-stop.py)
2222
- `state-templates/` — templates copied into target projects by the `hermit-init` skill
@@ -86,12 +86,12 @@ Common skills (full list: [Skills Reference](docs/SKILLS.md)):
8686

8787
- `/claude-code-hermit:session` — start or resume a session
8888
- `/claude-code-hermit:session-close` — full shutdown with quality checks
89-
- `/claude-code-hermit:status` — compact summary (auto-triggers on "status", "progress")
89+
- `/claude-code-hermit:hermit-state` — compact summary (auto-triggers on "status", "progress")
9090
- `/claude-code-hermit:brief` — executive summary (auto-triggers on "brief", "what happened")
9191
- `/claude-code-hermit:heartbeat` — background checklist (run/start/stop/status/edit)
9292
- `/claude-code-hermit:hermit-settings` — view/change config
9393
- `/claude-code-hermit:proposal-list` — view proposals (auto-triggers on "any proposals")
9494
- `/claude-code-hermit:proposal-act` — accept, defer, or dismiss a proposal
95-
- `/claude-code-hermit:upgrade` — update config and templates after plugin update
95+
- `/claude-code-hermit:hermit-upgrade` — update config and templates after plugin update
9696
- `/claude-code-hermit:docker-setup` — generate Docker scaffolding for always-on
9797
- `/claude-code-hermit:hermit-takeover` / `hermit-hand-back` — operator control

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<p align="center">
22
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License" /></a>
33
<a href="https://code.claude.com/docs/en/plugins"><img src="https://img.shields.io/badge/Claude%20Code-plugin-orange.svg" alt="Claude Code Plugin" /></a>
4-
<a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-0.2.4-green.svg" alt="Version 0.2.4" /></a>
4+
<a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-0.2.5-green.svg" alt="Version 0.2.5" /></a>
55
<img src="https://img.shields.io/badge/Claude-Pro%20%7C%20Max-blueviolet.svg" alt="Claude Pro/Max Compatible" />
66
<img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" alt="PRs Welcome" />
77
</p>

docs/HOW-TO-USE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ You're always in control. Hermit suggests. You decide.
104104
## Tips
105105

106106
- **Don't create session/proposal files by hand.** Skills handle lifecycle tracking.
107-
- **After plugin updates**, run `/claude-code-hermit:upgrade`.
107+
- **After plugin updates**, run `/claude-code-hermit:hermit-upgrade`.
108108
- **Talk to your hermit.** Ask how it can improve. It gets better when you tell it what you need.
109109

110110
---

docs/TROUBLESHOOTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ SHELL.md from a crashed session persists. Choose **resume** or **start new** (ge
7373

7474
As of v0.0.8, reflect checks dismissed and deferred proposals before creating new ones. If you're still seeing re-suggestions:
7575
- Check your plugin version: the proposal is in `.claude-plugin/plugin.json` — should be `0.0.8` or later.
76-
- Run `/claude-code-hermit:upgrade` to ensure the latest reflect skill is active.
76+
- Run `/claude-code-hermit:hermit-upgrade` to ensure the latest reflect skill is active.
7777
- If significantly more evidence has accumulated since the dismissal, Hermit may intentionally revisit — this is by design.
7878

7979
## SHELL.md Getting Large / Bloated

docs/UPGRADING.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ claude plugin marketplace add gtapps/claude-code-hermit
1717
Inside Claude Code, in each project that uses the plugin:
1818

1919
```
20-
/claude-code-hermit:upgrade
20+
/claude-code-hermit:hermit-upgrade
2121
```
2222

2323
This detects the version gap, shows what changed, prompts for new settings, refreshes templates, and updates the CLAUDE.md session discipline block.
@@ -36,7 +36,7 @@ Hermits (e.g., `claude-code-dev-hermit`) upgrade the same way:
3636
claude plugin marketplace add your-org/claude-code-dev-hermit
3737
```
3838

39-
Then `/claude-code-hermit:upgrade` — it detects hermit version gaps automatically and updates their CLAUDE-APPEND blocks.
39+
Then `/claude-code-hermit:hermit-upgrade` — it detects hermit version gaps automatically and updates their CLAUDE-APPEND blocks.
4040

4141
Each hermit's version is tracked independently in `config.json`:
4242

@@ -105,7 +105,7 @@ These aren't upgrades — just how your project evolves:
105105

106106
### Automatic migration
107107

108-
Running `/claude-code-hermit:upgrade` handles:
108+
Running `/claude-code-hermit:hermit-upgrade` handles:
109109
- `heartbeat.morning_routine``routines[{id:"morning",...}]`
110110
- `heartbeat.evening_routine``routines[{id:"evening",...}]`
111111
- `heartbeat.idle_agency``idle_behavior` (`true``"discover"`, `false``"wait"`)
@@ -115,7 +115,7 @@ Running `/claude-code-hermit:upgrade` handles:
115115

116116
### What you need to do
117117

118-
1. Run `/claude-code-hermit:upgrade` to migrate config and refresh templates
118+
1. Run `/claude-code-hermit:hermit-upgrade` to migrate config and refresh templates
119119
2. Review migrated routines: `/claude-code-hermit:hermit-settings routines`
120120
3. Optionally add a `## When Idle` section to your OPERATOR.md
121121
4. Optionally set `idle_behavior` to `discover`: `/claude-code-hermit:hermit-settings idle`

scripts/check-upgrade.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ CONFIG_VER=$(python3 -c "import json,sys; c=json.load(open(sys.argv[1])); print(
2121
[ "$PLUGIN_VER" = "$CONFIG_VER" ] && exit 0
2222

2323
echo "---Upgrade Available---"
24-
echo "Plugin v${PLUGIN_VER} ≠ config v${CONFIG_VER}. Run /claude-code-hermit:upgrade"
24+
echo "Plugin v${PLUGIN_VER} ≠ config v${CONFIG_VER}. Run /claude-code-hermit:hermit-upgrade"

scripts/hermit-start.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def check_for_upgrade(config):
9898
config_ver = config.get('_hermit_versions', {}).get('claude-code-hermit', '0.0.0')
9999
if plugin_ver != config_ver:
100100
print(f'[hermit] Upgrade available: v{config_ver} -> v{plugin_ver}')
101-
print('[hermit] Run /claude-code-hermit:upgrade inside Claude Code')
101+
print('[hermit] Run /claude-code-hermit:hermit-upgrade inside Claude Code')
102102
except (OSError, ValueError, KeyError):
103103
pass
104104

0 commit comments

Comments
 (0)