Skip to content

fix(installer): Multiple installer fixes#1492

Merged
bmadcode merged 20 commits intobmad-code-org:mainfrom
dracic:fix/gemini
Feb 3, 2026
Merged

fix(installer): Multiple installer fixes#1492
bmadcode merged 20 commits intobmad-code-org:mainfrom
dracic:fix/gemini

Conversation

@dracic
Copy link
Copy Markdown
Contributor

@dracic dracic commented Jan 31, 2026

Summary

This PR fixes bugs affecting task/tool installation across IDEs:

  1. CRLF Line Ending Bug - Frontmatter parsing failed on Windows due to CRLF (\r\n) line endings
  2. Gemini CLI TOML Support - Tasks/tools were generated as .md files instead of .toml for Gemini CLI
  3. File Extension Preservation - .xml task/tool files had incorrect paths (hardcoded .md)
  4. Codex Task Generation Broken - Missing artifact properties and path handling bugs broke task installation
  5. BMAD_FOLDER_NAME Centralization - Refactored hardcoded '_bmad' strings to use centralized constant
  6. XML Task Discovery - Task discovery only looked for .md files, missing .xml task files
  7. Internal Tasks Exposed - Engine-internal tasks like workflow.xml were incorrectly exposed to users
  8. GitHub Copilot Empty .vscode Directory - Installation created empty .vscode/ directory due to useless config entry
  9. Internal Tools Not Filtered - Tools with internal="true" were not being skipped like tasks were
  10. Windows Path Regex Bug - Path regex failed on Windows absolute paths like C:/_bmad/...
  11. Fragile CSV Parsing - Manifest CSV parsing used split('","') which breaks on fields containing commas or quotes
  12. Agent ID Path Separator Bug - Agent IDs used Windows backslashes on Windows, causing cross-platform inconsistency

Problem

Issue 1: Tasks not installed on Windows

The manifest generator's regex ^---\n expected LF-only line endings, but Windows files have CRLF. This caused:

  • YAML frontmatter parsing to silently fail
  • All .md tasks defaulting to standalone: false
  • Tasks like bmad-help not being installed despite having standalone: true in their frontmatter

Issue 2: Gemini CLI incompatibility

The TaskToolCommandGenerator hardcoded markdown format for all IDEs, but Gemini CLI requires TOML format. Agents and workflows already used the template system correctly, but tasks/tools did not.

Issue 3: Incorrect file extensions in paths

The relativePath property was hardcoded to .md, so tasks/tools with .xml extension got incorrect paths like {project-root}/_bmad/core/tasks/index-docs.md instead of {project-root}/_bmad/core/tasks/index-docs.xml.

Issue 4: Codex task generation broken

The codex.js installer failed to generate task commands due to multiple bugs:

  • Task artifacts were missing required properties (name, displayName, path)
  • TaskToolCommandGenerator was instantiated without bmadFolderName parameter
  • Path handling had no fallback for missing/undefined paths
  • Absolute paths (Windows/Unix) weren't properly converted to relative paths
  • Typo in agent/installer.js: context_bmadFolder instead of context.bmadFolder

Issue 5: Scattered BMAD_FOLDER_NAME constant

The '_bmad' folder name was hardcoded in multiple files (installer.js, _base-ide.js, ide/manager.js, modules/manager.js, and command generators). This made it error-prone to change and inconsistent.

Issue 6: XML task files not discovered

The bmad-artifacts.js task discovery function only looked for .md files, ignoring .xml task files entirely. This caused XML-based tasks to be missing from IDE command generation.

Issue 7: Internal engine tasks exposed to users

Internal engine tasks like workflow.xml (used by the workflow execution engine) were incorrectly exposed to users as installable tasks. These internal tasks should be hidden since they are not meant to be invoked directly by users.

Issue 8: GitHub Copilot creates empty .vscode directory

The GitHub Copilot platform config in platform-codes.yaml had a useless .vscode target with:

  • artifact_types: [] (empty array - no artifacts to install)
  • template_type: vscode_settings (non-existent template)

The _config-driven.js installer called ensureDir() before checking if any artifacts would be written, resulting in an empty .vscode/ directory being created during installation.

Issue 9: Internal tools not filtered

The manifest-generator.js correctly skipped tasks with internal="true" in getTasksFromDir(), but getToolsFromDir() had no such check. This meant internal tools (if any exist) would be incorrectly included in the tool manifest.

