verify-dependency-behaviourlisted
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