GitHub workflow-optimizing bot for the Orbit organization
Design-first workflow automation β because great tools should be beautiful too.
OrbitScout is a GitHub App bot that optimizes issue and pull request workflows across the Orbit organization. It works around GitHub's binary permission model β allowing any contributor to self-assign issues, manage labels, and receive automated notifications, without requiring full write access to the repository.
Inspired by zulipbot, built from the ground up with modern tooling for the Orbit ecosystem.
| Feature | Description |
|---|---|
| π― Issue Claiming | Self-assign issues via comments β no write access needed |
| π·οΈ Label Management | Add/remove labels via commands, with protected label support |
| π Welcome Messages | Greet first-time contributors on their first issue or PR |
| π In-Progress Tracking | Automatically tag claimed issues with status labels |
| π Permission Guards | Protected labels, claim limits, and self-only labeling |
| βοΈ Per-Repo Config | Each repo can customize behavior via .github/orbitscout.yml |
| Feature | Description |
|---|---|
| β° Stale Detection | Auto-warn and unassign inactive issues/PRs |
| Notify PR authors about merge conflicts | |
| π PR Checklist | Enforce PR requirements before review |
| πΊοΈ Area Labels | Auto-label PRs based on file paths changed |
All commands are triggered by mentioning @OrbitScout in an issue or PR comment.
| Command | Description | Context |
|---|---|---|
@OrbitScout claim |
Assign yourself to the issue | Issues |
@OrbitScout take |
Alias for claim |
Issues |
@OrbitScout abandon |
Unassign yourself from the issue | Issues/PRs |
@OrbitScout drop |
Alias for abandon |
Issues/PRs |
@OrbitScout label "bug" |
Add the bug label |
Issues/PRs |
@OrbitScout label "bug" "urgent" |
Add multiple labels | Issues/PRs |
@OrbitScout unlabel "bug" |
Remove the bug label |
Issues/PRs |
@OrbitScout help |
Show available commands | Issues/PRs |
π€ Contributor: @OrbitScout claim
π€ OrbitScout: β
@contributor β you've been assigned to this issue.
Happy building! πͺ
π€ Contributor: @OrbitScout label "bug" "good first issue"
π€ OrbitScout: π·οΈ @contributor β added labels: `bug`, `good first issue`
Each repository can customize OrbitScout by creating a .github/orbitscout.yml file. Any values not specified will use the defaults.
π Full Configuration Reference
# .github/orbitscout.yml
# Issue commands
issues:
commands:
claim:
enabled: true
aliases:
- claim
- take
# Max issues a new contributor can claim simultaneously
maxClaimsForNewContributors: 2
# Label applied when an issue is claimed
inProgressLabel: "π in progress"
abandon:
enabled: true
aliases:
- abandon
- unclaim
- drop
label:
enabled: true
aliases:
- label
- add
# If true, only issue/PR creators can modify labels
selfOnly: false
# Labels that only collaborators can add/remove
protectedLabels:
- "priority/critical"
- "status/blocked"
unlabel:
enabled: true
aliases:
- unlabel
- remove
# Stale issue/PR management (Phase 2)
inactivity:
issues:
warningDays: 14
abandonDays: 21
pullRequests:
reminderDays: 30
# Merge conflict detection (Phase 2)
mergeConflicts:
enabled: true
label: "β has conflicts"
# Welcome messages for first-time contributors
welcome:
enabled: true
newIssueMessage: >
π Welcome to Orbit, @{user}! Thanks for opening your first issue here.
Check out our [contributing guidelines](CONTRIBUTING.md) to get started.
newPRMessage: >
π Welcome to Orbit, @{user}! Thanks for your first pull request!
A maintainer will review it soon. πͺ
# Area labels based on file paths (Phase 2)
areaLabels:
enabled: false
mappings:
"src/fonts/**": "area/fonts"
"scripts/**": "area/tooling"
"docs/**": "area/docs"OrbitScout is a Machine User Bot (authenticated via a Personal Access Token), completely decoupled from the GitHub App/Probot framework.
- To deploy OrbitScout for your organization: Follow our step-by-step Deployment Guide.
- To run OrbitScout locally for development: Check out our Contributing Guidelines.
We welcome contributions! Please read our Contributing Guidelines before submitting a pull request.
MIT β built by the Orbit team.
- Inspired by zulipbot by the Zulip team
- Built with Octokit & Express β acts as a Machine User
- Part of the Orbit design-first development ecosystem