* docs(diagrams): let the delivery loop's two slogans carry the accent Alexey, on the merged version: "I would make both slogans stick out more - splash of color, bigger font". He is right, and the original backs him up: it set START ANYWHERE in gold and RIGHT-SIZED in pale blue, both larger than what replaced them. Dropping every colour from the diagrams - so one drawing could serve light and dark - took that with it, and the two lines went grey and small enough to skip. They are the only sentences in the drawing, and a reader who skips them gets four boxes and no argument. Both now take the accent at 22, up from 17.5 and 18, as a matched pair rather than the mismatched ink-700 / muted-600 they had drifted into. Two colours are not available to a theme with one accent, so the pairing the original drew - gold for the entry promise, blue for the summary - collapses into one hue used twice. The canvas grows 460 to 466 to hold the larger type at the same 40 units of clearance. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * docs(diagrams): make the slogans banners, and give the pair two hues The theme already had an answer for what a banner is here. custom.css says the masthead is "display type, a lead, then a hairline closing the band, the way every section on the marketing site closes" - so each slogan now closes on a rule, run across the drawing's own measure, 60 to 1060, so the banners sit on the boxes' grid rather than floating over it. Both ends in the same accent read as one statement made twice. They are not: the top is the invitation, the bottom the summary, and the original said so by setting them in different colours. `--dg-accent-2` is the site's copper, the nearest thing this palette holds to that gold, so the pairing survives without inventing a hue. It needs a dark value of its own - `--bmad-copper` is #8a5a00 and disappears on a dark ground - and #e0b25f is that copper lifted, the value `--dg-warn` already uses on dark. The two rules cost height: 466 to 477. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * docs(diagrams): set the banners in the site's label register, and drop copper Copper is not a palette colour on bmadcode.com. Every use of #8a5a00 there is a status: `.tag-warn`, the gate's CONCERNS heading, `.road .st`, a flagged row in the module pane. Putting it on the closing line said "this is a problem" about the diagram's own conclusion. `--dg-accent-2` is gone. Reading the live site rather than counting hexes in its stylesheet also settles what these should be. Its uppercase labels are one register - IBM Plex Mono, 11px, weight 400, tracking ~0.08em - in exactly two colours: #7c8797 when a label orients, #0f35e0 when it carries weight. No section head on the site is coloured at all. So the banners are that register, not the Archivo 700 headings they had become, and the pair is told apart the way the site tells labels apart: accent for the opening, which is also what the entry drops below it are drawn in, and muted for the closing summary. They are set at 16 units rather than the site's 11px because they span the width of a drawing rather than sitting over a paragraph - 13.3px apparent in a README, against the 9.2px Alexey objected to. Canvas back to 465 now that the type is smaller. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * docs(diagrams): light the bulbs, and rule the field the original had Two colour families ran through the original: gold for the inputs - both bulbs, the three entry drops, the opening line - and cyan for the loop. When the drops took the accent back, the bulbs were left outside a family they belong to, so the drawing had a blue arrow leaving an ink bulb. Both bulbs are lit in the accent now. The cloud stays muted, as it was there too: it was drawn in the cool colour, not the gold, and a vague notion should not glow like an idea. The ruled field returns at the original's pitch, 70 one way and 140 the other, but held between the two hairlines so it reads as what the banners enclose rather than running out under them. Drawn in the line token, not the fixed blue it was, so it survives both ramps - at two opacities, because the dark line sits further from its ground than the light one and the same value that is texture on paper becomes structure on black. No gradient. The docs page gives this drawing no ground of its own, so a gradient can only live in the README export, and the two would drift apart for it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
BMAD Method Documentation Site
This directory contains the Astro + Starlight configuration for the BMAD Method documentation site.
Architecture
The documentation uses a symlink architecture to keep content in docs/ at the repo root while serving it through Astro:
bmad2/
├── docs/ # Content lives here (repo root)
│ ├── index.md
│ ├── tutorials/
│ ├── how-to/
│ ├── explanation/
│ └── reference/
└── docs-site/
├── astro.config.mjs # Astro + Starlight config
├── scripts/ # Build pipeline, link and sidebar validators
├── test/ # Node tests for the site and its scripts
├── src/
│ ├── content/
│ │ └── docs -> ../../../docs # Symlink to content
│ └── styles/
│ └── custom.css # Custom styling
└── public/ # Static assets
Development
cd docs-site
npm ci # Install (Node version in .nvmrc)
npm run dev # Start dev server
npm run build # Build for production (validates links first)
npm run preview # Preview production build
npm run validate-links # Check site-relative links in docs/
npm run validate-sidebar # Check sidebar.order frontmatter
npm run fix-links # Rewrite relative links to repo-relative (add --write)
npm run lint # ESLint over scripts/ and test/
npm run format:check # Prettier over scripts/ and test/
npm test # Run the site tests
The site is the only part of the repository that uses Node; everything else
runs on uv. tools/quality.py at the repository root runs these checks
together with the Python ones.
Platform Notes
Windows Symlink Support
The docs-site/src/content/docs symlink may not work correctly on Windows without Developer Mode enabled or administrator privileges.
To enable symlinks on Windows:
-
Enable Developer Mode (recommended):
- Settings → Update & Security → For developers → Developer Mode: On
- This allows creating symlinks without admin rights
-
Or use Git's symlink support:
git config core.symlinks trueThen re-clone the repository.
-
Or create a junction (alternative):
# Run as Administrator mklink /J docs-site\src\content\docs ..\..\..\docs
If symlinks don't work, you can copy the docs folder instead:
# Remove the symlink
rm docs-site/src/content/docs
# Copy the docs folder
cp -r docs docs-site/src/content/docs
Note: If copying, remember to keep the copy in sync with changes to docs/.
Build Output
The build pipeline (npm run build) produces:
- Static HTML site in
build/site/