jira
Manage Jira issues, projects, sprints and boards via REST API
Works with
---
name: jira
description: Manage Jira issues, projects, sprints and boards via REST API
license: MIT
---
# /jira
Connect to Jira Cloud to manage projects, issues, sprints, boards and more. Pure Ruby, zero gems — stdlib only.
## Structure
```
scripts/
├── auth.rb # Basic Auth + jira_request helper (required by all scripts)
├── check_setup.rb # Check if config exists (outputs OK or SETUP_NEEDED)
├── save_config.rb # Save and validate domain, email and API token
├── projects.rb # List projects
├── project.rb # Get project details
├── issues.rb # Search issues using JQL
├── issue.rb # Get issue details
├── create_issue.rb # Create an issue
├── update_issue.rb # Update an issue
├── transitions.rb # List available transitions for an issue
├── transition.rb # Transition an issue (change status)
├── comments.rb # List comments on an issue
├── add_comment.rb # Add a comment to an issue
├── assign.rb # Assign an issue to a user
├── boards.rb # List boards (Agile)
└── sprints.rb # List sprints for a board
```
## Setup (check before using)
```bash
ruby ~/.claude/skills/jira/scripts/check_setup.rb
```
If the output is `OK`, proceed to the Flow section.
If the output is `SETUP_NEEDED`, guide the user step by step. Present ONE step at a time, wait for the user to confirm before moving to the next.
**Step 1** — Ask the user for their Jira domain:
> What is your Jira Cloud domain?
> For example, if you access Jira at `https://mycompany.atlassian.net`, the domain is `mycompany`.
**Step 2** — Ask the user to create an API token:
> Create an API token at:
> https://id.atlassian.com/manage-profile/security/api-tokens
>
> Click **Create API token**, give it a name (e.g. "hitank"), and copy the token.
> Also confirm your Atlassian account email.
>
> Paste the email and token here.
**Step 3** — When the user provides all three values, save them:
```bash
ruby ~/.claude/skills/jira/scripts/save_config.rb 'DOMAIN' 'EMAIL' 'TOKEN'
```
If the script outputs an error, the config is invalid. Ask the user to double-check and try again.
**If setup is not complete, DO NOT proceed to the Flow. Complete all steps first.**
## Flow
The argument `$ARGUMENTS` may contain a project key or issue key.
### Step 1: List projects
```bash
ruby ~/.claude/skills/jira/scripts/projects.rb
```
Present the projects. If `$ARGUMENTS` matches a project key, use that project. Otherwise ask which project to work with.
### Step 2: Search issues
```bash
ruby ~/.claude/skills/jira/scripts/issues.rb 'project = PROJECT_KEY ORDER BY updated DESC'
```
Present the issues and ask what the user wants to do.
### Step 3: Actions
**Get issue details:**
```bash
ruby ~/.claude/skills/jira/scripts/issue.rb ISSUE_KEY
```
**Search with JQL:**
```bash
ruby ~/.claude/skills/jira/scripts/issues.rb 'project = MYPROJ AND status = "In Progress"'
ruby ~/.claude/skills/jira/scripts/issues.rb 'assignee = currentUser() ORDER BY priority DESC' --max 50
```
**Create an issue (requires user confirmation):**
Ask the user to confirm the details before creating.
```bash
ruby ~/.claude/skills/jira/scripts/create_issue.rb PROJECT_KEY "Issue summary"
ruby ~/.claude/skills/jira/scripts/create_issue.rb PROJECT_KEY "Fix login bug" --type Bug --priority High --description "Detailed description"
```
**Update an issue (requires user confirmation):**
Show current issue details first, then ask what to change.
```bash
ruby ~/.claude/skills/jira/scripts/update_issue.rb ISSUE_KEY '{"summary":"New title","priority":{"name":"High"}}'
```
**Transition an issue (requires user confirmation):**
First list available transitions, then ask which one to apply.
```bash
ruby ~/.claude/skills/jira/scripts/transitions.rb ISSUE_KEY
ruby ~/.claude/skills/jira/scripts/transition.rb ISSUE_KEY TRANSITION_ID
```
**Assign an issue (requires user confirmation):**
```bash
ruby ~/.claude/skills/jira/scripts/assign.rb ISSUE_KEY ACCOUNT_ID
ruby ~/.claude/skills/jira/scripts/assign.rb ISSUE_KEY unassign
```
**List comments:**
```bash
ruby ~/.claude/skills/jira/scripts/comments.rb ISSUE_KEY
```
**Add a comment (requires user confirmation):**
```bash
ruby ~/.claude/skills/jira/scripts/add_comment.rb ISSUE_KEY "Comment text here"
```
**List boards (Agile):**
```bash
ruby ~/.claude/skills/jira/scripts/boards.rb
```
**List sprints:**
```bash
ruby ~/.claude/skills/jira/scripts/sprints.rb BOARD_ID
ruby ~/.claude/skills/jira/scripts/sprints.rb BOARD_ID --state active
```
## Notes
- **Pure Ruby, zero gems** — stdlib only (json, net/http, uri, base64, fileutils)
- Auth via Basic Auth (email + API token)
- Config file: `~/.config/jira/config.json` (outside the repo, never commit)
- Creating, updating, transitioning, and assigning issues require explicit user confirmation
- Adding comments requires user confirmation
- Jira Cloud API v3 uses Atlassian Document Format (ADF) for descriptions and comments
- JQL (Jira Query Language) is used for searching issues
- Base URL: `https://DOMAIN.atlassian.net/rest/api/3`
- Agile URL: `https://DOMAIN.atlassian.net/rest/agile/1.0`More API Design skills
lark-event
larksuite/cli
Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via `lark-cli event consume <EventKey>` (covers IM messages/reactions/chat changes, Approval status changes, Task updates, VC meeting started/joined/ended, Minutes generated, Whiteboard updated, etc.). Use for Lark bots, real-time message processing, long-running subscribers, streaming webhook/push handlers. Supports `--max-events` / `--timeout` bounded runs and a stderr ready-marker contract — designed for AI agents running as subprocesses.
lark-contact
larksuite/cli
飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 / 签名,以及按关键词搜索当前用户可见的机器人 / 智能体(agent)。当用户提到一个名字要下一步发消息 / 排日程,或拿到 open_id 想查具体信息时使用。不负责部门树遍历、按部门列员工、组织架构图,这类需求走原生 OpenAPI。
lark-openapi-explorer
larksuite/cli
飞书/Lark 原生 OpenAPI 探索:从官方文档库中挖掘未经 CLI 封装的原生 OpenAPI 接口。当用户的需求无法被现有 lark-* skill 或 lark-cli 已注册命令满足,需要查找并调用原生飞书 OpenAPI 时使用。

