Agent skill

Hitl Escalate

by Archive228 in Archive228/loopkit

Escalate blocked runs to a human via configured channel or fallback to BLOCKED.md and exit the loop.

MITAuto-check passedAgent Workflows

Install Hitl Escalate

skills CLI
$ npx skills add Archive228/loopkit --skill hitl-escalate -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Archive228/loopkit hitl-escalate --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Archive228/loopkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/hitl-escalate .claude/skills/hitl-escalate && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
hitl-escalate
GitHub stars
755
Token cost
~1.2k tokens
SKILL.md length
544 words
Files
1
Skills in repo
43
Repo updated
First seen
Licence
MIT

At a glance

Escalate blocked runs to a human via configured channel or fallback to BLOCKED.md and exit the loop.

  • The loop hits an ambiguous spec
  • SKILL.md covers Trigger — escalate when any of…, Primary action — call the…, Fallback — write BLOCKED.md… and Human unblocks, plus 2 more sections
  • Reaches api.telegram.org; needs LOOPKIT_HITL_TELEGRAM_TOKEN
  • A missing credential

What it does

Hitl Escalate is an agent skill from Archive228/loopkit. Escalate blocked runs to a human via configured channel or fallback to BLOCKED.md and exit the loop. Use when the loop hits an ambiguous spec, a missing credential, a destructive action needing approval, or 3+ consecutive verify failures on the same task.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows. The repository describes itself as: 33 battle-tested skills + minimal .claude harness for any coding agent (Claude Code, Cursor, Codex, Gemini CLI). The licence is MIT.

When your agent uses it

  • The loop hits an ambiguous spec
  • A missing credential
  • A destructive action needing approval
  • 3+ consecutive verify failures on the same task

Example prompts

  • “/hitl-escalate”

Requirements

  • A credential in LOOPKIT_HITL_TELEGRAM_TOKEN

What it can do on your machine

Read from SKILL.md and the folder at commit 5ae033e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.telegram.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • LOOPKIT_HITL_TELEGRAM_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Hitl Escalate loads about 1.2k tokens when it runs. Until then it costs about 67 tokens; SKILL.md has 544 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~67
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Archive228/loopkit at commit 5ae033e, republished under its MIT licence (© Archive228). 544 words, ~1,188 tokens.

Download SKILL.mdSave it as .claude/skills/hitl-escalate/SKILL.md (or your agent's skills folder).
name
hitl-escalate
description
Escalate blocked runs to a human via configured channel or fallback to BLOCKED.md and exit the loop. Use when the loop hits an ambiguous spec, a missing credential, a destructive action needing approval, or 3+ consecutive verify failures on the same task.
when_to_use
the loop hit an ambiguous spec, a missing credential, a destructive action needing approval, or 3+ consecutive verify failures on same task

Human-in-the-Loop Escalate

Long-running agent loops fail in a specific way when they meet a question they can't answer: they guess. The guess ships, the next session builds on it, and by the time a human looks the divergence is three commits deep. This skill is the release valve — when the agent is stuck, it stops and asks, cleanly, in a shape the human can act on.

Trigger — escalate when any of these are true

  • Ambiguous spec. PROMPT.md admits two implementations and the choice changes user-visible behavior.
  • Missing credential. A required env var, API key, or config file is absent, and there is no sanctioned way for the agent to create one.
  • Destructive action needing approval. Dropping a table, force-pushing, deleting user data, spending money, sending mail to real recipients.
  • 3+ consecutive /verify failures on the same task. The loop is thrashing. Stop and get a human eye before the fourth attempt.
  • External dependency down. A third-party service the feature needs is unreachable and no offline path exists.

If none of the above hold, do not escalate. Guessing is bad; escalating on a solvable problem is also bad (it trains humans to ignore the channel).

Primary action — call the human via the configured channel

Read LOOPKIT_HITL_CHANNEL. Supported values:

ValueShape
telegramPOST to https://api.telegram.org/bot$LOOPKIT_HITL_TELEGRAM_TOKEN/sendMessage with chat_id=$LOOPKIT_HITL_TELEGRAM_CHAT, text=<question + repo + short context>.
slackPOST JSON {"text": "..."} to $LOOPKIT_HITL_SLACK_WEBHOOK (incoming-webhook URL).
dialRun $LOOPKIT_HITL_DIAL_CMD with the message on stdin. Whatever the operator wired up — SMS gateway, ntfy, phone call, pager.
none (or unset)Skip the primary action. Go straight to fallback.

Message body — always these five lines, in this order:

[loopkit] blocked in <repo-name> on <ISO timestamp>
Q: <one-line question>
Context: <one-line what you were doing>
Attempted: <one-line what you tried>
Choices: <A | B | C>

Non-2xx from the channel is a soft failure. Log it, then fall through to the fallback so the loop still exits cleanly.

Fallback — write BLOCKED.md and exit

Whether the primary succeeds or fails, always write ./BLOCKED.md at the repo root with exactly four sections:

markdown
# Blocked

## Question:
<one sentence, answerable with a short reply>

## Context:
<what feature, which file, which commit, why now — 3-6 lines>

## Attempted:
<bulleted list of what you tried and why each fell short>

## Choices:
- A) <option> — <consequence>
- B) <option> — <consequence>
- C) <option> — <consequence>

