Playbook: Fix Missing Standard GitHub Labels
When to use
repo-consistency-audit.md reports missing labels for a repo
Issue pipeline skills (/new-issue, /issues-review, worker queue) fail or skip labelling
New repo was created but Step 4 of new-repo-setup.md was skipped/incomplete
Standard label set (p24-infra ecosystem)
Label Color Description bug#d73a4aSomething is broken enhancement#a2eeefNew feature or improvement plan#5319E7Design/planning issue human-action#fbca04Waiting for human decision or action queued#0e8a16Queued for implementation by AI worker patch#e4e669Small fix or tweak ai-review-queued#0075caPR queued for AI auto-review ai-review-rejected#d93f0bPR rejected by AI review — issue re-queued
Diagnosis
$repo = "radieu/<repo>"
$have = gh label list -- repo $repo -- json name -- jq "[.[].name]" | ConvertFrom-Json
$need = @ ( "bug" , "enhancement" , "plan" , "human-action" , "queued" , "patch" , "ai-review-queued" , "ai-review-rejected" )
$miss = $need | Where-Object { $_ -notin $have }
"Missing: $ ( $miss -join ', ' ) "
Fix
Add all missing labels (idempotent — safe to re-run)
$repo = "radieu/<repo>"
$labels = @ (
@ { name = "bug" ; color = "d73a4a" ; desc = "Something is broken" } ,
@ { name = "enhancement" ; color = "a2eeef" ; desc = "New feature or improvement" } ,
@ { name = "plan" ; color = "5319E7" ; desc = "Design/planning issue" } ,
@ { name = "human-action" ; color = "fbca04" ; desc = "Waiting for human decision or action" } ,
@ { name = "queued" ; color = "0e8a16" ; desc = "Queued for implementation by AI worker" } ,
@ { name = "patch" ; color = "e4e669" ; desc = "Small fix or tweak" } ,
@ { name = "ai-review-queued" ; color = "0075ca" ; desc = "PR queued for AI auto-review" } ,
@ { name = "ai-review-rejected" ; color = "d93f0b" ; desc = "PR rejected by AI review — issue re-queued" }
)
$existing = gh label list -- repo $repo -- json name -- jq "[.[].name]" | ConvertFrom-Json
foreach ($lbl in $labels) {
if ($lbl.name -notin $existing) {
gh label create $lbl.name -- repo $repo -- color $lbl.color -- description $lbl.desc
Write-Host "Created: $ ( $lbl.name ) "
} else {
Write-Host "OK (exists): $ ( $lbl.name ) "
}
}
Apply to all repos at once
$repos = @ (
"radieu/p24-infra" ,
"radieu/et-operational-platform" ,
"radieu/Art-Agency" ,
"radieu/brandpilot" ,
"radieu/whatsup-android-chat-puller" ,
"radieu/radekkonarski-personal-brand" ,
"radieu/amazon-kdp-tango"
)
# ... paste $labels array from above ...
foreach ($repo in $repos) {
Write-Host " `n --- $repo ---" - ForegroundColor Cyan
$existing = gh label list -- repo $repo -- json name -- jq "[.[].name]" | ConvertFrom-Json
foreach ($lbl in $labels) {
if ($lbl.name -notin $existing) {
gh label create $lbl.name -- repo $repo -- color $lbl.color -- description $lbl.desc
Write-Host " Created: $ ( $lbl.name ) "
}
}
}
Affected repos (as of 2026-06-28)
Repo Missing labels p24-infra plan, queued, ai-review-queued, ai-review-rejected, patch et-operational-platform plan, human-action, queued, ai-review-queued, ai-review-rejected, patch Art-Agency plan, queued, ai-review-queued, ai-review-rejected, patch brandpilot plan, queued, ai-review-queued, ai-review-rejected, patch whatsup-android-chat-puller ai-review-queued, ai-review-rejected, patch radekkonarski-personal-brand plan, queued, ai-review-queued, ai-review-rejected, patch amazon-kdp-tango plan, human-action, queued, ai-review-queued, ai-review-rejected, patch
Escalation
If gh label create returns already_exists: safe to ignore — the label exists (possibly from old run).
If a label was renamed/deleted and issues referenced it: GitHub keeps the label text on issues but the
label itself disappears from autocomplete. Recreate with same name.