skills/jira/SKILL.md
Jira and optional Confluence integration for issue tracking and documentation. Use when the user mentions Jira tickets or issue keys such as PROJ-123, asks about sprints, boards, or backlogs, or wants to read, search, create, update, transition, comment on, or organize Jira issues and Confluence pages.
npx skillsauth add mgajewskik/opencode-config jiraInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Natural language interaction with Jira and Confluence. Supports CLI and MCP backends.
Use these environment variables as the skill's stable configuration interface. Keep these names unchanged unless you intentionally add an external compatibility layer.
Jira:
JIRA_URL=https://your-jira-instance.com
[email protected]
JIRA_PERSONAL_TOKEN=your_jira_token
# Optional default project scope (comma-separated)
JIRA_PROJECTS=PROJECT_A,PROJECT_B
Confluence:
CONFLUENCE_URL=https://your-confluence-instance.com
CONFLUENCE_PERSONAL_TOKEN=your_confluence_token
CLI compatibility:
# jira-cli often expects JIRA_API_TOKEN; keep this mapping outside the skill logic
export JIRA_API_TOKEN="$JIRA_PERSONAL_TOKEN"
Notes:
Load references/setup.md for full setup instructions.
which jiramcp-atlassian_jira_* and mcp-atlassian_confluence_* tools| Task | Best Backend | Why | |------|--------------|-----| | View single issue | CLI | Compact output, fast | | List my issues | CLI | Human-readable tables | | Search with JQL | MCP | Better JSON for processing | | Create issue | CLI | Simpler syntax | | Bulk operations | MCP | Batch support | | Transitions | MCP | Returns transition IDs | | Confluence (all) | MCP | CLI doesn't support Confluence | | Sprints/boards | Either | Similar capability |
Default:
CRITICAL: Scope queries to the user's intended projects.
JIRA_PROJECTS is set, treat it as the default project scope.-p PROJECT or --project PROJECT when scope matters.project = KEY or project IN (...) in JQL when scope matters.JIRA_PROJECTS.Example - List my issues across projects:
# CLI approach (per project)
for proj in ${JIRA_PROJECTS//,/ }; do
JIRA_API_TOKEN="$JIRA_PERSONAL_TOKEN" jira issue list -a$(jira me) -p "$proj" --plain
done
# MCP approach (single query)
jql: "assignee = currentUser() AND project IN (PROJECT_A, PROJECT_B) ORDER BY updated DESC"
Load
references/cli.mdfor full CLI reference.
| Intent | Command |
|--------|---------|
| View issue | jira issue view KEY |
| List my issues | jira issue list -a$(jira me) -p PROJECT |
| My in-progress | jira issue list -a$(jira me) -s"In Progress" -p PROJECT |
| Create issue | jira issue create -tType -s"Summary" -p PROJECT --no-input |
| Transition | jira issue move KEY "Status" |
| Assign to me | jira issue assign KEY $(jira me) |
| Add comment | jira issue comment add KEY "Comment" |
| Current sprint | jira sprint list --state active |
| Who am I | jira me |
Always prefix CLI commands with: JIRA_API_TOKEN="$JIRA_PERSONAL_TOKEN"
Load
references/mcp-jira.mdfor full MCP Jira reference.
| Intent | Tool |
|--------|------|
| Search issues | mcp-atlassian_jira_search |
| View issue | mcp-atlassian_jira_get_issue |
| Create issue | mcp-atlassian_jira_create_issue |
| Update issue | mcp-atlassian_jira_update_issue |
| Get transitions | mcp-atlassian_jira_get_transitions |
| Transition | mcp-atlassian_jira_transition_issue |
| Add comment | mcp-atlassian_jira_add_comment |
| List projects | mcp-atlassian_jira_get_all_projects |
| Batch create | mcp-atlassian_jira_batch_create_issues |
Load
references/mcp-confluence.mdfor full Confluence reference.
| Intent | Tool |
|--------|------|
| Search pages | mcp-atlassian_confluence_search |
| Get page | mcp-atlassian_confluence_get_page |
| Create page | mcp-atlassian_confluence_create_page |
| Update page | mcp-atlassian_confluence_update_page |
| Delete page | mcp-atlassian_confluence_delete_page |
| Add comment | mcp-atlassian_confluence_add_comment |
| Get children | mcp-atlassian_confluence_get_page_children |
Jira:
Confluence:
Pattern: [A-Z]+-[0-9]+ (e.g., PROJ-123, ABC-1)
When user mentions an issue key:
jira issue view KEYmcp-atlassian_jira_get_issue(issue_key: "KEY")Load
references/jql.mdfor full JQL syntax.
| User says | JQL |
|-----------|-----|
| "my tickets" | assignee = currentUser() |
| "my open tickets" | assignee = currentUser() AND status NOT IN (Done, Closed) |
| "high priority bugs" | issuetype = Bug AND priority >= High |
| "updated this week" | updated >= startOfWeek() |
| "created by me" | reporter = currentUser() |
| "in current sprint" | sprint in openSprints() |
| "blocked tickets" | status = Blocked |
| "unassigned" | assignee IS EMPTY |
Always add project filter when scope matters: AND project IN (PROJECT_A, PROJECT_B)
When JIRA_PROJECTS is not set, infer project scope from the request or ask the user.
Ask yourself:
1. Detect issue key from user input
2. Use CLI: jira issue view KEY
3. Present summary, status, assignee, description
4. Offer actions: transition, comment, assign
1. Gather: project, type, summary, description
2. If project not specified, ask (show JIRA_PROJECTS options)
3. Draft content, show to user
4. Get explicit approval
5. Create via CLI or MCP
6. Return issue key and link
1. Fetch current issue state
2. Get available transitions (MCP: `mcp-atlassian_jira_get_transitions`)
3. Show current status and available transitions
4. Get user approval for transition
5. Execute transition
6. Confirm new status
1. For search: use CQL via mcp-atlassian_confluence_search
2. For read: get page by ID or title+space
3. For create/update: draft content, show preview, get approval
4. Execute and return page URL
These operations require explicit user confirmation:
For destructive or high-impact changes, show the exact proposed action before executing.
These can run without confirmation:
For user display: Human-readable tables and summaries
Example issue list:
| Key | Status | Summary | Priority |
|-----|--------|---------|----------|
| PROJ-123 | In Progress | Fix login bug | High |
| PROJ-124 | To Do | Add export feature | Medium |
For internal processing: Use MCP JSON responses
| Error | Cause | Resolution | |-------|-------|------------| | "No result found" | Wrong project scope | Check JIRA_PROJECTS, use -p flag | | 401 Unauthorized | Token expired/invalid | Regenerate JIRA_PERSONAL_TOKEN | | 403 Forbidden | No project access | Verify project permissions | | 404 Not Found | Issue doesn't exist | Check issue key | | JQL syntax error | Invalid query | Check JQL syntax in references/jql.md |
If neither CLI nor MCP is available, guide the user to configure one of them rather than guessing or simulating results.
Load references when:
references/cli.md - Creating issues, complex CLI operations, troubleshooting CLIreferences/mcp-jira.md - Batch operations, transitions, linking issuesreferences/mcp-confluence.md - Any Confluence operation beyond simple searchreferences/jql.md - Complex search queries, JQL syntax questionsreferences/setup.md - Initial setup, authentication issuesDo NOT load references for:
documentation
Create senior-level deep research dossiers and roadmap companions. Use when the user asks for a dossier, senior research, deep research, in-depth research, mental models for a topic, senior perspective on a topic, how something actually works, ramp up on a topic, architectural deep dive, tradeoffs, failure modes, or what a senior would notice. Produces current-directory research-* and roadmap-* markdown artifacts, not a tutorial or short summary.
development
Senior-level Knative and OpenShift Serverless guidance for Serving, Eventing, Functions, autoscaling, scale-to-zero, CloudEvents, RabbitMQ/Kafka sources, Lambda migration, Harbor/OCI images, debugging, operations, and production rollout. Use when working with Knative Service, Revision, Route, KPA, activator, queue-proxy, Broker, Trigger, Source, Sink, kn func, OpenShift Serverless, Kourier, eventing-rabbitmq, Knative Kafka, or serverless workloads on Kubernetes/OpenShift.
development
Senior-level RHEL-family Linux operations. Use when running, debugging, hardening, patching, installing, upgrading, or operating Red Hat Enterprise Linux, Rocky Linux, AlmaLinux, CentOS Stream, Fedora-as-upstream, or related enterprise Linux hosts: systemd, RPM/DNF, SELinux, NetworkManager, firewalld, storage, kernel/kdump, FIPS/STIG, Satellite, IdM, Podman, bootc, air-gapped fleets.
development
Senior-level Proxmox VE guidance for VM creation, templates, storage, ZFS, Ceph, networking, clusters, HA, PBS backups, debugging, upgrades, security, and production/homelab operations. Use when working with Proxmox, PVE, Proxmox VE, qm, pct, pvesm, pvecm, pmxcfs, HA manager, Proxmox Backup Server, VM migration, Proxmox incidents, or Ceph/ZFS/Corosync/VLAN bridges in a Proxmox VE context.