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-4/

{
  "context": "Tests whether the agent installs the OpenTelemetry feature with the Langfuse backend integration, configures the session-id trace attribute correctly, and routes everything through the install block — rather than reaching for a bespoke OTel SDK setup or a non-Koog Langfuse client.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Adds the agents-features-opentelemetry dependency",
      "description": "Adds ai.koog:agents-features-opentelemetry to build.gradle.kts at 1.0.0 or later. The umbrella does not include observability",
      "max_score": 25
    },
    {
      "name": "Installs OpenTelemetry in the trailing lambda",
      "description": "Calls install(OpenTelemetry) { ... } inside the AIAgent(...) trailing lambda. Does not configure observability by mutating the agent after construction",
      "max_score": 25
    },
    {
      "name": "Calls addLangfuseExporter inside the install block",
      "description": "Uses the addLangfuseExporter integration inside the install(OpenTelemetry) block. Does not roll a custom HTTP client targeting Langfuse, does not pull a non-Koog Langfuse library",
      "max_score": 20
    },
    {
      "name": "Sets langfuse.session.id from the environment",
      "description": "Passes a CustomAttribute (or equivalent supported trace attribute) named langfuse.session.id whose value is read from System.getenv(\"LANGFUSE_SESSION_ID\")",
      "max_score": 15
    },
    {
      "name": "Turns on verbose mode",
      "description": "Calls setVerbose(true) inside the install block, matching the developer's stated preference for initial rollout",
      "max_score": 10
    },
    {
      "name": "Does not stack a second backend integration",
      "description": "Does not also call addOtlpExporter, addDatadogExporter, or addWeaveExporter — stacking backends inflates cost without adding signal",
      "max_score": 5
    }
  ]
}

evals

README.md

tile.json