Then exit 2. The loop runner (run.sh) checks for BLOCKED.md at the head of each iteration and exits with code 2 if it exists — that stops the loop until a human clears it.

Show full SKILL.md (201 more words)Show less

Human unblocks

The human reads BLOCKED.md, edits PROMPT.md / drops the credential / approves the destructive step, then rm BLOCKED.md and restarts run.sh. The deleted BLOCKED.md is the unblock signal.

Anti-patterns — do not do these

  • Do not fabricate an answer. "I'll assume the user meant X" is how divergence starts. Assume nothing under ambiguity — escalate.
  • Do not loop endlessly. After the third consecutive /verify failure on the same task, escalate. The fourth attempt is not going to succeed by the same reasoning that failed thrice.
  • Do not silently swallow the missing credential. Do not commit a placeholder, do not disable the feature, do not "TODO" the auth. Ask.
  • Do not escalate for questions the repo already answers. Read AGENTS.md, PROMPT.md, and the last three commits first. Escalation is expensive human attention — spend it on real ambiguity.
  • Do not skip writing BLOCKED.md because the primary channel succeeded. The file is the loop's exit contract. Without it, run.sh keeps spinning.

Pairs with

  • adversarial-verify — the source of the 3-verify-failure trigger.
  • shift-notes — after escalating, note the block in IMPLEMENTATION_PLAN.md so the next session (post-unblock) has full context.
  • spec-first — an ambiguous PROMPT.md is a spec-first failure; the human's unblock should tighten the spec, not just answer the one-off.

© Archive228, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/hitl-escalate of Archive228/loopkit.

Open the folder on GitHubat commit 5ae033e

Compare with similar skills

Hitl Escalate next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Hitl Escalate compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Hitl Escalate this skillArchive228/loopkit755—~1.2kAutomated safety check: PassMIT
MCP Server Builderanthropics/skills180k63 repos~2.3kAutomated safety check: PassApache-2.0
Hook Development for Claude Code Pluginsanthropics/claude-plugins-official38k10 repos~4.1kAutomated safety check: NotesApache-2.0
Using Superpowersfarm-fe/farm5.6k35 repos~1.4kAutomated safety check: PassMIT
Executing Plans Inlineobra/superpowers297k2 repos~5.1kAutomated safety check: PassMIT
Skill CreatorAzure/azqr79689 repos~8.2kAutomated safety check: PassApache-2.0

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • Hook Development for Claude Code Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.

    38k GitHub starsUsed in 10 repos~4.1k tokens
    Agent WorkflowsAuto-check: notes
  • Using Superpowers

    farm-fe/farm

    A skill your agent uses when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions

    5.6k GitHub starsUsed in 35 repos~1.4k tokens
    Agent WorkflowsAuto-check passed
  • Executing Plans Inline

    obra/superpowers

    Has the agent carry out an implementation plan itself, task by task in the current session, keeping a ledger, proving each step with a test and ending with one whole-branch review.

    297k GitHub starsUsed in 2 repos~5.1k tokens
    Agent WorkflowsAuto-check passed
  • Skill Creator

    Azure/azqr

    Official

    Create new skills, modify and improve existing skills, and measure skill performance.

    796 GitHub starsUsed in 89 repos~8.2k tokens
    Agent WorkflowsAuto-check passed
  • Claude Code Agent Development

    anthropics/claude-plugins-official

    Official

    Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.

    38k GitHub starsUsed in 7 repos~2.8k tokens
    Agent WorkflowsAuto-check passed

