Enforce real progress for long-running tasks by separating execution from reporting. Use when users complain that the agent is "saying it's working" without...
--- name: execution-verifier description: Enforce real progress for long-running tasks by separating execution from reporting. Use when users complain that the agent is "saying it's working" without concrete output, when a task is stalling, or when you need a hard proof loop (file changes, commit checks, and blocker alerts) every 15-30 minutes. --- # Execution Verifier Use this skill to prevent fake progress. ## Core policy - Treat "no artifact change" as "no progress". - Report only hard evidence: file changes, line deltas, commits, test outputs. - If no evidence is detected in the time window, report blocker + immediate next action. ## Minimal operating loop (30 min) 1. **Execute** one concrete next action from OPEN_TASKS. 2. **Write artifacts** (target files must change). 3. **Verify** with `scripts/verify_progress.py`. 4. **Report** in strict 3-line format. ## Strict report format 1) 已完成:`<file path + concrete change>` 2) 进行中:`<current actionable step>` 3) 下一步+ETA:`<next step + time>` If verification fails, replace line 1 with: `本轮无新增(原因:<blocker>)`. ## Verifier command ```bash python3 skills/execution-verifier/scripts/verify_progress.py \ --project-dir projects/ai-human-co-production \ --status projects/ai-human-co-production/STATUS.md \ --open-tasks projects/ai-human-co-production/OPEN_TASKS.md \ --window-min 30 ``` ## Closed-loop mode (verify → auto-execute → re-verify) Use built-in script: ```bash python3 skills/execution-verifier/scripts/verify_execute_verify.py \ --verify-cmd "python3 skills/execution-verifier/scripts/verify_progress.py --project-dir projects/ai-human-co-production --status projects/ai-human-co-production/STATUS.md --open-tasks projects/ai-human-co-production/OPEN_TASKS.md --window-min 30" \ --execute-cmd "openclaw cron run fc567f18-83fa-426c-8181-71a10f4568b3 --force" ``` Behavior: - Step A: verify current progress - Step B: if no progress, auto-trigger executor - Step C: verify again - Output JSON includes `before`, `triggered_execute`, `after` ## Cron pattern (recommended) Use two jobs: - **Executor job (isolated agentTurn, every 30m):** do real work + write files. - **Verifier job (main systemEvent, every 30m offset +5m):** run closed-loop script above. Never run report-only cron without verifier.
don't have the plugin yet? install it then click "run inline in claude" again.
Stop fake progress reporting by enforcing hard evidence of work. this skill separates what an agent claims it's doing from what it actually changed. use it when long-running tasks stall, when users report "the agent says it's working but nothing happened", or when you need automated progress checkpoints every 15-30 minutes with blocker detection. the core rule: no artifact change = no progress. period.
projects/ai-human-co-production.projects/ai-human-co-production/STATUS.md. format: free-form markdown with timestamps and last-known state.projects/ai-human-co-production/OPEN_TASKS.md. format: numbered or bulleted list of concrete tasks with acceptance criteria.skills/execution-verifier/scripts/verify_progress.py.skills/execution-verifier/scripts/verify_execute_verify.py.fc567f18-83fa-426c-8181-71a10f4568b3. required only for closed-loop mode.execute one concrete next action. pull the top task from open_tasks_file. confirm it has acceptance criteria (e.g. "create file X with lines Y and Z"). run the action. output: at least one file modified or one commit pushed within the window_min.
write artifacts to target files. ensure files on disk change (line additions, deletions, edits, new files, or deletions). do not rely on logs or console output as proof. output: file modification timestamps and byte size deltas measurable by filesystem.
run verify_progress script. execute the verifier command below with your project paths and window_min value. the script scans the window_min timeframe for file changes, git commits, test result files, and line deltas. output: json report with keys: progress_detected (boolean), changed_files (list), commit_shas (list), blocker_reason (string if no progress), timestamp.
generate strict 3-line report. use the verifier output to build the report in the format below. if progress_detected is true, report concrete evidence. if false, name the blocker and suggest next action. output: three-line markdown string ready for status updates.
if closed-loop mode, trigger re-verify. after executor auto-triggers (step 2 in decision points), wait 2-3 minutes and run verify_progress again. compare before/after json. output: combined json with before, triggered_execute, after keys showing state transition.
已完成:<file_path> (<line_delta> lines added/removed). proceed to line 2 (current actionable step). example: 已完成:src/parser.py (+47 lines).本轮无新增(原因:<blocker_reason>). blocker_reason should name the concrete blocker (e.g. "auth token expired", "api rate limit hit", "dependency missing", "test suite timeout"). line 2 becomes the immediate unblock action. example: 本轮无新增(原因:api key invalid).openclaw cron run <executor_cron_id> --force. do not wait for manual intervention. re-verify after 2-3 minutes.本轮无新增(原因:cron trigger failed - job not found).verify_progress script output (json):
{
"timestamp": "2025-01-15T14:32:00Z",
"project_dir": "projects/ai-human-co-production",
"window_min": 30,
"progress_detected": true|false,
"changed_files": ["src/parser.py", "tests/test_parser.py"],
"file_deltas": [
{"path": "src/parser.py", "lines_added": 47, "lines_removed": 12}
],
"commit_shas": ["a1b2c3d"],
"commit_messages": ["feat: add async parsing"],
"blocker_reason": null|"<reason>",
"next_action": "<task from open_tasks_file>"
}
strict 3-line report format (markdown):
已完成:<file_path + concrete change>
进行中:<current actionable step>
下一步+ETA:<next step + time estimate>
or if blocked:
本轮无新增(原因:<blocker>)
进行中:<unblock action>
下一步+ETA:<next step + time estimate>
closed-loop json output (json):
{
"before": {<verify_progress output>},
"triggered_execute": true|false,
"executor_job_id": "fc567f18-83fa-426c-8181-71a10f4568b3",
"after": {<verify_progress output after executor runs>},
"duration_sec": 180
}
all files must be written to disk (not just claimed in logs). commit hashes or file mtimes serve as proof. json outputs written to projects/<project>/VERIFIER_REPORT.json (one per cycle).
single-pass verification (check current state):
python3 skills/execution-verifier/scripts/verify_progress.py \
--project-dir projects/ai-human-co-production \
--status projects/ai-human-co-production/STATUS.md \
--open-tasks projects/ai-human-co-production/OPEN_TASKS.md \
--window-min 30
closed-loop mode (verify → auto-trigger → re-verify):
python3 skills/execution-verifier/scripts/verify_execute_verify.py \
--verify-cmd "python3 skills/execution-verifier/scripts/verify_progress.py --project-dir projects/ai-human-co-production --status projects/ai-human-co-production/STATUS.md --open-tasks projects/ai-human-co-production/OPEN_TASKS.md --window-min 30" \
--execute-cmd "openclaw cron run fc567f18-83fa-426c-8181-71a10f4568b3 --force"
the closed-loop script outputs combined json to stdout with keys: before, triggered_execute, after, duration_sec.
run two jobs, offset by 5 minutes:
never deploy a report-only cron without verifier attached. silent failures kill trust.