GitHub Copilot Coding Agent — Issue → Draft PR automation
If you add the ai-copilot label to an issue, GitHub Actions automatically assigns it to Copilot, and Copilot creates a branch → writes code → opens a Draft PR.
When to use this skill
-
When PMs/designers create issues and Copilot starts implementation without a developer
-
When offloading backlog issues (refactors/docs/tests) to Copilot
-
When delegating follow-up work created by Vibe Kanban / Conductor to Copilot
-
When automating pipelines like Jira → GitHub Issue → Copilot PR
Prerequisites
-
GitHub plan: Copilot Pro+, Business, or Enterprise
-
Copilot Coding Agent enabled: Must be enabled in repo settings
-
gh CLI: Authenticated
-
PAT: Personal Access Token with repo scope
One-time setup
One-click setup (register token + deploy workflow + create label)
bash scripts/copilot-setup-workflow.sh
This script does:
-
Register COPILOT_ASSIGN_TOKEN as a repo secret
-
Deploy .github/workflows/assign-to-copilot.yml
-
Create the ai-copilot label
Usage
Option 1: GitHub Actions automation (recommended)
Create issue + ai-copilot label → auto-assign Copilot
gh issue create
--label ai-copilot
--title "Add user authentication"
--body "Implement JWT-based auth with refresh tokens. Include login, logout, refresh endpoints."
Option 2: Add a label to an existing issue
Add label to issue #42 → trigger Actions
gh issue edit 42 --add-label ai-copilot
Option 3: Assign directly via script
export COPILOT_ASSIGN_TOKEN=<your-pat> bash scripts/copilot-assign-issue.sh 42
How it works (technical)
Issue created/labeled ↓ GitHub Actions triggered (assign-to-copilot.yml) ↓ Look up Copilot bot ID via GraphQL ↓ replaceActorsForAssignable → set Copilot as assignee ↓ Copilot Coding Agent starts processing the issue ↓ Create branch → write code → open Draft PR ↓ Auto-assign you as PR reviewer
Required GraphQL header:
GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection
GitHub Actions workflows
Workflow Trigger Purpose
assign-to-copilot.yml
Issue labeled ai-copilot
Auto-assign to Copilot
copilot-pr-ci.yml
PR open/update Run CI (build + tests)
Copilot PR limitations
Copilot is treated like an external contributor.
-
PRs are created as Draft by default
-
Before the first Actions run, a manual approval from someone with write access is required
-
After approval, copilot-pr-ci.yml CI runs normally
Check CI after manual approval
gh pr list --search 'head:copilot/' gh pr view <pr-number>
planno (plannotator) integration — optional
Review the issue spec in planno before assigning to Copilot (independent skill, not required):
Review and approve this issue spec in planno
After approval, add the ai-copilot label → trigger Actions.
Common use cases
- Label-based Copilot queue
PM writes an issue → add ai-copilot label → Actions auto-assigns → Copilot creates Draft PR → Team only performs PR review
- Combined with Vibe Kanban / Conductor
Follow-up issues created by Vibe Kanban: refactors/docs cleanup/add tests → ai-copilot label → Copilot handles → Team focuses on main feature development
- External system integration
Jira issue → Zapier/webhook → auto-create GitHub Issue → ai-copilot label → Copilot PR → Fully automated pipeline
- Refactoring backlog processing
Bulk-add label to backlog issues
gh issue list --label "tech-debt" --json number
| jq '.[].number'
| xargs -I{} gh issue edit {} --add-label ai-copilot
Check results
List PRs created by Copilot
gh pr list --search 'head:copilot/'
Specific issue status
gh issue view 42
PR CI status
gh pr checks <pr-number>
References
-
GitHub Copilot Coding Agent overview
-
Ask Copilot to create a PR (GraphQL example)
-
Official docs: assign Copilot to an issue
-
Copilot PR permissions/limitations
-
GitHub Copilot coding agent (VSCode docs)
Quick Reference
=== Setup === bash scripts/copilot-setup-workflow.sh one-time setup
=== Issue assignment === gh issue create --label ai-copilot ... new issue + auto-assign gh issue edit <num> --add-label ai-copilot existing issue bash scripts/copilot-assign-issue.sh <num> manual assign
=== Verify results === gh pr list --search 'head:copilot/' Copilot PR list gh pr view <num> PR details gh pr checks <num> CI status
=== Constraints === Copilot Pro+/Business/Enterprise required First PR requires manual approval (treated as an external contributor) PAT: repo scope required