CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/koog

Koog 1.0 idioms, gotchas, and scaffolding skills for Kotlin agents on the JVM

87

1.85x
Quality

88%

Does it follow best practices?

Impact

87%

1.85x

Average score across 45 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-29/

{
  "context": "Tests whether the agent picks the top-level responseProcessor path (the simplest one, fitting the default-strategy case) rather than over-engineering with a custom strategy that contains a nodeLLMRequestStructured.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Uses responseProcessor on the factory",
      "description": "Passes a responseProcessor parameter to AIAgent(...) that produces an IssueClassification result. Does NOT author a custom strategy with nodeLLMRequestStructured — that would be over-engineering since the default strategy suffices",
      "max_score": 35
    },
    {
      "name": "Parameterizes AIAgent with the typed Output",
      "description": "The AIAgent type is AIAgent<String, IssueClassification> (or equivalent typed Input/Output parameterization) so agent.run(...) returns IssueClassification directly — not String",
      "max_score": 25
    },
    {
      "name": "Reuses the developer's data class verbatim",
      "description": "Uses the existing IssueClassification @Serializable data class as the typed output. Does not redeclare it, rename it, or introduce a parallel type",
      "max_score": 15
    },
    {
      "name": "Drops the regex parsing",
      "description": "Removes (or at minimum unambiguously marks for removal) the downstream regex parsing — the typed return makes it obsolete. Leaving the regex in produces an unused code path that masks the migration",
      "max_score": 15
    },
    {
      "name": "Does not introduce a custom strategy",
      "description": "Does not author a strategy<...> block with nodeLLMRequestStructured. The default singleRunStrategy plus a responseProcessor is the right path for this case",
      "max_score": 10
    }
  ]
}

evals

README.md

tile.json