ulw-loop — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ulw-loop (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use this skill when the user asks for ulw-loop, ulw, durable goal execution, evidence-led work, manual QA, or checkpointed long-running delivery.
This skill is intentionally compact. The full workflow lives in references/full-workflow.md. Read only the sections needed for the current phase, then execute them exactly.
references/full-workflow.md..omo/ulw-loop; do not hand-edit goal state.omo sparkshell cat .omo/ulw-loop/ledger.jsonl or read directly) plus omo ulw-loop status --json, then resume; never re-plan from scratch.omo ulw-loop create-goals says the existing aggregate is already complete, start unrelated new work with a fresh --session-id <new-id> instead of steering or forcing the completed default state. Use --force only to intentionally overwrite completed evidence.multi_agent_v1.spawn_agent message starts with TASK:, then names DELIVERABLE, SCOPE, and VERIFY; put role and specialty instructions inside message; use fork_context: false unless full history is truly required.multi_agent_v1.wait_agent cycles. Never use a single long blocking wait for them.WORKING: <task> - <current phase> before long reading, testing, or review passes, and BLOCKED: <reason> only when it cannot progress.multi_agent_v1.wait_agent for mailbox signals, not proof of completion. A timeout only means no new mailbox update arrived. Treat a running child as alive.WORKING: phase.BLOCKED:, or no longer running. Then record inconclusive and respawn a smaller fork_context: false task with the missing deliverable.git-master for git-tracked edits: inspect recent and touched-path commit history, then commit each verified work unit atomically in the repository's observed language, scope, and message style with only that unit's files staged.The full workflow may mention OpenCode-style orchestration examples. In Codex, translate them to native tools:
| Workflow intent | Codex tool |
|---|---|
| Plan agent | multi_agent_v1.spawn_agent({"message":"TASK: act as a planning agent. ...","fork_context":false}) |
| Search/read-only worker | multi_agent_v1.spawn_agent({"message":"TASK: act as an explorer. ...","fork_context":false}) |
| Implementation or QA worker | multi_agent_v1.spawn_agent({"message":"TASK: act as an implementation or QA worker. ...","fork_context":false}) |
| Final verification reviewer | multi_agent_v1.spawn_agent({"message":"TASK: act as a rigorous reviewer. ...","fork_context":false}) |
| Wait for background result | multi_agent_v1.wait_agent(...) |
| Clean up finished worker | multi_agent_v1.close_agent(...) |
When translating load_skills=[...], include the requested skill names in the spawned agent's message.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.