Starting with the fantastic resolver logic form swagger2openapi, speccy has one of the most robustresolvers out there. It avoid cyclical dependencies (when A has a property that $refs A, which in turn destroys your CPU), and all sorts of other things.
Also, if you want to use a specific version, you can reference tags, so docker run wework/speccy could be docker run wework/speccy:0,docker run wework/speccy:0.8 or docker run wework/speccy:0.8.7. These versions follow semantic versioning.
To lint your specifications before committing them you can use lint-staged to run speccy before each commit. Just install lint-staged and husky as devDependencies and add the following to your package.json:
df19127ead