CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/koog

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

86

1.86x
Quality

88%

Does it follow best practices?

Impact

86%

1.86x

Average score across 45 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-2/

{
  "context": "Tests whether the agent uses the koog-ktor plugin (the supported integration path) inside the developer's existing Application.module(), rather than hand-rolling a parallel Ktor server or constructing the agent inside the route handler on every request.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Installs the Koog Ktor plugin",
      "description": "Calls install(Koog) { ... } inside Application.module(). Does NOT construct the AIAgent inside the route handler (which would rebuild it on every request) and does NOT start a separate Ktor server instance",
      "max_score": 30
    },
    {
      "name": "Adds the koog-ktor dependency",
      "description": "Adds ai.koog:koog-ktor at 1.0.0 or later to build.gradle.kts. The umbrella does not include the Ktor integration",
      "max_score": 20
    },
    {
      "name": "Configures the prompt executor inside the install block",
      "description": "Wires simpleOpenAIExecutor (reading the API key from env) inside the install(Koog) configuration block. Does not construct executors inside the route handler",
      "max_score": 15
    },
    {
      "name": "Reads the OpenAI API key from the environment",
      "description": "Reads the API key via System.getenv(\"OPENAI_API_KEY\"). Does not embed the key literal in source",
      "max_score": 10
    },
    {
      "name": "Adds a POST /agent route",
      "description": "Inside routing { ... }, declares a post(\"/agent\") { ... } handler that reads the request body and writes the agent result back. Receives input as call.receiveText() (or equivalent) and responds with call.respondText (or equivalent)",
      "max_score": 15
    },
    {
      "name": "Resolves the agent from the plugin attribute",
      "description": "Reads the configured agent inside the route handler via the plugin attribute key (call.attributes[Koog.key] or equivalent supported accessor) rather than referencing a top-level lateinit or rebuilding the agent inline",
      "max_score": 10
    }
  ]
}

evals

README.md

tile.json