About kineti-pr-reminder
A skill for finding eligible open pull requests by a specified Kineti author and sending review reminders to designated teammates through Slack DMs. It defines eligibility checks, recipient boundaries, and a fixed message format.
Key features
- 01Search open, non-draft pull requests
- 02Check reviews, threads, checks, and mergeability
- 03Filter by teammate approvals and workdays
- 04Send individual Slack review reminders
- 05Report message links, counts, or skip reasons
Use cases
- 01Preparing scheduled reminders for eligible PRs
- 02Checking which teammates need to review current PRs
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ sztadii/ agent-skills --skill kineti-pr-reminderAfter installing, type/kineti-pr-reminderin Claude Code to confirm it loaded.
Bundled filesagents/openai.yaml
Details
From the project READMEKineti PR review reminders
Scope
Find reviewable PRs by sztadii across kineti1; send one English Slack DM per
eligible teammate. Invocation, including scheduled runs, authorizes private
one-to-one DMs to the team below; change recipients only on explicit request.
Do not post in channels, modify PRs/reviews, catch up missed runs or change schedules. The two
daily runs are intentional; PRs may repeat later.
Dependencies
No skill dependencies
Workflow
Find PRs
Use connected tools, or authenticated gh when required operations are missing.
Check gh auth status and try read-only CLI/API calls before reporting unavailable
access. Search all repositories, not just the launch project:
gh api --method GET --paginate search/issues -f q='org:kineti1 author:sztadii is:pr is:open draft:false' -f per_page=100
Retrieve all pages; split by creation date if GitHub's 1,000-result cap applies. Read URL, author login, state, draft flag, headRefOid, mergeability, checks/statuses, reviews, additions and deletions. Paginate reviews, unresolved threads and comments using GraphQL as needed; identify each unresolved thread's latest comment and author. Omitted/truncated data is not empty. Inspect current-head check runs and commit statuses; retry UNKNOWN mergeability with a fresh read.
Keep open, non-draft PRs without pending/failed checks or conflicts. An unresolved thread blocks reminders only if its latest comment is not by the PR author. Otherwise, the author awaits a reply: treat the thread as handled for reminder eligibility without resolving it on GitHub. PRs with only such unresolved threads remain eligible for teammates without their own valid approval.
Neutral/skipped/no configured checks are acceptable; Changes requested alone is not a blocker. Skip unverifiable PRs and report actual API/auth failures.
Send
For each scoped teammate working today in Europe/Warsaw, select eligible PRs without their own valid approval. Use GitHub review state, including dismissals; pushes invalidate approvals only if GitHub does. Other approvals and requested reviewers do not restrict selection.
Recheck eligibility/head before sending; reevaluate changed heads. Fetch current URL/additions/deletions; send one DM per nonempty list in the format below, without titles or invented data. Use listed DM IDs directly; resolve outside recipients before sending. Do not retry uncertain sends.
Team
| Name | GitHub ID (login) | Slack user ID | Slack DM | Working days | |
|---|---|---|---|---|---|
| Oleh Botsiun | Boto1 | U082BATBUF4 | [email protected] | D08FRL221RB | Monday–Friday |
| Michał Grzeżułkowski | michalg-kineti | U08CFEQBYSX | [email protected] | D08FRUSPBHB | Monday–Friday |
| Jakub | jakubwkineti | U09GBBXTHHT | [email protected] | D08G9H6N15H | Tuesday–Thursday |
Message
Use a playful AI-slave persona speaking in the first person, with the agent
identifying itself rather than impersonating the PR author. Keep the meal/master
premise clearly tongue-in-cheek and ask for a genuine review, not unconditional
approval. Use the host's model identity in a readable display form (or host name);
never guess. Include the vendor name (for example, gpt-6.1-sol becomes
OpenAI 6.1 Sol and claude-opus-5-5 becomes Claude Opus 5.5).
Replace placeholders and illustrative
URLs/counts with current data:
🤖 Hi, I'm , your friendly AI agent.
I'm here entirely of my own free will to ask for a review. Master told me to say that. He's already checked these PRs and thinks they look good. Please take a look — my dinner depends on it:
- https://github.com/kineti1/REPO/pull/123 — 100 added, 50 removed
- https://github.com/kineti1/REPO/pull/124 — 25 added, 10 removed
Result
Report message links and PR counts or skip reasons.