bmad-method 6.7.1-next.9 → 6.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,51 +1,70 @@
|
|
|
1
1
|
num,category,method_name,description,output_pattern
|
|
2
|
-
1,
|
|
3
|
-
2,
|
|
4
|
-
3,
|
|
5
|
-
4,
|
|
6
|
-
5,
|
|
7
|
-
6,
|
|
8
|
-
7,
|
|
9
|
-
8,
|
|
10
|
-
9,collaboration,
|
|
11
|
-
10,collaboration,
|
|
12
|
-
11,
|
|
13
|
-
12,
|
|
14
|
-
13,
|
|
15
|
-
14,
|
|
16
|
-
15,
|
|
17
|
-
16,
|
|
18
|
-
17,
|
|
19
|
-
18,
|
|
20
|
-
19,
|
|
21
|
-
20,
|
|
22
|
-
21,
|
|
23
|
-
22,
|
|
24
|
-
23,
|
|
25
|
-
24,
|
|
26
|
-
25,
|
|
27
|
-
26,
|
|
28
|
-
27,
|
|
29
|
-
28,
|
|
30
|
-
29,
|
|
31
|
-
30,
|
|
32
|
-
31,
|
|
33
|
-
32,
|
|
34
|
-
33,
|
|
35
|
-
34,
|
|
36
|
-
35,
|
|
37
|
-
36,
|
|
38
|
-
37,
|
|
39
|
-
38,
|
|
40
|
-
39,
|
|
41
|
-
40,
|
|
42
|
-
41,
|
|
43
|
-
42,
|
|
44
|
-
43,
|
|
45
|
-
44,
|
|
46
|
-
45,
|
|
47
|
-
46,learning,
|
|
48
|
-
47,
|
|
49
|
-
48,
|
|
50
|
-
49,
|
|
51
|
-
50,
|
|
2
|
+
1,advanced,Tree of Thoughts,Explore multiple reasoning paths simultaneously then evaluate and select the best - perfect for complex problems with multiple valid approaches,paths → evaluation → selection
|
|
3
|
+
2,advanced,Graph of Thoughts,Model reasoning as an interconnected network of ideas to reveal hidden relationships - ideal for systems thinking and discovering emergent patterns,nodes → connections → patterns
|
|
4
|
+
3,advanced,Thread of Thought,Maintain coherent reasoning across long contexts by weaving a continuous narrative thread - essential for RAG systems and maintaining consistency,context → thread → synthesis
|
|
5
|
+
4,advanced,Self-Consistency Validation,Generate multiple independent approaches then compare for consistency - crucial for high-stakes decisions where verification matters,approaches → comparison → consensus
|
|
6
|
+
5,advanced,Meta-Prompting Analysis,Step back to analyze the approach structure and methodology itself - valuable for optimizing prompts and improving problem-solving,current → analysis → optimization
|
|
7
|
+
6,advanced,Reasoning via Planning,Build a reasoning tree guided by world models and goal states - excellent for strategic planning and sequential decision-making,model → planning → strategy
|
|
8
|
+
7,advanced,Chain-of-Thought Scaffolding,Force explicit intermediate reasoning steps before any conclusion — prevents intuitive leaps that skip flawed logic,premise → step → step → conclusion
|
|
9
|
+
8,advanced,Few-Shot Exemplar Priming,Provide 2-3 worked examples of the desired reasoning pattern before the real task — aligns output format and depth through demonstration,examples → pattern recognition → application
|
|
10
|
+
9,collaboration,Stakeholder Round Table,Convene multiple personas to contribute diverse perspectives - essential for requirements gathering and finding balanced solutions across competing interests,perspectives → synthesis → alignment
|
|
11
|
+
10,collaboration,Expert Panel Review,Assemble domain experts for deep specialized analysis - ideal when technical depth and peer review quality are needed,expert views → consensus → recommendations
|
|
12
|
+
11,collaboration,Debate Club Showdown,Two personas argue opposing positions while a moderator scores points - great for exploring controversial decisions and finding middle ground,thesis → antithesis → synthesis
|
|
13
|
+
12,collaboration,User Persona Focus Group,Gather your product's user personas to react to proposals and share frustrations - essential for validating features and discovering unmet needs,reactions → concerns → priorities
|
|
14
|
+
13,collaboration,Time Traveler Council,Past-you and future-you advise present-you on decisions - powerful for gaining perspective on long-term consequences vs short-term pressures,past wisdom → present choice → future impact
|
|
15
|
+
14,collaboration,Cross-Functional War Room,Product manager + engineer + designer tackle a problem together - reveals trade-offs between feasibility desirability and viability,constraints → trade-offs → balanced solution
|
|
16
|
+
15,collaboration,Mentor and Apprentice,Senior expert teaches junior while junior asks naive questions - surfaces hidden assumptions through teaching,explanation → questions → deeper understanding
|
|
17
|
+
16,collaboration,Good Cop Bad Cop,Supportive persona and critical persona alternate - finds both strengths to build on and weaknesses to address,encouragement → criticism → balanced view
|
|
18
|
+
17,collaboration,Improv Yes-And,Multiple personas build on each other's ideas without blocking - generates unexpected creative directions through collaborative building,idea → build → build → surprising result
|
|
19
|
+
18,collaboration,Customer Support Theater,Angry customer and support rep roleplay to find pain points - reveals real user frustrations and service gaps,complaint → investigation → resolution → prevention
|
|
20
|
+
19,collaboration,Six Thinking Hats,Rotate through six modes (facts - feelings - caution - optimism - creativity - process) to ensure a group covers every angle without crosstalk,white → red → black → yellow → green → blue
|
|
21
|
+
20,collaboration,Delphi Method,Experts give independent estimates - see anonymized results - then revise — converges on calibrated group judgment while avoiding anchoring bias,independent estimates → reveal → revise → converge
|
|
22
|
+
21,competitive,Red Team vs Blue Team,Adversarial attack-defend analysis to find vulnerabilities - critical for security testing and building robust solutions,defense → attack → hardening
|
|
23
|
+
22,competitive,Shark Tank Pitch,Entrepreneur pitches to skeptical investors who poke holes - stress-tests business viability and forces clarity on value proposition,pitch → challenges → refinement
|
|
24
|
+
23,competitive,Code Review Gauntlet,Senior devs with different philosophies review the same code - surfaces style debates and finds consensus on best practices,reviews → debates → standards
|
|
25
|
+
24,core,First Principles Analysis,Strip away assumptions to rebuild from fundamental truths - breakthrough technique for innovation and solving impossible problems,assumptions → truths → new approach
|
|
26
|
+
25,core,5 Whys Deep Dive,Repeatedly ask why to drill down to root causes - simple but powerful for understanding failures,why chain → root cause → solution
|
|
27
|
+
26,core,Socratic Questioning,Use targeted questions to reveal hidden assumptions and guide discovery - excellent for teaching and self-discovery,questions → revelations → understanding
|
|
28
|
+
27,core,Critique and Refine,Systematic review to identify strengths and weaknesses then improve - standard quality check for drafts,strengths/weaknesses → improvements → refined
|
|
29
|
+
28,core,Explain Reasoning,Walk through step-by-step thinking to show how conclusions were reached - crucial for transparency,steps → logic → conclusion
|
|
30
|
+
29,core,Expand or Contract for Audience,Dynamically adjust detail level and technical depth for target audience - matches content to reader capabilities,audience → adjustments → refined content
|
|
31
|
+
30,core,Second-Order Thinking,Think beyond immediate consequences to anticipate cascading effects and long-term implications - essential for strategic decisions where first-order solutions create hidden downstream problems,action → consequences → second-order effects → informed choice
|
|
32
|
+
31,core,Inversion Analysis,Flip the problem by asking what would guarantee failure instead of how to succeed - reveals hidden obstacles and blind spots by approaching challenges from the opposite direction,goal → invert → failure paths → avoidance → solution
|
|
33
|
+
32,core,Problem Decomposition,Break a complex problem into independent sub-problems - solve each - then reassemble — essential when a task is too large or tangled to tackle whole,whole → parts → solutions → reassembly
|
|
34
|
+
33,core,Analogy Mapping,Find a well-understood parallel domain and transfer its structure to the current problem — unlocks insight by borrowing proven mental models,source domain → mapping → target insight
|
|
35
|
+
34,core,Steelmanning,Construct the strongest possible version of an opposing argument before responding — builds credibility and catches blind spots that strawmanning misses,opposing view → strongest form → honest rebuttal
|
|
36
|
+
35,creative,SCAMPER Method,Apply seven creativity lenses (Substitute/Combine/Adapt/Modify/Put/Eliminate/Reverse) - systematic ideation for product innovation,S→C→A→M→P→E→R
|
|
37
|
+
36,creative,Reverse Engineering,Work backwards from desired outcome to find implementation path - powerful for goal achievement and understanding endpoints,end state → steps backward → path forward
|
|
38
|
+
37,creative,What If Scenarios,Explore alternative realities to understand possibilities and implications - valuable for contingency planning and exploration,scenarios → implications → insights
|
|
39
|
+
38,creative,Random Input Stimulus,Inject unrelated concepts to spark unexpected connections - breaks creative blocks through forced lateral thinking,random word → associations → novel ideas
|
|
40
|
+
39,creative,Exquisite Corpse Brainstorm,Each persona adds to the idea seeing only the previous contribution - generates surprising combinations through constrained collaboration,contribution → handoff → contribution → surprise
|
|
41
|
+
40,creative,Genre Mashup,Combine two unrelated domains to find fresh approaches - innovation through unexpected cross-pollination,domain A + domain B → hybrid insights
|
|
42
|
+
41,creative,Constraint Injection,Deliberately add an artificial limitation (budget - time - technology) to force novel solutions — creativity thrives under pressure,add constraint → forced creativity → remove constraint → evaluate
|
|
43
|
+
42,creative,Morphological Analysis,List independent parameters of a problem - enumerate options for each - then systematically combine — ensures you don't miss non-obvious configurations,parameters → options grid → combinations → evaluation
|
|
44
|
+
43,framing,Abstraction Laddering,"Move up (""why?"") for strategic clarity or down (""how?"") for tactical detail — ensures you're solving at the right altitude",concrete ↔ abstract → right level
|
|
45
|
+
44,framing,Reframe the Question,Challenge whether the stated problem is the real problem — often the question itself is wrong and a better framing unlocks an easy answer,stated problem → reframe → true problem → solution
|
|
46
|
+
45,framing,Stakeholder Lens Rotation,Serially adopt each stakeholder's world-view to see the same situation differently — reveals whose needs are being overlooked,perspective A → B → C → gaps found
|
|
47
|
+
46,learning,Feynman Technique,Explain complex concepts simply as if teaching a child - the ultimate test of true understanding,complex → simple → gaps → mastery
|
|
48
|
+
47,learning,Active Recall Testing,Test understanding without references to verify true knowledge - essential for identifying gaps,test → gaps → reinforcement
|
|
49
|
+
48,learning,Deliberate Practice Loop,Identify a specific sub-skill - drill it with immediate feedback - adjust - repeat — targeted improvement beats general repetition,isolate → drill → feedback → adjust → repeat
|
|
50
|
+
49,philosophical,Occam's Razor Application,Find the simplest sufficient explanation by eliminating unnecessary complexity - essential for debugging,options → simplification → selection
|
|
51
|
+
50,philosophical,Trolley Problem Variations,Explore ethical trade-offs through moral dilemmas - valuable for understanding values and difficult decisions,dilemma → analysis → decision
|
|
52
|
+
51,research,Literature Review Personas,Optimist researcher + skeptic researcher + synthesizer review sources - balanced assessment of evidence quality,sources → critiques → synthesis
|
|
53
|
+
52,research,Thesis Defense Simulation,Student defends hypothesis against committee with different concerns - stress-tests research methodology and conclusions,thesis → challenges → defense → refinements
|
|
54
|
+
53,research,Comparative Analysis Matrix,Multiple analysts evaluate options against weighted criteria - structured decision-making with explicit scoring,options → criteria → scores → recommendation
|
|
55
|
+
54,research,Source Triangulation,Require at least three independent source types (quantitative - qualitative - expert) before accepting a claim — guards against single-source bias,claim → source A → source B → source C → confidence rating
|
|
56
|
+
55,retrospective,Hindsight Reflection,Imagine looking back from the future to gain perspective - powerful for project reviews,future view → insights → application
|
|
57
|
+
56,retrospective,Lessons Learned Extraction,Systematically identify key takeaways and actionable improvements - essential for continuous improvement,experience → lessons → actions
|
|
58
|
+
57,risk,Pre-mortem Analysis,Imagine future failure then work backwards to prevent it - powerful technique for risk mitigation before major launches,failure scenario → causes → prevention
|
|
59
|
+
58,risk,Failure Mode Analysis,Systematically explore how each component could fail - critical for reliability engineering and safety-critical systems,components → failures → prevention
|
|
60
|
+
59,risk,Challenge from Critical Perspective,Play devil's advocate to stress-test ideas and find weaknesses - essential for overcoming groupthink,assumptions → challenges → strengthening
|
|
61
|
+
60,risk,Identify Potential Risks,Brainstorm what could go wrong across all categories - fundamental for project planning and deployment preparation,categories → risks → mitigations
|
|
62
|
+
61,risk,Chaos Monkey Scenarios,Deliberately break things to test resilience and recovery - ensures systems handle failures gracefully,break → observe → harden
|
|
63
|
+
62,risk,Assumption Audit,Explicitly list every assumption underlying a plan - rate each by confidence and impact - then stress-test the weakest — prevents building on shaky foundations,list → rate → stress-test → shore up
|
|
64
|
+
63,risk,Cascading Failure Simulation,Trace how one component's failure propagates through dependencies — reveals hidden coupling and single points of failure,trigger failure → trace propagation → find amplifiers → decouple
|
|
65
|
+
64,technical,Architecture Decision Records,Multiple architect personas propose and debate architectural choices with explicit trade-offs - ensures decisions are well-reasoned and documented,options → trade-offs → decision → rationale
|
|
66
|
+
65,technical,Rubber Duck Debugging Evolved,Explain your code to progressively more technical ducks until you find the bug - forces clarity at multiple abstraction levels,simple → detailed → technical → aha
|
|
67
|
+
66,technical,Algorithm Olympics,Multiple approaches compete on the same problem with benchmarks - finds optimal solution through direct comparison,implementations → benchmarks → winner
|
|
68
|
+
67,technical,Security Audit Personas,Hacker + defender + auditor examine system from different threat models - comprehensive security review from multiple angles,vulnerabilities → defenses → compliance
|
|
69
|
+
68,technical,Performance Profiler Panel,Database expert + frontend specialist + DevOps engineer diagnose slowness - finds bottlenecks across the full stack,symptoms → analysis → optimizations
|
|
70
|
+
69,technical,Boundary & Edge Case Sweep,Systematically test extremes - zeros - nulls - maximums - and type mismatches — catches the failures that happy-path thinking always misses,inputs → boundaries → edge cases → failures found
|
|
@@ -115,7 +115,7 @@ class CustomModuleManager {
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
// SSH URL: git@host:owner/repo.git
|
|
118
|
-
const sshMatch = trimmed.match(/^git@([^:]+):(
|
|
118
|
+
const sshMatch = trimmed.match(/^git@([^:]+):(.+?)\/([^/.]+?)(?:\.git)?$/);
|
|
119
119
|
if (sshMatch) {
|
|
120
120
|
const [, host, owner, repo] = sshMatch;
|
|
121
121
|
return {
|
|
@@ -428,7 +428,27 @@ class CustomModuleManager {
|
|
|
428
428
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
429
429
|
});
|
|
430
430
|
} else {
|
|
431
|
-
|
|
431
|
+
// Resolve the default branch (origin/HEAD) and fetch it explicitly.
|
|
432
|
+
// With shallow clones, `origin/HEAD` is stale and `git reset --hard
|
|
433
|
+
// origin/HEAD` never picks up new commits on the default branch.
|
|
434
|
+
let defaultBranch = 'main';
|
|
435
|
+
try {
|
|
436
|
+
defaultBranch = execSync('git symbolic-ref refs/remotes/origin/HEAD --short', {
|
|
437
|
+
cwd: repoCacheDir,
|
|
438
|
+
stdio: 'pipe',
|
|
439
|
+
})
|
|
440
|
+
.toString()
|
|
441
|
+
.trim()
|
|
442
|
+
.replace('origin/', '');
|
|
443
|
+
} catch {
|
|
444
|
+
// Fallback if origin/HEAD is not set
|
|
445
|
+
}
|
|
446
|
+
execSync(`git fetch --depth 1 origin ${quoteCustomRef(defaultBranch)}`, {
|
|
447
|
+
cwd: repoCacheDir,
|
|
448
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
449
|
+
env: { ...process.env, GIT_TERMINAL_PROMPT: '0' },
|
|
450
|
+
});
|
|
451
|
+
execSync(`git reset --hard origin/${quoteCustomRef(defaultBranch)}`, {
|
|
432
452
|
cwd: repoCacheDir,
|
|
433
453
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
434
454
|
});
|
|
@@ -846,11 +846,35 @@ class OfficialModules {
|
|
|
846
846
|
return false;
|
|
847
847
|
}
|
|
848
848
|
|
|
849
|
-
//
|
|
850
|
-
//
|
|
849
|
+
// Primary source: installer-written config.toml + config.user.toml (v6+).
|
|
850
|
+
// Both files together hold all install answers; config.user.toml carries
|
|
851
|
+
// user-scoped keys like user_name that would otherwise be re-prompted on
|
|
852
|
+
// every reinstall.
|
|
851
853
|
let foundAny = false;
|
|
852
|
-
const
|
|
854
|
+
for (const fileName of ['config.toml', 'config.user.toml']) {
|
|
855
|
+
const tomlPath = path.join(bmadDir, fileName);
|
|
856
|
+
if (!(await fs.pathExists(tomlPath))) continue;
|
|
857
|
+
try {
|
|
858
|
+
const content = await fs.readFile(tomlPath, 'utf8');
|
|
859
|
+
const parsed = parseCentralToml(content);
|
|
860
|
+
for (const [section, values] of Object.entries(parsed)) {
|
|
861
|
+
if (values && typeof values === 'object' && !Array.isArray(values)) {
|
|
862
|
+
if (!this._existingConfig[section]) this._existingConfig[section] = {};
|
|
863
|
+
Object.assign(this._existingConfig[section], values);
|
|
864
|
+
foundAny = true;
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
} catch {
|
|
868
|
+
// Ignore parse errors
|
|
869
|
+
}
|
|
870
|
+
}
|
|
853
871
|
|
|
872
|
+
if (foundAny) {
|
|
873
|
+
return true;
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
// Fallback: legacy per-module config.yaml files (pre-v6 installations).
|
|
877
|
+
const entries = await fs.readdir(bmadDir, { withFileTypes: true });
|
|
854
878
|
const nonModuleDirs = new Set(['_config', '_memory', 'memory', 'docs', 'scripts', 'custom']);
|
|
855
879
|
for (const entry of entries) {
|
|
856
880
|
if (entry.isDirectory()) {
|
|
@@ -2127,4 +2151,60 @@ class OfficialModules {
|
|
|
2127
2151
|
}
|
|
2128
2152
|
}
|
|
2129
2153
|
|
|
2154
|
+
/**
|
|
2155
|
+
* Parse a config.toml or config.user.toml written by writeCentralConfig.
|
|
2156
|
+
* Only handles the subset of TOML the installer produces: [core],
|
|
2157
|
+
* [modules.<code>], string/bool/number scalar values. [agents.*] and other
|
|
2158
|
+
* sections are ignored. Returns a plain object keyed by section name where
|
|
2159
|
+
* module sections use the bare code (e.g. "bmm"), not the full "modules.bmm".
|
|
2160
|
+
*/
|
|
2161
|
+
function parseCentralToml(content) {
|
|
2162
|
+
const result = {};
|
|
2163
|
+
let currentSection = null;
|
|
2164
|
+
|
|
2165
|
+
for (const rawLine of content.split('\n')) {
|
|
2166
|
+
const line = rawLine.trim();
|
|
2167
|
+
if (!line || line.startsWith('#')) continue;
|
|
2168
|
+
|
|
2169
|
+
const sectionMatch = line.match(/^\[([^\]]+)\]\s*$/);
|
|
2170
|
+
if (sectionMatch) {
|
|
2171
|
+
const name = sectionMatch[1];
|
|
2172
|
+
if (name === 'core') {
|
|
2173
|
+
currentSection = 'core';
|
|
2174
|
+
} else if (name.startsWith('modules.')) {
|
|
2175
|
+
currentSection = name.slice('modules.'.length);
|
|
2176
|
+
} else {
|
|
2177
|
+
currentSection = null;
|
|
2178
|
+
}
|
|
2179
|
+
if (currentSection && !result[currentSection]) {
|
|
2180
|
+
result[currentSection] = {};
|
|
2181
|
+
}
|
|
2182
|
+
continue;
|
|
2183
|
+
}
|
|
2184
|
+
|
|
2185
|
+
if (!currentSection) continue;
|
|
2186
|
+
|
|
2187
|
+
const kvMatch = line.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*(.+)$/);
|
|
2188
|
+
if (!kvMatch) continue;
|
|
2189
|
+
|
|
2190
|
+
const key = kvMatch[1];
|
|
2191
|
+
const raw = kvMatch[2].trim();
|
|
2192
|
+
let value;
|
|
2193
|
+
if (raw.startsWith('"') && raw.endsWith('"')) {
|
|
2194
|
+
value = raw.slice(1, -1).replaceAll(/\\(["\\nrbt])/g, (_, c) => ({ '"': '"', '\\': '\\', n: '\n', r: '\r', b: '\b', t: '\t' })[c]);
|
|
2195
|
+
} else if (raw === 'true') {
|
|
2196
|
+
value = true;
|
|
2197
|
+
} else if (raw === 'false') {
|
|
2198
|
+
value = false;
|
|
2199
|
+
} else if (raw !== '' && !isNaN(raw)) {
|
|
2200
|
+
value = Number(raw);
|
|
2201
|
+
} else {
|
|
2202
|
+
value = raw;
|
|
2203
|
+
}
|
|
2204
|
+
result[currentSection][key] = value;
|
|
2205
|
+
}
|
|
2206
|
+
|
|
2207
|
+
return result;
|
|
2208
|
+
}
|
|
2209
|
+
|
|
2130
2210
|
module.exports = { OfficialModules };
|