Issue 10: Windows path regex fails on absolute paths

The task-tool-command-generator.js used a regex /_bmad/ to extract relative paths from absolute paths. This pattern requires a leading / before _bmad, which works for Unix paths (/home/user/project/_bmad/...) but fails for Windows absolute paths (C:/_bmad/...) where there's no leading separator before the folder name.

Issue 11: Fragile CSV parsing breaks on special characters

The manifest-generator.js functions writeAgentManifest(), writeTaskManifest(), and writeToolManifest() used line.split('","') to parse existing CSV entries. This naive approach breaks when CSV fields contain:

  • Commas within quoted fields (e.g., description: "A tool for X, Y, and Z")
  • Escaped quotes within fields (e.g., "Contains ""quoted"" text")

Example:

"editorial-review-structure","Editorial Review - Structure","Structural editor that proposes cuts, reorganization,
    and simplification while preserving comprehension","core","_bmad/core/tasks/editorial-review-structure.xml","true"

This caused data corruption when re-running the installer, as entries with special characters would be incorrectly parsed and the wrong module/name would be extracted for the Map key.

Issue 12: Agent ID uses platform-specific path separators

The compileModuleAgents() function in modules/manager.js and compileAndCopyAgents() in custom/handler.js used path.relative() to generate the agent ID. On Windows, this produces backslashes (e.g., tech-writer\tech-writer.agent.yaml) while on Linux/macOS it produces forward slashes. This caused:

  • Cross-platform inconsistency in compiled agent files
  • The same codebase producing different agent IDs depending on which OS ran the installer

Design Note: Intentional Hardcoded '_bmad' Strings

The following replaceAll('_bmad', ...) patterns are intentionally hardcoded and should NOT use the constant:

File Purpose
_base-ide.js Replaces literal _bmad in template content
_config-driven.js Replaces literal _bmad in rendered content
agent-command-generator.js Replaces literal _bmad in templates
workflow-command-generator.js Replaces literal _bmad in templates
modules/manager.js Replaces literal _bmad in YAML content

Reason: These search for the literal string _bmad that exists in source template files, then replace it with the configured folder name (this.bmadFolderName). If we used the constant here, and someone configured a different folder name, the search pattern would fail to match the templates.

Changes

Codex Fix (f334f66)

  • codex.js - Added missing name, displayName, path properties to task artifacts; pass bmadFolderName to TaskToolCommandGenerator
  • task-tool-command-generator.js - Added robust path handling with fallback for missing paths, absolute-to-relative conversion
  • agent/installer.js - Fixed typo context_bmadFoldercontext.bmadFolder

BMAD_FOLDER_NAME Centralization

  • path-utils.js - Added centralized BMAD_FOLDER_NAME constant
  • installer.js - Now imports BMAD_FOLDER_NAME from path-utils
  • _base-ide.js - Now imports BMAD_FOLDER_NAME from path-utils
  • ide/manager.js - Now imports BMAD_FOLDER_NAME from path-utils
  • modules/manager.js - Now imports BMAD_FOLDER_NAME from path-utils
  • agent-command-generator.js - Uses BMAD_FOLDER_NAME for default parameter
  • task-tool-command-generator.js - Uses BMAD_FOLDER_NAME for default parameter and prefix matching
  • workflow-command-generator.js - Uses BMAD_FOLDER_NAME for default parameter

XML Task Discovery (ba00d43)

  • bmad-artifacts.js - Extended getTasksFromDir() to include both .md and .xml task files; fixed extension removal for correct task names

Internal Task Filtering (12d4e1f)

  • workflow.xml - Added internal="true" attribute to mark as engine-internal
  • manifest-generator.js - Skip files containing internal="true" during manifest generation
  • _base-ide.js - Skip internal files during IDE command discovery
  • bmad-artifacts.js - Skip internal files during task discovery

GitHub Copilot Empty Directory Fix

  • platform-codes.yaml - Removed useless .vscode target entry with empty artifact_types array
  • _config-driven.js - Added defensive guard to skip targets with explicitly empty artifact_types before calling ensureDir()

Internal Tools Filtering

  • manifest-generator.js - Added internal="true" check to getToolsFromDir() to match existing task behavior

Windows Path Regex Fix

  • task-tool-command-generator.js - Changed regex from /\/_bmad\// to /[/\\]_bmad[/\\]/ to handle both Unix and Windows path separators

Fragile CSV Parsing Fix

  • manifest-generator.js - Added csv-parse/sync import (already a project dependency)
  • manifest-generator.js - Replaced line.split('","') with csv.parse(content, { columns: true, skip_empty_lines: true }) in writeAgentManifest(), writeTaskManifest(), and writeToolManifest()
  • manifest-generator.js - Added escapeCsv helper function to properly escape quotes (""") per RFC 4180
  • manifest-generator.js - Changed from storing raw CSV lines in Map to storing parsed record objects for cleaner merging

Agent ID Path Separator Fix

  • modules/manager.js - Changed path.relative(sourceAgentsPath, agentFile) to normalize separators: .split(path.sep).join('/')
  • custom/handler.js - Same fix applied to compileAndCopyAgents() function

Test Plan

  • Windows install (CMD) - tasks installed with correct frontmatter parsing
  • WSL/Linux install - tasks installed correctly
  • Gemini CLI generates .toml files for tasks/tools
  • Claude Code generates .md files for tasks/tools
  • Codex generates task commands with correct paths
  • All other IDEs (Cursor, Windsurf, Trae, etc.) generate .md files
  • bmad-help task now correctly has standalone: true in manifest
  • Existing agent/workflow installation unaffected
  • .xml tasks/tools get correct extension in relativePath
  • IdeManager gracefully handles missing setBmadFolderName method (no crashes when method undefined)
  • Manifests with absolute paths (Windows C:\... or Unix /...) produce correct relative paths in artifacts
  • .xml task files are discovered and included in IDE commands
  • Internal tasks (e.g., workflow.xml) are NOT exposed in manifests or IDE commands
  • Tasks with internal="true" attribute are filtered out at all discovery points
  • GitHub Copilot installation creates .github/agents/ with agent files
  • GitHub Copilot installation does NOT create empty .vscode/ directory
  • Other platforms (Claude Code, Windsurf, Gemini) still work correctly
  • Tools with internal="true" attribute are filtered out (same as tasks)
  • Windows absolute paths (e.g., C:/_bmad/core/tasks/...) correctly resolve to relative paths
  • CSV manifests with commas in description fields are parsed correctly on reinstall
  • CSV manifests with quotes in description fields are parsed correctly on reinstall
  • Round-trip install preserves entries with special characters (commas, quotes)
  • Agent IDs use forward slashes on Windows (e.g., tech-writer/tech-writer.agent.yaml)
  • Compiled agent files are byte-for-byte identical between Windows and Linux installations

Breaking Changes

None - this is purely a bug fix. Existing installations will work correctly after reinstall.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jan 31, 2026

📝 Walkthrough

Walkthrough

Updates YAML frontmatter regexes to accept LF or CRLF line endings; centralizes BMAD folder name into shared path-utils and propagates it across IDE components; adds artifact collection and template-based rendering/writing for tasks/tools; introduces new Markdown and TOML templates; fixes a path variable bug in an agent installer.

Changes

Cohort / File(s) Summary
Frontmatter parsing
tools/cli/installers/lib/core/dependency-resolver.js, tools/cli/installers/lib/core/manifest-generator.js
Frontmatter regex changed from /^---\n([\s\S]*?)\n---/ to /^---\r?\n([\s\S]*?)\r?\n---/ to handle CRLF and LF line endings.
BMAD folder centralization
tools/cli/installers/lib/ide/shared/path-utils.js, tools/cli/installers/lib/core/installer.js, tools/cli/installers/lib/ide/_base-ide.js, tools/cli/installers/lib/ide/manager.js, tools/cli/installers/lib/modules/manager.js, tools/cli/installers/lib/ide/shared/agent-command-generator.js, tools/cli/installers/lib/ide/shared/workflow-command-generator.js
Introduces exported BMAD_FOLDER_NAME and replaces many hard-coded 'bmad'/'_bmad' defaults with the shared constant; propagates the bmadFolderName through managers and handlers.
Task/Tool artifact collection & generator changes
tools/cli/installers/lib/ide/shared/task-tool-command-generator.js, tools/cli/installers/lib/ide/shared/agent-command-generator.js, tools/cli/installers/lib/ide/shared/workflow-command-generator.js
Adds TaskToolCommandGenerator constructor accepting bmadFolderName; new collectTaskToolArtifacts(bmadDir) builds normalized artifact objects with metadata and path normalization; updates path handling and naming conventions for generated commands.
Config-driven artifact rendering & writing
tools/cli/installers/lib/ide/_config-driven.js
Adds writeTaskToolArtifacts(targetPath, artifacts, templateType, config = {}), changes flow to collect artifacts then render/write using templates, expands renderTemplate logic for artifact types and normalizes filenames/extensions.
Templates added
tools/cli/installers/lib/ide/templates/combined/default-task.md, tools/cli/installers/lib/ide/templates/combined/default-tool.md, tools/cli/installers/lib/ide/templates/combined/gemini-task.toml, tools/cli/installers/lib/ide/templates/combined/gemini-tool.toml
New Markdown and TOML templates for tasks/tools (placeholders: name, description, path, bmadFolderName) used by the new rendering flow.
IDE integration updates
tools/cli/installers/lib/ide/codex.js, tools/cli/installers/lib/ide/manager.js
Passes bmadFolderName to generators and adds metadata fields (name, displayName, path) to task artifacts; propagates BMAD folder name to dynamic handlers via setBmadFolderName.
Agent installer path fix
tools/cli/lib/agent/installer.js
Fixes a string replacement bug: uses context.bmadFolder instead of undefined context_bmadFolder when resolving {bmad-folder} placeholder.

Sequence Diagram

sequenceDiagram
    participant ConfigDriven as ConfigDrivenIdeSetup
    participant TaskToolGen as TaskToolCommandGenerator
    participant Templates as TemplateEngine
    participant FileSystem as FileSystem

    ConfigDriven->>TaskToolGen: new(bmadFolderName)
    ConfigDriven->>TaskToolGen: collectTaskToolArtifacts(bmadDir)
    TaskToolGen->>FileSystem: read task/tool manifests
    TaskToolGen-->>ConfigDriven: return artifacts + counts

    ConfigDriven->>Templates: preload templates (task/tool)
    Templates-->>ConfigDriven: template content

    loop per artifact
        ConfigDriven->>Templates: renderTemplate(artifact, templateType)
        Templates-->>ConfigDriven: rendered content
        ConfigDriven->>FileSystem: write file to targetPath
    end

    ConfigDriven-->>ConfigDriven: return { tasks, tools } counts
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • bmadcode
🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'fix(installer): Multiple installer fixes' is vague and generic, using non-specific language that doesn't convey meaningful information about what bugs are actually being fixed. Consider a more specific title that highlights the main fix, such as 'fix(installer): Support CRLF line endings and Gemini TOML format for tasks/tools' or similar.
✅ Passed checks (2 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Description check ✅ Passed The pull request description comprehensively details multiple installer bugs being fixed, their root causes, and specific changes made across multiple files.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@tools/cli/installers/lib/ide/_config-driven.js`:
- Around line 213-218: The wrapper filename generation creates double extensions
when source paths with non-.md extensions (e.g., .xml from
scanDirectoryWithStandalone) are passed through toDashPath(), because
toDashPath() currently only strips .md and generateFilename() only cleans
.yaml.md/.yml.md; update toDashPath() to strip a broader set of common
extensions (at least .md, .yaml, .yml, .json, .xml, .toml) so it returns a clean
base name, or alternatively extend the cleanup regex in generateFilename() to
remove any trailing .(md|yaml|yml|json|xml|toml)\.(md|yaml|yml|json|xml|toml)
patterns; locate and modify the toDashPath() function and/or generateFilename()
to apply this broader extension-stripping logic so filenames like
bmad-core-create-story.xml.md become bmad-core-create-story.md (and ultimately
bmad-core-create-story.toml when template extension is .toml).

Comment thread tools/cli/installers/lib/ide/_config-driven.js
@dracic dracic changed the title fix(installer): CRLF Line Ending on Windows & task/tool installation fix(installer): Multiple installer fixes Feb 1, 2026
@dracic dracic marked this pull request as draft February 1, 2026 11:13
@dracic
Copy link
Copy Markdown
Contributor Author

dracic commented Feb 1, 2026

@CodeRabbit review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 1, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
tools/cli/installers/lib/modules/manager.js (1)

74-78: ⚠️ Potential issue | 🟡 Minor

Guard setBmadFolderName for non-BaseIde handlers.
If a dynamically loaded handler doesn’t implement setBmadFolderName, this will throw and prevent handler registration. Consider checking typeof instance.setBmadFolderName === 'function' before calling it (Line 77).

tools/cli/installers/lib/ide/_base-ide.js (1)

56-63: ⚠️ Potential issue | 🟠 Major

Cleanup should use the instance’s folder name.
Line 61 uses BMAD_FOLDER_NAME directly, which ignores any override set via setBmadFolderName. This can leave custom-named BMAD config behind. Use this.bmadFolderName instead.

🤖 Fix all issues with AI agents
In `@tools/cli/installers/lib/ide/manager.js`:
- Around line 74-78: The code assumes every HandlerClass instance implements
setBmadFolderName which can throw if missing; update the instantiation flow in
manager.js to check typeof instance.setBmadFolderName === 'function' before
calling it (i.e., only call setBmadFolderName when available) while still
populating this.handlers with instance.name; reference HandlerClass, instance,
setBmadFolderName and this.handlers.set to locate and update the guard.

In `@tools/cli/installers/lib/ide/shared/task-tool-command-generator.js`:
- Around line 27-76: collectTaskToolArtifacts currently only strips a leading
_bmad/ but doesn't convert absolute manifest paths to relative ones, letting
absolutes leak into templates; update the task and tool normalization in
collectTaskToolArtifacts to first replace backslashes, then if
path.isAbsolute(taskPath) / path.isAbsolute(toolPath) convert to a relative path
using path.relative(bmadDir, taskPath/toolPath) (and replace backslashes again),
and only then remove the bmadPrefix so artifact.path contains the normalized
relative path; apply the exact same logic to the toolPath handling in the tools
loop and keep using bmadPrefix, task.module/tool.module and relativePath
construction unchanged.

Comment thread tools/cli/installers/lib/ide/manager.js
Comment thread tools/cli/installers/lib/ide/shared/task-tool-command-generator.js
@dracic dracic marked this pull request as ready for review February 1, 2026 12:42
@dracic
Copy link
Copy Markdown
Contributor Author

dracic commented Feb 1, 2026

This need some checking and testing...

@dracic
Copy link
Copy Markdown
Contributor Author

dracic commented Feb 2, 2026

BMAD Installation QA Report

Executive Summary

Classification SUCCESS
Version 2fc1abe
Install Date 2026-02-02
Target Module BMM
Platforms Tested Windows, Linux

All IDE counts match expected values, no unexpanded variables detected, correct path formats verified, and cross-platform parity confirmed.


1. Manifest Verification

Manifest Expected Actual Status
workflow-manifest.csv 25 25 (2 core + 23 bmm) PASS
agent-manifest.csv 10 10 PASS
task-manifest.csv 6 6 PASS
manifest.yaml modules 2 2 (core, bmm) PASS
manifest.yaml IDEs 18 18 PASS

Modules Installed

  • core: v6.0.0-Beta.4 (built-in)
  • bmm: v6.0.0-Beta.4 (built-in)

2. IDE Command Breakdown

Standard IDEs (Expected: 41 = 10 agents + 25 workflows + 6 tasks)

IDE Directory Format Count Status
Claude Code .claude/commands/ MD + YAML frontmatter 41 PASS
Cursor .cursor/commands/ MD + YAML frontmatter 41 PASS
Windsurf .windsurf/workflows/ Markdown 41 PASS
Codex .codex/prompts/ Markdown 41 PASS
Gemini .gemini/commands/ TOML 41 PASS
Cline .clinerules/workflows/ Markdown 41 PASS
Antigravity .agent/workflows/ Markdown 41 PASS
Augment .augment/commands/ Markdown 41 PASS
Crush .crush/commands/ Markdown 41 PASS
iFlow .iflow/commands/ Markdown 41 PASS
Opencode .opencode/command/ Markdown 41 PASS
Qwen .qwen/commands/ Markdown 41 PASS
Roo .roo/commands/ Markdown 41 PASS
Rovo Dev .rovodev/workflows/ Markdown 41 PASS
Trae .trae/rules/ Markdown 41 PASS

Special IDEs

IDE Directory Format Expected Actual Status
GitHub Copilot .github/agents/ Markdown 10 (agents only) 10 PASS
Kiro .kiro/agents/ JSON + MD 2 2 PASS
Kilo .kilocodemodes YAML 10 modes 10 PASS

3. Variable Audit

Install-Time Variables ({{...}}) - Should NOT appear in IDE files

Directory Unexpanded {{ found Status
.claude/commands/ 0 PASS
.gemini/commands/ 0 PASS

Runtime Variables ({...}) - Should be preserved

Variable Present Status
{project-root} Yes PASS
{user_name} Yes PASS

Config File Values (win)

# core/config.yaml
user_name: myself
communication_language: English
document_output_language: English
output_folder: "{project-root}/_bmad-output"

# bmm/config.yaml
project_name: win
user_skill_level: intermediate
planning_artifacts: "{project-root}/_bmad-output/planning-artifacts"
implementation_artifacts: "{project-root}/_bmad-output/implementation-artifacts"
project_knowledge: "{project-root}/docs"

4. Path Format Audit

Check Pattern Matches Found Status
Backslashes in paths \\ 0 PASS
Absolute Windows paths [A-Z]:\ 0 PASS
Leaked source paths BMAD-METHOD 0 PASS
Correct {project-root}/ usage {project-root}/ Present PASS

Sample verified paths:

{project-root}/_bmad/core/agents/bmad-master.md
{project-root}/_bmad/bmm/agents/analyst.md
{project-root}/_bmad/core/config.yaml

5. Cross-Platform Comparison

Metric Windows Linux Status
Claude commands 41 41 MATCH
Gemini commands 41 41 MATCH
Codex prompts 41 41 MATCH
Config user_name myself myself MATCH
Config output_folder {project-root}/_bmad-output {project-root}/_bmad-output MATCH

6. Format Validation Samples

Gemini TOML (.gemini/commands/bmad-agent-bmad-master.toml)

description = "Activates the bmad-master agent from the BMad Method."
prompt = """
CRITICAL: You are now the BMad 'bmad-master' agent.

PRE-FLIGHT CHECKLIST:
1.  [ ] IMMEDIATE ACTION: Load and parse {project-root}/_bmad/core/config.yaml...
...
"""

Status: Valid TOML structure

Claude Markdown (.claude/commands/bmad-agent-bmad-master.md)

---
name: 'bmad-master'
description: 'bmad-master agent'
disable-model-invocation: true
---

<agent-activation CRITICAL="TRUE">
1. LOAD the FULL agent file from {project-root}/_bmad/core/agents/bmad-master.md
...
</agent-activation>

Status: Valid YAML frontmatter + Markdown

Kilo YAML (.kilocodemodes)

customModes:
 - slug: bmad-core-bmad-master
   name: 'Bmad Master'
   roleDefinition: You are a Bmad Master...
   whenToUse: Use for Bmad Master tasks
   customInstructions: |
    You must fully embody this agent's persona...
   groups:
    - read
    - edit
    - browser
    - command
    - mcp
 - slug: bmad-bmm-analyst
   ...

Status: Valid YAML with 10 customModes


7. Agents Verified (10)

Slug Display Name Module File Verified
bmad-master BMad Master core PASS
analyst Mary bmm PASS
architect Winston bmm PASS
dev Amelia bmm PASS
pm John bmm PASS
quick-flow-solo-dev Barry bmm PASS
quinn Quinn bmm PASS
sm Bob bmm PASS
tech-writer Paige bmm PASS
ux-designer Sally bmm PASS

8. Workflows Verified (25)

Core (2)

  • brainstorming
  • party-mode

BMM (23)

  • Phase 1 - Analysis: create-product-brief, research
  • Phase 2 - Plan: create-prd, create-ux-design
  • Phase 3 - Solutioning: check-implementation-readiness, create-architecture, create-epics-and-stories
  • Phase 4 - Implementation: code-review, correct-course, create-story, dev-story, retrospective, sprint-planning, sprint-status
  • Quick Flow: quick-dev, quick-spec
  • Documentation: document-project, generate-project-context
  • Diagrams: create-excalidraw-diagram, create-excalidraw-dataflow, create-excalidraw-flowchart, create-excalidraw-wireframe
  • QA: qa-automate

9. Standalone Tasks Verified (6)

Task Display Name Status
editorial-review-prose Editorial Review - Prose PASS
editorial-review-structure Editorial Review - Structure PASS
help help PASS
index-docs Index Docs PASS
review-adversarial-general Adversarial Review (General) PASS
shard-doc Shard Document PASS

Final Classification

SUCCESS (Hopefully, would be nice if someone does similar check)

All verification checks passed:

  • All 18 IDEs have correct file counts
  • No unexpanded {{}} install-time variables in IDE files
  • Runtime variables {...} correctly preserved
  • All paths use forward slashes
  • No absolute or leaked paths detected
  • Windows and Linux installations are identical
  • All format validations passed
  • Codex has 41 files (.xml task bug is fixed)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants