ops forgejo pr: add PR lifecycle verbs #74

Closed
opened 2026-05-25 00:30:05 +00:00 by coilysiren · 0 comments
Owner

Problem

The gh pr verb set has direct forgejo API equivalents but no coily surface. Last noun in the 5-noun sweep.

Scope

Add the following under coily ops forgejo pr:

  • create --repo <owner/name> --head <branch> --base <branch> --title T [--body-file PATH] -> POST /repos/{owner}/{repo}/pulls
  • list --repo <owner/name> [--state open|closed|all] [--limit N] -> GET /repos/{owner}/{repo}/pulls
  • view --repo <owner/name> --number N -> GET /repos/{owner}/{repo}/pulls/{n}
  • close --repo <owner/name> --number N -> PATCH /repos/{owner}/{repo}/pulls/{n} with {state: "closed"}
  • reopen --repo <owner/name> --number N -> PATCH /repos/{owner}/{repo}/pulls/{n} with {state: "open"}
  • merge --repo <owner/name> --number N [--method merge|rebase|squash] [--title T] [--message-file PATH] -> POST /repos/{owner}/{repo}/pulls/{n}/merge
  • comment --repo <owner/name> --number N --body-file PATH -> POST /repos/{owner}/{repo}/issues/{n}/comments (forgejo treats PR conversation comments via the issue endpoint)
  • review --repo <owner/name> --number N --event APPROVE|REQUEST_CHANGES|COMMENT [--body-file PATH] -> POST /repos/{owner}/{repo}/pulls/{n}/reviews

Inline review comments (the per-file/line variants) are intentionally out of scope - they need a richer payload shape and earn their own follow-up.

Why

Closes the loop on the 5-noun sweep (issue, label, release, repo, pr). PR work is the last surface that should still need to drop to curl + SSM.

**Problem** The `gh pr` verb set has direct forgejo API equivalents but no coily surface. Last noun in the 5-noun sweep. **Scope** Add the following under `coily ops forgejo pr`: - `create --repo <owner/name> --head <branch> --base <branch> --title T [--body-file PATH]` -> `POST /repos/{owner}/{repo}/pulls` - `list --repo <owner/name> [--state open|closed|all] [--limit N]` -> `GET /repos/{owner}/{repo}/pulls` - `view --repo <owner/name> --number N` -> `GET /repos/{owner}/{repo}/pulls/{n}` - `close --repo <owner/name> --number N` -> `PATCH /repos/{owner}/{repo}/pulls/{n}` with `{state: "closed"}` - `reopen --repo <owner/name> --number N` -> `PATCH /repos/{owner}/{repo}/pulls/{n}` with `{state: "open"}` - `merge --repo <owner/name> --number N [--method merge|rebase|squash] [--title T] [--message-file PATH]` -> `POST /repos/{owner}/{repo}/pulls/{n}/merge` - `comment --repo <owner/name> --number N --body-file PATH` -> `POST /repos/{owner}/{repo}/issues/{n}/comments` (forgejo treats PR conversation comments via the issue endpoint) - `review --repo <owner/name> --number N --event APPROVE|REQUEST_CHANGES|COMMENT [--body-file PATH]` -> `POST /repos/{owner}/{repo}/pulls/{n}/reviews` Inline review comments (the per-file/line variants) are intentionally out of scope - they need a richer payload shape and earn their own follow-up. **Why** Closes the loop on the 5-noun sweep (issue, label, release, repo, pr). PR work is the last surface that should still need to drop to curl + SSM.
Sign in to join this conversation.
No labels
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-bridge/coily#74
No description provided.