- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMjU1NjcsIm5iZiI6MTczOTMyNTI2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODQ5OTQtYzE1YmU1MDQtYTJlOS00OTZlLWJmNjMtZGRkNGRjZjc1OWFkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAxNTQyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFkMzFkZmEyMWUyOWZjNjYwM2NiNjliMDg2MDA5ZTY5NzI5OGVlYTdlMTlhNGNhNzcyNmI0ZGFjOGU0NTljMTAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.XezDlemEBz2UAr_wJyDXqAmNLpTgP4qMB3pTTX95_0o)
-
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMjU1NjcsIm5iZiI6MTczOTMyNTI2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODUwMjEtODVhMzdiNmEtYTEzYi00NGFhLTg5NWQtNDNlZGViMDJlOTVhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAxNTQyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNmYWU1ZDBmYWNiMmVmNmE4ZjgzMjIwZmExOTI5ZTc1ZDIzNmY1YTUxZDA4NTA4ZmU0MWY0YTU4MjdjMTk4NTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.YlCJOYAXDnCmniFUnrs8-ysFaR1dQglvihQtKldX4g8)
-
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMjU1NjcsIm5iZiI6MTczOTMyNTI2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODUxMzctOGJjMGVlMmEtY2FmNy00MjA0LWFjYzItOWYxNWY5MWVmYmQzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAxNTQyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRkOWU0M2FmOTk4MGU4YTY2MjVkYjA2ZDdkNjg5ZDNjNjQxNDUzODU5ODhmY2ZhZTI5ZjFlZTA3MzMwYmRiYzQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.hK7rWJ0pC0YDU8ohvrJ2xgrvbEnL5vyrRhoIB6QFUww)
-
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMjU1NjcsIm5iZiI6MTczOTMyNTI2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODUyMzEtZTRmMTAyNmMtM2ZiNS00NzYzLTljOTMtODc1MDg0YTI2NTc0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAxNTQyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTMxNGJkYjE4ZTE4NWU4NTdjZWRmY2NhMTMxOWFhZGNkNjJjNzY5MjYwNWYyMzY1ZDQ4MTI2OTBiNzNhNmVmOWYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.04krPgpyzCYEG3gyzVq5mm7ROQ3JZEqNdJ7nsHJG2hk)
- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMjU1NjcsIm5iZiI6MTczOTMyNTI2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODUyNTYtODFlODQ1OTMtOTkzNC00NGNlLThlODUtZDNmMWQ0MDQwNDhhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAxNTQyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk3ODVjY2UzNTlkZjk2NWIxODQyNzFjMTMzZTYwNTc2YjY2OTJhYzY1NWMxODIyMjc5MjczZTAyYzVmZGFiNjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.VPhOuuBS0ynFgnzgGc2L83chyhv2OsGBNQ46SVZ-N-o)
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMjU1NjcsIm5iZiI6MTczOTMyNTI2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODUzODQtN2M1MmQ1ZDEtMmQxNy00Y2I3LWE5NGQtMTczNWEwNTYxMmQ0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAxNTQyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJkMWFlMmJjYmFkYjVlMWQ5ZWI2MjljNzNlMzM2YWY2YzZhNjgyNzM5Yjk5ZjJkOWVmMzEyNjVjOGI5ZjJhMDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.CoT6nws4WzgYhgYKdiWHLoyg_7f_ERs2u9AQkP1_EQY)
-
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMjU1NjcsIm5iZiI6MTczOTMyNTI2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODU0NzYtMjU3ODgwZDUtYWE5MS00YjRiLTg3NmUtMGM5Y2E1YzI3ZmZjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAxNTQyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAwYzliYWRiNDVmYjgwMjU0ZWE1YzY1NjUzNjRhODRkNWJlYTdmNDllNTA4MTIwZDMzNjQ5MTBiZjZjNWZiOTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.RT7toqfNGlMnpNSsG5KM4SA9Qn4ckctQsLc7Me7EbFY)
-
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMjU1NjcsIm5iZiI6MTczOTMyNTI2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODQ5OTQtYzE1YmU1MDQtYTJlOS00OTZlLWJmNjMtZGRkNGRjZjc1OWFkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAxNTQyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFkMzFkZmEyMWUyOWZjNjYwM2NiNjliMDg2MDA5ZTY5NzI5OGVlYTdlMTlhNGNhNzcyNmI0ZGFjOGU0NTljMTAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.XezDlemEBz2UAr_wJyDXqAmNLpTgP4qMB3pTTX95_0o)
-
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMjU1NjcsIm5iZiI6MTczOTMyNTI2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODYxNzUtMDAwZWEyN2YtNjM1My00ZTQ0LWIxZmQtZDdkZjQyZDY0ODU3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAxNTQyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg5M2E0YmIyMTM4M2NhNmY4MzgzZjA1M2ZmYzgyZmY1YzM2YWQwMjQwY2UyYTkwOTk3MDFhMzlhZjA3M2I3NWMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.oGbUsXuX2uoku1IwnzJVBxCB7FAijY01hihwkxTj4R4)
-
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMjU1NjcsIm5iZiI6MTczOTMyNTI2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODU5NjEtOTQ3MDdhMGUtYjJhNC00OGFjLTkzZDEtYWJhZjY3NDFlZjQ0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAxNTQyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMyY2ZiYzAxMzk1ZjQ1Yzc4ZDFkZGQzOGNkODU3OWE3ZjU5ODhkMjIwMWFkMWRlNWQ2NDAwNzRkOTg4MGEzNjgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.x-YjSekzEtZA2V77rcX5Brfc3jw3eDikpGEwCn_5EEc)
- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzMjU1NjcsIm5iZiI6MTczOTMyNTI2NywicGF0aCI6Ii82OTMzNjUxOC8zOTk1ODQ5NTctZTY4ZjQxMTQtZDhmNy00ZGFlLTllZjEtMDU1Yjk1NGU4NGU1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDAxNTQyN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTlkZjI4YWMyOTAxMGRkZjBkODFjY2FiMWVkMDA5YzY2MTNiNzViNGI4YjEyYzc3YzlmYTAwMmRkYmE3NDM4YzgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.zxKqjTpf__IW-lRO7BGLYpRMFY4v4_09xYBG1IMRqsA)
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`.