zcl
Original:🇺🇸 English
Translated
Orchestrator workflow for running ZeroContext Lab (ZCL) attempts/suites with deterministic artifacts, trace-backed evidence, and fast post-mortems (shim support for "agent only types tool name").
2installs
Added on
NPX Install
npx skill4agent add marcohefti/zero-context-lab zclTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →ZCL Orchestrator (Codex Skill)
This skill is for the orchestrator (you), not the spawned "zero context" agent.
Goal
Run a mission through ZCL with funnel-first evidence and deterministic artifacts under .
.zcl/Primary evidence:
.zcl/.../tool.calls.jsonl- (authoritative outcome)
.zcl/.../feedback.json
Secondary evidence (optional):
.zcl/.../notes.jsonl.zcl/.../runner.*.json- ,
.zcl/.../runner.command.txt,.zcl/.../runner.stdout.log(suite runner IO capture).zcl/.../runner.stderr.log
Operator Invocation Story
When an operator says "run this through ZCL: <mission>", do this:
- Resolve entrypoint: prefer on
zcl.PATH - Preflight version policy for agent reliability:
- Check latest metadata:
zcl update status --json - Prefer explicit harness floor: set ; ZCL fails fast with
ZCL_MIN_VERSION=<semver>when below floor.ZCL_E_VERSION_FLOOR
- Check latest metadata:
- Initialize project if needed: (idempotent).
zcl init - Prefer native host spawning when available (Mode A):
- Single attempt:
zcl attempt start --suite <suiteId> --mission <missionId> --prompt <promptText> --isolation-model native_spawn --json - Suite batch planning:
zcl suite plan --file <suite.(yaml|yml|json)> --json - Spawn exactly one fresh native agent session per attempt and pass the returned .
env
- Single attempt:
- Use process-runner orchestration only as an explicit fallback (Mode B):
zcl suite run --file <suite.(yaml|yml|json)> --session-isolation process --shim surfwright --json -- <runner-cmd> [args...]- lets the agent visibly type
--shim surfwrightwhile ZCL still records invocations tosurfwright ....tool.calls.jsonl - Suite run captures runner IO by default into logs for post-mortems.
runner.*
- Require the agent to finish by running:
- or
zcl feedback --ok|--fail --result ...--result-json ...
- Optionally ask for self-report feedback and persist it as secondary evidence:
zcl note --kind agent --message "..."
- Report back from artifacts (not from transcript):
- Primary: ,
tool.calls.jsonlfeedback.json - Derived:
attempt.report.json - Post-mortem: (tail trace + pointers)
zcl attempt explain [<attemptDir>]
- Primary:
Fixed Harness Preamble (Turn 1)
You must tell the spawned agent:
- Finish rule: must end with (required for scoring).
zcl feedback ... - Attempt context: ZCL attempt env vars are already provided (do not invent ids).
- Tool execution rule depends on how you launched the attempt:
- If running under : the agent should invoke
zcl suite run --session-isolation process --shim surfwrightnormally (nosurfwright ...ceremony).zcl run - If no shim is installed: all actions must go through ZCL funnels (e.g. ) so evidence exists.
zcl run -- ...
- If running under
Turn 2 (Default)
One sentence mission prompt. Example:
"Use the SurfWright CLI to navigate to https://example.com and record TITLE=<...> via ."
zcl feedback --ok --result ...Turn 3 (Optional)
Only if needed: request structured formatting or classification, but do not lead the agent during discovery.
Expectations (Suite Guardrails)
Suite can be grounded in:
expects- (
feedback.json,expects.ok)expects.result.* - trace-derived constraints (), e.g.:
expects.trace.*- ,
maxToolCallsTotal,maxFailuresTotalmaxRepeatStreak - to ensure SurfWright was actually invoked
requireCommandPrefix: ["surfwright"]
Local Install (CLI + Skill)
If is not on (or you want it rebuilt from this checkout):
zclPATH- Build + install the CLI and link the skill:
scripts/dev-local-install.sh
- Optional: auto-install on / branch switch:
git pullscripts/dev-install-git-hooks.sh