Shikanime Org PR Resolution (no merge)
Reconcile a PR in shikanime-labs/*/shikanime-studio/*: enumerate review
conversations, check the linked issue DoD ledger, report approval/CI. Never
lands the PR — that is sks-land.
When to Use
- "Resolve the suggestions on PR #M", "clear the review threads on #M".
- "Is PR #M ready to land?" — reconcile and report, no merge.
- Pre-landing cleanup before handing off to
sks-land. - "Resolve review threads on a shikanime PR."
- "Check if a PR is ready to land (reconcile + report)."
Not for opening (sks-pr), reviewing (sks-pr-review), merging (sks-land).
Gates
Gate 1 — DoD ledger
Criteria = the - [ ] tasklist in the linked issue body (see sks-issue);
verify each against diff/CI.
gh issue view <N> --repo <org>/<repo> --json body --jq .body # read the tasklist
gh pr view <M> --repo <org>/<repo> --json body,state --jq .body
- Unchecked box ≠ done — report it, never silently mark done.
- If met, check the box (
gh issue editor API) with evidence in a comment first. - No linked issue → stop: link one (
sks-issue) or get explicit ledger-free confirmation. - No merge here — this gate only reports;
sks-landacts.
Gate 2 — Approval + CI (report only)
sks-pr-review must have run on the final head commit and approved. Re-review
if new commits landed after the last review. Check approval via the query in
references/resolve.md.
- Where branch protection blocks self-approval (e.g.
shikanime-labs/skills,nix-containers), a verballgtmfrom the user satisfies this gate — merge stays insks-land(gh pr merge --squash --admin). - CI:
gh pr checks <M> --repo <org>/<repo>.
Gate 3 — Conversations reconciled (core)
Every inline review thread must be reconciled. Enumerate threads and resolve
them with the GraphQL in references/resolve.md.
For each unresolved thread:
- Pertinent + in ledger — verify diff/CI addresses it; resolve, else flag
(blocks
sks-land). - Pertinent + not in ledger — add to issue tasklist (Gate 1), resolve if diff already covers it.
- Not pertinent — post one comment with the rationale, then resolve. Never resolve silently.
- No root cause — a bug fix reconciles but states no cause (symptom patch);
flag and route to
sks-investigate; do not resolve as done.
When closing a thread with a fix, cite the concrete evidence in the comment —
the exact - old → + new diff lines or the command/CI output proving it, not
a prose summary. (See the family message invariants in sks-dev-workflow;
references/example-comment.md for a filled example.)
Outdated (isOutdated) uncontested threads may be resolved without code change;
note supersession in the comment.
Issue-level discussion and PR comments are out of scope — only inline review
threads gate via isResolved.
Output (hand back)
Readiness verdict:
- Ledger: N of N satisfied, listing open items.
- Approval:
sks-pr-reviewapproval on current head (or verballgtmforsks-land). - Conversations: every thread resolved with one-line rationale, or list needing author decision.
- CI: green / pending / failing.
- Docs: flag ops/architecture changes for post-land
sks-docupdate.
Then stop — merging is sks-land's job.
Pitfalls
- Resolving silently — discarded suggestions owe a one-line why.
- Trusting a checkbox without evidence — verify each criterion against the diff.
- Reconciling after new commits without re-review — approval is bound to a head commit.
- Treating issue/PR comments as gate threads — only inline review threads gate.
- Merging from this skill — it only reconciles; defer to
sks-land.
Verification
# readiness verdict re-checked: ledger N/N, approval present, every thread resolved
gh pr view "$N" --repo "$R" --json reviewDecision,state
gh api repos/"$R"/pulls/"$N"/comments --jq '.[].isResolved' 2>/dev/null || true
See also
sks-investigate— root-cause research before any fix.