issue-fields-migration

Migrates repo labels and Project V2 field values into org-level GitHub issue fields.

38.5k|4.9k|Updated Jun 11, 2025
One-click install
npx skills add https://github.com/github/awesome-copilot --skill issue-fields-migration
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: issue-fields-migration
Source: https://github.com/github/awesome-copilot/tree/main/skills/issue-fields-migration
Command: npx skills add https://github.com/github/awesome-copilot --skill issue-fields-migration

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Adopting GitHub's org-level issue fields means moving years of metadata out of repo labels and Project V2 fields, and doing that by hand across hundreds of issues and multiple repos is slow and error-prone.

Core Features & Use Cases

  • Label-to-Field Migration: Converts repo labels (e.g., p0, p1, priority/high) into single-select issue field values, with auto-suggested mappings, conflict detection, and optional label removal after migration.
  • Project Field Migration: Copies values from Project V2 fields (text, single select, number, date) into matching org-level issue fields, with batched option mapping and iteration-field skip warnings.
  • Safe Bulk Execution: Dry-run previews, pre-flight permission checks, rate-limit pacing with exponential backoff, and idempotent re-runs that never overwrite existing field values.
  • Use Case: Your org just enabled the Priority issue field and you have p0–p3 labels spread across three repos. The skill scans all labeled issues, previews the 156 changes, writes the Priority values via the REST API, and optionally removes the old labels.

Quick Start

Ask the assistant to migrate your p0 through p3 labels in a specific repo to the org Priority issue field and show a preview before writing anything.

Frequently Asked Questions about issue-fields-migration

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I migrate GitHub labels to issue fields?

List repo labels with gh label list, map each label to a single-select issue field option, then write values via POST to /repositories/{repo_id}/issues/{number}/issue-field-values. The skill auto-suggests mappings and previews all changes before writing.

How do I copy Project V2 field values to issue fields?

Fetch project fields and items with the GitHub MCP projects tools, match fields by name and compatible type, map single-select options, then write values using the issue field values REST endpoint. Iteration fields have no equivalent and are skipped.

Does the migration overwrite existing issue field values?

No. The migration checks each issue's current field values first and skips any issue where the target field is already set. This makes re-running a partial migration safe and idempotent.

What happens when an issue has multiple labels mapping to the same field?

Since single-select fields hold one value, the skill detects these conflicts during the scan phase and asks you to choose a strategy: first match wins, skip conflicting issues, or decide each case manually.

Why does the write endpoint use repository ID instead of owner/repo?

The issue field values REST endpoint requires the integer repository_id in the path, not the owner/repo slug. Look it up once per repo with gh api /repos/{owner}/{repo} --jq .id and cache it for cross-repo projects.

What are the limitations of label-to-field migration?

Labels can only map to single-select issue fields, and gh issue list --limit 1000 silently truncates larger result sets. Label removal is optional and requires URL-encoding label names containing spaces or special characters.