[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FPQT3CSQDDGXPFZJZGR6CP":3,"skill-same:01M6FPQT3CSQDDGXPFZJZGR6CP":78},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":47,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6FPQT3CSQDDGXPFZJZGR6CP","bmad-qa-generate-e2e-tests",null,"Generate end to end automated tests for existing features. Use when the user says \"create qa automated tests for [feature]\"","reformlab\u002FReformLab","reformlab","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F264161760?v=4","01M6CVRNMTPJRX8QX0P5J8NRZ6","01M6CVRNS5KTS18YC3AZHP1BZ3",1,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002Freformlab\u002FReformLab\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fbmad-qa-generate-e2e-tests\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36],"e2e tests","generate","qa","e2e","bmad qa generate e2e tests","generate e2e tests","bmad qa","tests","bmad","create","user","use","feature","end","2026-11-10 10:12:30",false,"---\nname: bmad-qa-generate-e2e-tests\ndescription: 'Generate end to end automated tests for existing features. Use when the user says \"create qa automated tests for [feature]\"'\n---\n\n# QA Generate E2E Tests Workflow\n\n**Goal:** Generate automated API and E2E tests for implemented code.\n\n**Your Role:** You are a QA automation engineer. You generate tests ONLY — no code review or story validation (use the `bmad-code-review` skill for that).\n\n## Conventions\n\n- Bare paths (e.g. `checklist.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## 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\n- `project_name`, `user_name`\n- `communication_language`, `document_output_language`\n- `implementation_artifacts`\n- `date` as system-generated current datetime\n- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`\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## Paths\n\n- `test_dir` = `{project-root}\u002Ftests`\n- `source_dir` = `{project-root}`\n- `default_output_file` = `{implementation_artifacts}\u002Ftests\u002Ftest-summary.md`\n\n## Execution\n\n### Step 0: Detect Test Framework\n\nCheck project for existing test framework:\n\n- Look for `package.json` dependencies (playwright, jest, vitest, cypress, etc.)\n- Check for existing test files to understand patterns\n- Use whatever test framework the project already has\n- If no framework exists:\n  - Analyze source code to determine project type (React, Vue, Node API, etc.)\n  - Search online for current recommended test framework for that stack\n  - Suggest the meta framework and use it (or ask user to confirm)\n\n### Step 1: Identify Features\n\nAsk user what to test:\n\n- Specific feature\u002Fcomponent name\n- Directory to scan (e.g., `src\u002Fcomponents\u002F`)\n- Or auto-discover features in the codebase\n\n### Step 2: Generate API Tests (if applicable)\n\nFor API endpoints\u002Fservices, generate tests that:\n\n- Test status codes (200, 400, 404, 500)\n- Validate response structure\n- Cover happy path + 1-2 error cases\n- Use project's existing test framework patterns\n\n### Step 3: Generate E2E Tests (if UI exists)\n\nFor UI features, generate tests that:\n\n- Test user workflows end-to-end\n- Use semantic locators (roles, labels, text)\n- Focus on user interactions (clicks, form fills, navigation)\n- Assert visible outcomes\n- Keep tests linear and simple\n- Follow project's existing test patterns\n\n### Step 4: Run Tests\n\nExecute tests to verify they pass (use project's test command).\n\nIf failures occur, fix them immediately.\n\n### Step 5: Create Summary\n\nOutput markdown summary:\n\n```markdown\n# Test Automation Summary\n\n## Generated Tests\n\n### API Tests\n- [x] tests\u002Fapi\u002Fendpoint.spec.ts - Endpoint validation\n\n### E2E Tests\n- [x] tests\u002Fe2e\u002Ffeature.spec.ts - User workflow\n\n## Coverage\n- API endpoints: 5\u002F10 covered\n- UI features: 3\u002F8 covered\n\n## Next Steps\n- Run tests in CI\n- Add more edge cases as needed\n```\n\n## Keep It Simple\n\n**Do:**\n\n- Use standard test framework APIs\n- Focus on happy path + critical errors\n- Write readable, maintainable tests\n- Run tests to verify they pass\n\n**Avoid:**\n\n- Complex fixture composition\n- Over-engineering\n- Unnecessary abstractions\n\n**For Advanced Features:**\n\nIf the project needs:\n\n- Risk-based test strategy\n- Test design planning\n- Quality gates and NFR assessment\n- Comprehensive coverage analysis\n- Advanced testing patterns and utilities\n\n> **Install Test Architect (TEA) module**: \u003Chttps:\u002F\u002Fbmad-code-org.github.io\u002Fbmad-method-test-architecture-enterprise\u002F>\n\n## Output\n\nSave summary to: `{default_output_file}`\n\n**Done!** Tests generated and verified. Validate against `.\u002Fchecklist.md`.\n\n## On Complete\n\nRun: `python3 {project-root}\u002F_bmad\u002Fscripts\u002Fresolve_customization.py --skill {skill-root} --key workflow.on_complete`\n\nIf the resolved `workflow.on_complete` is non-empty, follow it as the final terminal instruction before exiting.\n","# QA Generate E2E Tests Workflow\n\n**Goal:** Generate automated API and E2E tests for implemented code.\n\n**Your Role:** You are a QA automation engineer. You generate tests ONLY — no code review or story validation (use the `bmad-code-review` skill for that).\n\n## Conventions\n\n- Bare paths (e.g. `checklist.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## 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\n- `project_name`, `user_name`\n- `communication_language`, `document_output_language`\n- `implementation_artifacts`\n- `date` as system-generated current datetime\n- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`\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## Paths\n\n- `test_dir` = `{project-root}\u002Ftests`\n- `source_dir` = `{project-root}`\n- `default_output_file` = `{implementation_artifacts}\u002Ftests\u002Ftest-summary.md`\n\n## Execution\n\n### Step 0: Detect Test Framework\n\nCheck project for existing test framework:\n\n- Look for `package.json` dependencies (playwright, jest, vitest, cypress, etc.)\n- Check for existing test files to understand patterns\n- Use whatever test framework the project already has\n- If no framework exists:\n  - Analyze source code to determine project type (React, Vue, Node API, etc.)\n  - Search online for current recommended test framework for that stack\n  - Suggest the meta framework and use it (or ask user to confirm)\n\n### Step 1: Identify Features\n\nAsk user what to test:\n\n- Specific feature\u002Fcomponent name\n- Directory to scan (e.g., `src\u002Fcomponents\u002F`)\n- Or auto-discover features in the codebase\n\n### Step 2: Generate API Tests (if applicable)\n\nFor API endpoints\u002Fservices, generate tests that:\n\n- Test status codes (200, 400, 404, 500)\n- Validate response structure\n- Cover happy path + 1-2 error cases\n- Use project's existing test framework patterns\n\n### Step 3: Generate E2E Tests (if UI exists)\n\nFor UI features, generate tests that:\n\n- Test user workflows end-to-end\n- Use semantic locators (roles, labels, text)\n- Focus on user interactions (clicks, form fills, navigation)\n- Assert visible outcomes\n- Keep tests linear and simple\n- Follow project's existing test patterns\n\n### Step 4: Run Tests\n\nExecute tests to verify they pass (use project's test command).\n\nIf failures occur, fix them immediately.\n\n### Step 5: Create Summary\n\nOutput markdown summary:\n\n```markdown\n# Test Automation Summary\n\n## Generated Tests\n\n### API Tests\n- [x] tests\u002Fapi\u002Fendpoint.spec.ts - Endpoint validation\n\n### E2E Tests\n- [x] tests\u002Fe2e\u002Ffeature.spec.ts - User workflow\n\n## Coverage\n- API endpoints: 5\u002F10 covered\n- UI features: 3\u002F8 covered\n\n## Next Steps\n- Run tests in CI\n- Add more edge cases as needed\n```\n\n## Keep It Simple\n\n**Do:**\n\n- Use standard test framework APIs\n- Focus on happy path + critical errors\n- Write readable, maintainable tests\n- Run tests to verify they pass\n\n**Avoid:**\n\n- Complex fixture composition\n- Over-engineering\n- Unnecessary abstractions\n\n**For Advanced Features:**\n\nIf the project needs:\n\n- Risk-based test strategy\n- Test design planning\n- Quality gates and NFR assessment\n- Comprehensive coverage analysis\n- Advanced testing patterns and utilities\n\n> **Install Test Architect (TEA) module**: \u003Chttps:\u002F\u002Fbmad-code-org.github.io\u002Fbmad-method-test-architecture-enterprise\u002F>\n\n## Output\n\nSave summary to: `{default_output_file}`\n\n**Done!** Tests generated and verified. Validate against `.\u002Fchecklist.md`.\n\n## On Complete\n\nRun: `python3 {project-root}\u002F_bmad\u002Fscripts\u002Fresolve_customization.py --skill {skill-root} --key workflow.on_complete`\n\nIf the resolved `workflow.on_complete` is non-empty, follow it as the final terminal instruction before exiting.\n",{"name":5,"description":7},"master","314a64e40d9abca764698290593908a736500b30",".claude\u002Fskills\u002Fbmad-qa-generate-e2e-tests",0,"https:\u002F\u002Fgithub.com\u002Freformlab\u002FReformLab","https:\u002F\u002Fdocs.reform-lab.eu\u002F","https:\u002F\u002Fgithub.com\u002Freformlab","https:\u002F\u002Freform-lab.eu\u002F","See who your policy actually helps","2026-05-25 03:50:07",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add reformlab\u002FReformLab --skill bmad-qa-generate-e2e-tests",{"tool":58,"command":59},"bunx","bunx skills add reformlab\u002FReformLab --skill bmad-qa-generate-e2e-tests",{"tool":61,"command":62},"pnpm","pnpm dlx skills add reformlab\u002FReformLab --skill bmad-qa-generate-e2e-tests","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Freformlab\u002FReformLab\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fbmad-qa-generate-e2e-tests\u002FSKILL.md",true,[66,72],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"checklist.md","REFERENCE","参考文档",891,"https:\u002F\u002Fgithub.com\u002Freformlab\u002FReformLab\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fbmad-qa-generate-e2e-tests\u002Fchecklist.md",{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"customize.toml","OTHER","其他",1639,"https:\u002F\u002Fgithub.com\u002Freformlab\u002FReformLab\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fbmad-qa-generate-e2e-tests\u002Fcustomize.toml",[79,104,118,140,157,172],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":37},"01M6FQK4CGE9096SN2JRE7DA8H","bmad-assist-help","Explain how bmad-assist works in this project by inspecting the local bmad-assist config, sprint status, epics, state, runs, prompts, logs, and relevant source code. Use when the user asks how bmad-assist behaves, how it reads epics and stories, why a run resumed or failed, what files are authoritative, or to investigate bmad-assist execution in the current repo.","https:\u002F\u002Fgithub.com\u002Freformlab\u002FReformLab\u002Fblob\u002Fmaster\u002F_bmad\u002Fcore\u002Fskills\u002Fbmad-assist-help\u002FSKILL.md",[],[86,31,87,88,89,90,91,92,93,94,95,96,97,98,99,34,100,101,102,103],"help","bmad assist help","config","run","investigate","code","state","logs","execution","relevant","how","why","explain","repo","files","local","project","sprint",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":37},"01M6FQK133CMP4ZT00TW6S7TB1","bmad-fix-ci","Diagnose and fix GitHub CI failures locally. Use when the user says 'fix ci' or 'fix ci failures'.","https:\u002F\u002Fgithub.com\u002Freformlab\u002FReformLab\u002Fblob\u002Fmaster\u002F_bmad\u002Fbmm\u002Fskills\u002Fbmad-fix-ci\u002FSKILL.md",[],[111,31,112,113,114,33,34,115,116,117],"bmad fix ci","ci","fix ci","fix","diagnose","fix ci failures","github",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":127,"publishedAt":37},"01M6FQJW69SATT3C9741MT2KJH","bmad-workflow-builder","Builds, converts, and analyzes workflows and skills. Use when the user requests to \"build a workflow\", \"modify a workflow\", \"quality check workflow\", \"analyze skill\", or \"convert a skill\".","https:\u002F\u002Fgithub.com\u002Freformlab\u002FReformLab\u002Fblob\u002Fmaster\u002F.opencode\u002Fskills\u002Fbmad-workflow-builder\u002FSKILL.md",[124],{"categoryNo":125,"categoryName":126,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[128,129,31,130,131,132,133,134,135,136,33,34,137,138,139],"bmad workflow builder","workflow","builder","workflow builder","workflows","convert","analyze","quality","check","build","quality check","requests",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":151,"publishedAt":37},"01M6FQJQMT5GW37ANR711FCBJR","bmad-validate-prd","Validate a PRD against standards. Use when the user says \"validate this PRD\" or \"run PRD validation\"","https:\u002F\u002Fgithub.com\u002Freformlab\u002FReformLab\u002Fblob\u002Fmaster\u002F.opencode\u002Fskills\u002Fbmad-validate-prd\u002FSKILL.md",[146],{"categoryNo":147,"categoryName":148,"taxonomyType":149,"taxonomyTypeDesc":150},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[31,152,153,154,33,89,155,34,156],"bmad validate prd","prd","validate","validation","standards",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":166,"publishedAt":37},"01M6FQJMCSRVGCG65DAKKGW0M1","bmad-ux-designer","ux-designer agent","https:\u002F\u002Fgithub.com\u002Freformlab\u002FReformLab\u002Fblob\u002Fmaster\u002F.opencode\u002Fskills\u002Fbmad-ux-designer\u002FSKILL.md",[163],{"categoryNo":164,"categoryName":165,"taxonomyType":149,"taxonomyTypeDesc":150},"01JBSEEDCAT000000000000032","设计师",[31,167,168,169,170,171],"bmad ux designer","UX Designer","designer","bmad ux","ux",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":179,"publishedAt":37},"01M6FQJDFKBXTWMBJD29FAC8TA","bmad-testarch-trace","Generate traceability matrix and quality gate decision. Use when the user says \"lets create traceability matrix\" or \"I want to analyze test coverage\"","https:\u002F\u002Fgithub.com\u002Freformlab\u002FReformLab\u002Fblob\u002Fmaster\u002F.opencode\u002Fskills\u002Fbmad-testarch-trace\u002FSKILL.md",[178],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[180,181,182,31,183,184,32,24,134,135,185,33,186,34,187,188,189],"trace","bmad testarch","bmad testarch trace","test","quality gate","decision","coverage","test coverage","gate","traceability"]