Skip to content
conventional-comments logo

Conventional Comments

conventional-comments

Write structured code review comments using Conventional Comments format. Use when reviewing PRs, writing code review feedback, or asked to "comment on this code" or "review this PR".

SKILL.md

Full skill instructions

Conventional Comments

Write code review comments in Conventional Comments format (https://conventionalcomments.org).

Format

<label>[!] [(decorations)]: <subject>

[discussion]
PartRequiredDescription
labelYesComment type (see Labels below)
!NoBlocking indicator—must resolve before approval
(decoration)NoComma-separated context tags (e.g., (security))
subjectYesMain message (1 line)
discussionNoAdditional reasoning or suggested fix (1-3 lines)

Labels

LabelDescription
issueIdentifies a problem that needs to be addressed.
suggestionProposes an improvement with an explicit change.
todoSmall, necessary change. Less severe than an issue.
questionSeeks clarification or investigation.
noteInformation for the reader. Does not require action.
typoPoints out a typographical error.

Do NOT use: praise, nitpick, quibble — focus on actionable feedback only.

Decorations

DecorationUse when
(security)Comment relates to security vulnerabilities.
(performance)Comment relates to performance impact.
(a11y)Comment relates to accessibility.
(ux)Comment relates to user experience.

Examples

Basic suggestion

suggestion: Consider using optional chaining here.

`user && user.profile && user.profile.name` can be simplified to `user?.profile?.name`.

Blocking issue

issue!: This function silently swallows exceptions.

Either log the error or propagate it to the caller.

With security decoration

suggestion! (security): User input should not be directly embedded in SQL.

Use prepared statements to prevent SQL injection.

With performance decoration

issue (performance): This query runs inside a loop causing N+1 problem.

Batch the IDs and fetch all records in a single query.

Simple todo

todo: Add null check before accessing `user.email`.

Question

question: Is this timeout value intentional?

300ms seems short for API calls that may span regions.

Note (informational)

note: This pattern is also used in `auth-service.ts:45`.