AgentSkillsCN

add-ktnip-parameter-strategy

【库贡献者】为 ktnip KSP 处理器新增一种全新的参数解析策略。适用于处理器函数需要接收新参数类型(例如 ChatMember、InlineQuery),或在活动调用中新增对某种可解析类型的支持时使用。

SKILL.md
--- frontmatter
name: add-ktnip-parameter-strategy
description: [Library contributor] Adds a new parameter resolution strategy to the ktnip KSP processor. Use when handler functions need to receive a new parameter type (e.g. ChatMember, InlineQuery), or when adding support for a new resolvable type in Activity invocation.

Add Ktnip Parameter Strategy

Workflow

1. Add ParameterResolutionStrategy

  • In ParameterResolutionStrategy.kt
  • Add new data class extending ParameterResolutionStrategy
  • Include typeName, isNullable; add strategy-specific fields (e.g. parameterName, updateTypeSimpleName)
kotlin
data class MyParam(
    override val typeName: TypeName,
    override val isNullable: Boolean,
    val myField: String,
) : ParameterResolutionStrategy()

2. Add TypeConstant (if new type)

  • In TypeConstants.kt
  • Add val myTypeClass: TypeName = MyType::class.asTypeName()

3. Update ParameterResolver

  • In ParameterResolver.kt
  • Add branch in resolve() when block:
    • Match typeName (use TypeConstants or in TypeMapper.getAllTypedUpdateTypes() for typed updates)
    • Return new strategy instance
    • Handle @ParamMapping for parameter name if from parameters map

4. Update InvocationCodeGenerator

  • In InvocationCodeGenerator.kt
  • Add branch in generateParameterResolution() when block
  • Generate CodeBlock: CodeBlock.of("val param%L = ...\n", parameterIndex, ...)
  • Add imports via fileBuilder.addImport(...) if needed
  • Use nullabilityMark for !! when non-null

5. Update generateInvocationCode (if needed)

  • If strategy affects isBotNeeded, isUpdateNeeded, isParametersNeeded, isUserNeeded: add to the strategies.any { ... } checks

Reference