Skip to content

Orbit-btw/OrbitScout

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸͺ OrbitScout

GitHub workflow-optimizing bot for the Orbit organization

CI License: MIT Node.js TypeScript

Design-first workflow automation β€” because great tools should be beautiful too.


✦ About

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.


✦ Features

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

Coming Soon (Phase 2)

Feature Description
⏰ Stale Detection Auto-warn and unassign inactive issues/PRs
⚠️ Merge Conflicts Notify PR authors about merge conflicts
πŸ“‹ PR Checklist Enforce PR requirements before review
πŸ—ΊοΈ Area Labels Auto-label PRs based on file paths changed

✦ Commands

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

Example Interaction

πŸ‘€ 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`

✦ Configuration

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"

✦ Getting Started & Deployment

OrbitScout is a Machine User Bot (authenticated via a Personal Access Token), completely decoupled from the GitHub App/Probot framework.


✦ Contributing

We welcome contributions! Please read our Contributing Guidelines before submitting a pull request.


✦ License

MIT β€” built by the Orbit team.


✦ Credits

  • Inspired by zulipbot by the Zulip team
  • Built with Octokit & Express β€” acts as a Machine User
  • Part of the Orbit design-first development ecosystem

πŸͺ Orbit β€” Design First. Zero Friction. Open Source.

Website Β· GitHub Β· LinkedIn

About

GitHub workflow bot by @Orbit-btw

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors