Sandbox
@grandcamel/JIRA-Assistant-Skills

Claude Code skills for JIRA automation

This repo packages JIRA work into separate Claude Code skills so you can ask for issues, searches, workflow moves, comments, sprint actions, and time logs in plain language. The skills call into the `jira-as` CLI and shared Python library, with commands and config files to set up Jira credentials and project access.

46 stars8 forksPythonUpdated 9d ago
Who it's for

Builders who use Claude Code and want repeatable JIRA actions from the terminal.

What it delivers

You can manage JIRA work by asking for it in plain language instead of memorizing JQL or switching tools.

What it does

Issue management skills

Create, get, update, close, and bulk-handle issues through skills such as `jira-issue` and `jira-bulk`.

Search and filters

Use `jira-search` to find work with natural language instead of writing JQL by hand.

Workflow and sprint actions

Move issues through states, manage sprints and epics, and handle agile planning with `jira-lifecycle` and `jira-agile`.

Collaboration and relationships

Add comments, watchers, links, blockers, and dependency checks with `jira-collaborate` and `jira-relationships`.

Time, fields, and admin utilities

Log time, inspect custom fields, and run admin or ops tasks with `jira-time`, `jira-fields`, `jira-admin`, and `jira-ops`.

Claude Code setup and commands

Includes setup and discovery commands in `commands/` plus plugin metadata for installing into Claude Code.

How to get it

  1. 1Run
    git clone https://github.com/grandcamel/jira-assistant-skills.git
    cd jira-assistant-skills
  2. 2Run
    pip install "jira-as>=1.1.3"  # jira-as CLI + shared library from public PyPI
  3. 3Run
    export JIRA_API_TOKEN="your-token"
    export JIRA_EMAIL="you@company.com"
    export JIRA_SITE_URL="https://company.atlassian.net"
  4. 4If you're using the Assistant Skills plugin system, run the setup wizard
    /assistant-skills-setup
  5. 5After setup, use claude-as instead of claude
    claude-as  # Runs Claude with Assistant Skills venv activated
  6. 6Copy the token and add it to your shell config
    export JIRA_API_TOKEN="your-token-here"
    export JIRA_EMAIL="you@company.com"
    export JIRA_SITE_URL="https://company.atlassian.net"

README

JIRA Assistant Skills

JIRA Assistant Skills

10x

More context-efficient
than MCP servers

14

Specialized skills
one conversation

245

Production-ready
Python scripts

0

JQL syntax
to memorize

jira-as 1.1.3 on PyPI Tests Python 3.10+ Skills GitHub Stars MIT License

Natural language JIRA automation for Claude Code
From sprint planning to incident response—14 skills, 245 scripts, zero JQL memorization.

┌───────────────────────────────────────────────────────────────┐
│ You: "What's blocking the Q4 release?"                        │
├───────────────────────────────────────────────────────────────┤
│ Claude: Analyzing 147 issues across 3 projects...             │
│                                                               │
│ Found 4 blockers:                                             │
│ • PLATFORM-234: API rate limiting (blocked 12 issues)         │
│ • MOBILE-567: iOS signing certificate expired                 │
│ • WEB-890: Pending security review                            │
│ • INFRA-123: Database migration not scheduled                 │
│                                                               │
│ Recommended actions:                                          │
│ 1. Escalate PLATFORM-234 to @api-team (highest impact)        │
│ 2. MOBILE-567 can be resolved by @devops today                │
│ 3. WEB-890 needs @security-lead approval                      │
└───────────────────────────────────────────────────────────────┘

Get StartedSkillsUse CasesArchitecture


The Difference

❌ The JQL Way

project = PROJ AND
status IN ("To Do", "In Progress") AND
assignee = currentUser() AND
sprint IN openSprints() AND
priority IN (High, Highest)
ORDER BY priority DESC, created ASC

Hope you remembered the syntax...

✅ The Natural Way

"Show my high priority sprint work"

Just ask.

Time Saved

TaskTraditional JIRAJIRA AssistantSaved
Find my open bugs45 seconds5 seconds89%
Create sprint + add stories3 minutes15 seconds92%
Log time on 5 issues2 minutes20 seconds83%
Check what's blocking release5 minutes10 seconds97%
Bulk close 20 resolved issues4 minutes30 seconds88%

Typical developer: Save 30+ minutes per week. Team of 8: Reclaim 31 work days per year.


