| title | Examples |
|---|---|
| description | Full workflow YAML and label examples for the Issues section. |
This page provides concrete examples: a full issue workflow, optional inputs for assignees and projects, and example labels and branch names.
Example .github/workflows/copilot_issue.yml with common inputs:
name: Copilot - Issue
on:
issues:
types: [opened, reopened, edited, labeled, unlabeled, assigned, unassigned]
jobs:
copilot-issues:
name: Copilot - Issue
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v5
with:
persist-credentials: false
- uses: vypdev/copilot@v3
with:
token: ${{ secrets.PAT }}
project-ids: ${{ vars.PROJECT_IDS }}
desired-assignees-count: 1
issue-managed-branches: true
pre-branch-sdd: true
main-branch: main
development-branch: develop
feature-tree: feature
bugfix-tree: bugfix
hotfix-tree: hotfix
release-tree: release
agent-provider: ${{ vars.AGENT_PROVIDER || 'codex' }}
agent-model-provider: ${{ vars.AGENT_MODEL_PROVIDER || 'openai' }}
agent-model: ${{ vars.AGENT_MODEL || 'gpt-6-luna' }}
ai-ignore-files: build/*
debug: ${{ vars.DEBUG }}tokenis required. Use a fine-grained PAT with repo and project permissions (see Authentication).project-ids: Comma-separated project IDs so issues (and later PRs) are linked to boards.desired-assignees-count: Number of assignees (e.g. 1).issue-managed-branches: Create and verify an issue-linked branch afterin-progress(default:true).pre-branch-sdd: For eligible features or behavior changes, resolve SDD questions and publish the SDD before implementation (default:false).main-branch/development-branch: Match your repo (e.g.mainanddevelop).*-tree: Branch prefixes (e.g.feature/123-title). Omit if you keep defaults.
A help or question issue stays branchless after in-progress. For other admitted types, set issue-managed-branches: false to run without Action-managed branches. Release and hotfix workflows require managed branches, as does pre-branch-sdd: true.
- uses: vypdev/copilot@v3
with:
token: ${{ secrets.PAT }}
issue-managed-branches: false| Goal | Labels to add |
|---|---|
| New feature | feature, then in-progress; the Action adds SDD if enabled and later branched |
| Bug fix | bugfix, then in-progress; add contract-change for a behavior change |
| Documentation | docs or documentation, then in-progress |
| Chore / maintenance | chore or maintenance, then in-progress |
| Hotfix (production) | hotfix, then in-progress; add deploy to trigger the hotfix workflow |
| Release | release, then in-progress; add deploy to trigger the release workflow |
| Question (no branch) | question, then in-progress |
| Help request (no branch) | help, then in-progress |
Assuming defaults (feature-tree: feature, development-branch: develop):
| Issue | Start labels | Branch created |
|---|---|---|
| #42 "Add login page" | feature, in-progress |
feature/42-add-login-page from develop |
| #99 "Fix null in API" | bugfix, in-progress |
bugfix/99-fix-null-in-api from develop |
| #100 "Critical payment bug" | hotfix, in-progress |
hotfix/100-critical-payment-bug from its selected production tag |
| #101 "Release 1.2.0" | release, in-progress |
release/101-release-1-2-0 from develop |
branched appears only after the Action verifies each linked branch. With the SDD gate, the first branch commit contains the validated specification.
If you use release or hotfix and the deploy label, the action dispatches a workflow by filename. Defaults:
release-workflow:release_workflow.ymlhotfix-workflow:hotfix_workflow.yml
Your .github/workflows/ must contain files with these exact names (or pass the correct names in the action inputs). Example:
# In copilot_issue.yml (or wherever you call Copilot for issues)
- uses: vypdev/copilot@v3
with:
token: ${{ secrets.PAT }}
release-workflow: release_workflow.yml
hotfix-workflow: hotfix_workflow.yml- Workflow setup — Events and what runs when.
- Branch management — Start and verified readiness in detail.
- Configuration — All issue-related inputs.