add-ktnip-collector | Skill Performance & Reviews | TopRankSkills

TopRank Skills

Home / Skills / tools / add-ktnip-collector

add-ktnip-collector

maintained by vendelieu

star 244 account_tree 18 verified_user MIT License
bolt View GitHub

name: add-ktnip-collector description: Adds a new collector to the ktnip KSP processor. Use when implementing a new handler type (e.g. new annotation like @MyHandler), adding a collector for a new activity pattern, or extending the ktnip processor to collect additional annotated functions.

Add Ktnip Collector

Workflow

1. Create Annotation (if new)

  • Define annotation in telegram-bot module (annotations package)
  • Ensure it can be discovered via findAnnotationRecursively (meta-annotations supported)

2. Add Annotation Parser (if new annotation)

  • In AnnotationParser.kt: add parseMyAnnotation(arguments) returning parsed data
  • Use parseValueList, parseScopes patterns from existing parsers

3. Create Collector Class

4. Collector Implementation

  • Discovery: resolver.getAnnotatedFnSymbols(ctx.pkg, MyAnnotation::class)
  • Parse: function.annotations.findAnnotationRecursively(MyAnnotation::class)?.arguments
  • Metadata: extractActivityMetadata(function) (from BaseCollector)
  • Generate: generateAndRegisterActivity(function, metadata, ctx, parameters, updateType)
  • Register: ctx.loadFun.addStatement("registerX(%S, %L.id)", id, activityId)

5. Register in ActivityProcessor

  • Add to collectors list in ActivityProcessor.kt processPackage:
    • Order matters: BotCtxCollector, CommandCollector, InputCollector, CommonCollector, UpdateHandlerCollector, UnprocessedHandlerCollector, WizardCollector

6. ResolverExtensions (if needed)

  • getAnnotatedFnSymbols(pkg, MyAnnotation::class) works for any annotation (generic)
  • Custom discovery logic only if collecting non-function symbols

7. Add KSP Tests

  • Add test data in ktnip/src/jvmTest/resources/test-data/ (or extend DefaultHandlers.kt, WizardHandlers.kt, etc.)
  • Add runTest("test-data/YourFile.kt") in ProcessorTest.kt
  • Use /* G-EXPECT ... */ block for golden output checks (see add-ktnip-ksp-tests skill)

Reference

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!

Skill Details

GitHub Stars 244
GitHub Forks 18
Created Mar 2026
Last Updated il y a 3 mois
tools tools ide plugins

Related Skills

writing-skills
chevron_right
codex
chevron_right
smart-illustrator
chevron_right
collaborating-with-codex
chevron_right
code-review-router
chevron_right

Build your own?

Join 12,000+ developers contributing to the Claude ecosystem.