Commit Graph

513 Commits

Author SHA1 Message Date
Brian Madison c563cef0c2 refactor: replace module installer scripts with declarative directories config
Removes the security-risky _module-installer pattern (code execution at
install time) in favor of a declarative `directories` key in module.yaml.
The main installer now handles directory creation centrally based on this
config, eliminating per-module installer.js scripts and their CJS/ESM issues.

Changes:
- Delete src/bmm/_module-installer/installer.js
- Delete src/core/_module-installer/installer.js
- Add `directories` key to src/bmm/module.yaml
- Rename runModuleInstaller() -> createModuleDirectories()
- Remove _module-installer from ESLint overrides
- Remove _module-installer from file-ref validator skip dirs
2026-02-08 19:21:48 -06:00
Davor Racic 90ea3cbed7
Minor installer fixes (#1590)
* fix: remove redundant "None" skip option from module selection

The "None - Skip module installation" option was unnecessary since
core is always locked/selected, satisfying the required constraint.
Users can simply press Enter with only core selected to skip modules.
Also removes dead code: selectModules(), getExternalModuleChoices(),
and selectExternalModules() methods that were never called.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: support ESM and .cjs module installers in ModuleManager

Module installer loading now handles three cases:
- .cjs files loaded via require() (always CommonJS regardless of package type)
- .js files loaded via dynamic import() (works for both CJS and ESM)
- CJS default export unwrapped automatically for consistent API

This fixes errors when external modules set "type":"module" in their
package.json. Those modules must still rename installer.js to
installer.cjs if it uses require() internally.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: address code review findings from PR #1590

- Filter 'core' from CLI --modules in update path for consistency
- Update selectAllModules() JSDoc to reflect core exclusion
- Fix ESM default-export unwrap to handle function/class exports

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: clarify module post-install script errors as non-fatal warnings

Change error display from log.error to log.warn and explain that the
module was installed successfully — only the optional post-install
script could not run. Prevents users from thinking the module
installation itself failed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: suppress non-fatal module post-install script errors

Post-install scripts fail due to CJS/ESM incompatibility but module
files are already copied successfully. Silently catch the error instead
of showing a warning that alarms users into thinking installation failed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: remove redundant modules and tools lines from install summary

The checkmark list already shows each installed module and IDE tool.
Keep only the install path and file-warning lines in the summary footer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-08 15:41:51 -06:00
Alex Verkhovsky a1101534b2
fix(docs): comprehensive documentation site review fixes (#1578)
* fix(docs): comprehensive documentation site review fixes

Rehype plugins:
- Rewrite rehype-markdown-links for correct relative .md resolution
- Handle raw HTML base paths and bare .md links in rehype-base-paths
- Guard protocol-relative URLs (//...) in all link processors
- Use file.path instead of file.history[0] for vfile compatibility
- Fail build when content directory cannot be detected
- Export helpers for testability; add 107 unit tests

Build & CI:
- Revert cancel-in-progress to false to avoid mid-deploy cancellation
- Remove redundant link-validation CI step (build validates internally)
- Remove unnecessary fetch-depth:0 from docs deploy workflow
- Refuse docs build on Windows (platform guard)
- Remove dead build scripts and stale references

Tooling:
- Add DOCS_ROOT boundary check in validate-doc-links.js
- Handle directory paths and prefix stripping in link validator
- Remove dead regex and add // guard in fix-doc-links.js

Accessibility & CSS:
- Darken caution/danger aside title colors for WCAG AA 4.5:1 contrast
- Fix 100vw scrollbar overflow (banner width:100%, html overflow-x:clip)
- Add :focus-visible ring to banner link for keyboard navigation
- Remove dead CSS declaration and add missing code block lang

Documentation content:
- Convert /docs/ absolute links to relative paths and fix llms.txt URLs
- Correct command file paths and naming in commands reference
- Update stale shard-doc command to current /bmad-shard-doc format
- Fix incomplete sentence in install-bmad.md
- Add Quick Flow next steps and fix 404 link path
- Expand thin content pages with substantive detail
- Add sidebar ordering frontmatter to all content pages
- Remove BMGD docs (moved to dedicated repo)
- Remove unused assets and misleading diagram caption
- Add non-iframe fallback link to workflow map diagram
- Remove dead noscript block from workflow-map
- Standardize BMAD to BMad, fix spelling/grammar, normalize headings

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(docs): add non-interactive installation to sidebar, rewrite and reorder how-to guides

- Move non-interactive-installation.md into how-to/ directory so it appears
  in the sidebar navigation (was orphaned at docs root)
- Rewrite the page based on editorial review: consolidate redundant sections,
  add missing how-to structure (prerequisites, "What You Get"), condense
  installation modes from 5 subsections to a table, cut speculative examples
- Reorder how-to sidebar: Install (1), Non-Interactive (2), Upgrade to v6 (3),
  then the rest following user journey order
- Fix README link to point to docs site instead of repo-internal markdown path

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(docs): address documentation review findings

Fix broken directory tree, grammar errors, inconsistent naming,
missing admonition/headings, enable lastUpdated timestamps in CI,
and remove footer CSS that misapplied to the content footer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(docs): move bleeding-edge install command out of Verify Installation

The alternative npx command for installing from main was misplaced
inside the "Verify Installation" section. Move it to a tip admonition
under Step 1 where users look for install options.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 11:58:22 -06:00
Michael Pursifull 24cf444366
feat: extend Layer 1 file-ref validator to scan CSV workflow-file references (#1573)
* feat: extend validate-file-refs.js to scan CSV workflow-file references

Add CSV file reference extraction to the Layer 1 validation pipeline,
preventing broken _bmad/ workflow-file paths in module-help.csv files.
Closes the gap identified after PR #1529 where CSV references were
unvalidated despite being a source of repeat community issues.

Refs: #1519

* fix: include test:refs in aggregate test script

Add CSV file-ref extraction tests to the aggregate `npm test` pipeline,
matching the existing pattern for test:schemas and test:install.

Thanks to CodeRabbit for catching the omission.

* fix: address review feedback on CSV validator extension

- Surface CSV parse errors visibly instead of silently swallowing
  (no Layer 2c schema validator exists yet to catch these)
- Add explanatory comments for the !VERBOSE logging pattern
  (non-verbose prints file headers only when issues found)
- Add verbose-mode diagnostics for extensionless path handling
  ([SKIP] when nothing exists, [OK-DIR] for valid directories)

* refactor: collect-then-print to eliminate confusing !VERBOSE pattern

Replace the split header-printing logic (print early in verbose mode,
print late in non-verbose mode with a !VERBOSE guard) with a simpler
collect-then-print approach. Refs are now classified into ok[] and
broken[] arrays first, then printed in a single location with one
straightforward if/else if decision.

Addresses alexeyv's review feedback about the counterintuitive
"if not verbose, log" pattern.

* feat: promote extensionless unresolved paths from silent skip to [UNRESOLVED]

Paths without file extensions that don't exist as files or directories
are now flagged as [UNRESOLVED] — a distinct tag from [BROKEN] (which
means a file with a known extension wasn't found). Both count toward
the broken reference total and appear in CI annotations.

This catches real bugs like wrong directory names in installed_path
metadata and dead invoke-workflow references to removed workflows.
Extensionless paths that DO exist as directories are still [OK-DIR].

---------

Co-authored-by: Alex Verkhovsky <alexey.verkhovsky@gmail.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-08 09:19:53 -06:00
Alex Verkhovsky fc5ef57a5a
feat: add Kiro IDE support via config-driven installer (#1589)
Replace broken kiro-cli.js custom installer with config-driven approach
using platform-codes.yaml. Creates Kiro-specific templates with
inclusion: manual frontmatter and #[[file:...]] reference syntax.
2026-02-08 09:18:28 -06:00
Davor Racic b1bfce9aa7
refactor: Complete @clack/prompts Migration & Installer Output Consolidation (#1586)
* feat(cli): complete @clack/prompts migration

Full migration of BMAD CLI installer from legacy terminal libraries
(chalk, ora, boxen, figlet, wrap-ansi, cli-table3, readline) to unified
@clack/prompts v1.0.0 visual system.

Foundation (prompts.js + cli-utils.js):
  - Extended prompts.js wrapper with box, spinner, progress, taskLog,
    path, autocomplete, selectKey, stream, color re-export
  - Refactored cli-utils.js: displayLogo uses box(), sections use note(),
    steps use log.step(), removed boxen/figlet/wrap-ansi/cli-table3

UI orchestration (ui.js):
  - Replaced ~100 console.log+chalk calls with log.*, note(), box()
  - Replaced ora spinner with @clack spinner
  - Module selection: autocompleteMultiselect with locked core module,
    bulleted post-selection display, maxItems for no-scroll

Spinner migration (installer.js):
  - Replaced 40+ ora spinner calls with @clack spinner
  - All spinner.stop() calls include meaningful messages
  - Failure paths use spinner.error() (red cross) instead of stop()

Readline migration (agent/installer.js + config-collector.js):
  - Migrated readline prompts to @clack text/confirm/select
  - Fixed chalk.dim bug (chalk was never imported)
  - Removed chalk from config-collector.js

IDE handlers + modules (7 files):
  - Replaced chalk+ora across all IDE handlers and module manager
  - Fixed options.installer undefined bug in manager.js update()

Cleanup:
  - Removed ora, boxen, figlet, wrap-ansi, cli-table3 from dependencies
  - chalk stays (used outside tools/cli/ scope)
  - Replaced hand-drawn Unicode update box in bmad-cli.js with box()
  - Added process.stdin.setMaxListeners(25) for sequential prompts

Spinner wrapper adds isSpinning state tracking (not native to @clack).
Removed dead groupMultiselect and sortKey sort calls.

Ref: tech-spec-installer-clack-migration-ui-enhancement.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(cli): consolidate installer output to single spinner + summary

Replace ~40 lines of output from 15+ spinner start/stop cycles with a
single animated spinner during installation and a final note() summary
block showing checkmarks per step.

Key changes:
- Add results collector pattern in install() method
- Replace spinner.stop/start pairs with addResult + spinner.message
- Add renderInstallSummary() using prompts.note() with colored output
- Propagate silent flag through IDE handlers and module manager
- Add spinner race condition guards (start while spinning, stop while stopped)
- Add no-op spinner pattern for silent external module cloning
- Fix stdin listener limit to be defensive with Math.max
- Add GIT_TERMINAL_PROMPT=0 for non-interactive git operations
- Merge locked values into initialValue for autocomplete prompts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(cli): resolve code review findings from @clack/prompts migration

Address 31 issues across 14 CLI files found during PR #1586 review
(Augment Code + CodeRabbit):

- Fix bmadDir ReferenceError by hoisting declaration before try block
- Wrap console.log monkey-patch in try/finally for safe restoration
- Fix transformWorkflowPath dead code and undefined return path
- Fix broken symlink crash in _config-driven.js and codex.js cleanup
- Pass installer instance through update() for agent recompilation
- Fix @clack/prompts API: defaultValue→default, initialValue→default
- Use nullish coalescing (??) instead of logical OR for falsy values
- Forward options in recursive promptToolSelection calls
- Remove no-op replaceAll('_bmad','_bmad') in manager and generator
- Remove unused confirm prompt in config-collector hasNoConfig branch
- Guard spinner.message() when spinner is not running
- Add missing methods to silent spinner stub (cancel, clear, isSpinning)
- Wrap install.js error handler with inner try/catch + console fallback
- Gate codex per-entry error log with silent flag
- Add return statements to all stream wrapper methods
- Remove dead variables (availableNames, hasCustomContentItems)
- Filter core module from update flow selection
- Replace borderColor ternary chain with object map
- Fix Kilo "agents" label to "modes" in IDE manager
- Normalize error return shape for unsupported IDEs
- Fix spinner message timing before dependency resolution
- Guard undefined moduleDir in dependency-resolver
- Fix workflowsInstalled counter inflation in custom handler
- Migrate console.warn calls to prompts.log.warn
- Replace console.log() with prompts.log.message('')
- Fix legacyBmadPath hardcoded to .bmad instead of entry.name
- Fix focusedValue never assigned breaking SPACE toggle and hints

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 00:40:13 -06:00
Alex Verkhovsky a8cda7c6fa
refactor: remove downloads page and bundle generation (#1577)
The downloads page offered bmad-sources.zip and bmad-prompts.zip, both
redundant: GitHub provides source archives for every tag natively, and
npx bmad-method install is the supported path for compiled prompts.

Remove the downloads page, all bundle generation code, the archiver
dependency, and nav links. The llms.txt and llms-full.txt files (the
genuinely useful artifacts) continue to be generated as before.
2026-02-06 23:26:39 -06:00
Alex Verkhovsky 97bfe0a485
chore: remove broken manual-release workflow and related artifacts (#1576)
The manual-release.yaml workflow has been broken since the v6 alpha
rewrite — it calls `npm run validate` which no longer exists. Releases
are now handled via the /draft-changelog and release skills instead.

- Delete .github/workflows/manual-release.yaml
- Delete tools/docs/BUNDLE_DISTRIBUTION_SETUP.md (references deleted workflow)
- Remove release:major/minor/patch/watch npm scripts (triggered deleted workflow)

Can be restored from git history if a CI-based release workflow is needed again.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 23:21:55 -06:00
Brian Madison 90d9204dc9 fix: update help task path from bmad-help.md to help.md
Update all references to the help task file from the old path
`_bmad/core/tasks/bmad-help.md` to the new path `_bmad/core/tasks/help.md`.

Affected files:
- 7 workflow step files across multiple workflows
- 1 IDE tool command generator (updated comments)
2026-02-06 21:27:14 -06:00
Davor Racic f7b5f03800
refactor: consolidate OpenCode templates and add support for tasks, tools, and workflows (#1556)
- Move opencode/body.md to combined/opencode-agent.md with frontmatter
- Add combined templates for tasks, tools, and workflows (both .md and .yaml)
- Replace hardcoded _bmad path with {{bmadFolderName}} variable
- Remove split/opencode/ templates (header.md, body.md)
- Add .gitkeep to preserve empty split/ directory
2026-02-06 07:28:09 -06:00
Davor Racic 7c0e5d5e1d
fix: make SPACE key toggle selections in autocomplete multiselect prompts (#1557)
- Override _isActionKey to treat SPACE as an action key instead of search input,
and add key handler to toggle selections when not navigating
- update IDE selection prompt message from "Select tools:" to "Integrate with:".
2026-02-06 07:27:51 -06:00
Alex Verkhovsky 8be3713595
docs: add modules reference page and site fixes (#1540)
* docs: add official external modules reference page

* chore: remove obsolete docs and basement files

* fix: update robots.txt URLs to docs.bmad-method.org

* fix: generate robots.txt dynamically from site base URL

Replace static robots.txt with an Astro endpoint that uses the
configured site URL, so sitemap references are correct on both
fork deployments and production.

* fix: unify site URL resolution in build-docs.js

build-docs.js had its own hardcoded fallback URL
(bmad-code-org.github.io) instead of using the shared
getSiteUrl() function, causing URL mismatches between
robots.txt, llms.txt, and sitemaps. Now all components
resolve the site URL through the same function. Renamed
site-url.js to .mjs to avoid Node ESM detection warnings.

* 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/

* 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 06:58:09 -06:00
Vladimir Hrusovsky 22601f8198
feat: add non-interactive installation support (#1520)
* feat: add non-interactive installation support

Add command-line flags to support non-interactive installation for CI/CD
pipelines and automated deployments:

- --directory: Installation directory
- --modules: Comma-separated module IDs
- --tools: Tool/IDE IDs (use "none" to skip)
- --custom-content: Custom module paths
- --action: Action type for existing installations
- --user-name, --communication-language, --document-output-language, --output-folder: Core config
- -y, --yes: Accept all defaults

When flags are provided, prompts are skipped. Missing values gracefully
fall back to interactive prompts.

* fix: complete non-interactive installation support

- Fix validation checks using truthy instead of !== true
- Add skipPrompts flag to skip module config prompts with --yes
- Add getDefaultModules() for automatic module selection with --yes
- Fix IDE selection to use array check instead of length check

Co-Authored-By: AiderDesk <https://github.com/hotovo/aider-desk>

---------

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-05 19:13:11 -06:00
Drickon 068a9dc45a
fix: remove --prefer-offline flag to prevent stale cache errors (#1531)
The --prefer-offline flag causes npm to use cached package metadata,
which can be stale and fail to resolve recently published versions.

Also updates deprecated --production flag to --omit=dev.

Fixes #1438
2026-02-05 19:06:26 -06:00
Davor Racic 311b237d85
fix: trim activation header to avoid YAML formatting issues in kilo installer (#1537)
* fix: trim activation header to avoid YAML formatting issues in kilo installer

* refactor: convert kilo installer to use YAML object serialization and add workflow support

- Replace string concatenation with yaml.parse/stringify for proper YAML handling
- Add workflow command generation and export to .kilocode/workflows/
- Implement clearBmadWorkflows to remove old BMAD workflow files
- Convert createModeEntry to createModeObject returning structured objects
- Update cleanup to use YAML parsing for proper mode filtering
- Update installCustomAgentLauncher to use object-based config

* fix: add task and tool command generation to kilo installer

---------

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-05 19:00:52 -06:00
Adam Biggs 47a70cc92d
fix: route OpenCode agents to correct .opencode/agent/ directory (#1549) 2026-02-05 18:55:41 -06:00
Brian Madison d37ee7f27a add installer warning when newer version is available 2026-02-04 22:36:11 -06:00
Brian Madison bd620e38e5 trivariate workflows added 2026-02-04 21:34:47 -06:00
Brian Madison 731bee26ea additional slash commands added that were missing from trivariate workflows 2026-02-04 20:42:33 -06:00
Brian Madison f699a3683f excorcise the deamons part 1 - remove dead uneeed artifacts and items no longer being supported beyond beta of the BMM or core - but could return later as a module 2026-02-04 15:44:25 -06:00
murat 006a1f707e fix: docs llms order, bmgd draft, tea link 2026-02-04 07:16:51 -06:00
Brian Madison df176d4206 installer remove double tool questioning 2026-02-03 21:36:21 -06:00
Davor Racic 2d9ebcaf2f
feat: Update @clack/prompts to v1.0.0 and Add autocompleteMultiselect prompt (#1514)
* feat: Update @clack/prompts to v1.0.0 and Add autocompleteMultiselect prompt

* fix(cli): flexible tool selection (skip recommended or additional) + fix spacing

* feat(cli): improve tool selection UX with autocomplete and upgrade path

* feat(cli): display selected tools after IDE selection with preferred markers

* fix: formatting

* fix: make selection message more clear

* fix: formatting

* fix: Remove redundant colon

---------

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-03 17:39:05 -06:00
Davor Racic 5b80649d3a
fix(installer): Multiple installer fixes (#1492)
* fix: support CRLF line endings and add task/tool templates for all IDEs

* fix: preserve file extensions in IDE task/tool paths and update BMAD branding

* fix: double extension issue in wrapper filename generation

* fix: correct path handling and variable reference in task/tool command generator

* fix: change default BMAD folder name from 'bmad' to '_bmad' across all IDE components

* refactor: centralize BMAD_FOLDER_NAME constant in path-utils

* fix: Replace the rest of BMAD_FOLDER magic values

* fix: add safety checks for setBmadFolderName method calls in IdeManager

* fix: convert absolute paths to relative in task-tool-command-generator

* fix: support .xml task files in bmad-artifacts task discovery

* fix: skip internal tasks in manifest generation and IDE command discovery

* fix: skip empty artifact_types targets and remove unused vscode_settings target

* fix: skip internal tools in manifest generation and improve Windows path handling in command generator

* fix: use csv-parse library for proper CSV handling in manifest generation

* refactor: extract CSV text cleaning to reusable method in manifest generator

* fix: normalize path separators to forward slashes in agent file copying for cross-platform compatibility

---------

Co-authored-by: Alex Verkhovsky <alexey.verkhovsky@gmail.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-03 17:36:54 -06:00
Michael Pursifull ba890779a2
feat: cross-file reference validator for BMAD source files (#1494)
* feat: add cross-file reference validator for CI

Add tools/validate-file-refs.js that validates cross-file references
in BMAD source files (agents, workflows, tasks, steps). Catches broken
file paths, missing referenced files, wrong extensions, and absolute
path leaks before they reach users.

Addresses broken-file-ref and path-handling bug classes which account
for 25% of all historical bugs (59 closed issues, 129+ comments).

- Scans src/ for YAML, markdown, and XML files
- Validates {project-root}/_bmad/ references against source tree
- Checks relative path references, exec attributes, invoke-task tags
- Detects absolute path leaks (/Users/, /home/, C:\)
- Adds validate:refs npm script and CI step in quality.yaml

* feat: strip JSON example blocks to reduce false-positive broken refs

Add stripJsonExampleBlocks() to the markdown reference extractor so
bare JSON example/template blocks (braces on their own lines) are
removed before pattern matching. This prevents paths inside example
data from being flagged as broken references.

* feat: add line numbers, fix utility/ path mapping, improve verbose output

- Add utility/ to direct path mapping (was incorrectly falling through
  to src/modules/utility/)
- Show line numbers for broken references in markdown files
- Show YAML key path for broken references in YAML files
- Print file headers in verbose mode for all files with refs

* fix: correct verbose [OK]/[BROKEN] overlap and line number drift

Broken refs no longer print [OK] before [BROKEN] in --verbose mode.
Code block stripping now preserves newlines so offsetToLine() reports
accurate line numbers when code blocks precede broken references.

* fix: address review feedback, add CI annotations and step summary

Address alexeyv's review findings on PR #1494:
- Fix exec-attr prefix handling for {_bmad}/ and bare _bmad/ paths
- Fix mapInstalledToSource fallback (remove phantom src/modules/ mapping)
- Switch extractYamlRefs to parseDocument() for YAML line numbers

Add CI integration (stories 2-1, 2-2):
- Emit ::warning annotations for broken refs and abs-path leaks
- Write markdown table to $GITHUB_STEP_SUMMARY
- Guard both behind environment variable checks

Harden CI output:
- escapeAnnotation() encodes %, \r, \n per GitHub Actions spec
- escapeTableCell() escapes pipe chars in step summary table

---------

Co-authored-by: Alex Verkhovsky <alexey.verkhovsky@gmail.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-03 13:13:38 -06:00
Brian Madison 1665ad68df fix agent scan and help csv files 2026-01-31 21:58:55 -06:00
Brian Madison 6af79165d8 fix agent scan 2026-01-31 21:58:55 -06:00
Alex Verkhovsky 53220420a5
fix: add disable-model-invocation to all generated slash commands (#1501)
Prevents Claude from auto-invoking BMad skills without explicit user
request. Adds disable-model-invocation: true frontmatter to all
command templates and inline generators for Claude Code and Codex.

Co-authored-by: Brian <bmadcode@gmail.com>
2026-01-31 17:25:31 -06:00
jheyworth 6198add5bd fix: resolve npm install peer dependency issues
Comprehensive fix for installer failures related to Astro/Starlight peer dependencies:

1. Update @astrojs/starlight from 0.37.0 to 0.37.5 (latest stable)
2. Add .npmrc with legacy-peer-deps to prevent peer dependency warnings
3. Update module installer to use --legacy-peer-deps flag for external modules

This resolves issues where:
- npm shows peer dependency warnings that users interpret as failures
- External module installations fail due to strict peer dependency checking
- Different npm versions handle peer dependencies inconsistently

Technical note: Starlight 0.37.x requires astro@^5.5.0, which is compatible
with astro@5.16.0 (^5.5.0 means >=5.5.0 <6.0.0). The issue was npm's warning
display, not actual incompatibility.

Fixes: Installation errors reported in v6.0.0-Beta.2

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-30 15:37:42 +00:00
Michael Pursifull 903710be1b
fix: HELP_STEP placeholder not replaced in compiled agents, fix hardcoded path, fix single quote in HELP_STEP (#1437)
* fix: correct malformed XML syntax and remove hardcoded path

- Fix missing opening quote in activation-steps.txt: `n={HELP_STEP}"` → `n="{HELP_STEP}"`
- Remove spurious hyphen: `-Let` → `Let`
- Replace hardcoded `/Users/brianmadison/...` path with relative path

Fixes #1435

* fix: add missing HELP_STEP placeholder replacement

The activation-steps.txt template includes a {HELP_STEP} placeholder,
but activation-builder.js never calculated or replaced it. This caused
the literal string "{HELP_STEP}" to appear in compiled agent files.

Added helpStep calculation between menuStep and haltStep, and adjusted
subsequent step numbers accordingly.

Fixes #1441

* Update src/bmm/workflows/2-plan-workflows/create-prd/validation-report-prd-workflow.md

---------

Co-authored-by: Alex Verkhovsky <alexey.verkhovsky@gmail.com>
2026-01-29 05:58:56 -08:00
Brian Madison 4f0285a2e8 fix custom module instalation 2026-01-28 22:55:54 -08:00
Brian Madison dd8c54cc9f no double agent files and .agent.md file extensions. 2026-01-27 23:08:26 -08:00
Davor Racic 181aeac04a
fix(ide): add support for Gemini CLI TOML format (#1431)
* fix(ide): add support for Gemini CLI TOML format

* fix(ide): Added normalization for config.extension, added .yml to the extension array

---------

Co-authored-by: Brian <bmadcode@gmail.com>
2026-01-27 21:56:12 -08:00
Murat K Ozcan f7466c2530
feat: added tea module as an external module (#1430) 2026-01-27 17:29:34 -08:00
Brian Madison 6a282f86b4 allow updates from any beta, warn on alpha and v4 2026-01-26 17:33:02 -06:00
Brian Madison 27c18e0020 installer fix 2026-01-26 16:06:00 -06:00
Brian Madison 43c0e290d2 feat(installer): update install messages for Beta.0 release 2026-01-26 00:15:22 -06:00
Brian Madison cad9be3e89 feat(installer): update install messages for Beta.0 release 2026-01-26 00:09:46 -06:00
Alex Verkhovsky 91f6c41be1
docs: radical reduction of documentation scope for v6 beta (#1406)
* docs: radical reduction of documentation scope for v6 beta

Archive and basement unreviewed content to ship a focused, minimal doc set.

Changes:
- Archive stale how-to workflow guides (will rewrite for v6)
- Archive outdated explanation and reference content
- Move unreviewed content to basement for later review
- Reorganize TEA docs into dedicated /tea/ section
- Add workflow-map visual reference page
- Simplify getting-started tutorial and sidebar navigation
- Add explanation pages: brainstorming, adversarial-review, party-mode,
  quick-flow, advanced-elicitation
- Fix base URL handling for subdirectory deployments (GitHub Pages forks)

The goal is a minimal, accurate doc set for beta rather than
comprehensive but potentially misleading content.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor: restructure BMM and agents documentation by consolidating and flattening index files.

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:00:26 -06:00
Brian Madison e7a34a2b61 installer updates 2026-01-25 03:56:40 -06:00
Brian Madison 85339708e6 normalize commands 2026-01-25 03:56:40 -06:00
Brian Madison b4f230f565 installer standardization 2026-01-25 03:56:40 -06:00
Brian Madison b102694c64 Fix: use String.raw for escaped triple quotes in TOML 2026-01-25 03:56:40 -06:00
Brian Madison 5aef6379b9 Fix github-copilot installer to use UnifiedInstaller for prompts
- Add .github/prompts directory alongside .github/agents
- Use UnifiedInstaller with TemplateType.COPILOT for prompts/workflows/tasks/tools
- Fix typo: bmd-custom- -> bmad- prefix for agents
- Update cleanup to handle both directories
- Format fixes for auggie.js and windsurf.js
2026-01-25 03:56:40 -06:00
Brian Madison 4cb5cc7dbc Fix gemini installer to use UnifiedInstaller with .toml support
- Add fileExtension parameter support to path-utils (toColonPath, toDashPath)
- Add TemplateType.GEMINI to unified-installer for TOML output format
- Update task-tool-command-generator to support TOML format
- Refactor gemini.js to use UnifiedInstaller with:
  - NamingStyle.FLAT_DASH for dash-separated filenames
  - TemplateType.GEMINI for TOML format (description + prompt fields)
  - fileExtension: '.toml' for Gemini CLI

TOML format:
description = "BMAD Agent: Title"
prompt = """
Content here
"""
2026-01-25 03:56:40 -06:00
Brian Madison c5d0fb55ba Fix windsurf installer to use UnifiedInstaller with flat files
- Replace manual artifact collection with UnifiedInstaller class
- Remove nested folder structure (.windsurf/workflows/bmad/[module]/[type]/)
- Now installs flat files to .windsurf/workflows/ (e.g., bmad-bmm-agent-pm.md)
- Use NamingStyle.FLAT_DASH and TemplateType.WINDSURF
- Add customTemplateFn for Windsurf-specific auto_execution_mode frontmatter
- Simplify cleanup() and update installCustomAgentLauncher() for flat structure
2026-01-25 03:56:40 -06:00
Brian Madison c0adbc4e76 Fix cline installer to use UnifiedInstaller
- Replace individual generators with UnifiedInstaller class
- Use NamingStyle.FLAT_DASH and TemplateType.CLINE
- Remove collectClineArtifacts, flattenAndWriteArtifacts, flattenFilename methods
- Reduce code by ~98 lines (36% reduction)
- Keep cleanup(), installCustomAgentLauncher(), detect() as-is
2026-01-25 03:56:40 -06:00
Brian Madison f6dab0d0ff Fix crush installer to use UnifiedInstaller
- Replace individual generators with UnifiedInstaller class
- Use NamingStyle.FLAT_COLON and TemplateType.CODEX
- Remove manual counting logic, use counts from UnifiedInstaller
- Keep cleanup() and installCustomAgentLauncher() as-is
2026-01-25 03:56:40 -06:00
Brian Madison cf6cf779bb Fix auggie installer to use UnifiedInstaller with flat files
- Replace individual generators with UnifiedInstaller class
- Remove nested folder structure (.augment/commands/bmad/agents/, etc.)
- Now installs flat files to .augment/commands/ (e.g., bmad_bmm_agent_pm.md)
- Use NamingStyle.FLAT_COLON and TemplateType.AUGMENT
- Remove createTaskCommand, createToolCommand, createWorkflowCommand methods
- Simplify cleanup() and update installCustomAgentLauncher() for flat structure
2026-01-25 03:56:40 -06:00
Brian Madison 7074395bdd claude cline codex installers use central function 2026-01-25 03:56:40 -06:00