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.

Informações da origem

Repositório
basecamp/basecamp-sdk
Última atividade na origem
17 de agosto de 2026 às 01:36
Idioma detectado do SKILL.md
inglês
Estrelas
53
Forks
10

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
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
Ver no GitHub