[!IMPORTANT] While this tool helps document your GitHub contributions, it’s crucial to remember that your impact and value to a company extends far beyond what’s visible in GitHub. Many critical aspects of software engineering - such as mentoring, documentation, cross-team collaboration, and technical leadership - often happen outside of version control. For more on this topic, check out Glue Work, an excellent resource about the often-overlooked but essential work that makes teams successful.
repo
and read:org
scopesSet up your environment variables:
cp .env{.example,}
Run the setup script to configure your environment:
./script/setup
Run the tool:
./reflect --username <github-username> --lookback <months-to-look-back> --brag
This will generate three markdown files in the output
directory:
Run the tool:
./reflect --username <github-username> --lookback <months-to-look-back> [--brag]
Example:
./reflect --username bostonaholic --lookback 6 --brag
Required:
--username <username>
: Your GitHub username to fetch activity for--lookback <number>
: Number of months to look back for activity (must be a positive number)Optional:
--provider <provider>
: LLM provider to use (e.g., openai, anthropic), defaults to openai--model <model>
: LLM model to use. For OpenAI (e.g., gpt-4, gpt-3.5-turbo), defaults to gpt-4o. For Anthropic (e.g., claude-3-7-sonnet-20250219), defaults to claude-3-7-sonnet-20250219--brag
: Optional flag to generate a summary and brag document--include-orgs <orgs...>
: Only include contributions from these organizations (mutually exclusive with –exclude-orgs)--exclude-orgs <orgs...>
: Exclude contributions from these organizations (mutually exclusive with –include-orgs)--include-repos <repos...>
: Only include contributions from these repositories (mutually exclusive with –exclude-repos)--exclude-repos <repos...>
: Exclude contributions from these repositories (mutually exclusive with –include-repos)Basic usage:
./reflect --username bostonaholic --lookback 6 --brag
Choose a model:
./reflect --username bostonaholic --lookback 6 --model gpt-3-5-turbo --brag
Choose an LLM provider and model
./reflect --username bostonaholic --lookback 6 --provider anthropic --model claude-3-7-sonnet-20250219 --brag
Filter by specific organizations:
./reflect --username bostonaholic --lookback 6 --include-orgs shopify github
Exclude specific organizations:
./reflect --username bostonaholic --lookback 6 --exclude-orgs secret archived
Filter by specific repositories:
./reflect --username bostonaholic --lookback 6 --include-repos bostonaholic/reflect bostonaholic/dotfiles
Exclude specific repositories:
./reflect --username bostonaholic --lookback 6 --exclude-repos bostonaholic/secret bostonaholic/archived
Required environment variables:
GITHUB_TOKEN
: Your GitHub Personal Access Token (required)To create a GitHub Personal Access Token:
repo
(Full control of private repositories)read:org
(Read organization data).env
fileRequired for making LLM calls (one of):
OPENAI_API_KEY
ANTHROPIC_API_KEY
Optional for using a different provider-compatible endpoint:
OPENAI_BASE_URL
ANTHROPIC_BASE_URL
The script will generate one or more markdown files in the output
directory:
Contains:
Contains:
Contains:
Note: The output
directory and all generated files are automatically git-ignored to prevent accidental commits.
If you get TypeScript errors, ensure you’re using Node.js v22 or higher:
node --version
If you get GitHub API errors:
.env
filerepo
and read:org
)If the script runs but generates an empty file:
If you get an error about the OpenAI API key:
.env
fileIf you get environment variable errors:
.env
file exists and is properly formatted=
sign in your .env
file.env
file is in the root directory of the project