GitPedia

Pull Shark Automation

Automate GitHub PR creation at scale with intelligent token rotation, proxy support, and real-time notifications. Create thousands of PRs effortlessly using sequential or high-speed parallel modes (62 PRs/min). Features: multi-token management, auto-merge, state persistence, Discord/Slack webhooks, async operations, and Windows compatibility.

From itxashancodeยทUpdated June 13, 2026ยทView on GitHubยท

This tool is designed for **educational purposes** to understand GitHub automation, CI/CD workflows, and API integration. Use responsibly and in accordance with GitHub's Terms of Service. The project is written primarily in Python, distributed under the MIT License license, first published in 2026. Key topics include: async, automation, batch-processing, ci-cd, devops.

<div align="center">

๐Ÿฆˆ GitHub Pull Shark Automation

<img src="https://capsule-render.vercel.app/api?type=waving&color=gradient&customColorList=6,11,20&height=180&section=header&text=Pull%20Shark%20Automation&fontSize=42&fontAlignY=30&animation=twinkling&fontColor=fff" width="100%"/> <p align="center"> <img src="https://readme-typing-svg.demolab.com?font=Fira+Code&size=22&duration=3000&pause=1000&color=36BCF7&center=true&vCenter=true&width=600&lines=Automate+Your+GitHub+PRs;Sequential+%26+Parallel+Modes;Multi-Token+Management;Smart+Proxy+Rotation;Earn+Pull+Shark+Badge" alt="Typing Animation" /> </p> <p align="center"> <a href="#-features"><img src="https://img.shields.io/badge/Features-Explore-blue?style=for-the-badge&logo=github" alt="Features"/></a> <a href="#-installation"><img src="https://img.shields.io/badge/Install-Quick%20Start-green?style=for-the-badge&logo=python" alt="Install"/></a> <a href="#-usage"><img src="https://img.shields.io/badge/Usage-Guide-orange?style=for-the-badge&logo=readme" alt="Usage"/></a> <a href="#-contributing"><img src="https://img.shields.io/badge/Contribute-Welcome-red?style=for-the-badge&logo=git" alt="Contribute"/></a> </p> <p align="center"> <img src="https://img.shields.io/badge/Python-3.8+-blue.svg?style=for-the-badge&logo=python&logoColor=white" alt="Python"/> <img src="https://img.shields.io/badge/GitHub_CLI-Required-black.svg?style=for-the-badge&logo=github" alt="GitHub CLI"/> <img src="https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge" alt="License"/> <img src="https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey?style=for-the-badge" alt="Platform"/> </p>

โš ๏ธ Educational Purpose Only

<p align="center"> <img src="https://img.shields.io/badge/โš ๏ธ-Educational_Purpose_Only-red?style=for-the-badge" alt="Educational"/> </p>

This tool is designed for educational purposes to understand GitHub automation, CI/CD workflows, and API integration. Use responsibly and in accordance with GitHub's Terms of Service.


๐Ÿ† Earn Your Pull Shark Badge

<div align="center"> <img src="https://github.com/drknzz/GitHub-Achievements/blob/main/Media/Badges/Pull-Shark/PNG/PullShark.png" width="180" alt="Pull Shark Badge"/> <table> <tr> <td align="center"><img src="https://github.com/drknzz/GitHub-Achievements/blob/main/Media/Badges/Pull-Shark/PNG/PullShark.png" width="80"/><br/><b>Default</b><br/>2 PRs</td> <td align="center"><img src="https://github.com/drknzz/GitHub-Achievements/blob/main/Media/Badges/Pull-Shark/PNG/PullShark_Bronze.png" width="80"/><br/><b>Bronze</b><br/>16 PRs</td> <td align="center"><img src="https://github.com/drknzz/GitHub-Achievements/blob/main/Media/Badges/Pull-Shark/PNG/PullShark_Silver.png" width="80"/><br/><b>Silver</b><br/>128 PRs</td> <td align="center"><img src="https://github.com/drknzz/GitHub-Achievements/blob/main/Media/Badges/Pull-Shark/PNG/PullShark_Gold.png" width="80"/><br/><b>Gold</b><br/>1024 PRs</td> </tr> </table> </div> <p align="center"> <i>Automate PR creation and merging to unlock all achievement tiers!</i> </p> </div>
<div align="center">

๐ŸŽฏ What Is Pull Shark Automation?

<img src="https://user-images.githubusercontent.com/74038190/212284158-e840e285-664b-44d7-b79b-e264b5e54825.gif" width="400"/> </div>

A powerful Python automation framework that streamlines GitHub Pull Request workflows at scale. Perfect for developers who want to:

<div align="center">
๐ŸŽฏ Use Case๐Ÿ“Š Benefit
Batch Documentation UpdatesUpdate README files across multiple branches
Configuration ManagementApply settings changes repository-wide
CI/CD TestingStress-test your automation pipelines
Achievement HuntingEarn GitHub badges efficiently
Learning & ResearchStudy automation patterns and workflows
</div>

๐Ÿ“‘ Table of Contents

<div align="center">
๐ŸŒŸ Features๐Ÿ—๏ธ Architecture๐Ÿ“ฆ Installationโš™๏ธ Configuration
๐Ÿš€ Usage๐Ÿ”ง Componentsโšก Performance๐Ÿ” Security
๐Ÿ› Troubleshooting๐Ÿ“ˆ Optimization๐Ÿค Contributing๐Ÿ“„ License
</div>

๐ŸŒŸ Features

<div align="center"> <table> <tr> <td width="50%" valign="top">

๐ŸŽฏ Core Capabilities

<img src="https://img.shields.io/badge/Automation-Core-blue?style=flat-square" alt="Core"/>
yaml
โœ… Automated PR Creation โ””โ”€ Generate 100-10,000+ PRs โœ… Smart Auto-Merge โ””โ”€ Intelligent PR merging โœ… Dual Execution Modes โ””โ”€ Sequential & Parallel โœ… State Management โ””โ”€ Resume from interruptions โœ… Dry Run Mode โ””โ”€ Test without commits
</td> <td width="50%" valign="top">

๐Ÿ”ง Advanced Features

<img src="https://img.shields.io/badge/Advanced-Pro-green?style=flat-square" alt="Advanced"/>
yaml
โœ… Multi-Token Rotation โ””โ”€ Automatic token switching โœ… Proxy Management โ””โ”€ Built-in scraping & rotation โœ… Real-Time Notifications โ””โ”€ Discord & Slack webhooks โœ… Rate Limit Handling โ””โ”€ Smart API throttling โœ… Exponential Backoff โ””โ”€ Intelligent retry logic
</td> </tr> </table> </div>

๐ŸŽฌ How It Works

