Official API clients for Basecamp, HEY, and Fizzy. Generated from Smithy specifications with consistent authentication, retry, pagination, and error handling. Basecamp ships today in five languages; HEY and Fizzy SDKs are planned. These libraries power our CLIs and agent skills.
| SDK | What it does | Repo | Status |
|---|---|---|---|
| Basecamp | Projects, to-dos, messages, schedules, campfires, card tables, and more | basecamp/basecamp-sdk | Available |
| HEY | Email triage, contacts, screening, and search | basecamp/hey-sdk | Available |
| Fizzy | Boards, cards, columns, and workflows | basecamp/fizzy-sdk | Available |
| Language | Package format | Basecamp | HEY | Fizzy |
|---|---|---|---|---|
| Go | Go module | ✓ | ✓ | ✓ |
| TypeScript | npm | ✓ | ✓ | |
| Ruby | gem | ✓ | ✓ | |
| Swift | SPM | ✓ | ✓ | |
| Kotlin | GitHub Packages | ✓ | ✓ |
CLIs — basecamp/cli ships basecamp, hey, and fizzy command-line tools built on these SDKs. Structured JSON output, shell completion, and full API coverage.
Agent skills — Each CLI embeds Claude Code skills for AI-agent integration. The SDKs themselves are the runtime layer those skills call into.
This repo is the shared infrastructure that all SDK repositories consume via subtree. Everything language-agnostic or cross-language lives here; individual SDK repos pull it in as common/.
actions/
conformance-run/ Run cross-language conformance tests in CI
rubric-check/ Static rubric criteria verification
release-orchestrate/ Poll per-language release workflows, create GitHub Release
smithy-verify/ Validate Smithy spec and OpenAPI freshness
service-drift/ Detect drift between generated services and spec
conformance/
schema.json JSON schema for conformance test definitions
tests/ Test case files (auth, retry, pagination, error-mapping, etc.)
runner/ Per-language runners (go, typescript, ruby, swift, kotlin)
prompts/
seed-sdk.md Bootstrap a new SDK repository from templates
close-gap.md Close one specific rubric criterion gap
seed/ Template files for new SDK repos (.tmpl extension)
spec/ Smithy model templates
go/ ts/ ruby/ Per-language scaffolding
swift/ kotlin/
scripts/ .github/
Makefile.tmpl, AGENTS.md.tmpl, README.md.tmpl, etc.
skills/
rubric-audit/ Score an SDK repo against the rubric, produce scorecard + artifact
smithy-bare-arrays/ Smithy plugin for bare array (non-wrapped) responses
Add as a git subtree in an SDK repo:
git subtree add --prefix common https://github.com/basecamp/sdk.git main --squashUpdate later:
git subtree pull --prefix common https://github.com/basecamp/sdk.git main --squashActions are referenced from CI workflows. Conformance tests and runners live under common/conformance/ in the consuming repo.
Conformance runners reference the SDK via relative paths (e.g., ../../../typescript, ../../../kotlin) and are designed to build within a consuming repo, not standalone.
Use the seed-sdk prompt to walk through the full bootstrap process:
- Copy
seed/*into the new repo - Replace template placeholders (
{{.AppName}},{{.AppTitle}}, etc.) - Rename
.tmplfiles to their final names - Initialize Smithy spec, language toolchains, and conformance runners
- Run
make checkto verify clean state
All SDK repos are scored against RUBRIC.md (91 criteria for full SDK, 76 for single-language). The rubric covers:
- Tier 1 -- API fidelity (spec conformance, type fidelity, path correctness)
- Tier 2 -- Behavioral contracts (errors, retry, pagination, resilience)
- Tier 3 -- Developer experience (auth, observability, security)
- Tier 4 -- Infrastructure (generation pipeline, testing, release, DX)
See also MAKEFILE-CONVENTION.md for required Makefile targets and release architecture.