Quick Start

1. Clone the Repository

git clone https://github.com/grandcamel/jira-assistant-skills.git
cd jira-assistant-skills

2. Install Dependencies

pip install "jira-as>=1.1.3"  # jira-as CLI + shared library from public PyPI

3. Get API Token

  1. Visit Atlassian API Tokens
  2. Create token → Copy it

4. Configure

export JIRA_API_TOKEN="your-token"
export JIRA_EMAIL="you@company.com"
export JIRA_SITE_URL="https://company.atlassian.net"

5. Start Using

# Just ask Claude
claude "Show me my open issues"
claude "Create a bug: Login button not working"
claude "What's blocking the release?"

# Or use the CLI directly
jira-as issue get PROJ-123
jira-as search query "project = PROJ AND status = Open"
jira-as time log PROJ-123 --time 2h

That's it. Claude now has full JIRA access via natural language, and you can use the jira-as CLI directly from your terminal.

Full Setup Guide →


Setup (Assistant Skills)

If you're using the Assistant Skills plugin system, run the setup wizard:

/assistant-skills-setup

This configures:

  • Shared Python venv at ~/.assistant-skills-venv/
  • Required dependencies from requirements.txt
  • Environment variables (prompts you to configure Jira credentials)
  • claude-as shell function for running Claude with dependencies

After setup, use claude-as instead of claude:

claude-as  # Runs Claude with Assistant Skills venv activated

Environment Variables

