{"id":20082083,"url":"https://github.com/exercism/probby","last_synced_at":"2025-05-06T00:31:36.719Z","repository":{"id":39863270,"uuid":"325071498","full_name":"exercism/probby","owner":"exercism","description":"Probby is the friendly Exercism problem-specs robot.","archived":false,"fork":false,"pushed_at":"2024-11-01T21:34:25.000Z","size":798,"stargazers_count":2,"open_issues_count":2,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-20T11:24:25.311Z","etag":null,"topics":["community-contributions-paused"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exercism.png","metadata":{"funding":{"github":["exercism"],"custom":["https://exercism.org/donate"]},"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-28T17:16:02.000Z","updated_at":"2024-09-17T06:40:36.000Z","dependencies_parsed_at":"2024-03-01T15:27:05.467Z","dependency_job_id":"ccb8333c-8f43-4e45-a1b3-6783187d838d","html_url":"https://github.com/exercism/probby","commit_stats":{"total_commits":37,"total_committers":8,"mean_commits":4.625,"dds":0.5945945945945945,"last_synced_commit":"03d76cd104fadc39b448fbbcf658b0a01d43c484"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Fprobby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Fprobby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Fprobby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exercism%2Fprobby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exercism","download_url":"https://codeload.github.com/exercism/probby/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251447203,"owners_count":21590844,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["community-contributions-paused"],"created_at":"2024-11-13T15:41:45.847Z","updated_at":"2025-05-06T00:31:36.062Z","avatar_url":"https://github.com/exercism.png","language":"TypeScript","funding_links":["https://github.com/sponsors/exercism","https://exercism.org/donate"],"categories":[],"sub_categories":[],"readme":"# probby\n\nProbby is the friendly Exercism problem-specs robot.\n\n## Usage\n\n### `problem-specifications` repo\n\n1. Create a machine user with write access to all tracks that you want to push to.\n2. Create a Personal Access Token (★) with the `public_repo` scope for the machine user.\n3. Create an environment called `probby_environment`\n   1. Add up to 6 trusted reviewers as _Required reviewers_. **Make sure to hit _Save protection rules_!**\n   2. Create an **environment** secret `PROBBY_TOKEN` with the PAT (★) from above as content.\n4. Add the workflow below as `.github/workflows/probby.yml`.\n5. Change the value of `track-repos` to suit your needs.\n\n```yaml\nname: Probby\n\non:\n  push:\n    branches:\n      - 'probby-tests'\n\njobs:\n  parse-push:\n    name: Parse push event and prepare payload\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n\n      - uses: SaschaMann/probby/actions/parse-push@v1\n        id: parse-push\n\n      - uses: actions/upload-artifact@v2\n        with:\n          name: payload\n          path: ${{ steps.parse-push.outputs.payload-file }}\n\n  notifier:\n    name: Send notifications to track repos\n    runs-on: ubuntu-latest\n    needs: parse-push\n    environment: probby_environment\n    steps:\n      - name: Download payload.json\n        id: download\n        uses: actions/download-artifact@v2\n        with:\n          name: payload\n\n      - uses: SaschaMann/probby/actions/notifier@v1\n        with:\n          token: ${{ secrets.PROBBY_TOKEN }}\n          # Comma-separated list of track repos to send a notification to\n          track-repos: c,javascript,julia\n          payload-file: ${{ steps.download.outputs.download-path }}/payload.json\n```\n\n### Track repos\n\n#### `issue-receiver`\n\n1. Add the workflow below as `.github/workflows/probby.yml`:\n\n```yaml\nname: Probby\n\non:\n  repository_dispatch:\n\njobs:\n  issue-receiver:\n    name: Issue Receiver\n    runs-on: ubuntu-latest\n    steps:\n      - uses: SaschaMann/probby/packages/issue-receiver@v1\n```\n\n**Note:** This _must_ be merged to the default branch or it will not work.\n\n## Writing your own receivers\n\nIf you want to do something different than opening an issue to respond to the `repository_dispatch` event, e.g. triggering the test generators of the track, you can write your own action that parses and acts on the `client_payload`.\nYou can find the spec of the `client_payload` in [`notification-spec/`](notification-spec/)\n\nIf you want to implement the receiving action in your track's language to make it easier to maintain for your track maintainers, you can use a [composite run steps action](https://docs.github.com/en/free-pro-team@latest/actions/creating-actions/creating-a-composite-run-steps-action) instead of a [JavaScript/TypeScript action](https://docs.github.com/en/free-pro-team@latest/actions/creating-actions/creating-a-javascript-action).\nThe event payload, including the `client_payload`, can be accessed via the environment variable [`GITHUB_EVENT_PATH`](https://docs.github.com/en/free-pro-team@latest/actions/reference/specifications-for-github-hosted-runners#file-systems).\n\n## Development\n\nSee [CONTRIBUTING](./CONTRIBUTING.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexercism%2Fprobby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexercism%2Fprobby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexercism%2Fprobby/lists"}