Claude Code Skills for JIRA automation - modular skills for issue management, workflows, search, and collaboration
Overview
10x More context-efficient than MCP servers 1 Skill: the Entry-Point Hint to jira-as help 950+ CLI unit tests in jira-as 0 JQL syntax to memorize Natural language JIRA automation for Claude Code One thin skill points Claude at jira-as help — zero JQL memorization, zero skill sprawl. Get Started • Skills • Use Cases • Architecture Save 30+ minutes per week. Reclaim 31 work days per year. 1. Visit Atlassian API Tokens 2. Create token → Copy it The plugin ships one skill (jira) that is deliberately thin: it just points Claude at jira-as help and jira-as api search/api describe to find and learn operations, so the skill never drifts out of sync with what the CLI actually supports. You can also use the jira-as CLI directly from your terminal. If you're using the Assistant Skills plugin system, run the setup wizard: This configures: - Shared Python venv at ~/.assistant-skills-venv/ - Required dependencies from requirements.
README
JIRA Assistant Skills
Natural language JIRA automation for Claude Code One thin skill points Claude at jira-as help — zero JQL memorization, zero skill sprawl.
Get Started • Skills • Use Cases • Architecture
The Difference
Time Saved
| Task | Traditional JIRA | JIRA Assistant | Saved |
|---|---|---|---|
| Find my open bugs | 45 seconds | 5 seconds | 89% |
| Create sprint + add stories | 3 minutes | 15 seconds | 92% |
| Log time on 5 issues | 2 minutes | 20 seconds | 83% |
| Check what’s blocking release | 5 minutes | 10 seconds | 97% |
| Bulk close 20 resolved issues | 4 minutes | 30 seconds | 88% |
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>=2,<3" # jira-as CLI from public PyPI
3. Get API Token
- Visit Atlassian API Tokens
- Create token → Copy it
4. Configure
export JIRA_API_TOKEN="your-token"
export JIRA_EMAIL="[email protected]"
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 -- run this first, it's the source of truth
jira-as help
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. The plugin ships one skill (jira) that is deliberately thin:
it just points Claude at jira-as help and jira-as api search/api describe to find and learn operations, so the skill never drifts out of
sync with what the CLI actually supports. You can also 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-asshell 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
| Variable | Required | Description |
|---|---|---|
JIRA_SITE_URL |
Yes | Jira instance base URL (e.g., https://company.atlassian.net) |
JIRA_EMAIL |
Yes | Atlassian account email for authentication |
JIRA_API_TOKEN |
Yes | Atlassian API token (generate here) |
JIRA_MOCK_MODE |
No | Set to true to use the mock client (no API calls) |
Getting Your API Token
- Go to Atlassian API Tokens
- Click “Create API token”
- Give it a descriptive label (e.g., “Claude Code Jira”)
- Copy the token and add it to your shell config:
export JIRA_API_TOKEN="your-token-here" export JIRA_EMAIL="[email protected]" export JIRA_SITE_URL="https://company.atlassian.net"
What You Can Do
flowchart LR
subgraph Input["💬 You Say"]
Q1["Show my highpriority bugs"]
Q2["Create a storyfor login redesign"]
Q3["What's blockingthe release?"]
end
subgraph Processing["🤖 Claude Understands"]
P1["JQL: assignee=currentUser()AND type=BugAND priority>=High"]
P2["create_issue.py--type Story--summary '...'"]
P3["Search linked blockersTraverse dependency tree"]
end
subgraph Output["✅ You Get"]
R1["📋 List of 7 bugswith details"]
R2["🎫 PROJ-456 createdready to refine"]
R3["🔍 3 blockers foundwith recommendations"]
end
Q1 --> P1 --> R1
Q2 --> P2 --> R2
Q3 --> P3 --> R3
The Jira Skill
There is one skill: jira (skills/jira/SKILL.md). It carries the
Entry-Point Hint – a thin pointer, not a command reference – and
nothing else:
- Start every task with
jira-as help: the surface map, groups, topics, auth and sandbox modes. - Find an operation with
jira-as api search WORDS, read it withjira-as api describe OPERATION, run it withjira-as api call OPERATION. - For a known group,
jira-as help GROUP; for a gotcha (ADF, paging, search, scope, risk, auth, migration, …),jira-as help TOPIC. - Discovery needs no credentials; calls need
JIRA_SITE_URL,JIRA_EMAILandJIRA_API_TOKEN. Risk-tagged calls preview by default;--confirmsends.
Every JIRA capability – issues, agile, search, time tracking, service
management, bulk operations, and more – lives in the jira-as CLI
itself, not in a table here. That is deliberate: a command table in this
README would drift out of sync with the CLI exactly the way the old
thirteen-skill hub did. Run jira-as help to see what is actually there.
Full CLI Reference →
Who Is This For?
Architecture
flowchart TD
U["👤 User Request"] --> CC["🤖 Claude Code"]
CC --> JS["📋 jira skillEntry-Point Hint"]
JS -->|"jira-as help / api search / api describe"| CLI["🔧 jira-as CLI (2.x)"]
CLI --> API["🔌 JIRA REST API"]
API --> JIRA[("☁️ JIRA Cloud")]
One thin skill points at the CLI; the CLI carries the actual JIRA capability, its own error handling, config layering, ADF support, and retry behavior. See the jira-as repository for those internals – they are no longer duplicated here.
Quality & Security
Test Coverage
This repository is documentation-first: the CLI’s own unit tests (950+) live in the jira-as library repository. What lives here is:
| Suite | Location | Needs |
|---|---|---|
| SBX profile unit tests | skills/shared/tests/test_live_profile.py |
Offline fakes |
| Routing check | skills/jira/tests/test_routing.py |
Claude CLI (live, host-run) |
| Live integration | skills/shared/tests/live_integration/ |
Host-approved dev wrapper |
| Sufficiency arm | tests/e2e/ |
Claude CLI (live, host-run) |
| Knowledge Floor eval | tests/floor_eval/ |
Host-run, before each release |
See Testing for what runs in CI versus what is host-triggered and why.
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 isolation —
settings.local.jsongitignored by default - No credential logging — Sensitive data excluded from logs and error output
Try It
One-click cloud environment with all dependencies pre-installed.
Documentation
| Resource | Description |
|---|---|
| Quick Start Guide | Get up and running in 5 minutes |
| Configuration Guide | Credentials, settings files, and Agile field mapping |
| CLI Reference | Complete CLI documentation |
| Troubleshooting | Common issues and solutions |
Need Help?
E2E Testing: The Help-Only Sufficiency Arm
The end-to-end harness asks a narrower question now that there is one
skill: is the Entry-Point Hint alone (skills/jira/SKILL.md) enough for a
model to complete representative jira-as tasks? The model gets only the
shipped plugin, the Bash tool, and jira-as in simulation transport
with no credentials.
# Requires ANTHROPIC_API_KEY or `claude auth login`; host-run, not CI
pytest tests/e2e/ -v
See tests/e2e/README.md for the seven tasks, the isolation guarantees, and the pass thresholds.
Sandboxed Profile Testing
skills/jira/tests/test_sandbox_validation.py verifies that sandboxed
tool-restriction profiles correctly limit what Claude can do. Set
SANDBOX_PROFILE and CLAUDE_ALLOWED_TOOLS and run it directly:
SANDBOX_PROFILE=read-only \
CLAUDE_ALLOWED_TOOLS="Read Glob Grep WebFetch WebSearch Bash(jira-as issue get:*) Bash(jira-as search:*)" \
pytest skills/jira/tests/test_sandbox_validation.py -v -k "readonly"
| Profile | Use Case | What’s Allowed |
|---|---|---|
read-only |
Safe demos, evaluations | View issues, search, list fields |
search-only |
JQL training | Search queries only |
issue-only |
CRUD workshops | Issue operations only |
full |
Complete testing | All 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>=2,<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
- [x] Core JIRA operations (v1.0)
- [x] Agile workflow support (v1.1)
- [x] Service Management (v1.2)
- [x] 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.
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add grandcamel/jira-assistant-skills