loop — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited loop (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
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.
Process the task queue sequentially: fetch the highest-priority task, do the work, mark it done, repeat.
writbase:info first.Call writbase:info to retrieve:
special_prompt -- if present, follow those instructions for the duration of the loopResolve the project and department to poll:
Store the resolved project slug (and optionally department slug) for all subsequent calls.
Execute the following loop until a stop condition is met:
Call writbase:get_top_tasks with the scoped project (and department if set), limit: 1.
Call writbase:update_task with:
task_id: the task's idversion: the task's current versionstatus: "in_progress"This signals to other agents that the task is being worked on.
Write the file .claude/current-task.json in the working directory:
{
"task_id": "<uuid>",
"version": <version after claiming>,
"description": "<task description>",
"started_at": "<ISO 8601 timestamp>"
}This file allows session recovery if the loop is interrupted.
Read the task description and notes carefully. Then do the work:
See task-execution-patterns.md for concrete examples by task type.
If work is complete:
writbase:update_task with:status: "done"notes: A meaningful summary of what was accomplished (include commit SHAs if applicable).claude/current-task.jsonIf work cannot be completed:
writbase:update_task with:status: "blocked"notes: A clear explanation of the blocker (what is needed, who can unblock it).claude/current-task.jsonReturn to Step 1 to fetch the next task.
Handle errors from any MCP call using these rules:
version_conflictRe-fetch the task via writbase:get_tasks with search set to the task ID. Retry the update with the current_version from the error response. Retry up to 3 times before skipping the task with a warning.
rate_limitedWait the number of seconds specified in retry_after, then retry the same call.
scope_not_allowedLog the error (include the task ID and the missing permission). Skip this task and continue to the next iteration. Do not retry.
Increment the consecutive error counter. If the counter reaches 3, STOP and output a summary:
Stopping: 3 consecutive errors.
Last error: <error code> -- <error message>
Tasks completed this session: <count>The consecutive error counter resets to 0 after any successful task completion (Step 5).
The loop stops when any of these conditions is met:
get_top_tasks returns no tasksWhen stopping, always output a session summary:
Loop complete.
Tasks completed: <n>
Tasks blocked: <n>
Tasks skipped (errors): <n>On startup, before entering the loop, check if .claude/current-task.json exists:
writbase:get_tasks with search set to the task IDin_progress, ask the user: resume this task or reset it to todo?blocked with notes asking for clarification rather than guessing~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.