Skip to content

Commit a448317

Browse files
authored
docs: the disclose policy, and what else 2.18.0 changes (#39)
Documents what [commit-check#575](commit-check/commit-check#575) merged, and the rest of what is queued for **2.18.0**. The tool already prints `Docs: https://commit-check.com/rules/#cc014` on a failure and that anchor does not exist, so this has to land with the release. ## What changed **`docs/rules.md`** — three new sections, each with the policy that asks for it: | | | |---|---| | [CC014](https://commit-check.com/rules/#cc014) `ai-disclosure` | the kernel, Fedora and FluxCD ask for `Assisted-by:`; the ASF recommends `Generated-by:` | | [CC015](https://commit-check.com/rules/#cc015) `ai-co-author` | pip, attrs and Requests refuse AI in `Co-authored-by:` | | [CC016](https://commit-check.com/rules/#cc016) `ai-signoff` | a sign-off certifies the DCO, which only a person can do | CC013 is rewritten rather than left alone: it now catches the disclosure trailers too, and both its error and its suggestion text changed, so the old section described a tool that no longer exists. **`docs/guides/policies.md`** — a new "Asking for disclosure instead" section: the three conditions, the correction a failure carries (`fix` rewrites the vendor's co-author line as the project's trailer), choosing the trailers and the value format, and `warn = ["ai_disclosure"]` for projects that appreciate disclosure without demanding it. The section intro now names all three policies in a table. The `forbid` sample there was a stale transcript — it showed an error message the tool stopped printing — and has been re-run. **`docs/configuration.md`** — `ai_disclosure_trailers` and `ai_disclosure_pattern` in the options table and the TOML/env/CLI mapping; the `ai_attribution` row rewritten for three values. **`docs/troubleshoot.md`** — an exit-codes section. Exit code `2` ships in this release and the site had nowhere that said what it means, which is the difference between "your commit was rejected" and "your config is broken". **`docs/changelog.md`** — the whole release, not only the AI work: the measurements in a failure (#571), hyperlinked spec names (#568), anchored branch names and the narrowed CC001 exemption (#569), exit code 2 and a working `--dry-run` (#570), a setting whose regex does not compile naming itself (#574), `inherit_from` failures on stderr (#569). ## Verification - `python -m pytest tests/ -q` — 9 pass, `test_pinned_revisions_match_the_released_version` fails. - `mkdocs build --strict` — clean; the only warnings are the `social` plugin's imaging dependencies, which are absent from my local environment and present in CI. - Every transcript on these pages was produced by running the command against the merged code, as `AGENTS.md` asks. That includes the ones I replaced. ## The red test is the expected one The install pins now say `v2.18.0`, which is not on PyPI yet, so `test_pinned_revisions_match_the_released_version` is red until it is. This is the case `AGENTS.md` describes under "The one case where pins may name an unreleased version": **merge this after 2.18.0 is published**, then re-run CI to confirm it goes green. Two things to check before merging: 1. **The changelog entry is dated `2026-09-13`.** If the release goes out on another day, that date has to match it. 2. **The version.** The draft release is named v2.18.0 and carries everything since 2.17.0, so that is what this documents. If the fixes go out as 2.17.1 first, the entry needs splitting. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added documentation for the new `disclose` AI attribution policy and its disclosure, co-author, and sign-off checks. - Documented configurable disclosure trailers and patterns. - Added guidance for choosing attribution policies and handling disclosure warnings. - **Documentation** - Improved troubleshooting guidance for exit codes, rejected commits, and configuration or pattern errors. - Updated examples, rule references, and pre-commit configuration to version 2.18.0. - Documented clearer failure messages and several validation behavior fixes. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
1 parent 07688db commit a448317

7 files changed

Lines changed: 369 additions & 35 deletions

File tree

‎docs/changelog.md‎

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ below and to the page that documents the feature properly.
1111

1212
| Version | What changed | Documented in |
1313
|---|---|---|
14+
| [2.18.0](#v2180) | AI disclosure policy: three rules, and the correction written for you | [Policy guides](guides/policies.md#asking-for-disclosure-instead) · [CC014](rules.md#cc014) |
1415
| [2.17.0](#v2170) | Concrete corrections for mechanical slips; a `warn` level per rule | [Reading the JSON](example.md#reading-the-json) · [Report without enforcing](configuration.md#report-a-rule-without-enforcing-it) |
1516
| [2.16.0](#v2160) | Tag name validation, and file size, path and pattern policies | [CC401](rules.md#cc401) · [CC302–CC304](rules.md#push-rules) |
1617
| [2.15.1](#v2151) | Color and rule-ID links appear only where they render; `NO_COLOR` honoured | [Color and links](example.md#color-and-links) |
@@ -28,6 +29,77 @@ below and to the page that documents the feature properly.
2829
| [2.5.0](#v250) | Organization-wide config with `inherit_from` | [Across an organization](guides/organization.md) |
2930
| [2.0.0](#v200) | Configuration moved from YAML to TOML — breaking | [Migrating from v1](migration.md) |
3031

32+
## v2.18.0 (2026-09-13) { #v2180 }
33+
34+
### Added
35+
36+
* **AI attribution gained a third policy, `"disclose"`** — for the projects
37+
that welcome AI assistance and ask to be told about it. It turns on three
38+
rules, one per condition, so any of them can be demoted to a warning while
39+
the others keep enforcing: the assistance is disclosed with one of
40+
`ai_disclosure_trailers` ([CC014](rules.md#cc014), default `Assisted-by`
41+
and `Generated-by`), the tool is not credited as a co-author
42+
([CC015](rules.md#cc015)), and it did not sign off the commit
43+
([CC016](rules.md#cc016)) — a sign-off certifies the DCO, which only a
44+
person can do. A failing check carries the correction: the vendor's
45+
co-author line rewritten as the project's disclosure trailer, keeping the
46+
name the tool gave itself. `ai_disclosure_pattern` asks for a particular
47+
format, such as `agent/model`. The default stays `"ignore"`, and an
48+
`ai_attribution` value that is none of the three is now a configuration
49+
error rather than a silently disabled check.
50+
See PR [#575](https://github.com/commit-check/commit-check/pull/575) and
51+
[Asking for disclosure instead](guides/policies.md#asking-for-disclosure-instead).
52+
53+
* **A failed check names the value it rejected, and by how much** — a long
54+
subject reports `Subject is 96 characters; it must be at most 80
55+
characters` and how many to cut, a custom `message_pattern` is echoed back,
56+
and the rejection banner says whether it was the commit, the branch, the
57+
tag or the push that was rejected.
58+
See PR [#571](https://github.com/commit-check/commit-check/pull/571).
59+
60+
* **A specification named in an error links to it** on terminals that render
61+
hyperlinks, so `Conventional Commits` and `Conventional Branch` are
62+
clickable instead of trailing a URL. Piped output is unchanged.
63+
See PR [#568](https://github.com/commit-check/commit-check/pull/568).
64+
65+
### Changed
66+
67+
* **`ai_attribution = "forbid"` now recognises the disclosure trailers too.**
68+
`Assisted-by:` and `Generated-by:`, in the formats the Linux kernel, Fedora,
69+
FluxCD and the ASF actually write them, are AI attribution like any other —
70+
a project that forbids attribution was letting them through.
71+
See PR [#575](https://github.com/commit-check/commit-check/pull/575) and
72+
[CC013](rules.md#cc013).
73+
74+
### Fixed
75+
76+
* **[CC201](rules.md#cc201) anchors a branch name at both ends** — `main-backup`,
77+
`master2` and `develop-x` passed as if they were `main`, `master` and
78+
`develop`. They fail now.
79+
See PR [#569](https://github.com/commit-check/commit-check/pull/569).
80+
81+
* **[CC001](rules.md#cc001) exempts only the subjects git writes itself** —
82+
`Merge `, `Revert "`, `fixup! `, `squash! ` and `amend! `. Author prose that
83+
merely started that way, such as `Merged stuff` or `fixup!! nonsense`, was
84+
exempt too.
85+
See PR [#569](https://github.com/commit-check/commit-check/pull/569).
86+
87+
* **A setting whose regex does not compile names the setting** and exits `2`,
88+
the code for a broken configuration: `[commit] message_pattern is not a
89+
valid regex: '^(unclosed'`. It used to surface as a bare Python error with
90+
exit code `1`, the code a rejected commit gets.
91+
See PR [#574](https://github.com/commit-check/commit-check/pull/574) and
92+
[Exit codes](troubleshoot.md#exit-codes).
93+
94+
* **A configuration error exits `2` and names the file it came from**, and
95+
`--dry-run` runs the checks it was asked for instead of printing nothing
96+
and exiting `0`.
97+
See PR [#570](https://github.com/commit-check/commit-check/pull/570).
98+
99+
* **An `inherit_from` that cannot be loaded says so on stderr** instead of
100+
falling back to the local config in silence. The run still continues.
101+
See PR [#569](https://github.com/commit-check/commit-check/pull/569).
102+
31103
## v2.17.0 (2026-09-06) { #v2170 }
32104

33105
### Added

‎docs/configuration.md‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ allow_fixup_commits = true
192192
allow_wip_commits = false # changed: allowed by default
193193
require_body = false
194194
require_signed_off_by = false
195-
ai_attribution = "forbid" # changed: "ignore" by default
195+
ai_attribution = "disclose" # changed: "ignore" by default; see the AI policy guide
196196
# ignore_authors = [] # optional: bypass all commit checks for these authors
197197

198198
[push]
@@ -240,7 +240,7 @@ Used from a hook definition, with no config file anywhere in the repository:
240240
```yaml title=".pre-commit-config.yaml"
241241
repos:
242242
- repo: https://github.com/commit-check/commit-check
243-
rev: v2.17.0
243+
rev: v2.18.0
244244
hooks:
245245
- id: check-message
246246
args:
@@ -288,6 +288,8 @@ The full mapping between the three forms:
288288
| `require_rebase_target = "main"` | `CCHK_REQUIRE_REBASE_TARGET=main` | `--require-rebase-target=main` |
289289
| `allow_force_push = true` | `CCHK_ALLOW_FORCE_PUSH=true` | `--no-force-push` (sets `allow_force_push` to `false`) |
290290
| `ai_attribution = "forbid"` | `CCHK_AI_ATTRIBUTION=forbid` | `--ai-attribution=forbid` |
291+
| `ai_disclosure_trailers = ["Assisted-by"]` | `CCHK_AI_DISCLOSURE_TRAILERS=Assisted-by` | `--ai-disclosure-trailers=Assisted-by` |
292+
| `ai_disclosure_pattern = '^\S+/\S+$'` | `CCHK_AI_DISCLOSURE_PATTERN=^\S+/\S+$` | `--ai-disclosure-pattern='^\S+/\S+$'` |
291293
| `ignore_authors = ["bot"]` (in branch section) | `CCHK_BRANCH_IGNORE_AUTHORS=bot,user` | `--branch-ignore-authors=bot,user` |
292294
| `regex = "^v\\d+\\.\\d+\\.\\d+$"` (in tag section) | `CCHK_TAG_REGEX=^v\\d+\\.\\d+\\.\\d+$` | `--tag-regex=^v\\d+\\.\\d+\\.\\d+$` |
293295
| `max_size = "5MB"` (in files section) | `CCHK_FILES_MAX_SIZE=5MB` | `--files-max-size=5MB` |
@@ -344,7 +346,9 @@ the same thing twice, so read the description rather than the cell:
344346
| commit | author_email_pattern | str | `^.+@.+$` | Custom regex for the author email check. When empty, the built-in default pattern is used. This option only takes effect when the author_email check is enabled (`-e` / `--author-email`). |
345347
| commit | author_name_pattern | str | "" (built-in default) | Custom regex for the author name check. When empty, the built-in default pattern is used (it is not disabled). This option only takes effect when the author_name check is enabled (`-n` / `--author-name`). |
346348
| commit | require_signed_off_by | bool | false | Require "Signed-off-by" line in the commit message footer. |
347-
| commit | ai_attribution | str | "ignore" | AI attribution policy. `"forbid"` rejects any commit containing known AI tool signatures (Claude Code, Copilot, Codex, Gemini, Cursor, Devin, Aider, Windsurf, Tabby, and generic AI model patterns). `"ignore"` disables the check. This feature is a response to the industry-wide discussion on AI disclosure in open source (Linux kernel `Assisted-by:` trailer, CPython, VS Code, Apache, Fedora policies). |
349+
| commit | ai_attribution | str | "ignore" | AI attribution policy. `"forbid"` rejects any commit carrying AI attribution — a co-author or sign-off line naming a known tool, a disclosure trailer, a vendor mark ([CC013](rules.md#cc013)). `"disclose"` accepts AI assistance that is disclosed with one of `ai_disclosure_trailers` ([CC014](rules.md#cc014)) and rejects the tool as a co-author ([CC015](rules.md#cc015)) or as a sign-off ([CC016](rules.md#cc016)). `"ignore"` disables the check. Any other value is a configuration error. |
350+
| commit | ai_disclosure_trailers | list[str] | ["Assisted-by", "Generated-by"] | The trailers that disclose AI assistance under `"disclose"`. The first one is what a correction is written with. Listing `Co-authored-by` says the project accepts the tool as a co-author, and CC015 then passes. `Signed-off-by` is refused: only a person can certify the DCO. |
351+
| commit | ai_disclosure_pattern | str | "" (any value) | A regex the disclosure trailer's value must match under `"disclose"`, e.g. `'^\S+/\S+$'` for an `agent/model` format. Empty accepts any value, but a trailer with no value at all is reported whatever the pattern is. |
348352
| branch | conventional_branch | bool | true | Enforce Conventional Branch specification. |
349353
| branch | allow_branch_types | list[str] | ["feature", "bugfix", "hotfix", "release", "chore", "feat", "fix", "build", "ci", "docs", "perf", "refactor", "style", "test", "ai", "claude", "codex", "copilot", "cursor", "dependabot", "renovate"] | Allowed branch types when `conventional_branch` is true. The default is a superset of the [Conventional Branch spec](https://conventionalbranch.org/): the spec types (`feature`, `bugfix`, `hotfix`, `release`, `chore`) plus the Conventional Commit types (`build`, `ci`, `docs`, `perf`, `refactor`, `style`, `test`), AI agent prefixes (`ai`, `claude`, `codex`, `copilot`, `cursor`) and bot prefixes (`dependabot`, `renovate`). For strict spec-only validation, set this option explicitly (e.g. `["feature", "bugfix", "hotfix", "release", "chore"]`). |
350354
| branch | allow_branch_names | list[str] | [] (empty list) | Additional standalone branch names allowed when conventional_branch is true (e.g., ["develop", "staging"]). By default, master, main, HEAD, and PR-* are always allowed. |

‎docs/example.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ pushed:
131131
```yaml title=".pre-commit-config.yaml"
132132
repos:
133133
- repo: https://github.com/commit-check/commit-check
134-
rev: v2.17.0
134+
rev: v2.18.0
135135
hooks:
136136
- id: check-no-force-push
137137
stages: [pre-push]

‎docs/guides/policies.md‎

Lines changed: 137 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -91,16 +91,19 @@ ignore_authors = ["dependabot[bot]", "renovate[bot]"]
9191

9292
## AI attribution
9393

94-
AI coding tools add trailers to commit messages identifying themselves. Whether
95-
that is welcome, required, or unacceptable is a decision each project makes for
96-
itself — and the industry has landed in different places:
94+
AI coding tools stamp their own trailers on the commits they help with.
95+
Whether that is welcome, required or unacceptable is a decision each project
96+
makes for itself, and the industry has landed in three places — which are the
97+
three values `ai_attribution` takes:
9798

98-
- The **Linux kernel** added an `Assisted-by:` trailer, treating AI assistance
99-
as something to disclose.
100-
- **Some projects disallow AI-assisted contributions outright**, usually over
101-
provenance and licensing.
102-
- **Most projects have no stated position**, which means the question resurfaces
103-
in every code review.
99+
| `ai_attribution` | The project's position | Rules |
100+
|---|---|---|
101+
| `"ignore"` (default) | no stated position | — |
102+
| `"forbid"` | no AI attribution in the history | [CC013](../rules.md#cc013) |
103+
| `"disclose"` | AI is welcome, said out loud, and not credited as a person | [CC014](../rules.md#cc014)–[CC016](../rules.md#cc016) |
104+
105+
Whichever you pick, the check reads what the message says. It cannot see
106+
assistance that left no trace — see the note below.
104107

105108
### The default: no opinion
106109

@@ -122,26 +125,143 @@ ai_attribution = "forbid"
122125
Commits carrying a recognised AI signature now fail:
123126

124127
```text
125-
CC013 ai-attribution check failed ==> feat: add caching layer
126-
AI attribution policy violation
127-
Suggest: This project forbids AI-assisted commits. Remove AI trailers and re-commit.
128+
CC013 ai-attribution check failed ==> Claude Code
129+
AI attribution is forbidden in this project — detected: Claude Code
130+
Suggest: This project does not accept AI attribution in commit messages. Remove the AI trailer lines and re-commit.
128131
Docs: https://commit-check.com/rules/#cc013
129132
```
130133

131-
Recognised signatures are trailers and co-author lines naming Claude Code,
132-
GitHub Copilot, Codex, Gemini, Cursor, Devin, Aider, Windsurf and Tabby, plus
133-
generic AI model patterns.
134+
Recognised signatures are co-author and sign-off lines naming Claude Code,
135+
GitHub Copilot, Codex, Gemini, Cursor, Devin, Aider, Windsurf and Tabby, the
136+
disclosure trailers `Assisted-by:` and `Generated-by:`, vendor marks such as
137+
`🤖 Generated with Claude Code`, and generic AI model names. This is the
138+
position [Kubernetes](https://www.kubernetes.dev/docs/guide/pull-requests/)
139+
takes — no AI trailers in the history, disclosure in the pull request
140+
instead.
134141

135142
!!! warning "This checks disclosure, not authorship"
136143

137-
CC013 reads commit metadata. It detects a commit that *says* it was
138-
AI-assisted; it cannot detect one that was AI-assisted and did not say so.
144+
These rules read commit metadata. They detect a commit that *says* it
145+
was AI-assisted; they cannot detect one that was AI-assisted and did
146+
not say so.
139147

140148
Set against a policy of "no AI contributions", it is an honesty check on
141149
contributors who are already following the rules — not an enforcement
142150
mechanism against those who aren't. Be clear with yourself about which of
143151
those you are buying.
144152

153+
### Asking for disclosure instead
154+
155+
Most projects that allow AI assistance ask to be told about it. The
156+
[Linux kernel](https://docs.kernel.org/process/coding-assistants.html),
157+
[Fedora](https://docs.fedoraproject.org/en-US/council/policy/ai-policy/) and
158+
FluxCD want an `Assisted-by:` trailer; the
159+
[Apache Software Foundation](https://www.apache.org/legal/generative-tooling.html)
160+
recommends `Generated-by:`. The kernel adds a second rule: an AI agent must
161+
never add a `Signed-off-by:` line, because only a person can certify the
162+
[DCO](https://developercertificate.org/).
163+
164+
```toml title="cchk.toml"
165+
[commit]
166+
ai_attribution = "disclose"
167+
```
168+
169+
That turns on three rules, each about one of those conditions:
170+
171+
| Rule | Asks that |
172+
|---|---|
173+
| [CC014](../rules.md#cc014) | the assistance is disclosed with an accepted trailer |
174+
| [CC015](../rules.md#cc015) | the tool is not credited as a co-author |
175+
| [CC016](../rules.md#cc016) | the tool did not sign off the commit |
176+
177+
A commit that a vendor stamped and nobody disclosed fails the first two, and
178+
the failure carries the disclosure already written:
179+
180+
```text
181+
CC014 ai-disclosure check failed ==> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
182+
AI assistance is not disclosed with Assisted-by or Generated-by — detected: Claude Code
183+
Suggest: Disclose the tool with "Assisted-by: Claude Opus 5"
184+
Docs: https://commit-check.com/rules/#cc014
185+
186+
CC015 ai-co-author check failed ==> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
187+
An AI tool is credited as a co-author: Claude Code
188+
Suggest: Use "Assisted-by: Claude Opus 5" in place of the co-author line
189+
Docs: https://commit-check.com/rules/#cc015
190+
```
191+
192+
Both carry the same correction in `--format json`: the co-author line rewritten
193+
as the project's disclosure trailer, keeping the name the tool gave itself.
194+
195+
```json
196+
"fix": "feat: add caching layer\n\nAssisted-by: Claude Opus 5"
197+
```
198+
199+
Once the tool is disclosed, CC015 asks only for the co-author line to go, and
200+
a commit written the way the kernel asks passes all three:
201+
202+
```bash
203+
printf 'feat: add caching layer\n\nAssisted-by: LLM coccinelle sparse\nSigned-off-by: Jane Dev <jane@example.com>' | commit-check -m
204+
```
205+
206+
### Choosing the format
207+
208+
`ai_disclosure_trailers` is the list of trailers that count as a disclosure,
209+
and the first one is what a correction is written with:
210+
211+
```toml title="cchk.toml"
212+
[commit]
213+
ai_attribution = "disclose"
214+
ai_disclosure_trailers = ["Assisted-by"] # the kernel's, and nothing else
215+
```
216+
217+
Listing `Co-authored-by` says the project accepts the tool as a co-author —
218+
[pytest](https://github.com/pytest-dev/pytest/blob/main/CONTRIBUTING.rst) and
219+
IREE do — and CC015 then passes. `Signed-off-by` is refused whatever else you
220+
list, so CC016 cannot be configured away.
221+
222+
`ai_disclosure_pattern` asks for a particular shape, such as FluxCD's
223+
`agent/model`:
224+
225+
```toml title="cchk.toml"
226+
[commit]
227+
ai_attribution = "disclose"
228+
ai_disclosure_pattern = '^\S+/\S+$'
229+
```
230+
231+
```text
232+
CC014 ai-disclosure check failed ==> Assisted-by: Claude Code
233+
The Assisted-by value does not match the required pattern: ^\S+/\S+$
234+
Suggest: Write the Assisted-by value so that it matches ^\S+/\S+$ (set by ai_disclosure_pattern in the [commit] config)
235+
```
236+
237+
There is no correction for that one: which model, in which format, is not
238+
something the tool should guess.
239+
240+
### Disclosure that is appreciated, not required
241+
242+
Some projects — [CPython](https://devguide.python.org/getting-started/generative-ai/)
243+
among them — welcome disclosure without demanding it, while still refusing the
244+
tool as a co-author. Put CC014 in the top-level `warn` list and the other two
245+
keep enforcing:
246+
247+
```toml title="cchk.toml"
248+
warn = ["ai_disclosure"]
249+
250+
[commit]
251+
ai_attribution = "disclose"
252+
```
253+
254+
```text
255+
CC014 ai-disclosure check warning ==> 🤖 Generated with [Claude
256+
AI assistance is not disclosed with Assisted-by or Generated-by — detected: Claude Code
257+
Suggest: Disclose the tool with "Assisted-by: Claude Code"
258+
Docs: https://commit-check.com/rules/#cc014
259+
This rule is set to warn in the config; it does not fail the run.
260+
```
261+
262+
The run still passes. See
263+
[Report a rule without enforcing it](../configuration.md#report-a-rule-without-enforcing-it).
264+
145265
### Exempting automation
146266

147267
Bots that legitimately carry AI trailers can be excluded:

‎docs/guides/pre-commit.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Add Commit Check to `.pre-commit-config.yaml`:
88
```yaml title=".pre-commit-config.yaml"
99
repos:
1010
- repo: https://github.com/commit-check/commit-check
11-
rev: v2.17.0
11+
rev: v2.18.0
1212
hooks:
1313
- id: check-message
1414
- id: check-branch
@@ -55,7 +55,7 @@ Options can be passed as hook arguments, which keeps everything in one file:
5555
```yaml title=".pre-commit-config.yaml"
5656
repos:
5757
- repo: https://github.com/commit-check/commit-check
58-
rev: v2.17.0
58+
rev: v2.18.0
5959
hooks:
6060
- id: check-message
6161
args:

0 commit comments

Comments
 (0)