← ClaudeAtlas

verify-dependency-behaviourlisted

Use when about to state or rely on how a third-party JVM/Android library behaves (a default value, whether a field is omitted or null, which branch a task takes) and the docs are absent, ambiguous, or the naming suggests something the code may not do. Fire when a plan says "set X to its strict value" without evidence X is not already strict, when a field's name and its type disagree, or when a check passes and you cannot say which comparison it made. Do NOT fire when the behaviour can be run and observed, run it.
damson/hard-won-skills · ★ 1 · AI & Automation · score 67
Install: claude install-skill damson/hard-won-skills
# Verify dependency behaviour from the artifact A library's name, its field names and its README are all claims. The bytecode is what runs. Where they disagree the bytecode wins, and the disagreement is silent: a "fix" that changes nothing, or a number wrong by a factor of a hundred. Complements `prove-the-check-can-fail`: that skill asks whether your check would catch the bug, this one asks whether the library does what its name implies. ## Procedure 1. **State the claim** in one sentence, with what changes if it is false. A claim that changes no decision is not worth the detour. 2. **Prefer observation.** If the behaviour can be triggered and measured, do that: it is cheaper and exercises the real path. Decompile only what running cannot reveal: a default you would have to override to see, a serialization shape, a branch not reachable from your inputs. 3. **Locate the artifact.** ``` find ~/.gradle/caches/modules-2/files-2.1 -path '*<artifact>*' -name '*.jar' | grep -v sources ``` An empty result means the artifact never resolved into this cache, not that it does not exist: force resolution (run the build, or `./gradlew <module>:dependencies --configuration runtimeClasspath`) and check the Maven local repo (`~/.m2/repository`, unless `~/.m2/settings.xml` moves it) since mavenLocal and repo-local caches live outside the Gradle one. A `-sources.jar` beside it is better than bytecode: read that and skip to step 5. For a Gradle