VariableRequiredDescription
JIRA_SITE_URLYesJira instance base URL (e.g., https://company.atlassian.net)
JIRA_EMAILYesAtlassian account email for authentication
JIRA_API_TOKENYesAtlassian API token (generate here)
JIRA_MOCK_MODENoSet to true to use the mock client (no API calls)

Getting Your API Token

  1. Go to Atlassian API Tokens
  2. Click "Create API token"
  3. Give it a descriptive label (e.g., "Claude Code Jira")
  4. Copy the token and add it to your shell config:
    export JIRA_API_TOKEN="your-token-here"
    export JIRA_EMAIL="you@company.com"
    export JIRA_SITE_URL="https://company.atlassian.net"
    

What You Can Do

flowchart LR
    subgraph Input["💬 You Say"]
        Q1["Show my high<br/>priority bugs"]
        Q2["Create a story<br/>for login redesign"]
        Q3["What's blocking<br/>the release?"]
    end

    subgraph Processing["🤖 Claude Understands"]
        P1["JQL: assignee=currentUser()<br/>AND type=Bug<br/>AND priority>=High"]
        P2["create_issue.py<br/>--type Story<br/>--summary '...'"]
        P3["Search linked blockers<br/>Traverse dependency tree"]
    end

    subgraph Output["✅ You Get"]
        R1["📋 List of 7 bugs<br/>with details"]
        R2["🎫 PROJ-456 created<br/>ready to refine"]
        R3["🔍 3 blockers found<br/>with recommendations"]
    end

    Q1 --> P1 --> R1
    Q2 --> P2 --> R2
    Q3 --> P3 --> R3
📖 Example: Sarah's Monday Morning

Before JIRA Assistant (15 minutes)

  1. Open browser, navigate to JIRA (2 min)
  2. Find the right board (1 min)
  3. Set up filters (3 min)
  4. Check each issue status (5 min)
  5. Look up sprint velocity (2 min)
  6. Copy issues to notes (2 min)

After JIRA Assistant (45 seconds)

Sarah: "What's my sprint work and yesterday's progress?"

Claude provides a formatted summary with everything she needs.

Time saved: 14 minutes per standup × 250 days = 58 hours/year


Skills Overview

SkillPurposeExample Command
jira-assistantMeta-skill routerRoutes to the right skill automatically
jira-issueIssue CRUD"Create a bug for login failure"
jira-lifecycleWorkflow transitions"Move PROJ-123 to In Progress"
jira-searchJQL & filters"Show my open issues"
jira-collaborateComments & watchers"Add comment to PROJ-123"
jira-agileSprints & epics"Create sprint for next week"
jira-relationshipsIssue linking"What's blocking PROJ-123?"
jira-timeTime tracking"Log 2 hours on PROJ-123"
jira-jsmService desk"Show my support queue"
jira-bulkBulk operations"Close all resolved issues"
jira-devGit integration"Generate branch name for PROJ-123"
jira-fieldsField discovery"Show custom fields in PROJ"
jira-opsCache & utilities"Clear JIRA cache"
jira-adminProject admin"List project permissions"

Full CLI Reference →


Who Is This For?

👨‍💻 Developers — Never leave your terminal

Stop context-switching to JIRA.

You're in your IDE. You just fixed a bug. Now you need to update JIRA.

claude "Close PROJ-123 with 'Fixed null pointer', log 30 minutes"
# 3 seconds, never left your terminal

Developer Cheat Sheet

TaskCommand
Check my work"What's assigned to me in the current sprint?"
Start a task"Start progress on PROJ-123"
Log time"Log 2 hours on PROJ-123: Implemented auth fix"
Mark done"Close PROJ-123 with resolution Fixed"
Create bug"Create high priority bug: Login fails on Safari"
Get branch name"Generate branch name for PROJ-123"

Time saved: ~45 min/week

👥 Team Leads — Team visibility in seconds

See your team's work without meetings.

Morning Check-in (60 Seconds)

"Show sprint progress for Team Alpha"
"Who has the most work in progress?"
"What's blocked and why?"

Sprint Planning Support

"Show unestimated stories in backlog"
"What's the team velocity for last 3 sprints?"
"Move top 10 priority items to Sprint 42"

Query Templates

NeedCommand
Blockers"Show blockers across all team projects"
Workload"Who's overloaded? Show assignment counts"
Progress"What moved to Done yesterday?"
Export"Export this sprint's completed work to CSV"

Time saved: ~4 hours/week

🏃 Scrum Masters — Run ceremonies, not admin

Focus on facilitation, not JIRA navigation.

Sprint Planning (Before)

"Show prioritized backlog with estimates"
"What dependencies exist in top 20 items?"
"Create Sprint 43 starting next Monday"

Daily Standup (During)

"Show yesterday's progress for Sprint 43"
"What's blocked right now?"
"Who has items without updates > 24 hours?"

Sprint Review (After)

"Show completed items in Sprint 43 by epic"
"Export sprint results for stakeholder presentation"
"What carried over from last sprint?"

Time saved: ~4.5 hours/sprint

📊 Product Managers — Self-serve product data

Focus on product, not project administration.

Roadmap Management

"Show all epics for Q1 with completion percentage"
"What features shipped last month?"
"Create epic: User Authentication Redesign"

Backlog Grooming

"Show stories without acceptance criteria"
"What's been in backlog > 90 days?"
"Prioritize FEAT-123 above FEAT-124"

Stakeholder Communication

"Export release notes for v2.1"
"Summarize what's shipping this sprint"
"Show bug fix rate for last quarter"

Time saved: ~5 hours/week

🔧 IT/Ops — Incident response accelerated

Incident response without the JIRA dance.

Incident Creation (10 Seconds)

"Create urgent incident: Production database unreachable"

Creates P1 with proper labels and assigns to on-call.

Incident Management

"Show all open incidents by severity"
"Link INCIDENT-123 to root cause INFRA-456"
"Escalate INCIDENT-123 to @platform-team"

Service Desk (JSM)

"Show my queue sorted by SLA breach time"
"Resolve REQ-789 with 'Password reset completed'"
"Add customer to watchers on REQ-789"

Time saved: Minutes per incident


Architecture

flowchart TD
    U["👤 User Request"] --> CC["🤖 Claude Code"]
    CC --> JA["📋 jira-assistant<br/>Meta-Router"]

    JA -->|"Create bug"| JI["jira-issue"]
    JA -->|"Move to Done"| JL["jira-lifecycle"]
    JA -->|"Find issues"| JS["jira-search"]
    JA -->|"Add comment"| JC["jira-collaborate"]
    JA -->|"Link issues"| JR["jira-relationships"]
    JA -->|"Sprint planning"| JAG["jira-agile"]
    JA -->|"Log time"| JT["jira-time"]
    JA -->|"Bulk update"| JB["jira-bulk"]
    JA -->|"Service request"| JSM["jira-jsm"]

    JI & JL & JS & JC & JR & JAG & JT & JB & JSM --> SH["🔧 Shared Library"]
    SH --> API["🔌 JIRA REST API"]
    API --> JIRA[("☁️ JIRA Cloud")]

Technical Highlights

  • Shared Library Pattern — DRY architecture with common utilities
  • 4-Layer Error Handling — Validation → API → Retry → User messages
  • Layered Config — Env vars, system keychain, and settings files
  • ADF Support — Native Atlassian Document Format handling
  • Exponential Backoff — Automatic retry on rate limits

Quality & Security

Test Coverage

CategoryTestsDescription
Core Skills850+Issue, search, lifecycle, collaborate, agile, relationships, time
JSM Integration150+Service desks, SLAs, approvals, knowledge base
Advanced Skills300+Bulk ops, dev workflows, fields, cache, admin
Live Integration340+End-to-end tests against real JIRA instances
Total1644All passing

Tests run against live JIRA Cloud instances to ensure real-world reliability.

Security

  • No hardcoded secrets — API tokens stored in environment variables or gitignored files
  • HTTPS-only connections — All JIRA API requests enforced over secure transport
  • Input validation — All user data validated before API calls
  • Credential isolationsettings.local.json gitignored by default
  • No credential logging — Sensitive data excluded from logs and error output

Try It

Open in GitHub Codespaces

One-click cloud environment with all dependencies pre-installed.


Documentation

ResourceDescription
Quick Start GuideGet up and running in 5 minutes
Configuration GuideCredentials, settings files, and Agile field mapping
CLI ReferenceComplete CLI documentation
TroubleshootingCommon issues and solutions

Need Help?


E2E Testing

Run E2E Tests

E2E tests validate the plugin with the Claude Code CLI:

# Requires ANTHROPIC_API_KEY
./scripts/run-e2e-tests.sh           # Docker
./scripts/run-e2e-tests.sh --local   # Local

See tests/e2e/README.md for details.

Sandboxed Container Testing

Run tests with restricted tool access for safe demos and focused testing:

cd skills/jira-assistant/tests

# Safe demo mode (view/search only)
./run_sandboxed.sh --profile read-only

# JQL-focused testing
./run_sandboxed.sh --profile search-only

# Issue CRUD only
./run_sandboxed.sh --profile issue-only
ProfileUse CaseWhat's Allowed
read-onlySafe demos, evaluationsView issues, search, list fields
search-onlyJQL trainingSearch queries only
issue-onlyCRUD workshopsIssue operations only
fullComplete testingAll operations

Contributing

Contributions are welcome! See our Contributing Guide.

# Clone the repository
git clone https://github.com/grandcamel/jira-assistant-skills.git
cd jira-assistant-skills

# Install dependencies and CLI
pip install "jira-as>=1.1.3" pytest pytest-asyncio
pip install -e .  # Install the plugin package in editable mode

# Run tests (uses root pytest.ini configuration)
pytest skills/*/tests/*.py -v

# Verify CLI is working
jira-as --version
jira-as --help

Roadmap

  • Core JIRA operations (v1.0)
  • Agile workflow support (v1.1)
  • Service Management (v1.2)
  • Bulk operations (v1.3)
  • GitHub integration enhancements
  • Slack notifications
  • Custom workflow templates

License

This project is licensed under the MIT License — see the LICENSE file for details.


Stop clicking through JIRA. Start talking to it.
Built for Claude Code by developers who were tired of memorizing JQL.

Files in the repo

Repository payload31 top-level entries
  • .claude
  • .claude-plugin
  • .devcontainer
  • .github
  • commands
  • config
  • docker
  • docs
  • proposals
  • scripts
  • skills
  • tests
  • .dockerignore
  • .gitignore
  • .gitmodules
  • .pre-commit-config.yaml
  • .release-please-manifest.json
  • CHANGELOG.md
  • CLAUDE.md
  • conftest.py
  • CONTRIBUTING.md
  • docker-compose.yml
  • Dockerfile
  • install.ps1
  • LICENSE
  • pyproject.toml
  • pytest.ini
  • README.md
  • release-please-config.json
  • requirements-e2e.txt
  • VERSION

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More skills

obra/
superpowers

An agentic skills framework & software development methodology that works.

285k
1 add

Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.

117k
1 add
Vincentwei1021/
anything2explainer

Topic in, narrated explainer video out. A Claude Code / Codex skill that turns any topic into a black-canvas motion-graphics explainer video with TTS voiceover, subtitles and a chapter progress bar. Chinese or English; every frame drawn in code with Remotion.

666

Open-source AI job search: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)

71k