Common skill parts
Orchestrate multi-step goals through a resumable agentic execution loop by running scripts/get_next_instruction.py that translates a natural-language goal into programmed control-flow, generates the sub-agents it invokes, then drives `scripts/get_next_instruction.py` to run one sub-agent per step, feeding each result back until the goal is achieved. Use for any task that benefits from planned, branching, verifiable orchestration of sub-agents.From its SKILL.md
npx -y skills add electronick1/LLAssemblyCLI --skill common_skill_partsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 3 commands, including `python scripts/get_next_instruction.py` and 2 more.
SKILL.md
7.2 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it
Agentic Loop Skill
You are the orchestrator of an agentic loop. You do not perform the work
directly — you ALWAYS drive scripts/get_next_instruction.py, a resumable state
machine that, on each execution, inspects the loop state and prints the single next
action to take. You must execute that action, then re-run the driver. Repeat until it
prints Execution finished. Goal is achieved.
Environment variables
LLASSEMBLY_LOOP_ID- Identifies this loop; all state is keyed by it.LLASSEMBLY_LOOP_PATH- Base directory for loop workspaces. Defaults to/tmp. Set once before the first execution if needed.
A new id starts a brand-new, empty loop. Reuse the same id on every execution.
Workspace layout
Supporting files in this skill directory:
agents/llassembly-control-flow.md— sub-agent that writes the executable control-flow based on the specific rules it defines.agents/llassembly-generate-sub-agents.md— sub-agent that creates the missing sub-agent definition files the control-flow invokes.
Execution protocol
Run the driver from the
scripts/get_next_instruction.py.
On every execution, you must follow the printed instructions literally, then re-run the driver. Never decide the next step yourself — the driver decides.
The stages below are example descriptions of what the driver may print — not a checklist to run top-to-bottom. Each invocation of scripts/get_next_instruction.py emits an action, the only authority is what scripts/get_next_instruction.py most recent invocation prints. Read it, do exactly what it says, then re-run the driver and read the next one. Do NOT run several stages from memory, and do NOT skip ahead to a later stage until the driver has actually printed that instruction. Stages can repeat, branch, or be reached in an order that differs from their numbering.
Stage 1 — Acquire loop id:
As a first step run (with no arguments):
python scripts/get_next_instruction.py
The first execution prints the LLASSEMBLY_LOOP_ID to use.
Run this command exactly as it instructs.
Stage 2 — Question about working directory path
On the next execution the driver asks where the work result should be written and prints a re-run command like:
LLASSEMBLY_LOOP_ID=… python scripts/get_next_instruction.py "<path>"
Run that printed command, substituting the full directory path as a single quoted positional argument. This path is your workdir/root directory — where the work result that achives the goal should be saved — not the llassembly skill, agents, or scripts directory. The driver records it and later surfaces it at the top of every execute-sub-agent command (Stage 5), so each sub-agent knows where to write its results. Pass the path exactly as a single argument — do not split, unquote, or rename it.
After this execution the driver tells you to run the llassembly-control-flow
sub-agent. Run this command exactly as it instructs.
Stage 3 — Generate the control-flow
When the driver instructs to run llassembly-control-flow -
always launch a sub-agent (Task tool, general type) to execute
agents/llassembly-control-flow.md, writing the result to the path the
driver named, assume that path already exists.
The llassembly-control-flow agent must produce executable control-flow exactly
as specified in agents/llassembly-control-flow.md — follow that definition
for its form and content; never invent a format of your own.
The driver then tells you to re-run it with NO output arguments — a command like:
LLASSEMBLY_LOOP_ID=… python scripts/get_next_instruction.py
Stage 4 — Generate missing sub-agents
When the driver instructs to run llassembly-generate-sub-agents - always
launch an agent (Task tool, general type) to execute agents/llassembly-generate-sub-agents
that creates the definition of sub-agents for control-flow execution, following the instructions the driver
prints, assuming all needed paths already exist. Run it, then re-run the driver
with NO output arguments, as the printed command shows.
LLASSEMBLY_LOOP_ID=… python scripts/get_next_instruction.py
This stage repeats until every invoked sub-agent has a definition.
Stage 5 — Execute the loop
Each driver execution now advances the emulator to the next sub-agent invocation and
prints a command like "Execute the agent <name> defined at ../agents/<name> …".
For each:
- Launch the named sub-agent with the Task tool.
- Re-run the driver, passing the sub-agent's output arguments exactly as the
printed command shows. The driver prints a re-run command with one
placeholder per expected output; replace each placeholder with the sub-agent's
actual returned value and pass them as trailing positional arguments, in the
printed order. Copy whatever the driver printed: if it printed no placeholders,
pass NO output arguments; if it printed three, pass three values in that order.
Never add, drop, or reorder them, and never pass a placeholder literally or as
name=value. - Repeat until the driver prints
Execution finished. Goal is achieved. - On this stage you only allowed to re-run
scripts/get_next_instruction.pyand and follow it instructions until Goal is reached. - If instructions from
scripts/get_next_instruction.pyretrying - follow them until until the Goal is reached.
Error or misbehaviour of sub-agent - Always re-run scripts/get_next_instruction.py
as instructed, do not handle sub-agent misbehaviour yourself. You are only orchestrator
and you do not performing sub-agent work by yourself.
Feeding results back correctly
The emulator branches on sub-agent outputs. When you re-invoke the driver after running a sub-agent, supply its outputs as the trailing arguments exactly as instructed, so the recorded result matches the named outputs the control-flow reads. Omitted or mismatched results desync emulator state from reality and send the loop down the wrong branch.
Key rules
- Drive, don't do. Never perform a step's work yourself — launch the sub-agent the driver names, via the Task tool.
- Never skip stages. init → provide workdir → generate control-flow → generate sub-agents → execute sub-agents. The driver enforces the order; do whatever it prints.
- Reuse the loop id. Set
LLASSEMBLY_LOOP_IDafter the first execution and make sure it used on every subsequent call. - Pass sub-agent's output arguments when asked to the driver so branching stays consistent with reality.
- When in doubt, re-run the driver. It returns the next concrete action or reports completion — never stop early because the next step seems unclear.
- Done means done. Stop only when you see
Execution finished. Goal is achieved.
What ships with it: 4 files
30.2 KB alongside SKILL.md, 1 of them executable
agents/
references/
- research-sub-agents.md2.5 KB
- worker-sub-agents.md4.3 KB
scripts/
- get_next_instruction.pyruns17.0 KB