skyl is pre-v1. This page says exactly what that means for you, because "expect breaking changes" on its own is not useful planning information.
Current version#
| Version | 0.1.0 — unreleased |
| Status | Ready to evaluate, not ready to depend on in production |
| License | Apache 2.0 |
The versioning policy#
skyl follows Semantic Versioning. Until v1.0.0:
- Breaking changes may land in minor releases. They will always be listed in the changelog with a migration note — never silently.
- After v1.0.0, no breaking change to exported API without a major bump.
Go version floors#
Each module declares the floor its dependencies actually set. Since Go 1.21 the
go directive is a hard requirement rather than a suggestion, so these are not
choices.
| Module | Import path | Go | Dependencies |
|---|---|---|---|
| skyl | github.com/BAGOMBEKA-JOB-DEV/skyl | 1.22 | noneThe core library. Zero external dependencies. |
| provider/anthropic | github.com/BAGOMBEKA-JOB-DEV/skyl/provider/anthropic | 1.24 | anthropic-sdk-goA separate module, because the official SDK brings a dozen transitive dependencies. |
| gateway | github.com/BAGOMBEKA-JOB-DEV/skyl/gateway | 1.25 | go-chi/chi, skyl/otelThe optional HTTP service. Importing the core library never pulls in chi. |
| otel | github.com/BAGOMBEKA-JOB-DEV/skyl/otel | 1.25 | go.opentelemetry.io/otelOpenTelemetry instrumentation. Nobody who does not want it pays for it. |
CI builds every module against its own floor, so a directive that drifts from what the code needs fails the build rather than reaching a user.
Supported versions#
Only the latest release receives fixes. There are no maintained backport branches — a pre-v1 project maintaining backports is a pre-v1 project not reaching v1.
What "not ready to depend on" means#
This is the project's own assessment, stated on the front page of the repository. It follows from its third design principle — honesty over coverage — and it is worth reading literally rather than as modesty.
The gap is specific and closable: it needs someone with real credentials to run
go test -tags=integration -v -run TestLive ./provider/, or to record a
cassette — see Validating against real providers.
Also see
The three test suites.
Breaking changes so far#
The pre-0.1.0 development period included several, all recorded with migration notes. The two most consequential:
The gateway's chat wire format was redesigned. ChatMessage.content was a
string and became a list of typed parts, with a text shorthand.
{"role": "user", "content": "hi"} // OLD — now returns 400
{"role": "user", "text": "hi"} // NEW{"role": "user", "content": "hi"} // OLD — now returns 400
{"role": "user", "text": "hi"} // NEWThis is what makes a tool-calling loop possible at all: the old format could not
express an assistant turn containing tool calls. DisallowUnknownFields is on,
so upgrade gateways before clients.
Usage.TotalTokens() stopped double-counting cached tokens.
InputTokens is now the total input including cache, and the cache figures
are a breakdown of it rather than an addition. If you were computing
InputTokens + CacheReadTokens yourself, drop the addition.
Reading the changelog#
CHANGELOG.md follows Keep a Changelog. Breaking
changes appear under Changed with a bolded migration note; the Fixed
section names the behaviour that was wrong rather than the commit that fixed it.
Documentation versions#
This site documents v0.1.0, shown in the badge beside the logo. There is no version archive yet — there has been only one version.