Compare commits

...

2 Commits

Author SHA1 Message Date
Alex Verkhovsky 8122f408dc refactor: convert build-docs to ESM, eliminate mutable globals
- Convert build-docs.js to build-docs.mjs (CJS → ESM)
- Import getSiteUrl directly, remove async import workaround
- Kill mutable SITE_URL global, call getSiteUrl() where needed
- Clean up Banner.astro variable naming
- Update package.json and CI workflow for .mjs extension
2026-02-06 03:50:55 -07:00
Alex Verkhovsky c796cf4350 fix: correct module names and relocate prompt file
- CIS: "Creative Innovation Suite" → "Creative Intelligence Suite"
- GDS: "Game Dev Suite" → "Game Dev Studio"
- Move _prompt-external-modules-page.md from docs/ to tools/docs/
2026-02-05 23:52:49 -07:00
6 changed files with 27 additions and 32 deletions

View File

@ -8,7 +8,7 @@ on:
- "docs/**" - "docs/**"
- "src/modules/*/docs/**" - "src/modules/*/docs/**"
- "website/**" - "website/**"
- "tools/build-docs.js" - "tools/build-docs.mjs"
- ".github/workflows/docs.yaml" - ".github/workflows/docs.yaml"
workflow_dispatch: workflow_dispatch:

View File

