{"id":168813,"name":"checkmate","ecosystem":"hackage","description":"\n\n[Index] [Quick Jump]\n\nStatic link\n\nUse -f \u003cflag\u003e to enable a flag, or -f -\u003cflag\u003e to disable that flag. More info\n\nPackage maintainers\n\nFor package maintainers and hackage trustees\n\nCandidates\n\n\n\n\n\n\n\nCheckmate is a small program to generate human-readable checklists from\na given patch (or pull request).  Leave CHECK comments (that are the same\nfashion as FIXME or TODO comments); then Checkmate detects when a diff\ntouches some code scopes having any CHECK comments, and lists the checks.\n\nIt helps contributors and reviewers to remind matters that require attention\nwhen a part of the code is changed.\n\nLet's say there's a dictionary, and we should update the manual when a key\nis added to or removed from it:\n\nThe above example may be artificial, but suppose lines of the dictionary are\nlengthy.  Such tasks should be done outside of the source code repository\nso that they cannot be automated by simply eliminating code duplicates.\nContributors and reviewers altogether are easy to forget about such tasks.\n\nTo remind peers of such tasks, Checkmate detects CHECK comments like the above\nexample when a relevant code block is touched and show peers a checklist.\n\nHow does Checkmate list only relevant checks to a diff?  It currently doesn't\nhave any language-specific algorithms, but only a language-agnostic heuristics\non indented blocks.\n\nSuppose the following diff:\n\nSince it touched a code block with a CHECK comment, Checkmate generates\nthe following checklist:\n\nSuppose a patch touches only code blocks without any CHECK comments too, e.g.:\n\nSince the touched block doesn't have any CHECK comments, Checkmate generates\nan empty checklist.\n\nNote that it doesn't parse code's semantics, but only scans blocks through\nindentation.  Even if a block is wrapped in curly braces without indentation,\nit isn't counted as a block.\n\nSome checks may need to be listed for a whole directory.  Checkmate recognizes\nfiles named .check or CHECK in a directory and include checks in that to\nthe checklist if any file in the directory are changed.  Its syntax is basically\na simple bullet list and a bullet can be */-/+/CHECK or digits followed\nby ./), e.g.:\n\nWe provide an official Linux x86_64 binary for every release.  See also\nthe latest release.  Note that official binaries are distributed as\nstatically-linked standalone executable, and they aren't gzipped.  Download and\ngive an +x permission; then it's ready.\n\nOn the other platforms you can download and install using Haskell Cabal\nor Stack since source tarballs also are distributed on Hackage:\n\nNote: if you experience an error like ConnectionFailure Network.BSD.getProtocolByName: does not exist (no such protocol name: tcp)\non Debian/Ubuntu Linux, try to install netbase package.\n(Read this explanation for details.)\n\nSince Checkmate usually is executed as a part of CI build, we show examples\nfor widely-used CI services.\n\nAll examples assume the environment variables are defined:\n\nGITHUB_TOKEN contains the access token to leave comments on a\ncorresponding GitHub repository.  See also GitHub's official article\nabout personal API tokens.\n\nCHECKMATE_DOWNLOAD_URL contains the download link to the prebuilt binary\nof the latest release, i.e.:\n\nYou can run checkmate github command with explicit arguments:\n\nIf you're using GitHub Enterprise on premise use --endpoint option.\nFurther reading: checkmate github --help.","homepage":"https://github.com/dahlia/checkmate#readme","licenses":"AGPL-3.0-only","normalized_licenses":["AGPL-3.0-only"],"repository_url":"https://github.com/dahlia/checkmate","keywords_array":["agpl","development","library","program","Propose Tags"],"namespace":null,"versions_count":11,"first_release_published_at":"2017-09-19T16:14:09.000Z","latest_release_published_at":"2018-08-31T19:17:03.000Z","latest_release_number":"0.4.0","last_synced_at":"2026-05-01T22:00:45.101Z","created_at":"2022-04-05T18:31:34.501Z","updated_at":"2026-05-01T22:02:44.139Z","registry_url":"https://hackage.haskell.org/package/checkmate","install_command":"cabal install checkmate","documentation_url":null,"metadata":{},"repo_metadata":{"id":62435705,"uuid":"103856979","full_name":"dahlia/checkmate","owner":"dahlia","description":"Generate checklists relevant to a given patch","archived":false,"fork":false,"pushed_at":"2018-08-31T18:52:42.000Z","size":85,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-09-27T09:29:39.117Z","etag":null,"topics":["checklist","code-review","linter","project-management"],"latest_commit_sha":null,"homepage":"https://hackage.haskell.org/package/checkmate","language":"Haskell","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/dahlia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-17T19:46:56.000Z","updated_at":"2021-04-16T18:04:05.000Z","dependencies_parsed_at":"2022-11-01T21:16:51.106Z","dependency_job_id":null,"html_url":"https://github.com/dahlia/checkmate","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/dahlia/checkmate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dahlia","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32514340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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"},"owner_record":{"login":"dahlia","name":"Hong Minhee (洪 民憙)","uuid":"12431","kind":"user","description":"A software engineer from Seoul.  An advocate of F/OSS, fediverse, and cypherpunk. Hack into East Asian languages.","email":"hong@minhee.org","website":"https://hongminhee.org/","location":"Seoul, Republic of Korea","twitter":"hongminhee","company":"@fedify-dev","icon_url":"https://avatars.githubusercontent.com/u/12431?u=93aabac3b6cdf0cccfa5ad756adfb4e6e32ebe10\u0026v=4","repositories_count":263,"last_synced_at":"2026-04-29T14:48:36.930Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/dahlia","funding_links":["https://github.com/sponsors/dahlia"],"total_stars":8104,"followers":1321,"following":310,"created_at":"2022-11-02T16:36:45.087Z","updated_at":"2026-04-29T14:48:36.930Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dahlia","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dahlia/repositories"},"tags":[{"name":"0.4.0","sha":"1a7a1122dd02cb0e2539e7418f2c9ad7717d29d6","kind":"tag","published_at":"2018-08-31T18:52:32.000Z","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/0.4.0","html_url":"https://github.com/dahlia/checkmate/releases/tag/0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dahlia/checkmate@0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.4.0/manifests"},{"name":"0.3.3","sha":"72db7be2e0f8519fee8385019ad6516246e3c9ab","kind":"tag","published_at":"2018-05-15T18:21:01.000Z","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/0.3.3","html_url":"https://github.com/dahlia/checkmate/releases/tag/0.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dahlia/checkmate@0.3.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.3.3/manifests"},{"name":"0.3.2","sha":"514c7d87cd52bd0d2bee8642974147bd402fe4f2","kind":"tag","published_at":"2017-11-03T20:25:58.000Z","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/0.3.2","html_url":"https://github.com/dahlia/checkmate/releases/tag/0.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dahlia/checkmate@0.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.3.2/manifests"},{"name":"0.3.1","sha":"e4d1ec8f3a220fefe9734a29d5be3fa446e7b19e","kind":"tag","published_at":"2017-11-02T18:50:15.000Z","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/0.3.1","html_url":"https://github.com/dahlia/checkmate/releases/tag/0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dahlia/checkmate@0.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.3.1/manifests"},{"name":"0.3.0","sha":"3d25b88ec1b959566ab919465b13e552007ea1dc","kind":"tag","published_at":"2017-10-20T20:19:43.000Z","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/0.3.0","html_url":"https://github.com/dahlia/checkmate/releases/tag/0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dahlia/checkmate@0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.3.0/manifests"},{"name":"0.2.1","sha":"e9e9a3a31248b95aad324ce0ade5c85b7ae0234e","kind":"tag","published_at":"2017-09-25T19:01:18.000Z","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/0.2.1","html_url":"https://github.com/dahlia/checkmate/releases/tag/0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dahlia/checkmate@0.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.2.1/manifests"},{"name":"0.2.0","sha":"0dafcb95eea9e5096503a387a6b1a7721942fc14","kind":"tag","published_at":"2017-09-24T21:53:26.000Z","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/0.2.0","html_url":"https://github.com/dahlia/checkmate/releases/tag/0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dahlia/checkmate@0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.2.0/manifests"},{"name":"0.1.4","sha":"b1c8835d9b2e738478fc303c9fafe1a695b885d2","kind":"tag","published_at":"2017-09-20T20:44:59.000Z","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/0.1.4","html_url":"https://github.com/dahlia/checkmate/releases/tag/0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dahlia/checkmate@0.1.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.1.4/manifests"},{"name":"0.1.3","sha":"caee748f95f6f27284715f96647fc43bb889fca3","kind":"tag","published_at":"2017-09-20T00:50:28.000Z","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/0.1.3","html_url":"https://github.com/dahlia/checkmate/releases/tag/0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dahlia/checkmate@0.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.1.3/manifests"},{"name":"0.1.2","sha":"ded68c33934ba8af32bccdc3bc5973b1700c52cf","kind":"tag","published_at":"2017-09-19T20:22:07.000Z","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/0.1.2","html_url":"https://github.com/dahlia/checkmate/releases/tag/0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dahlia/checkmate@0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.1.2/manifests"},{"name":"0.1.1","sha":"e83faf4a3feaf6efa5d3051ec483103988240a9a","kind":"tag","published_at":"2017-09-19T19:55:49.000Z","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/0.1.1","html_url":"https://github.com/dahlia/checkmate/releases/tag/0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dahlia/checkmate@0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.1.1/manifests"},{"name":"0.1.0","sha":"29ea16dad230d06f8f709233460b9d5df76b745a","kind":"tag","published_at":"2017-09-19T16:07:27.000Z","download_url":"https://codeload.github.com/dahlia/checkmate/tar.gz/0.1.0","html_url":"https://github.com/dahlia/checkmate/releases/tag/0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dahlia/checkmate@0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/tags/0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-05-01T22:02:44.139Z","dependent_packages_count":0,"downloads":7476,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":20.412545916925684,"dependent_repos_count":57.976829612885,"dependent_packages_count":19.27098050296694,"stargazers_count":34.59734388245267,"forks_count":37.08957332579825,"docker_downloads_count":null,"average":33.86945464820571},"purl":"pkg:hackage/checkmate","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/hackage/checkmate","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/hackage/checkmate","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/hackage/checkmate/dependencies","status":null,"funding_links":["https://github.com/sponsors/dahlia"],"critical":false,"issue_metadata":{"last_synced_at":"2025-08-20T01:13:55.760Z","issues_count":1,"pull_requests_count":1,"avg_time_to_close_issue":172119.0,"avg_time_to_close_pull_request":86320.0,"issues_closed_count":1,"pull_requests_closed_count":1,"pull_request_authors_count":1,"issue_authors_count":1,"avg_comments_per_issue":0.0,"avg_comments_per_pull_request":0.0,"merged_pull_requests_count":1,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dahlia%2Fcheckmate/issues","maintainers":[{"login":"dahlia","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dahlia"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/checkmate/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/checkmate/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/checkmate/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/checkmate/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/checkmate/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/packages/checkmate/codemeta","maintainers":[{"uuid":"hongminhee","login":"hongminhee","name":null,"email":null,"url":null,"packages_count":10,"html_url":"https://hackage.haskell.org/user/hongminhee","role":null,"created_at":"2022-11-14T17:00:37.311Z","updated_at":"2022-11-14T17:00:37.311Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/hackage.haskell.org/maintainers/hongminhee/packages"}]}