Use when stuck on a himmel guardrail — a DENIED Bash/Jira write, a permission prompt, or a failed attestation gate.
Install
npx skillscat add yotamleo-org/himmel/stuck-playbook Install via the SkillsCat registry.
stuck-playbook — guardrail-recovery escape-hatches (HIMMEL-211)
You hit a himmel guardrail and need the recovery rule. The full symptom→action
playbook lives in the repo at docs/internals/stuck-playbook.md — read it
now and apply the section matching your symptom.
Read docs/internals/stuck-playbook.md(In a worktree, the repo root is the worktree dir; the path is the same.)
The one rule that overrides every workaround
Never reshape a command to dodge a guardrail. The guardrails are structural
on purpose (HIMMEL-195: structural > instructional). If a write is still denied
after applying the matching playbook section, that denial is correct — defer
to the operator. Prefer a structural fix (a new auto-approve-safe-bash case,
a CLI flag) over a cleverer command.
Symptom index (detail in the playbook doc)
- Bash command stopped by a permission prompt (interactively it waits;
headless/auto it DENIES at rc=0 and continues — a silent no-op) → the native
matcher bails on$var/$(…)/ backticks / compound operators. Prefer
literal single commands. (HIMMEL-203 / HIMMEL-1969) - Jira write fell through to the classifier and was DENIED → command-SHAPE
problem, not a write-permission problem. Prefer literalnode …/jira …(bare
orcd-prefixed); multi-line bodies via--comment-file/--desc-file.
(HIMMEL-205 / 209) - Pre-push gate failed on a missing attestation trailer → put the trailer in
the FIRST commit; never reactive--amend(HARD-blocked in auto-mode). If
already pushed, add it to the PR body. /worktreerefused the branch ("PR already MERGED") → deliberate reuse
bypasses withREUSE_MERGED_BRANCH_OK=1set in the LAUNCHING shell; prefer a
freshtype/slugbranch. Lingering merged-PR worktrees are flagged read-only
by/himmel-doctorC7 → run/clean.- Every Write/Edit under
/tmprefused: "cannot determine branch for
'/tmp'" → a stray.gitin an ANCESTOR of the edited path (not the file
itself) makesblock-edit-on-maintreat that ancestor as a repo root./himmel-doctorC36-stray-tmp-git catches it;rmdirit if empty, stop and
name it (never delete contents) if not. (HIMMEL-2739) - An ad-hoc Bash line containing the literal word "enable" is refused in a
worktree-pinned session → the harness's own worktree-isolation guard, not
a himmel script; independent ofgitinvolvement. Do not reshape the
command to dodge it (the rule above still applies) — rephrase to avoid the
word where possible, or defer to the operator. (HIMMEL-2739) - A late fix after plain
pre-commit runis gated against stale content
→ it stashes every unstaged file repo-wide and lints the STAGED index;--all-filesdoes NOT stash.git addthe fix again before re-running.
(HIMMEL-2739) - An outward-facing command (
gh pr create/gh pr comment/git push)
is denied withStage 2 classifier error→ do not retry verbatim
back-to-back; end the turn or do one unrelated read, then retry ONCE,
delayed, with the same head:gh pr create/gh pr commentvia--body-fileinstead of inline;git pushhas no body flag, so retry the
exact same command once — the delay and intervening read are themselves
what make it non-identical, not a contrived alternate spelling. Any denial
after that one retry → stop,BLOCKEDto the console with the exact text;
the console never runs it (laundering).[Out-of-Place Publication]gets
no retry at all, first time seen or not — escalate immediately the same
way. (HIMMEL-3020)
Why these are a load-on-trigger playbook and not CLAUDE.md rules:docs/internals/stuck-playbook.md § Why this is a playbook, and memoryfeedback_no_operational_rules_in_claudemd.