Bulk update project item field values. Supports status changes, priority changes, size settings, etc.
Prerequisites
- Items must exist in the target GitHub Project
ghThe CLI must be installed and authenticated (projectwith scope)
Flow
Step 1: Confirm the update targets and update contents
Confirm the following with the user:
- Target specification method:
- Query filter (e.g.
status:Todo,label:bug,assignee:@me) - Direct specification of item numbers
- All items
- Query filter (e.g.
- Field(s) to update: Status, Priority, Size, or custom fields
- New value(s): Example: Status → "In Progress", Priority → "High"
Step 2: Retrieve field metadata
# プロジェクト ID を取得
gh project view <number> --owner <owner> --format json -q '.id'
# フィールド ID とオプション ID を取得
gh project field-list <number> --owner <owner> --format json
jq Resolve the ID of the target field and the option ID corresponding to the value to be set.
Step 3: Search for target items
gh project item-list <number> \
--owner <owner> \
--format json \
--limit 999
Filter items by user-specified conditions.--query If the parameter can be used, prefer it:
gh project item-list <number> \
--owner <owner> \
--query "status:Todo" \
--format json
Step 4: Confirm the update contents with the user
Display a list of update targets and changes:
以下の N 件のアイテムを更新します:
- #1: ソーシャルログイン — Status: Todo → In Progress
- #2: パスワードリセット — Status: Todo → In Progress
実行しますか?
Step 5: Bulk update field values
Update field values for each item:
gh project item-edit \
--id <item-id> \
--field-id <field-id> \
--project-id <project-id> \
--single-select-option-id <option-id>
Use the appropriate flag depending on the field type:
- SINGLE_SELECT:
--single-select-option-id - TEXT:
--text - NUMBER:
--number - DATE:
--date(YYYY-MM-DD format)
Step 6: Report the update results
Display the list of updated items:
| # | Title | Field | Old value | New value |
|---|---|---|---|---|
| 1 | Social login | Status | Todo | In Progress |
| 2 | Password reset | Status | Todo | In Progress |
Notes
- Always obtain user confirmation before batch updating
- If an option value does not exist in the project's field definitions, report an error
- When updating multiple fields at the same time, run
item-editfor each field - Be mindful of GitHub API rate limits, and adjust the batch size when updating in large quantities
- Requires network (mainly via the API. See the "Running in a sandbox environment" section below)
Verification
After completing Step 6, verify the updates with the following:
gh project item-list <number> --owner <owner> --format json --limit 999
Complete if the target items' field values have changed to the new values.
Running in a sandbox environment
This skill requires GitHub operations over the network (gh project item-edit). Run the relevant commands with the sandbox disabled on a per-command basis. It cannot be run in an environment where network isolation cannot be lifted.