SuperAPI AI Directory

kdoc

Coding & development

View repository

Updated 10-16 09:34

About this skill

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 @throws or "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
 */