Agent Step Sequencer
Multi-step scheduler for in-depth agent requests. Detects when user needs multiple steps, suggests plan and waits for confirmation, persists state, and runs heartbeat-aware flow. Use when requests hav
Multi-step scheduler for in-depth agent requests. Detects when user needs multiple steps, suggests plan and waits for confirmation, persists state, and runs heartbeat-aware flow. Use when requests hav
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Multi-step scheduler for in-depth requests. Enables step-based actions with heartbeat integration—survives gateway reset mid-step.
scripts/step-sequencer-check.py immediately (no wait for heartbeat)Critical: If gateway resets mid-step, next heartbeat reads state and resumes correctly.
Agent builds a plan when user approves. During approval, agent asks: Use 2-minute delay between steps? Recommended for rate-limit–sensitive API calls. User chooses; agent sets
stepDelayMinutes (0 or 2) in state. Each step has title, instruction, and optionally requiredOutputs (paths relative to workspace that must exist before the step is marked DONE):
{ "plan": { "steps": { "step-1": { "title": "Research topic X", "instruction": "Research topic X and produce a concise summary", "requiredOutputs": ["study/summary.md"] }, "step-2": { "title": "Write paper", "instruction": "Using the summary from step 1, write a research paper..." } } }, "stepQueue": ["step-1", "step-2"], "currentStep": 0, "stepRuns": {}, "stepDelayMinutes": 0, "status": "IN_PROGRESS" }
step-sequencer-runner.py): Invokes agent with step instruction, waits for exit, marks DONE/FAILED. Applies stepDelayMinutes. On retry, agent gets troubleshoot prompt.step-sequencer-check.py): If work to do, invokes runner. Handles FAILED → retry (reset PENDING, invoke runner).Do not stop mid-step to ask the user. When executing a step, if something fails (empty fetch, API error, source unavailable):
Do not stop silently. If you cannot complete the step after retry and alternatives: actively prompt the user—post a short message that you hit a snag, what failed, and what you tried (e.g. "Step 2 (research Meteora) failed: CoinMarketCap fetch empty, tried CoinGecko—also empty. Need another source or skip this token."). Then exit non-zero so the runner marks FAILED and the scheduler can retry or add to blockers. Never just stop without telling the user.
Agent must suggest before proceeding. When MULTI_STEP, propose the step plan and wait for confirmation before executing.
MULTI_STEP = (action_count >= 3) OR has_sequential_language OR has_output_dependency OR high_scope_or_risk OR user_requests_steps OR contains_setup_keywordsSINGLE_STEP = (action_count == 1) AND NOT has_output_dependency AND immediate_execution
DECISION = IF MULTI_STEP THEN suggest_multi_step → wait for confirm → proceed ELSE single_step
Definitions:
| Criterion | Meaning |
|---|---|
| Number of distinct actions (file edits, commands, etc.) |
| "then", "after", "first...then", "step 1" |
| Step B needs output from step A |
| Many files, destructive ops, migration |
| "step by step", "break this down", "one at a time" |
| "set up", "migrate", "implement from scratch", "full X", "complete Y" |
See references/state-schema.md. Key fields:
plan.steps: step definitions (title, instruction, optional requiredOutputs)stepQueue, currentStep, stepRunsstepDelayMinutes: 0 = no delay; 2 = 2 min between stepsblockers, lastHeartbeatIso, artifactsHeartbeat invokes
scripts/step-sequencer-check.py. Agent also invokes it right after persisting state.
Runner invokes agent (configurable via
STEP_AGENT_CMD). Runner applies stepDelayMinutes.
flowchart TD A[Heartbeat or Agent] --> B[step-sequencer-check.py] B --> C{Work to do?} C -->|No| D[Do nothing] C -->|Yes| E[Invoke runner] E --> F[step-sequencer-runner.py] F --> G[Invoke agent with instruction] G --> H{Agent exit} H -->|Success| I[Mark DONE] H -->|Fail| J[Mark FAILED, invoke check script] I --> K[Check advances or done] J --> B
flowchart TD U[User Request] --> V{Complex enough?} V -->|No| W[Execute directly] V -->|Yes| X[Propose step plan] X --> Y[User confirms] Y --> Z[Persist state.json with plan] Z --> AA[Agent invokes step-sequencer-check] AA --> AB[Runner invokes agent - step 1] AB --> AC[Heartbeat also invokes on schedule]
| Env | Description |
|---|---|
| Required. Command to invoke agent (space-separated). Prompt appended as last arg. Example: |
| Path to step-sequencer-runner.py (optional) |
| Max retries on FAILED before adding to blockers. Default: 3 |
OpenClaw: Wire
STEP_AGENT_CMD to OpenClaw's agent invocation (e.g. openclaw agent --message).
Security: Set
STEP_AGENT_CMD only to your trusted agent binary. Do not use shell interpreters (bash, sh, etc.) or -c/-e—the runner rejects these to prevent command injection. The instruction from state.json is passed as a single argument; it is never executed by a shell.
When all steps complete:
clawhub install agent-step-sequencer
Manual copy:
cp -r agent-step-sequencer ~/.openclaw/skills/agent-step-sequencer
Heartbeat integration — Add this to your heartbeat (or have the agent add it):
# Agent Step Sequencer check (add to heartbeat cycle) python3 ~/.openclaw/skills/agent-step-sequencer/scripts/step-sequencer-check.py ~/.openclaw/workspace/state.json
Or if skill is in workspace:
python3 ~/.openclaw/workspace/skills/agent-step-sequencer/scripts/step-sequencer-check.py ~/.openclaw/workspace/state.json
Set
STEP_AGENT_CMD to your agent invocation before running. Agent should invoke the check script immediately after persisting state.No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.