Coding Agents Supported by build-iterated-agentic-loop and design-control-loop
Both the build-iterated-agentic-loop and design-control-loop plugins support four headless coding agents—Claude Code, Codex CLI, OpenCode, and CodeLayer—through identical agent-runner template configurations.
The humanlayer/skills repository provides these two plugins to enable autonomous coding agents within GitHub Actions workflows. Both rely on the same agent-runner-templates.md reference documentation to define supported agents, required secrets, and headless CLI invocation patterns.
Supported Headless Coding Agents
According to the source code in plugins/design-control-loop/skills/design-control-loop/references/agent-runner-templates.md and its duplicate in plugins/build-iterated-agentic-loop/skills/build-iterated-agentic-loop/references/agent-runner-templates.md, the following four agents are officially supported:
- Claude Code – Anthropic’s coding assistant. Requires the
ANTHROPIC_API_KEYrepository secret. - Codex CLI – OpenAI’s Codex model. Requires the
OPENAI_API_KEYrepository secret. - OpenCode – The open-source OpenCode framework supporting both Anthropic and OpenAI back-ends. Requires the appropriate API key secret for the selected provider.
- CodeLayer – HumanLayer’s lightweight agent harness, generally Anthropic-backed. Requires
ANTHROPIC_API_KEYand optionallyGH_TOKENfor GitHub operations.
Both plugins use the same agent-selection UI and workflow steps, installing the appropriate runner commands and providing response-extraction snippets to convert agent output into PR bodies.
Configuring Agents in GitHub Actions Workflows
The agent-runner templates provide copy-paste YAML configurations for each supported agent. Below are the specific implementations for two popular options.
Claude Code Setup
To run Claude Code in a workflow step, install the CLI via npm and invoke it with the required permissions and output formatting:
- uses: actions/setup-node@v4
with:
node-version: 24
- run: npm install -g @anthropic-ai/claude-code
- name: Run Claude Code
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
claude -p "$PROMPT" \
--permission-mode bypassPermissions \
--output-format stream-json \
--verbose \
2>&1 | tee /tmp/agent-output.txt
CodeLayer Setup
CodeLayer uses Bun for execution and supports configurable providers and thinking modes:
- uses: oven-sh/setup-bun@v2
- name: Run CodeLayer
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FORCE_COLOR: "3"
run: |
bunx @humanlayer/cli@latest codelayer \
--provider anthropic \
--model claude-opus-4-8 \
--thinking high \
--prompt "$PROMPT" \
2>&1 | tee /tmp/agent-output.txt
Extracting Structured Output
Both plugins use a standard jq-based extraction pattern to parse the JSON stream and generate the final PR body from agent responses:
- name: Extract PR body
run: |
cat /tmp/agent-output.txt \
| grep '^{' \
| jq -s '[.[] | select(.type == "assistant" and .message.content)] | last | .message.content[] | select(.type == "text") | .text' -r \
> /tmp/pr-body.md
Shared Agent-Runner Architecture
The build-iterated-agentic-loop and design-control-loop plugins share an identical reference structure. The agent-runner templates are duplicated across both plugins at the following locations:
plugins/design-control-loop/skills/design-control-loop/references/agent-runner-templates.mdplugins/build-iterated-agentic-loop/skills/build-iterated-agentic-loop/references/agent-runner-templates.md
Supporting files in the design-control-loop plugin include:
plugins/design-control-loop/skills/design-control-loop/references/workflow-template.yml– Provides the skeleton for recurring CI workflows.plugins/design-control-loop/skills/design-control-loop/references/agent-iteration.ts– Implements the/iteratePR-footer command and prompt generation logic.plugins/design-control-loop/skills/design-control-loop/SKILL.md– Guides the interview-design-build workflow.plugins/build-iterated-agentic-loop/skills/build-iterated-agentic-loop/SKILL.md– Describes the overall loop creation process.
Summary
- Both
build-iterated-agentic-loopanddesign-control-loopsupport Claude Code, Codex CLI, OpenCode, and CodeLayer. - Each agent requires specific secrets:
ANTHROPIC_API_KEYfor Anthropic-based agents,OPENAI_API_KEYfor OpenAI models, andGH_TOKENfor CodeLayer GitHub operations. - Configuration templates are identical across both plugins, located at
references/agent-runner-templates.mdwithin each plugin's skill directory. - Agent output extraction uses standardized jq filters to isolate the final assistant message for PR creation.
Frequently Asked Questions
Which API keys are required for each coding agent?
Claude Code and CodeLayer require ANTHROPIC_API_KEY, while Codex CLI requires OPENAI_API_KEY. OpenCode supports both providers and requires the key corresponding to your selected back-end. CodeLayer optionally uses GH_TOKEN for GitHub operations.
Can I use the same agent configuration for both plugins?
Yes. Because both build-iterated-agentic-loop and design-control-loop reference the same agent-runner-templates.md structure, YAML configuration snippets are interchangeable between the two plugins.
How does the workflow extract the final output from the agent?
The workflow pipes the agent's JSON stream output to a jq filter that selects the last assistant message with text content, extracting it to /tmp/pr-body.md for use in pull request creation.
Where are the agent runner templates located in the repository?
The templates exist at two mirrored locations: plugins/design-control-loop/skills/design-control-loop/references/agent-runner-templates.md and plugins/build-iterated-agentic-loop/skills/build-iterated-agentic-loop/references/agent-runner-templates.md. Both files contain identical agent definitions and configuration examples.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →