Skip to main content

jira-creator

Build Status Python License Last Commit

Create JIRA issues (stories, bugs, epics, spikes, tasks) quickly using standardized templates and optional AI-enhanced descriptions.


⚡ Quick Start (Under 30 Seconds)

🔧 1. Create your config file and enable autocomplete

Create a configuration file with your JIRA account and project details. This will include your personal access token, AI provider, API keys, JIRA URL, Project Key, Version, Component Name, Priority, and Board ID.

mkdir -p ~/.bashrc.d
cat <<EOF > ~/.bashrc.d/jira.sh
export JPAT="your_jira_personal_access_token"
export AI_PROVIDER=openai
export OPENAI_API_KEY=sk-...
export JIRA_URL="https://issues.redhat.com"
export PROJECT_KEY="AAP"
export AFFECTS_VERSION="aa-latest"
export COMPONENT_NAME="analytics-hcc-service"
export PRIORITY="Normal"
export JIRA_BOARD_ID=21125

# Enable autocomplete
eval "$(register-python-argcomplete rh-issue)"
EOF

source ~/.bashrc.d/jira.sh

Make the wrapper script executable and link it to your local bin directory. This will allow you to run the CLI tool from anywhere in your terminal.

chmod +x jira_creator/rh-issue-wrapper.sh
sudo ln -s $(pwd)/jira_creator/rh-issue-wrapper.sh /usr/local/bin/rh-issue

🏃 3. Run it

Create your first JIRA issue with the rh-issue create command.

rh-issue create story "Improve onboarding experience"

🧪 Usage & Commands

All commands should be initiated with the rh-issue prefix.

🆕 Create Issues

Create JIRA issues directly from your terminal. Replace "Issue Type" with either "story", "bug", "epic", or "spike". Use --edit to open your default terminal text editor for longer descriptions, and --dry-run to print out the payload without creating the issue.

rh-issue create bug "Fix login crash"
rh-issue create story "Refactor onboarding flow"
rh-issue create epic "Unify frontend UI" --edit
rh-issue create spike "Evaluate GraphQL support" --dry-run

🔁 Change Issue Type

Change the type of an existing issue. Replace "Issue ID" with the ID of the issue you want to change, and "New Type" with the new issue type.

rh-issue change AAP-12345 story

🔀 Migrate Issue

Migrate an issue from one project to another. Replace "Issue ID" with the ID of the issue you want to migrate, and "New Project" with the key of the project you want to migrate the issue to.

rh-issue migrate AAP-54321 story

✏️ Edit Description

Edit the description of an existing issue. Replace "Issue ID" with the ID of the issue you want to edit. Use --no-ai to disable AI enhancements when editing the description.

rh-issue edit AAP-98765
rh-issue edit AAP-98765 --no-ai

🧍 Unassign Issue

Unassign an issue from a user. Replace "Issue ID" with the ID of the issue you want to unassign.

rh-issue unassign AAP-12345

📋 List Issues

List all issues in a project. Use --project to specify a project by its key, --component to filter by component, and --user to filter by assigned user.

rh-issue list
rh-issue list --project AAP --component api --user jdoe

🏷️ Set Priority

Set the priority of an issue. Replace "Issue ID" with the ID of the issue you want to set the priority for, and "Priority" with the desired priority level.

rh-issue set-priority AAP-123 High

📅 Sprint Management

Manage sprint assignments for issues. Replace "Issue ID" with the ID of the issue you want to manage, and "Sprint ID" with the ID of the sprint you want to assign or unassign.

rh-issue set-sprint AAP-456 1234
rh-issue remove-sprint AAP-456
rh-issue add-sprint AAP-456 "Sprint 33"

🚦 Set Status

Set the status of an issue. Replace "Issue ID" with the ID of the issue you want to set the status for, and "Status" with the desired status.

rh-issue set-status AAP-123 "In Progress"

🤖 AI Provider Support

You can plug in different AI providers by setting AI_PROVIDER. Each AI provider may require additional configuration.

✅ OpenAI

export AI_PROVIDER=openai
export OPENAI_API_KEY=sk-...
export OPENAI_MODEL=gpt-4  # Optional

🖥 GPT4All

pip install gpt4all
export AI_PROVIDER=gpt4all

🧪 InstructLab

export AI_PROVIDER=instructlab
export INSTRUCTLAB_URL=http://localhost:11434/api/generate
export INSTRUCTLAB_MODEL=instructlab

🧠 BART

export AI_PROVIDER=bart
export BART_URL=http://localhost:8000/bart

🧠 DeepSeek

export AI_PROVIDER=deepseek
export DEEPSEEK_URL=http://localhost:8000/deepseek

🪫 Noop

export AI_PROVIDER=noop

🛠 Dev Setup

pipenv install --dev

Testing & Linting

make test
make lint
make format  # auto-fix formatting

⚙️ How It Works

  • jira-creator loads field definitions from .tmpl files located under the templates/ directory.
  • It uses TemplateLoader to generate Markdown descriptions.
  • Optionally, it applies AI cleanup to enhance the readability and structure of the descriptions.
  • It sends the issue to JIRA via the REST API (or prints the payload for a dry-run).

📜 License

This project is licensed under the Apache License.

Metadata

Release files for jira-creator 0.0.31

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jira-creator 0.0.31
File Size Uploaded
jira_creator-0.0.31.tar.gz 43.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jira-creator 0.0.31
File Interpreter ABI Platform
jira_creator-0.0.31-py3-none-any.whl Python 3 none any Details

Total release size: 124.3 kB

Release files / jira_creator-0.0.31.tar.gz

Download URL jira_creator-0.0.31.tar.gz
Size 43.4 kB
Tags Source
SHA-256 checksum
How to use checksums
19c1813676a8467b50c2a6183da444e6026a0e5156aa3f5f313e79d150d44cc2
BLAKE2b-256 checksum
How to use checksums
ddae241d65a5353a76d915a2efb897b9f5bcf7c1db52a45eb0f7b4f510440db5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release files / jira_creator-0.0.31-py3-none-any.whl

Download URL jira_creator-0.0.31-py3-none-any.whl
Size 80.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
04794eaa05dbc91ae0103292890d5cac411d1532843c5b574f6d133c36710e97
BLAKE2b-256 checksum
How to use checksums
9e7a97d68cc2603d5c6cad44f1ceea8e0ee08c27f9847d6520bd695179e1515b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release history Release notifications | RSS feed

1.0.14

2 release files

1.0.13

2 release files

1.0.12

2 release files

1.0.11

2 release files

1.0.9

2 release files

1.0.3

2 release files

1.0.1

2 release files

0.0.44

2 release files

0.0.43

2 release files

0.0.42

2 release files

0.0.41

2 release files

0.0.40

2 release files

0.0.39

2 release files

0.0.38

2 release files

0.0.37

2 release files

0.0.36

2 release files

0.0.32

2 release files

This release

0.0.31 This release

2 release files

0.0.30

2 release files

0.0.29

2 release files

0.0.28

2 release files

0.0.27

2 release files

0.0.26

2 release files

0.0.17

2 release files

0.0.12

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page