Problem
Today, docs updates for upstream ToolHive releases happen through two uncoordinated channels:
- Reference docs (CLI help, Swagger, CRD schemas) are regenerated automatically by
.github/workflows/update-toolhive-reference.yml when stacklok/toolhive publishes a release.
- Content docs (guides, concepts, tutorials) only update when a human notices a release and manually opens a PR. There is no source of truth for "which upstream projects do we document and what version are we pinned at."
This makes content docs reactive, easy to forget, and dependent on a single person tracking upstream changes across multiple repos.
Goal
Make content-doc updates as declarative and tracked as reference updates:
- A single YAML file lists every upstream project we document with its pinned version.
- Renovate watches that file and opens a version-bump PR whenever an upstream releases.
- A reaction workflow augments that PR with source-verified, editorially-polished content edits produced by the
upstream-release-docs skill, and requests review from non-bot release contributors.
Tracked projects
| id |
repo |
toolhive |
stacklok/toolhive |
toolhive-registry-server |
stacklok/toolhive-registry-server |
toolhive-studio |
stacklok/toolhive-studio |
toolhive-cloud-ui |
stacklok/toolhive-cloud-ui |
Approach
- Renovate watches
repo: + version: pairs in .github/upstream-projects.yaml via a custom regex manager (github-releases datasource, ignoreUnstable: true, rebaseWhen: never, recreateWhen: never).
.github/workflows/upstream-release-docs.yml triggers on Renovate-authored pull_request events (with a required label gate) and on workflow_dispatch for manual retry. It runs the upstream-release-docs skill three times (pass 1 + docs-review + re-verification) via anthropics/claude-code-action@v1, pushes content commits to the Renovate branch, augments the PR body in a marker-delimited section, and assigns reviewers extracted from gh api compare.
Acceptance criteria
Follow-ups (out of scope for PR #748)
- Consolidate the upstream-repo list so
weekly-product-updates skill and scripts/update-toolhive-reference.sh read from the same YAML.
- Migrate to signed commits if branch protection rejects unsigned
github-actions[bot] pushes on Renovate branches (a GitHub App token is the likely fix).
- Add a collaborator filter for the reviewer list if external contributors get surprise notifications.
- Keyword-gate the skill to skip patch-only releases if API spend proves an issue.
Related
Problem
Today, docs updates for upstream ToolHive releases happen through two uncoordinated channels:
.github/workflows/update-toolhive-reference.ymlwhenstacklok/toolhivepublishes a release.This makes content docs reactive, easy to forget, and dependent on a single person tracking upstream changes across multiple repos.
Goal
Make content-doc updates as declarative and tracked as reference updates:
upstream-release-docsskill, and requests review from non-bot release contributors.Tracked projects
toolhivestacklok/toolhivetoolhive-registry-serverstacklok/toolhive-registry-servertoolhive-studiostacklok/toolhive-studiotoolhive-cloud-uistacklok/toolhive-cloud-uiApproach
repo:+version:pairs in.github/upstream-projects.yamlvia a custom regex manager (github-releases datasource,ignoreUnstable: true,rebaseWhen: never,recreateWhen: never)..github/workflows/upstream-release-docs.ymltriggers on Renovate-authoredpull_requestevents (with a required label gate) and onworkflow_dispatchfor manual retry. It runs theupstream-release-docsskill three times (pass 1 + docs-review + re-verification) viaanthropics/claude-code-action@v1, pushes content commits to the Renovate branch, augments the PR body in a marker-delimited section, and assigns reviewers extracted fromgh api compare.Acceptance criteria
docusaurus.config.tsSwagger pin is rewritten byapply-pin-files.mjsupstream-docs-failedlabel and a retry commentworkflow_dispatchwithpr_numberidempotently re-runs augmentationupdate-toolhive-reference.ymlwhen both fire for the same ToolHive releaseFollow-ups (out of scope for PR #748)
weekly-product-updatesskill andscripts/update-toolhive-reference.shread from the same YAML.github-actions[bot]pushes on Renovate branches (a GitHub App token is the likely fix).Related