Build docs site and move the CLI into a Turborepo workspace#22
Merged
Conversation
Expand the docs site content and navigation, add the custom shadcn/Fumadocs theme used across the landing and docs pages, and include the sidebar deduplication plus local stale-build recovery guardrails.
There was a problem hiding this comment.
Pull request overview
This PR converts the repo into a pnpm + Turborepo monorepo, moves the DubStack CLI into packages/cli, and adds a new Fumadocs-based Next.js docs site under apps/docs.
Changes:
- Added Turborepo + pnpm workspace configuration and updated CI/release workflows for the monorepo layout
- Moved CLI packaging/config to
packages/cliand introduced a docs app (apps/docs) with content, routes, and tests - Added agent skill docs and Claude configuration updates supporting the new workflow
Reviewed changes
Copilot reviewed 87 out of 206 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| turbo.json | Adds Turborepo task graph for build/test/typecheck/dev across workspaces |
| tsconfig.json | Converts root TS config into a base config for workspace extension |
| skills-lock.json | Adds lock entry for a new playwright-cli skill source |
| pnpm-workspace.yaml | Defines apps/* and packages/* as workspace packages |
| packages/cli/tsconfig.json | Adds CLI-local TS config extending root base config |
| packages/cli/package.json | Adds CLI package manifest/scripts for workspace publishing/testing |
| package.json | Converts root into a private workspace package with turbo-driven scripts |
| biome.json | Enables CSS Modules + Tailwind directive parsing |
| docs/plans/2026-02-21-merge-workflow-guardrails.md | Removes an old planning document from docs/plans/ |
| docs/plans/2026-02-21-dub-ux-command-parity-implementation.md | Removes an old planning document from docs/plans/ |
| docs/plans/2026-02-21-dub-ux-command-parity-design.md | Removes an old planning document from docs/plans/ |
| docs/plans/2026-02-21-dub-sync-parity-implementation.md | Removes an old planning document from docs/plans/ |
| docs/plans/2026-02-21-dub-sync-parity-design.md | Removes an old planning document from docs/plans/ |
| docs/plans/2026-02-21-dogfood-cli-ux-improvements.md | Removes an old planning document from docs/plans/ |
| apps/docs/tsconfig.json | Adds TS config for the docs app |
| apps/docs/test/package-scripts.test.mjs | Adds test ensuring docs package has stale-build recovery scripts |
| apps/docs/test/meta.test.mjs | Adds test ensuring sidebar meta has no separator duplicates |
| apps/docs/src/mdx-components.tsx | Adds MDX component wiring for Fumadocs UI |
| apps/docs/src/lib/source.ts | Adds Fumadocs source loader and helpers (OG/LLM export) |
| apps/docs/src/lib/layout.shared.tsx | Adds shared layout config (nav/title/links) |
| apps/docs/src/lib/cn.ts | Adds Tailwind Merge helper for className composition |
| apps/docs/src/components/ai/page-actions.tsx | Adds “Copy Markdown” + “Open in …” actions for docs pages |
| apps/docs/src/app/og/docs/[...slug]/route.tsx | Adds OG image route for docs pages |
| apps/docs/src/app/llms.txt/route.ts | Adds llms.txt index route |
| apps/docs/src/app/llms.mdx/docs/[[...slug]]/route.ts | Adds per-page LLM-friendly MDX export route |
| apps/docs/src/app/llms-full.txt/route.ts | Adds full-site LLM-friendly plaintext export route |
| apps/docs/src/app/layout.tsx | Adds root Next layout + metadata + fonts |
| apps/docs/src/app/global.css | Adds Tailwind + theme variables + base layer styling |
| apps/docs/src/app/docs/layout.tsx | Adds docs layout using Fumadocs DocsLayout |
| apps/docs/src/app/docs/[[...slug]]/page.tsx | Adds docs page renderer + metadata + actions |
| apps/docs/src/app/api/search/route.ts | Adds server search route backed by Fumadocs source |
| apps/docs/src/app/(home)/page.tsx | Adds landing page for docs site |
| apps/docs/src/app/(home)/layout.tsx | Adds home layout wrapper using Fumadocs HomeLayout |
| apps/docs/source.config.ts | Adds Fumadocs MDX collection config + schemas |
| apps/docs/postcss.config.mjs | Adds PostCSS config for Tailwind v4 plugin |
| apps/docs/package.json | Adds docs app manifest, scripts, and dependencies |
| apps/docs/next.config.mjs | Adds MDX integration and rewrites for .mdx exports |
| apps/docs/content/docs/meta.json | Adds docs root sidebar metadata |
| apps/docs/content/docs/index.mdx | Adds docs introduction page |
| apps/docs/content/docs/guides/stacking-workflow.mdx | Adds workflow playbook guide |
| apps/docs/content/docs/guides/migration-from-graphite.mdx | Adds Graphite-to-DubStack command mapping guide |
| apps/docs/content/docs/guides/meta.json | Adds guides sidebar metadata |
| apps/docs/content/docs/guides/conflict-resolution.mdx | Adds troubleshooting guide |
| apps/docs/content/docs/guides/ai-assistant.mdx | Adds AI assistant guide |
| apps/docs/content/docs/getting-started/quickstart.mdx | Adds getting-started quickstart page |
| apps/docs/content/docs/getting-started/meta.json | Adds getting-started sidebar metadata |
| apps/docs/content/docs/getting-started/installation.mdx | Adds installation docs |
| apps/docs/content/docs/contributing/testing.mdx | Adds contributing/testing docs |
| apps/docs/content/docs/contributing/meta.json | Adds contributing sidebar metadata |
| apps/docs/content/docs/contributing/development.mdx | Adds contributing/development workflow docs |
| apps/docs/content/docs/contributing/agent-skills.mdx | Adds docs describing packaged agent skills |
| apps/docs/content/docs/concepts/state-management.mdx | Adds state management concept page |
| apps/docs/content/docs/concepts/stacked-diffs.mdx | Adds stacked diffs concept page |
| apps/docs/content/docs/concepts/stack-graph.mdx | Adds stack graph concept page |
| apps/docs/content/docs/concepts/meta.json | Adds concepts sidebar metadata |
| apps/docs/content/docs/commands/undo.mdx | Adds recovery command docs (continue/abort/undo) |
| apps/docs/content/docs/commands/track.mdx | Adds track/untrack/delete command docs |
| apps/docs/content/docs/commands/sync.mdx | Adds sync command docs |
| apps/docs/content/docs/commands/submit.mdx | Adds submit command docs |
| apps/docs/content/docs/commands/skills.mdx | Adds skills command docs |
| apps/docs/content/docs/commands/restack.mdx | Adds restack command docs |
| apps/docs/content/docs/commands/post-merge.mdx | Adds post-merge command docs |
| apps/docs/content/docs/commands/navigate.mdx | Adds navigation command docs |
| apps/docs/content/docs/commands/modify.mdx | Adds modify command docs |
| apps/docs/content/docs/commands/meta.json | Adds commands sidebar metadata |
| apps/docs/content/docs/commands/merge-next.mdx | Adds merge-next/land command docs |
| apps/docs/content/docs/commands/log.mdx | Adds log command docs |
| apps/docs/content/docs/commands/doctor.mdx | Adds maintenance command docs (doctor/ready/prune/merge-*) |
| apps/docs/content/docs/commands/create.mdx | Adds create command docs |
| apps/docs/content/docs/commands/checkout.mdx | Adds checkout + navigation + orientation docs |
| apps/docs/README.md | Adds docs app README + stale-build recovery notes |
| apps/docs/.gitignore | Adds docs app gitignore for Next/Fumadocs artifacts |
| AGENTS.md | Updates agent guidance for monorepo structure and new paths |
| .gitignore | Updates repo ignore list for turbo/next/fumadocs artifacts |
| .github/workflows/release.yml | Updates release workflow to pack/publish from packages/cli |
| .github/workflows/merge-order.yml | Updates merge-order workflow to run CLI from workspace |
| .github/workflows/ci.yml | Updates CI to use turbo --affected and adjusts coverage artifact path |
| .claude/skills/playwright-cli | Adds Claude skill link for playwright-cli |
| .claude/settings.json | Adds Claude hook to auto-run Biome formatting on edits |
| .claude/agents/test-writer.md | Adds a Claude agent prompt for generating tests (needs path update) |
| .claude/agents/code-reviewer.md | Adds a Claude agent prompt for reviewing code (needs path update) |
| .agents/skills/playwright-cli/references/video-recording.md | Adds playwright-cli reference documentation |
| .agents/skills/playwright-cli/references/tracing.md | Adds playwright-cli reference documentation |
| .agents/skills/playwright-cli/references/test-generation.md | Adds playwright-cli reference documentation |
| .agents/skills/playwright-cli/references/storage-state.md | Adds playwright-cli reference documentation |
| .agents/skills/playwright-cli/references/session-management.md | Adds playwright-cli reference documentation |
| .agents/skills/playwright-cli/references/running-code.md | Adds playwright-cli reference documentation |
| .agents/skills/playwright-cli/references/request-mocking.md | Adds playwright-cli reference documentation |
| .agents/skills/playwright-cli/SKILL.md | Adds playwright-cli skill definition |
Comments suppressed due to low confidence (2)
apps/docs/src/components/ai/page-actions.tsx:1
- The Clipboard API expects each
ClipboardItementry value to be aBlob(or a promise resolving to aBlob), but this code returns astringfromres.text(). This will throw at runtime in browsers that enforce the spec. Fix by returning aBlob(e.g.,new Blob([content], { type: 'text/plain' })) or by usingnavigator.clipboard.writeText(content)for plain text copying.
apps/docs/src/app/og/docs/[...slug]/route.tsx:1 - This route is
/og/docs/[...slug], sogenerateStaticParamsshould only return params forslug. Returning an extralangkey doesn’t match the segment params and may become a build error with stricter Next.js validation. Removelang(or movelanginto the route structure if localization is intended).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
Summary
packages/cliand wire the repo as a pnpm/turbo monorepoChanges
apps/docswith Fumadocs, MDX content collections, search, OG image routes, and LLM export routespackages/cliBehavior Impact
Testing
pnpm testpnpm typecheckpnpm checksCoding Agent Checklist
AGENTS.mdand relevant.agents/*docssrc/)Docs
.agentsdocs updated where neededRisks / Follow-Ups
homebrew/dubstack.rbfile in sync with the external tap and whether to add a small CLI release helper script