[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KB1Y35MG3NHJQQHPCK752K":3,"skill-same:01M6KB1Y35MG3NHJQQHPCK752K":70},{"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":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":44,"ownerDescription":6,"updatedAt":45,"install":46,"resources":59},"01M6KB1Y35MG3NHJQQHPCK752K","migrate",null,"Migrate from Cypress or Selenium to Playwright. Use when user mentions \"cypress\", \"selenium\", \"migrate tests\", \"convert tests\", \"switch to playwright\", \"move from cypress\", or \"replace selenium\".","afaizalam2003\u002FMaster-claude-skill","afaizalam2003","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F222019359?v=4","01M6K8F2XNT0HKBPF00JQ78SV3","Faiz Alam","01M6K8F31EBXAPER0EG8R9HTR5",3,"MIT","https:\u002F\u002Fgithub.com\u002Fafaizalam2003\u002FMaster-claude-skill\u002Fblob\u002Fmain\u002Fengineering-team\u002Fplaywright-pro\u002Fskills\u002Fmigrate\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32],"playwright","selenium","convert","user","use","switch","tests","cypress","move","2026-11-10 10:12:30",false,"---\nname: \"migrate\"\ndescription: >-\n  Migrate from Cypress or Selenium to Playwright. Use when user mentions\n  \"cypress\", \"selenium\", \"migrate tests\", \"convert tests\", \"switch to\n  playwright\", \"move from cypress\", or \"replace selenium\".\n---\n\n# Migrate to Playwright\n\nInteractive migration from Cypress or Selenium to Playwright with file-by-file conversion.\n\n## Input\n\n`$ARGUMENTS` can be:\n- `\"from cypress\"` — migrate Cypress test suite\n- `\"from selenium\"` — migrate Selenium\u002FWebDriver tests\n- A file path: convert a specific test file\n- Empty: auto-detect source framework\n\n## Steps\n\n### 1. Detect Source Framework\n\nUse `Explore` subagent to scan:\n- `cypress\u002F` directory or `cypress.config.ts` → Cypress\n- `selenium`, `webdriver` in `package.json` deps → Selenium\n- `.py` test files with `selenium` imports → Selenium (Python)\n\n### 2. Assess Migration Scope\n\nCount files and categorize:\n\n```\nMigration Assessment:\n- Total test files: X\n- Cypress custom commands: Y\n- Cypress fixtures: Z\n- Estimated effort: [small|medium|large]\n```\n\n| Size | Files | Approach |\n|---|---|---|\n| Small (1-10) | Convert sequentially | Direct conversion |\n| Medium (11-30) | Batch in groups of 5 | Use sub-agents |\n| Large (31+) | Use `\u002Fbatch` | Parallel conversion with `\u002Fbatch` |\n\n### 3. Set Up Playwright (If Not Present)\n\nRun `\u002Fpw:init` first if Playwright isn't configured.\n\n### 4. Convert Files\n\nFor each file, apply the appropriate mapping:\n\n#### Cypress → Playwright\n\nLoad `cypress-mapping.md` for complete reference.\n\nKey translations:\n```\ncy.visit(url)           → page.goto(url)\ncy.get(selector)        → page.locator(selector) or page.getByRole(...)\ncy.contains(text)       → page.getByText(text)\ncy.find(selector)       → locator.locator(selector)\ncy.click()              → locator.click()\ncy.type(text)           → locator.fill(text)\ncy.should('be.visible') → expect(locator).toBeVisible()\ncy.should('have.text')  → expect(locator).toHaveText(text)\ncy.intercept()          → page.route()\ncy.wait('@alias')       → page.waitForResponse()\ncy.fixture()            → JSON import or test data file\n```\n\n**Cypress custom commands** → Playwright fixtures or helper functions\n**Cypress plugins** → Playwright config or fixtures\n**`before`\u002F`beforeEach`** → `test.beforeAll()` \u002F `test.beforeEach()`\n\n#### Selenium → Playwright\n\nLoad `selenium-mapping.md` for complete reference.\n\nKey translations:\n```\ndriver.get(url)                    → page.goto(url)\ndriver.findElement(By.id('x'))     → page.locator('#x') or page.getByTestId('x')\ndriver.findElement(By.css('.x'))   → page.locator('.x') or page.getByRole(...)\nelement.click()                    → locator.click()\nelement.sendKeys(text)             → locator.fill(text)\nelement.getText()                  → locator.textContent()\nWebDriverWait + ExpectedConditions → expect(locator).toBeVisible()\ndriver.switchTo().frame()          → page.frameLocator()\nActions                            → locator.hover(), locator.dragTo()\n```\n\n### 5. Upgrade Locators\n\nDuring conversion, upgrade selectors to Playwright best practices:\n- `#id` → `getByTestId()` or `getByRole()`\n- `.class` → `getByRole()` or `getByText()`\n- `[data-testid]` → `getByTestId()`\n- XPath → role-based locators\n\n### 6. Convert Custom Commands \u002F Utilities\n\n- Cypress custom commands → Playwright custom fixtures via `test.extend()`\n- Selenium page objects → Playwright page objects (keep structure, update API)\n- Shared helpers → TypeScript utility functions\n\n### 7. Verify Each Converted File\n\nAfter converting each file:\n\n```bash\nnpx playwright test \u003Cconverted-file> --reporter=list\n```\n\nFix any compilation or runtime errors before moving to the next file.\n\n### 8. Clean Up\n\nAfter all files are converted:\n- Remove Cypress\u002FSelenium dependencies from `package.json`\n- Remove old config files (`cypress.config.ts`, etc.)\n- Update CI workflow to use Playwright\n- Update README with new test commands\n\nAsk user before deleting anything.\n\n## Output\n\n- Conversion summary: files converted, total tests migrated\n- Any tests that couldn't be auto-converted (manual intervention needed)\n- Updated CI config\n- Before\u002Fafter comparison of test run results\n","# Migrate to Playwright\n\nInteractive migration from Cypress or Selenium to Playwright with file-by-file conversion.\n\n## Input\n\n`$ARGUMENTS` can be:\n- `\"from cypress\"` — migrate Cypress test suite\n- `\"from selenium\"` — migrate Selenium\u002FWebDriver tests\n- A file path: convert a specific test file\n- Empty: auto-detect source framework\n\n## Steps\n\n### 1. Detect Source Framework\n\nUse `Explore` subagent to scan:\n- `cypress\u002F` directory or `cypress.config.ts` → Cypress\n- `selenium`, `webdriver` in `package.json` deps → Selenium\n- `.py` test files with `selenium` imports → Selenium (Python)\n\n### 2. Assess Migration Scope\n\nCount files and categorize:\n\n```\nMigration Assessment:\n- Total test files: X\n- Cypress custom commands: Y\n- Cypress fixtures: Z\n- Estimated effort: [small|medium|large]\n```\n\n| Size | Files | Approach |\n|---|---|---|\n| Small (1-10) | Convert sequentially | Direct conversion |\n| Medium (11-30) | Batch in groups of 5 | Use sub-agents |\n| Large (31+) | Use `\u002Fbatch` | Parallel conversion with `\u002Fbatch` |\n\n### 3. Set Up Playwright (If Not Present)\n\nRun `\u002Fpw:init` first if Playwright isn't configured.\n\n### 4. Convert Files\n\nFor each file, apply the appropriate mapping:\n\n#### Cypress → Playwright\n\nLoad `cypress-mapping.md` for complete reference.\n\nKey translations:\n```\ncy.visit(url)           → page.goto(url)\ncy.get(selector)        → page.locator(selector) or page.getByRole(...)\ncy.contains(text)       → page.getByText(text)\ncy.find(selector)       → locator.locator(selector)\ncy.click()              → locator.click()\ncy.type(text)           → locator.fill(text)\ncy.should('be.visible') → expect(locator).toBeVisible()\ncy.should('have.text')  → expect(locator).toHaveText(text)\ncy.intercept()          → page.route()\ncy.wait('@alias')       → page.waitForResponse()\ncy.fixture()            → JSON import or test data file\n```\n\n**Cypress custom commands** → Playwright fixtures or helper functions\n**Cypress plugins** → Playwright config or fixtures\n**`before`\u002F`beforeEach`** → `test.beforeAll()` \u002F `test.beforeEach()`\n\n#### Selenium → Playwright\n\nLoad `selenium-mapping.md` for complete reference.\n\nKey translations:\n```\ndriver.get(url)                    → page.goto(url)\ndriver.findElement(By.id('x'))     → page.locator('#x') or page.getByTestId('x')\ndriver.findElement(By.css('.x'))   → page.locator('.x') or page.getByRole(...)\nelement.click()                    → locator.click()\nelement.sendKeys(text)             → locator.fill(text)\nelement.getText()                  → locator.textContent()\nWebDriverWait + ExpectedConditions → expect(locator).toBeVisible()\ndriver.switchTo().frame()          → page.frameLocator()\nActions                            → locator.hover(), locator.dragTo()\n```\n\n### 5. Upgrade Locators\n\nDuring conversion, upgrade selectors to Playwright best practices:\n- `#id` → `getByTestId()` or `getByRole()`\n- `.class` → `getByRole()` or `getByText()`\n- `[data-testid]` → `getByTestId()`\n- XPath → role-based locators\n\n### 6. Convert Custom Commands \u002F Utilities\n\n- Cypress custom commands → Playwright custom fixtures via `test.extend()`\n- Selenium page objects → Playwright page objects (keep structure, update API)\n- Shared helpers → TypeScript utility functions\n\n### 7. Verify Each Converted File\n\nAfter converting each file:\n\n```bash\nnpx playwright test \u003Cconverted-file> --reporter=list\n```\n\nFix any compilation or runtime errors before moving to the next file.\n\n### 8. Clean Up\n\nAfter all files are converted:\n- Remove Cypress\u002FSelenium dependencies from `package.json`\n- Remove old config files (`cypress.config.ts`, etc.)\n- Update CI workflow to use Playwright\n- Update README with new test commands\n\nAsk user before deleting anything.\n\n## Output\n\n- Conversion summary: files converted, total tests migrated\n- Any tests that couldn't be auto-converted (manual intervention needed)\n- Updated CI config\n- Before\u002Fafter comparison of test run results\n",{"name":5,"description":7},"main","0b48cbb0e6d5be6ff68c0f6b28bc0c65ee21c4a1","engineering-team\u002Fplaywright-pro\u002Fskills\u002Fmigrate",2,"https:\u002F\u002Fgithub.com\u002Fafaizalam2003\u002FMaster-claude-skill","https:\u002F\u002Fgithub.com\u002Fafaizalam2003","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fmdfaizalam2003\u002F","2026-04-01 04:35:43",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add afaizalam2003\u002FMaster-claude-skill --skill migrate",{"tool":52,"command":53},"bunx","bunx skills add afaizalam2003\u002FMaster-claude-skill --skill migrate",{"tool":55,"command":56},"pnpm","pnpm dlx skills add afaizalam2003\u002FMaster-claude-skill --skill migrate","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fafaizalam2003\u002FMaster-claude-skill\u002Fblob\u002Fmain\u002Fengineering-team\u002Fplaywright-pro\u002Fskills\u002Fmigrate\u002FSKILL.md",true,[60,66],{"path":61,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":65},"cypress-mapping.md","REFERENCE","参考文档",3682,"https:\u002F\u002Fgithub.com\u002Fafaizalam2003\u002FMaster-claude-skill\u002Fblob\u002Fmain\u002Fengineering-team\u002Fplaywright-pro\u002Fskills\u002Fmigrate\u002Fcypress-mapping.md",{"path":67,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":68,"sourceHtmlUrl":69},"selenium-mapping.md",4510,"https:\u002F\u002Fgithub.com\u002Fafaizalam2003\u002FMaster-claude-skill\u002Fblob\u002Fmain\u002Fengineering-team\u002Fplaywright-pro\u002Fskills\u002Fmigrate\u002Fselenium-mapping.md",[71,102,127,152,182,202],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":82,"publishedAt":33},"01M6KC4E8MYR9DBAZTAXHKYMMH","soc2-compliance","Use when the user asks to prepare for SOC 2 audits, map Trust Service Criteria, build control matrices, collect audit evidence, perform gap analysis, or assess SOC 2 Type I vs Type II readiness.","https:\u002F\u002Fgithub.com\u002Fafaizalam2003\u002FMaster-claude-skill\u002Fblob\u002Fmain\u002Fra-qm-team\u002Fsoc2-compliance\u002FSKILL.md",[77],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[83,84,85,86,87,88,89,90,28,91,92,93,94,95,96,97,98,99,100,101],"compliance","soc2","soc2 compliance","audit evidence","audit","collect","soc","analysis","evidence","trust","build","map","control","type","gap","readiness","gap analysis","assess","for",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":33},"01M6KC461R3GKGZ1TAYHVR1MW9","risk-management-specialist","Medical device risk management specialist implementing ISO 14971 throughout product lifecycle. Provides risk analysis, risk evaluation, risk control, and post-production information analysis. Use when user mentions risk management, ISO 14971, risk analysis, FMEA, fault tree analysis, hazard identification, risk control, risk matrix, benefit-risk analysis, residual risk, risk acceptability, or post-market risk.","https:\u002F\u002Fgithub.com\u002Fafaizalam2003\u002FMaster-claude-skill\u002Fblob\u002Fmain\u002Fra-qm-team\u002Frisk-management-specialist\u002FSKILL.md",[],[109,110,111,112,113,114,115,116,90,28,117,118,119,120,121,122,123,124,125,126],"risk","risk management specialist","management","risk management","risk evaluation","product","Evaluation","lifecycle","risk matrix","iso","medical","iso 14971","identification","information","post-production","tree","matrix","implementing",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":33},"01M6KC3HF5ZFSSP2NZF68PEPFB","regulatory-affairs-head","Senior Regulatory Affairs Manager for HealthTech and MedTech companies. Prepares FDA 510(k), De Novo, and PMA submission packages; analyzes regulatory pathways for new medical devices; drafts responses to FDA deficiency letters and Notified Body queries; develops CE marking technical documentation under EU MDR 2017\u002F745; coordinates multi-market approval strategies across FDA, EU, Health Canada, PMDA, and NMPA; and maintains regulatory intelligence on evolving standards. Use when users need to plan or execute FDA submissions, navigate 510(k) or PMA approval processes, achieve CE marking, prepare pre-submission meeting materials, write regulatory strategy documents, respond to agency queries, or manage compliance documentation for medical device market access.","https:\u002F\u002Fgithub.com\u002Fafaizalam2003\u002FMaster-claude-skill\u002Fblob\u002Fmain\u002Fra-qm-team\u002Fregulatory-affairs-head\u002FSKILL.md",[],[134,135,136,137,138,139,140,141,142,28,143,144,145,146,147,148,149,150,151,101],"regulatory affairs head","regulatory","head","documents","devices","health","plan","write","strategy","standards","queries","manage","strategies","de","users","respond","medical devices","manager",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":164,"publishedAt":33},"01M6KC34Z8M1559EY1CXYBJB1A","quality-manager-qms-iso13485","ISO 13485 Quality Management System implementation and maintenance for medical device organizations. Provides QMS design, documentation control, internal auditing, CAPA management, and certification support. Use when working with medical device quality systems, preparing for ISO 13485 audits, managing regulatory compliance documentation, setting up corrective actions, or building audit preparation programs. Useful for quality management, audit preparation, regulatory compliance, medical device documentation, and corrective action workflows.","https:\u002F\u002Fgithub.com\u002Fafaizalam2003\u002FMaster-claude-skill\u002Fblob\u002Fmain\u002Fra-qm-team\u002Fquality-manager-qms-iso13485\u002FSKILL.md",[158,161],{"categoryNo":159,"categoryName":160,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":162,"categoryName":163,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000032","设计师",[165,166,151,167,168,169,170,171,172,28,173,174,175,176,177,178,179,180,101,181],"quality manager qms iso13485","quality","design","workflows","validation","actions","certification","system","maintenance","document","systems","records","ISO 13485","organizations","corrective action","internal audit","preparation",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":189,"publishedAt":33},"01M6KC2FXHBHXYX2ZZ17Y3GDB4","quality-manager-qmr","Senior Quality Manager Responsible Person (QMR) for HealthTech and MedTech companies. Provides quality system governance, management review leadership, regulatory compliance oversight, and quality performance monitoring per ISO 13485 Clause 5.5.2.","https:\u002F\u002Fgithub.com\u002Fafaizalam2003\u002FMaster-claude-skill\u002Fblob\u002Fmain\u002Fra-qm-team\u002Fquality-manager-qmr\u002FSKILL.md",[188],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},[190,166,151,191,192,193,194,195,83,196,172,197,135,198,199,200,118,177,101,201],"quality manager qmr","review","policy","performance","governance","monitoring","regulatory compliance","oversight","cost","culture","leadership","person",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":206,"categories":207,"keywords":215,"publishedAt":33},"01M6KC1VRR5JTDBNZANHPS6VR6","quality-documentation-manager","Document control system management for medical device QMS. Covers document numbering, version control, change management, and 21 CFR Part 11 compliance. Use for document control procedures, change control workflow, document numbering, version management, electronic signature compliance, or regulatory documentation review.","https:\u002F\u002Fgithub.com\u002Fafaizalam2003\u002FMaster-claude-skill\u002Fblob\u002Fmain\u002Fra-qm-team\u002Fquality-documentation-manager\u002FSKILL.md",[208,211,214],{"categoryNo":209,"categoryName":210,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":212,"categoryName":213,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},[216,217,166,151,191,218,219,87,172,220,221,222,223,224,119,225,226,227,228,101],"documentation","quality documentation manager","workflow","change","change management","list","master","system management","documentation review","cfr","21 cfr part 11","change control","retention"]