Edit a GitHub project item
github_project_item_editUpdate GitHub project item fields in one validated call: set or clear values, and edit draft title/body or append text, skipping unchanged fields before any write.
Instructions
Change a project item in one call: field values (fields) and fields to empty (clear_fields), and, for a draft only, its title, body (replaces it) or append_body (adds after a blank line). A value an item already holds, and an empty field to clear, are skipped; if everything is in place nothing is written (changed: []). Everything is checked before the first write: a field in both fields and clear_fields, body with append_body, a blank title, draft text on an issue or pull request, an unknown field, option or iteration, a bad date and nothing to change are invalid_argument. A write that fails throws, and its message names what was written before it. An issue's or pull request's own title, body, assignees, labels and milestone are GitHub's, not the board's: github_issue_edit sets them on the issue. Field values are set by field name and option or iteration name, matched without regard to case: text as a string, number as a number or numeric string, date as YYYY-MM-DD, single select as an option name, iteration as an iteration title or @current (the iteration containing today, UTC). Only text, number, date, single select and iteration fields can be set; a column that mirrors an issue field is set with the issue tools' issue_fields, not here. GitHub's own (Title, Assignees, Labels, Milestone, Repository, Linked pull requests, …) are set on the issue, and github_issue_edit sets assignees, labels and milestone. Every field and value is checked before anything is written. An item is named by its node ID (PVTI_…), which also tells its board (a project given beside it must be that board), or by an issue or pull request (12, #12, owner/repo#12 or its URL) that is on the board the lookup finds. A draft can only be named by its ID. A board is named by project: its number, owner/number or its URL, used as it is; any other project is a title, and no project is Roadmap: the open board of that whole title is looked up, never guessed, in owner's boards if owner is given, else in the boards linked to repo, then its organization's, then the viewer's. Needs a token with the project scope; if GitHub reports missing scopes, run gh auth refresh -s project.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Drafts only: the new body, which replaces the whole old one; empty clears it. | |
| item | Yes | The board item: its node ID (PVTI_…), or an issue or pull request as 12, #12, owner/repo#12 or its URL, found on the board that project, owner and repo choose. A draft can only be named by its ID. | |
| repo | No | owner/name; defaults to the working tree's repository (its origin). Where the board lookup starts, the owner of a bare board number, and the repository of a bare issue or pull request number. | |
| owner | No | A user or organization login, or "@me": the owner of a numbered board, else the only owner searched for a title. | |
| title | No | Drafts only: the new title. | |
| fields | No | Field values to set, by field name: {"Status": "Todo", "Target": "2026-12-01"}. Values are text, a number, a YYYY-MM-DD date, an option name or an iteration title (@current is the one containing today). A column that mirrors an issue field is set with the issue tools' issue_fields, not here. | |
| project | No | The board, as its number, owner/number or its URL (used as it is; a bare number takes owner, else the owner of repo or of the working tree's repository), or as its title, looked up among open boards (whole title, case-insensitive). Default: the title Roadmap. | |
| append_body | No | Drafts only: text added after the current body, set off by a blank line. | |
| clear_fields | No | Names of the fields to empty. A column that mirrors an issue field is cleared with clear_issue_fields in github_issue_edit, not here. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| changed | Yes | What was written: field names as the board spells them, then title and body; [] when everything was already in place. | |
| item_id | Yes | ||
| project | Yes |