home / skills / pluginagentmarketplace / custom-plugin-kotlin / kotlin-dsl

kotlin-dsl skill

/skills/kotlin-dsl

npx playbooks add skill pluginagentmarketplace/custom-plugin-kotlin --skill kotlin-dsl

Review the files below or copy the command above to add this skill to your agents.

Files (6)
SKILL.md
1.8 KB
---
name: kotlin-dsl
description: Kotlin DSL - type-safe builders, Gradle DSL, @DslMarker
version: "1.0.0"
sasmp_version: "1.3.0"
bonded_agent: 07-kotlin-dsl
bond_type: PRIMARY_BOND

execution:
  timeout_ms: 30000
  retry:
    max_attempts: 3
    backoff: exponential
    initial_delay_ms: 1000

parameters:
  required:
    - name: type
      type: string
      validation: "^(gradle|custom|html|config)$"
  optional:
    - name: immutable
      type: boolean
      default: true

logging:
  level: info
  events: [skill_invoked, type_loaded, error_occurred]
---

# Kotlin DSL Skill

Build type-safe DSLs with Kotlin's language features.

## Topics Covered

### @DslMarker for Scope Control
```kotlin
@DslMarker
annotation class HtmlDsl

@HtmlDsl
class HTML { fun body(block: Body.() -> Unit) { } }

@HtmlDsl
class Body { fun p(text: String) { } }

// Usage - scoped correctly
html { body { p("Text") } }
```

### Gradle Convention Plugin
```kotlin
// kotlin-library.gradle.kts
plugins { kotlin("jvm"); `java-library` }

kotlin { jvmToolchain(17) }

dependencies {
    testImplementation(kotlin("test"))
    testImplementation("io.mockk:mockk:1.13.9")
}

tasks.test { useJUnitPlatform() }
```

### Type-Safe Config Builder
```kotlin
@ConfigDsl
class ServerConfig private constructor(val host: String, val port: Int) {
    class Builder {
        var host = "localhost"
        var port = 8080
        fun build() = ServerConfig(host, port)
    }
}

fun serverConfig(block: ServerConfig.Builder.() -> Unit) =
    ServerConfig.Builder().apply(block).build()

// Usage
val config = serverConfig { host = "api.example.com"; port = 443 }
```

## Troubleshooting

| Issue | Resolution |
|-------|------------|
| Scope pollution | Add @DslMarker annotation |
| Gradle cache stale | Run ./gradlew --stop |

## Usage
```
Skill("kotlin-dsl")
```