Conversation
criteria 2 of 9 unmet -> 1 of 9 unmet
…erge ref (#101) review dry run: 1 blocker, 2 should-fix -> 0
…rd-skill-that-keeps-ready-age # Conflicts: # .claude/skills/review-memory/SKILL.md
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #101
What changed
Adds
.claude/skills/steward-pr, a skill that sweeps open, non-draft PRs carrying the work-issue### Statusledger and keeps each one mergeable, green and answered until a human merges it: update-branch when behind, mergeorigin/mainwhen conflicting, delegate failing checks and human review comments toimplement-issue, onereview-prround on each fix, a reply on every thread, aSteward:entry in the ledger. To tell agent activity from human activity regardless of the GitHub login, every comment, review, PR body and issue comment an agent posts now ends with-- agent: <skill-name>; AGENTS.md states the rule and each posting skill appends it.Repo tooling only: no TypeScript, no package tests. Each criterion is checked by a dry run of the skill's commands against this repo or by reading the files.
Acceptance criteria
review-prdry run ends its summary and every inline comment with-- agent: review-prgrep -c -- '-- agent:' AGENTS.md .claude/skills/{review-pr,work-issue,implement-issue,design-feature,triage-issue,file-issue,cut-release,review-memory}/SKILL.mdis non-zero for every file; areview-prsubagent run with "do not post" on this branch prints the trailer on its summary and every inline comment.claude/skills/steward-pr/SKILL.mdexists and the AGENTS.md Skills table routes to ittest -f .claude/skills/steward-pr/SKILL.md && grep -n steward-pr AGENTS.mdgh pr list --state open, selects non-draft PRs with### Status(andReady: yes, see Out of scope); a PR number: that PR alone, "skipped: " when it does not qualifygh pr update-branch; DIRTY: mergeorigin/main, resolve, push; nothing rewrites historygrep -n 'rebase|force' .claude/skills/steward-pr/SKILL.mdshows only prohibitionsimplement-issuewith the failing job's log excerpt; green or blocked after two roundsreview-prround, a reply on the thread with-- agent: steward-pr, thread left unresolved; a second sweep posts nothingSteward: <date> <what>; fixed report block per PR.claude/settings.jsonallowlists the skill's commands and nothing broadergit diff main -- .claude/settings.json: allowgh pr update-branch *,gh api repos/{owner}/{repo}/pulls/*,gh api repos/{owner}/{repo}/issues/*,git merge origin/*; denygh apimerge, ref and release pathsE2E evidence
not applicable
Checklist
CHANGELOG.mdhas an entry underUnreleased(writing-changelogskill), or the change is not user-visible (repo tooling; not user-visible)writing-user-docsskill), or the change is not user-visible (not user-visible)index.ts; no new directnode:*I/O outside an adapterarchitectureskill applied, exceptions explained abovedocs/ARCHITECTURE.mdupdated if a surface it describes changed (it describes no skill)Out of scope
Ready: yeson top of the### Statusheading the issue names: the PR template ships that heading withReady: no, so the heading alone selects every human PR opened from the template, which the issue says the steward must never touch (found by the review-pr dry run).Ready: yesis written only bywork-issuestep 5 or by a human handing a PR over..claude/settings.jsonallowsgh apiunder this repo'spulls/andissues/paths only; the same prefixes cover the REST reads and the one REST write the steward needs (a reply under a review thread, which nogh prsubcommand can post). Deny entries for themerge,git/refsandreleasespaths keep rule 8 covered; whether a*in the middle of a deny pattern matches is unverified against a live permission prompt. Patterns match command text as written, so the skill writes everygh apiflag after the path and leavesorigin/$branchunquoted.e2e-deviceis not in the issue's list of posting skills; it edits the PR body, so it got a one-line note to keep the trailer last.### Statussection; Claude Code cloud sessions append their own footer after it, so the steward classifies by "a line matches-- agent:", not by "the last line".Status
Implement: done (9/9 checked) Review: dry run, request-changes, 3 findings addressed in the next commit E2E: not applicable Ready: no
-- agent: implement-issue