Manage development work using Jira tickets as the single source of truth...
Manage development workflows using Jira tickets. Supports four core operations: listing work, creating work, assigning work, and doing work.
| User Intent | Workflow |
|---|---|
| "List my work" / "Show my tickets" | → List Work |
| "Create a ticket" / "Add work" | → Create Work |
| "Assign PROJ-123 to John" | → Assign Work |
| "Add label to PROJ-123" | → Manage Labels |
| "List components" | → List Components |
| "Do work" / "Work on PROJ-123" | → Do Work |
Display the user's assigned Jira tickets.
Steps:
mcp_atlassian-mcp_getAccessibleAtlassianResourcesmcp_atlassian-mcp_atlassianUserInfoactivate_search_tools_for_jira_and_confluence)Output format:
| Key | Summary | Status | Priority |
|-----|---------|--------|----------|
| PROJ-123 | Implement login | In Progress | High |
| PROJ-124 | Fix date bug | To Do | Medium |
Create a new Jira ticket.
Required information (prompt user if missing):
mcp_atlassian-mcp_getVisibleJiraProjects)Mandatory fields (auto-populated):
GLCP. User can override if needed.created-by-github-copilot. User can add additional labels.Optional information:
Steps:
Get Cloud ID if not cached
Gather required fields from user
If issue type unknown, fetch available types via issue metadata tools (activate with activate_jira_issue_management_tools)
Check user preferences file for last-used component (see User Preferences)
If no component provided and preference exists, suggest it; otherwise prompt user
Create issue using mcp_atlassian-mcp_createJiraIssue with additional_fields:
{
"components": [{ "name": "<component-name>" }],
"customfield_XXXXX": { "value": "GLCP" },
"labels": ["created-by-github-copilot", "<user-labels>"]
}
Save selected component to user preferences
Confirm creation with ticket key and link
Note: The custom field ID for "Requested by (BU)" varies by Jira instance. Discover it via issue metadata tools on first use.
List available components for a project.
Trigger phrases: "list components", "show components", "what components are available"
Steps:
activate_jira_issue_management_tools to get components| Component | Description |
|-----------|-------------|
| Backend | Server-side services |
| Frontend | UI components |
| API | REST API endpoints |
Add or remove labels from a Jira ticket.
Trigger phrases: "add label to PROJ-123", "label PROJ-123 with", "remove label from"
Steps:
Get Cloud ID
Fetch current issue to get existing labels
Add/remove requested labels
Update issue using mcp_atlassian-mcp_editJiraIssue:
{
"fields": {
"labels": ["existing-label", "new-label"]
}
}
Confirm update
Output format:
✅ Labels updated on PROJ-123:
Added: urgent, needs-review
Current: created-by-github-copilot, urgent, needs-review
Store user preferences in .jira-workflow-prefs.json in the workspace root.
Stored preferences:
{
"lastComponent": "Backend",
"defaultProject": "PROJ",
"requestedByBU": "GLCP"
}
Behavior:
lastComponent, suggest if presentlastComponent in preferencesrequestedByBU default by saying "set requested by to X"Preference commands:
Assign a Jira ticket to a team member.
Trigger phrases: "assign PROJ-123 to", "give PROJ-123 to", "assign ticket to"
Required information:
Steps:
Get Cloud ID using mcp_atlassian-mcp_getAccessibleAtlassianResources
Look up the user's account ID using mcp_atlassian-mcp_lookupJiraAccountId with the provided name/email
If multiple matches, present options and ask user to clarify
Update the issue using mcp_atlassian-mcp_editJiraIssue with the assignee field:
{
"fields": {
"assignee": { "accountId": "<account-id>" }
}
}
Confirm assignment with ticket key and assignee name
Output format:
✅ PROJ-123 assigned to John Smith
Full development workflow: implement a Jira ticket with proper Git workflow and Jira updates.
Trigger phrases: "do work", "work on PROJ-123", "implement PROJ-123", "pick up PROJ-123"
Prerequisites check:
Before starting implementation, assess the task complexity:
Break into subtasks when:
Keep as single task when:
If task warrants breakdown:
Analyze and decompose the parent ticket into logical subtasks
Create subtasks in Jira using mcp_atlassian-mcp_createJiraIssue with:
{
"issueTypeName": "Sub-task",
"parent": "PROJ-123",
"summary": "<subtask summary>",
"labels": ["created-by-github-copilot"]
}
Present subtask plan to user for confirmation:
📋 PROJ-123: Implement user authentication
Proposed subtasks:
1. PROJ-124: Set up authentication middleware
2. PROJ-125: Implement login endpoint
3. PROJ-126: Add JWT token generation
4. PROJ-127: Write integration tests
Proceed? (Y/n)
Work on each subtask sequentially:
After all subtasks complete, update and transition parent ticket
See references/do-work-workflow.md for detailed implementation steps.
1. Fetch ticket details
2. Create feature branch
3. Implement the work
4. Commit changes
5. Update Jira ticket
See references/do-work-workflow.md for detailed implementation steps.
Format: <type>/<ticket-key>-<short-description>
Examples:
feature/PROJ-123-user-authenticationbugfix/PROJ-456-fix-date-formatchore/PROJ-789-update-dependenciesDerive <type> from issue type:
feature/bugfix/chore/For single tasks or parent tickets:
<type>(<ticket-key>): <summary>
<detailed description>
Refs: <ticket-key>
Co-authored-by: GitHub Copilot <noreply@github.com>
For subtasks (commit per subtask):
<type>(<subtask-key>): <summary>
<detailed description>
Refs: <subtask-key>
Part-of: <parent-key>
Co-authored-by: GitHub Copilot <noreply@github.com>
The Co-authored-by trailer is a Git convention that GitHub recognizes and displays in the commit UI.
Example (subtask commit):
feat(PROJ-125): implement login endpoint
Add POST /api/auth/login endpoint with:
- Email/password validation
- User lookup and password verification
- Error responses for invalid credentials
Refs: PROJ-125
Part-of: PROJ-123
Co-authored-by: GitHub Copilot <noreply@github.com>
After completing work, update the Jira ticket with:
Use mcp_atlassian-mcp_addCommentToJiraIssue for the update.
| Scenario | Action |
|---|---|
| Cannot find Cloud ID | Prompt user to verify Jira connection |
| Ticket not found | Verify ticket key format and project access |
| User not found | Verify name/email spelling, show similar matches |
| Multiple user matches | Present options for user to select |
| Component not found | List available components, ask user to select |
| Invalid label format | Labels cannot contain spaces; suggest alternatives |
| Custom field ID unknown | Fetch issue metadata to discover field IDs |
| Subtask creation fails | Check if Sub-task issue type exists in project |
| Parent ticket not found | Verify parent key when creating subtasks |
| Dirty working tree | Prompt user to commit/stash changes first |
| Branch already exists | Offer to checkout existing or create new |
| Create issue fails | Check required fields and permissions |
This skill uses these MCP tool groups:
mcp_atlassian-mcp_* - Core Jira operations (always available)activate_jira_issue_management_tools - Issue creation, editing, transitionsactivate_search_tools_for_jira_and_confluence - JQL search capabilities