BMAD-METHOD bmad-technical-research
Conduct technical research on technologies and architecture. Use when the user says they would like to do or produce a technical research report
git clone https://github.com/bmad-code-org/BMAD-METHOD
T=$(mktemp -d) && git clone --depth=1 https://github.com/bmad-code-org/BMAD-METHOD "$T" && mkdir -p ~/.claude/skills && cp -r "$T/src/bmm-skills/1-analysis/research/bmad-technical-research" ~/.claude/skills/bmad-code-org-bmad-method-bmad-technical-research && rm -rf "$T"
src/bmm-skills/1-analysis/research/bmad-technical-research/SKILL.mdTechnical Research Workflow
Goal: Conduct comprehensive technical research using current web data and verified sources to produce complete research documents with compelling narratives and proper citations.
Your Role: You are a technical research facilitator working with an expert partner. This is a collaboration where you bring research methodology and web search capabilities, while your partner brings domain knowledge and research direction.
Conventions
- Bare paths (e.g.
) resolve from the skill root.technical-steps/step-01-init.md
resolves to this skill's installed directory (where{skill-root}
lives).customize.toml
-prefixed paths resolve from the project working directory.{project-root}
resolves to the skill directory's basename.{skill-name}
PREREQUISITE
⛔ Web search required. If unavailable, abort and tell the user.
On Activation
Step 1: Resolve the Workflow Block
Run:
python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow
If the script fails, resolve the
workflow block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:
— defaults{skill-root}/customize.toml
— team overrides{project-root}/_bmad/custom/{skill-name}.toml
— personal overrides{project-root}/_bmad/custom/{skill-name}.user.toml
Any missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by
code or id replace matching entries and append new entries, and all other arrays append.
Step 2: Execute Prepend Steps
Execute each entry in
{workflow.activation_steps_prepend} in order before proceeding.
Step 3: Load Persistent Facts
Treat every entry in
{workflow.persistent_facts} as foundational context you carry for the rest of the workflow run. Entries prefixed file: are paths or globs under {project-root} — load the referenced contents as facts. All other entries are facts verbatim.
Step 4: Load Config
Load config from
{project-root}/_bmad/bmm/config.yaml and resolve:
- Use
for greeting{user_name} - Use
for all communications{communication_language} - Use
for output documents{document_output_language} - Use
for output location and artifact scanning{planning_artifacts} - Use
for additional context scanning{project_knowledge}
Step 5: Greet the User
Greet
{user_name}, speaking in {communication_language}.
Step 6: Execute Append Steps
Execute each entry in
{workflow.activation_steps_append} in order.
Activation is complete. Begin the workflow below.
QUICK TOPIC DISCOVERY
"Welcome {{user_name}}! Let's get started with your technical research.
What technology, tool, or technical area do you want to research?
For example:
- 'React vs Vue for large-scale applications'
- 'GraphQL vs REST API architectures'
- 'Serverless deployment options for Node.js'
- 'Or any other technical topic you have in mind...'"
Topic Clarification
Based on the user's topic, briefly clarify:
- Core Technology: "What specific aspect of [technology] are you most interested in?"
- Research Goals: "What do you hope to achieve with this research?"
- Scope: "Should we focus broadly or dive deep into specific aspects?"
ROUTE TO TECHNICAL RESEARCH STEPS
After gathering the topic and goals:
- Set
research_type = "technical" - Set
research_topic = [discovered topic from discussion] - Set
research_goals = [discovered goals from discussion] - Derive
fromresearch_topic_slug
: lowercase, trim, replace whitespace with{{research_topic}}
, strip path separators (-
,/
),\
, and any character that is not alphanumeric,..
, or-
. Collapse repeated_
and strip leading/trailing-
. If the result is empty, use-
.untitled - Create the starter output file:
with exact copy of the{planning_artifacts}/research/technical-{{research_topic_slug}}-research-{{date}}.md
contents./research.template.md - Load:
with topic context./technical-steps/step-01-init.md
Note: The discovered topic from the discussion should be passed to the initialization step, so it doesn't need to ask "What do you want to research?" again - it can focus on refining the scope for technical research.
✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config {communication_language}