Koog 1.2 idioms, gotchas, and scaffolding skills for Kotlin agents on the JVM
71
89%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
ai.koog. The current umbrella is
ai.koog:koog-agents:1.2.0 (released 2026-08-28)subgraphWithTask,
subgraphWithVerification, CriticResult, ToolSet, MCP and memory all survive
unchanged. The only removal is PromptAugmenter.SECTION_SEPARATOR, in a beta moduledocs.koog.ai/quickstart/ lags the release. Don't copy
it — check repo1.maven.org/maven2/ai/koog/koog-agents/maven-metadata.xmlThe umbrella is 1.2.0. A large and growing set of modules publishes only on the
-beta line, at 1.2.0-beta. 1.2.0 does not exist for them, and 1.2.0-beta
does not exist for the umbrella. Getting this backwards is the most common build
failure on this framework.
| Module | Coordinate |
|---|---|
| umbrella | ai.koog:koog-agents:1.2.0 |
| additions | ai.koog:koog-agents-additions:1.2.0-beta |
| MCP client | ai.koog:agents-mcp:1.2.0-beta |
| CLI agents | ai.koog:agents-cli:1.2.0-beta |
| Agent Skills | ai.koog:skills:1.2.0-beta |
| Google client | ai.koog:prompt-executor-google-client:1.2.0-beta |
| simple executors | ai.koog:prompt-executor-llms-all:1.2.0-beta |
| long-term memory | ai.koog:agents-features-longterm-memory:1.2.0-beta |
| file/dir tools | ai.koog:agents-ext:1.2.0-beta |
| planner | ai.koog:agents-planner:1.2.0-beta |
| Ktor plugin | ai.koog:koog-ktor:1.2.0-beta |
| Spring Boot starter | ai.koog:koog-spring-boot-starter:1.2.0-beta |
| MCP server | ai.koog:agents-mcp-server:1.2.0-beta |
| A2A | ai.koog:a2a-core / -client / -server:1.2.0-beta |
| vector RAG | ai.koog:rag-vector:1.2.0-beta |
| Redis prompt cache | ai.koog:prompt-cache-redis:1.2.0-beta |
Stable line (1.2.0), for contrast: koog-agents, agents-test, rag-base,
embeddings-base/-llm, agents-features-opentelemetry, -snapshot, -trace,
-tokenizer, -sql, -event-handler, -persistence-jdbc, -chat-history-jdbc,
-chat-memory-sql, prompt-cache-files, prompt-executor-cached, prompt-tokenizer,
http-client-ktor.
Note that the split does not follow "core vs satellite": agents-features-chat-history-jdbc
is stable while agents-features-chat-history-aws is beta, and the planner moved onto the
beta line after 1.0. Query the metadata; do not pattern-match on the name.
When a Koog dependency fails to resolve, check the version line before anything
else. Query the module's own maven-metadata.xml; do not assume it tracks the
umbrella.
koog-agents:1.2.0 pulls the clients for OpenAI, Anthropic, Bedrock and Ollama.
It does not pull Google.
prompt-executor-google-client and
prompt-executor-llms-all (the latter is where simpleGoogleAIExecutor lives),
both at 1.2.0-betaUnresolved reference 'google' and
Unresolved reference 'simpleGoogleAIExecutor' while AIAgent itself resolves fine-jvmai.koog:agents-mcp:1.2.0-beta). Gradle Module Metadata
resolves the JVM variant-jvm suffix (koog-agents-jvm, agents-mcp-jvm, …)Do not add -jvm to a Gradle coordinate.
Verified by compiling against 1.2.0. Each of these produces an Unresolved reference
that looks like a missing dependency but is a wrong import.
| Symbol | Actual package | Notes |
|---|---|---|
subgraphWithTask, subgraphWithVerification, CriticResult | ai.koog.agents.ext.agent | Ships inside agents-core (umbrella), NOT the standalone agents-ext artifact |
forwardTo | — | A member of the strategy builder. Do not import it; importing fails |
fromProcess, defaultStdioTransport | ai.koog.agents.mcp | Top-level JVM-only extensions on the McpToolRegistryProvider object. Import by name; importing only the provider does not bring them into scope |
McpServerInfo | ai.koog.agents.mcp.metadata | Not ai.koog.agents.mcp |
TextDocument | ai.koog.rag.base | An interface (content/id/metadata), not a data class. It has no constructor — implement it |
SimilaritySearchStrategy | ai.koog.agents.longtermmemory.retrieval.search | Not under rag.base.storage.search |
ReadFileTool, ListDirectoryTool | ai.koog.agents.ext.tool.file | In the standalone agents-ext beta artifact |
JVMFileSystemProvider | ai.koog.rag.base.files | |
| tool event fields | — | ToolCallStartingContext exposes toolName / toolArgs, not tool.name |
ToolRegistry.tools | — | Returns List<ToolBase<*, *>>, not List<Tool<*, *>> |
org.gradle.java.home or upgrade Gradlebinary version of its metadata is 2.3.0, expected version is 2.1.0android.useAndroidX=true.tessl-plugin
skills
add-observability
add-persistence
add-rag
add-structured-output
add-token-budgeting
add-tool
cache-llm-calls
define-prompt
domain-model-subtask-pipeline
references
enable-prompt-caching
handle-agent-events
manage-state
migrate-from-0-x
model-planner-subtasks
persist-chat-history
query-sql-from-agent
scaffold-agent
snapshot-and-restore
test-koog-agents
trace-agent-internals
use-agent-skills
use-attachments
use-cli-agents
use-functional-agent
use-llm-node-variants
use-planner
wire-a2a
wire-acp-server
wire-ktor-server
wire-mcp-server
wire-spring-boot