Skip to main content

api-sync

Check upstream Basecamp API changes and sync the Smithy spec. Compares bc3 API docs and app code against the tracked bc3 revision in spec/api-provenance.json, identifies what changed, and optionally updates the Smithy spec and regenerates SDKs.

Quellinformationen

Repository
basecamp/basecamp-sdk
Letzte Quellaktivität
17. August 2026 um 01:36
Erkannte Sprache von SKILL.md
Englisch
Sterne
53
Forks
10

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
api-sync
description
Check upstream Basecamp API changes and sync the Smithy spec. Compares bc3 API docs and app code against the tracked bc3 revision in spec/api-provenance.json, identifies what changed, and optionally updates the Smithy spec and regenerates SDKs.
disable-model-invocation
true
argument-hint
[check|sync|update-rev]
# API Sync Skill You are synchronizing the Basecamp SDK's Smithy spec against upstream API changes. ## Inputs - **mode**: `{{ arguments.mode | default: "check" }}` ## Upstream repo - **bc3** (canonical source): `basecamp/bc3` - API reference docs: watch `doc/api/` - Rails app/API implementation: watch `app/controllers/` The public `basecamp/bc3-api` repo is a mirror for documentation consumption, not a provenance input. ## Phase 1: Load State 1. Read `spec/api-provenance.json` to get the last-synced revision for `bc3`. ## Phase 2: Check Upstream List files changed in the watched paths since the last sync. For **bc3 API docs** (`doc/api/`): ```bash gh api repos/basecamp/bc3/compare/<bc3.revision>...HEAD \ --jq '[.files[] | select(.filename | startswith("doc/api/"))] | if length == 0 then " (no changes in doc/api/)" else .[] | .status[:1] + " " + .filename end' ``` For **bc3 API implementation** (`app/controllers/`): ```bash gh api repos/basecamp/bc3/compare/<bc3.revision>...HEAD \ --jq '[.files[] | select(.filename | startswith("app/controllers/"))] | if length == 0 then " (no changes in app/controllers/)" else .[] | .status[:1] + " " + .filename end' ``` Summarize the changed files by API domain (todos, messages, people, etc.). If there are no changes in either watched path, report "up to date" and stop. If mode is `check`, stop here after reporting what changed. ## Phase 3: Sync Spec (mode=sync only) For each changed doc file in `bc3`: 1. Fetch the upstream doc from `basecamp/bc3`: ```bash gh api repos/basecamp/bc3/contents/doc/api/<path> --jq '.content' | base64 -d ``` 2. Read the corresponding Smithy operations in `spec/basecamp.smithy` and `spec/overlays/` 3. Identify gaps: missing operations, changed fields, new parameters 4. Propose specific Smithy changes and apply after confirmation For controller changes in `bc3`, cross-reference them with `doc/api/` to identify behavioral changes that affect the spec. ## Phase 4: Regenerate (mode=sync only) After spec changes are applied: ```bash make generate make check ``` `make generate` is the pipeline's only definition — do not expand it into individual targets here. The list this replaced had gone stale in five places: it omitted `py-generate`, `kt-generate-services` and `swift-generate` entirely (so following it left three SDKs ungenerated), along with `behavior-model` and the final `sync-api-version` that re-derives prose constants from the generated accessors. Fix any issues that arise during generation or checks. ## Phase 5: Update Revision (mode=sync or update-rev) Get the current `bc3` HEAD: ```bash gh api repos/basecamp/bc3/commits/HEAD --jq '.sha' ``` Write the new revision and today's date to `spec/api-provenance.json`: ```json { "bc3": { "revision": "<new-sha>", "date": "<today>" } } ``` Then run `make provenance-sync` to update the Go embedded copy. ## Output Report a summary of: - What changed upstream (by domain) - What spec changes were made (if sync mode) - New revision SHA stamped - Any warnings or issues encountered
Auf GitHub ansehen