feat: add reminders page, BMad skills upgrade, MCP server refactor
- Add reminders page with navigation support - Upgrade BMad builder module to skills-based architecture - Refactor MCP server: extract tools and auth into separate modules - Add connections cache, custom AI provider support - Update prisma schema and generated client - Various UI/UX improvements and i18n updates - Add service worker for PWA support Made-with: Cursor
This commit is contained in:
100
_bmad/core/bmad-init/SKILL.md
Normal file
100
_bmad/core/bmad-init/SKILL.md
Normal file
@@ -0,0 +1,100 @@
|
||||
---
|
||||
name: bmad-init
|
||||
description: "Initialize BMad project configuration and load config variables. Use when any skill needs module-specific configuration values, or when setting up a new BMad project."
|
||||
argument-hint: "[--module=module_code] [--vars=var1:default1,var2] [--skill-path=/path/to/calling/skill]"
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This skill is the configuration entry point for all BMad skills. It has two modes:
|
||||
|
||||
- **Fast path**: Config exists for the requested module — returns vars as JSON. Done.
|
||||
- **Init path**: Config is missing — walks the user through configuration, writes config files, then returns vars.
|
||||
|
||||
Every BMad skill should call this on activation to get its config vars. The caller never needs to know whether init happened — they just get their config back.
|
||||
|
||||
The script `bmad_init.py` is located in this skill's `scripts/` directory. Locate and run it using python for all commands below.
|
||||
|
||||
## On Activation — Fast Path
|
||||
|
||||
Run the `bmad_init.py` script with the `load` subcommand. Pass `--project-root` set to the project root directory.
|
||||
|
||||
- If a module code was provided by the calling skill, include `--module {module_code}`
|
||||
- To load all vars, include `--all`
|
||||
- To request specific variables with defaults, use `--vars var1:default1,var2`
|
||||
- If no module was specified, omit `--module` to get core vars only
|
||||
|
||||
**If the script returns JSON vars** — store them as `{var-name}` and return to the calling skill. Done.
|
||||
|
||||
**If the script returns an error or `init_required`** — proceed to the Init Path below.
|
||||
|
||||
## Init Path — First-Time Setup
|
||||
|
||||
When the fast path fails (config missing for a module), run this init flow.
|
||||
|
||||
### Step 1: Check what needs setup
|
||||
|
||||
Run `bmad_init.py` with the `check` subcommand, passing `--module {module_code}`, `--skill-path {calling_skill_path}`, and `--project-root`.
|
||||
|
||||
The response tells you what's needed:
|
||||
|
||||
- `"status": "ready"` — Config is fine. Re-run load.
|
||||
- `"status": "no_project"` — Can't find project root. Ask user to confirm the project path.
|
||||
- `"status": "core_missing"` — Core config doesn't exist. Must ask core questions first.
|
||||
- `"status": "module_missing"` — Core exists but module config doesn't. Ask module questions.
|
||||
|
||||
The response includes:
|
||||
- `core_module` — Core module.yaml questions (when core setup needed)
|
||||
- `target_module` — Target module.yaml questions (when module setup needed, discovered from `--skill-path` or `_bmad/{module}/`)
|
||||
- `core_vars` — Existing core config values (when core exists but module doesn't)
|
||||
|
||||
### Step 2: Ask core questions (if `core_missing`)
|
||||
|
||||
The check response includes `core_module` with header, subheader, and variable definitions.
|
||||
|
||||
1. Show the `header` and `subheader` to the user
|
||||
2. For each variable, present the `prompt` and `default`
|
||||
3. For variables with `single-select`, show the options as a numbered list
|
||||
4. For variables with multi-line `prompt` (array), show all lines
|
||||
5. Let the user accept defaults or provide values
|
||||
|
||||
### Step 3: Ask module questions (if module was requested)
|
||||
|
||||
The check response includes `target_module` with the module's questions. Variables may reference core answers in their defaults (e.g., `{output_folder}`).
|
||||
|
||||
1. Resolve defaults by running `bmad_init.py` with the `resolve-defaults` subcommand, passing `--module {module_code}`, `--core-answers '{core_answers_json}'`, and `--project-root`
|
||||
2. Show the module's `header` and `subheader`
|
||||
3. For each variable, present the prompt with resolved default
|
||||
4. For `single-select` variables, show options as a numbered list
|
||||
|
||||
### Step 4: Write config
|
||||
|
||||
Collect all answers and run `bmad_init.py` with the `write` subcommand, passing `--answers '{all_answers_json}'` and `--project-root`.
|
||||
|
||||
The `--answers` JSON format:
|
||||
|
||||
```json
|
||||
{
|
||||
"core": {
|
||||
"user_name": "BMad",
|
||||
"communication_language": "English",
|
||||
"document_output_language": "English",
|
||||
"output_folder": "_bmad-output"
|
||||
},
|
||||
"bmb": {
|
||||
"bmad_builder_output_folder": "_bmad-output/skills",
|
||||
"bmad_builder_reports": "_bmad-output/reports"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Note: Pass the **raw user answers** (before result template expansion). The script applies result templates and `{project-root}` expansion when writing.
|
||||
|
||||
The script:
|
||||
- Creates `_bmad/core/config.yaml` with core values (if core answers provided)
|
||||
- Creates `_bmad/{module}/config.yaml` with core values + module values (result-expanded)
|
||||
- Creates any directories listed in the module.yaml `directories` array
|
||||
|
||||
### Step 5: Return vars
|
||||
|
||||
After writing, re-run `bmad_init.py` with the `load` subcommand (same as the fast path) to return resolved vars. Store returned vars as `{var-name}` and return them to the calling skill.
|
||||
Reference in New Issue
Block a user