$npx -y skills add tkellogg/open-strix --skill chainlink-workerRun a Chainlink backlog worker that claims ready issues, dispatches them to Codex sessions, and loops through review until approval. Use when the user wants autonomous issue execution via chainlink + codex, needs to start or stop the worker, or needs help reviewing `ready-for-rev
| 1 | # Chainlink Backlog Worker |
| 2 | |
| 3 | This skill turns `chainlink` issues into Codex work. It claims one issue at a time, routes it to the right repo, waits for Codex to finish, then keeps the same session alive through review rounds. |
| 4 | |
| 5 | ## Files |
| 6 | |
| 7 | - `worker.py` — main orchestration loop |
| 8 | - `prompt_builder.py` — initial and review prompt builders |
| 9 | - `config.py` — TOML config loader |
| 10 | - `poller.py` — review notifier for Keel |
| 11 | - `pollers.json` — poller registration |
| 12 | |
| 13 | ## Start |
| 14 | |
| 15 | From this skill directory, run: |
| 16 | |
| 17 | ```bash |
| 18 | uv run python worker.py |
| 19 | ``` |
| 20 | |
| 21 | To use a non-default config file: |
| 22 | |
| 23 | ```bash |
| 24 | uv run python worker.py --config ~/.config/chainlink-worker/config.toml |
| 25 | ``` |
| 26 | |
| 27 | The worker uses `~/.config/chainlink-worker/config.toml` by default. |
| 28 | |
| 29 | ## Stop |
| 30 | |
| 31 | Send `SIGINT` or `SIGTERM` to the worker process. It exits cleanly after the current sleep or Codex poll interval. |
| 32 | |
| 33 | ## Monitor |
| 34 | |
| 35 | - Watch the worker stdout for lifecycle events like `issue_claimed`, `prompt_complete`, and `review_approved` |
| 36 | - Check `chainlink session status --json` in your chainlink working directory |
| 37 | - Check `npx acpx codex sessions show issue-<id>` in the routed repo |
| 38 | - Check `chainlink show <id> --json` for labels, comments, and milestone context |
| 39 | |
| 40 | ## Review Workflow |
| 41 | |
| 42 | 1. Install the skill and reload pollers so `chainlink-review` starts firing. |
| 43 | 2. When the poller reports an issue, inspect the repo changes and the Codex session. |
| 44 | 3. If changes are needed, add a review comment in chainlink: |
| 45 | |
| 46 | ```bash |
| 47 | # cd to your chainlink working directory |
| 48 | chainlink issue comment <id> "Please add focused regression coverage for ..." --kind human |
| 49 | ``` |
| 50 | |
| 51 | 4. The worker removes `ready-for-review`, re-prompts the same Codex session, then restores `ready-for-review`. |
| 52 | 5. Approve with an explicit approval comment. Recommended: |
| 53 | |
| 54 | ```bash |
| 55 | # cd to your chainlink working directory |
| 56 | chainlink issue comment <id> "APPROVED" --kind resolution |
| 57 | ``` |
| 58 | |
| 59 | The worker closes the issue and then closes the Codex session on the next poll. |
| 60 | |
| 61 | ## Repo Routing |
| 62 | |
| 63 | Configure repo routing in `[repos]` inside `config.toml`. |
| 64 | |
| 65 | - Exact label match wins first, so label issues with repo names like `open-strix` or `vera-prism` |
| 66 | - If no repo label is present, the worker falls back to matching repo labels in the issue title, description, or milestone text |
| 67 | - If routing is ambiguous, the worker logs an error and skips the issue |
| 68 | |
| 69 | ## Poller Notes |
| 70 | |
| 71 | - `pollers.json` uses the Open Strix scheduler contract: top-level object with a `pollers` array |
| 72 | - After copying or editing the skill, call `reload_pollers` |
| 73 | - The poller emits a single prompt listing every issue currently labeled `ready-for-review` |