Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"allow": [
"Bash(gh issue:*)",
"Bash(node */skills/hermit-scribe/file-issue.js*)",
"Bash(node */scripts/cron-tz-shift.js *)",
"Bash(bun */scripts/routines.ts tz-shift *)",
"Bash(node */scripts/resolve-outbound-channel.js *)"
],
"deny": []
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/stale-proposals/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ Skip this entire step under `--no-apply`.
For each `SHIPPED-STRONG` verdict, resolve the ID to a filename, then close it the same way `/claude-code-hermit:proposal-act` does — the metrics event goes first so the summary regen reflects it:

```bash
bun plugins/claude-code-hermit/scripts/resolve-prop.ts .claude-code-hermit "<PROP-ID>"
bun plugins/claude-code-hermit/scripts/proposal.ts resolve-id .claude-code-hermit "<PROP-ID>"

bun plugins/claude-code-hermit/scripts/append-metrics.ts \
.claude-code-hermit/state/proposal-metrics.jsonl \
Expand All @@ -76,7 +76,7 @@ HERMIT_PATCH

Writing the evidence into the Decision line is what makes an automatic flip auditable: the operator can later see exactly which bullet closed the proposal and reopen it if the match was wrong.

`resolve-prop.ts` returning `AMBIGUOUS` or `NONE` means don't guess — move that proposal into the Step 4 list instead. `proposal.ts` returning `ERROR|<reason>` means nothing was patched; report it and continue with the rest.
`proposal.ts resolve-id` returning `AMBIGUOUS` or `NONE` means don't guess — move that proposal into the Step 4 list instead. `proposal.ts` returning `ERROR|<reason>` means nothing was patched; report it and continue with the rest.

## Step 4 — Ask about the rest

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"required_core_version": ">=1.2.30",
"required_core_version": ">=1.2.34",
"requires": {
"claude-code-hermit": ">=1.2.30"
"claude-code-hermit": ">=1.2.34"
},
"min_claude_code_version": ">=2.1.172"
}
2 changes: 1 addition & 1 deletion plugins/claude-code-dev-hermit/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"dependencies": [
{
"name": "claude-code-hermit",
"version": "^1.2.30"
"version": "^1.2.34"
}
],
"description": "Language-agnostic safety layer + dev conventions for any agent your hermit uses to write code",
Expand Down
1 change: 1 addition & 0 deletions plugins/claude-code-dev-hermit/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
- `hatch`'s CLAUDE-APPEND version gate said to "extract the stamped version from the existing block", but no template or renderer ever wrote a version into the block — the gate degenerated to marker-present-only, so a plugin version bump alone never refreshed an already-hatched install. It now reads the stamp from `_hermit_versions["claude-code-dev-hermit"]` in `config.json`, which `hatch` itself already writes on every run.

### Changed
- Requires core `>=1.2.34`. Core absorbed its proposal satellites into `proposal.ts` verbs, so the shared route this plugin calls through `bin/hermit-run` is now `proposal metrics …`. `bin/hermit-run` resolves a script by bare filesystem probe, so pairing this version with an older core fails with a misleading "plugin may predate this command" error.
- The CLAUDE-APPEND template gained a closing marker (`<!-- /claude-code-dev-hermit: Development Workflow -->`), placed outside both mode regions so it survives both renderings. Lets core's `hermit-evolve` bound the block exactly instead of a heuristic that used to mistake the template's own `<!-- mode:standard-only -->` annotation for the block marker.
- `domain-brainstorm` reads core's proposal-metrics report via `.claude-code-hermit/bin/hermit-run` (a path relative to this plugin can't reach core's install), and a kill-criteria breach now escalates to the operator as a class-level signal instead of instructing the skill to self-retire (the shared segment can't attribute noise to one skill).
- §Tests Before PR folded into §Implementation Flow (both stated one ordering, and `dev-pr` Gate 0 enforces the test-freshness half mechanically), the slug algorithm and its worked examples became one naming line, and the harness built-ins left §Dev Quick Reference. Rendered standard block 9,330 B → ~6,158 B, safety 6,338 B → ~4,703 B. No git-safety rule was removed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ description: On-demand dev-voice brainstorm — reads codebase friction signals

## Kill criteria (read before running)

After ≥8 invocations, check the `capability-brainstorm` segment of core's proposal metrics report — run `.claude-code-hermit/bin/hermit-run proposal-metrics-report .claude-code-hermit --source=capability-brainstorm` (the project-resident `bin/hermit-run` resolves core's plugin root, which a path relative to this plugin can't reach), or read the `capability-brainstorm` row of the table `/claude-code-hermit:hermit-evolution` prints. If triage-survival < 25% or PROP-acceptance < 30%, treat it as a class-level signal that brainstorm output is noisy and raise it with the operator — the segment is shared with core's `capability-brainstorm` and the other domain brainstorm skills, so it cannot by itself say which skill to cut.
After ≥8 invocations, check the `capability-brainstorm` segment of core's proposal metrics report — run `.claude-code-hermit/bin/hermit-run proposal metrics .claude-code-hermit --source=capability-brainstorm` (the project-resident `bin/hermit-run` resolves core's plugin root, which a path relative to this plugin can't reach), or read the `capability-brainstorm` row of the table `/claude-code-hermit:hermit-evolution` prints. If triage-survival < 25% or PROP-acceptance < 30%, treat it as a class-level signal that brainstorm output is noisy and raise it with the operator — the segment is shared with core's `capability-brainstorm` and the other domain brainstorm skills, so it cannot by itself say which skill to cut.

### Gate 0 — Gather inputs

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"required_core_version": ">=1.2.30",
"required_core_version": ">=1.2.34",
"requires": {
"claude-code-hermit": ">=1.2.30"
"claude-code-hermit": ">=1.2.34"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"dependencies": [
{
"name": "claude-code-hermit",
"version": "^1.2.30"
"version": "^1.2.34"
}
],
"description": "Fitness/training layer for claude-code-hermit — Strava MCP integration, activity analysis skills, and routine templates for an autonomous training assistant",
Expand Down
1 change: 1 addition & 0 deletions plugins/claude-code-fitness-hermit/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
- `hatch` no longer tells the operator to `cp .env.example .env`; a `.env.example` does not ship with the plugin.

### Changed
- Requires core `>=1.2.34`. Core absorbed its proposal satellites into `proposal.ts` verbs, so the shared route this plugin calls through `bin/hermit-run` is now `proposal metrics …`. `bin/hermit-run` resolves a script by bare filesystem probe, so pairing this version with an older core fails with a misleading "plugin may predate this command" error.
- `domain-brainstorm` reads core's proposal-metrics report via `.claude-code-hermit/bin/hermit-run` (a path relative to this plugin can't reach core's install), and a kill-criteria breach now escalates to the operator as a class-level signal instead of instructing the skill to self-retire (the shared segment can't attribute noise to one skill).
- `strava-sync` and `strava-health-check` routines removed — `fitness-brief` (morning + evening) now owns Strava connectivity, activity sync, RPE binding, and Run deep-dive as the plugin's two daily beats.
- Activity notes carry `cardiac_drift_bpm` in frontmatter; `weekly-patterns` reads it there and falls back to the rendered line for older notes.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ description: On-demand fitness-voice brainstorm — reads Strava history and tra

## Kill criteria (read before running)

After ≥8 invocations, check the `capability-brainstorm` segment of core's proposal metrics report — run `.claude-code-hermit/bin/hermit-run proposal-metrics-report .claude-code-hermit --source=capability-brainstorm` (the project-resident `bin/hermit-run` resolves core's plugin root, which a path relative to this plugin can't reach), or read the `capability-brainstorm` row of the table `/claude-code-hermit:hermit-evolution` prints. If triage-survival < 25% or PROP-acceptance < 30%, treat it as a class-level signal that brainstorm output is noisy and raise it with the operator — the segment is shared with core's `capability-brainstorm` and the other domain brainstorm skills, so it cannot by itself say which skill to cut.
After ≥8 invocations, check the `capability-brainstorm` segment of core's proposal metrics report — run `.claude-code-hermit/bin/hermit-run proposal metrics .claude-code-hermit --source=capability-brainstorm` (the project-resident `bin/hermit-run` resolves core's plugin root, which a path relative to this plugin can't reach), or read the `capability-brainstorm` row of the table `/claude-code-hermit:hermit-evolution` prints. If triage-survival < 25% or PROP-acceptance < 30%, treat it as a class-level signal that brainstorm output is noisy and raise it with the operator — the segment is shared with core's `capability-brainstorm` and the other domain brainstorm skills, so it cannot by itself say which skill to cut.

### Gate 0 — Gather inputs

Expand Down
2 changes: 1 addition & 1 deletion plugins/claude-code-hermit/.claude-plugin/hermit-meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"credentials": [
{
"name": "setup-token",
"expiry_probe": "bun ${CLAUDE_PLUGIN_ROOT}/scripts/setup-token-probe.ts",
"expiry_probe": "bun ${CLAUDE_PLUGIN_ROOT}/scripts/setup-token-mint.ts probe",
"warn_days": 14,
"reauth_skill": "/claude-code-hermit:relogin"
}
Expand Down
Loading
Loading