Conversation
…dation New skill (bmad-module-builder) with three capabilities: - Ideate Module (IM): facilitative brainstorming for module planning - Create Module (CM): scaffold setup skill into existing skills folder - Validate Module (VM): structural and quality validation of module setup Includes scaffold script with tests, setup-skill-template assets, resumable plan document template, and embedded brainstorming techniques. Documentation updates: - New explanation doc: what-are-modules.md (architecture, memory patterns) - New tutorial: build-your-first-module.md (full Diataxis tutorial) - Updated builder-commands.md with Module Builder reference - Updated module-configuration.md (replaced Upcoming Tooling section) - Updated help CSVs with IM, CM, VM entries
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 10 minutes and 5 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (85)
WalkthroughIntroduces a BMad Module Builder: three capabilities (Ideate Module, Create Module, Validate Module) plus templates, CLI scripts, scaffolding/merge/cleanup/validate tooling, tests, and comprehensive docs/tutorials to plan, scaffold, and verify installable modules. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant CM as Create Module (CM)
participant Ideate as Ideate Module (IM)
participant SkillScanner as Skill Discovery
participant Scaffold as scaffold-setup-skill.py
participant Merge as merge-config.py / merge-help-csv.py
participant FS as File System
User->>Ideate: Run Ideate Module (IM) / capture plan
Ideate-->>User: Write plan to reports (module-plan-template)
User->>CM: Invoke Create Module with skills folder (or plan)
CM->>SkillScanner: Scan skills folder (read `SKILL.md`)
SkillScanner->>FS: Read skill metadata & capabilities
SkillScanner-->>CM: Return extracted capability list
CM->>User: Prompt for module identity, CSV ordering, variables (or infer in headless)
User-->>CM: Provide/confirm module.yaml and module-help.csv
CM->>FS: Write temporary `module.yaml` and `module-help.csv`
CM->>Scaffold: Invoke scaffold-setup-skill.py with metadata
Scaffold->>FS: Copy template, substitute placeholders, write assets
Scaffold-->>User: Return created setup-skill directory
User->>Scaffold: Activate setup skill (or run scripts manually)
Scaffold->>Merge: Invoke merge-config.py & merge-help-csv.py
Merge->>FS: Read existing `_bmad/` configs and CSVs, apply anti-zombie merge, migrate legacy, delete legacy artifacts
Merge-->>User: Print JSON summary of writes/cleanup
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
🤖 Augment PR SummarySummary: Adds a new Changes:
Technical Notes: The scaffolder uses an anti-zombie approach (replaces existing setup skill), and the validation script emits a JSON report covering structure, CSV integrity, and reference consistency. 🤖 Was this summary useful? React with 👍 or 👎 |
| if target.exists(): | ||
| if args.verbose: | ||
| print(f"Removing existing {setup_skill_name}/", file=sys.stderr) | ||
| shutil.rmtree(target) |
There was a problem hiding this comment.
--module-code is interpolated into setup_skill_name/target, and then shutil.rmtree(target) runs if that path exists; a module code containing path separators or .. could escape the intended --target-dir and delete unintended directories. Consider validating module-code against the documented 2–4 letter abbreviation before using it to construct a deletable path.
Severity: high
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| module_code = args.module_code | ||
|
|
||
| # Build the list of directories to remove | ||
| dirs_to_remove = [module_code, "core"] + args.also_remove |
There was a problem hiding this comment.
dirs_to_remove is built directly from --module-code and --also-remove and then deleted via shutil.rmtree, so unexpected values like ../path separators can potentially escape the _bmad/ directory and remove unrelated paths. Consider validating directory names (or otherwise ensuring resolved targets stay within --bmad-dir) before deletion.
Severity: high
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| # 5. Check column count consistency | ||
| expected_cols = len(CSV_HEADER) | ||
| for i, row in enumerate(rows): | ||
| if len(row) != expected_cols: |
There was a problem hiding this comment.
Because rows come from csv.DictReader, len(row) is tied to the header and won’t detect short/malformed CSV lines (missing trailing columns), which can let invalid rows through. In those cases row.get('skill') can become None, and later (module_dir / skill / "SKILL.md") will raise a TypeError during the orphan-skill checks.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
Module builder was merged via #48 but marketplace.json was not updated with the new skill entry, description, or keywords.
Module builder was merged via #48 but marketplace.json was not updated with the new skill entry, description, or keywords.
Module builder was merged via #48 but marketplace.json was not updated with the new skill entry, description, or keywords.
Summary
bmad-module-builderskill with three capabilities: Ideate Module (IM) for facilitative brainstorming and planning, Create Module (CM) for scaffolding a setup skill into an existing skills folder, and Validate Module (VM) for structural and quality validationDocumentation:
what-are-modules.mdexplanation doc (architecture, memory patterns, standalone vs expansion)build-your-first-module.mdtutorial (full Diataxis structure)builder-commands.mdwith Module Builder reference sectionmodule-configuration.md— replaced "Upcoming Tooling" with actual module builder docsTest plan
python3 skills/bmad-module-builder/scripts/tests/test-scaffold-setup-skill.pypython3 skills/bmad-module-builder/scripts/tests/test-validate-module.py🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Documentation
Chores