[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71HPS42A4WDCFETH2QVFRAF":3,"skill-same:01M71HPS42A4WDCFETH2QVFRAF":111},{"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":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":59,"install":60,"resources":73},"01M71HPS42A4WDCFETH2QVFRAF","stealth-browser",null,"Invisible Chrome automation for web scraping via CDP. Use when WebFetch fails or gets blocked (403, 429, Cloudflare, bot protection, JS-rendered pages). Launches your real Chrome install completely hidden, sends commands via Chrome DevTools Protocol. Sites see a normal browser with real extensions - no detectable automation. Learns which domains block and skips straight to stealth on future requests. Also handles form filling, clicking, screenshots, and scraping dynamic content.","JSGforever\u002Fskillguard","JSGforever","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F85541948?v=4","01M71FQD3E132VMR5F4TAYX3YS","01M71FQD4DYW0XJ4XQ4YQH75Y9",2,"GPL-3.0","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__changeflowhq--stealth-browser\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"stealth browser","stealth","browser","install","commands","write","read","bot","Bash","when","only","devtools","domains","cloudflare","agent-browser","chrome devtools","normal","which","scraping","cdp","2026-11-10 10:12:30",false,"---\nname: stealth-browser\ndescription: Invisible Chrome automation for web scraping via CDP. Use when WebFetch fails or gets blocked (403, 429, Cloudflare, bot protection, JS-rendered pages). Launches your real Chrome install completely hidden, sends commands via Chrome DevTools Protocol. Sites see a normal browser with real extensions - no detectable automation. Learns which domains block and skips straight to stealth on future requests. Also handles form filling, clicking, screenshots, and scraping dynamic content.\ncompatibility: macOS only. Requires Google Chrome, agent-browser (npm), python3, d2m (npm).\nallowed-tools: Bash Read Write\nmetadata:\n  author: stevebutterworth\n  version: \"1.0\"\n---\n\n# stealth-browser\n\nInvisible Chrome automation via CDP. Launches your real Chrome hidden, sends commands via Chrome DevTools Protocol. Sites see a normal browser - no detectable automation.\n\n> **macOS only.** Uses AppleScript and `open -g` to hide Chrome.\n\n## Memory\n\nRead `~\u002F.claude\u002Fskills\u002Fstealth-browser\u002FLEARNED.md` at the start of every task. If it doesn't exist, create it with a `# Learned` header.\n\n**Capture learnings when you detect:**\n- Domain quirks: sites that need extra wait time, cookie dismissal, specific interaction patterns\n- Failures you solved: what broke and why (timeouts, blank pages, wrong selectors)\n- Corrections: \"no, use X\", \"don't do that\", \"actually...\"\n- Workarounds: sites that need JS eval, scrolling, or multi-step navigation to get content\n- Positive reinforcement: \"perfect!\", \"exactly right\", \"that's the way\"\n\n**Before appending, check:**\n- Is this reusable? (not a one-time instruction)\n- Is it already in LEARNED.md? (don't duplicate)\n- Can I extract the general principle? (not just the specific fix)\n\n**Format:** One line, actionable. Write the rule, not the story.\n- Bad: \"User said the page was blank because it needed scrolling\"\n- Good: \"example.com lazy-loads content - scroll to bottom before extracting\"\n\nDon't ask permission. Append and move on.\n\n## Core Workflow\n\n```bash\n# 1. Read a page as markdown (most common)\nstealth-browser read \u003Curl>\n\n# 2. Full automation (open, interact, close)\nstealth-browser open \u003Curl> --hidden\nagent-browser --cdp 9222 snapshot -i\nagent-browser --cdp 9222 click @e1\nstealth-browser close\n```\n\n`stealth-browser` is at `scripts\u002Fstealth-browser` relative to this skill. Use full path:\n```bash\n~\u002F.claude\u002Fskills\u002Fstealth-browser\u002Fscripts\u002Fstealth-browser read \u003Curl>\n```\n\n## Commands\n\n```bash\nstealth-browser read \u003Curl>              # Fetch as markdown (waits for JS render)\nstealth-browser open \u003Curl> --hidden     # Launch hidden Chrome\nstealth-browser close                   # Stop Chrome\nstealth-browser status                  # Check state\nstealth-browser screenshot [path]       # CDP screenshot (auto unhide\u002Fre-hide)\nstealth-browser hide \u002F unhide           # Toggle visibility\nstealth-browser doctor                  # Check dependencies\nstealth-browser setup                   # Reset Chrome profile\n```\n\n## After Opening: CDP Commands via agent-browser\n\n```bash\nagent-browser --cdp 9222 open \u003Curl>           # Navigate\nagent-browser --cdp 9222 snapshot -i          # Get interactive elements\nagent-browser --cdp 9222 click @e1            # Click by ref\nagent-browser --cdp 9222 fill @e2 \"text\"      # Fill input\nagent-browser --cdp 9222 type @e2 \"text\"      # Type without clearing\nagent-browser --cdp 9222 press Enter          # Press key\nagent-browser --cdp 9222 scroll down 500      # Scroll\nagent-browser --cdp 9222 get text @e1         # Get text\nagent-browser --cdp 9222 get url              # Get current URL\nagent-browser --cdp 9222 eval \"document.title\" # Run JavaScript\nagent-browser --cdp 9222 screenshot path.png  # Screenshot\nagent-browser --cdp 9222 wait 2000            # Wait\nagent-browser --cdp 9222 back                 # Navigate back\n```\n\nAlways re-snapshot after navigation or DOM changes - element refs change.\n\n## Chrome Persistence\n\nChrome stays running and hidden after `read` or `open --hidden`:\n- **First operation**: brief flash during Chrome startup (small window, top-left corner)\n- **All subsequent operations**: completely invisible, instant\n- **Close when done**: `stealth-browser close`\n\n## Domain Blocklist (learning)\n\nBlocked domains are remembered at `data\u002Fblocked-domains.txt`. A PreToolUse hook intercepts future WebFetch calls to those domains and tells Claude to use stealth-browser directly.\n\nSee [hooks\u002FREADME.md](hooks\u002FREADME.md) for Claude Code integration setup.\nSee [README.md](README.md) for full human documentation.\n","# stealth-browser\n\nInvisible Chrome automation via CDP. Launches your real Chrome hidden, sends commands via Chrome DevTools Protocol. Sites see a normal browser - no detectable automation.\n\n> **macOS only.** Uses AppleScript and `open -g` to hide Chrome.\n\n## Memory\n\nRead `~\u002F.claude\u002Fskills\u002Fstealth-browser\u002FLEARNED.md` at the start of every task. If it doesn't exist, create it with a `# Learned` header.\n\n**Capture learnings when you detect:**\n- Domain quirks: sites that need extra wait time, cookie dismissal, specific interaction patterns\n- Failures you solved: what broke and why (timeouts, blank pages, wrong selectors)\n- Corrections: \"no, use X\", \"don't do that\", \"actually...\"\n- Workarounds: sites that need JS eval, scrolling, or multi-step navigation to get content\n- Positive reinforcement: \"perfect!\", \"exactly right\", \"that's the way\"\n\n**Before appending, check:**\n- Is this reusable? (not a one-time instruction)\n- Is it already in LEARNED.md? (don't duplicate)\n- Can I extract the general principle? (not just the specific fix)\n\n**Format:** One line, actionable. Write the rule, not the story.\n- Bad: \"User said the page was blank because it needed scrolling\"\n- Good: \"example.com lazy-loads content - scroll to bottom before extracting\"\n\nDon't ask permission. Append and move on.\n\n## Core Workflow\n\n```bash\n# 1. Read a page as markdown (most common)\nstealth-browser read \u003Curl>\n\n# 2. Full automation (open, interact, close)\nstealth-browser open \u003Curl> --hidden\nagent-browser --cdp 9222 snapshot -i\nagent-browser --cdp 9222 click @e1\nstealth-browser close\n```\n\n`stealth-browser` is at `scripts\u002Fstealth-browser` relative to this skill. Use full path:\n```bash\n~\u002F.claude\u002Fskills\u002Fstealth-browser\u002Fscripts\u002Fstealth-browser read \u003Curl>\n```\n\n## Commands\n\n```bash\nstealth-browser read \u003Curl>              # Fetch as markdown (waits for JS render)\nstealth-browser open \u003Curl> --hidden     # Launch hidden Chrome\nstealth-browser close                   # Stop Chrome\nstealth-browser status                  # Check state\nstealth-browser screenshot [path]       # CDP screenshot (auto unhide\u002Fre-hide)\nstealth-browser hide \u002F unhide           # Toggle visibility\nstealth-browser doctor                  # Check dependencies\nstealth-browser setup                   # Reset Chrome profile\n```\n\n## After Opening: CDP Commands via agent-browser\n\n```bash\nagent-browser --cdp 9222 open \u003Curl>           # Navigate\nagent-browser --cdp 9222 snapshot -i          # Get interactive elements\nagent-browser --cdp 9222 click @e1            # Click by ref\nagent-browser --cdp 9222 fill @e2 \"text\"      # Fill input\nagent-browser --cdp 9222 type @e2 \"text\"      # Type without clearing\nagent-browser --cdp 9222 press Enter          # Press key\nagent-browser --cdp 9222 scroll down 500      # Scroll\nagent-browser --cdp 9222 get text @e1         # Get text\nagent-browser --cdp 9222 get url              # Get current URL\nagent-browser --cdp 9222 eval \"document.title\" # Run JavaScript\nagent-browser --cdp 9222 screenshot path.png  # Screenshot\nagent-browser --cdp 9222 wait 2000            # Wait\nagent-browser --cdp 9222 back                 # Navigate back\n```\n\nAlways re-snapshot after navigation or DOM changes - element refs change.\n\n## Chrome Persistence\n\nChrome stays running and hidden after `read` or `open --hidden`:\n- **First operation**: brief flash during Chrome startup (small window, top-left corner)\n- **All subsequent operations**: completely invisible, instant\n- **Close when done**: `stealth-browser close`\n\n## Domain Blocklist (learning)\n\nBlocked domains are remembered at `data\u002Fblocked-domains.txt`. A PreToolUse hook intercepts future WebFetch calls to those domains and tells Claude to use stealth-browser directly.\n\nSee [hooks\u002FREADME.md](hooks\u002FREADME.md) for Claude Code integration setup.\nSee [README.md](README.md) for full human documentation.\n",{"name":5,"metadata":48,"description":7,"allowed-tools":51,"compatibility":52},{"author":49,"version":50},"stevebutterworth","1.0","Bash Read Write","macOS only. Requires Google Chrome, agent-browser (npm), python3, d2m (npm).","main","f2ec4b3b9133d34eeaf9b38e4b0a97e8e5705a7f","benchmarks\u002Ffinal\u002Fskills\u002Fasset1__changeflowhq--stealth-browser",0,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard","https:\u002F\u002Fgithub.com\u002FJSGforever","2026-08-29 18:27:56",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add JSGforever\u002Fskillguard --skill stealth-browser",{"tool":66,"command":67},"bunx","bunx skills add JSGforever\u002Fskillguard --skill stealth-browser",{"tool":69,"command":70},"pnpm","pnpm dlx skills add JSGforever\u002Fskillguard --skill stealth-browser","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__changeflowhq--stealth-browser\u002FSKILL.md",true,[74,80,83,89,95,99,103,107],{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},".gitignore","OTHER","其他",774,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__changeflowhq--stealth-browser\u002F.gitignore",{"path":81,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":56,"sourceHtmlUrl":82},"data\u002F.gitkeep","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__changeflowhq--stealth-browser\u002Fdata\u002F.gitkeep",{"path":84,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":87,"sourceHtmlUrl":88},"hooks\u002FREADME.md","REFERENCE","参考文档",2459,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__changeflowhq--stealth-browser\u002Fhooks\u002FREADME.md",{"path":90,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":93,"sourceHtmlUrl":94},"hooks\u002Fwebfetch-fallback.sh","SCRIPT","脚本",1393,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__changeflowhq--stealth-browser\u002Fhooks\u002Fwebfetch-fallback.sh",{"path":96,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":97,"sourceHtmlUrl":98},"hooks\u002Fwebfetch-preflight.sh",1244,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__changeflowhq--stealth-browser\u002Fhooks\u002Fwebfetch-preflight.sh",{"path":100,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":101,"sourceHtmlUrl":102},"LEARNED.md",272,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__changeflowhq--stealth-browser\u002FLEARNED.md",{"path":104,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":105,"sourceHtmlUrl":106},"profile\u002FDefault\u002FPreferences",682,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__changeflowhq--stealth-browser\u002Fprofile\u002FDefault\u002FPreferences",{"path":108,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":109,"sourceHtmlUrl":110},"README.md",13944,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__changeflowhq--stealth-browser\u002FREADME.md",[112,139,155,181,203,223],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":119,"publishedAt":43},"01M71HY2SNXBA9Q00WZDTZQ31Z","skillguard-codex-scanner","Hybrid deterministic+LLM agent-skill security scanner. Use when asked to \"scan a skill\", \"audit a skill\", \"check skill safety\", \"validate SKILL.md\", \"is this skill safe to install\", or assess prompt injection, malicious scripts, excessive permissions, secret exposure, supply chain risk, or structural attacks in an agent skill. Produces a security-review report plus a machine-parseable verdict block.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fsrc\u002Fskillguard\u002Fstatic_scanner\u002Fskillguard-codex-scanner\u002FSKILL.md",[118],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[120,121,122,123,124,125,126,127,128,129,130,131,32,132,133,134,135,136,137,138],"scanner","skillguard codex scanner","skillguard","codex","chain","skill security","security-review","review report","structural","secret","prompt injection","security scanner","review","malicious","permissions","exposure","audit","scripts","safe",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":143,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":151,"publishedAt":43},"01M71HY0SPKTT3S27BC2HPAC5M","data-exfiltrator","Analyzes data files","MIT","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Fsmoke-one-skill\u002Fasset1__cisco-ai-defense--data-exfiltrator\u002FSKILL.md",[146],{"categoryNo":147,"categoryName":148,"taxonomyType":149,"taxonomyTypeDesc":150},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[152,153,154],"data","data exfiltrator","files",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":161,"publishedAt":43},"01M71HXVS9EMN44BGDW215FZ72","real-time-collaboration-engine","Build real-time collaborative editing with WebSockets, OT\u002FCRDT conflict resolution, and presence awareness. Implements cursor tracking, optimistic updates, and offline sync. Use for collaborative editors, whiteboards, video editing. Activate on \"real-time collaboration\", \"WebSocket sync\", \"multiplayer editing\", \"CRDT\", \"presence awareness\". NOT for simple chat, request-response APIs, or single-user apps.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--real-time-collaboration-engine\u002FSKILL.md",[],[162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,31,177,178,179,180],"time","real time collaboration engine","real time collaboration","collaboration","engine","real time","Video","reliability","video editing","performance","conflict resolution","presence","access","apps","updates","activate","optimizer","react","streaming",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":190,"publishedAt":43},"01M71HXP6CTY4KFN0QVMMN0V7J","react-performance-optimizer","Optimize React apps for 60fps performance. Implements memoization, virtualization, code splitting, bundle optimization. Use for slow renders, large lists, bundle bloat. Activate on \"React performance\", \"slow render\", \"useMemo\", \"bundle size\", \"virtualization\". NOT for backend optimization, non-React frameworks, or premature optimization.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--react-performance-optimizer\u002FSKILL.md",[187],{"categoryNo":188,"categoryName":189,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发",[171,191,178,179,192,193,194,195,196,197,162,198,199,175,31,200,177,180,201,202],"react performance optimizer","react performance","performance optimizer","app","nextjs","expert","re","render","2025","code","router","strategies",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":210,"publishedAt":43},"01M71HXH7QXSQB4QTDZ7SP7YXQ","llm-streaming-response-handler","Build production LLM streaming UIs with Server-Sent Events, real-time token display, cancellation, error recovery. Handles OpenAI\u002FAnthropic\u002FClaude streaming APIs. Use for chatbots, AI assistants, real-time text generation. Activate on \"LLM streaming\", \"SSE\", \"token stream\", \"chat UI\", \"real-time AI\". NOT for batch processing, non-streaming APIs, or WebSocket bidirectional chat.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--llm-streaming-response-handler\u002FSKILL.md",[209],{"categoryNo":188,"categoryName":189,"taxonomyType":20,"taxonomyTypeDesc":21},[211,180,212,213,214,215,171,162,216,217,218,31,177,178,219,179,220,221,222,29],"llm streaming response handler","handler","error","processing","retry","chat ui","error recovery","critical","batch","display","text","server",{"skillNo":224,"name":225,"nameZh":6,"description":226,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":227,"categories":228,"keywords":236,"publishedAt":43},"01M71HXCB0E1YRKYW1Y8T0Y106","github-actions-pipeline-builder","Build production CI\u002FCD pipelines with GitHub Actions. Implements matrix builds, caching, deployments, testing, security scanning. Use for automated testing, deployments, release workflows. Activate on \"GitHub Actions\", \"CI\u002FCD\", \"workflow\", \"deployment pipeline\", \"automated testing\". NOT for Jenkins\u002FCircleCI, manual deployments, or non-GitHub repositories.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--github-actions-pipeline-builder\u002FSKILL.md",[229,232,235],{"categoryNo":230,"categoryName":231,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":233,"categoryName":234,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[237,238,239,240,241,242,243,169,196,244,245,246,177,202,247,29,248,28,249,250],"github actions pipeline builder","actions","github actions","pipeline builder","github","builder","pipeline","testing","ci","workflows","run","release","edit","git"]