<div align="center">
mermaid
%%{init: {'theme':'dark','themeVariables': {'primaryColor':'#ff6b6b','primaryTextColor':'#fff','primaryBorderColor':'#ff6b6b','lineColor':'#4ecdc4','secondaryColor':'#ffe66d','tertiaryColor':'#a8dadc'}}}%% graph TB Start([๐Ÿš€ Start Automation]) --> Config[๐Ÿ“‹ Load Configuration] Config --> Mode{๐Ÿ”€ Choose Mode} Mode -->|Sequential| Seq[๐Ÿ“ main.py<br/>Single Thread] Mode -->|Parallel| Par[โšก parallel_automation.py<br/>Multi-Thread] Seq --> Git[๐Ÿ”ง Git Operations] Par --> Git Git --> Branch[๐ŸŒฟ Create Branch] Branch --> Commit[๐Ÿ’พ Commit Changes] Commit --> Push[๐Ÿ“ค Push to Remote] Push --> PR[๐ŸŽฏ Create PR] PR --> AutoMerge{๐Ÿค– Auto-merge?} AutoMerge -->|Yes| Merge[โœ… Merge PR] AutoMerge -->|No| Next{๐Ÿ“Š More PRs?} Merge --> Next Next -->|Yes| Git Next -->|No| Notify[๐Ÿ“ข Send Notifications] Notify --> End([๐ŸŽ‰ Complete!]) style Start fill:#2ecc71,stroke:#27ae60,stroke-width:3px,color:#fff style End fill:#e74c3c,stroke:#c0392b,stroke-width:3px,color:#fff style PR fill:#3498db,stroke:#2980b9,stroke-width:2px,color:#fff style Merge fill:#f39c12,stroke:#e67e22,stroke-width:2px,color:#fff
</div>

๐Ÿ—๏ธ Architecture

<div align="center">

System Design Overview

<img src="https://img.shields.io/badge/Architecture-Microservices-blueviolet?style=for-the-badge&logo=architecture" alt="Architecture"/>
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    ๐Ÿฆˆ Pull Shark Automation                      โ”‚
โ”‚                     Core Orchestration Layer                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                โ”‚
                โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                โ”‚                               โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”            โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚  ๐Ÿ“ Sequential โ”‚            โ”‚  โšก Parallel   โ”‚
        โ”‚    main.py     โ”‚            โ”‚ parallel_*.py  โ”‚
        โ”‚   Reliable     โ”‚            โ”‚   Fast & Async โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜            โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                โ”‚                              โ”‚
                โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                               โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚                      โ”‚                      โ”‚
   โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”
   โ”‚ ๐Ÿ”ง Git   โ”‚         โ”‚ ๐Ÿ™ GitHubโ”‚         โ”‚ ๐Ÿ”‘ Token   โ”‚
   โ”‚ Manager  โ”‚         โ”‚   Tool   โ”‚         โ”‚  Manager   โ”‚
   โ”‚ Ops      โ”‚         โ”‚ API Wrap โ”‚         โ”‚  Rotation  โ”‚
   โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜
        โ”‚                     โ”‚                      โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚                     โ”‚                     โ”‚
   โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”
   โ”‚ ๐ŸŒ Proxy โ”‚         โ”‚ ๐Ÿ“ข Notifyโ”‚         โ”‚ ๐Ÿ“ Loggerโ”‚
   โ”‚ Rotation โ”‚         โ”‚ Webhooks โ”‚         โ”‚  System  โ”‚
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
</div>

๐Ÿ”‘ Component Matrix

<div align="center">
ComponentRolePerformanceFeatures
main.py๐Ÿ“ Sequentialโญโญโญโญโญ StableSingle-thread, persistent
parallel_automation.pyโšก Parallelโญโญโญโญโญ FastMulti-thread, async
git_manager.py๐Ÿ”ง Git OpsโญโญโญโญBranch, commit, push
github_tool.py๐Ÿ™ APIโญโญโญโญPR create/merge, limits
token_manager.py๐Ÿ”‘ TokensโญโญโญโญโญMulti-token rotation
proxy_manager.py๐ŸŒ ProxiesโญโญโญScraping & rotation
notifier.py๐Ÿ“ข AlertsโญโญโญโญDiscord & Slack
logger.py๐Ÿ“ LogsโญโญโญโญโญFile & console
</div>

๐Ÿ“ฆ Installation

<div align="center">

๐Ÿš€ Quick Start Guide

<img src="https://img.shields.io/badge/Setup_Time-5_Minutes-brightgreen?style=for-the-badge" alt="Setup Time"/> </div>

Prerequisites Checklist

bash
โœ… Python 3.8 or higher โœ… Git 2.0 or higher โœ… GitHub CLI (gh) โœ… Active GitHub account โœ… Write access to target repository

Step 1๏ธโƒฃ: Clone Repository

<details open> <summary><b>๐Ÿ“ฅ Download the Code</b></summary>
bash
# Clone via HTTPS git clone https://github.com/itxashancode/Pull-Shark-Automation.git # Or clone via SSH git clone git@github.com:itxashancode/Pull-Shark-Automation.git # Navigate to directory cd Pull-Shark-Automation
</details>

Step 2๏ธโƒฃ: Install Dependencies

<details open> <summary><b>๐Ÿ Python Packages</b></summary>
bash
# Install all required packages pip install -r requirements.txt # Or use pip3 on some systems pip3 install -r requirements.txt

๐Ÿ“ฆ What Gets Installed:

PackagePurposeVersion
requestsHTTP/API callsโ‰ฅ2.28.0
aiohttpAsync HTTP clientโ‰ฅ3.8.5
aiofilesAsync file operationsโ‰ฅ23.1.0
gitpythonGit automationโ‰ฅ3.1.31
beautifulsoup4HTML parsingโ‰ฅ4.12.0
coloramaTerminal colorsโ‰ฅ0.4.6
scheduleTask schedulingโ‰ฅ1.2.0
</details>

Step 3๏ธโƒฃ: Install GitHub CLI

<details> <summary><b>๐ŸŽ macOS Installation</b></summary>
bash
# Using Homebrew brew install gh # Verify installation gh --version
</details> <details> <summary><b>๐Ÿง Linux Installation</b></summary>
bash
# Debian/Ubuntu curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | \ sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | \ sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null sudo apt update sudo apt install gh -y # Fedora/RHEL/CentOS sudo dnf install gh -y # Arch Linux sudo pacman -S github-cli # Verify installation gh --version
</details> <details> <summary><b>๐ŸชŸ Windows Installation</b></summary>
powershell
# Using winget winget install --id GitHub.cli # Or using Chocolatey choco install gh # Or using Scoop scoop install gh # Verify installation gh --version
</details>

Step 4๏ธโƒฃ: Authenticate GitHub

<details open> <summary><b>๐Ÿ” Login to GitHub</b></summary>
bash
# Start authentication gh auth login # Follow the interactive prompts: # 1. Choose: GitHub.com # 2. Protocol: HTTPS # 3. Authenticate Git: Yes # 4. Method: Login with a web browser # Verify authentication gh auth status

Expected Output:

โœ“ Logged in to github.com as YourUsername
โœ“ Git operations for github.com configured to use https protocol.
โœ“ Token: *******************
</details>
<div align="center">

โœ… Installation Complete!

<img src="https://user-images.githubusercontent.com/74038190/212284100-561aa473-3905-4a80-b561-0d28506553ee.gif" width="600"/>

Ready to configure? Proceed to โš™๏ธ Configuration

