{"id":19573253,"url":"https://github.com/yrtimid/github-codewatchers","last_synced_at":"2026-04-02T00:21:36.850Z","repository":{"id":219390584,"uuid":"742574203","full_name":"yrtimiD/github-codewatchers","owner":"yrtimiD","description":"GitHub Action that triggers notifications about changed files to a list of subscribers.","archived":false,"fork":false,"pushed_at":"2026-03-23T00:25:09.000Z","size":1732,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-23T20:09:08.019Z","etag":null,"topics":["actions","codeowners","github","notify"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yrtimiD.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2024-01-12T19:29:43.000Z","updated_at":"2026-03-23T00:19:25.000Z","dependencies_parsed_at":"2024-11-11T06:33:09.028Z","dependency_job_id":"a3ebadfb-c890-42b7-a9dd-9d21fa6969de","html_url":"https://github.com/yrtimiD/github-codewatchers","commit_stats":null,"previous_names":["yrtimid/github-codewatchers"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/yrtimiD/github-codewatchers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yrtimiD%2Fgithub-codewatchers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yrtimiD%2Fgithub-codewatchers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yrtimiD%2Fgithub-codewatchers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yrtimiD%2Fgithub-codewatchers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yrtimiD","download_url":"https://codeload.github.com/yrtimiD/github-codewatchers/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yrtimiD%2Fgithub-codewatchers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31293356,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["actions","codeowners","github","notify"],"created_at":"2024-11-11T06:32:54.387Z","updated_at":"2026-04-02T00:21:36.831Z","avatar_url":"https://github.com/yrtimiD.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# github-codewatchers Commit notifier\n\n\u003e GitHub Action that triggers notifications about changed files to a list of subscribers.\n\n## Configuration\nSubscriptions are managed in a [CODEOWNERS](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners) like file where file patterns are associated with users. You can use standard `.github/CODEOWNERS` file or make a new one called `.github/CODEWATCHERS` (can use any name) to have a better configuration flexibility.\n\n### Inputs\n* `GITHUB_TOKEN` (required) - token for interaction with GitHub API, standard GITHUB_TOKEN secret provided to each workflow is good enough\n* `codewatchers` (optional) - location of the subscriptions file, default is \".github/CODEWATCHERS\"\n* `codewatchers_ref` (optional) - the ref to use when loading the CODEWATCHERS file, default is github.ref\n* `ignore_own` (optional) - toggles if committer will get notifications for own commits (boolean, default is \"true\")\n* `sha_from` and `sha_to` (required) - commits range to analize. Usually these are taken from the [push](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#push) event (see example below)\n* `aggregate_files_limit` (optional) - Limit after which files list will be replaced with aggregated summary message. (integer, default is 20)\n* `aggregate_notifications_limit` (optional) - Limit after which many notifications will be replaces with a single aggregated summary message (for each distinct group of subscribers). (integer, default is 5)\n\nAction doesn't requires repository checkout, all operations are done via GitHub API\n\n```yaml\nname: Commit Notify\non: push\njobs:\n  get-notifications:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Check commits\n        id: check\n        uses: yrtimiD/github-codewatchers@v1\n        with:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          codewatchers: '.github/CODEWATCHERS'\n          codewatchers_ref: 'main'\n          ignore_own: true\n          sha_from: ${{ github.event.before }}\n          sha_to: ${{ github.event.after }}\n          aggregate_files_limit: 20\n          aggregate_notifications_limit: 5\n    outputs:\n      notifications: ${{ steps.check.outputs.notifications }}\n```\n\n### Output\nIf any commit has files matched to subsciption rules - action will output an array of watchers (as simplified [GitHub API User](https://docs.github.com/en/rest/users/users?apiVersion=2022-11-28#get-a-user)) and commit (as simplified [GitHub API Commit](https://docs.github.com/en/rest/commits/commits?apiVersion=2022-11-28#get-a-commit)) object.\n\nSimplified version of output looks next (only most useful fields are shown):\n```json\n{\n  \"commit\": {\n    \"sha\": \"5fd3a8a657f7d78b8e8cdb2747585b24607f7e05\",\n    \"commit\": {\n      \"message\": \"testing\",\n      \"author\": {\n        \"name\": \"Example User\",\n        \"email\": \"example@example.com\",\n        \"date\": \"2024-04-13T08:00:00Z\"\n      },\n      \"committer\": {\n        \"name\": \"Example User\",\n        \"email\": \"example@example.com\",\n        \"date\": \"2024-04-13T08:00:00Z\"\n      }\n    },\n    \"html_url\": \"https://github.com/example/example/commit/5fd3a8a657f7d78b8e8cdb2747585b24607f7e05\",\n    \"stats\": {\n      \"total\": 2,\n      \"additions\": 1,\n      \"deletions\": 1\n    },\n    \"files\": [\n      {\n        \"filename\": \"some/file/was/changed.txt\",\n        \"status\": \"modified\",\n        \"additions\": 1,\n        \"deletions\": 1,\n        \"changes\": 2,\n        \"blob_url\": \"https://github.com/example/example/blob/8b61fc1be2ebe2cfe5102587f55ffabd25a58fa5/some%2Ffile%2Fwas%2Fchanged.txt\",\n        \"raw_url\": \"https://github.com/example/example/raw/8b61fc1be2ebe2cfe5102587f55ffabd25a58fa5/some%2Ffile%2Fwas%2Fchanged.txt\"\n      }\n    ]\n  },\n  \"watchers\": [\n    {\n      \"login\": \"somewatcher\",\n      \"name\": \"Some Watcher\",\n      \"email\": \"Some.Watcher@example.com\"\n    }\n  ]\n}\n```\n\n## Usage Example\nSee full workflow example in [.github/workflows/commit-notify.yml](.github/workflows/commit-notify.yml/)\n\nExample of `.CODEWATCHERS` file\n```\n*.md         tech_writer@example.com\n*.sql        dba@example.com\npackage.json @somewatcher\n```\n\n## Known limitations\n* Only up to 3000 files from each commit can be matched (Limitation of [Get a commit](https://docs.github.com/en/rest/commits/commits?apiVersion=2022-11-28#get-a-commit) GitHub API )\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyrtimid%2Fgithub-codewatchers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyrtimid%2Fgithub-codewatchers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyrtimid%2Fgithub-codewatchers/lists"}