{"id":13622844,"url":"https://github.com/stilliard/github-task-list-completed","last_synced_at":"2026-04-14T11:01:00.354Z","repository":{"id":38028180,"uuid":"183523728","full_name":"stilliard/github-task-list-completed","owner":"stilliard","description":"GitHub - Task list completed PR check","archived":false,"fork":false,"pushed_at":"2025-02-14T18:30:21.000Z","size":227,"stargazers_count":144,"open_issues_count":2,"forks_count":40,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-24T15:19:14.912Z","etag":null,"topics":["github-app","github-checks-api","glitch","probot-app"],"latest_commit_sha":null,"homepage":"https://github.com/marketplace/task-list-completed","language":"JavaScript","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/stilliard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null},"funding":{"github":"stilliard","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.buymeacoffee.com/stilliard"]}},"created_at":"2019-04-25T23:31:09.000Z","updated_at":"2025-04-14T14:47:01.000Z","dependencies_parsed_at":"2023-02-04T06:00:31.008Z","dependency_job_id":"660e1f7a-1463-44fc-ab47-a630629ad4e2","html_url":"https://github.com/stilliard/github-task-list-completed","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/stilliard/github-task-list-completed","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stilliard%2Fgithub-task-list-completed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stilliard%2Fgithub-task-list-completed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stilliard%2Fgithub-task-list-completed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stilliard%2Fgithub-task-list-completed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stilliard","download_url":"https://codeload.github.com/stilliard/github-task-list-completed/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stilliard%2Fgithub-task-list-completed/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31793225,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"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":["github-app","github-checks-api","glitch","probot-app"],"created_at":"2024-08-01T21:01:24.892Z","updated_at":"2026-04-14T11:01:00.332Z","avatar_url":"https://github.com/stilliard.png","language":"JavaScript","funding_links":["https://github.com/sponsors/stilliard","https://www.buymeacoffee.com/stilliard"],"categories":["JavaScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg width=\"140\" src=\"https://cdn3.iconfinder.com/data/icons/flat-office-icons-1/140/Artboard_1-4-512.png\"\u003e\u003c/p\u003e\n\n\nGitHub - Task list completed PR check\n=========================\n\nInstall from the Marketplace: https://github.com/marketplace/task-list-completed\n\nCheck a pull request body for task lists / checkboxes / tickboxes \u0026 make sure they are all completed.\nThe check will not pass until all task lists have been checked.\n\n**Mark it as a required check to preventing merging the PR until all tasks in a PR have been ticked off.**\n\nYou can use this to check manual tests or requirements have been ticked off before the pull request can be merged.\n\nE.g. Say you add some tasks like so\n```\n- [x] Check the size looks good on the front end\n- [ ] Check the image is centered\n```\n\n\u0026 they display like this to be ticked off as tests:\n\n![](./screenshots/example-pr.png)\n\nthis will show the check as pending as only 1 of the tasks is completed s (same if none etc.):\n\n![](./screenshots/tasks-remaining.png)\n\nOnce all tasks are marked off it'll show as completed:\n\n![](./screenshots/tasks-completed.png)\n\n\nAlso when viewing all Pull Requests, you'll see the green tick when all completed:\n![](./screenshots/success-pr.png)\n\n\u0026 an orange dot when still tasks todo:\n![](./screenshots/pending-pr.png)\n\n\u0026 if you have other CI tests such as unit tests etc, our pending status will not get in the way of failing tests, they will still show as the red cross:\n![](./screenshots/failing-pr.png)\n\n\nFind out more about GitHub task lists: https://help.github.com/en/articles/about-task-lists\n\n\u003cbr\u003e\n\u003ca href=\"https://m.do.co/c/60c76a17a70d\"\u003e\n    \u003cimg src=\"https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg\" alt=\"Powered By DO\" width=\"201px\"\u003e\n\u003c/a\u003e\n\n\u003csmall\u003eThis project is supported by \u0026 hosted on Digital Ocean, thanks!\u003c/small\u003e\n\n## Docs\n\nInstall \u0026 add to the repos you want.\n\nWant to require tasks to be complete before it can be merged?\n\nInside your GitHub repo \u003e Settings \u003e Branches \u003e Branch protection rules \u003e Add rule \u003e select require checks \u0026 require this check to pass.\n\nBy default, we mark the check as in_progress until all tasks pass and then it marks it as successful.\n\n## Skippable tasks\n\nTasks that contain \"POST-MERGE\" or \"N/A\" in all caps are skipped. This is useful for tasks that are not applicable to the PR, or tasks that are only applicable after the PR is merged.\nThis was inspired by [another project here](https://github.com/Shopify/task-list-checker/tree/main?tab=readme-ov-file#in-a-pull-request). \n\n## Optional tasks\n\nTasks that contain \"OPTIONAL\" in all caps are also skipped unless checked, they are also added to an \"(+X optional)\" text in the check. This is useful for tasks that are not required to be completed before the PR can be merged.\n\n## Contributing / Development\n\nCode previous ran on Glitch, now it's hosted on Digital Ocean.\nHosting is via multiple droplets, one configured as a load balancer \u0026 then additional worker nodes/droplets for the actual checks to run on.\n\n*For previous glitch deployments, on the glitch page, click tools \u003e console and then run `git pull origin master \u0026\u0026 refresh`.\nPermission changes would need to be changed in the app on github.*\n\n### Local development\n\nUsing node v18+ \u0026 npm 10+ (older versions may also work, your mileage may vary).\n\nLocal development can be done by cloning this repo:\n```bash\ngit clone https://github.com/stilliard/github-task-list-completed.git\ncd github-task-list-completed\n```\n\nSetup up an App inside GitHub:\nhttps://github.com/settings/apps/\n\nInstall \u0026 run:\n\n```bash\nnpm install\nnpm run dev\n```\n\nLoad up http://localhost:3000/probot and follow intructions to set up the app.\nOn first run, it will create your `.env` with an initial `WEBHOOK_PROXY_URL=xxxxx`.\nAfter following the set up, make sure you have `APP_ID`, `PRIVATE_KEY`, `WEBHOOK_SECRET` all set.\nYou can change the port it runs on with `PORT=3001` for example and set a `NODE_ENV=production` for production logs, [more details about logs here](https://probot.github.io/docs/logging/).\n\n\u003ca href=\"https://probot.github.io/docs/\"\u003e\n    View full Probot docs here.\n    \u003cbr\u003e\n    \u003cimg src=\"https://probot.github.io/assets/img/logo.png\" width=\"80\"\u003e\n\u003c/a\u003e\n\n\u003cbr\u003e\n\nTesting:\n```bash\nnpm test\n```\n\nFor production:\n```bash\nnpm install --omit=dev\nnpm start\n```\n\nInstead of `npm start`, typically in production you'll use a [service file to run via systemd](https://www.freedesktop.org/software/systemd/man/latest/systemd.syntax.html) or similar. \ne.g.\n```systemd\n[Service]\nExecStart=npm start\nWorkingDirectory=/srv/github-task-list-completed\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n```\n\nYou can also help support the hosting and development of this project with coffee power:\n\n\u003ca href=\"https://www.buymeacoffee.com/stilliard\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/default-orange.png\" alt=\"Buy Me A Coffee\" style=\"height: 51px !important;width: 217px !important;\" \u003e\u003c/a\u003e\n\n## Security\n\nAll code is Open source, [MIT license](./LICENSE). Production checks currently log repo name \u0026 PR ID for debug purposes only and logs are removed after a max of 7 days.\nNo logs are recorded about your repos themselves nor the pull request contents.\n\nHosted check is on DO's [SFO3](https://www.digitalocean.com/blog/introducing-a-new-datacenter-in-the-san-francisco-region-sfo3).\n\nIf you discover a security issue please email it to myself at andrew@stapps.io and I will get back to you asap. For all other issues or help you can create an issue on this project - Thank you.\n\n## Credits \n\n- [Probot](https://github.com/probot/probot) - Used to build this project\n- [Glitch](https://glitch.com/) - Previously used to start this project\n- [WIP](https://github.com/wip/app) - Inspiration for this project\n- [Juliia Osadcha / iconfinder](https://www.iconfinder.com/icons/1790658/checklist_checkmark_clipboard_document_list_tracklist_icon) Icon used for this project\n- [DigitalOcean](https://m.do.co/c/60c76a17a70d) - Hosting of the live app check\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstilliard%2Fgithub-task-list-completed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstilliard%2Fgithub-task-list-completed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstilliard%2Fgithub-task-list-completed/lists"}