You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Revert spring-kafka 2.4-2.9 extension and update skill docs
Spring Kafka 2.4+ requires kafka-clients 2.4+, but the test scenario
uses kafka-clients 2.3.1 (Consumer.committed(Set) NoSuchMethodError).
Extending 2.4+ needs separate scenarios with version-matched kafka-clients.
Also add source code cloning workflow and import-time failure check to
the plugin development skill.
Copy file name to clipboardExpand all lines: .claude/skills/new-plugin/SKILL.md
+18-4Lines changed: 18 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -138,12 +138,26 @@ When assessing whether a plugin works with a new library version, or when choosi
138
138
3. Do the witness classes still correctly distinguish versions? (a witness class that exists in both old and new versions won't prevent the plugin from loading on an incompatible version)
139
139
4. Do the runtime APIs called by the interceptor still exist? (e.g., calling `cluster.getDescription()` will crash if that method was removed, even if the plugin loaded successfully)
140
140
141
-
**How to verify:**
142
-
- Fetch the actual source file from the library's Git repository at the specific version tag (e.g., `https://raw.githubusercontent.com/{org}/{repo}/{tag}/path/to/Class.java`)
143
-
- Or download the specific JAR and inspect the class
144
-
- Or add the version to the plugin's test dependencies and compile
141
+
**How to verify — clone the library source locally:**
142
+
```bash
143
+
# Clone specific version tag to /tmp for easy source code inspection
This is faster and more reliable than fetching individual files via raw GitHub URLs. You can `grep`, `diff` between versions, and trace the full execution path.
155
+
156
+
**Also check for import-time class loading failures:**
157
+
If a plugin helper class (not just the instrumentation class) imports a library class that was removed, the entire helper class will fail to load with `NoClassDefFoundError` at runtime. This silently breaks ALL functionality in that helper — not just the code paths using the removed class. Verify that every `import` statement in plugin support classes resolves to an existing class in the target version.
145
158
146
159
**Real examples of why this matters:**
160
+
- MongoDB driver 4.9 removed `InsertOperation`, `DeleteOperation`, `UpdateOperation` — `MongoOperationHelper` imported all three, causing the entire class to fail loading with `NoClassDefFoundError`, silently losing ALL `db.bind_vars` tags even for operations that still exist (like `FindOperation`, `AggregateOperation`)
147
161
- MongoDB driver 4.11 removed `Cluster.getDescription()` — the plugin loads (witness classes pass) but crashes at runtime with `NoSuchMethodError`
148
162
- Feign 12.2 moved `ReflectiveFeign$BuildTemplateByResolvingArgs` to `RequestTemplateFactoryResolver$BuildTemplateByResolvingArgs` — the path variable interception silently stops working
149
163
- MariaDB 3.0 renamed every JDBC wrapper class (`MariaDbConnection` → `Connection`) — none of the plugin's `byName` matchers match anything
*[Spring-Kafka](https://github.com/spring-projects/spring-kafka) Spring Kafka Consumer 1.3.x -> 3.3.x (2.0.x and 2.1.x not tested and not recommended by [the official document](https://spring.io/projects/spring-kafka))
80
+
*[Spring-Kafka](https://github.com/spring-projects/spring-kafka) Spring Kafka Consumer 1.3.x -> 2.3.x, 3.0.x -> 3.3.x (2.0.x and 2.1.x not tested and not recommended by [the official document](https://spring.io/projects/spring-kafka))
0 commit comments