Project docs site
Project docs site 指项目在工程仓库内维护一个独立的 web 文档站点,通常以 docs-site/、docs-pages.yml 或等价 publish workflow、docs:build / build-docs-site、DOCS_PORT 等入口体现。
- 前端
目录
Definition
Project docs site 指项目在工程仓库内维护一个独立的 web 文档站点,通常以 docs-site/、docs-pages.yml 或等价 publish workflow、docs:build / build-docs-site、DOCS_PORT 等入口体现。它不是普通 docs/ 目录、README 汇总页、Storybook、产品 UI 或 Astro 博客;本 Topic 只覆盖“文档站本身是可构建、可预览、可发布的交付面”的项目模式。
这个模式的核心是把 README 保持为短入口,把完整部署、使用、配置、运维、排障、API、产品说明或硬件设计说明放到站点里,再让 CI workflow 把它当成独立交付面发布。正式入口可以是 GitHub Pages,也可以是主站 /docs/ 子路径上的 EdgeOne 等静态托管目标;GitHub Pages 甚至可以只保留为热备。用 codebase-design 的语言说,文档站是一条独立 Seam:它对读者暴露的 Interface 是导航、页面结构、版本化构建和公开 URL;站点生成器、内容组织、Storybook 链接和发布 workflow 是内部 Implementation。这条 Seam 保持清晰时,维护者能在不扰动产品 UI 或服务 runtime 的情况下更新外部文档。
When to use
当 project snapshot 或 checked-in 配置明确显示仓库有 docs-site/、文档站 package、文档站 build/preview 脚本,且站点由 docs-pages.yml 或等价发布流程作为独立交付物发布时使用。代表样本包括 Dockrev 的 Rspress 文档站、OctoRill 的 public docs-site、Mains Aegis 的设备文档站、KaisouMail 的双语 Rspress 文档站,以及 IsolaRail 这种“主 web app 占根路径,docs site 挂在 /docs/ 子路径”的组合静态发布结构(projects/dockrev.md、projects/isolarail.md、projects/octo-rill.md、projects/mains-aegis.md、projects/kaisoumail.md)。
如果仓库只有 docs/ Markdown、内部 design docs、README、Storybook docs addon,或 Astro public content site,不应自动命中本 Topic。那些分别归到 System design docs、Storybook component QA / Storybook accessibility、Astro site 或普通项目文档维护。若只在 bootstrap 脚本里提到 docs-site/ 依赖安装,但 snapshot 没证明文档站是当前发布面,应先补 project snapshot 再提升到这个 Topic。
Habits / defaults
- 默认把文档站当作独立交付面,而不是产品 UI 的附属路由。
dockrev把完整部署、使用、运维、排障和 API 文档放在docs-site/,README 只做快速入口;这适合运维工具,因为用户需要先理解部署和风险,再进入管理 UI(projects/dockrev.md)。 - 技术栈上,当前样本集中在
Rspress+ package scripts + GitHub Actions workflow,但“托管平台是谁”不是 Topic 的核心。dockrev暴露docs:dev、docs:build、docs:preview,mains-aegis使用DOCS_PORT覆盖默认端口,kaisoumail用build-docs-site放进 Bun workspace gate,isolarail则把 docs site 作为/docs/子站点装进主站组合 artifact;维护时要把这些脚本和 publish path 一起列入验证,而不是只跑产品webbuild(projects/dockrev.md、projects/isolarail.md、projects/mains-aegis.md、projects/kaisoumail.md)。 - 内容风格要跟项目风险匹配。运维工具偏部署/使用/排障/API,GitHub 动态产品要同步 quick start、config、product 和 internal docs,硬件设备项目要把硬件行为、质量门禁和只读控制台边界讲清,Cloudflare 控制面项目则需要中英双语入口和部署环境说明(
projects/dockrev.md、projects/octo-rill.md、projects/mains-aegis.md、projects/kaisoumail.md)。 - 文档站发布应有自己的 workflow 或 gate。多个样本都出现
.github/workflows/docs-pages.yml或等价 docs publish workflow,说明 docs deploy 与 PR/main/release gate 是并列交付链路;改导航、base path、Storybook 链接或站点 build 配置时,要验证 publish workflow 会消费到正确 artifact。对isolarail这类仓库,还要额外验证根站点与/docs/子站点是否来自同一份组合静态产物(projects/dockrev.md、projects/isolarail.md、projects/octo-rill.md、projects/kaisoumail.md)。 Docs Pages是 expected-success workflow;它最终以failure结束时应进入 generic workflow failure sidecar,并保留 docs run 的具体run_id/run_attempt/URL。通知与 docs publish 仍是两个独立交付面,不能把告警逻辑塞回站点 build job(projects/dockrev.md)。- Storybook 可以被文档站链接,但不能和文档站混为一谈。
kaisoumail的 docs-site 链接/storybook.html与/zh/storybook.html,这说明 Storybook 是公开资产;坏掉会影响 docs-site,但组件 QA、a11y 和文档站导航仍是不同 Seam(projects/kaisoumail.md)。 - 本地预览端口要可覆盖,并遵守 port lease。
dockrev和mains-aegis都记录 docs-site 默认50885且可通过DOCS_PORT覆盖;后续 Agent 不应直接抢默认端口,也不要把 docs-site preview 冒充产品 web demo(projects/dockrev.md、projects/mains-aegis.md)。 - 不要预设 docs site 一定独占根域名或一定由 GitHub Pages 提供。
isolarail证明 docs site 可以稳定作为主站/docs/子路径发布,而 GitHub Pages 只保留为热备与 DNS rollback source(projects/isolarail.md)。
Reference implementations
projects/dockrev.md:运维工具文档站样本。它用docs-site/承载完整部署、使用、运维、排障和 API 文档,根 README 保持短入口,根package.json暴露 docs dev/build/preview 脚本,.github/workflows/docs-pages.yml负责发布。projects/isolarail.md:组合静态发布样本。web/主站占根路径/,docs-site/挂到/docs/,再把同一份静态 artifact 同时发到 EdgeOne 正式入口与 GitHub Pages 热备。projects/octo-rill.md:产品化 Rust 服务 + React UI + public docs-site 样本。README 同时指向 public docs-site、quick start、config、product 和 internal docs,适合观察“公开站点与内部设计文档必须同步”的维护习惯。projects/mains-aegis.md:设备 mono-repo 文档站样本。docs/是工程设计中心,docs-site/用 Rspress 生成公开站点,内容风格围绕硬件行为、只读运维 UI、安全边界和质量门禁。projects/kaisoumail.md:Cloudflare 控制面和双语文档站样本。docs-site/使用 Rspress,包含中文部署环境文档,并把 Storybook 作为公开资产链接进站点,适合参考双语导航与产品 surface 组合。
Failure modes
- 把“有 Markdown 文档”误判为
Project docs site,会把普通docs/和可发布 web 站点混在一起。修正方式是检查docs-site/package.json、文档站脚本、发布 workflow 和 project snapshot 是否共同存在。 - 只改 README 或
docs/,忘记同步 docs-site 导航与构建,容易让公开文档站落后于项目 current truth。对于octo-rill这类产品,docs-site 与 internal docs 漂移会直接影响配置和行为理解(projects/octo-rill.md)。 - 把 docs-site preview 当成产品 demo,会让验收走错 Seam。
mains-aegis明确要求 Web demo 复用正式前端与正式 route,不把 docs-site 或普通 preview 误算成产品演示面(projects/mains-aegis.md)。 - 忽略端口覆盖会在多 worktree / 多 Agent 环境里撞车。看到
DOCS_PORT或默认50885时,应先走端口租约,再启动文档站(projects/dockrev.md、projects/mains-aegis.md)。 - 文档站发布 workflow 被当成低风险 docs-only 改动,可能导致 GitHub Pages 断链、base path 错误或 Storybook 链接失效。
kaisoumail的公开 Storybook 链接说明 docs-site 破坏也会影响组件文档资产(projects/kaisoumail.md)。 - 误以为 docs site 必须独占发布入口,也会让主站 +
/docs/组合发布场景被错误拆成两个不一致的 artifact。对isolarail这类仓库,文档站路径、主站根路径和 hot backup 路径必须一起验证(projects/isolarail.md)。
Evidence index
projects/dockrev.mdprojects/isolarail.mdprojects/kaisoumail.mdprojects/mains-aegis.mdprojects/octo-rill.mdskills/style-project-docs-site/SKILL.md
相关内容
Dockrev
项目实践Dockrev 是 self-hosted Docker/Compose update manager。README.md 把根文档定位为快速入口,完整部署、使用、运维、排障和 API 文档在 docs-site/,这说明它是运维工具而不是普通 CRUD 管理台。
IsolaRail
项目实践IsolaRail 是当前 V3 四口 USB hub 的 owner-facing control plane 仓库。README.md 把它定义为 ESP32-S3 + CH335F + M24C64@0x50 + EN1..
Mains Aegis
项目实践Mains Aegis 是 UPS / power-management 设备 mono-repo:它把硬件行为文档、ESP32-S3 固件、Web 管理界面、docs-site、前面板/音频预览工具和质量门禁放在同一个维护边界里。PRODUCT.md 明确把 Web 管理界面定义为面向多设备 UPS 的只读运维控制台,首要目标是让维护者快速判断设备健康、离线、后备供电和告警状态,而不是做可写控制台。
OctoRill
项目实践OctoRill 把与 Ivan 相关的 GitHub 动态整理成适合持续阅读的工作区:发布更新、获星/关注动态、日报和 Inbox,发布内容还支持中文翻译和要点整理。README.md 同时指向 public docs-site、quick start、config、product 和 internal docs,说明它是产品化 Rust 服务 + React UI + 文档站,而不是一次性脚本。