Skip to content

Wangggym/quick-workflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

88 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: [email protected]
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: [email protected]
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!