More from Archive228/loopkit

All 43 skills in this repo
  • Structured Output

    Archive228/loopkit

    Get JSON out of the model reliably. An agent skill from Archive228/loopkit.

    755 GitHub stars~830 tokensUpdated 2 mo ago
    Auto-check passed
  • Using Loopkit

    Archive228/loopkit

    A skill your agent uses when starting any conversation in a loopkit-enabled project - establishes how to find and use loopkit's 49 skills, requiring skill invocation before ANY response including…

    755 GitHub stars~1.4k tokensUpdated 2 mo ago
    Auto-check passed
  • Active Memory Reminder

    Archive228/loopkit

    Before compaction Loopkit extracts decisions into claude-decisions.json (machine-readable).

    755 GitHub stars~1.2k tokensUpdated 2 mo ago
    Auto-check passed
  • Eval Harness

    Archive228/loopkit

    Build a repeatable eval loop that grades agent output with an LLM judge, so prompt/skill changes get scored against a baseline instead of eyeballed.

    755 GitHub stars~876 tokensUpdated 2 mo ago
    Auto-check passed
  • Feature List JSON

    Archive228/loopkit

    Enumerate every end-to-end feature as strict JSON entries with passes:false, editable-passes-only discipline, and priority order.

    755 GitHub stars~1.2k tokensUpdated 2 mo ago
    Auto-check passed
  • Prompt Caching

    Archive228/loopkit

    Cache the parts of the prompt that don't change so a long-running loop stops paying full price on every turn.

    755 GitHub stars~735 tokensUpdated 2 mo ago
    Auto-check passed

Categories

Questions about Hitl Escalate

What does Hitl Escalate do?

Escalate blocked runs to a human via configured channel or fallback to BLOCKED.md and exit the loop. Hitl Escalate is an agent skill from Archive228/loopkit.md and exit the loop.

When should I use Hitl Escalate?

Hitl Escalate fits situations like: the loop hits an ambiguous spec; A missing credential; A destructive action needing approval; 3+ consecutive verify failures on the same task.

How do I install Hitl Escalate in Claude Code?

Run `npx skills add Archive228/loopkit --skill hitl-escalate -a claude-code`. Or copy the skill folder (skills/hitl-escalate in Archive228/loopkit) into .claude/skills/hitl-escalate in your project. Claude Code loads it when a task matches its description.

How do I install Hitl Escalate in Codex?

Run `npx skills add Archive228/loopkit --skill hitl-escalate -a codex`. Or copy the skill folder (skills/hitl-escalate in Archive228/loopkit) into .agents/skills/hitl-escalate in your project. Codex loads it when a task matches its description.

Can I use Hitl Escalate in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Archive228/loopkit --skill hitl-escalate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hitl-escalate, .gemini/skills/hitl-escalate, .github/skills/hitl-escalate and .opencode/skills/hitl-escalate in your project.

What does Hitl Escalate need to run?

Going by SKILL.md and its folder, Hitl Escalate needs credentials named LOOPKIT_HITL_TELEGRAM_TOKEN. Our summary lists: A credential in LOOPKIT_HITL_TELEGRAM_TOKEN.

Does Hitl Escalate access the network?

SKILL.md names 1 domain. In commands or code: api.telegram.org; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Hitl Escalate safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Hitl Escalate use?

Hitl Escalate is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Hitl Escalate use?

About 1.2k tokens (SKILL.md is roughly 4.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Hitl Escalate?

Skills that share tags, products or a category with Hitl Escalate: MCP Server Builder (anthropics/skills, 180k stars), Hook Development for Claude Code Plugins (anthropics/claude-plugins-official, 38k stars), Using Superpowers (farm-fe/farm, 5.6k stars) and Executing Plans Inline (obra/superpowers, 297k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Hitl Escalate?

Archive228 (a GitHub user) maintains it in Archive228/loopkit, which has 755 GitHub stars. The repository holds 43 skills in this directory. The repository was last updated on July 14, 2026.

Source: Archive228/loopkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.