feat(backstage): catalog-info + TechDocs + GitHub→Backstage docs sync#106
Merged
Conversation
Annotate skill_pool for Backstage and publish its docs as TechDocs, mirroring the existing GitHub documentation corpus. - catalog-info.yaml: skill-pool System + server/web/cli Components + REST API + db/object-store/cache Resources (owner group:default/olafkfreund, domain public). Each kind validated against the live instance. - openapi.yaml: faithful OpenAPI 3.0 spec built from docs/api.md, wired to the API entity via spec.definition $text. - mkdocs.yml: techdocs-core build with a full nav mirroring docs/ + docs/wiki/. - scripts/sync-techdocs.py: generate docs/index.md from README.md (single source of truth) with TechDocs-aware link rewriting; --check gate for CI. - docs/backstage.md: catalog model + sync design. - .github/workflows/techdocs.yml: PR gate (sync-check + mkdocs build) and an optional main publish job to a TechDocs S3 bucket. Backstage's local builder serves dir:. from main otherwise. Local build: 70 pages, clean (no errors). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
f00985d to
cda6d44
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Annotates
skill_poolfor Backstage and publishes the existing GitHub docs as TechDocs, plus automation to keep the two in sync.Software Catalog —
catalog-info.yamlA
skill-poolSystem (domainpublic, ownergroup:default/olafkfreund— same pattern as theravnOSS project) with:skill-pool-serverserviceskill-pool-api; depends on db + object-store + cacheskill-pool-webwebsiteskill-pool-apiskill-pool-clilibraryskill-pool-apiskill-pool-apiopenapiopenapi.yamlskill-pool-db/-object-store/-cacheAll four entity kinds were validated against the live Backstage instance before commit.
TechDocs
openapi.yaml— faithful OpenAPI 3.0 spec built fromdocs/api.md(renders in the Backstage API explorer).mkdocs.yml—techdocs-corebuild, full nav mirroringdocs/+docs/wiki/.docs/backstage.md— catalog model + sync design.mkdocs build: 70 pages, no errors.Docs sync automation
scripts/sync-techdocs.py— regeneratesdocs/index.mdfromREADME.md(single source of truth) with TechDocs-aware link rewriting (docs/...stripped, code links → GitHub URLs).--checkmode is the CI gate..github/workflows/techdocs.yml— on every PR +main: verify README↔index sync and run a realmkdocs build. Optionalpublishjob ships a pre-built site to a TechDocs S3 bucket whenvars.TECHDOCS_PUBLISH=true; otherwise Backstage's local builder servesdir:.frommainautomatically.How sync works end-to-end
catalog-info.yamlregistered as a Location → Backstage re-reads on schedule.techdocs-ref: dir:.→ local builder rebuilds frommkdocs.ymlonmain.mainalways has buildable, in-sync docs.Notes
mkdocs buildemits non-fatal warnings for pre-existing cross-references in source docs that link to code outsidedocs/(e.g.../../server/src/...); CI intentionally does not use--strict.pages.yml(the marketing showcase site) is untouched — separate concern from the docs corpus.🤖 Generated with Claude Code