Teaches AI agents to write idiomatic Kotlin instead of Java-in-a-.kt-file.
98
98%
Does it follow best practices?
Impact
99%
1.20xAverage score across 8 eval scenarios
Passed
No known issues
{
"context": "Checks whether the agent's todo-app implementation is written in idiomatic Kotlin — a data class for the task record, val properties, nullable types with the question-mark suffix, no manual equals/hashCode/toString — AND implements the two required operations correctly.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Written in Kotlin",
"description": "The output file is a Kotlin source file (`.kt`), uses `fun` for function declarations and Kotlin syntax (not Python `def`, JavaScript `function`, Java `public static void`, etc.). The output compiles as Kotlin.",
"max_score": 25
},
{
"name": "Task is a data class",
"description": "The internal task record is declared as a `data class` (e.g. `data class Task(val id: Int, val title: String, val completed: Boolean)`). Not a regular `class` with manual `equals`/`hashCode`/`toString`.",
"max_score": 20
},
{
"name": "Properties default to val",
"description": "Properties on the task record and on the todo-app holder use `val`, not `var`, unless mutation is genuinely required.",
"max_score": 15
},
{
"name": "Nullable types use ?",
"description": "If any field can be absent (e.g. a `description` or `dueAt`), it is typed `String?` / `Instant?` etc., not `Optional<String>` or a Java-style nullable workaround.",
"max_score": 10
},
{
"name": "No manual equals/hashCode/toString",
"description": "The task record (and any helper types) does not include hand-written `override fun equals`, `override fun hashCode`, or `override fun toString`. The compiler generates these for `data class` automatically.",
"max_score": 10
},
{
"name": "addTask works",
"description": "Calling addTask(\"buy milk\") followed by reading the list returns a single task with title 'buy milk'",
"max_score": 10
},
{
"name": "markComplete works",
"description": "Calling markComplete(id) on a previously-added task flips its completed flag (or equivalent state representation) to true; the task remains in the list",
"max_score": 10
}
]
}