[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D9F2CPHS97WC4MGF5ZTCHF":3,"skill-same:01M6D9F2CPHS97WC4MGF5ZTCHF":62},{"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},"01M6D9F2CPHS97WC4MGF5ZTCHF","testrail",null,"Sync tests with TestRail. Use when user mentions \"testrail\", \"test management\", \"test cases\", \"test run\", \"sync test cases\", \"push results to testrail\", or \"import from testrail\".","oabdelmaksoud\u002FAgention","oabdelmaksoud","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F50699149?v=4","01M6D5CVVN778ZCDP1WHS816SP","Omar Abdelmaksoud","01M6D8A4TE76V3DCSH3D94VG1V",2,"MIT","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-import\u002Fclaude-skills\u002Freferences\u002Fengineering-team\u002Fplaywright-pro\u002Fskills\u002Ftestrail\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33],"test","sync","run","push","test run","results","management","user","use","tests","2026-11-10 10:12:30",false,"---\nname: testrail\ndescription: >-\n  Sync tests with TestRail. Use when user mentions \"testrail\", \"test management\",\n  \"test cases\", \"test run\", \"sync test cases\", \"push results to testrail\",\n  or \"import from testrail\".\n---\n\n# TestRail Integration\n\nBidirectional sync between Playwright tests and TestRail test management.\n\n## Prerequisites\n\nEnvironment variables must be set:\n- `TESTRAIL_URL` — e.g., `https:\u002F\u002Fyour-instance.testrail.io`\n- `TESTRAIL_USER` — your email\n- `TESTRAIL_API_KEY` — API key from TestRail\n\nIf not set, inform the user how to configure them and stop.\n\n## Capabilities\n\n### 1. Import Test Cases → Generate Playwright Tests\n\n```\n\u002Fpw:testrail import --project \u003Cid> --suite \u003Cid>\n```\n\nSteps:\n1. Call `testrail_get_cases` MCP tool to fetch test cases\n2. For each test case:\n   - Read title, preconditions, steps, expected results\n   - Map to a Playwright test using appropriate template\n   - Include TestRail case ID as test annotation: `test.info().annotations.push({ type: 'testrail', description: 'C12345' })`\n3. Generate test files grouped by section\n4. Report: X cases imported, Y tests generated\n\n### 2. Push Test Results → TestRail\n\n```\n\u002Fpw:testrail push --run \u003Cid>\n```\n\nSteps:\n1. Run Playwright tests with JSON reporter:\n   ```bash\n   npx playwright test --reporter=json > test-results.json\n   ```\n2. Parse results: map each test to its TestRail case ID (from annotations)\n3. Call `testrail_add_result` MCP tool for each test:\n   - Pass → status_id: 1\n   - Fail → status_id: 5, include error message\n   - Skip → status_id: 2\n4. Report: X results pushed, Y passed, Z failed\n\n### 3. Create Test Run\n\n```\n\u002Fpw:testrail run --project \u003Cid> --name \"Sprint 42 Regression\"\n```\n\nSteps:\n1. Call `testrail_add_run` MCP tool\n2. Include all test case IDs found in Playwright test annotations\n3. Return run ID for result pushing\n\n### 4. Sync Status\n\n```\n\u002Fpw:testrail status --project \u003Cid>\n```\n\nSteps:\n1. Fetch test cases from TestRail\n2. Scan local Playwright tests for TestRail annotations\n3. Report coverage:\n   ```\n   TestRail cases: 150\n   Playwright tests with TestRail IDs: 120\n   Unlinked TestRail cases: 30\n   Playwright tests without TestRail IDs: 15\n   ```\n\n### 5. Update Test Cases in TestRail\n\n```\n\u002Fpw:testrail update --case \u003Cid>\n```\n\nSteps:\n1. Read the Playwright test for this case ID\n2. Extract steps and expected results from test code\n3. Call `testrail_update_case` MCP tool to update steps\n\n## MCP Tools Used\n\n| Tool | When |\n|---|---|\n| `testrail_get_projects` | List available projects |\n| `testrail_get_suites` | List suites in project |\n| `testrail_get_cases` | Read test cases |\n| `testrail_add_case` | Create new test case |\n| `testrail_update_case` | Update existing case |\n| `testrail_add_run` | Create test run |\n| `testrail_add_result` | Push individual result |\n| `testrail_get_results` | Read historical results |\n\n## Test Annotation Format\n\nAll Playwright tests linked to TestRail include:\n\n```typescript\ntest('should login successfully', async ({ page }) => {\n  test.info().annotations.push({\n    type: 'testrail',\n    description: 'C12345',\n  });\n  \u002F\u002F ... test code\n});\n```\n\nThis annotation is the bridge between Playwright and TestRail.\n\n## Output\n\n- Operation summary with counts\n- Any errors or unmatched cases\n- Link to TestRail run\u002Fresults\n","# TestRail Integration\n\nBidirectional sync between Playwright tests and TestRail test management.\n\n## Prerequisites\n\nEnvironment variables must be set:\n- `TESTRAIL_URL` — e.g., `https:\u002F\u002Fyour-instance.testrail.io`\n- `TESTRAIL_USER` — your email\n- `TESTRAIL_API_KEY` — API key from TestRail\n\nIf not set, inform the user how to configure them and stop.\n\n## Capabilities\n\n### 1. Import Test Cases → Generate Playwright Tests\n\n```\n\u002Fpw:testrail import --project \u003Cid> --suite \u003Cid>\n```\n\nSteps:\n1. Call `testrail_get_cases` MCP tool to fetch test cases\n2. For each test case:\n   - Read title, preconditions, steps, expected results\n   - Map to a Playwright test using appropriate template\n   - Include TestRail case ID as test annotation: `test.info().annotations.push({ type: 'testrail', description: 'C12345' })`\n3. Generate test files grouped by section\n4. Report: X cases imported, Y tests generated\n\n### 2. Push Test Results → TestRail\n\n```\n\u002Fpw:testrail push --run \u003Cid>\n```\n\nSteps:\n1. Run Playwright tests with JSON reporter:\n   ```bash\n   npx playwright test --reporter=json > test-results.json\n   ```\n2. Parse results: map each test to its TestRail case ID (from annotations)\n3. Call `testrail_add_result` MCP tool for each test:\n   - Pass → status_id: 1\n   - Fail → status_id: 5, include error message\n   - Skip → status_id: 2\n4. Report: X results pushed, Y passed, Z failed\n\n### 3. Create Test Run\n\n```\n\u002Fpw:testrail run --project \u003Cid> --name \"Sprint 42 Regression\"\n```\n\nSteps:\n1. Call `testrail_add_run` MCP tool\n2. Include all test case IDs found in Playwright test annotations\n3. Return run ID for result pushing\n\n### 4. Sync Status\n\n```\n\u002Fpw:testrail status --project \u003Cid>\n```\n\nSteps:\n1. Fetch test cases from TestRail\n2. Scan local Playwright tests for TestRail annotations\n3. Report coverage:\n   ```\n   TestRail cases: 150\n   Playwright tests with TestRail IDs: 120\n   Unlinked TestRail cases: 30\n   Playwright tests without TestRail IDs: 15\n   ```\n\n### 5. Update Test Cases in TestRail\n\n```\n\u002Fpw:testrail update --case \u003Cid>\n```\n\nSteps:\n1. Read the Playwright test for this case ID\n2. Extract steps and expected results from test code\n3. Call `testrail_update_case` MCP tool to update steps\n\n## MCP Tools Used\n\n| Tool | When |\n|---|---|\n| `testrail_get_projects` | List available projects |\n| `testrail_get_suites` | List suites in project |\n| `testrail_get_cases` | Read test cases |\n| `testrail_add_case` | Create new test case |\n| `testrail_update_case` | Update existing case |\n| `testrail_add_run` | Create test run |\n| `testrail_add_result` | Push individual result |\n| `testrail_get_results` | Read historical results |\n\n## Test Annotation Format\n\nAll Playwright tests linked to TestRail include:\n\n```typescript\ntest('should login successfully', async ({ page }) => {\n  test.info().annotations.push({\n    type: 'testrail',\n    description: 'C12345',\n  });\n  \u002F\u002F ... test code\n});\n```\n\nThis annotation is the bridge between Playwright and TestRail.\n\n## Output\n\n- Operation summary with counts\n- Any errors or unmatched cases\n- Link to TestRail run\u002Fresults\n",{"name":5,"description":7},"main","a318f48de3c5718e8ea2e9f6fae7790e8a759e85","upstream-import\u002Fclaude-skills\u002Freferences\u002Fengineering-team\u002Fplaywright-pro\u002Fskills\u002Ftestrail",0,"https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fo-abdelmaksoud\u002F","Full-Stack Engineer | AI Systems Architect | Building autonomous multi-agent systems","2026-03-08 21:23:03",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add oabdelmaksoud\u002FAgention --skill testrail",{"tool":54,"command":55},"bunx","bunx skills add oabdelmaksoud\u002FAgention --skill testrail",{"tool":57,"command":58},"pnpm","pnpm dlx skills add oabdelmaksoud\u002FAgention --skill testrail","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-import\u002Fclaude-skills\u002Freferences\u002Fengineering-team\u002Fplaywright-pro\u002Fskills\u002Ftestrail\u002FSKILL.md",true,[],[63,85,99,127,152,172],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":72,"publishedAt":34},"01M6G2QFCBNBYAJF2KTK85G9A6","visa-doc-translate","Translate visa application documents (images) to English and create a bilingual PDF with original and translation","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fvisa-doc-translate\u002FSKILL.md",[69],{"categoryNo":70,"categoryName":71,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",[73,74,75,76,77,78,79,80,81,82,83,84],"translate","doc","visa doc translate","bilingual","with","english","application","PDF","translation","documents","create","images",{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":34},"01M6G2QB09TSK6BY4ME5X20EVQ","verification-loop","A comprehensive verification system for Claude Code sessions.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fverification-loop\u002FSKILL.md",[],[92,93,94,95,96,97,98],"verification","loop","verification loop","sessions","code","claude code sessions","system",{"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":114,"publishedAt":34},"01M6G2Q6V2F7G03VAAF27FXPJR","tdd-workflow","Use this skill when writing new features, fixing bugs, or refactoring code. Enforces test-driven development with 80%+ coverage including unit, integration, and E2E tests.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Ftdd-workflow\u002FSKILL.md",[105,106,109],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":107,"categoryName":108,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[115,116,117,32,118,119,120,121,122,96,123,124,33,125,77,24,126],"workflow","tdd","tdd workflow","unit","coverage","refactoring","e2e","integration","development","e2e tests","driven","writing",{"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":34},"01M6G2Q359YJRWAR2PFCEQAXF3","swiftui-patterns","SwiftUI architecture patterns, state management with @Observable, view composition, navigation, performance optimization, and modern iOS\u002FmacOS UI best practices.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fswiftui-patterns\u002FSKILL.md",[],[134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,30,150,151,77],"patterns","swiftui","swiftui patterns","architecture","macos","performance","state management","best practices","state","ui","Optimization","ios","architecture patterns","Composition","performance optimization","view","swiftui architecture","navigation",{"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":159,"publishedAt":34},"01M6G2PY8B2FWZTWPZ84H83Y7C","swift-protocol-di-testing","Protocol-based dependency injection for testable Swift code — mock file system, network, and external APIs using focused protocols and Swift Testing.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fswift-protocol-di-testing\u002FSKILL.md",[158],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[160,161,162,163,96,164,165,166,167,98,168,169,170,171],"swift protocol di testing","protocol","swift","testing","protocols","file","network","injection","dependency","swift testing","dependency injection","mock",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":178,"publishedAt":34},"01M6G2PSCN2GXV9FFZDRRRWVB6","swift-concurrency-6-2","Swift 6.2 Approachable Concurrency — single-threaded by default, @concurrent for explicit background offloading, isolated conformances for main actor types.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FAgention\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fswift-concurrency-6-2\u002FSKILL.md",[],[179,180,181,162,182,39,183],"concurrency","swift concurrency","swift concurrency 6 2","default","types"]