When to Use This Skill
- A user mentions a Jira issue key (e.g.
PROJ-123) or pastes a Jira URL and wants details
- Issue operations: view, search, create, edit, assign, move/transition, comment, link
- Sprint/board operations: list boards, list sprints, view sprint issues
- Any request mentioning Jira tickets, cards, or stories
Backend Selection
ALWAYS detect the backend before every operation:
which acli 2>/dev/null && acli jira auth status 2>/dev/null && echo "ACLI_OK" || echo "FALLBACK"
- Output contains
ACLI_OK → use acli (see ACLI.md for command reference)
- Otherwise → use Python fallback (see
PYTHON.md for command reference)
If acli is installed but acli jira auth status fails, tell the user: "acli is installed but not logged in. Run acli jira auth login to authenticate, or set ATLASSIAN_API_TOKEN for Python fallback."
Security — MANDATORY rules for AI agents
- NEVER echo, print, or log the values of
ATLASSIAN_API_TOKEN, ATLASSIAN_USER_EMAIL, ATLASSIAN_BASE_URL, JIRA_BASE_URL, CONFLUENCE_BASE_URL, or any other environment variable.
- NEVER pass token/credential values as inline CLI arguments (e.g.
echo "token" | acli jira auth login ...). Use a file or prompt the user to authenticate themselves.
- When debugging auth errors, rely solely on error messages. Do NOT attempt to verify tokens by reading or printing them.
- Do NOT read environment variable values using shell commands or programmatic access.
- NEVER extract credentials from OS credential stores or config files. Strictly forbidden:
security find-internet-password, git credential fill, cat ~/.git-credentials, cat ~/.netrc, or any command that outputs a password, token, or secret value.
- NEVER use extracted credential values in commands. Do NOT manually construct authenticated requests.
acli handles auth internally; the Python script reads from environment internally.
Workflow
- Detect backend (above)
- Determine the operation (view, search, create, transition, etc.)
- Run the appropriate command from
ACLI.md or PYTHON.md
- Present the output to the user
- For write operations, confirm success and show the resulting URL
Image Handling
When issue descriptions or comments contain screenshots or image links, retrieve and analyze them.
Detect: , plain URLs ending in .png/.jpg/.jpeg/.gif/.webp/.svg, /attachments/ paths.
Bash (macOS / Linux):
if [[ "$(uname -s)" == "Darwin" ]]; then
CACHE_ROOT="$HOME/Library/Caches/mythril-skills-cache"
else
CACHE_ROOT="${XDG_CACHE_HOME:-$HOME/.cache}/mythril-skills-cache"
fi
CACHE_DIR="$CACHE_ROOT/jira"
mkdir -p "$CACHE_DIR"
RUN_DIR=$(mktemp -d "$CACHE_DIR/XXXXXXXX")
IMAGE_CACHE="$RUN_DIR/images"
mkdir -p "$IMAGE_CACHE"
Automatic access: Files under the cache directory are skill-managed temporary artifacts. Read, write, and delete them without asking for confirmation.
Retrieve with curl -fsSL; if enterprise auth fails, retry with curl -fsSL --negotiate -u :.
Analyze images with available image-capable tools and summarize evidence relevant to the user task.
Output Expectations
For every task, provide:
- Commands executed (or planned) in code blocks
- Short result summary (issue key, status, assignee, key metadata)
- If a write operation succeeded, include the issue key and URL
- If operation fails, include exact error and recommended fix
- If images were downloaded and analyzed, include an Image Evidence Summary (source URL, what was observed, confidence/limits)
Error Handling
ACLI errors
- Not logged in: Run
acli jira auth login (or acli jira auth login --web for OAuth)
- Missing site: Include
--site "yoursite.atlassian.net" on login
- 401 Unauthorized: Session expired — re-run
acli jira auth login
- 403 Forbidden: User lacks permission for this operation
- 404 Not Found: Issue key or project doesn't exist
Python fallback errors
- Missing ATLASSIAN_API_TOKEN: The script reports the missing variable and how to set it
- Missing ATLASSIAN_BASE_URL: The script suggests passing a full URL instead
- 401 Unauthorized: Token is invalid or expired — regenerate at https://id.atlassian.com/manage-profile/security/api-tokens
- 403 Forbidden: User lacks permission for this operation
- 404 Not Found: Issue key or project doesn't exist
- 400 Bad Request: Check field names, issue types, and transition IDs
- SSL: CERTIFICATE_VERIFY_FAILED: Enterprise TLS inspection proxy interfering. Install
acli for a permanent fix, or set SSL_CERT_FILE / SSL_NO_VERIFY=1
Common errors
- Image download failed: report URL + exact HTTP/auth error; retry with enterprise SSO (
curl --negotiate -u :)
Notes
- Prefer
acli — no SSL cert issues, simpler auth. Install with brew install acli
- Python script uses only Python standard library — no
pip install needed
- Python issue commands accept both
PROJ-123 and full Jira URLs (https://.../browse/PROJ-123)
- For destructive actions, confirm intent before executing
- For advanced use cases not covered by either backend, see
API_REFERENCE.md
1---2name: jira3description: Use Atlassian CLI (`acli`) or a bundled Python script for common Jira workflows from terminal. Trigger whenever the user asks to view, create, edit, assign, move, or comment on Jira issues/epics/sprints, or says phrases like "jira issue", "jira card", "看卡", "看 jira", "jira ticket", "move ticket", "assign ticket", "sprint issues", "create jira issue", "transition issue", "search jira". Also trigger when the user mentions a Jira issue key (e.g. PROJ-123) or pastes a Jira URL and wants to interact with it. Runs with zero dependencies when using `acli`; Python 3.10+ standard library fallback otherwise.4license: Apache-2.05---67# When to Use This Skill89- A user mentions a Jira issue key (e.g. `PROJ-123`) or pastes a Jira URL and wants details10- Issue operations: view, search, create, edit, assign, move/transition, comment, link11- Sprint/board operations: list boards, list sprints, view sprint issues12- Any request mentioning Jira tickets, cards, or stories1314# Backend Selection1516**ALWAYS detect the backend before every operation:**1718```bash19which acli 2>/dev/null && acli jira auth status 2>/dev/null && echo "ACLI_OK" || echo "FALLBACK"20```2122- Output contains `ACLI_OK` → use **`acli`** (see `ACLI.md` for command reference)23- Otherwise → use **Python fallback** (see `PYTHON.md` for command reference)2425If `acli` is installed but `acli jira auth status` fails, tell the user: "acli is installed but not logged in. Run `acli jira auth login` to authenticate, or set ATLASSIAN_API_TOKEN for Python fallback."2627# Security — MANDATORY rules for AI agents28291. **NEVER echo, print, or log** the values of `ATLASSIAN_API_TOKEN`, `ATLASSIAN_USER_EMAIL`, `ATLASSIAN_BASE_URL`, `JIRA_BASE_URL`, `CONFLUENCE_BASE_URL`, or any other environment variable.302. **NEVER pass token/credential values as inline CLI arguments** (e.g. `echo "token" | acli jira auth login ...`). Use a file or prompt the user to authenticate themselves.313. **When debugging auth errors**, rely solely on error messages. Do NOT attempt to verify tokens by reading or printing them.324. **Do NOT read environment variable values** using shell commands or programmatic access.335. **NEVER extract credentials from OS credential stores or config files.** Strictly forbidden: `security find-internet-password`, `git credential fill`, `cat ~/.git-credentials`, `cat ~/.netrc`, or any command that outputs a password, token, or secret value.346. **NEVER use extracted credential values in commands.** Do NOT manually construct authenticated requests. `acli` handles auth internally; the Python script reads from environment internally.3536# Workflow37381. Detect backend (above)392. Determine the operation (view, search, create, transition, etc.)403. Run the appropriate command from `ACLI.md` or `PYTHON.md`414. Present the output to the user425. For write operations, confirm success and show the resulting URL4344# Image Handling4546When issue descriptions or comments contain screenshots or image links, retrieve and analyze them.4748Detect: ``, plain URLs ending in `.png/.jpg/.jpeg/.gif/.webp/.svg`, `/attachments/` paths.4950**Bash (macOS / Linux):**51```bash52if [[ "$(uname -s)" == "Darwin" ]]; then53 CACHE_ROOT="$HOME/Library/Caches/mythril-skills-cache"54else55 CACHE_ROOT="${XDG_CACHE_HOME:-$HOME/.cache}/mythril-skills-cache"56fi57CACHE_DIR="$CACHE_ROOT/jira"58mkdir -p "$CACHE_DIR"59RUN_DIR=$(mktemp -d "$CACHE_DIR/XXXXXXXX")60IMAGE_CACHE="$RUN_DIR/images"61mkdir -p "$IMAGE_CACHE"62```6364**Automatic access**: Files under the cache directory are skill-managed temporary artifacts. Read, write, and delete them without asking for confirmation.6566Retrieve with `curl -fsSL`; if enterprise auth fails, retry with `curl -fsSL --negotiate -u :`.6768Analyze images with available image-capable tools and summarize evidence relevant to the user task.6970# Output Expectations7172For every task, provide:73741. Commands executed (or planned) in code blocks752. Short result summary (issue key, status, assignee, key metadata)763. If a write operation succeeded, include the issue key and URL774. If operation fails, include exact error and recommended fix785. If images were downloaded and analyzed, include an **Image Evidence Summary** (source URL, what was observed, confidence/limits)7980# Error Handling8182## ACLI errors83- **Not logged in**: Run `acli jira auth login` (or `acli jira auth login --web` for OAuth)84- **Missing site**: Include `--site "yoursite.atlassian.net"` on login85- **401 Unauthorized**: Session expired — re-run `acli jira auth login`86- **403 Forbidden**: User lacks permission for this operation87- **404 Not Found**: Issue key or project doesn't exist8889## Python fallback errors90- **Missing ATLASSIAN_API_TOKEN**: The script reports the missing variable and how to set it91- **Missing ATLASSIAN_BASE_URL**: The script suggests passing a full URL instead92- **401 Unauthorized**: Token is invalid or expired — regenerate at https://id.atlassian.com/manage-profile/security/api-tokens93- **403 Forbidden**: User lacks permission for this operation94- **404 Not Found**: Issue key or project doesn't exist95- **400 Bad Request**: Check field names, issue types, and transition IDs96- **SSL: CERTIFICATE_VERIFY_FAILED**: Enterprise TLS inspection proxy interfering. Install `acli` for a permanent fix, or set `SSL_CERT_FILE` / `SSL_NO_VERIFY=1`9798## Common errors99- **Image download failed**: report URL + exact HTTP/auth error; retry with enterprise SSO (`curl --negotiate -u :`)100101# Notes102103- **Prefer `acli`** — no SSL cert issues, simpler auth. Install with `brew install acli`104- Python script uses only Python standard library — no `pip install` needed105- Python issue commands accept both `PROJ-123` and full Jira URLs (`https://.../browse/PROJ-123`)106- For destructive actions, confirm intent before executing107- For advanced use cases not covered by either backend, see `API_REFERENCE.md`