PHPackages                             mi-lopez/jira-cli-wizard - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. mi-lopez/jira-cli-wizard

ActiveLibrary[CLI &amp; Console](/categories/cli)

mi-lopez/jira-cli-wizard
========================

A beautiful CLI wizard for creating Jira tickets with interactive prompts and smart defaults

v1.2.0(1w ago)0123MITPHPPHP ^8.1CI passing

Since Jul 4Pushed 1w agoCompare

[ Source](https://github.com/mi-lopez/jira-cli-wizard)[ Packagist](https://packagist.org/packages/mi-lopez/jira-cli-wizard)[ Docs](https://github.com/mi-lopez/jira-cli-wizard)[ RSS](/packages/mi-lopez-jira-cli-wizard/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (4)Dependencies (21)Versions (7)Used By (0)

🎯 Jira CLI Wizard
=================

[](#-jira-cli-wizard)

[![CI](https://github.com/mi-lopez/jira-cli-wizard/actions/workflows/ci.yml/badge.svg)](https://github.com/mi-lopez/jira-cli-wizard/actions/workflows/ci.yml)[![PHP Version](https://camo.githubusercontent.com/cc9cdea9aa96b40a822425e981b0a030e3371202973c7d57b74e8e99834f81dc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253545382e312d626c7565)](https://php.net)[![License](https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e)](LICENSE)[![Latest Version](https://camo.githubusercontent.com/8799d8eff2c6d6038b1674f5971bc903f93acc1cd1174db033675f834fcc7ea7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d312e302e302d6f72616e6765)](https://github.com/mi-lopez/jira-cli-wizard/releases)

A beautiful, interactive CLI wizard for creating Jira tickets with smart defaults and an intuitive user experience. Skip the web interface hassle and create tickets directly from your terminal!

✨ Features
----------

[](#-features)

- 🧙‍♂️ **Interactive Wizard**: Step-by-step guided ticket creation
- 🤖 **Non-Interactive Mode**: Create tickets from scripts and AI agents using flags
- 🎯 **Smart Defaults**: Suggests active sprints, recent epics, and assignees
- 🚀 **Quick Creation**: Create tickets based on existing ones
- ✏️ **Update Command**: Modify fields on existing tickets, interactively or by flag
- 📎 **Attachments**: Upload files and screenshots on create, create-from and update
- 📝 **Markdown Descriptions**: Headings, lists, bold, italic, code and links render as real Jira ADF
- 🏷️ **Labels**: Prompted in the wizard, prefilled from the template when copying a ticket
- 🔄 **Template System**: Copy settings from existing tickets
- 🔍 **Resource Discovery**: List projects, issue types, priorities, epics, and sprints as JSON
- 🧪 **Dry Run**: Preview the full payload before creating any ticket
- 🔒 **Secure**: API token-based authentication
- 🎨 **Beautiful UI**: Colorful, user-friendly terminal interface
- ⚡ **Fast Setup**: One-command configuration
- 📋 **Complete Support**: Projects, issue types, priorities, assignees, sprints, and epics
- 🔗 **Epic Linking**: Automatically link tickets to epics
- 🏃 **Sprint Integration**: Add tickets to active sprints
- 📊 **Status Monitoring**: Check configuration and connection status
- 🔍 **Smart Search**: Find projects, users, and issue types by name or partial match

🚀 Quick Start
-------------

[](#-quick-start)

### Installation

[](#installation)

```
composer require mi-lopez/jira-cli-wizard --dev
```

### Configuration

[](#configuration)

Configure your Jira credentials (one-time setup):

```
./vendor/bin/jira-wizard configure
```

You'll need:

- Your Jira instance URL (e.g., `https://yourcompany.atlassian.net`)
- Your email address
- An API token ([generate here](https://id.atlassian.com/manage-profile/security/api-tokens))

### Create Your First Ticket

[](#create-your-first-ticket)

```
./vendor/bin/jira-wizard create
```

The wizard will guide you through:

1. **Project Selection** - Choose from your accessible projects
2. **Issue Type** - Select Story, Bug, Task, etc.
3. **Summary** - Enter a descriptive title
4. **Description** - Add details (optional)
5. **Priority** - Set importance level
6. **Assignee** - Assign to team members or leave unassigned
7. **Additional Options** - Link to epics, add to active sprint

🔥 Power Features
----------------

[](#-power-features)

### Create from Existing Ticket

[](#create-from-existing-ticket)

The fastest way to create similar tickets:

```
# Copy all settings from an existing ticket
./vendor/bin/jira-wizard create-from CAM-1106

# Copy to a different project
./vendor/bin/jira-wizard create-from CAM-1106 --project TRIGB2B
```

**What gets copied:**

- ✅ Project (or override with `--project`)
- ✅ Issue type
- ✅ Priority
- ✅ Assignee
- ✅ Epic (if linked)
- ✅ Sprint (current active sprint)

**What you provide:**

- ✅ New summary
- ✅ New description
- ✅ Optional: modify any copied settings

📖 Usage Examples
----------------

[](#-usage-examples)

### Standard Ticket Creation

[](#standard-ticket-creation)

```
$ ./vendor/bin/jira-wizard create

🎯 Jira CLI Wizard
==================

✅ Connected to Jira successfully!

[1/7] Select Project
--------------------
Available projects:
  [0] PROJ - My Project
  [1] DEV - Development Team
  [2] CAM - CAMEL NETWORKS - OroCommerce project
> 2

[2/7] Select Issue Type
-----------------------
Available issue types:
  [0] Tarea - Un trabajo pequeño e independiente
  [1] Historia - Una función o funcionalidad expresada como objetivo del usuario
  [2] Error - Un problema o error
> 1

[3/7] Enter Summary
-------------------
Enter ticket summary: Implement user authentication system

[4/7] Enter Description
-----------------------
Enter description (optional): Add JWT-based authentication with login/logout functionality

[5/7] Select Priority
---------------------
Available priorities:
  [skip] Skip (use default)
  [0] Highest
  [1] High
  [2] Medium
> 1

[6/7] Select Assignee
--------------------
Available assignees:
  [unassigned] Unassigned
  [0] John Doe
  [1] Jane Smith
  [2] Miguel Lopez
> 2

[7/7] Additional Options
-----------------------
🏃 Sprint Options
Add to active sprint 'Sprint 23'? (y/N): y
✅ Will add to sprint: Sprint 23

📚 Epic Options
Select epic (optional):
  [skip] Skip (no epic)
  [0] CAM-1037 - Oro 6.1 Upgrade
  [1] CAM-761 - MVP3 Distributor Quote
> 0

📋 Ticket Summary
================
📁 Project: CAM - CAMEL NETWORKS - OroCommerce project
🎯 Type: Historia
📝 Summary: Implement user authentication system
📄 Description: Add JWT-based authentication with login/logout functionality
⚡ Priority: High
👤 Assignee: Miguel Lopez
🏃 Sprint: Sprint 23
📚 Epic: CAM-1037

🤔 Create this ticket? (y/N): y

🚀 Creating ticket...
✅ Ticket created successfully!
📝 Issue Key: CAM-1107
🔗 URL: https://yourcompany.atlassian.net/browse/CAM-1107
📋 Adding to sprint...
✅ Added to sprint!
```

### Quick Template Creation

[](#quick-template-creation)

```
$ ./vendor/bin/jira-wizard create-from CAM-1106

📋 Original Ticket Template
============================
📁 Project: CAM - CAMEL NETWORKS - OroCommerce project
🎯 Type: Tarea
📝 Summary: Test from API
⚡ Priority: Medium
👤 Assignee: Miguel Lopez
🏃 Sprint: CAMEL Sprint 18
📚 Epic: CAM-1037 - Oro 6.1 Upgrade

🎯 Create New Ticket
====================
📁 Project: CAM - CAMEL NETWORKS - OroCommerce project

📝 Enter new ticket summary: Fix login validation bug
📄 Enter description (optional): Users cannot login with special characters in password
🔧 Do you want to modify the copied settings? (y/N): n

📋 New Ticket Summary
=====================
📁 Project: CAM - CAMEL NETWORKS - OroCommerce project
🎯 Type: Tarea
📝 Summary: Fix login validation bug
📄 Description: Users cannot login with special characters in password
⚡ Priority: Medium
👤 Assignee: Miguel Lopez
🏃 Sprint: CAMEL Sprint 18
📚 Epic: CAM-1037

🤔 Create this ticket? (y/N): y

🚀 Creating ticket...
✅ Ticket created successfully!
📝 Issue Key: CAM-1108
🔗 URL: https://yourcompany.atlassian.net/browse/CAM-1108
📋 Adding to sprint...
✅ Added to sprint!
```

### Cross-Project Template

[](#cross-project-template)

```
$ ./vendor/bin/jira-wizard create-from CAM-1106 --project TRIGB2B

📋 Original Ticket Template
============================
📁 Project: CAM - CAMEL NETWORKS - OroCommerce project
🎯 Type: Tarea
📝 Summary: Test from API
⚡ Priority: Medium
👤 Assignee: Miguel Lopez

🎯 Create New Ticket
====================
📁 Project: TRIGB2B - TRIGANO - B2B - Projet OroCommerce

📝 Enter new ticket summary: Implement similar API feature
📄 Enter description (optional): Port the API functionality to TRIGB2B project
🔧 Do you want to modify the copied settings? (y/N): y

⚡ Change priority? (y/N): y
Available priorities:
  [skip] Skip (use default)
  [0] Highest
  [1] High
  [2] Medium
> 1

👤 Change assignee? (y/N): n

🚀 Creating ticket...
✅ Ticket created successfully!
📝 Issue Key: TRIGB2B-456
```

🛠️ Available Commands
---------------------

[](#️-available-commands)

### Create Ticket (Interactive)

[](#create-ticket-interactive)

```
./vendor/bin/jira-wizard create
# or simply:
./vendor/bin/jira-wizard
```

Full interactive wizard for creating tickets from scratch.

### Create Ticket (Non-Interactive)

[](#create-ticket-non-interactive)

Skip the wizard entirely by passing flags. Outputs only the issue key to stdout — ideal for scripts and AI agents.

```
./vendor/bin/jira-wizard create \
  --project=ALDO \
  --type=Task \
  --summary="Upgrade bundle X for OroCommerce 6.1" \
  --description="Check breaking changes in the CHANGELOG" \
  --epic=ALDO-526 \
  --labels=upgrade,orocommerce \
  --priority=High \
  --sprint=active

# stdout: ALDO-123
```

**Available flags:**

FlagShortRequiredDescription`--project``-p`YesProject key (e.g. `ALDO`)`--type``-t`YesIssue type name (e.g. `Task`, `Story`, `Epic`)`--summary``-s`YesTicket title`--description``-d`NoTicket description`--parent`NoParent/epic key (e.g. `ALDO-10`)`--epic`NoAlias for `--parent``--labels``-l`NoComma-separated labels (e.g. `upgrade,backend`)`--priority`NoPriority name (e.g. `High`, `Medium`, `Low`)`--sprint`NoSprint ID or `active` to auto-resolve the current sprint`--assignee``-a`NoDisplay name, email, account id, or `me``--attachment`NoPath to a file to upload. Repeatable`--dry-run`NoPrint the JSON payload without creating the ticket> `--assignee` resolves by exact display name or email first, then by partial match. An ambiguous partial match is rejected with the list of candidates rather than silently picking one.
>
> `--dry-run` requires `--project`, `--type` and `--summary`. Without them it fails instead of falling through to the interactive wizard, which would create a real ticket.

**Capture the key in a script:**

```
KEY=$(./vendor/bin/jira-wizard create --project=ALDO --type=Task --summary="..." --no-interaction)
echo "Created: $KEY"
```

**Preview before creating (dry-run):**

```
./vendor/bin/jira-wizard create \
  --project=ALDO --type=Task --summary="Test" --sprint=active --dry-run
```

### Update an Existing Ticket

[](#update-an-existing-ticket)

```
# Non-interactive: only the fields you pass are touched
./vendor/bin/jira-wizard update ALDO-123 \
  --summary="New title" \
  --description="## Context\n\n- point one\n- point two" \
  --priority=High \
  --assignee=me \
  --labels=backend,upgrade \
  --sprint=active

# Interactive: current values are offered as defaults
./vendor/bin/jira-wizard update ALDO-123

# Preview without writing
./vendor/bin/jira-wizard update ALDO-123 --summary="New title" --dry-run
```

Fields accept the same values as `create`. Two update-specific conventions:

- `--assignee=unassigned` (or `none`) clears the assignee.
- `--epic=none` clears the parent link.
- An empty `--labels=` clears every label, whereas omitting the flag leaves them untouched.

### Attach Files

[](#attach-files)

Works on `create`, `create-from` and `update`. The flag is repeatable and the wizard also prompts for files:

```
./vendor/bin/jira-wizard create -p ALDO -t Bug -s "Checkout crash" \
  --attachment=screenshot.png \
  --attachment=stacktrace.log
```

Missing files are reported before anything is sent to Jira.

### Markdown in Descriptions

[](#markdown-in-descriptions)

Descriptions are converted to Jira's ADF, so markdown renders as real formatting instead of literal characters:

```
./vendor/bin/jira-wizard create -p ALDO -t Task -s "Upgrade" -d "$(cat