</div>

โš™๏ธ Configuration

<div align="center">

๐ŸŽ›๏ธ Setup Your Automation

<img src="https://img.shields.io/badge/Configuration-3_Files-orange?style=for-the-badge" alt="Config"/> </div>

๐Ÿ“‹ File 1: Main Config (config.json)

json
{ "repo_path": ".", "base_branch": "main", "readme_file": "README.md", "pr_count": 2000, "delay_seconds": 30, "auto_merge": true, "dry_run": false, "max_retries": 3, "use_free_proxies": true, "max_concurrent": 10, "discord_webhook": "https://discord.com/api/webhooks/YOUR_WEBHOOK_HERE", "slack_webhook": "https://hooks.slack.com/services/YOUR_WEBHOOK_HERE" }
<details> <summary><b>๐Ÿ“– Configuration Reference</b></summary>
ParameterTypeDefaultDescription
repo_pathstring"."Path to your Git repository
base_branchstring"main"Target branch for PRs
readme_filestring"README.md"File to modify in each commit
pr_countinteger2000Total PRs to create
delay_secondsinteger30Wait time between PRs (sequential)
auto_mergebooleantrueAutomatically merge created PRs
dry_runbooleanfalseTest mode (no actual changes)
max_retriesinteger3Retry attempts on failure
use_free_proxiesbooleantrueEnable proxy rotation
max_concurrentinteger10Parallel workers (parallel mode)
discord_webhookstring""Discord notification URL
slack_webhookstring""Slack notification URL
</details>

๐Ÿ”‘ File 2: GitHub Tokens (github_tokens.json)

json
{ "tokens": [ { "name": "Primary Token", "token": "github_pat_11XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }, { "name": "Secondary Token", "token": "github_pat_11XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }, { "name": "Backup Token", "token": "github_pat_11XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" } ] }
<details> <summary><b>๐Ÿ” How to Generate GitHub Tokens</b></summary>

Step-by-Step Guide:

  1. Navigate to GitHub Settings

    • Click your profile โ†’ Settings
    • Developer settings โ†’ Personal access tokens โ†’ Tokens (classic)
  2. Generate New Token

    • Click "Generate new token (classic)"
    • Name: Pull Shark Automation
    • Expiration: 90 days (recommended)
  3. Select Required Scopes โœ…

    • โ˜‘๏ธ repo - Full control of private repositories
    • โ˜‘๏ธ workflow - Update GitHub Action workflows
    • โ˜‘๏ธ write:packages - Upload packages
  4. Generate & Copy Token

    • Click "Generate token"
    • โš ๏ธ Copy immediately (shown only once!)
    • Add to github_tokens.json

๐Ÿ“Š Rate Limits:

  • Single token: 5,000 requests/hour
  • Multiple tokens: Rotates automatically for 15,000+/hour

๐Ÿ”’ Security Tips:

  • Never commit tokens to Git
  • Rotate every 30-90 days
  • Use fine-grained tokens when possible
  • Enable 2FA on your account
</details>

๐ŸŒ File 3: Proxies (proxies.txt)

text
# Free HTTPS proxies (ip:port format) 8.219.97.248:9090 47.91.34.69:3128 161.35.70.249:8080 165.227.196.37:3128 64.225.4.5:9999 # Authenticated proxies (protocol://user:pass@ip:port) http://username:password@proxy.example.com:8080 socks5://admin:secret@10.0.0.1:1080
<details> <summary><b>๐Ÿ” Finding & Testing Proxies</b></summary>

๐ŸŒ Free Proxy Sources:

๐Ÿงช Test Proxies:

bash
# Test single proxy curl -x http://8.219.97.248:9090 https://api.github.com/ # Test with timeout curl -x http://proxy:port --max-time 5 https://api.github.com/

โš ๏ธ Proxy Reliability:

TypeReliabilitySpeedCost
Freeโญโญ LowSlow$0
Paidโญโญโญโญโญ HighFast$10-50/mo
Premiumโญโญโญโญโญ Very HighVery Fast$50-200/mo

๐Ÿ’ฐ Recommended Paid Services:

  1. Bright Data - Enterprise grade
  2. Smartproxy - Good balance
  3. Oxylabs - Large pool
  4. Proxy-Cheap - Budget friendly
</details>

๐Ÿ”” Optional: Webhook Setup

<details> <summary><b>๐Ÿ’ฌ Discord Webhook</b></summary>

Setup Steps:

  1. Open Discord server
  2. Server Settings โ†’ Integrations โ†’ Webhooks
  3. Click "New Webhook"
  4. Set name: GitHub Bot or similar
  5. Choose target channel
  6. Click "Copy Webhook URL"
  7. Paste into config.json

Webhook Format:

https://discord.com/api/webhooks/1234567890/ABCDEFGHIJKLMNOPQRSTUVWXYZ

Test Webhook:

bash
curl -X POST "YOUR_WEBHOOK_URL" \ -H "Content-Type: application/json" \ -d '{"content": "Test message from Pull Shark!"}'
</details> <details> <summary><b>๐Ÿ’ผ Slack Webhook</b></summary>

Setup Steps:

  1. Go to api.slack.com/apps
  2. Create New App โ†’ From scratch
  3. App Name: GitHub Automation
  4. Select workspace
  5. Incoming Webhooks โ†’ Activate
  6. Add New Webhook to Workspace
  7. Select channel
  8. Copy webhook URL
  9. Paste into config.json

Webhook Format:

https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXX

Test Webhook:

bash
curl -X POST "YOUR_WEBHOOK_URL" \ -H "Content-Type: application/json" \ -d '{"text": "Test from Pull Shark!"}'
</details>
<div align="center">

โœ… Configuration Complete!

<img src="https://img.shields.io/badge/Status-Ready_to_Run-success?style=for-the-badge" alt="Ready"/>

Next: ๐Ÿš€ Usage Guide

</div>

๐Ÿš€ Usage

<div align="center">

๐ŸŽฎ Command Center

<img src="https://user-images.githubusercontent.com/74038190/212284136-03988914-d899-44b4-b1d9-4eeccf656e44.gif" width="500"/> </div>

๐Ÿ Quick Start Commands

bash
# 1๏ธโƒฃ Basic sequential run python main.py # 2๏ธโƒฃ Fast parallel mode (recommended) python parallel_automation.py --count 100 --concurrent 10 # 3๏ธโƒฃ Test without creating PRs python main.py --dry-run # 4๏ธโƒฃ Custom PR count python main.py --count 500 # 5๏ธโƒฃ Resume after interruption python main.py # Auto-resumes from state.json

๐Ÿ“˜ Sequential Mode (main.py)

<div align="center">
bash
python main.py [OPTIONS]
<img src="https://img.shields.io/badge/Mode-Sequential-blue?style=for-the-badge" alt="Sequential"/>

โญ Best For: Reliability, debugging, small batches (<500 PRs)

</div>
OptionDescriptionExample
--count NOverride PR countpython main.py --count 200
--delay NSeconds between PRspython main.py --delay 60
--dry-runTest mode (no commits)python main.py --dry-run
--no-mergeDisable auto-mergepython main.py --no-merge
--resetStart from PR #1python main.py --reset
--use-proxiesEnable proxy rotationpython main.py --use-proxies

