Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add XuanRanL/loamwright-SEO-Skill --skill batch-job-pollergit clone --depth 1 https://github.com/XuanRanL/loamwright-SEO-SkillWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/xuanranl/loamwright-seo-skill/batch-job-poller)<a href="https://agentmods.dev/skills/xuanranl/loamwright-seo-skill/batch-job-poller"><img src="https://agentmods.dev/badge/skills/xuanranl/loamwright-seo-skill/batch-job-poller/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/xuanranl/loamwright-seo-skill/batch-job-poller"><img src="https://agentmods.dev/badge/skills/xuanranl/loamwright-seo-skill/batch-job-poller.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00084 | $0.00735 |
| Opus 5 | $0.00042 | $0.00367 |
| Sonnet 5 | $0.00017 | $0.00147 |
| Haiku 4.5 | $0.00008 | $0.00073 |
Grade A, and why
batch-job-poller scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 78 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Batch Job Poller (Supplemental — Recovery Only)
Status (as of 2026-05-21)
This skill is no longer part of the standard image flow. The new
openai-image-generator skill consolidates submit + poll + download + realtime
fallback into a single synchronous call via openai_image_pipeline.py.
This skill remains for two recovery scenarios only:
Scenario 1: Orphan batch recovery
If a prior pipeline run gave up on a batch (timeout, crash, user cancellation), the batch may still complete in OpenAI's queue. Use this skill to:
- Poll the batch status
- Download images if
completed - Read error file if
failedfor root-cause diagnosis - Mark the batch as abandoned if
expired(24h)
Example:
# Find orphan batches across all workspaces
for status_file in memory/workspace/*/batch_status.json; do
batch_id=$(python -c "import json,sys; print(json.load(open('$status_file'))['batch_id'])")
python -m scripts.openai.openai_batch_image_api --json poll $batch_id
done
# Download a specific orphan batch's images
python -m scripts.openai.openai_batch_image_api download batch_xxx \
--output-dir memory/workspace/{task_id}/images
Scenario 2: Diagnose stuck or failed batches
If a current batch is reporting failed, get the error_file_id and read it:
python -c "
import sys
sys.path.insert(0, '.')
from scripts._core import credential_hub
import openai
client = openai.OpenAI(api_key=credential_hub.get_credential('openai'))
batch = client.batches.retrieve('batch_xxx')
if batch.error_file_id:
print(client.files.content(batch.error_file_id).text)
"
The error file is JSONL — one line per failed request, with the OpenAI HTTP code
and rejected parameter name. The 2026-05-20 incident on project-charlie post 37063
turned out to be a script bug (sent response_format) detectable only by reading
this file.
Why this is no longer auto-scheduled
The previous design ran this skill every 15 minutes via hooks/scheduled.json.
That pattern had three drawbacks:
- 15-minute granularity meant up to 15 min of latency after batch completion
- No fallback path if batch failed permanently
- Multiple background pollers competing across workspaces
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 78 lines · 84 tokens per session scan A 94088620ecb7
batch-job-poller is a skill published in the GitHub repository XuanRanL/loamwright-SEO-Skill (49 stars, last pushed 25d ago), licensed Apache-2.0. It adds 84 tokens to every session and 735 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
node-inspect-debugger
Debug Node.js via --inspect + Chrome DevTools Protocol CLI.
inspecting-hermes-desktop-dom
Read the live Hermes desktop DOM/CSS over CDP.
agent-merge-conflict-arbiter
Neutral arbiter for merge conflicts between two agents.
python-debugpy
Debug Python: pdb REPL + debugpy remote (DAP).
node-connect
Diagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps. Use when QR/setup code/manual connect fails, local Wi-Fi works but VPS/tailnet does not, or errors mention pairing required, unauthorized, bootstrap token invalid or expired, gateway.bind, gateway.remote.url, Tailscale…
four-core-documents
Produce Part 3 of the 12-Part engagement: the four strategic-spine documents across 61 steps — 3.1 Business & SBU Analysis, 3.2 Segmentation Framework, 3.3 Brand Positioning & Communications, 3.4 DMFlow — with --doc single-document runs, --view v2 re-runs, and a --combined executive stitch. Triggers on…