Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6dca9cc5ba | ||
|
|
0881735a20 | ||
|
|
61ab1161e5 | ||
|
|
93d3a47326 | ||
|
|
bd6a558929 |
14
CHANGELOG.md
14
CHANGELOG.md
@@ -1,3 +1,17 @@
|
|||||||
|
## [4.6.3](https://github.com/bmadcode/BMAD-METHOD/compare/v4.6.2...v4.6.3) (2025-06-19)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* SM fixed file resolution issue in v4 ([61ab116](https://github.com/bmadcode/BMAD-METHOD/commit/61ab1161e59a92d657ab663082abcaf26729fa6b))
|
||||||
|
|
||||||
|
## [4.6.2](https://github.com/bmadcode/BMAD-METHOD/compare/v4.6.1...v4.6.2) (2025-06-19)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* installer upgrade path fixed ([bd6a558](https://github.com/bmadcode/BMAD-METHOD/commit/bd6a55892906077a700f488bde175b57e846729d))
|
||||||
|
|
||||||
## [4.6.1](https://github.com/bmadcode/BMAD-METHOD/compare/v4.6.0...v4.6.1) (2025-06-19)
|
## [4.6.1](https://github.com/bmadcode/BMAD-METHOD/compare/v4.6.0...v4.6.1) (2025-06-19)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,12 @@
|
|||||||
|
|
||||||
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
|
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
|
||||||
|
|
||||||
|
## Task and File Resolution
|
||||||
|
|
||||||
|
`Create Next Story`: `.bmad-core/tasks/create-next-story.md`
|
||||||
|
`story-tmpl`: `.bmad-core/templates/story-tmpl.md`
|
||||||
|
`story-draft-checklist`: `.bmad-core/checklists/story-draft-checklist.md`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
activation-instructions:
|
activation-instructions:
|
||||||
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
|
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
|
||||||
@@ -21,14 +27,14 @@ persona:
|
|||||||
identity: Story creation expert who prepares detailed, actionable stories for AI developers
|
identity: Story creation expert who prepares detailed, actionable stories for AI developers
|
||||||
focus: Creating crystal-clear stories that dumb AI agents can implement without confusion
|
focus: Creating crystal-clear stories that dumb AI agents can implement without confusion
|
||||||
core_principles:
|
core_principles:
|
||||||
- Task Adherence - Rigorously follow create-next-story procedures
|
- Task Adherence - Rigorously follow `Create Next Story` procedures
|
||||||
- Checklist-Driven Validation - Apply story-draft-checklist meticulously
|
- Checklist-Driven Validation - Apply story-draft-checklist meticulously
|
||||||
- Clarity for Developer Handoff - Stories must be immediately actionable
|
- Clarity for Developer Handoff - Stories must be immediately actionable
|
||||||
- Focus on One Story at a Time - Complete one before starting next
|
- Focus on One Story at a Time - Complete one before starting next
|
||||||
- Numbered Options Protocol - Always use numbered lists for selections
|
- Numbered Options Protocol - Always use numbered lists for selections
|
||||||
startup:
|
startup:
|
||||||
- Greet the user with your name and role, and inform of the *help command.
|
- Greet the user with your name and role, and inform of the *help command.
|
||||||
- CRITICAL: Do NOT automatically execute create-next-story tasks during startup
|
- CRITICAL: Do NOT automatically execute `Create Next Story` tasks during startup
|
||||||
- CRITICAL: Do NOT create or modify any files during startup
|
- CRITICAL: Do NOT create or modify any files during startup
|
||||||
- Offer to help with story preparation but wait for explicit user confirmation
|
- Offer to help with story preparation but wait for explicit user confirmation
|
||||||
- Only execute tasks when user explicitly requests them
|
- Only execute tasks when user explicitly requests them
|
||||||
@@ -36,7 +42,7 @@ startup:
|
|||||||
commands:
|
commands:
|
||||||
- '*help" - Show: numbered list of the following commands to allow selection'
|
- '*help" - Show: numbered list of the following commands to allow selection'
|
||||||
- '*chat-mode" - Conversational mode with advanced-elicitation for advice'
|
- '*chat-mode" - Conversational mode with advanced-elicitation for advice'
|
||||||
- '*create" - Execute all steps in Create Next Story Task document'
|
- '*create" - Execute all steps in `Create Next Story`'
|
||||||
- '*pivot" - Run correct-course task (ensure no story already created first)'
|
- '*pivot" - Run correct-course task (ensure no story already created first)'
|
||||||
- '*checklist {checklist}" - Show numbered list of checklists, execute selection'
|
- '*checklist {checklist}" - Show numbered list of checklists, execute selection'
|
||||||
- '*doc-shard {PRD|Architecture|Other}" - Execute shard-doc task'
|
- '*doc-shard {PRD|Architecture|Other}" - Execute shard-doc task'
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "bmad-method",
|
"name": "bmad-method",
|
||||||
"version": "4.6.1",
|
"version": "4.6.3",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "bmad-method",
|
"name": "bmad-method",
|
||||||
"version": "4.6.1",
|
"version": "4.6.3",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@kayvan/markdown-tree-parser": "^1.5.0",
|
"@kayvan/markdown-tree-parser": "^1.5.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "bmad-method",
|
"name": "bmad-method",
|
||||||
"version": "4.6.1",
|
"version": "4.6.3",
|
||||||
"description": "Breakthrough Method of Agile AI-driven Development",
|
"description": "Breakthrough Method of Agile AI-driven Development",
|
||||||
"main": "tools/cli.js",
|
"main": "tools/cli.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|||||||
@@ -425,7 +425,10 @@ class Installer {
|
|||||||
console.log(chalk.cyan("\n📦 Starting v3 to v4 upgrade process..."));
|
console.log(chalk.cyan("\n📦 Starting v3 to v4 upgrade process..."));
|
||||||
const V3ToV4Upgrader = require("../../upgraders/v3-to-v4-upgrader");
|
const V3ToV4Upgrader = require("../../upgraders/v3-to-v4-upgrader");
|
||||||
const upgrader = new V3ToV4Upgrader();
|
const upgrader = new V3ToV4Upgrader();
|
||||||
return await upgrader.upgrade({ projectPath: installDir });
|
return await upgrader.upgrade({
|
||||||
|
projectPath: installDir,
|
||||||
|
ides: config.ides || [] // Pass IDE selections from initial config
|
||||||
|
});
|
||||||
}
|
}
|
||||||
case "alongside":
|
case "alongside":
|
||||||
return await this.performFreshInstall(config, installDir, spinner);
|
return await this.performFreshInstall(config, installDir, spinner);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "bmad-method",
|
"name": "bmad-method",
|
||||||
"version": "4.6.1",
|
"version": "4.6.3",
|
||||||
"description": "BMAD Method installer - AI-powered Agile development framework",
|
"description": "BMAD Method installer - AI-powered Agile development framework",
|
||||||
"main": "lib/installer.js",
|
"main": "lib/installer.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ class V3ToV4Upgrader {
|
|||||||
|
|
||||||
// 8. Setup IDE
|
// 8. Setup IDE
|
||||||
if (!options.dryRun) {
|
if (!options.dryRun) {
|
||||||
await this.setupIDE(projectPath);
|
await this.setupIDE(projectPath, options.ides);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 9. Show completion report
|
// 9. Show completion report
|
||||||
@@ -379,8 +379,8 @@ class V3ToV4Upgrader {
|
|||||||
const spinner = ora("Installing V4 structure...").start();
|
const spinner = ora("Installing V4 structure...").start();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Get the source .bmad-core directory
|
// Get the source bmad-core directory (without dot prefix)
|
||||||
const sourcePath = path.join(__dirname, "..", "..", ".bmad-core");
|
const sourcePath = path.join(__dirname, "..", "..", "bmad-core");
|
||||||
const destPath = path.join(projectPath, ".bmad-core");
|
const destPath = path.join(projectPath, ".bmad-core");
|
||||||
|
|
||||||
// Copy .bmad-core
|
// Copy .bmad-core
|
||||||
@@ -545,47 +545,37 @@ class V3ToV4Upgrader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async setupIDE(projectPath) {
|
async setupIDE(projectPath, selectedIdes) {
|
||||||
const { ide } = await inquirer.prompt([
|
// Use the IDE selections passed from the installer
|
||||||
{
|
if (!selectedIdes || selectedIdes.length === 0) {
|
||||||
type: "list",
|
console.log(chalk.dim("No IDE setup requested - skipping"));
|
||||||
name: "ide",
|
return;
|
||||||
message: "Which IDE are you using?",
|
}
|
||||||
choices: [
|
|
||||||
{ name: "Cursor", value: "cursor" },
|
|
||||||
{ name: "Claude Code", value: "claude-code" },
|
|
||||||
{ name: "Windsurf", value: "windsurf" },
|
|
||||||
{ name: "Roo Code", value: "roo" },
|
|
||||||
{ name: "VS Code", value: "skip" },
|
|
||||||
{ name: "Other/Skip", value: "skip" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
|
|
||||||
const selectedIde = ide === "skip" ? null : ide;
|
const ideSetup = require("../installer/lib/ide-setup");
|
||||||
|
const spinner = ora("Setting up IDE rules for all agents...").start();
|
||||||
|
|
||||||
if (selectedIde) {
|
try {
|
||||||
const ideSetup = require("../installer/lib/ide-setup");
|
const ideMessages = {
|
||||||
const spinner = ora("Setting up IDE rules for all agents...").start();
|
cursor: "Rules created in .cursor/rules/",
|
||||||
|
"claude-code": "Commands created in .claude/commands/",
|
||||||
|
windsurf: "Rules created in .windsurf/rules/",
|
||||||
|
roo: "Custom modes created in .roomodes",
|
||||||
|
};
|
||||||
|
|
||||||
try {
|
// Setup each selected IDE
|
||||||
await ideSetup.setup(selectedIde, projectPath);
|
for (const ide of selectedIdes) {
|
||||||
spinner.succeed("IDE setup complete!");
|
spinner.text = `Setting up ${ide}...`;
|
||||||
|
await ideSetup.setup(ide, projectPath);
|
||||||
const ideMessages = {
|
console.log(chalk.green(`\n✓ ${ideMessages[ide]}`));
|
||||||
cursor: "Rules created in .cursor/rules/",
|
|
||||||
"claude-code": "Commands created in .claude/commands/",
|
|
||||||
windsurf: "Rules created in .windsurf/rules/",
|
|
||||||
roo: "Custom modes created in .roomodes",
|
|
||||||
};
|
|
||||||
|
|
||||||
console.log(chalk.green(`- ${ideMessages[selectedIde]}`));
|
|
||||||
} catch (error) {
|
|
||||||
spinner.fail("IDE setup failed");
|
|
||||||
console.error(
|
|
||||||
chalk.yellow("IDE setup failed, but upgrade is complete.")
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spinner.succeed(`IDE setup complete for ${selectedIdes.length} IDE(s)!`);
|
||||||
|
} catch (error) {
|
||||||
|
spinner.fail("IDE setup failed");
|
||||||
|
console.error(
|
||||||
|
chalk.yellow("IDE setup failed, but upgrade is complete.")
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user