skills/loopy/SKILL.md
Run and monitor a Loopy recipe for the current project after checkpointing and pushing the current branch, selecting the right recipe from the local loopy recipes tree, and intervening only when run health or delivery correctness clearly requires it. Stay attached from launch until the terminal launch state and retained outputs/logs/results have been checked and still make sense.
npx skillsauth add olliecrow/codex loopyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
rg -> find/grep, python -> python3, alternate repo-native scripts).plan/, ensure required plan directories exist before reading/writing them (create when edits are allowed; otherwise use an in-memory fallback and call it out).investigate -> plan -> fix -> verify -> battletest -> organise-docs -> git-commit -> re-review; cleanup scan -> prioritize -> clean -> verify -> re-scan; docs audit -> update -> verify -> re-audit.organise-docs frequently during execution to capture durable decisions and learnings, not only at the end.git-commit when changes are commit-eligible, checks are green, and repo policy permits commits.docs/ accurate and up to date, and promote durable learnings and decisions from work into docs.git-commit to create a small logical checkpoint commit once relevant checks are green and repo policy permits commits.organise-docs whenever durable learnings/decisions appear, and prune stale plan/ scratch artifacts.plan/handoffs/ or plan/current/notes.md.running, blocked, failure, success-cleaned, success-with-retained-workspace),The skill is complete only when all of the following are true:
done, blocked, or not-applicable, with brief evidence or rationale.done: checkpoint completed on the target repo, one clear recipe was selected, the Loopy run finished, the retained launch artifacts/logs/results still support the final story, and the terminal state was classified correctly as failure, success-cleaned, or success-with-retained-workspace.blocked: checkpoint could not complete, recipe selection remained ambiguous, current-branch compatibility failed, or Loopy/tool/repo prerequisites still failed after bounded retries; blocker evidence and exact unblock commands are reported.not-applicable: remote-delivery follow-up is intentionally skipped when the user asked only for recipe selection or preflight diagnostics.Stop only after this terminal contract is satisfied; otherwise continue iterating.
Run loopy launch against the correct committed recipe in ~/repos/me/loopy/recipes, but only after the current project branch has been checkpointed and pushed. Prefer the bundled launcher for repeatable preflight, recipe auto-discovery, branch-compatibility checks, launch-root discovery, heartbeat monitoring, and artifact reporting. Do not stop at launch exit alone; finish only after the retained state, logs, and result artifacts have been checked and still make sense together.
The local Loopy source repo is:
~/repos/me/loopy
The canonical launcher for this skill is:
scripts/run_loopy.pyIt runs go run ./cmd/loopy validate ... and go run ./cmd/loopy launch ... from the local Loopy repo, verifies that the current target-repo branch is clean and synchronized, can auto-rank matching recipes for the current repo plus user goal, enforces the "current branch" guardrail by default, can attach to the latest matching launch instead of starting a duplicate run, discovers the new launch under ~/loopy/launches/, and monitors state/launch.json plus retained logs/ while the run is active.
Use this skill when the user asks for intents like:
run loopy on this repostart a loopy run herelaunch the loopy recipe for this projectrun the existing loopy recipe from this branchmonitor this loopy launchpreflight loopy for the current projectUse these copy-paste templates:
[$loopy] checkpoint and push the current branch, select the matching loopy recipe for this project, then launch and monitor it from start to finish while checking retained logs, launch state, and result artifacts.[$loopy] preflight the current repo for loopy readiness, identify the correct recipe under ~/repos/me/loopy/recipes, and do not launch unless branch compatibility is explicit.[$loopy] rerun the known recipe <project/recipe.loopy.hcl> from the current branch after checkpointing, monitor it from start to finish, and summarize the launch artifacts plus final delivery result only after the retained evidence agrees.[$loopy] discover the best loopy recipe for this repo and goal "<goal>", then attach to the latest matching launch if one is already running; otherwise launch and monitor a new run from start to finish while checking retained logs, launch state, and result artifacts.When this skill is triggered, compose other skills as needed:
checkpoint first to enforce the committed, pushed, and documented branch prerequisite before any Loopy launch starts.investigate when recipe selection, branch compatibility, launch health, or retained-artifact recovery is unclear enough that direct action would rely on guesswork.organise-docs when a Loopy run surfaces durable recipe-selection rules, operating constraints, or recovery guidance worth preserving.If there is a conflict, launch correctness wins: companion skills should support a trustworthy Loopy run, not weaken the checkpoint-first and current-branch guardrails.
step_index has not advanced yet.Default policy bands for one Loopy run:
state/launch.json still updates, benign retained-log noise, or same-step heartbeats paired with visible checkout progress.Hard-stop override (intervene earlier):
go, codex) fail in a way that blocks the expected launch behavior,state/launch.json becomes unreadable or records terminal failure,../checkpoint/SKILL.md on the target repo. Do not skip this because the user already "probably pushed"; verify it.~/repos/me/loopy/recipes using both repo association and the user's stated goal:
repo settings against the target repo's remote URL or local repo identity,branch matches the current branch.branch or names a different branch when the user's intent is "from the current branch". Treat that as ambiguous unless the user explicitly approves default-branch or mismatched-branch behavior.go run ./cmd/loopy launch ... runs through the bundled launcher instead of raw loopy launch so preflight and monitoring stay consistent.go and codex. If the selected recipe or downstream delivery path has extra prerequisites, surface the exact blocker before launch.--attach-latest or --launch-root so the user gets continuity instead of a duplicate launch when useful retained state already exists.~/loopy/launches/<id>/state/launch.json,logs/*.message.*, logs/*.stdout.jsonl, and logs/*.stderr.log,git status when logs stay quiet,launch_id, launch_root, branch, classification, and launch_state.state/launch.json, and newest retained logs before concluding what failed.../checkpoint/SKILL.md.done or blocked.git rev-parse --show-toplevel.git status --porcelain.0 0 with git rev-list --left-right --count HEAD...@{u}.origin exists and resolves to the repo identity you expect to match in Loopy recipes.go and codex.~/repos/me/loopy/recipes for:
project.loopy.hcl files whose repo matches the target repo,branch matches the target repo's current branch.python3 skills/loopy/scripts/run_loopy.py --target-repo "<repo-root>" --goal "<user-goal>" --discover-onlybranch, or sets a different branch from the current branch, treat the run as blocked pending explicit approval unless the user already requested that behavior.python3 skills/loopy/scripts/run_loopy.py --target-repo "<repo-root>" --goal "<user-goal>" when the recipe is not explicit, or python3 skills/loopy/scripts/run_loopy.py --recipe "<project/recipe.loopy.hcl>" --target-repo "<repo-root>" when it is.--warmup-seconds 300--warmup-poll-seconds 30--poll-seconds 600--provider <provider>--model <model>--reasoning-effort <level>--var <name=value> (repeatable)--preflight-only when the user asked for readiness/selection only.--allow-default-branch only when the user explicitly approved running from the recipe/default branch instead of the current branch.--allow-branch-mismatch only when the user explicitly approved a recipe whose explicit branch differs from the current branch.--attach-latest on repeated invocations when the same recipe may already have an active launch.--launch-root "<~/loopy/launches/...>" --monitor-only when the user gives you a specific retained launch to inspect or continue watching.~/loopy/launches/<id>/ directory is discovered,state/launch.json status, step_index, last_step, updated_at, heartbeat_at, current thread/profile data, workspace retained/cleaned state, and the newest blocking log signal,logs/.300s: heartbeat every 30s,300s: heartbeat every 600s.failure: non-zero exit, terminal state/launch.json status failed, unreadable required artifacts, or other unrecoverable launch error.success-with-retained-workspace: launch completed successfully but retained workspace state still requires follow-up or inspection.success-cleaned: launch completed successfully and cleaned up its workspace state.state/launch.json, and the newest retained logs.failure, success-with-retained-workspace, or success-cleaned),not-applicable.Use scripts/run_loopy.py.
Supported arguments:
--recipe <project/recipe.loopy.hcl>: recipe path relative to the Loopy repo recipes/ directory. Optional when discovery is allowed.--goal <text>: short user-intent text used to rank matching recipes during auto-discovery.--target-repo <path>: target local repo path. Defaults to the current working directory.--warmup-seconds <int>: length of the active monitoring warmup window. Default 300.--warmup-poll-seconds <int>: heartbeat interval during warmup. Default 30.--poll-seconds <int>: steady-state heartbeat interval after warmup while no new output arrives. Default 600.--artifact-dir <path>: override local directory for monitor logs. Defaults to <repo>/plan/artifacts/loopy when available.--discover-only: list matching recipe candidates and exit without launching.--preflight-only: run repo and recipe preflight only and do not launch Loopy.--allow-default-branch: allow launching a recipe that omits branch, which means Loopy will use the target repo default branch instead of the current branch.--allow-branch-mismatch: allow launching a recipe whose explicit branch differs from the current branch.--attach-latest: attach to the latest matching launch instead of starting a duplicate run when one exists.--launch-root <path>: attach to a specific retained launch root.--monitor-only: only monitor an existing launch; do not start a new one.--loopy-repo <path>: override the local Loopy source repo. Defaults to ~/repos/me/loopy.--provider <provider>: optional runtime provider override passed through to both loopy validate and loopy launch.--model <model>: optional runtime model override passed through to both loopy validate and loopy launch.--reasoning-effort <level>: optional runtime reasoning-effort override passed through to both loopy validate and loopy launch.--var <name=value>: repeatable launch-time recipe var assignment passed through to both loopy validate and loopy launch.data-ai
Use automatically for Sentinel repo sessions, trading research questions, market/company/ticker/source questions, or any request that should use Sentinel's read-only data sources and reference context. Enforces Sentinel's high-confidence, read-only, no-local-query-trace research posture.
documentation
Compact the current conversation into a handoff document for another agent to pick up.
tools
Run the Codex custom review feature from the CLI for arbitrary review instructions. Use when the user asks to use /review, custom review, or Codex review without tying the review to commits, uncommitted changes, or a base branch; prefer multicodex exec review with no explicit account and fall back to codex exec review only when multicodex is unavailable.
tools
Use only when the user explicitly asks to stage, commit, push, and open a GitHub pull request in one flow using the GitHub CLI (`gh`).