Recipe catalog / review-comment-kind
Classify review comment kind
What is the primary kind of comment?
You need to sort code review comments so blocking defects surface first and optional polish can be batched or deferred.
Explore this recipe interactively ยท Source and implementation guide
Use review-comment-kind in TypeScript
Install with npm install jev-recipes. Requires Node.js 22.9 or newer and ES modules. Set TYPESAFE_API_KEY in your server environment for live calls, which send input to TypeSafe and use API quota. See the installation guide.
import { reviewCommentKind } from 'jev-recipes/review-comment-kind';
const result = await reviewCommentKind({
"comment": "This returns undefined when the list is empty because items[0] is read before the length check. Guard on items.length first.",
"context": "Comment left on a helper function in a pull request that adds a formatting utility."
});
console.log(result);
Input contract
| Field | Type | Needed |
|---|---|---|
| comment | string | Required |
| context | string | Optional |
| minConfidence | number | Optional |
Full input and result schemas
{
"input": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"comment": {
"type": "string"
},
"context": {
"type": "string"
},
"minConfidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"comment"
]
},
"result": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"model": {
"type": "string"
},
"usage": {
"type": "object",
"properties": {
"input_tokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"output_tokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"input_tokens",
"output_tokens"
],
"additionalProperties": false
},
"status": {
"type": "string",
"enum": [
"ready",
"review"
]
},
"verdict": {
"type": "string",
"enum": [
"bug",
"design",
"style",
"question",
"nit",
"praise",
"unclear"
]
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"probabilities": {
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"bug",
"design",
"style",
"question",
"nit",
"praise",
"unclear"
]
},
"additionalProperties": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"required": [
"bug",
"design",
"style",
"question",
"nit",
"praise",
"unclear"
]
}
},
"required": [
"model",
"usage",
"status",
"verdict",
"confidence",
"probabilities"
],
"additionalProperties": false
}
}Saved example result
This hand-authored response demonstrates the contract. It is not a model accuracy measurement. Run it without an API key: npx jev-recipes demo review-comment-kind.
{
"model": "demo-fixture",
"usage": {
"input_tokens": 0,
"output_tokens": 0
},
"status": "ready",
"verdict": "bug",
"confidence": 0.91,
"probabilities": {
"bug": 0.91,
"design": 0.04,
"style": 0.01,
"question": 0.01,
"nit": 0.02,
"praise": 0,
"unclear": 0.01
}
}
Evaluation evidence
No verified live accuracy measurement is available. Evaluate representative cases before using this decision in your workflow.
Use the evaluation guide to measure this decision on your own labeled cases.
Limitations
- Classifies what the comment says, not whether it is correct or whether the author must act on it. Blocking and merge rules belong in application code.
Related recipes
- feedback-kind: Use feedback-kind to classify general product or service feedback outside code review.
- turn-intent: Use turn-intent to classify the communicative purpose of a conversational message.