Jira issue management using the jira CLI with JSON output. Use for creating, viewing, updating, searching issues, fetching complete hierarchies, and managing sprints.
Manages Jira issues using the `jira` CLI for creating, viewing, updating, and searching. It also fetches complete issue hierarchies with linked Confluence pages for implementation context. Use it when users reference specific issue keys (like VA-123) or request actions like "create a Jira ticket" or "implement VA-2522".
/plugin marketplace add FortiumPartners/ensemble/plugin install ensemble-infrastructure@ensembleThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Purpose: Issue management for Jira Cloud using the jira CLI with JSON output optimized for LLM agents.
Tool: jira CLI (installed globally via npm link from ~/utils/atlassian)
# Check CLI installed
jira --version # Expects: 1.0.0
Config location: ~/utils/atlassian/.env
ATLASSIAN_CLOUD_ID=your-cloud-id
ATLASSIAN_AUTH_TOKEN=email@domain.com:API_TOKEN
ATLASSIAN_SITE_URL=https://your-site.atlassian.net
Get API token from: https://id.atlassian.com/manage-profile/security/api-tokens
User wants to...
├── View issue details
│ └── jira issues read <ISSUE-KEY>
├── List recent issues
│ └── jira issues list [--limit N] [--project KEY]
├── Search issues
│ └── jira issues search "query" [--project KEY]
├── Create new issue
│ └── jira issues create "Title" --project KEY [options]
├── Update existing issue
│ └── jira issues update <ISSUE-KEY> [--status|--assignee|--priority]
├── Fetch complete hierarchy
│ └── jira issues fetch <ISSUE-KEY> --output ./spec
└── Get available transitions
└── jira issues transitions <ISSUE-KEY>
User wants to...
├── List projects
│ └── jira projects list
└── List users
└── jira users list [--query NAME]
├── Add comment
│ └── jira comments create <ISSUE-KEY> --body "Comment text"
└── List comments
└── jira comments list <ISSUE-KEY>
| Operation | Command | Example |
|---|---|---|
| Read | jira issues read <KEY> | jira issues read VA-2228 |
| List | jira issues list | jira issues list --limit 10 --project VA |
| Search | jira issues search "query" | jira issues search "auth bug" |
| Create | jira issues create "Title" | jira issues create "Fix login" --project VA --type Bug |
| Update | jira issues update <KEY> | jira issues update VA-123 --status "In Review" |
| Fetch | jira issues fetch <KEY> | jira issues fetch VA-123 --output ./spec |
jira issues create "Title" \
--project VA \
--type Story \
--description "Detailed description" \
--assignee "account-id" \
--priority High \
--labels "Bug,Critical" \
--parent VA-100
Issue types: Epic, Story, Task, Bug, Sub-task Priority values: Highest, High, Medium, Low, Lowest
jira issues update VA-123 \
--status "In Review" \
--assignee "account-id" \
--priority High \
--labels "Bug,P1" \
--summary "New title"
# Fetch epic with ALL children + linked Confluence pages
jira issues fetch VA-2522 --output ./spec
# Output structure:
# ./spec/
# ├── jira/
# │ ├── VA-2522.json
# │ ├── VA-2522.md
# │ ├── VA-2228.json (child)
# │ └── ...
# ├── confluence/
# │ ├── 12345678.json
# │ └── ...
# └── summary.json
When to use fetch:
# Projects
jira projects list
# Users
jira users list
jira users list --query "john"
# Add comment
jira comments create VA-123 --body "This is a comment"
# List comments
jira comments list VA-123
Issue Operations:
- "Create a Jira issue for..."
- "Open a ticket in Jira..."
- "Log this as a Jira bug..."
- "Check Jira issue VA-123"
- "What's the status of VA-123?"
- "Update VA-123 to..."
- "Move VA-123 to In Review"
- "Assign VA-123 to..."
- "Search Jira for..."
- "Find issues about..."
Fetch Operations (comprehensive):
- "Fetch VA-2228"
- "Pull down VA-2522"
- "Get complete data for VA-2228"
- "Implement from VA-2228"
- "Get requirements for VA-2228"
Metadata:
- "List Jira projects"
- "Who can I assign this to?"
# Jira issue ID pattern
[A-Z]{2,10}-\d+
# Examples: VA-123, DEV-456, BACKEND-789
User: "Create a Jira issue for the login timeout bug"
Steps:
1. Parse request: title=login timeout bug
2. Execute: jira issues create "Login timeout bug" --project VA --type Bug
3. Return: Issue key and details from JSON
User: "What's the status of VA-123?"
Steps:
1. Parse issue ID: VA-123
2. Execute: jira issues read VA-123
3. Return: Issue title, state, assignee, priority from JSON
User: "Move VA-123 to In Review and assign to John"
Steps:
1. Get users: jira users list --query john
2. Find John's account ID from JSON
3. Update: jira issues update VA-123 --status "In Review" --assignee john-account-id
User: "Implement VA-2522"
Steps:
1. Check if reference exists: ls ./spec/jira/VA-2522.json
2. If not: jira issues fetch VA-2522 --output ./spec
3. Read requirements from ./spec/jira/*.md
4. Begin implementation
5. Update progress: jira issues update VA-2228 --status "In Progress"
| Error | Cause | Resolution |
|---|---|---|
command not found: jira | CLI not installed | cd ~/utils/atlassian && npm link |
Missing ATLASSIAN_AUTH_TOKEN | No credentials | Configure ~/utils/atlassian/.env |
Authentication failed | Invalid token | Regenerate API token |
Resource not found | Invalid issue key | Verify issue exists |
Status not available | Invalid transition | Run jira issues transitions VA-123 to see options |
Rate limited | Too many requests | CLI auto-retries with backoff |
All commands output JSON. Parse with jq:
# Get issue title
jira issues read VA-123 | jq -r '.summary'
# Get issue status
jira issues read VA-123 | jq -r '.status'
# List issue keys and titles
jira issues list --limit 10 | jq -r '.[] | "\(.key): \(.summary)"'
# Get created issue key
jira issues create "Title" --project VA | jq -r '.key'
| Need | Use read | Use fetch |
|---|---|---|
| Quick status check | Yes | No |
| Get single issue | Yes | Overkill |
| Get issue + ALL children | No | Yes |
| Get linked Confluence | No | Yes (automatic) |
| Offline reference | No | Yes |
| Implementation context | No | Yes |
| Real-time current data | Yes | Snapshot |
jira CLIThis skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.