Finishing a Development Branch
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
A skill your agent uses when executing an existing HOTL workflow file — reads steps, loops until success criteria met, auto-approves low-risk gates, pauses at high-risk gates.
$ npx skills add hashgraph-online/awesome-codex-plugins --skill loop-execution -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins loop-execution --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/yimwoo/hotl-plugin/skills/loop-execution .claude/skills/loop-execution && rm -rf skills-srcUse ~/.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/
Install the "loop-execution" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/yimwoo/hotl-plugin/skills/loop-execution into .claude/skills/loop-execution/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "loop-execution", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/yimwoo/hotl-plugin/skills/loop-executionType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add hashgraph-online/awesome-codex-plugins --skill loop-execution -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins loop-execution --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/yimwoo/hotl-plugin/skills/loop-execution .agents/skills/loop-execution && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "loop-execution" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/yimwoo/hotl-plugin/skills/loop-execution into .agents/skills/loop-execution/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "loop-execution", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hashgraph-online/awesome-codex-plugins --skill loop-execution -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins loop-execution --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/yimwoo/hotl-plugin/skills/loop-execution .cursor/skills/loop-execution && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "loop-execution" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/yimwoo/hotl-plugin/skills/loop-execution into .cursor/skills/loop-execution/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "loop-execution", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/hashgraph-online/awesome-codex-plugins.git --path plugins/yimwoo/hotl-plugin/skills/loop-execution--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add hashgraph-online/awesome-codex-plugins --skill loop-execution -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins loop-execution --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/yimwoo/hotl-plugin/skills/loop-execution .gemini/skills/loop-execution && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "loop-execution" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/yimwoo/hotl-plugin/skills/loop-execution into .gemini/skills/loop-execution/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "loop-execution", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install hashgraph-online/awesome-codex-plugins loop-executionInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add hashgraph-online/awesome-codex-plugins --skill loop-execution -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/yimwoo/hotl-plugin/skills/loop-execution .github/skills/loop-execution && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "loop-execution" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/yimwoo/hotl-plugin/skills/loop-execution into .github/skills/loop-execution/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "loop-execution", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hashgraph-online/awesome-codex-plugins --skill loop-execution -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins loop-execution --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/yimwoo/hotl-plugin/skills/loop-execution .opencode/skills/loop-execution && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "loop-execution" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/yimwoo/hotl-plugin/skills/loop-execution into .opencode/skills/loop-execution/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "loop-execution", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
loop-executionA skill your agent uses when executing an existing HOTL workflow file — reads steps, loops until success criteria met, auto-approves low-risk gates, pauses at high-risk gates.
Loop Execution is an agent skill from hashgraph-online/awesome-codex-plugins. Use when executing an existing HOTL workflow file — reads steps, loops until success criteria met, auto-approves low-risk gates, pauses at high-risk gates.
Its SKILL.md is about 6.7k 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 Development, covering Git worktrees. The repository describes itself as: A curated list of awesome OpenAI Codex / ChatGPT plugins, skills, and resources. The 1 Codex Marketplace. See live plugins at: https://hol.org/plugins/best-codex-plugins. The licence is Apache-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 16b4156. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gitbashjqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
HOTL_OWNER_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Loop Execution loads about 6.7k tokens when it runs. Until then it costs about 43 tokens; SKILL.md has 1,800 words of instructions outside code blocks.
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.
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.
The full file from hashgraph-online/awesome-codex-plugins at commit 16b4156, republished under its Apache-2.0 licence (© hashgraph-online). 1,800 words, ~6,726 tokens.
.claude/skills/loop-execution/SKILL.md (or your agent's skills folder).Execute an existing HOTL workflow file autonomously. Canonical workflows live at docs/plans/YYYY-MM-DD-<slug>-workflow.md, with legacy root hotl-workflow-<slug>.md still accepted during migration. Loop on steps with success criteria. Auto-approve low-risk gates. Always pause for high-risk gates.
governed-execution is the preferred new router for host-native or fallback runs. This skill remains the canonical autonomous state machine and a supported explicit compatibility profile. When invoked through the router, use the selected driver for lifecycle calls and require a sufficient evidence receipt before completion.
Announce: "Starting HOTL loop execution. Looking for workflow file..."
Resolve which workflow file to execute:
docs/plans/*-workflow.md:hotl-workflow*.md in project root:After resolving the workflow file, locate interrupted runs before Branch/Worktree Preflight. Use scripts/hotl-locate-run.sh --workflow <workflow-file> when available. This helper scans the current checkout, linked git worktrees, and HOTL's default .hotl-worktrees/<repo>/ directory, so it can find state created inside an isolated execution worktree even when the new session starts from the authoring checkout.
If the helper is unavailable, manually scan these locations for .hotl/state/*.json and match workflow_path or source_workflow_path against the resolved workflow:
git worktree list --porcelain roots for the repo$(dirname <repo-root>)/.hotl-worktrees/$(basename <repo-root>)/*If the user chooses resume, do not run Branch/Worktree Preflight again. Load the matched sidecar, change into its recorded execution_root, and follow skills/resuming/SKILL.md with the original run_id.
After resolving the workflow file, run this preflight before executing any steps:
1. Is this a git repo with at least one commit?
- No → log "Skipping branch setup (no git history)" → proceed to step execution
- Yes → continue
2. Check for uncommitted changes
- First, exclude HOTL-owned transient artifacts from the dirty check:
• docs/plans/*-workflow.md (canonical workflow files)
• hotl-workflow-*.md (legacy workflow files)
• docs/designs/*.md (canonical design docs from brainstorming)
• docs/plans/*-design.md, docs/plans/*-plan.md (legacy design docs from brainstorming)
• .hotl/ (runtime state, reports, cache)
- If only HOTL artifacts are dirty → treat as clean, continue
- If non-HOTL dirty files exist:
• If dirty_worktree: allow in workflow frontmatter → proceed without prompting
• Otherwise → HARD-FAIL. Tell the user which non-HOTL files are dirty. Offer choices:
a. Clean up manually, then re-run
b. Stash manually, then re-run
c. Explicitly approve HOTL to stash and continue
- Clean → continue
3. Determine branch name
- If branch: field exists in workflow frontmatter → use it
- Otherwise → derive `hotl/<slug>` from the workflow filename
• Canonical: strip `YYYY-MM-DD-` prefix and `-workflow.md` suffix from `docs/plans/YYYY-MM-DD-<slug>-workflow.md`
• Legacy: strip `hotl-workflow-` prefix and `.md` suffix from `hotl-workflow-<slug>.md`
4. Capture authoring origin
- Record the current branch name (if any) and current `HEAD` commit as the workflow's authoring origin
- If the current branch is neither `main` nor `master`, and the workflow frontmatter does not already set `branch:` or `worktree:`, PAUSE and ask:
a. Continue on the current branch in this checkout
→ set `branch: <current-branch>` and `worktree: false`
b. Use HOTL's isolated execution branch/worktree (recommended)
→ leave `worktree: true` and let HOTL derive `hotl/<slug>` unless the user wants a custom branch name
c. Use a custom execution branch
→ set `branch: <user-branch>` and keep worktree isolation unless the user explicitly opts out
- Explain clearly: the authoring checkout and the execution checkout can differ. HOTL can execute in a separate worktree while leaving the current checkout untouched
5. Determine isolation mode
- If `worktree: host` in frontmatter → stay on the current checkout's current feature branch exactly as provided by the host tool; reject `main` and `master`
- If `worktree: false` in frontmatter → stay in the current checkout and use a dedicated branch there
- If the current checkout is already a named linked git worktree, and the workflow frontmatter does not set `branch:` or `worktree:`, use host mode automatically to avoid stacking another worktree
- Otherwise → use an isolated git worktree by default
6. Check if the target branch/worktree already exists locally
- Current helper behavior: existing branch/worktree collisions are a hard stop, not an interactive reuse/recreate flow
- If the helper reports an existing branch/worktree conflict, stop and ask the user whether to reuse manually, delete+recreate manually, or abort
- Does not exist → create (no prompt)
7. Resolve the execution root with `scripts/hotl-prepare-execution-root.sh <workflow-file> --executor-mode <mode>`
- The helper returns JSON with: `branch`, `repo_root`, `execution_root`, `workflow_path`, `source_workflow_path`, `source_branch`, `source_head`, `worktree_path`
- By default it creates a linked git worktree for the branch, copies the current workflow into that worktree, and returns that worktree as `execution_root`
- If `worktree: false` in frontmatter → create/switch to the dedicated branch in the current checkout and return the repo root as `execution_root`
- If `worktree: host` in frontmatter → keep the current branch and return the current checkout as `execution_root`; if `branch:` is set, it must match the current branch
- If `branch:` matches the currently checked-out branch while worktree isolation is still enabled, the helper must STOP with a clear message telling the user to set `worktree: false` or `worktree: host` for same-branch continuity
8. Change into `execution_root`
- Every later git command, runtime call, Codex helper call, and review command for this run MUST execute from that directoryRules:
scripts/document-lint.sh) automatically on the workflow file before any git mutation or step execution. If lint fails, STOP and show all errors. If lint passes, continue silently.This is the canonical HOTL execution state machine. Other execution modes (e.g., subagent-execution) reference this spec and define only their differences.
1. Resolve workflow file (see above)
2. Parse frontmatter: intent, risk_level, auto_approve, branch, worktree
3. Run Branch/Worktree Preflight (see above)
4. Capture preflight metadata and change into `execution_root`
5. Initialize and claim the run via runtime:
- Run: `hotl-rt init <workflow-file> --require-owner --executor-mode loop --repo-root <repo-root> --execution-root <execution-root> --source-workflow-path <source-workflow-path> --source-branch <source-branch|null> --source-head <source-head|null> --worktree-path <worktree-path|null> --branch <branch>`
- This parses the workflow, creates .hotl/state/<run-id>.json with all steps, and initializes .hotl/reports/<run-id>.md
- Capture the run_id from stdout
- Immediately run `hotl-rt owner claim --owner <stable-controller-id> --lease-seconds <bounded-lease> --run-id <run-id>`. Parse the one-time `token` from its JSON response, retain it only in the controller, export it as `HOTL_OWNER_TOKEN`, and clear any temporary response variable. Never write the raw token to chat, reports, prompts, or committed files.
- Run `hotl-rt owner heartbeat --lease-seconds <bounded-lease> --run-id <run-id>` before and after long actions and at safe transition boundaries. Use explicit `owner handoff`, `owner release`, or reviewed `owner takeover`; timestamp age alone never grants ownership.
- For every later mutating `hotl-rt step`, `hotl-rt gate`, `hotl-rt action`, `hotl-rt budget`, `hotl-rt finalize`, `hotl-rt finish`, and owner call, keep `HOTL_OWNER_TOKEN` in the controller environment. Pass `--run-id <run-id>` or set `HOTL_RUN_ID=<run-id>` for all runtime and helper calls.
- Never let the runtime silently choose "the newest run" when multiple runs exist
- Only after init and `owner claim` succeed should chat output or native plan/progress UI show anything
6. For each step in order:
a. Start step via runtime:
- Run: `hotl-rt step N start --run-id <run-id>`
- This persists step start (status, timestamp, attempts) to state and report
- Only after the runtime call succeeds should chat show "→ Step N"
b. Announce: "→ Step N: [name]"
c. Execute the action (agent implements the work)
- Heartbeat immediately before starting and after returning from any action that may run for a meaningful fraction of the lease.
- Host goals, automations, background sessions, handoffs, and hooks are scheduling and liveness only. The controller must still persist every transition through HOTL. Preview and experimental host continuation features are opt-in.
- For `external_write`, `production_change`, or `secret_access`, first run `hotl-rt action request <kind> --target <bounded-target> --idempotency-key <stable-key> --run-id <run-id>`, obtain the required human decision with `action decide`, then persist intent with `action begin <action-id> --idempotency-key <stable-key> --run-id <run-id>` before performing the effect.
- After observing the effect, run `action complete <action-id> <succeeded|failed|cancelled> --evidence-ref <reference> --run-id <run-id>`. If execution was interrupted or the outcome is uncertain, inspect the target and use `action reconcile`; never replay an `in_progress` or `uncertain` effect blindly.
d. Verify via runtime:
- Run: `hotl-rt step N verify --run-id <run-id>`
- The runtime runs the verify command, captures stdout/stderr, and atomically transitions the step to done or failed
- If the verify type is unsupported, the runtime blocks the step with a clear reason
- For type: browser — `hotl-rt` downgrades to a paused human-review request when browser tooling is unavailable inside the runtime. If the controller has platform browser tooling, perform the browser check before approving or rejecting that pause.
- For type: human-review — the runtime returns a `human review required: ...` block reason and sets the run status to `paused`; ALWAYS pause for human (never auto-approve)
- For type: artifact — runtime checks path exists and evaluates assert; for `matches-glob`, `path` must be the directory and `value` must be a filename glob only, so `src/*` is invalid and should be authored as `path: src`
- Runtime transitions enforce step order, per-step `max_iterations`, aggregate attempt and elapsed-time limits, and configured budget pauses. Run `hotl-rt budget check --run-id <run-id>` when external agent or cost telemetry was recorded or before launching another costly/long action.
e. If verify fails (runtime returns non-zero):
e0. If the runtime output says `blocked: human review required: ...`
→ PAUSE immediately. Do not start later steps or finalize the run.
→ Show the review prompt to the human and ask: "Continue? (yes/no/show-details)"
→ If the human says yes/approve/continue:
Run: `hotl-rt gate N approved --mode human --run-id <run-id>`
Then continue to the next step
→ If the human says no/reject:
Run: `hotl-rt gate N rejected --mode human --run-id <run-id>`
STOP and surface the report path
→ If the human asks for details:
Show the relevant test/report context, then wait again
→ Never treat the chat reply alone as persisted approval; the approval is only real after the `hotl-rt gate ...` call succeeds
f. If loop: false
→ STOP, report to human
→ Run: `hotl-rt step N block --reason "verify failed" --run-id <run-id>` if not already marked failed by verify
→ Show last verify output. Wait for human guidance.
g. If loop: until [condition]
→ if iterations < max_iterations:
Run: `hotl-rt step N retry --run-id <run-id>` then `hotl-rt step N start --run-id <run-id>`
log "↻ Retrying ([n]/[max])...", retry the action
→ if iterations = max_iterations: STOP
Report: "Step N reached max iterations ([max]). [condition] not met."
Show last verify output. Wait for human guidance.
h. On step completion (verify passed):
- The runtime has already persisted the done status
- Update the workflow checkbox to [x]
- Only after the runtime confirms success should chat show "✓ Step N"
i. If gate: human
→ if auto_approve: true AND risk_level != high:
Run: `hotl-rt gate N approved --mode auto --run-id <run-id>`
log "⚡ Auto-approved: Step N gate (risk: [risk_level])"
continue
→ else:
PAUSE. Show summary of what was done in this step.
Ask: "Gate reached at Step N. Continue? (yes/no/show-details)"
Wait for human response.
Run: `hotl-rt gate N approved --mode human --run-id <run-id>` or `hotl-rt gate N rejected --mode human --run-id <run-id>`
j. If gate: auto
→ Run: `hotl-rt gate N approved --mode auto --run-id <run-id>`
→ always continue, log "⚡ Auto-approved: Step N gate"
7. All steps complete:
→ Run review checkpoint (see Review Checkpoints below)
→ Invoke hotl:verification-before-completion skill
→ For Codex final summaries, run: `scripts/finalize-codex-summary.sh <run-id>` (or set `HOTL_RUN_ID`)
→ For Claude Code/Cline, run: `hotl-rt finalize --json --run-id <run-id>`, write the payload to a temp file, then render it with: `scripts/render-execution-summary.sh --platform <claude|cline> <summary-json-file>`
→ Successful finalize sets status to `ready_to_finish`, not `completed`. It proves step/gate/effect/budget readiness but does not invent a branch disposition.
→ Do not freehand the final summary when the renderer is available
→ Invoke `hotl:finishing-a-development-branch` with the same `run_id` and retain `HOTL_OWNER_TOKEN`. Even non-git runs require an explicit `kept` disposition before completion.
→ Never silently merge, publish, keep, or discard the execution branch/worktree
→ After `hotl-rt finish` moves a successful run from `ready_to_finish` to `completed`, run `owner release`, then require `hotl-rt receipt <run-id> --json` to report `sufficiency.sufficient: true`.
→ Only then show the rendered summary as visible chat output in the final response; do not paraphrase it away or claim completion earlier.All state persistence is handled by the hotl-rt shared runtime (runtime/hotl-rt). Agents do not manage state files directly.
The runtime owns:
.hotl/state/<run-id>.json — authoritative machine state (created by hotl-rt init, updated by owner/step/gate/action/budget/finalize/finish transitions).hotl/reports/<run-id>.md — durable Markdown report (initialized at init, updated incrementally, finalized at finalize)The sidecar also records the execution location for the run: repo_root, execution_root, workflow_path, source_workflow_path, worktree_path, and executor_mode.
Run ID format: <slug>-<YYYYMMDDTHHMMSSZ>-<12-hex-nonce> (e.g., add-auth-20260320T212315Z-a1b2c3d4e5f6). The entropy suffix prevents collisions across independent execution roots; legacy timestamp-only IDs remain readable.
Workflow checkboxes (- [x]) are a human-visible mirror updated by the agent on step completion. The sidecar is the source of truth.
Operational rule: hotl-rt calls happen before the corresponding chat log or Codex native plan/progress update. Native progress UI is never a substitute for the runtime-managed artifacts.
Concurrency rule: after hotl-rt init returns a run id, claim the renewable controller and pin every later runtime/helper call to that run id with HOTL_OWNER_TOKEN. Do not rely on "latest file in .hotl/state" when more than one run exists, and do not use file age as takeover authority.
See skills/resuming/SKILL.md for the full sidecar schema, stale run detection, and verify-first resume flow.
To find hotl-rt and HOTL scripts (document-lint.sh, hotl-locate-run.sh, render-execution-summary.sh, etc.), resolve in this order:
bash <plugin-path>/runtime/hotl-rt init <workflow-file>~/.codex/hotl/runtime/hotl-rt and ~/.codex/hotl/scripts/~/.codex/plugins/hotl-source/runtime/hotl-rt and ~/.codex/plugins/hotl-source/scripts/~/.codex/plugins/cache/codex-plugins/hotl/*/runtime/hotl-rt and ~/.codex/plugins/cache/codex-plugins/hotl/*/scripts/~/Documents/Cline/Scripts/hotl-rt and ~/Documents/Cline/Scripts/./runtime/hotl-rt and ./scripts/The same resolution applies to all HOTL scripts under scripts/.
Dependency: jq. hotl-rt requires jq for JSON state management. If hotl-rt fails with a jq not found error:
.hotl/state/), durable reports (.hotl/reports/), or deterministic summary renderingjqExecution report output must conform to docs/contracts/execution-report-output.md. The contract defines the durable report format (metadata, summary table, event log), execution status vocabulary, final summary semantics, platform rendering tables, and the deterministic renderer reference.
The hotl-rt runtime writes the durable report to .hotl/reports/<run-id>.md incrementally. The report survives app rendering quirks and provides a reliable post-run artifact for debugging, trust, and resume.
Reference report_path in user-facing pause, blocked, resume, and completion responses so the durable report is always discoverable.
When a verify: human-review step pauses, the response must include the report_path and make it clear that the run is paused pending approval, not failed.
If the workflow sets report_detail: full, successful verify output must also be included in the durable report, not only failures.
Record git rev-parse HEAD as the review base at run start and after each review.
After all steps have passed verification, before hotl-rt finalize:
requesting-code-review with review type: finalreceiving-code-reviewAt intermediate gate: human steps, request review only when:
When triggered, scope the review to steps completed since the last review checkpoint, not the entire run. Use review type: checkpoint.
Do not request review at every gate by default.
Review happens:
verification-before-completionhotl-rt finalize / any "done" claimrisk_level: high in frontmatter always forces human approval at gate: human steps, even if auto_approve: truegate: human on steps with security-sensitive keywords (auth, encrypt, secret, key, password, token, permission, role, billing)Report format, status vocabulary, final summary semantics, and platform rendering tables for final artifacts are defined in docs/contracts/execution-report-output.md. This section covers runtime behavior that is executor-owned: live step visibility, progress updates, and verbose mode.
Every execution run MUST end with a visible final summary in chat. A prose recap alone is not compliant.
For Codex final summaries:
scripts/finalize-codex-summary.sh when availableIf the Codex helper is unavailable, fall back to hotl-rt finalize --json plus scripts/render-execution-summary.sh --platform codex ..., then emit that renderer output directly.
Final artifacts must follow docs/contracts/execution-report-output.md:
| Platform | Final summary rendering |
|---|---|
| Codex | Compact list in chat. Wide markdown tables are not acceptable here. |
| Claude Code | Markdown table in chat. |
| Cline | Markdown table in chat. |
Status vocabulary for final summaries includes ✓ Done, ⚡ Auto-approved, ✓ Approved, ✗ Failed, and ✗ Blocked.
Iterations means attempt count only. For tables, the Iterations column is a number only or - for gates. Never put test counts in Iterations; test counts belong in Status.
In the Codex compact list, keep the step name first and inline status detail after -. Include the status word on every line and always include iteration count details such as Done (1 attempt), Done (3 attempts), or Approved (1 attempt).
| Platform | Live step visibility |
|---|---|
| Codex | Native progress card (primary). Per-step chat logs as fallback. |
| Claude Code | Per-step one-line chat logs |
| Cline | Per-step one-line chat logs |
Every execution run MUST provide live step visibility — the user must see which step is currently executing and which are done. This is not optional on any platform.
When running in the Codex app, the executor MUST use the native plan/progress UI as the primary live step visibility surface:
in_progress at a timescripts/show-codex-current-step.sh to print the current step number, name, status, and attempts from the active run without mutating stateOn platforms without native progress (Claude Code, Cline), the executor MUST use per-step chat logs for live visibility.
After each step, log one line:
✓ Step 1: Write failing tests
✓ Step 2: Implement auth logic (3 attempts)
⚡ Step 3: Security review gate (auto-approved)
✓ Step 4: Update docsWhen verbose mode is enabled, print a compact step list at each step transition (before starting a step, after a step completes/fails/auto-approves):
✓ Step 1: Write failing tests
✓ Step 2: Implement feature
→ Step 3: Run full test suite (attempt 1/3)
· Step 4: Update docs
· Step 5: Human reviewSymbols:
✓ — completed→ — current step (include attempt info if looping)· — pending⚡ — auto-approved gate✗ — blocked/failedInclude short result details only when useful (test counts on completed steps, attempt progress on current step, failure reason on blocked steps).
progress: verboseIf no canonical docs/plans/*-workflow.md or legacy hotl-workflow*.md is found:
"No workflow file found. Would you like to:
$hotl:writing-plans in Codex, /hotl:write-plan in Claude Code)workflows/feature.md, workflows/bugfix.md, workflows/refactor.md)"© hashgraph-online, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/yimwoo/hotl-plugin/skills/loop-execution of hashgraph-online/awesome-codex-plugins.
Open the folder on GitHubat commit 16b4156
Loop Execution 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Loop Execution this skillhashgraph-online/awesome-codex-plugins | 1.2k | — | ~6.7k | Automated safety check: Pass | Apache-2.0 | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Migrate Core Code to Submodulestinyhumansai/openhuman | 41k | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| Finishing A Development Branchfarm-fe/farm | 5.6k | 33 repos | ~1.8k | Automated safety check: Pass | MIT | |
| Git Worktree Cleanuplobehub/lobehub | 83k | — | ~2.8k | Automated safety check: Pass | Custom licence | |
| Keep Codex Fastvibeforge1111/keep-codex-fast | 1.6k | — | ~3.1k | Automated safety check: Pass | MIT |
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
farm-fe/farm
A skill your agent uses when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for…
lobehub/lobehub
Audits stale Git worktrees and branches with a bundled script, classifies each one, and deletes only after you approve the exact candidates.
vibeforge1111/keep-codex-fast
A skill your agent uses when Codex feels slow or bloated, when local sessions/logs/worktrees/config have grown over time, or when a user wants safe maintenance for Codex Desktop/CLI state.
jamiepine/voicebox
Sorts a backlog of open pull requests into must-merge, candidate, superseded and deferred, writes a triage doc and works the merge loop before a release.
hashgraph-online/awesome-codex-plugins
Create original anime-style reaction stickers as looping GIFs and MP4 previews, using generated character pose sheets and timed key poses.
hashgraph-online/awesome-codex-plugins
Manage and query Calibre libraries with the calibredb CLI (local paths or Calibre Content server URLs).
hashgraph-online/awesome-codex-plugins
A skill your agent uses when adding, changing, testing, or debugging Rust HTTP APIs and services, especially when Codex needs black-box integration tests, random-port app startup, real database test…
hashgraph-online/awesome-codex-plugins
Make a studio's game look like something at build time — a cover from a real frame of the game (free), painted covers, backdrops, textures and character plates from image models through the…
hashgraph-online/awesome-codex-plugins
Use CALL-E from Codex through the calle CLI. An agent skill from hashgraph-online/awesome-codex-plugins.
hashgraph-online/awesome-codex-plugins
Balance game difficulty, resources, rewards, probability, progression, economies, and dominant strategies.
Categories
A skill your agent uses when executing an existing HOTL workflow file — reads steps, loops until success criteria met, auto-approves low-risk gates, pauses at high-risk gates. Loop Execution is an agent skill from hashgraph-online/awesome-codex-plugins. Use when executing an existing HOTL workflow file — reads steps, loops until success criteria met, auto-approves low-risk gates, pauses at high-risk gates.
Loop Execution fits situations like: executing an existing HOTL workflow file — reads steps; loops until success criteria met; auto-approves low-risk gates; pauses at high-risk gates.
Run `npx skills add hashgraph-online/awesome-codex-plugins --skill loop-execution -a claude-code`. Or copy the skill folder (plugins/yimwoo/hotl-plugin/skills/loop-execution in hashgraph-online/awesome-codex-plugins) into .claude/skills/loop-execution in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hashgraph-online/awesome-codex-plugins --skill loop-execution -a codex`. Or copy the skill folder (plugins/yimwoo/hotl-plugin/skills/loop-execution in hashgraph-online/awesome-codex-plugins) into .agents/skills/loop-execution in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hashgraph-online/awesome-codex-plugins --skill loop-execution -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/loop-execution, .gemini/skills/loop-execution, .github/skills/loop-execution and .opencode/skills/loop-execution in your project.
Going by SKILL.md and its folder, Loop Execution needs the command-line tools its instructions call (git, bash and jq) and credentials named HOTL_OWNER_TOKEN. Our summary lists: A credential in HOTL_OWNER_TOKEN.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Loop Execution is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.7k tokens (SKILL.md is roughly 27k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Loop Execution: Finishing a Development Branch (obra/superpowers, 296k stars), Migrate Core Code to Submodules (tinyhumansai/openhuman, 41k stars), Finishing A Development Branch (farm-fe/farm, 5.6k stars) and Git Worktree Cleanup (lobehub/lobehub, 83k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hashgraph-online (a GitHub organization) maintains it in hashgraph-online/awesome-codex-plugins, which has 1,232 GitHub stars. The repository holds 736 skills in this directory. The repository was last updated on October 6, 2026.
Source: hashgraph-online/awesome-codex-plugins on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.