Zum Inhalt springen

Process — Docs Publish Flow

Sub-system: 11 — docs-site Related spec: ../specs/2026-05-23-11-docs-site-design.md

Author edits a spec MD in docs/superpowers/ → PR → CI build → sync script copies into docs-site/src/content/docs/ → Astro builds → Cloudflare Pages deploys → DNS at docs.nowyourlink.com resolves the new build.

An author submits documentation changes through a pull request. The build copies canonical specifications, rewrites links, renders the site and builds its search index. Preview and production publishing deliver the documentation, with internal runbooks protected by Cloudflare Access.An author submits documentation changes through a pull request. The build copies canonical specifications, rewrites links, renders the site and builds its search index. Preview and production publishing deliver the documentation, with internal runbooks protected by Cloudflare Access.
StepFailureHandling
sync-specs.mjsSecret pattern detected in spec MDBuild fails; author rewrites spec, removes secret, force-pushes.
link-check.mjsCross-link broken after renameBuild fails with suggested redirect; author adds entry to _redirects or fixes the link.
astro buildMermaid parse errorBuild fails; author fixes diagram syntax in source MD.
Pagefind postbuildIndex too large (>50 MB)Warning only at MVP; tracked for Phase 2 (incremental indexing).
CF Pages uploadBuild artifact >25 MB single fileFail; investigate (usually an accidentally committed image).
DNSdocs.nowyourlink.com not resolvingCheck Terraform state; CNAME flattening at apex zone (D24).
CF Access/internal/* returns 500 not 302Verify ACCESS_AUD env in Pages settings matches the docs-internal application audience.
  • Every merge to main triggers production deploy. No scheduled rebuilds.
  • The source-of-truth for spec content is always docs/superpowers/. The docs-site/src/content/docs/sub-systems/ tree is regenerated on every build and is .gitignore-d.
  • Preview deploys are publicly reachable (matches build-in-the-open posture); confidential drafts use status: confidential front-matter and are skipped by sync-specs.mjs.