@ -26,7 +26,7 @@
"scripts": { "scripts": {
"bmad:install": "node tools/cli/bmad-cli.js install", "bmad:install": "node tools/cli/bmad-cli.js install",
"bundle": "node tools/cli/bundlers/bundle-web.js all", "bundle": "node tools/cli/bundlers/bundle-web.js all",
"docs:build": "node tools/build-docs.js", "docs:build": "node tools/build-docs.mjs",
"docs:dev": "astro dev --root website", "docs:dev": "astro dev --root website",
"docs:fix-links": "node tools/fix-doc-links.js", "docs:fix-links": "node tools/fix-doc-links.js",
"docs:preview": "astro preview --root website", "docs:preview": "astro preview --root website",

View File

@ -9,19 +9,20 @@
* build/site/ - Final Astro output (deployable) * build/site/ - Final Astro output (deployable)
*/ */
const { execSync } = require('node:child_process'); import { execSync } from 'node:child_process';
const fs = require('node:fs'); import fs from 'node:fs';
const path = require('node:path'); import path from 'node:path';
const archiver = require('archiver'); import { fileURLToPath } from 'node:url';
import archiver from 'archiver';
import { getSiteUrl } from '../website/src/lib/site-url.mjs';
// ============================================================================= // =============================================================================
// Configuration // Configuration
// ============================================================================= // =============================================================================
const PROJECT_ROOT = path.dirname(__dirname); const PROJECT_ROOT = path.dirname(path.dirname(fileURLToPath(import.meta.url)));
const BUILD_DIR = path.join(PROJECT_ROOT, 'build'); const BUILD_DIR = path.join(PROJECT_ROOT, 'build');
let SITE_URL; // Resolved in main() via shared getSiteUrl()
const REPO_URL = 'https://github.com/bmad-code-org/BMAD-METHOD'; const REPO_URL = 'https://github.com/bmad-code-org/BMAD-METHOD';
// DO NOT CHANGE THESE VALUES! // DO NOT CHANGE THESE VALUES!
@ -53,12 +54,6 @@ const LLM_EXCLUDE_PATTERNS = [
*/ */
async function main() { async function main() {
// Resolve site URL using the same function as Astro config
const { pathToFileURL } = require('node:url');
const siteUrlModule = path.join(PROJECT_ROOT, 'website/src/lib/site-url.mjs');
const { getSiteUrl } = await import(pathToFileURL(siteUrlModule).href);
SITE_URL = getSiteUrl();
console.log(); console.log();
printBanner('BMAD Documentation Build Pipeline'); printBanner('BMAD Documentation Build Pipeline');
console.log(); console.log();
@ -149,39 +144,40 @@ function buildAstroSite() {
function generateLlmsTxt(outputDir) { function generateLlmsTxt(outputDir) {
console.log(' → Generating llms.txt...'); console.log(' → Generating llms.txt...');
const siteUrl = getSiteUrl();
const content = [ const content = [
'# BMAD Method Documentation', '# BMAD Method Documentation',
'', '',
'> AI-driven agile development with specialized agents and workflows that scale from bug fixes to enterprise platforms.', '> AI-driven agile development with specialized agents and workflows that scale from bug fixes to enterprise platforms.',
'', '',
`Documentation: ${SITE_URL}`, `Documentation: ${siteUrl}`,
`Repository: ${REPO_URL}`, `Repository: ${REPO_URL}`,
`Full docs: ${SITE_URL}/llms-full.txt`, `Full docs: ${siteUrl}/llms-full.txt`,
'', '',
'## Quick Start', '## Quick Start',
'', '',
`- **[Quick Start](${SITE_URL}/docs/modules/bmm/quick-start)** - Get started with BMAD Method`, `- **[Quick Start](${siteUrl}/docs/modules/bmm/quick-start)** - Get started with BMAD Method`,
`- **[Installation](${SITE_URL}/docs/getting-started/installation)** - Installation guide`, `- **[Installation](${siteUrl}/docs/getting-started/installation)** - Installation guide`,
'', '',
'## Core Concepts', '## Core Concepts',
'', '',
`- **[Scale Adaptive System](${SITE_URL}/docs/modules/bmm/scale-adaptive-system)** - Understand BMAD scaling`, `- **[Scale Adaptive System](${siteUrl}/docs/modules/bmm/scale-adaptive-system)** - Understand BMAD scaling`,
`- **[Quick Flow](${SITE_URL}/docs/modules/bmm/bmad-quick-flow)** - Fast development workflow`, `- **[Quick Flow](${siteUrl}/docs/modules/bmm/bmad-quick-flow)** - Fast development workflow`,
`- **[Party Mode](${SITE_URL}/docs/modules/bmm/party-mode)** - Multi-agent collaboration`, `- **[Party Mode](${siteUrl}/docs/modules/bmm/party-mode)** - Multi-agent collaboration`,
'', '',
'## Modules', '## Modules',
'', '',
`- **[BMM - Method](${SITE_URL}/docs/modules/bmm/quick-start)** - Core methodology module`, `- **[BMM - Method](${siteUrl}/docs/modules/bmm/quick-start)** - Core methodology module`,
`- **[BMB - Builder](${SITE_URL}/docs/modules/bmb/)** - Agent and workflow builder`, `- **[BMB - Builder](${siteUrl}/docs/modules/bmb/)** - Agent and workflow builder`,
`- **[BMGD - Game Dev](${SITE_URL}/docs/modules/bmgd/quick-start)** - Game development module`, `- **[BMGD - Game Dev](${siteUrl}/docs/modules/bmgd/quick-start)** - Game development module`,
'', '',
'---', '---',
'', '',
'## Quick Links', '## Quick Links',
'', '',
`- [Full Documentation (llms-full.txt)](${SITE_URL}/llms-full.txt) - Complete docs for AI context`, `- [Full Documentation (llms-full.txt)](${siteUrl}/llms-full.txt) - Complete docs for AI context`,
`- [Source Bundle](${SITE_URL}/downloads/bmad-sources.zip) - Complete source code`, `- [Source Bundle](${siteUrl}/downloads/bmad-sources.zip) - Complete source code`,
`- [Prompts Bundle](${SITE_URL}/downloads/bmad-prompts.zip) - Agent prompts and workflows`, `- [Prompts Bundle](${siteUrl}/downloads/bmad-prompts.zip) - Agent prompts and workflows`,
'', '',
].join('\n'); ].join('\n');

View File

@ -16,7 +16,7 @@ modules:
url: https://github.com/bmad-code-org/bmad-module-creative-intelligence-suite url: https://github.com/bmad-code-org/bmad-module-creative-intelligence-suite
module-definition: src/module.yaml module-definition: src/module.yaml
code: cis code: cis
name: "BMad Creative Innovation Suite" name: "BMad Creative Intelligence Suite"
description: "Creative tools for writing, brainstorming, and more" description: "Creative tools for writing, brainstorming, and more"
defaultSelected: false defaultSelected: false
type: bmad-org type: bmad-org
@ -26,7 +26,7 @@ modules:
url: https://github.com/bmad-code-org/bmad-module-game-dev-studio.git url: https://github.com/bmad-code-org/bmad-module-game-dev-studio.git
module-definition: src/module.yaml module-definition: src/module.yaml
code: gds code: gds
name: "BMad Game Dev Suite" name: "BMad Game Dev Studio"
description: "Game development agents and workflows" description: "Game development agents and workflows"
defaultSelected: false defaultSelected: false
type: bmad-org type: bmad-org

View File

@ -1,12 +1,11 @@
--- ---
import { getSiteUrl } from '../lib/site-url.mjs'; import { getSiteUrl } from '../lib/site-url.mjs';
const SITE_URL = getSiteUrl(); const llmsFullUrl = `${getSiteUrl()}/llms-full.txt`;
const fullDocsUrl = `${SITE_URL}/llms-full.txt`;
--- ---
<div class="ai-banner"> <div class="ai-banner">
<span>🤖 Consolidated, AI-optimized BMAD docs: <a href={fullDocsUrl}>llms-full.txt</a>. Fetch this plain text file for complete context.</span> <span>🤖 Consolidated, AI-optimized BMAD docs: <a href={llmsFullUrl}>llms-full.txt</a>. Fetch this plain text file for complete context.</span>
</div> </div>
<style> <style>