A Symfony CLI application that turns a GitHub organization's activity into the static JSON files a contributors website can consume.
Originally based on PrestaShop/traces.
composer install
cp .env.example .env # then set GH_TOKEN
cp config.dist.yml config.ymlEvery call is a read on public data, so a fine-grained token scoped to Public repositories (read-only), without any additional permission, is enough.
It is read from GH_TOKEN, either exported in the environment or set in .env.
Every command accepts --config (default config.dist.yml). make generate runs them in order.
Generated files land in output/.
# 1- Fetch the organization repositories
$ php bin/console traces:fetch:repositories
## output/gh_repositories.json
# 2- Fetch contributors and their commits (-r limits it to one repository)
$ php bin/console traces:fetch:contributors -r <repository>
## output/contributors.json
# 3- Fetch merged pull requests
$ php bin/console traces:fetch:pullrequests:merged
## output/gh_pullrequests.json
# 4- Fetch every pull request and its reviews
$ php bin/console traces:fetch:pullrequests:all
## output/gh_pullrequests_all.json
# 5- Fetch issues (pull requests excluded)
$ php bin/console traces:fetch:issues
## output/gh_issues.json
# 6- Fetch published security advisories and their credits
$ php bin/console traces:fetch:security-advisories
## output/gh_security_advisories.json
# 7- Generate contributor statistics
$ php bin/console traces:generate:contributors
## output/contributors_prs.json
# 8- Generate the newcomers list
$ php bin/console traces:generate:newcontributors --limitNew=10
## output/newcontributors.json
# 9- Generate the reviewers/issues/pull-requests leaderboards
$ php bin/console traces:generate:topstats
## output/top_reviewers.json, output/top_issues.json, output/top_pullrequests.json
## and output/contributors_prs.json is enriched with reviews / issuesOpened / pullRequestsOpened
# 10- Generate the security contributors leaderboard
$ php bin/console traces:generate:topsecurity
## output/top_security.jsonSee config.dist.yml.
| Option | Description |
|---|---|
| organization | GitHub organization to read from. Required. |
| exclusions | Logins to leave out (bots, service accounts). |
| keepExcludedUsers | Flag excluded contributors instead of filtering them out. |
| fieldsWhitelist | Fields kept from the API result. Leave blank to keep them all. |
| keptRepositories | Archived repositories to keep anyway. |
| mirroredRepositories | Read-only splits: their commits are skipped, their pull requests kept. |
| repositoryCategories | Repositories grouped by category. Anything unlisted falls into others. |
make hooks # run the quality suite before every commit
make qa # cs + stan + psalm + coverage
make cs-fix # apply the coding standardThe project follows the Sylius coding standard, is analysed with PHPStan and tested with PHPUnit.
MIT, see LICENSE.md. Copyright (c) Since 2007 PrestaShop, (c) 2026 Guiziweb.