KDoc Generator
Add KDoc to all public Kotlin declarations (classes, interfaces, objects, functions, properties, enums, type aliases, annotations — including @Deprecated). Read the implementation, not just the signature, to write accurate descriptions.
Tag placement
| Where the declaration lives | Tag |
|---|---|
Primary-ctor val / var (public, internal, or protected) |
@property in class KDoc |
Primary-ctor name: Type (no val/var) |
@param in class KDoc |
Primary-ctor private val / private var |
@param in class KDoc |
| Body of class/object/interface/sealed interface | inline /** */ above the declaration |
| Function parameter | @param |
| Non-Unit return type | @return |
Style
- Summary: one concise sentence, third-person verb ("Creates", "Returns", "Represents"). Expand to 2-3 sentences only when genuinely complex.
- Example block: mandatory for DSL builders (show full receiver-scope usage); add for complex functions or non-obvious extension functions; skip for one-liners and simple getters.
- KDoc links (
[ClassName],[methodName]) only where they add navigational value. - Don't write
@throwsor "suspend" notes. - Rewrite existing KDoc if incomplete or low quality.
Examples
Class with mixed primary-constructor parameters:
/**
* Manages active client sessions and their lifecycle.
*
* @property maxSessions upper limit on concurrent sessions
* @param scope coroutine scope for session lifecycle tasks
* @param secret used internally for session token signing
*/
public class SessionManager(
public val maxSessions: Int, // public val → @property
scope: CoroutineScope, // no val/var → @param
private val secret: ByteArray, // private val → @param
)
Body and interface properties (inline /** */):
/** Represents an entity that includes additional metadata. */
public interface WithMeta {
/** Optional metadata attached to this entity. */
public val meta: JsonObject?
}
public class Connection(public val id: String) {
/** Capabilities negotiated during the handshake, or `null` before initialize completes. */
public val capabilities: ServerCapabilities? get() = ...
}
Function with Example block:
/**
* Registers a new tool with the given handler.
*
* Example:
* ```kotlin
* server.addTool(name = "echo", description = "Echoes input back") { request ->
* CallToolResult(content = listOf(TextContent("Echo: ${request.arguments}")))
* }
* ```
*
* @param name unique tool identifier
* @param description human-readable tool description
* @param handler suspend function invoked when the tool is called
* @return the registered tool definition
*/