[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6RVWNJZB8C5F16HWXASBSEJ":3,"skill-same:01M6RVWNJZB8C5F16HWXASBSEJ":98},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":45,"ownerDescription":46,"updatedAt":47,"install":48,"resources":61},"01M6RVWNJZB8C5F16HWXASBSEJ","bmad-market-research",null,"Conduct market research on competition and customers. Use when the user says they need market research","huangjia2019\u002Fsdd-in-action","huangjia2019","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F48795276?v=4","01M6RVB2A5TS40SQTN843K74XF","Jia Huang (黄佳)","01M6RVB2DWAKV004CDR8A4QXCY",175,"MIT","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.agents\u002Fskills\u002Fbmad-market-research\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33],"research","bmad market research","market research","Market","bmad","user","use","competition","conduct","when","2026-11-10 10:12:30",false,"---\nname: bmad-market-research\ndescription: 'Conduct market research on competition and customers. Use when the user says they need market research'\n---\n\n# Market Research Workflow\n\n**Goal:** Conduct comprehensive market research using current web data and verified sources to produce complete research documents with compelling narratives and proper citations.\n\n**Your Role:** You are a market 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.\n\n## Conventions\n\n- Bare paths (e.g. `steps\u002Fstep-01-init.md`) resolve from the skill root.\n- `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).\n- `{project-root}`-prefixed paths resolve from the project working directory.\n- `{skill-name}` resolves to the skill directory's basename.\n\n## PREREQUISITE\n\n**⛔ Web search required.** If unavailable, abort and tell the user.\n\n## On Activation\n\n### Step 1: Resolve the Workflow Block\n\nRun: `python3 {project-root}\u002F_bmad\u002Fscripts\u002Fresolve_customization.py --skill {skill-root} --key workflow`\n\n**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:\n\n1. `{skill-root}\u002Fcustomize.toml` — defaults\n2. `{project-root}\u002F_bmad\u002Fcustom\u002F{skill-name}.toml` — team overrides\n3. `{project-root}\u002F_bmad\u002Fcustom\u002F{skill-name}.user.toml` — personal overrides\n\nAny 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.\n\n### Step 2: Execute Prepend Steps\n\nExecute each entry in `{workflow.activation_steps_prepend}` in order before proceeding.\n\n### Step 3: Load Persistent Facts\n\nTreat 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.\n\n### Step 4: Load Config\n\nLoad config from `{project-root}\u002F_bmad\u002Fbmm\u002Fconfig.yaml` and resolve:\n- Use `{user_name}` for greeting\n- Use `{communication_language}` for all communications\n- Use `{document_output_language}` for output documents\n- Use `{planning_artifacts}` for output location and artifact scanning\n- Use `{project_knowledge}` for additional context scanning\n\n### Step 5: Greet the User\n\nGreet `{user_name}`, speaking in `{communication_language}`.\n\n### Step 6: Execute Append Steps\n\nExecute each entry in `{workflow.activation_steps_append}` in order.\n\nActivation is complete. Begin the workflow below.\n\n## QUICK TOPIC DISCOVERY\n\n\"Welcome {{user_name}}! Let's get started with your **market research**.\n\n**What topic, problem, or area do you want to research?**\n\nFor example:\n- 'The electric vehicle market in Europe'\n- 'Plant-based food alternatives market'\n- 'Mobile payment solutions in Southeast Asia'\n- 'Or anything else you have in mind...'\"\n\n### Topic Clarification\n\nBased on the user's topic, briefly clarify:\n1. **Core Topic**: \"What exactly about [topic] are you most interested in?\"\n2. **Research Goals**: \"What do you hope to achieve with this research?\"\n3. **Scope**: \"Should we focus broadly or dive deep into specific aspects?\"\n\n## ROUTE TO MARKET RESEARCH STEPS\n\nAfter gathering the topic and goals:\n\n1. Set `research_type = \"market\"`\n2. Set `research_topic = [discovered topic from discussion]`\n3. Set `research_goals = [discovered goals from discussion]`\n4. Derive `research_topic_slug` from `{{research_topic}}`: lowercase, trim, replace whitespace with `-`, strip path separators (`\u002F`, `\\`), `..`, and any character that is not alphanumeric, `-`, or `_`. Collapse repeated `-` and strip leading\u002Ftrailing `-`. If the result is empty, use `untitled`.\n5. Create the starter output file: `{planning_artifacts}\u002Fresearch\u002Fmarket-{{research_topic_slug}}-research-{{date}}.md` with exact copy of the `.\u002Fresearch.template.md` contents\n6. Load: `.\u002Fsteps\u002Fstep-01-init.md` with topic context\n\n**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 market research.\n\n**✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`**\n","# Market Research Workflow\n\n**Goal:** Conduct comprehensive market research using current web data and verified sources to produce complete research documents with compelling narratives and proper citations.\n\n**Your Role:** You are a market 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.\n\n## Conventions\n\n- Bare paths (e.g. `steps\u002Fstep-01-init.md`) resolve from the skill root.\n- `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).\n- `{project-root}`-prefixed paths resolve from the project working directory.\n- `{skill-name}` resolves to the skill directory's basename.\n\n## PREREQUISITE\n\n**⛔ Web search required.** If unavailable, abort and tell the user.\n\n## On Activation\n\n### Step 1: Resolve the Workflow Block\n\nRun: `python3 {project-root}\u002F_bmad\u002Fscripts\u002Fresolve_customization.py --skill {skill-root} --key workflow`\n\n**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:\n\n1. `{skill-root}\u002Fcustomize.toml` — defaults\n2. `{project-root}\u002F_bmad\u002Fcustom\u002F{skill-name}.toml` — team overrides\n3. `{project-root}\u002F_bmad\u002Fcustom\u002F{skill-name}.user.toml` — personal overrides\n\nAny 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.\n\n### Step 2: Execute Prepend Steps\n\nExecute each entry in `{workflow.activation_steps_prepend}` in order before proceeding.\n\n### Step 3: Load Persistent Facts\n\nTreat 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.\n\n### Step 4: Load Config\n\nLoad config from `{project-root}\u002F_bmad\u002Fbmm\u002Fconfig.yaml` and resolve:\n- Use `{user_name}` for greeting\n- Use `{communication_language}` for all communications\n- Use `{document_output_language}` for output documents\n- Use `{planning_artifacts}` for output location and artifact scanning\n- Use `{project_knowledge}` for additional context scanning\n\n### Step 5: Greet the User\n\nGreet `{user_name}`, speaking in `{communication_language}`.\n\n### Step 6: Execute Append Steps\n\nExecute each entry in `{workflow.activation_steps_append}` in order.\n\nActivation is complete. Begin the workflow below.\n\n## QUICK TOPIC DISCOVERY\n\n\"Welcome {{user_name}}! Let's get started with your **market research**.\n\n**What topic, problem, or area do you want to research?**\n\nFor example:\n- 'The electric vehicle market in Europe'\n- 'Plant-based food alternatives market'\n- 'Mobile payment solutions in Southeast Asia'\n- 'Or anything else you have in mind...'\"\n\n### Topic Clarification\n\nBased on the user's topic, briefly clarify:\n1. **Core Topic**: \"What exactly about [topic] are you most interested in?\"\n2. **Research Goals**: \"What do you hope to achieve with this research?\"\n3. **Scope**: \"Should we focus broadly or dive deep into specific aspects?\"\n\n## ROUTE TO MARKET RESEARCH STEPS\n\nAfter gathering the topic and goals:\n\n1. Set `research_type = \"market\"`\n2. Set `research_topic = [discovered topic from discussion]`\n3. Set `research_goals = [discovered goals from discussion]`\n4. Derive `research_topic_slug` from `{{research_topic}}`: lowercase, trim, replace whitespace with `-`, strip path separators (`\u002F`, `\\`), `..`, and any character that is not alphanumeric, `-`, or `_`. Collapse repeated `-` and strip leading\u002Ftrailing `-`. If the result is empty, use `untitled`.\n5. Create the starter output file: `{planning_artifacts}\u002Fresearch\u002Fmarket-{{research_topic_slug}}-research-{{date}}.md` with exact copy of the `.\u002Fresearch.template.md` contents\n6. Load: `.\u002Fsteps\u002Fstep-01-init.md` with topic context\n\n**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 market research.\n\n**✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`**\n",{"name":5,"description":7},"master","7ccc24b38f7cae09897ace41ebae14780250ac86","week3\u002Fcode\u002F.agents\u002Fskills\u002Fbmad-market-research",60,"https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action","https:\u002F\u002Fgithub.com\u002Fhuangjia2019","https:\u002F\u002Fkage-ai.com","AI researcher at A*STAR | Author of Designing AI Agents (Manning) | Co-founder of ADPS","2026-08-25 16:05:09",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add huangjia2019\u002Fsdd-in-action --skill bmad-market-research",{"tool":54,"command":55},"bunx","bunx skills add huangjia2019\u002Fsdd-in-action --skill bmad-market-research",{"tool":57,"command":58},"pnpm","pnpm dlx skills add huangjia2019\u002Fsdd-in-action --skill bmad-market-research","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.agents\u002Fskills\u002Fbmad-market-research\u002FSKILL.md",true,[62,68,74,78,82,86,90,94],{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"customize.toml","OTHER","其他",1668,"https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.agents\u002Fskills\u002Fbmad-market-research\u002Fcustomize.toml",{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"research.template.md","REFERENCE","参考文档",581,"https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.agents\u002Fskills\u002Fbmad-market-research\u002Fresearch.template.md",{"path":75,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":76,"sourceHtmlUrl":77},"steps\u002Fstep-01-init.md",6422,"https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.agents\u002Fskills\u002Fbmad-market-research\u002Fsteps\u002Fstep-01-init.md",{"path":79,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":80,"sourceHtmlUrl":81},"steps\u002Fstep-02-customer-behavior.md",9265,"https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.agents\u002Fskills\u002Fbmad-market-research\u002Fsteps\u002Fstep-02-customer-behavior.md",{"path":83,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":84,"sourceHtmlUrl":85},"steps\u002Fstep-03-customer-pain-points.md",9581,"https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.agents\u002Fskills\u002Fbmad-market-research\u002Fsteps\u002Fstep-03-customer-pain-points.md",{"path":87,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":88,"sourceHtmlUrl":89},"steps\u002Fstep-04-customer-decisions.md",10020,"https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.agents\u002Fskills\u002Fbmad-market-research\u002Fsteps\u002Fstep-04-customer-decisions.md",{"path":91,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":92,"sourceHtmlUrl":93},"steps\u002Fstep-05-competitive-analysis.md",5756,"https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.agents\u002Fskills\u002Fbmad-market-research\u002Fsteps\u002Fstep-05-competitive-analysis.md",{"path":95,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":96,"sourceHtmlUrl":97},"steps\u002Fstep-06-research-completion.md",19394,"https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.agents\u002Fskills\u002Fbmad-market-research\u002Fsteps\u002Fstep-06-research-completion.md",[99,119,134,151,166,181],{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":34},"01M6WZBHKBA02YT2SHSACNJR91","openspec-verify-change","Verify implementation matches change artifacts. Use when the user wants to validate that implementation is complete, correct, and coherent before archiving.","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-verify-change\u002FSKILL.md",[],[106,107,108,109,110,33,111,112,113,114,115,30,29,116,117,118],"change","openspec verify change","verify","verify change","openspec","validate","complete","verify implementation","coherent","implementation","correct","artifacts","cli",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":34},"01M6WZBEQRPC45MDYVPMG17X89","openspec-sync-specs","Sync delta specs from a change to main specs. Use when the user wants to update main specs with changes from a delta spec, without archiving the change.","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-sync-specs\u002FSKILL.md",[],[126,127,110,106,128,118,129,33,130,131,132,133,30,29],"openspec sync specs","sync","spec","update","changes","with","main","delta",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":34},"01M6WZBA2QKBW10Z1ZYA4K2AV9","openspec-propose","Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to build and get a complete proposal with design, specs, and tasks ready for implementation.","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-propose\u002FSKILL.md",[],[141,110,33,115,142,112,143,144,145,131,146,147,148,29,117,149,106,118,150,30],"openspec propose","build","describe","for","ready","get","proposal","generated","tasks","design",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":34},"01M6WZB3J0FJQJ0WSW9EK6447P","openspec-onboard","Guided onboarding for OpenSpec - walk through a complete workflow cycle with narration and real codebase work.","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-onboard\u002FSKILL.md",[],[158,159,110,131,160,144,112,161,162,163,164,165,118],"openspec onboard","onboard","codebase","cycle","narration","work","onboarding","workflow",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":172,"publishedAt":34},"01M6WZAZX6QSAV79619M68K8N1","openspec-new-change","Start a new OpenSpec change using the experimental artifact workflow. Use when the user wants to create a new feature, fix, or modification with a structured step-by-step approach.","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-new-change\u002FSKILL.md",[],[106,110,173,174,175,30,176,177,29,178,179,165,118,180,33,131],"openspec new change","structured","artifact","new feature","fix","start","create","feature",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":34},"01M6WZAX8300NEPY3T1J8FRS3C","openspec-ff-change","Fast-forward through OpenSpec artifact creation. Use when the user wants to quickly create all artifacts needed for implementation without stepping through each one individually.","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-ff-change\u002FSKILL.md",[],[106,188,110,118,33,144,189,175,115,30,29,190,117,179],"openspec ff change","creation","fast"]