๐Ÿ“Š Example Output:

๐Ÿš€ Starting from PR #1
โฑ๏ธ  Delay: 30 seconds

๐Ÿ”น Processing PR #1
  โ”œโ”€ ๐ŸŒฟ Created branch: automation-1-a1b2c3d4
  โ”œโ”€ ๐Ÿ’พ Committed changes
  โ”œโ”€ ๐Ÿ“ค Pushed to remote
  โ””โ”€ โœ… PR #12345 created successfully

โœ… PR #12345 merged successfully
โฑ๏ธ  Waiting 30 seconds...

๐Ÿ”น Processing PR #2
...

โšก Parallel Mode (parallel_automation.py)

<div align="center">
bash
python parallel_automation.py [OPTIONS]
<img src="https://img.shields.io/badge/Mode-Parallel-red?style=for-the-badge" alt="Parallel"/>

โญ Best For: Speed, large batches (500-10,000 PRs)

</div>
OptionDescriptionExample
--count NNumber of PRs--count 1000
--concurrent NParallel workers--concurrent 20
--start NStarting PR number--start 100
--no-proxyDisable proxies--no-proxy
--dry-runTest mode--dry-run

๐Ÿ“Š Example Output:

๐Ÿš€ Initializing parallel automation...
๐Ÿ“‹ Loaded 3 GitHub tokens
๐Ÿ” Fetching proxies...
  ๐Ÿ“ฆ Total unique proxies collected: 342
  โœ… Working proxies: 87

๐Ÿš€ Starting parallel automation

๐Ÿ“ˆ Progress: 134/200 PRs
   โœ“ Success: 130
   โœ— Failed: 4
   โšก Speed: 45.2 PRs/min

๐ŸŽ‰ Automation Complete!
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
Total: 200 PRs
โœ… Success: 196 (98%)
โŒ Failed: 4 (2%)
โšก Speed: 43.8 PRs/min
โฑ๏ธ Time: 4 minutes 34 seconds
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

๐Ÿ“š Usage Examples

<details> <summary><b>Example 1: First-Time Setup (Bronze Badge)</b></summary>

Goal: Earn Bronze Pull Shark Badge (16 PRs)

bash
# Test with dry run first python main.py --count 20 --dry-run # Run actual automation python main.py --count 20 --delay 15 # Expected time: ~5 minutes

Output:

๐Ÿš€ Starting from PR #1
โฑ๏ธ  Delay: 15 seconds

โœ… PR #1-20 created successfully
๐ŸŽ‰ Bronze Pull Shark Badge unlocked!
</details> <details> <summary><b>Example 2: Silver Badge (Parallel Mode)</b></summary>

Goal: Earn Silver Pull Shark Badge (128 PRs)

bash
# High-speed parallel mode python parallel_automation.py --count 150 --concurrent 15 # Expected time: ~3-5 minutes

Output:

๐Ÿš€ Starting parallel automation

๐Ÿ“ˆ 150/150 โœ“ 147 โœ— 3 โšก 42.5 PRs/min

๐ŸŽ‰ Silver Pull Shark Badge unlocked!
โฑ๏ธ Completed in 3 minutes 32 seconds
</details> <details> <summary><b>Example 3: Gold Badge (Maximum Speed)</b></summary>

Goal: Earn Gold Pull Shark Badge (1024 PRs)

bash
# Ultra-fast mode with 20 workers python parallel_automation.py \ --count 1024 \ --concurrent 20 # Expected time: ~16-20 minutes with 3 tokens

Output:

๐Ÿš€ Initializing parallel automation...
๐Ÿ“‹ Loaded 3 tokens
๐ŸŒ Working proxies: 87

๐Ÿ“ˆ 1024/1024 โœ“ 982 โœ— 42 โšก 62.5 PRs/min

๐ŸŽ‰๐ŸŽ‰๐ŸŽ‰ GOLD PULL SHARK UNLOCKED! ๐ŸŽ‰๐ŸŽ‰๐ŸŽ‰
โฑ๏ธ Completed in 16 minutes 23 seconds
</details> <details> <summary><b>Example 4: Resume After Interruption</b></summary>

Scenario: Process interrupted at PR #350

bash
# Check current state cat state.json # Output: {"last_completed_pr": 350} # Resume from PR #351 python main.py --count 500 # Automatically continues from #351

Output:

๐Ÿ”„ Resuming from PR #351 (found state.json)
โฑ๏ธ  Remaining: 150 PRs

๐Ÿ”น Processing PR #351
...
</details> <details> <summary><b>Example 5: Dry Run Testing</b></summary>

Goal: Test configuration without creating PRs

bash
python main.py --count 5 --dry-run

Output:

๐Ÿ” DRY RUN MODE - No actual commits

๐Ÿ”น PR #1 Simulation
  ๐Ÿ“ Would create branch: automation-1-abc123
  ๐Ÿ“ Would modify: README.md
  ๐Ÿ“ Would commit: "Automated update #1"
  ๐Ÿ“ Would push to: origin/automation-1-abc123
  ๐Ÿ“ Would create PR with title: "Automated PR #1"
  โœ… Simulation successful

๐Ÿ”น PR #2 Simulation
...

โœ… All 5 PRs simulated successfully
</details>
<div align="center">

๐Ÿ’ก Pro Tips

<table> <tr> <td>๐ŸŽฏ <b>Tip 1</b></td> <td>Start with <code>--dry-run</code> to test your configuration</td> </tr> <tr> <td>โšก <b>Tip 2</b></td> <td>Use parallel mode with multiple tokens for maximum speed</td> </tr> <tr> <td>๐Ÿ”„ <b>Tip 3</b></td> <td>State files allow resuming - don't worry about interruptions</td> </tr> <tr> <td>๐Ÿ“Š <b>Tip 4</b></td> <td>Monitor rate limits: <code>gh api rate_limit</code></td> </tr> <tr> <td>๐ŸŒ <b>Tip 5</b></td> <td>Enable proxies for extra speed and reliability</td> </tr> </table> </div>

๐Ÿ”ง Components Deep Dive

<div align="center">

๐Ÿ—๏ธ System Architecture Breakdown

<img src="https://capsule-render.vercel.app/api?type=rect&color=gradient&customColorList=12&height=2" width="100%"/> </div>

1๏ธโƒฃ GitManager (git_manager.py)

<div align="center"> <img src="https://img.shields.io/badge/Git-Automation-F05032?style=for-the-badge&logo=git&logoColor=white" /> </div>

๐ŸŽฏ Purpose: Handle all Git operations with retry logic and internet connectivity checks

๐Ÿ”‘ Key Methods:

python
class GitManager: def __init__(self, base_branch: str, max_retries: int, logger) def wait_for_internet(self, timeout: int = 10) -> bool: """Wait for stable internet connection""" def run(self, command: List[str]) -> subprocess.CompletedProcess: """Execute git command with exponential backoff retry""" def sync_base(self) -> bool: """Sync base branch with remote""" def create_branch(self, name: str) -> bool: """Create and checkout new branch""" def commit(self, file: str, message: str) -> bool: """Stage and commit changes""" def push(self, branch: str) -> bool: """Push branch to remote"""

โœจ Features:

<table> <tr> <td>โฑ๏ธ <b>Exponential Backoff</b></td> <td>Retry delays: 5s โ†’ 10s โ†’ 20s</td> </tr> <tr> <td>๐ŸŒ <b>Internet Check</b></td> <td>Validates connection before operations</td> </tr> <tr> <td>๐Ÿ” <b>Auto-Retry</b></td> <td>Configurable attempts (default: 3)</td> </tr> <tr> <td>โฒ๏ธ <b>Timeout Protection</b></td> <td>30-second command timeout</td> </tr> </table>

2๏ธโƒฃ GitHubTool (github_tool.py)

<div align="center"> <img src="https://img.shields.io/badge/GitHub-API_Wrapper-181717?style=for-the-badge&logo=github&logoColor=white" /> </div>

๐ŸŽฏ Purpose: Wrap GitHub CLI with rate limit management and PR operations

๐Ÿ”‘ Key Methods:

python
class GitHubTool: def check_rate_limit(self) -> Dict: """Query GitHub API rate limit status""" def create_pr(self, title: str, body: str, head: str) -> Optional[str]: """Create pull request via GitHub CLI""" def merge_pr(self, branch: str) -> bool: """Auto-merge pull request"""

๐Ÿ“Š Rate Limit Flow:

mermaid
%%{init: {'theme':'dark'}}%% graph LR A[Check Rate Limit] --> B{Remaining > 100?} B -->|Yes| C[Proceed] B -->|No| D[Calculate Wait Time] D --> E[Sleep Until Reset] E --> A style A fill:#3498db style C fill:#2ecc71 style D fill:#f39c12

3๏ธโƒฃ TokenManager (token_manager.py)

<div align="center"> <img src="https://img.shields.io/badge/Token-Management-4CAF50?style=for-the-badge&logo=key&logoColor=white" /> </div>

๐ŸŽฏ Purpose: Manage multiple GitHub tokens with automatic rotation

๐Ÿ”„ Rotation Algorithm:

python
def get_best_token(): """ 1. Filter active tokens โœ… 2. Sort by remaining requests (descending) โฌ‡๏ธ 3. Return token with highest limit โญ 4. Update last_used timestamp ๐Ÿ• 5. Decrement remaining count โž– """

๐Ÿ“Š Token Statistics Example:

๐Ÿ“‹ Token Status Dashboard
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
Token 1 (Primary):    4,850 / 5,000 โšก
Token 2 (Secondary):  5,000 / 5,000 โœ…
Token 3 (Backup):     4,920 / 5,000 โšก
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
Total Available: 14,770 requests
Next Reset: 42 minutes
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

4๏ธโƒฃ ProxyManager (proxy_manager.py)

<div align="center"> <img src="https://img.shields.io/badge/Proxy-Rotation-FF6B6B?style=for-the-badge&logo=shield&logoColor=white" /> </div>

๐ŸŽฏ Purpose: Rotate proxies to distribute requests

๐Ÿ”„ Rotation Strategy:

python
# Round-robin with queue proxy1 โ†’ proxy2 โ†’ proxy3 โ†’ proxy1 โ†’ ... # Get proxy (auto-rotates) proxy = proxy_queue.get() # Returns proxy1 proxy_queue.put(proxy) # Re-add to end # Next: proxy2, then proxy3, then proxy1...

๐Ÿ“Š Supported Formats:

python
# Simple proxies "8.219.97.248:9090" "http://47.91.34.69:3128" # Authenticated proxies "http://user:pass@proxy.example.com:8080" "socks5://admin:secret@10.0.0.1:1080"

5๏ธโƒฃ Notifier (notifier.py)

<div align="center"> <img src="https://img.shields.io/badge/Notifications-Discord_+_Slack-7289DA?style=for-the-badge&logo=discord&logoColor=white" /> </div>

๐ŸŽฏ Purpose: Send real-time notifications

๐ŸŽจ Notification Types:

LevelColorDiscordUse Case
info๐Ÿ”ต Blue5814783Progress updates
success๐ŸŸข Green3066993PR created/merged
warning๐ŸŸก Yellow16776960Non-critical errors
error๐Ÿ”ด Red15548997Critical failures

๐Ÿ“จ Example Notifications:

python
# Success notifier.send( "โœ… PR #123 created successfully\n" "Branch: automation-123-abc\n" "PR Number: #456", "success" ) # Progress notifier.send( "๐Ÿ“Š Progress: 50/100 PRs\n" "Speed: 12.5 PRs/min", "info" ) # Error notifier.send( "โŒ PR #75 failed\n" "Error: Network timeout", "error" )

6๏ธโƒฃ Logger (logger.py)

<div align="center"> <img src="https://img.shields.io/badge/Logging-File_+_Console-FFA500?style=for-the-badge&logo=files&logoColor=white" /> </div>

๐ŸŽฏ Purpose: Dual-output logging system

๐Ÿ“ Log Levels:

python
logger.info("โœ… PR #123 created") # General info logger.warning("โš ๏ธ Rate limit low") # Warnings logger.error("โŒ Failed to push") # Errors logger.debug("๐Ÿ” Token: abc...") # Debug info

๐Ÿ“„ Sample Log Output:

2026-02-15 10:22:11 - INFO - Starting automation from PR #1
2026-02-15 10:22:15 - INFO - Created branch automation-1-abc123
2026-02-15 10:22:18 - INFO - Committed changes to README.md
2026-02-15 10:22:22 - INFO - Pushed branch automation-1-abc123
2026-02-15 10:22:25 - INFO - Created PR #12345
2026-02-15 10:22:28 - INFO - Merged PR #12345
2026-02-15 10:22:28 - WARNING - Rate limit: 4850 remaining

โšก High-Performance Modules

<div align="center"> <img src="https://img.shields.io/badge/Async-Powered-00D9FF?style=for-the-badge&logo=python&logoColor=white" /> <img src="https://img.shields.io/badge/Windows-Compatible-0078D6?style=for-the-badge&logo=windows&logoColor=white" /> <img src="https://img.shields.io/badge/Speed-10x_Faster-FF6B6B?style=for-the-badge&logo=lightning&logoColor=white" />

๐Ÿš€ Turbocharged Async Implementation

</div>

The high_performance package provides async-first implementations for maximum throughput and parallel processing. Fully Windows-compatible with proper event loop policies.


๐Ÿ“ Module Structure

high_performance/
โ”œโ”€โ”€ __init__.py              # ๐Ÿ“ฆ Package exports
โ”œโ”€โ”€ git_manager.py          # ๐Ÿ”ง Async Git operations
โ”œโ”€โ”€ github_tool.py          # ๐Ÿ™ Async GitHub API
โ”œโ”€โ”€ token_manager.py        # ๐Ÿ”‘ Async token rotation
โ”œโ”€โ”€ proxy_manager.py        # ๐ŸŒ Async proxy scraping
โ””โ”€โ”€ proxy_refresher.py      # ๐Ÿ”„ Background maintenance

