# skipper_core v1.0.0 - API Reference

## Modules

- [Skipper](Skipper.md): Runtime shared by the framework adapters (`skipper_ex_unit`, `skipper_espec`):
load the spreadsheet once per run, answer "should this test run?", collect
discovered test IDs, then emit the report and sync at the end.

- [Skipper.Client](Skipper.Client.md): Reads the spreadsheet: primary sheet plus reference sheets, merged.
- [Skipper.Config](Skipper.Config.md): Skipper configuration.
- [Skipper.Report](Skipper.Report.md): Quarantine-debt summary emitted at the end of a run.
- [Skipper.Resolver](Skipper.Resolver.md): Decides whether a test runs. Tests not in the spreadsheet always run
(opt-out model); a test with a future `disabledUntil` is skipped.

- [Skipper.SheetsApi](Skipper.SheetsApi.md): The four Google Sheets v4 calls Skipper needs. An API handle is
`{module, client}`; `Skipper.SheetsApi.HTTP` is the real implementation and
tests can pass an in-memory fake.

- [Skipper.SheetsApi.HTTP](Skipper.SheetsApi.HTTP.md): Sheets API over HTTPS (`:httpc`), authenticated with a service-account JWT
(OAuth 2.0 `jwt-bearer` grant, RS256 signed with `:public_key`).

- [Skipper.TestId](Skipper.TestId.md): Test ID helpers: `relative/path > part1 > part2`, matched case-insensitively.
- [Skipper.Writer](Skipper.Writer.md): Reconciles the primary sheet with the test IDs discovered in a run: new IDs
are appended (empty `disabledUntil`); stale rows of the same files are
deleted only with `SKIPPER_SYNC_ALLOW_DELETE=true`. Existing rows are never
modified.

