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.0.1(7mo ago)081MITPHPPHP ^8.1

Since Jul 4Pushed 7mo 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 1mo ago

READMEChangelog (1)Dependencies (7)Versions (3)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
- 🎯 **Smart Defaults**: Suggests active sprints, recent epics, and assignees
- 🚀 **Quick Creation**: Create tickets based on existing ones
- 🔄 **Template System**: Copy settings from existing tickets
- 🔒 **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 from Template

[](#create-from-template)

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

Create a new ticket using an existing ticket as a template.

**Examples:**

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

# Copy settings but create in different project
./vendor/bin/jira-wizard create-from CAM-1106 --project TRIGB2B

# Quick bug fix based on existing bug
./vendor/bin/jira-wizard create-from PROJ-123
```

### Configure Credentials

[](#configure-credentials)

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

Set up or update your Jira credentials and connection settings.

### Check Status

[](#check-status)

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

Display current configuration and test connection to Jira.

### Get Help

[](#get-help)

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

⚙️ Configuration
----------------

[](#️-configuration)

Configuration is stored in `~/.jira-cli-config.json`. You can:

- **View current config**: `./vendor/bin/jira-wizard status`
- **Reconfigure**: `./vendor/bin/jira-wizard configure`
- **Manual edit**: Edit `~/.jira-cli-config.json` directly

### Environment Variables

[](#environment-variables)

You can also set configuration via environment variables:

```
export JIRA_URL="https://yourcompany.atlassian.net"
export JIRA_EMAIL="your.email@company.com"
export JIRA_TOKEN="your-api-token"
```

🎯 Smart Features
----------------

[](#-smart-features)

### Flexible Selection

[](#flexible-selection)

All selection prompts support multiple input methods:

**Projects:**

- Number: `10` (from numbered list)
- Project key: `CAM` (exact match)
- Partial key: `CAM` (if unique)
- Project name: `CAMEL` (partial match)

**Issue Types:**

- Number: `0` (from numbered list)
- Type name: `Tarea` or `Historia`
- Partial name: `Hist` (matches Historia)

**Priorities:**

- Number: `2` (from numbered list)
- Priority name: `High` or `Medium`
- Skip: `skip` (use default)

**Assignees:**

- Number: `15` (from numbered list)
- Full name: `Miguel Lopez`
- Email: `miguel@company.com`
- Partial name: `Miguel`
- Unassigned: `unassigned`

### Smart Defaults

[](#smart-defaults)

- **Active Sprint**: Automatically suggests current active sprint
- **Recent Epics**: Shows epics ordered by last updated
- **Team Members**: Lists assignable users for the project
- **Cross-Project**: Maintains settings when copying between projects

### Error Handling

[](#error-handling)

- **Connection Testing**: Validates credentials before use
- **Graceful Fallbacks**: Continues even if optional features fail
- **Clear Messages**: Descriptive error messages with solutions
- **Multiple Matches**: Shows options when partial matches are ambiguous

🔧 Requirements
--------------

[](#-requirements)

- **PHP**: ^8.1
- **Jira**: Cloud or Server with REST API access
- **Extensions**: `curl`, `json`

🎨 Advanced Usage
----------------

[](#-advanced-usage)

### Workflow Integration

[](#workflow-integration)

Create tickets as part of your development workflow:

```
# Create a bug report for current issue
./vendor/bin/jira-wizard create-from PROJ-123

# Create feature ticket based on existing epic structure
./vendor/bin/jira-wizard create-from EPIC-456 --project NEWPROJ

# Quick task creation for sprint
./vendor/bin/jira-wizard create-from SPRINT-TEMPLATE
```

### Batch Operations

[](#batch-operations)

Use shell scripting for batch operations:

```
#!/bin/bash
# Create multiple related tickets
for feature in "login" "signup" "profile"; do
    echo "Creating ticket for $feature"
    ./vendor/bin/jira-wizard create-from TEMPLATE-123 \
        --project MYPROJ \
        --summary "Implement $feature feature"
done
```

### Team Productivity

[](#team-productivity)

**Project Templates:**

- Create a "template" ticket for each project type
- Use `create-from` to maintain consistency
- Share template ticket keys with team

**Sprint Planning:**

- Clone user stories with `create-from`
- Maintain epic linkage across related tickets
- Quickly create test tickets for each feature

### Custom Fields Support

[](#custom-fields-support)

The wizard automatically handles:

- **Standard Fields**: Summary, Description, Priority, Assignee
- **Project Fields**: Issue Types, Components, Versions
- **Agile Fields**: Sprint, Epic, Story Points
- **Custom Fields**: (via template copying)

🐛 Troubleshooting
-----------------

[](#-troubleshooting)

### Common Issues

[](#common-issues)

#### Connection Failed

[](#connection-failed)

```
❌ Connection failed: Unauthorized
```

**Solution**: Check your email and API token. Regenerate token if needed.

#### No Projects Found

[](#no-projects-found)

```
No projects found or no access to projects.
```

**Solution**: Ensure your account has access to at least one Jira project.

#### Permission Denied

[](#permission-denied)

```
Failed to create issue: Forbidden
```

**Solution**: Verify you have permission to create issues in the selected project.

#### Template Ticket Not Found

[](#template-ticket-not-found)

```
❌ Ticket CAM-1106 not found or no access.
```

**Solution**: Check the ticket key and ensure you have access to view it.

#### Invalid Project Override

[](#invalid-project-override)

```
Project INVALID not found or no access.
```

**Solution**: Verify the project key exists and you have access to it.

### Debug Information

[](#debug-information)

```
# Check current status and configuration
./vendor/bin/jira-wizard status

# View detailed configuration
cat ~/.jira-cli-config.json

# Test connection manually
curl -u "email@example.com:api-token" \
  "https://yourcompany.atlassian.net/rest/api/3/myself"

# Test specific ticket access
curl -u "email@example.com:api-token" \
  "https://yourcompany.atlassian.net/rest/api/3/issue/CAM-1106"
```

### Performance Tips

[](#performance-tips)

- **Connection Caching**: The CLI tests connection once per session
- **Project Caching**: Project lists are cached during wizard execution
- **API Optimization**: Minimal API calls for better performance
- **Batch Operations**: Use templates for creating multiple similar tickets

### Getting Help

[](#getting-help)

- 📖 [Documentation](https://github.com/mi-lopez/jira-cli-wizard/wiki)
- 🐛 [Report Issues](https://github.com/mi-lopez/jira-cli-wizard/issues)
- 💬 [Discussions](https://github.com/mi-lopez/jira-cli-wizard/discussions)
- 📧 [Contact](mailto:your-email@example.com)

🧪 Development
-------------

[](#-development)

### Setup Development Environment

[](#setup-development-environment)

```
# Clone the repository
git clone https://github.com/mi-lopez/jira-cli-wizard.git
cd jira-cli-wizard

# Install dependencies
composer install

# Run tests
composer test

# Check code style
composer cs-check

# Fix code style
composer cs-fix

# Run static analysis
composer phpstan
```

### Project Structure

[](#project-structure)

```
├── bin/
│   └── jira-wizard                  # CLI entry point
├── src/
│   ├── Commands/
│   │   ├── CreateTicketCommand.php  # Main wizard command
│   │   ├── CreateFromCommand.php    # Template creation command
│   │   ├── ConfigureCommand.php     # Configuration command
│   │   └── StatusCommand.php        # Status command
│   ├── Helpers/
│   │   └── ConsoleHelper.php        # Pretty console output
│   ├── JiraApiClient.php            # Jira API integration
│   ├── ConfigManager.php            # Configuration management
│   └── Installer.php               # Post-install setup
├── tests/                           # PHPUnit tests
├── .github/
│   └── workflows/                   # GitHub Actions CI
├── composer.json                    # Package configuration
└── README.md                        # This file

```

### Running Tests

[](#running-tests)

```
# Run all tests
composer test

# Run tests with coverage
composer test-coverage

# Run specific test
./vendor/bin/phpunit tests/Unit/ConfigManagerTest.php
```

🤝 Contributing
--------------

[](#-contributing)

We welcome contributions! Please follow these steps:

1. **Fork** the repository
2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)
3. **Make** your changes
4. **Add** tests for new functionality
5. **Ensure** all tests pass (`composer test`)
6. **Check** code style (`composer cs-check`)
7. **Commit** your changes (`git commit -m 'Add amazing feature'`)
8. **Push** to the branch (`git push origin feature/amazing-feature`)
9. **Open** a Pull Request

### Code Style

[](#code-style)

This project follows PSR-12 coding standards:

```
# Check code style
composer cs-check

# Auto-fix code style issues
composer cs-fix
```

🔒 Security
----------

[](#-security)

### API Token Security

[](#api-token-security)

- API tokens are stored locally in `~/.jira-cli-config.json`
- Tokens are never logged or transmitted except to Jira
- Use file permissions to protect your config: `chmod 600 ~/.jira-cli-config.json`

### Best Practices

[](#best-practices)

- **Generate dedicated tokens**: Create a token specifically for CLI use
- **Regular rotation**: Rotate API tokens periodically
- **Minimal permissions**: Use accounts with minimal required permissions
- **Secure storage**: Keep your config file secure

📋 Roadmap
---------

[](#-roadmap)

### Version 1.1.0

[](#version-110)

- **Bulk Operations**: Create multiple tickets at once
- **Custom Templates**: Save and reuse ticket templates locally
- **Custom Fields**: Enhanced support for custom Jira fields
- **Watchers**: Add watchers to tickets during creation
- **Project Shortcuts**: Quick project selection via aliases

### Version 1.2.0

[](#version-120)

- **Comments**: Add initial comments to tickets
- **Attachments**: Upload files to tickets
- **Sub-tasks**: Create sub-tasks automatically
- **Time Tracking**: Add time estimates and logging
- **Workflows**: Support for custom workflow transitions

### Version 2.0.0

[](#version-200)

- **Multiple Instances**: Support multiple Jira instances
- **Plugins**: Plugin system for extensions
- **GUI Mode**: Optional web interface
- **AI Integration**: AI-powered descriptions and summaries
- **Git Integration**: Create tickets from git commits/branches

📊 Performance
-------------

[](#-performance)

- **Cold start**: ~200ms (first run after configuration)
- **Warm start**: ~100ms (subsequent runs)
- **Template operations**: ~150ms (including API calls)
- **API calls**: Optimized to minimize requests
- **Memory usage**: ~12MB typical usage

🌟 Star History
--------------

[](#-star-history)

If this tool saves you time, please consider giving it a star! ⭐

📄 License
---------

[](#-license)

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

🙏 Acknowledgments
-----------------

[](#-acknowledgments)

- **Atlassian**: For providing the excellent Jira REST API
- **Symfony Console**: For the powerful CLI framework
- **Guzzle HTTP**: For reliable HTTP client functionality
- **Contributors**: All the amazing people who help improve this tool

📈 Changelog
-----------

[](#-changelog)

### \[1.0.0\] - 2025-07-03

[](#100---2025-07-03)

- 🎉 Initial release
- ✨ Interactive ticket creation wizard
- 🔧 One-command configuration setup
- 🎯 Smart defaults for sprints and epics
- 🎨 Beautiful terminal interface
- 📊 Status and health checking
- 🔒 Secure API token authentication
- 🚀 **NEW**: Create from existing ticket templates
- 🔄 **NEW**: Cross-project ticket copying
- 🔍 **NEW**: Smart search and selection
- ⚡ **NEW**: Quick ticket creation workflows

---

**Made with ❤️ and PHP by [mi-lopez](https://github.com/mi-lopez)**

[⬆ Back to top](#-jira-cli-wizard)

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance63

Regular maintenance activity

Popularity5

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 75% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~88 days

Total

2

Last Release

224d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/955cdd3d991a7262d20e0526bf87e07f040eb5ea81b6df6b16ddb502574d6a3f?d=identicon)[mi-lopez](/maintainers/mi-lopez)

---

Top Contributors

[![mi-lopez](https://avatars.githubusercontent.com/u/15022191?v=4)](https://github.com/mi-lopez "mi-lopez (3 commits)")[![S-Tian86](https://avatars.githubusercontent.com/u/41212477?v=4)](https://github.com/S-Tian86 "S-Tian86 (1 commits)")

---

Tags

cliAgilejirawizardticketissue

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/mi-lopez-jira-cli-wizard/health.svg)

```
[![Health](https://phpackages.com/badges/mi-lopez-jira-cli-wizard/health.svg)](https://phpackages.com/packages/mi-lopez-jira-cli-wizard)
```

###  Alternatives

[laravel-zero/framework

The Laravel Zero Framework.

3371.4M369](/packages/laravel-zero-framework)[statamic/cli

Statamic CLI Tool

7587.7k](/packages/statamic-cli)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
