This document describes all available manager commands that can be executed via GitHub issue or pull request comments using the @holdex bot.
All commands follow the pattern:
@holdex <object> <action> [arguments...]
Arguments can be provided as:
--key=value or --key="value with spaces"Adds a user to a GitHub organization with a specified role.
Access: Manager only
Location: Issue comments only (not in pull requests)
Command:
@holdex user add --username=<username> --role=<role> [--org=<org>]
Arguments:
| Property | Type |
|---|---|
org |
string |
username (*) |
string (min length: 1) |
role (*) |
'admin' | 'member' |
(*) Required.
Example:
@holdex user add --org=holdex --username=johndoe --role=member
Applies repository settings including visibility, branch protection, and merge settings.
Access: Manager only
Location: Issue comments only (not in pull requests)
Command:
@holdex repo settings <repoInput> | --repoInput=<repoInput> --visibility=<visibility> --deleteBranchOnMerge=<deleteBranchOnMerge> --allowUpdateBranch=<allowUpdateBranch>
Arguments:
| Property | Type | Default |
|---|---|---|
repoInput (*) |
string (min length: 1) |
|
visibility (*) |
'private' | 'public' |
|
deleteBranchOnMerge |
string |
'true' |
allowUpdateBranch |
string |
'true' |
(*) Required.
Example:
@holdex repo settings holdex/my-repo --visibility=private --deleteBranchOnMerge=true --allowUpdateBranch=true
Attaches a Google Doc agreement to a GitHub issue. Duplicates a template document, performs text replacements, creates a Didit verification session, and updates the issue with links.
Access: Manager only
Location: Issue comments only (not in pull requests)
Command:
@holdex agreement attach [<issueUrl> | --issueUrl=<issueUrl>] --firstName=<firstName> --lastName=<lastName> [--roleTitle=<roleTitle>] [--gmailEmail=<gmailEmail>] [--commencementDate=<commencementDate>] [--idNumber=<idNumber>] [--ratePerHour=<ratePerHour>] [--regAddress=<regAddress>] [--phoneNumber=<phoneNumber>] [--dateOfBirth=<dateOfBirth>] [--assigneeUsername=<assigneeUsername>]
Arguments:
| Property | Type |
|---|---|
issueUrl |
string |
firstName (*) |
string (min length: 1) |
lastName (*) |
string (min length: 1) |
roleTitle |
string |
gmailEmail |
string |
commencementDate |
string |
idNumber |
string |
ratePerHour |
string |
regAddress |
string |
phoneNumber |
string |
dateOfBirth |
string |
assigneeUsername |
string |
(*) Required.
Example:
@holdex agreement attach https://github.com/org/repo/issues/123 --firstName=John --lastName=Doe --assigneeUsername=johndoe
Replacement Value Flags (all optional):
These flags are used to replace placeholders in the Google Doc template:
--firstName: Member first name--lastName: Member last name--roleTitle: Member role title (i.e.: Executive Assistant) - Default: "Software Developer"--gmailEmail: Member Gmail address--commencementDate: Member commencement date (YYYY-MM-DD)--idNumber: Member ID number--ratePerHour: Member rate per hour (USD)--regAddress: Member registered address--phoneNumber: Member phone number (i.e.: +852 7777 7777)--dateOfBirth: Member date of birth (YYYY-MM-DD)Synchronizes issue types and labels for a repository according to the ledger configuration.
Access: Manager only
Location: Issue comments only (not in pull requests)
Command:
@holdex labels sync <repo> | --repo=<repo> [--owner=<owner>]
Arguments:
| Property | Type |
|---|---|
owner |
string |
repo (*) |
string (min length: 1) |
(*) Required.
Example:
@holdex labels sync my-repo --owner=holdex
Onboards a new employee to the GitHub HR system. Creates a repository, README, invites the user, syncs labels, and creates HR-related issues.
Access: Manager only
Location: Issue comments only (not in pull requests)
Command:
@holdex member onboard --firstname=<firstname> --lastname=<lastname> --githubUsername=<githubUsername>
Arguments:
| Property | Type |
|---|---|
firstname (*) |
string (min length: 1) |
lastname (*) |
string (min length: 1) |
githubUsername (*) |
string (min length: 1) |
(*) Required.
Example:
@holdex member onboard --firstname=John --lastname=Doe --githubUsername=johndoe
Command Execution Location: Each command has specific location restrictions (see individual command documentation above). Commands can be restricted to:
Command Pattern: Commands must follow the exact pattern @holdex <object> <action> [arguments...]. The object and action are case-insensitive and will be normalized to lowercase.
Error Handling: If a command fails, the bot will post a comment with error details, including the specific error message to help with troubleshooting.
Success Indication: Successful commands will add a reaction to your comment:
Asynchronous Execution: Commands are executed asynchronously. After parsing and validation, the command is triggered and runs in the background. The initial reaction (👀) indicates the command was accepted, while the final reaction (🚀) indicates completion.
Positional Arguments: Some commands support positional arguments as a convenience - they can be used instead of flags for common parameters. Positional arguments are captured for arguments that don't start with --.
Default Values: Some optional parameters have default values. Check individual command documentation above for details. If a parameter is not provided and has no default, it will be omitted.
Value Formatting:
--key="value with spaces" or --key='value with spaces'--key=value