๐Ÿš€ Performance Comparison

<div align="center"> <table> <thead> <tr> <th>Metric</th> <th>Standard</th> <th>High-Performance</th> <th>Improvement</th> </tr> </thead> <tbody> <tr> <td><b>PR Speed</b></td> <td>1-2 PRs/min</td> <td>30-50 PRs/min</td> <td><span style="color:#2ecc71">โฌ†๏ธ 25x faster</span></td> </tr> <tr> <td><b>Concurrency</b></td> <td>Single-thread</td> <td>10-50 workers</td> <td><span style="color:#2ecc71">โฌ†๏ธ 50x</span></td> </tr> <tr> <td><b>Token Rotation</b></td> <td>Manual</td> <td>Automatic</td> <td><span style="color:#2ecc71">โœจ Smart</span></td> </tr> <tr> <td><b>Proxy Support</b></td> <td>Static list</td> <td>Auto-fetch + test</td> <td><span style="color:#2ecc71">โœจ Dynamic</span></td> </tr> <tr> <td><b>Rate Limit</b></td> <td>Cached</td> <td>Live API checks</td> <td><span style="color:#2ecc71">โœจ Real-time</span></td> </tr> <tr> <td><b>Memory Usage</b></td> <td>~50 MB</td> <td>~300-500 MB</td> <td><span style="color:#f39c12">โฌ†๏ธ 6-10x</span></td> </tr> </tbody> </table> </div>

๐Ÿ“Š Real-World Performance

Test: 1000 PRs with High-Performance Modules

<div align="center">
bash
python parallel_automation.py --count 1000 --concurrent 20
</div>

Results:

<div align="center">
โฑ๏ธ  Time: 16 minutes (vs 8+ hours sequential)
โœ… Success Rate: 94%
๐Ÿ“ˆ Speed: 62.5 PRs/min
๐Ÿ”„ Token Rotation: 3 tokens cycled automatically
๐ŸŒ Proxies Used: 87 working proxies
๐Ÿ’พ Memory: ~720 MB peak
<img src="https://img.shields.io/badge/Performance-Exceptional-brightgreen?style=for-the-badge" alt="Performance"/> </div>

โšก1๏ธโƒฃ HighPerformanceGitManager

๐ŸŽฏ Key Features:

python
# Windows-compatible async Git operations async def sync_base(self) -> bool: """Fast sync with depth=1 optimization""" async def create_branch(self, name: str) -> bool: """Async branch creation""" async def commit(self, file: str, message: str, content: str) -> bool: """Single-operation async commit""" async def push(self, branch: str) -> bool: """Non-blocking push"""

๐ŸชŸ Windows Optimization:

python
# Thread pool prevents blocking self.executor = ThreadPoolExecutor(max_workers=10) # Run git ops in executor loop = asyncio.get_event_loop() result = await loop.run_in_executor( self.executor, lambda: git_operation() )

โšก2๏ธโƒฃ HighPerformanceGitHubTool

๐ŸŽฏ Key Features:

  • Semaphore Control: Limit concurrent API calls
  • Smart Token Selection: Auto-switch on rate limits
  • Proxy Integration: Built-in proxy support
python
# Concurrency control self.semaphore = asyncio.Semaphore(50) # Max 50 concurrent async with self.semaphore: process = await asyncio.create_subprocess_exec(...)

โšก3๏ธโƒฃ HighPerformanceTokenManager

๐ŸŽฏ Key Features:

  • Real-Time Rate Limits: Live API checks every 5 minutes
  • Fair Distribution: Shuffle tokens for balanced usage
  • Auto-Refresh: Update stale token status
python
# Live rate limit check async def check_token_rate_limit_async(self, token): headers = {'Authorization': f"token {token['token']}"} async with session.get('https://api.github.com/rate_limit', headers=headers): # Get real-time remaining count return remaining, reset_time

โšก4๏ธโƒฃ HighPerformanceProxyManager

๐ŸŽฏ Proxy Sources:

