← ClaudeAtlas

backstage-techdocslisted

Set up, debug, and CI-publish Backstage TechDocs — mkdocs.yml, techdocs-ref, builder/generator/publisher config, storage backends, and docs that are missing, stale, or fail to build.
bendaamerahmed/backstage-idp-plugin · ★ 1 · AI & Automation · score 65
Install: claude install-skill bendaamerahmed/backstage-idp-plugin
# Backstage TechDocs Wire the docs-like-code pipeline correctly, and tell apart the four places it breaks: the entity annotation, the mkdocs source, the generator, and the publisher. ## Preconditions - Release line from `backstage.json`; TechDocs packages resolved with `yarn why @backstage/plugin-techdocs-backend` and `yarn why @techdocs/cli`. - Backend generation: `backend.add(import('@backstage/plugin-techdocs-backend'))` in `packages/backend/src/index.ts` is the new backend system; a `createRouter` in `packages/backend/src/plugins/techdocs.ts` is legacy — migrate it (`backstage-plugin-migrate`) before adding a build-strategy module. - Frontend generation: NFS (default since v1.49) registers TechDocs and its addon modules as `features` from `/alpha` exports; legacy has `TechDocsIndexPage`/`TechDocsReaderPage` inside `<FlatRoutes>` and an `EntityTechdocsContent` tab in `EntityPage.tsx`. - The **effective merged** config, not `app-config.yaml` alone: `yarn backstage-cli config:print --lax`. Production almost always overrides `techdocs.*` in `app-config.production.yaml`. - Whether the runtime has Docker (for `runIn: docker`) or Python with `mkdocs-techdocs-core` (for `runIn: local`). ## Procedure 1. **Read the triple before anything else.** `techdocs.builder`, `techdocs.generator.runIn`, `techdocs.publisher.type` determine which failures are even possible. - `builder: 'local'` — the backend generates and publishes on demand when a user opens the docs tab. Out-of-the-bo