- Labels new PRs as "ready for review"
- Adds "approved" label when PR is approved
- Adds "changes requested" when changes are requested
- Adds "merged" label to merged PRs
- Adds "fixed" label to closed bug issues
- Adds "implemented" label to closed feature/enhancement issues
Use these commands in PR/issue comments:
/approve
- Approve a pull request/merge
- Merge a pull request/close
- Close an issue or pull request/wip
- Mark as work in progress/label <name>
- Add labels/request-info
- Request more information
- Requests more information when issue descriptions are too short
- Welcomes first-time contributors
- Manages labels based on PR/issue status
- Automatically removes labels when conditions change
- Install the GitHub App
- Grant access to your repositories
- Optionally create a config file (see Configuration section)
-
Approve PR
/approve
Approves the pull request (requires write access)
![image](https://private-user-images.githubusercontent.com/69336518/399584994-c15be504-a2e9-496e-bf63-ddd4dcf759ad.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMzYyNjcsIm5iZiI6MTczOTMzNTk2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODQ5OTQtYzE1YmU1MDQtYTJlOS00OTZlLWJmNjMtZGRkNGRjZjc1OWFkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA0NTI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdlZWU4YmE4YzVkZjEzZGYxZWVlZTNkZDM5YjYwMjM1NzU0YTJiYTA4MjRiZWY0ZTAyMjFmNTQ5YTQwYmI2OTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ERUzyoVaPGQHD6qweJqu8sDKmFT5OvGFQcF22gTBaiI)
-
Merge PR
/merge
Merges the pull request using rebase strategy (requires write access)
![image](https://private-user-images.githubusercontent.com/69336518/399585021-85a37b6a-a13b-44aa-895d-43edeb02e95a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMzYyNjcsIm5iZiI6MTczOTMzNTk2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODUwMjEtODVhMzdiNmEtYTEzYi00NGFhLTg5NWQtNDNlZGViMDJlOTVhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA0NTI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQzOTAyMjRmNjY2ZThjNjE5YjhmYmFhYTkwMGJlMWI4OWFjMjk3MTY3ZjJjZGViOWE2MWY3YTVkZTkzNzNlNTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.h9oXLfUPBxyUNnMFyLpuzRxG4Doz_LB36_kK2dfQpcU)
-
Close
/close
Closes a issue/PR
-
Add Labels
/label bug documentation
Adds one or more labels to the issue/PR
![image](https://private-user-images.githubusercontent.com/69336518/399585137-8bc0ee2a-caf7-4204-acc2-9f15f91efbd3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMzYyNjcsIm5iZiI6MTczOTMzNTk2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODUxMzctOGJjMGVlMmEtY2FmNy00MjA0LWFjYzItOWYxNWY5MWVmYmQzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA0NTI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ1MzE0ZmNhOTU3ZDNhNjYxZDg2NmE0M2IyOGJjYTg5Y2I3OTMyYTc1YjNiODJiM2U4ZTg4MDMxZDBiZjRmY2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.WzhIWaV8gPTXGkzzb55A1WD_rdO2-NB0nK_Dm9Q4inw)
-
Work in Progress
/wip
Marks PR as work in progress
![image](https://private-user-images.githubusercontent.com/69336518/399585231-e4f1026c-3fb5-4763-9c93-875084a26574.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMzYyNjcsIm5iZiI6MTczOTMzNTk2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODUyMzEtZTRmMTAyNmMtM2ZiNS00NzYzLTljOTMtODc1MDg0YTI2NTc0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA0NTI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdjNDE2ODcwMGU0ZGIxYzliZTRlYWVmNTQ1YTQ2NTY3ZGUyYWVjMzI3ODI4NDhmYWM3NWYyZTIyMWFmNGQ5M2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.JPqPg_7vFlP-JWDkc3bqqtiitmxfbgZf0B8Od_QSqts)
- Request Information
Requests additional information from the author
/request-info
![image](https://private-user-images.githubusercontent.com/69336518/399585256-81e84593-9934-44ce-8e85-d3f1d404048a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMzYyNjcsIm5iZiI6MTczOTMzNTk2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODUyNTYtODFlODQ1OTMtOTkzNC00NGNlLThlODUtZDNmMWQ0MDQwNDhhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA0NTI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAwNjU0MTMyNWYzZmMwMTcyNjIwNWNhNDIxMmY4NzY3MDIwZDE5MjI3Yjk3YWU3YjYxZTU3ZDFhZDlmMDY5ZDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.VDYuh4pZwBF6HcdpFTG77Q6j0UBBK9NLJsW-mOkf8I8)
The bot includes several automatic behaviors that can be enabled or disabled:
-
Request more info (
requestMoreInfo
)- Request more information from user when description is too short
- Triggers on: Issue opened
![image](https://private-user-images.githubusercontent.com/69336518/399585384-7c52d5d1-2d17-4cb7-a94d-1735a05612d4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMzYyNjcsIm5iZiI6MTczOTMzNTk2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODUzODQtN2M1MmQ1ZDEtMmQxNy00Y2I3LWE5NGQtMTczNWEwNTYxMmQ0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA0NTI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRlMDU0ZTBkMGUzNjFlMDU0ZjE5MTAwNDY5ZDEzMTJkMTNlZDhhMmUwMDdiOGU1MmU0MWQ1MTllNDE0YzZjMDEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.JObf90rLhO1XOzz9BrtwJfV_MnH8efuTahhRJPPwaic)
-
Ready for Review (
addReadyForReview
)- Adds "ready for review" label to new pull requests
- Triggers on: Pull request opened
![image](https://private-user-images.githubusercontent.com/69336518/399585476-257880d5-aa91-4b4b-876e-0c9ca5c27ffc.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMzYyNjcsIm5iZiI6MTczOTMzNTk2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODU0NzYtMjU3ODgwZDUtYWE5MS00YjRiLTg3NmUtMGM5Y2E1YzI3ZmZjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA0NTI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU0ZjkzYzRkZmQwZGE3ZWM1MWU2OGY3MjcxYWY3ZDZiMjBhYzI5MmUyY2QwZmNiMmQwZmMxOWZjYWExZGRmNGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.UJW-ehU87FobFNun3VmoRKiC2uthCHhzYi0YrCKFRvY)
-
Approval Labels (
addApprovedLabel
)- Adds "approved" label when PR is approved
- Removes "changes requested" label if present
- Triggers on: Pull request review submitted
![image](https://private-user-images.githubusercontent.com/69336518/399584994-c15be504-a2e9-496e-bf63-ddd4dcf759ad.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMzYyNjcsIm5iZiI6MTczOTMzNTk2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODQ5OTQtYzE1YmU1MDQtYTJlOS00OTZlLWJmNjMtZGRkNGRjZjc1OWFkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA0NTI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdlZWU4YmE4YzVkZjEzZGYxZWVlZTNkZDM5YjYwMjM1NzU0YTJiYTA4MjRiZWY0ZTAyMjFmNTQ5YTQwYmI2OTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ERUzyoVaPGQHD6qweJqu8sDKmFT5OvGFQcF22gTBaiI)
-
Changes Requested (
addChangesRequestedLabel
)- Adds "changes requested" label when changes are requested
- Removes "approved" and "ready for review" labels
- Triggers on: Pull request review submitted
![image](https://private-user-images.githubusercontent.com/69336518/399586175-000ea27f-6353-4e44-b1fd-d7df42d64857.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMzYyNjcsIm5iZiI6MTczOTMzNTk2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODYxNzUtMDAwZWEyN2YtNjM1My00ZTQ0LWIxZmQtZDdkZjQyZDY0ODU3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA0NTI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM5NmMxMDc4OWM1ZmU0MDUwOTgzM2QwYmQ3ZWJkYzI0ZDk2MjE4ZWUyZjYyNDZkNmViMzFkYWQ4OWUwNTBiNDgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.5qIfnxGiVXfOEOM275CpfySjGduSrvUw0alg5f8HVSU)
-
Merged Label (
addMergedLabel
)- Adds "merged" label when PR is merged
- Removes review-related labels
- Triggers on: Pull request closed (merged)
![image](https://private-user-images.githubusercontent.com/69336518/399585961-94707a0e-b2a4-48ac-93d1-abaf6741ef44.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMzYyNjcsIm5iZiI6MTczOTMzNTk2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODU5NjEtOTQ3MDdhMGUtYjJhNC00OGFjLTkzZDEtYWJhZjY3NDFlZjQ0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA0NTI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY3MmZhNWQ3ZjY2OTcwYjQ0NDEzNmFkYmZiMTdjYjQ2ZTVkZDhjYWM3ZTRjMjZmZDAyNmFhYzM5ZDBhYjhiMzQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.HdbYVHobEyfwQlofVrB-BCau_GLFAydLt83xX_xB_dI)
- Welcome Messages (
welcomeContributor
,welcomeIssue
)- Welcomes first-time contributors
- Provides helpful onboarding information
- Triggers on: First PR or issue
![image](https://private-user-images.githubusercontent.com/69336518/399584957-e68f4114-d8f7-4dae-9ef1-055b954e84e5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMzYyNjcsIm5iZiI6MTczOTMzNTk2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODQ5NTctZTY4ZjQxMTQtZDhmNy00ZGFlLTllZjEtMDU1Yjk1NGU4NGU1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA0NTI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU0ODA1MTkxOTA3OTYyZWUwY2RlYTNjMGViYjY5YjAzMGUzZmM0MThiYzQwNDkzZWVhZDAyNTUyMWVhNTBiZjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.0jpfp3xbwBj7sWSG15XKl6UlyOCzY9mNVSYjnmFxANI)
Create a .github/repo-command.yml
file in your repository:
# Minimum length required for issue/PR descriptions
minBodyLength: 50
# Enable/disable commands
commands:
wip: true
approve: true
close: true
label: true
merge: true
requestInfo: true
# Enable/disable automations
automations:
addReadyForReview: true
addApprovedLabel: true
addChangesRequestedLabel: true
addMergedLabel: true
requestMoreInfo: true
addLabelsOnClose: true
welcomeContributor: true
welcomeIssue: true
# Configure labels
labels:
wip: "work in progress"
readyForReview: "ready for review"
approved: "approved"
changesRequested: "changes requested"
needsMoreInfo: "needs more info"
merged: "merged"
bug: "bug"
feature: "feature"
enhancement: "enhancement"
fixed: "fixed"
implemented: "implemented"
# Configure messages
messages:
welcomeContributor: |
Thanks for your first pull request, @{user}! 🎉
The team will review your changes soon.
welcomeIssue: |
Thanks for opening your first issue, @{user}! 🎉
requestMoreInfo: |
Hey @{user}! Please provide more details in your {type}.
moreInfoAdded: |
Thanks @{user} for adding more information!
- Node.js >= 16
- npm or yarn
- A GitHub account
- Clone the repository
git clone [email protected]:aayushchugh/repo-command.git
cd repo-command
- Install dependencies
npm install
- Create a
.env
file:
APP_ID=your_app_id
PRIVATE_KEY=your_private_key
WEBHOOK_SECRET=your_webhook_secret
- Start the bot
npm run dev
Run using Docker:
# Using Docker Compose
docker compose up -d
# Or using Docker directly
docker build -t repo-command .
docker run -d \
-p 3000:3000 \
--env-file .env \
--name repo-command \
repo-command
Contributions are welcome! Please read our Contributing Guide.
For support:
- Open an issue
- Email: [email protected]
MIT © Ayush Chugh
docker run -d
-p 3000:3000
--env-file .env
--name repo-command
repo-command
The bot will be available at `http://localhost:3000`.