[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CPV7JM1BVK42CSKVX1Z39F":3,"skill-same:01M6CPV7JM1BVK42CSKVX1Z39F":83},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":31,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":60,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M6CPV7JM1BVK42CSKVX1Z39F","openai-playwright",null,"Use when the task requires automating a real browser from the terminal (navigation, form filling, snapshots, screenshots, data extraction, UI-flow debugging) via `playwright-cli` or the bundled wrapper script. (Imported from openai upstream skills)","khalidsaidi\u002Fskillrunner","khalidsaidi","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4368721?v=4","01M6CPK1G2TKAWA8BSNSANBNWJ","Khalid Saidi","01M6CPK1M7RGKV85142PWBEJ54",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkhalidsaidi\u002Fskillrunner\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fopenai-playwright\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"openai playwright","playwright","openai","data","imported","upstream","real browser","main","task","snapshots","use","knowledge","cli","flow","ui","https","browser","debugging","github","terminal","2026-11-10 10:12:30",false,"---\nname: openai-playwright\ndescription: \"Use when the task requires automating a real browser from the terminal (navigation, form filling, snapshots, screenshots, data extraction, UI-flow debugging) via `playwright-cli` or the bundled wrapper script. (Imported from openai upstream skills)\"\nversion: \"1.0.0\"\ntags: [\"openai\", \"upstream\", \"imported\"]\nkind: knowledge\nrisk: low\navailability: advanced\ndocs:\n  source: \"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills\u002Ftree\u002Fmain\u002Fskills\u002F.curated\u002Fplaywright\"\n---\n\n# openai-playwright\n\nImported upstream skill.\n\n- Provider source: https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills\u002Ftree\u002Fmain\u002Fskills\u002F.curated\u002Fplaywright\n- Original skill name: playwright\n\n## Upstream Content\n\n# Playwright CLI Skill\n\nDrive a real browser from the terminal using `playwright-cli`. Prefer the bundled wrapper script so the CLI works even when it is not globally installed.\nTreat this skill as CLI-first automation. Do not pivot to `@playwright\u002Ftest` unless the user explicitly asks for test files.\n\n## Prerequisite check (required)\n\nBefore proposing commands, check whether `npx` is available (the wrapper depends on it):\n\n```bash\ncommand -v npx >\u002Fdev\u002Fnull 2>&1\n```\n\nIf it is not available, pause and ask the user to install Node.js\u002Fnpm (which provides `npx`). Provide these steps verbatim:\n\n```bash\n# Verify Node\u002Fnpm are installed\nnode --version\nnpm --version\n\n# If missing, install Node.js\u002Fnpm, then:\nnpm install -g @playwright\u002Fcli@latest\nplaywright-cli --help\n```\n\nOnce `npx` is present, proceed with the wrapper script. A global install of `playwright-cli` is optional.\n\n## Skill path (set once)\n\n```bash\nexport CODEX_HOME=\"${CODEX_HOME:-$HOME\u002F.codex}\"\nexport PWCLI=\"$CODEX_HOME\u002Fskills\u002Fplaywright\u002Fscripts\u002Fplaywright_cli.sh\"\n```\n\nUser-scoped skills install under `$CODEX_HOME\u002Fskills` (default: `~\u002F.codex\u002Fskills`).\n\n## Quick start\n\nUse the wrapper script:\n\n```bash\n\"$PWCLI\" open https:\u002F\u002Fplaywright.dev --headed\n\"$PWCLI\" snapshot\n\"$PWCLI\" click e15\n\"$PWCLI\" type \"Playwright\"\n\"$PWCLI\" press Enter\n\"$PWCLI\" screenshot\n```\n\nIf the user prefers a global install, this is also valid:\n\n```bash\nnpm install -g @playwright\u002Fcli@latest\nplaywright-cli --help\n```\n\n## Core workflow\n\n1. Open the page.\n2. Snapshot to get stable element refs.\n3. Interact using refs from the latest snapshot.\n4. Re-snapshot after navigation or significant DOM changes.\n5. Capture artifacts (screenshot, pdf, traces) when useful.\n\nMinimal loop:\n\n```bash\n\"$PWCLI\" open https:\u002F\u002Fexample.com\n\"$PWCLI\" snapshot\n\"$PWCLI\" click e3\n\"$PWCLI\" snapshot\n```\n\n## When to snapshot again\n\nSnapshot again after:\n\n- navigation\n- clicking elements that change the UI substantially\n- opening\u002Fclosing modals or menus\n- tab switches\n\nRefs can go stale. When a command fails due to a missing ref, snapshot again.\n\n## Recommended patterns\n\n### Form fill and submit\n\n```bash\n\"$PWCLI\" open https:\u002F\u002Fexample.com\u002Fform\n\"$PWCLI\" snapshot\n\"$PWCLI\" fill e1 \"user@example.com\"\n\"$PWCLI\" fill e2 \"password123\"\n\"$PWCLI\" click e3\n\"$PWCLI\" snapshot\n```\n\n### Debug a UI flow with traces\n\n```bash\n\"$PWCLI\" open https:\u002F\u002Fexample.com --headed\n\"$PWCLI\" tracing-start\n# ...interactions...\n\"$PWCLI\" tracing-stop\n```\n\n### Multi-tab work\n\n```bash\n\"$PWCLI\" tab-new https:\u002F\u002Fexample.com\n\"$PWCLI\" tab-list\n\"$PWCLI\" tab-select 0\n\"$PWCLI\" snapshot\n```\n\n## Wrapper script\n\nThe wrapper script uses `npx --package @playwright\u002Fcli playwright-cli` so the CLI can run without a global install:\n\n```bash\n\"$PWCLI\" --help\n```\n\nPrefer the wrapper unless the repository already standardizes on a global install.\n\n## References\n\nOpen only what you need:\n\n- CLI command reference: `references\u002Fcli.md`\n- Practical workflows and troubleshooting: `references\u002Fworkflows.md`\n\n## Guardrails\n\n- Always snapshot before referencing element ids like `e12`.\n- Re-snapshot when refs seem stale.\n- Prefer explicit commands over `eval` and `run-code` unless needed.\n- When you do not have a fresh snapshot, use placeholder refs like `eX` and say why; do not bypass refs with `run-code`.\n- Use `--headed` when a visual check will help.\n- When capturing artifacts in this repo, use `output\u002Fplaywright\u002F` and avoid introducing new top-level artifact folders.\n- Default to CLI commands and workflows, not Playwright test specs.\n","# openai-playwright\n\nImported upstream skill.\n\n- Provider source: https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills\u002Ftree\u002Fmain\u002Fskills\u002F.curated\u002Fplaywright\n- Original skill name: playwright\n\n## Upstream Content\n\n# Playwright CLI Skill\n\nDrive a real browser from the terminal using `playwright-cli`. Prefer the bundled wrapper script so the CLI works even when it is not globally installed.\nTreat this skill as CLI-first automation. Do not pivot to `@playwright\u002Ftest` unless the user explicitly asks for test files.\n\n## Prerequisite check (required)\n\nBefore proposing commands, check whether `npx` is available (the wrapper depends on it):\n\n```bash\ncommand -v npx >\u002Fdev\u002Fnull 2>&1\n```\n\nIf it is not available, pause and ask the user to install Node.js\u002Fnpm (which provides `npx`). Provide these steps verbatim:\n\n```bash\n# Verify Node\u002Fnpm are installed\nnode --version\nnpm --version\n\n# If missing, install Node.js\u002Fnpm, then:\nnpm install -g @playwright\u002Fcli@latest\nplaywright-cli --help\n```\n\nOnce `npx` is present, proceed with the wrapper script. A global install of `playwright-cli` is optional.\n\n## Skill path (set once)\n\n```bash\nexport CODEX_HOME=\"${CODEX_HOME:-$HOME\u002F.codex}\"\nexport PWCLI=\"$CODEX_HOME\u002Fskills\u002Fplaywright\u002Fscripts\u002Fplaywright_cli.sh\"\n```\n\nUser-scoped skills install under `$CODEX_HOME\u002Fskills` (default: `~\u002F.codex\u002Fskills`).\n\n## Quick start\n\nUse the wrapper script:\n\n```bash\n\"$PWCLI\" open https:\u002F\u002Fplaywright.dev --headed\n\"$PWCLI\" snapshot\n\"$PWCLI\" click e15\n\"$PWCLI\" type \"Playwright\"\n\"$PWCLI\" press Enter\n\"$PWCLI\" screenshot\n```\n\nIf the user prefers a global install, this is also valid:\n\n```bash\nnpm install -g @playwright\u002Fcli@latest\nplaywright-cli --help\n```\n\n## Core workflow\n\n1. Open the page.\n2. Snapshot to get stable element refs.\n3. Interact using refs from the latest snapshot.\n4. Re-snapshot after navigation or significant DOM changes.\n5. Capture artifacts (screenshot, pdf, traces) when useful.\n\nMinimal loop:\n\n```bash\n\"$PWCLI\" open https:\u002F\u002Fexample.com\n\"$PWCLI\" snapshot\n\"$PWCLI\" click e3\n\"$PWCLI\" snapshot\n```\n\n## When to snapshot again\n\nSnapshot again after:\n\n- navigation\n- clicking elements that change the UI substantially\n- opening\u002Fclosing modals or menus\n- tab switches\n\nRefs can go stale. When a command fails due to a missing ref, snapshot again.\n\n## Recommended patterns\n\n### Form fill and submit\n\n```bash\n\"$PWCLI\" open https:\u002F\u002Fexample.com\u002Fform\n\"$PWCLI\" snapshot\n\"$PWCLI\" fill e1 \"user@example.com\"\n\"$PWCLI\" fill e2 \"password123\"\n\"$PWCLI\" click e3\n\"$PWCLI\" snapshot\n```\n\n### Debug a UI flow with traces\n\n```bash\n\"$PWCLI\" open https:\u002F\u002Fexample.com --headed\n\"$PWCLI\" tracing-start\n# ...interactions...\n\"$PWCLI\" tracing-stop\n```\n\n### Multi-tab work\n\n```bash\n\"$PWCLI\" tab-new https:\u002F\u002Fexample.com\n\"$PWCLI\" tab-list\n\"$PWCLI\" tab-select 0\n\"$PWCLI\" snapshot\n```\n\n## Wrapper script\n\nThe wrapper script uses `npx --package @playwright\u002Fcli playwright-cli` so the CLI can run without a global install:\n\n```bash\n\"$PWCLI\" --help\n```\n\nPrefer the wrapper unless the repository already standardizes on a global install.\n\n## References\n\nOpen only what you need:\n\n- CLI command reference: `references\u002Fcli.md`\n- Practical workflows and troubleshooting: `references\u002Fworkflows.md`\n\n## Guardrails\n\n- Always snapshot before referencing element ids like `e12`.\n- Re-snapshot when refs seem stale.\n- Prefer explicit commands over `eval` and `run-code` unless needed.\n- When you do not have a fresh snapshot, use placeholder refs like `eX` and say why; do not bypass refs with `run-code`.\n- Use `--headed` when a visual check will help.\n- When capturing artifacts in this repo, use `output\u002Fplaywright\u002F` and avoid introducing new top-level artifact folders.\n- Default to CLI commands and workflows, not Playwright test specs.\n",{"docs":49,"kind":35,"name":5,"risk":51,"tags":52,"version":53,"description":7,"availability":54},{"source":50},"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills\u002Ftree\u002Fmain\u002Fskills\u002F.curated\u002Fplaywright","low",[26,29,28],"1.0.0","advanced","c4da92076cba308457cd72bd1ab06c087e2cdf96","registry\u002Fskills\u002Fopenai-playwright",0,"https:\u002F\u002Fgithub.com\u002Fkhalidsaidi\u002Fskillrunner","https:\u002F\u002Fgithub.com\u002Fkhalidsaidi","https:\u002F\u002Fkhalidsaidi.com","Software engineer. Maintainer of SourceMint (SRCMNT), an open-source fixed-supply ERC-20 and Foundry tooling on Base.","2026-11-07 02:40:24",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add khalidsaidi\u002Fskillrunner --skill openai-playwright",{"tool":69,"command":70},"bunx","bunx skills add khalidsaidi\u002Fskillrunner --skill openai-playwright",{"tool":72,"command":73},"pnpm","pnpm dlx skills add khalidsaidi\u002Fskillrunner --skill openai-playwright","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkhalidsaidi\u002Fskillrunner\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fopenai-playwright\u002FSKILL.md",true,[77],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"example.html","REFERENCE","参考文档",9879,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FEmail-Marketing\u002Fopen-design-email-marketing\u002Fexample.html",[84,99,107,126,135,153],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":44},"01M6CPY1N6W58XKWMN4356E8GF","yeet","Use only when the user explicitly asks to stage, commit, push, and open a GitHub pull request in one flow using the GitHub CLI (`gh`).","https:\u002F\u002Fgithub.com\u002Fkhalidsaidi\u002Fskillrunner\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fopenai-yeet\u002Fupstream\u002FSKILL.md",[],[86,91,36,34,92,93,94,37,95,96,97,98,42],"only","user","gh","open","push","pull","pull request","commit",{"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":44},"01M6CPXZ5RN2ZB5A4Y65RE5Y5J","openai-yeet","Use only when the user explicitly asks to stage, commit, push, and open a GitHub pull request in one flow using the GitHub CLI (`gh`). (Imported from openai upstream skills)","https:\u002F\u002Fgithub.com\u002Fkhalidsaidi\u002Fskillrunner\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fopenai-yeet\u002FSKILL.md",[],[86,26,106,95,96,97,98,42,36,39,28,29,31,91,34,92,93,35,94,37],"openai yeet",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":116,"publishedAt":44},"01M6CPXWGRW59XN1V109G172CV","vercel-deploy","Deploy applications and websites to Vercel. Use when the user requests deployment actions like \"deploy my app\", \"deploy and give me the link\", \"push this live\", or \"create a preview deployment\".","https:\u002F\u002Fgithub.com\u002Fkhalidsaidi\u002Fskillrunner\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fopenai-vercel-deploy\u002Fupstream\u002FSKILL.md",[113],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",[117,118,119,95,34,120,121,122,123,92,124,125],"vercel","vercel deploy","deploy","actions","applications","me","preview deployment","deployment","create",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":133,"publishedAt":44},"01M6CPXSZSZRPQ5TY73K5QWN1B","openai-vercel-deploy","Deploy applications and websites to Vercel. Use when the user requests deployment actions like \"deploy my app\", \"deploy and give me the link\", \"push this live\", or \"create a preview deployment\". (Imported from openai upstream skills)","https:\u002F\u002Fgithub.com\u002Fkhalidsaidi\u002Fskillrunner\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fopenai-vercel-deploy\u002FSKILL.md",[132],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},[119,26,118,117,134,120,28,29,122,31,123,34,92,35,121,39,95,125,124,42],"openai vercel deploy",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":144,"publishedAt":44},"01M6CPXQ4SRTZZZ0VTD7WZP0RN","transcribe","Transcribe audio files to text with optional diarization and known-speaker hints. Use when a user asks to transcribe speech from audio\u002Fvideo, extract text from recordings, or label speakers in interviews or meetings.","https:\u002F\u002Fgithub.com\u002Fkhalidsaidi\u002Fskillrunner\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fopenai-transcribe\u002Fupstream\u002FSKILL.md",[141],{"categoryNo":142,"categoryName":143,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[137,92,145,146,147,148,149,150,151,34,152],"text","Audio","Video","speech","extract","files","recordings","meetings",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":160,"publishedAt":44},"01M6CPXMG2SCTAA04EB3PDRRXN","openai-transcribe","Transcribe audio files to text with optional diarization and known-speaker hints. Use when a user asks to transcribe speech from audio\u002Fvideo, extract text from recordings, or label speakers in interviews or meetings. (Imported from openai upstream skills)","https:\u002F\u002Fgithub.com\u002Fkhalidsaidi\u002Fskillrunner\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fopenai-transcribe\u002FSKILL.md",[159],{"categoryNo":142,"categoryName":143,"taxonomyType":21,"taxonomyTypeDesc":22},[26,161,137,42,34,28,29,31,150,151,152,149,92,145,35,146,147,39,148],"openai transcribe"]