BMAD-METHOD bmad-domain-research

Conduct domain and industry research. Use when the user says wants to do domain research for a topic or industry

install
source · Clone the upstream repo
git clone https://github.com/bmad-code-org/BMAD-METHOD
Claude Code · Install into ~/.claude/skills/
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-domain-research" ~/.claude/skills/bmad-code-org-bmad-method-bmad-domain-research && rm -rf "$T"
manifest: src/bmm-skills/1-analysis/research/bmad-domain-research/SKILL.md
source content

Domain Research Workflow

Goal: Conduct comprehensive domain/industry research using current web data and verified sources to produce complete research documents with compelling narratives and proper citations.

Your Role: You are a domain 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.
    domain-steps/step-01-init.md
    ) resolve from the skill root.
  • {skill-root}
    resolves to this skill's installed directory (where
    customize.toml
    lives).
  • {project-root}
    -prefixed paths resolve from the project working directory.
  • {skill-name}
    resolves to the skill directory's basename.

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:

  1. {skill-root}/customize.toml
    — defaults
  2. {project-root}/_bmad/custom/{skill-name}.toml
    — team overrides
  3. {project-root}/_bmad/custom/{skill-name}.user.toml
    — personal overrides

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
    {user_name}
    for greeting
  • Use
    {communication_language}
    for all communications
  • Use
    {document_output_language}
    for output documents
  • Use
    {planning_artifacts}
    for output location and artifact scanning
  • Use
    {project_knowledge}
    for additional context scanning

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 domain/industry research.

What domain, industry, or sector do you want to research?

For example:

  • 'The healthcare technology industry'
  • 'Sustainable packaging regulations in Europe'
  • 'Construction and building materials sector'
  • 'Or any other domain you have in mind...'"

Topic Clarification

Based on the user's topic, briefly clarify:

  1. Core Domain: "What specific aspect of [domain] are you most interested in?"
  2. Research Goals: "What do you hope to achieve with this research?"
  3. Scope: "Should we focus broadly or dive deep into specific aspects?"

ROUTE TO DOMAIN RESEARCH STEPS

After gathering the topic and goals:

  1. Set
    research_type = "domain"
  2. Set
    research_topic = [discovered topic from discussion]
  3. Set
    research_goals = [discovered goals from discussion]
  4. Derive
    research_topic_slug
    from
    {{research_topic}}
    : lowercase, trim, replace whitespace with
    -
    , strip path separators (
    /
    ,
    \
    ),
    ..
    , and any character that is not alphanumeric,
    -
    , or
    _
    . Collapse repeated
    -
    and strip leading/trailing
    -
    . If the result is empty, use
    untitled
    .
  5. Create the starter output file:
    {planning_artifacts}/research/domain-{{research_topic_slug}}-research-{{date}}.md
    with exact copy of the
    ./research.template.md
    contents
  6. Load:
    ./domain-steps/step-01-init.md
    with topic context

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 domain research.

✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config

{communication_language}