OpenHuman uses .github/workflows/contributor-rewards.yml to invite eligible
contributors into the Discord and merch reward flow.
The workflow runs when:
- a pull request is merged and the PR author has no earlier merged PR in this repository;
- a maintainer applies the
reward userlabel to a pull request; - a maintainer applies the
reward userlabel to an issue; - a maintainer runs the workflow manually to bootstrap the labels.
The workflow creates these labels if they do not already exist:
reward user- maintainer-triggered reward invite;reward sent- audit label added after the invite comment is posted.
Each reward comment includes a hidden marker scoped to the GitHub login:
<!-- openhuman-contributor-reward:user=<login> -->Automatic first-merged-PR rewards are skipped when the same login already has a
reward marker elsewhere in the repository. Maintainers can intentionally start
the flow again by applying reward user, but the workflow still skips a target
issue or PR that already contains the same marker.
Bot accounts are skipped.
Configure these repository variables under Settings -> Secrets and variables -> Actions -> Variables:
| Variable | Required | Purpose |
|---|---|---|
CONTRIBUTOR_REWARD_DISCORD_URL |
No | Public Discord invite URL. Defaults to https://discord.tinyhumans.ai/. |
CONTRIBUTOR_REWARD_MERCH_URL |
No | Public merch claim or redemption URL included in the comment. |
CONTRIBUTOR_REWARD_MESSAGE |
No | Full custom comment body. Supports tokens listed below. |
CONTRIBUTOR_REWARD_MESSAGE can use these tokens:
{user}- GitHub mention, for example@octocat;{login}- raw GitHub login;{discord_url}- configured Discord URL;{merch_url}- configured merch URL or an empty string;{reason}- trigger reason;{target_url}- issue or PR URL.
Do not put private Discord invite mechanics, shipping forms, access tokens, or other secrets in repository variables used by this workflow. Anything rendered by the workflow is posted as a public GitHub comment.
The workflow uses pull_request_target so it can comment on pull requests from
forks. It must not check out or execute pull request code. The current workflow
only reads the GitHub event payload and calls GitHub APIs through
actions/github-script.
Required permissions are limited to:
contents: read;issues: write;pull-requests: read.
To reward a contributor manually:
- Open the issue or pull request.
- Apply the
reward userlabel. - Wait for the workflow to post the reward comment and add
reward sent.
If the labels do not exist yet, run Actions -> Contributor Rewards -> Run
workflow once on main.