Skip to content

Wangggym/quick-workflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

98 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

quick-workflow

Streamlined GitHub and Jira workflow automation tools

A modern CLI tool to automate your daily GitHub PR and Jira workflow, written in Go.

πŸ’‘ Why use it

Are you tired of the hassle of changing the status every time you create a PR, such as 'code review,' 'merged,' and dealing with repetitive tasks?

Especially when you're busy and have opened multiple browser windows, waiting for pages to load just to complete these mundane tasks can be time-consuming, diverting our focus from more important matters.

Highlighted Benefits:

  • Efficiency: Streamline the process by automating status updates and repetitive tasks.
  • Time-Saving: Eliminate the need to open multiple browser tabs and wait for pages to load.
  • Enhanced Focus: Allow users to concentrate on more crucial tasks.
  • Reduced Manual Work: Minimize the need for manual status updates for each PR.
  • Standardized Workflow: Ensures a consistent and error-free process.

πŸš€ Features

  • Automated PR Creation: Create branch, commit, push, and open PR in one command
  • Jira Integration: Automatically link PRs to Jira tickets and update status
  • Smart Branch Management: Auto-detect default branch (main/master)
  • Interactive CLI: User-friendly prompts with support for cancellation (Ctrl+C)
  • One-Command Merge: Merge PR, delete branch, and update Jira status
  • Browser Integration: Auto-open PR in browser and copy URL to clipboard
  • Quick Update: Commit and push with PR title as commit message (qkflow update)
  • iCloud Sync: Automatic config sync across Mac devices (macOS only) ☁️
  • Auto Update: Automatically check and install updates (configurable) πŸ”„

Go Version Release Build Status License Platform iCloud Sync PRs Welcome

πŸ“¦ Installation

Download Binary (Recommended)

# macOS (Apple Silicon) curl -L https://github.com/Wangggym/quick-workflow/releases/latest/download/qkflow-darwin-arm64 -o qkflow chmod +x qkflow sudo mv qkflow /usr/local/bin/ # macOS (Intel) curl -L https://github.com/Wangggym/quick-workflow/releases/latest/download/qkflow-darwin-amd64 -o qkflow chmod +x qkflow sudo mv qkflow /usr/local/bin/ # Linux curl -L https://github.com/Wangggym/quick-workflow/releases/latest/download/qkflow-linux-amd64 -o qkflow chmod +x qkflow sudo mv qkflow /usr/local/bin/ # Windows (PowerShell) Invoke-WebRequest -Uri https://github.com/Wangggym/quick-workflow/releases/latest/download/qkflow-windows-amd64.exe -OutFile qkflow.exe # Move qkflow.exe to a directory in your PATH

Build from Source

git clone https://github.com/Wangggym/quick-workflow.git cd quick-workflow/go-version make gen # Initialize dependencies make build # Build binary make install # Install to GOPATH/bin

βš™οΈ Initial Setup

Run the interactive setup wizard:

qkflow init

This will prompt you for:

  • GitHub token (auto-detected from gh CLI if available)
  • GitHub owner (username or organization)
  • GitHub repository name
  • Jira URL (e.g., https://your-company.atlassian.net)
  • Jira email
  • Jira API token (Get one here)
  • Optional: OpenAI API key for AI features

Configuration Storage:

✨ NEW: On macOS, all configs are automatically saved to iCloud Drive and synced across your devices!

  • macOS with iCloud Drive: ~/Library/Mobile Documents/com~apple~CloudDocs/.qkflow/ ☁️
  • Local Storage (fallback): ~/.qkflow/

Both locations contain:

  • config.yaml - Main configuration
  • jira-status.json - Jira status mappings

Run qkflow config to see your actual storage location.

🎯 Usage

Create a Pull Request

# With Jira ticket qkflow pr create PROJ-123 # Interactive mode (will prompt for ticket) qkflow pr create

What it does:

  1. βœ… Fetches Jira issue details (if ticket provided)
  2. βœ… Prompts for PR title and description (or uses AI to generate)
  3. βœ… Creates a new git branch
  4. βœ… Commits your staged changes
  5. βœ… Pushes to remote
  6. βœ… Creates GitHub PR
  7. βœ… Adds PR link to Jira
  8. βœ… Updates Jira status
  9. βœ… Copies PR URL to clipboard

Merge a Pull Request

# Merge PR by number qkflow pr merge 123 # Interactive mode (will show your open PRs) qkflow pr merge

What it does:

  1. βœ… Fetches PR details
  2. βœ… Confirms merge with you
  3. βœ… Merges the PR on GitHub
  4. βœ… Deletes remote branch
  5. βœ… Switches to main/master branch
  6. βœ… Deletes local branch
  7. βœ… Updates Jira status
  8. βœ… Adds merge comment to Jira

Quick Update (qkupdate equivalent)

# Quick commit and push with PR title as commit message qkflow update

What it does:

  1. βœ… Gets the current PR title from GitHub
  2. βœ… Stages all changes (git add --all)
  3. βœ… Commits with PR title as commit message
  4. βœ… Pushes to origin
  5. βœ… Falls back to "update" if no PR found

Perfect for quick updates to an existing PR!

Jira Status Management

# List configured Jira status mappings qkflow jira list # Setup status mapping for a project qkflow jira setup PROJ # Delete status mapping qkflow jira delete PROJ

Other Commands

# Show current configuration and storage location qkflow config # Update qkflow to latest version qkflow update-cli # Show version qkflow version # Get help qkflow help qkflow pr --help qkflow jira --help

πŸ”§ Configuration

Configuration is stored in ~/.qkflow/config.yaml (or iCloud on macOS):

email: your.email@example.com github_token: ghp_your_github_token github_owner: your-username github_repo: your-repo jira_api_token: your_jira_token jira_service_address: https://your-domain.atlassian.net jira_email: your.email@example.com branch_prefix: feature # optional openai_key: sk-your_openai_key # optional deepseek_key: sk-your_deepseek_key # optional

You can also use environment variables:

  • GITHUB_TOKEN
  • JIRA_API_TOKEN
  • JIRA_URL
  • OPENAI_API_KEY
  • DEEPSEEK_API_KEY

πŸ› οΈ Development

cd go-version # Initialize dependencies make gen # Format and fix code make fix # Run linters make check # Run tests make test # Build make build # Build for all platforms make build-all # Install to system make install # Clean build artifacts make clean # Show all commands make help

πŸš€ Release

# Check and prepare for release make release VERSION=v1.0.1 # Create and push tag (triggers CI/CD) git tag -a v1.0.1 -m "Release v1.0.1" git push origin v1.0.1

GitHub Actions will automatically:

  • Run tests
  • Build binaries for all platforms
  • Create a GitHub Release
  • Upload all binaries

πŸ“š Documentation

✨ Why qkflow?

Before qkflow:

git checkout -b feature/my-feature git add . git commit -m "Add feature" git push origin feature/my-feature gh pr create --title "Add feature" --body "Description..." # Open Jira, find ticket, add PR link, update status...

With qkflow:

qkflow pr create PROJ-123 # Done! ✨

πŸ”’ Security

  • Tokens are stored securely with file permissions 0600
  • iCloud storage is encrypted and secure
  • Never commit config files
  • Use environment variables for CI/CD

🀝 Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ“ž Support


Made with ❀️ by @Wangggym

⭐ Star this repo if you find it useful!

About

Two quick commands for streamlined workflow based on jira-cli and github-cli

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors