From 086d3d012e52e4929d2b7dc6399ea66a98807594 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 18 May 2026 00:52:27 +0100 Subject: [PATCH] docs: add maintainer assignment triage workflow --- .../skills/openclaw-pr-maintainer/SKILL.md | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/.agents/skills/openclaw-pr-maintainer/SKILL.md b/.agents/skills/openclaw-pr-maintainer/SKILL.md index d955d1079e0b..aa0c46922b42 100644 --- a/.agents/skills/openclaw-pr-maintainer/SKILL.md +++ b/.agents/skills/openclaw-pr-maintainer/SKILL.md @@ -24,6 +24,36 @@ gitcrawl search openclaw/openclaw --query "" --mode hyb gitcrawl cluster-detail openclaw/openclaw --id --member-limit 20 --body-chars 280 --json ``` +## Claim specific review targets + +When a maintainer asks Codex to review, triage, fix, or land a specific OpenClaw issue/PR, check assignment before deep work. + +- Identify the requesting maintainer's GitHub login. In this environment, default Peter to `steipete`; if another maintainer is clearly the requester, use that maintainer's bare login. +- Read current assignees with live `gh issue view` / `gh pr view`; `gitcrawl` is not enough for assignment state. +- If unassigned, assign the requester before deep review. This is allowed for specific requested targets; do not auto-assign broad discovery candidates or shortlists. +- If assigned to someone else, say so clearly before analysis and include assignment age: + - fresh: assigned within 6h; treat as actively owned unless user explicitly asks to continue or reassign + - stale: assigned 6h+ ago; treat as ownership hint, not a hard block; continue only with that caveat +- If assigned to requester plus others, mention co-assignees and continue. +- If assignment event time is unavailable, say `assigned, time unknown`; treat as assigned, not stale. +- Never remove or replace assignees unless explicitly asked. + +Assignment time proof: + +```bash +gh api "repos/openclaw/openclaw/issues//timeline" --paginate \ + -H "Accept: application/vnd.github+json" \ + --jq '[.[] | select(.event=="assigned") | {assignee:.assignee.login, assigner:.assigner.login, actor:.actor.login, created_at}]' +``` + +Use the newest `assigned` event for each current assignee. Issue timeline events expose `created_at`; GitHub GraphQL `AssignedEvent.createdAt` is also valid when REST pagination is awkward. + +Claim command for issues or PRs: + +```bash +gh api -X POST "repos/openclaw/openclaw/issues//assignees" -f 'assignees[]=' >/dev/null +``` + ## Surface opener identity - For every reviewed, triaged, closed, or landed issue/PR, show the opener's human name when available, GitHub login, and account age.