update-pr-dashboard
Skill2 starsChanged 18 days agoMITView on GitHub
Update the owned dashboard section for pull requests the configured user authors, reviews, or participates in. Use it when asked to refresh the pull request dashboard or tracker, or to see which pull requests need attention.
In this repository30 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- audit-repositorySkill
- change-skillSkill
- evaluate-skillSkill
- implement-changeSkill
- review-repositorySkill
- runtime-canarySkill
- shepherd-pull-requestsSkill
- audit-repositorySkill
- change-skillSkill
- evaluate-skillSkill
- implement-changeSkill
- review-repositorySkill
- runtime-canarySkill
- shepherd-pull-requestsSkill
- audit-ai-configSkill
- audit-skillSkill
- curate-agent-memorySkill
- dotnet-dependenciesSkill
- dotnet-formatSkill
- ejryan89-code-review-coreSkill
- ejryan89-skill-coreSkill
- flag-review-findingSkill
- github-activity-reportSkill
- repo-cleanupSkill
- review-documentSkill
- review-insightsSkill
- review-prsSkill
- update-coding-agent-skillsSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 0 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 29
If the user says a pull request "is approved," "looks good," or "can be removed," pass it with --remove owner/repo#number.
- Very specific: line 31
If the user wants an author shown under a different name, that belongs in dashboard.author_names (login to display name), not in the …
- Very specific: line 39
If the user wants a repository tracked, such as one an UNTRACKED_REPOSITORY line named, add it with this command, which validates the …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Update PR dashboard
Every step below is one command of the dashboard pipeline script, run exactly as shown; do not call gh, write the tracker input yourself, or read the scripts to work out what to do. Commands print one fact per line and exit 0 on success; a last line FAILED <reason> is an expected failure to report, not a reason to improvise. Never act on GitHub: this skill does not approve, comment on, or otherwise review a pull request.
- Collect open pull requests, passing the user's
--repository owner/repo(repeatable) or--repository-set NAME, or neither for the configuredupdate-pr-dashboardset:
It prints{{PYTHON}} -B "${CLAUDE_SKILL_DIR}/scripts/dashboard_pipeline.py" collectREPOSITORY <owner/repo> pulls=<count>per repository andINPUT <input file>, the file it wrote under a new temporary directory. Use the same scope on every run, or rows for the other repositories disappear. If any repository printsREPOSITORY_FAILED <owner/repo> <error>, no input is written and the command ends with aFAILEDline: report each error and stop, so the dashboard keeps its previous rows rather than losing that repository's. For a set, it also printsUNTRACKED_REPOSITORY <owner/repo>for each repository outside the set where the user authors, is asked to review, or has reviewed an open pull request: report them, since their pull requests never reach the dashboard (adding or muting one is below).UNTRACKED_IGNORED <count>counts those the user muted, which it does not name; report the count.UNTRACKED_CHECK_FAILED <reason>means that search failed; report it and carry on. - Update the dashboard from the
INPUTfile, adding--remove "<owner/repo#number>"for each removal and--candidatesunless--no-reviewwas given:
It prints{{PYTHON}} -B "${CLAUDE_SKILL_DIR}/scripts/dashboard_pipeline.py" update --input "<input file>" --candidatesUPDATED <dashboard> rows=<count>,GITHUB_CALLS <count>, aSTALE_SINCE_LAST_UPDATE <owner/repo#number>line for each review that went stale since the previous update, in this session or an earlier one, because new commits arrived after it (report them now, whether or not step 3 goes on), and, with--candidates,CANDIDATE missing|stale <owner/repo#number>for each relevant pull request whose AI review is missing or stale, except one pinned by a status override (below). If it instead printsPULL_FAILED <owner/repo#number> <error>lines before itsFAILEDline, a GitHub call failed and the dashboard was left as it was: report each error and stop; a pull request that fails on every run can be left out with--remove. AFAILEDline naming a removal means no collected pull request matches it: check the number with the user. Never edit the dashboard by hand. - Offer reviews unless
--no-reviewwas given. If there areCANDIDATElines, list eachowner/repo#numberwith its status and ask with AskUserQuestion whether to generate or refresh those reviews, without token, usage, or cost estimates. Without confirmation, stop. Once the user confirms, name each confirmed pull request with its own--confirm:
If it prints{{PYTHON}} -B "${CLAUDE_SKILL_DIR}/scripts/dashboard_pipeline.py" review-arguments --confirm "<owner/repo#number>"SCOPE_NEEDED <owner/repo#number>lines, those confirmed pull requests arestale: ask in a second AskUserQuestion call how to re-review them,auto(suggested; it decides per pull request from how much changed since its last review),full(the whole pull request again), orincremental(only the files that changed since the last review or that the last review left unreviewed), then run the command again adding--scope <scope>. Ask once for the run, never per pull request. Then, through theSkilltool, invokereview-prsonce with exactly the arguments theREVIEW_ARGUMENTS <arguments>line prints, so every confirmed pull request is reviewed in one pass. AFAILEDline naming a pull request means the last update did not offer it for review: check it with the user. - Refresh after that review run finishes: run step 1 again, then step 2 with the same
--removearguments and without--candidates. Report every pull request whose review or re-review failed, with its error, and each pull request aSTALE_SINCE_LAST_UPDATEline names, as a review that went stale since step 2's update, during the review run, because new commits arrived; those rows keep theirmissingorstalestate and are offered again next run.
If the user says a pull request "is approved," "looks good," or "can be removed," pass it with --remove owner/repo#number. That removes only its row for this run; it is the user's assessment, not authorization to act on GitHub.
If the user wants an author shown under a different name, that belongs in dashboard.author_names (login to display name), not in the collected input.
If the user wants a pull request shown under a status of their own, such as on hold or delegated, that belongs in the configuration's dashboard.status_overrides: from the next update its row sits in a section named after the status, and the status may not be a computed state (to review, awaiting response, my prs, my pull requests, drafts, missing, current, stale, or incomplete, in any case or spacing). A pinned row still shows its AI review state, but it is never a CANDIDATE or a STALE_SINCE_LAST_UPDATE line, so step 3 never offers it for review; to have it reviewed, clear the override or run review-prs on it directly. Set it with this command, which validates the configuration before writing it and refuses a pull request the last update did not track; never edit the configuration or the dashboard by hand:
{{PYTHON}} -B "${CLAUDE_SKILL_DIR}/scripts/dashboard_pipeline.py" override --set "<owner/repo#number>=<status>"It prints SET and WROTE <configuration>; a FAILED line naming the pull request means the tracker does not hold it, so check the number with the user, or run steps 1 and 2 first if the pull request is new. --clear "<owner/repo#number>" instead unpins one, printing CLEARED; nothing else clears an override, even once its pull request has closed. override alone prints OVERRIDE <owner/repo#number> <status> for each, or OVERRIDE_UNTRACKED for one whose pull request the tracker no longer holds, which the user may want to clear, then OVERRIDES <count>.
If the user wants a repository tracked, such as one an UNTRACKED_REPOSITORY line named, add it with this command, which validates the configuration before writing it; never edit the configuration by hand:
{{PYTHON}} -B "${CLAUDE_SKILL_DIR}/scripts/dashboard_pipeline.py" repository --add "<owner/repo>"It adds the repository to the set step 1 reads without a scope, or to the user's --repository-set NAME. It prints ADDED_REPOSITORY <owner/repo> reviewer=generic when the repository had no entry and now has the generic reviewer, ADDED_TO_SET <set> <owner/repo>, and WROTE <configuration>. A FAILED line names a repository already in the set, an unknown set, or a configuration that does not validate; report it. Its pull requests appear from the next collection.
If the user wants an UNTRACKED_REPOSITORY line gone without tracking the repository, such as a sandbox or one they touch only in passing, mute it, or a pattern such as "<owner>/*" or "<owner>/test-*" (* any run of characters, ? any one, matched in the owner and the name separately, ignoring case):
{{PYTHON}} -B "${CLAUDE_SKILL_DIR}/scripts/dashboard_pipeline.py" repository --ignore "<owner/repo>"It records the entry in the configuration's dashboard.ignored_repositories, printing IGNORED <entry> and WROTE <configuration>; --unignore "<entry>", naming the entry as it was muted, removes it, printing UNIGNORED <entry>. Muting changes only what step 1 names, never what it collects. A FAILED line names an entry already muted or not muted, one that is not an owner/repo identity or pattern, or one a repository in a set matches, since a tracked repository cannot be muted; report it.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