python
sources = [ # HTML Table Sources 'https://free-proxy-list.net/', 'https://www.sslproxies.org/', # API/Raw Sources (More Reliable) 'https://api.proxyscrape.com/v2/', 'https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/http.txt', 'https://raw.githubusercontent.com/clarketm/proxy-list/master/proxy-list-raw.txt' ]

๐Ÿงช Concurrent Testing:

python
# Test 50 proxies simultaneously semaphore = asyncio.Semaphore(50) async def limited_test(proxy): async with semaphore: return await self.test_proxy(proxy) # Parallel execution results = await asyncio.gather(*[limited_test(p) for p in proxies])

โšก Latency-Based Sorting:

python
# Sort by speed (fastest first) working_proxies.sort(key=lambda x: x.get("latency", 999))

โšก5๏ธโƒฃ ProxyRefresher

๐ŸŽฏ Background Service

bash
# Run in separate terminal python -m high_performance.proxy_refresher

Output:

๐Ÿ”„ Proxy Refresher Started
โฐ Will refresh proxies every 30 minutes

[10:00:00] Refreshing proxies...
  ๐Ÿ”Ž Fetching from free-proxy-list...
  ๐Ÿ”Ž Fetching from proxyscrape...
  ๐Ÿ“ฆ Collected: 342 unique proxies
  ๐Ÿ“ฆ Testing: 342 proxies...
  โœ… Working: 87 proxies

[10:30:00] Refreshing proxies...
...

๐Ÿ” Security & Best Practices

<div align="center">

๐Ÿ›ก๏ธ Keep Your Tokens Safe

<img src="https://img.shields.io/badge/Security-Critical-red?style=for-the-badge&logo=shield&logoColor=white" /> </div>

๐Ÿ”’ Token Security Checklist

<table> <tr> <td>โœ…</td> <td><b>Never commit tokens to Git</b></td> <td>Add to <code>.gitignore</code></td> </tr> <tr> <td>โœ…</td> <td><b>Use environment variables</b></td> <td><code>export GITHUB_TOKEN="ghp_xxx"</code></td> </tr> <tr> <td>โœ…</td> <td><b>Rotate tokens regularly</b></td> <td>Every 30-90 days</td> </tr> <tr> <td>โœ…</td> <td><b>Use fine-grained tokens</b></td> <td>Limit scope to specific repos</td> </tr> <tr> <td>โœ…</td> <td><b>Enable 2FA</b></td> <td>Extra security layer</td> </tr> <tr> <td>โœ…</td> <td><b>Monitor token usage</b></td> <td><code>gh api rate_limit</code></td> </tr> </table>

๐Ÿ›ก๏ธ API Rate Limits

GitHub Limits:

<div align="center">
AuthenticationRequests/HourNotes
Unauthenticated60Very limited
OAuth Token5,000Per token
GitHub App15,000Enterprise
Multiple Tokens15,000+Rotation
</div>

๐Ÿ“Š Rate Limit Strategies:

python
# 1๏ธโƒฃ Token Rotation token = token_manager.get_best_token() # 2๏ธโƒฃ Monitor Limits rate_info = gh.check_rate_limit() if rate_info["remaining"] < 100: time.sleep(wait_time) # 3๏ธโƒฃ Exponential Backoff for attempt in range(max_retries): try: result = api_call() break except RateLimitError: time.sleep(2 ** attempt)

๐ŸŒ Proxy Best Practices

<details> <summary><b>๐Ÿ†“ Free vs ๐Ÿ’ฐ Paid Proxies</b></summary>
FeatureFreePaid
Reliabilityโญโญ (20-30%)โญโญโญโญโญ (99%+)
SpeedSlowFast
Securityโš ๏ธ Questionableโœ… Verified
SupportNone24/7
Cost$0$10-200/mo
Best ForTestingProduction

๐Ÿ’ฐ Recommended Paid Services:

  1. Bright Data - Enterprise ($500+/mo)
  2. Smartproxy - Balanced ($75/mo)
  3. Oxylabs - Premium ($300/mo)
  4. Proxy-Cheap - Budget ($10/mo)
</details>

๐Ÿ› Troubleshooting

<div align="center">

๐Ÿ”ง Common Issues & Solutions

<img src="https://img.shields.io/badge/Support-Community-blue?style=for-the-badge&logo=github" /> </div>

โŒ Issue 1: "gh: command not found"

<details> <summary><b>๐Ÿ“‹ Problem Description</b></summary>

GitHub CLI is not installed or not in PATH.

</details> <details> <summary><b>โœ… Solution</b></summary>
bash
# macOS brew install gh # Linux (Debian/Ubuntu) sudo apt update && sudo apt install gh -y # Windows winget install --id GitHub.cli # Verify gh --version
</details>

โŒ Issue 2: "Authentication failed"

<details> <summary><b>๐Ÿ“‹ Problem Description</b></summary>

GitHub CLI not authenticated or token expired.

</details> <details> <summary><b>โœ… Solution</b></summary>
bash
# Re-authenticate gh auth login # Or use token directly echo "YOUR_TOKEN" | gh auth login --with-token # Verify authentication gh auth status
</details>

โŒ Issue 3: "API rate limit exceeded"

<details> <summary><b>๐Ÿ“‹ Problem Description</b></summary>

Too many API requests in short time.

</details> <details> <summary><b>โœ… Solutions</b></summary>

Option 1: Add More Tokens

json
{ "tokens": [ {"name": "Token 1", "token": "ghp_xxx1"}, {"name": "Token 2", "token": "ghp_xxx2"}, {"name": "Token 3", "token": "ghp_xxx3"} ] }

Option 2: Check Rate Limit

bash
gh api rate_limit # Output shows: # - Remaining requests # - Reset time

Option 3: Increase Delay

json
{ "delay_seconds": 60 }
</details>

โŒ Issue 4: "Failed to push branch"

<details> <summary><b>๐Ÿ“‹ Problem Description</b></summary>

Git push fails due to network or permissions.

</details> <details> <summary><b>โœ… Solutions</b></summary>

Check 1: Internet Connection

bash
ping github.com

Check 2: Repository Permissions

bash
gh repo view --web # Verify you have write access

Check 3: Branch Protection

bash
gh api repos/OWNER/REPO/branches/main/protection

Check 4: Re-authenticate

bash
gh auth refresh
</details>

โŒ Issue 5: "No changes to commit"

<details> <summary><b>๐Ÿ“‹ Problem Description</b></summary>

File already contains identical content.

</details> <details> <summary><b>โœ… Solutions</b></summary>

Solution 1: Reset State

bash
python main.py --reset

Solution 2: Change Target File

json
{ "readme_file": "CONTRIBUTING.md" }

Solution 3: Force Content Change
Add timestamps or unique IDs to each commit.

</details>

๐Ÿ” Enable Debug Mode

bash
# Set environment variable export LOG_LEVEL=DEBUG # Run with debug logging python main.py # Or edit logger.py logger.setLevel(logging.DEBUG)

Debug Output Example:

DEBUG - Token selected: primary (4850 remaining)
DEBUG - Proxy selected: http://8.219.97.248:9090
DEBUG - Executing: git push origin automation-1-abc123
DEBUG - Command output: [SUCCESS]
DEBUG - API response: {"pr_number": 12345}

๐Ÿ“ˆ Performance Tips

<div align="center">

โšก Maximize Your Speed

<img src="https://img.shields.io/badge/Optimization-Guide-orange?style=for-the-badge&logo=speedtest" /> </div>

๐Ÿš€ Speed Optimization Matrix

<table> <thead> <tr> <th>Strategy</th> <th>Impact</th> <th>Difficulty</th> <th>Implementation</th> </tr> </thead> <tbody> <tr> <td><b>Use Parallel Mode</b></td> <td>โญโญโญโญโญ</td> <td>๐ŸŸข Easy</td> <td><code>python parallel_automation.py --concurrent 20</code></td> </tr> <tr> <td><b>Multiple Tokens</b></td> <td>โญโญโญโญโญ</td> <td>๐ŸŸข Easy</td> <td>Add 2-3 tokens to <code>github_tokens.json</code></td> </tr> <tr> <td><b>Enable Proxies</b></td> <td>โญโญโญโญ</td> <td>๐ŸŸก Medium</td> <td>Set <code>"use_free_proxies": true</code></td> </tr> <tr> <td><b>Reduce Delay</b></td> <td>โญโญโญ</td> <td>๐ŸŸข Easy</td> <td><code>--delay 10</code> (sequential mode)</td> </tr> <tr> <td><b>Skip Auto-Merge</b></td> <td>โญโญ</td> <td>๐ŸŸข Easy</td> <td><code>--no-merge</code></td> </tr> <tr> <td><b>Use SSD Storage</b></td> <td>โญโญ</td> <td>๐Ÿ”ด Hard</td> <td>Run on SSD drive</td> </tr> </tbody> </table>

๐Ÿ’พ Resource Optimization

Optimal Settings by Hardware:

<div align="center">
System SpecsWorkersMemoryPRs/HourRecommended
2 CPU, 4GB RAM5~150 MB~900๐ŸŸข Basic
4 CPU, 8GB RAM10~300 MB~1,800๐ŸŸข Good
8 CPU, 16GB RAM20~600 MB~3,600๐ŸŸก Great
16 CPU, 32GB RAM40~1.2 GB~7,200๐Ÿ”ด Overkill
</div>

๐Ÿ“Š Monitor Resources:

bash
# CPU & Memory Usage top -p $(pgrep -f parallel_automation) # Disk I/O iotop -p $(pgrep -f parallel_automation) # Network Stats nethogs

๐Ÿ“Š Benchmarks

<details> <summary><b>Test 1: Sequential Mode (100 PRs)</b></summary>

Configuration:

json
{ "pr_count": 100, "delay_seconds": 30, "auto_merge": true }

Results:

โฑ๏ธ  Time: 52 minutes
โœ… Success: 98 PRs (98%)
โŒ Failed: 2 PRs (2%)
๐Ÿ” Retries: 3 operations
๐Ÿ’พ Memory: ~50 MB
๐Ÿ“ˆ Speed: 1.9 PRs/min
</details> <details> <summary><b>Test 2: Parallel Mode (1000 PRs, 10 workers)</b></summary>

Configuration:

bash
python parallel_automation.py --count 1000 --concurrent 10

Results:

โฑ๏ธ  Time: 28 minutes
โœ… Success: 960 PRs (96%)
โŒ Failed: 40 PRs (4%)
๐Ÿ” Retries: 42 operations
๐Ÿ’พ Memory: ~380 MB
๐Ÿ“ˆ Speed: 35.7 PRs/min
</details> <details> <summary><b>Test 3: Maximum Speed (1000 PRs, 20 workers, 3 tokens)</b></summary>

Configuration:

bash
python parallel_automation.py --count 1000 --concurrent 20

Results:

โฑ๏ธ  Time: 16 minutes
โœ… Success: 940 PRs (94%)
โŒ Failed: 60 PRs (6%)
๐Ÿ” Retries: 68 operations
๐Ÿ’พ Memory: ~720 MB
๐Ÿ“ˆ Speed: 62.5 PRs/min
๐Ÿ”„ Tokens: 3 rotated
๐ŸŒ Proxies: 87 used
</details>

๐Ÿค Contributing

<div align="center">

๐Ÿ’ช Join the Community

<img src="https://img.shields.io/badge/Contributors-Welcome-brightgreen?style=for-the-badge&logo=github" /> <img src="https://user-images.githubusercontent.com/74038190/212284136-03988914-d899-44b4-b1d9-4eeccf656e44.gif" width="500"/> </div>

๐Ÿš€ How to Contribute

bash
# 1๏ธโƒฃ Fork the repository gh repo fork itxashancode/Pull-Shark-Automation # 2๏ธโƒฃ Clone your fork git clone https://github.com/YOUR_USERNAME/Pull-Shark-Automation.git cd Pull-Shark-Automation # 3๏ธโƒฃ Create feature branch git checkout -b feature/amazing-feature # 4๏ธโƒฃ Make your changes # ... edit files ... # 5๏ธโƒฃ Commit with conventional commits git commit -m "feat: add amazing feature" # 6๏ธโƒฃ Push to your fork git push origin feature/amazing-feature # 7๏ธโƒฃ Create Pull Request gh pr create --title "Add amazing feature" --body "Description..."

๐Ÿ“ Code Style Guide

python
# โœ… Good - Clear, documented, typed def create_pull_request(title: str, body: str, head: str) -> Optional[str]: """ Create a pull request via GitHub CLI. Args: title: PR title body: PR description head: Source branch name Returns: PR number as string, or None if failed """ try: result = gh_tool.create_pr(title, body, head) return result except Exception as e: logger.error(f"Failed to create PR: {e}") return None # โŒ Bad - Unclear, no types, no docs def createPR(t,b,h): result=gh_tool.create_pr(t,b,h) return result

๐ŸŽจ Formatting Tools:

bash
# Auto-format with black black *.py # Check style with flake8 flake8 *.py # Type checking with mypy mypy *.py

๐Ÿ› Reporting Bugs

Found a bug? Help us fix it!

Steps:

  1. Check existing issues
  2. Create new issue with template
  3. Include:
    • OS & Python version
    • Full error message
    • Steps to reproduce
    • Expected vs actual behavior

๐Ÿ’ก Suggesting Features

Have an idea? We'd love to hear it!

Steps:

  1. Check existing discussions
  2. Open feature request
  3. Describe:
    • Use case
    • Proposed solution
    • Alternatives considered

๐Ÿ“„ License

<div align="center">

MIT License

<img src="https://img.shields.io/badge/License-MIT-green?style=for-the-badge" alt="MIT License"/>
MIT License

Copyright (c) 2026 Pull Shark Automation

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
</div>

๐Ÿ™ Acknowledgments

<div align="center">

๐ŸŒŸ Built With Amazing Tools

<p> <img src="https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=white" alt="Python"/> <img src="https://img.shields.io/badge/GitHub_CLI-181717?style=for-the-badge&logo=github&logoColor=white" alt="GitHub CLI"/> <img src="https://img.shields.io/badge/Git-F05032?style=for-the-badge&logo=git&logoColor=white" alt="Git"/> </p> <p> <img src="https://img.shields.io/badge/Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"/> <img src="https://img.shields.io/badge/Slack-4A154B?style=for-the-badge&logo=slack&logoColor=white" alt="Slack"/> <img src="https://img.shields.io/badge/AsyncIO-00599C?style=for-the-badge&logo=python&logoColor=white" alt="AsyncIO"/> </p>

๐Ÿ’– Special Thanks

  • GitHub - For excellent CLI and API
  • Python Community - For amazing async libraries
  • Contributors - Everyone who improved this project
  • You - For using Pull Shark Automation!

๐Ÿ“ž Support & Community

<table align="center"> <tr> <td align="center"> <a href="https://github.com/itxashancode/Pull-Shark-Automation/wiki"> <img src="https://img.shields.io/badge/๐Ÿ“š_Documentation-Read-blue?style=for-the-badge" alt="Docs"/> </a> </td> <td align="center"> <a href="https://github.com/itxashancode/Pull-Shark-Automation/issues"> <img src="https://img.shields.io/badge/๐Ÿ›_Issues-Report-red?style=for-the-badge" alt="Issues"/> </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/itxashancode/Pull-Shark-Automation/discussions"> <img src="https://img.shields.io/badge/๐Ÿ’ฌ_Discussions-Join-green?style=for-the-badge" alt="Discussions"/> </a> </td> <td align="center"> <a href="https://github.com/itxashancode"> <img src="https://img.shields.io/badge/๐Ÿ‘ค_Profile-Visit-orange?style=for-the-badge" alt="Profile"/> </a> </td> </tr> </table>

โญ Star History

<div align="center">

Star History Chart

</div>

๐ŸŽ‰ Final Words

<div align="center"> <img src="https://capsule-render.vercel.app/api?type=waving&color=gradient&customColorList=6,11,20&height=150&section=footer&text=Happy%20Automating!&fontSize=40&fontColor=fff&animation=twinkling" width="100%"/>

๐Ÿฆˆ Unleash the Pull Shark! ๐Ÿฆˆ

<img src="https://user-images.githubusercontent.com/74038190/212284100-561aa473-3905-4a80-b561-0d28506553ee.gif" width="600"/>

If this tool helped you earn your Pull Shark badge, please โญ star the repository!

<p> <i>Made with โค๏ธ by developers, for developers</i> </p> <p> <a href="#-github-pull-shark-automation">โฌ†๏ธ Back to Top</a> </p> <p> <img src="https://komarev.com/ghpvc/?username=itxashancode&label=Repository%20Views&color=0e75b6&style=flat" alt="Repository Views"/> </p>

โš ๏ธ Remember: This tool is for educational purposes. Use responsibly and follow GitHub's Terms of Service.

</div>

Contributors

Showing top 1 contributor by commit count.

View all contributors on GitHub โ†’

This article is auto-generated from itxashancode/Pull-Shark-Automation via the GitHub API.Last fetched: 6/13/2026