[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71H0D84T175DJAWP6QYAEAG":3,"skill-same:01M71H0D84T175DJAWP6QYAEAG":56},{"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":17,"publishedAt":23,"linkOnly":24,"markdownContent":25,"markdownBody":26,"frontMatter":27,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":6,"ownerHtmlUrl":34,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":35,"install":36,"resources":49},"01M71H0D84T175DJAWP6QYAEAG","permissions",null,"Command approvals, tool policies, and exec security","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__alsk1992--permissions\u002FSKILL.md",[],[5,18,19,20,21,22],"tool","command","approvals","security","exec","2026-11-10 10:12:30",false,"---\nname: permissions\ndescription: \"Command approvals, tool policies, and exec security\"\nemoji: \"🛡️\"\n---\n\n# Permissions - Complete API Reference\n\nManage command execution approvals, tool access policies, and security controls.\n\n---\n\n## Chat Commands\n\n### View Permissions\n\n```\n\u002Fpermissions                                View current permissions\n\u002Fpermissions list                           List all rules\n\u002Fpermissions pending                        View pending approvals\n\u002Fpermissions history                        View approval history\n```\n\n### Approve\u002FReject\n\n```\n\u002Fapprove                                    Approve pending command\n\u002Fapprove \u003Cid>                               Approve specific request\n\u002Freject                                     Reject pending command\n\u002Freject \u003Cid> \"reason\"                       Reject with reason\n```\n\n### Allow\u002FBlock Rules\n\n```\n\u002Fpermissions allow \"npm install\"            Allow pattern\n\u002Fpermissions allow \"git *\"                  Allow with wildcard\n\u002Fpermissions block \"rm -rf\"                 Block dangerous command\n\u002Fpermissions remove \u003Crule-id>               Remove rule\n```\n\n### Security Mode\n\n```\n\u002Fpermissions mode                           Check current mode\n\u002Fpermissions mode allowlist                 Only allowed commands\n\u002Fpermissions mode blocklist                 Block specific commands\n\u002Fpermissions mode full                      Allow all (dangerous)\n```\n\n---\n\n## TypeScript API Reference\n\n### Create Permissions Manager\n\n```typescript\nimport { createPermissionsManager } from 'clodds\u002Fpermissions';\n\nconst perms = createPermissionsManager({\n  \u002F\u002F Security mode\n  mode: 'allowlist',  \u002F\u002F 'deny' | 'allowlist' | 'blocklist' | 'full'\n\n  \u002F\u002F Default rules\n  defaultAllow: [\n    'ls *',\n    'cat *',\n    'git status',\n    'git diff',\n    'npm run *',\n  ],\n\n  defaultBlock: [\n    'rm -rf *',\n    'sudo *',\n    'chmod 777 *',\n  ],\n\n  \u002F\u002F Approval settings\n  requireApproval: true,\n  approvalTimeoutMs: 60000,\n\n  \u002F\u002F Storage\n  storage: 'sqlite',\n  dbPath: '.\u002Fpermissions.db',\n});\n```\n\n### Check Permission\n\n```typescript\n\u002F\u002F Check if command is allowed\nconst result = await perms.check({\n  command: 'npm install lodash',\n  userId: 'user-123',\n  context: 'Installing dependency',\n});\n\nif (result.allowed) {\n  console.log('Command allowed');\n} else if (result.needsApproval) {\n  console.log(`Waiting for approval: ${result.requestId}`);\n} else {\n  console.log(`Blocked: ${result.reason}`);\n}\n```\n\n### Request Approval\n\n```typescript\n\u002F\u002F Request approval for command\nconst request = await perms.requestApproval({\n  command: 'docker build -t myapp .',\n  userId: 'user-123',\n  reason: 'Building application container',\n});\n\nconsole.log(`Request ID: ${request.id}`);\nconsole.log(`Status: ${request.status}`);\n\n\u002F\u002F Wait for approval\nconst approved = await perms.waitForApproval(request.id, {\n  timeoutMs: 60000,\n});\n\nif (approved) {\n  console.log('Approved! Executing...');\n}\n```\n\n### Approve\u002FReject\n\n```typescript\n\u002F\u002F Approve request\nawait perms.approve({\n  requestId: 'req-123',\n  approvedBy: 'admin-user',\n  note: 'Looks safe',\n});\n\n\u002F\u002F Reject request\nawait perms.reject({\n  requestId: 'req-123',\n  rejectedBy: 'admin-user',\n  reason: 'Command too broad',\n});\n```\n\n### List Pending\n\n```typescript\n\u002F\u002F Get pending approvals\nconst pending = await perms.listPending();\n\nfor (const req of pending) {\n  console.log(`[${req.id}] ${req.command}`);\n  console.log(`  User: ${req.userId}`);\n  console.log(`  Reason: ${req.reason}`);\n  console.log(`  Requested: ${req.createdAt}`);\n}\n```\n\n### Add Rules\n\n```typescript\n\u002F\u002F Add allow rule\nawait perms.addRule({\n  type: 'allow',\n  pattern: 'npm run *',\n  description: 'Allow npm scripts',\n  createdBy: 'admin',\n});\n\n\u002F\u002F Add block rule\nawait perms.addRule({\n  type: 'block',\n  pattern: 'rm -rf \u002F',\n  description: 'Prevent root deletion',\n  createdBy: 'admin',\n});\n\n\u002F\u002F List rules\nconst rules = await perms.listRules();\n\nfor (const rule of rules) {\n  console.log(`${rule.type}: ${rule.pattern}`);\n}\n\n\u002F\u002F Remove rule\nawait perms.removeRule('rule-id');\n```\n\n### Tool Policies\n\n```typescript\n\u002F\u002F Set tool policy for agent\nawait perms.setToolPolicy({\n  agentId: 'trading',\n  allow: ['execute', 'portfolio', 'markets'],\n  deny: ['browser', 'docker', 'exec'],\n});\n\n\u002F\u002F Check tool access\nconst canUse = perms.isToolAllowed('trading', 'execute');\n\n\u002F\u002F Get agent's allowed tools\nconst tools = perms.getAllowedTools('trading');\n```\n\n---\n\n## Security Modes\n\n| Mode | Behavior |\n|------|----------|\n| **deny** | Block all exec commands |\n| **allowlist** | Only explicitly allowed commands |\n| **blocklist** | Block specific patterns, allow rest |\n| **full** | Allow all (dangerous!) |\n\n---\n\n## Pattern Syntax\n\n| Pattern | Matches |\n|---------|---------|\n| `npm install` | Exact command |\n| `npm *` | npm with any args |\n| `git status` | Exact command |\n| `* --version` | Any command with --version |\n\n---\n\n## Built-in Safety Rules\n\nAlways blocked regardless of mode:\n- `rm -rf \u002F`\n- `sudo rm -rf`\n- `chmod 777 \u002F`\n- `:(){ :|:& };:` (fork bomb)\n- Commands with shell injection patterns\n\n---\n\n## CLI Commands\n\n```bash\n# List permission rules\nclodds permissions list\n\n# Add allow pattern\nclodds permissions allow \"npm run *\"\n\n# View pending approvals\nclodds permissions pending\n\n# Approve request\nclodds permissions approve req-123\n```\n\n---\n\n## Best Practices\n\n1. **Use allowlist mode** — Most secure, explicit permissions\n2. **Review pending regularly** — Don't let requests pile up\n3. **Specific patterns** — `npm install lodash` over `npm *`\n4. **Audit history** — Review what was approved\n5. **Tool policies** — Restrict agent tool access\n","# Permissions - Complete API Reference\n\nManage command execution approvals, tool access policies, and security controls.\n\n---\n\n## Chat Commands\n\n### View Permissions\n\n```\n\u002Fpermissions                                View current permissions\n\u002Fpermissions list                           List all rules\n\u002Fpermissions pending                        View pending approvals\n\u002Fpermissions history                        View approval history\n```\n\n### Approve\u002FReject\n\n```\n\u002Fapprove                                    Approve pending command\n\u002Fapprove \u003Cid>                               Approve specific request\n\u002Freject                                     Reject pending command\n\u002Freject \u003Cid> \"reason\"                       Reject with reason\n```\n\n### Allow\u002FBlock Rules\n\n```\n\u002Fpermissions allow \"npm install\"            Allow pattern\n\u002Fpermissions allow \"git *\"                  Allow with wildcard\n\u002Fpermissions block \"rm -rf\"                 Block dangerous command\n\u002Fpermissions remove \u003Crule-id>               Remove rule\n```\n\n### Security Mode\n\n```\n\u002Fpermissions mode                           Check current mode\n\u002Fpermissions mode allowlist                 Only allowed commands\n\u002Fpermissions mode blocklist                 Block specific commands\n\u002Fpermissions mode full                      Allow all (dangerous)\n```\n\n---\n\n## TypeScript API Reference\n\n### Create Permissions Manager\n\n```typescript\nimport { createPermissionsManager } from 'clodds\u002Fpermissions';\n\nconst perms = createPermissionsManager({\n  \u002F\u002F Security mode\n  mode: 'allowlist',  \u002F\u002F 'deny' | 'allowlist' | 'blocklist' | 'full'\n\n  \u002F\u002F Default rules\n  defaultAllow: [\n    'ls *',\n    'cat *',\n    'git status',\n    'git diff',\n    'npm run *',\n  ],\n\n  defaultBlock: [\n    'rm -rf *',\n    'sudo *',\n    'chmod 777 *',\n  ],\n\n  \u002F\u002F Approval settings\n  requireApproval: true,\n  approvalTimeoutMs: 60000,\n\n  \u002F\u002F Storage\n  storage: 'sqlite',\n  dbPath: '.\u002Fpermissions.db',\n});\n```\n\n### Check Permission\n\n```typescript\n\u002F\u002F Check if command is allowed\nconst result = await perms.check({\n  command: 'npm install lodash',\n  userId: 'user-123',\n  context: 'Installing dependency',\n});\n\nif (result.allowed) {\n  console.log('Command allowed');\n} else if (result.needsApproval) {\n  console.log(`Waiting for approval: ${result.requestId}`);\n} else {\n  console.log(`Blocked: ${result.reason}`);\n}\n```\n\n### Request Approval\n\n```typescript\n\u002F\u002F Request approval for command\nconst request = await perms.requestApproval({\n  command: 'docker build -t myapp .',\n  userId: 'user-123',\n  reason: 'Building application container',\n});\n\nconsole.log(`Request ID: ${request.id}`);\nconsole.log(`Status: ${request.status}`);\n\n\u002F\u002F Wait for approval\nconst approved = await perms.waitForApproval(request.id, {\n  timeoutMs: 60000,\n});\n\nif (approved) {\n  console.log('Approved! Executing...');\n}\n```\n\n### Approve\u002FReject\n\n```typescript\n\u002F\u002F Approve request\nawait perms.approve({\n  requestId: 'req-123',\n  approvedBy: 'admin-user',\n  note: 'Looks safe',\n});\n\n\u002F\u002F Reject request\nawait perms.reject({\n  requestId: 'req-123',\n  rejectedBy: 'admin-user',\n  reason: 'Command too broad',\n});\n```\n\n### List Pending\n\n```typescript\n\u002F\u002F Get pending approvals\nconst pending = await perms.listPending();\n\nfor (const req of pending) {\n  console.log(`[${req.id}] ${req.command}`);\n  console.log(`  User: ${req.userId}`);\n  console.log(`  Reason: ${req.reason}`);\n  console.log(`  Requested: ${req.createdAt}`);\n}\n```\n\n### Add Rules\n\n```typescript\n\u002F\u002F Add allow rule\nawait perms.addRule({\n  type: 'allow',\n  pattern: 'npm run *',\n  description: 'Allow npm scripts',\n  createdBy: 'admin',\n});\n\n\u002F\u002F Add block rule\nawait perms.addRule({\n  type: 'block',\n  pattern: 'rm -rf \u002F',\n  description: 'Prevent root deletion',\n  createdBy: 'admin',\n});\n\n\u002F\u002F List rules\nconst rules = await perms.listRules();\n\nfor (const rule of rules) {\n  console.log(`${rule.type}: ${rule.pattern}`);\n}\n\n\u002F\u002F Remove rule\nawait perms.removeRule('rule-id');\n```\n\n### Tool Policies\n\n```typescript\n\u002F\u002F Set tool policy for agent\nawait perms.setToolPolicy({\n  agentId: 'trading',\n  allow: ['execute', 'portfolio', 'markets'],\n  deny: ['browser', 'docker', 'exec'],\n});\n\n\u002F\u002F Check tool access\nconst canUse = perms.isToolAllowed('trading', 'execute');\n\n\u002F\u002F Get agent's allowed tools\nconst tools = perms.getAllowedTools('trading');\n```\n\n---\n\n## Security Modes\n\n| Mode | Behavior |\n|------|----------|\n| **deny** | Block all exec commands |\n| **allowlist** | Only explicitly allowed commands |\n| **blocklist** | Block specific patterns, allow rest |\n| **full** | Allow all (dangerous!) |\n\n---\n\n## Pattern Syntax\n\n| Pattern | Matches |\n|---------|---------|\n| `npm install` | Exact command |\n| `npm *` | npm with any args |\n| `git status` | Exact command |\n| `* --version` | Any command with --version |\n\n---\n\n## Built-in Safety Rules\n\nAlways blocked regardless of mode:\n- `rm -rf \u002F`\n- `sudo rm -rf`\n- `chmod 777 \u002F`\n- `:(){ :|:& };:` (fork bomb)\n- Commands with shell injection patterns\n\n---\n\n## CLI Commands\n\n```bash\n# List permission rules\nclodds permissions list\n\n# Add allow pattern\nclodds permissions allow \"npm run *\"\n\n# View pending approvals\nclodds permissions pending\n\n# Approve request\nclodds permissions approve req-123\n```\n\n---\n\n## Best Practices\n\n1. **Use allowlist mode** — Most secure, explicit permissions\n2. **Review pending regularly** — Don't let requests pile up\n3. **Specific patterns** — `npm install lodash` over `npm *`\n4. **Audit history** — Review what was approved\n5. **Tool policies** — Restrict agent tool access\n",{"name":5,"emoji":28,"description":7},"🛡️","main","f2ec4b3b9133d34eeaf9b38e4b0a97e8e5705a7f","benchmarks\u002Ffinal\u002Fskills\u002Fasset1__alsk1992--permissions",0,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard","https:\u002F\u002Fgithub.com\u002FJSGforever","2026-08-29 18:27:56",{"source":8,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add JSGforever\u002Fskillguard --skill permissions",{"tool":42,"command":43},"bunx","bunx skills add JSGforever\u002Fskillguard --skill permissions",{"tool":45,"command":46},"pnpm","pnpm dlx skills add JSGforever\u002Fskillguard --skill permissions","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__alsk1992--permissions\u002FSKILL.md",true,[50],{"path":51,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":54,"sourceHtmlUrl":55},"index.ts","SCRIPT","脚本",7539,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__alsk1992--permissions\u002Findex.ts",[57,88,104,131,153,174],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":68,"publishedAt":23},"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",[63],{"categoryNo":64,"categoryName":65,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,5,84,85,86,87],"scanner","skillguard codex scanner","skillguard","codex","chain","skill security","security-review","review report","structural","secret","prompt injection","security scanner","when","review","malicious","exposure","audit","scripts","safe",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":92,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":100,"publishedAt":23},"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",[95],{"categoryNo":96,"categoryName":97,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[101,102,103],"data","data exfiltrator","files",{"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":23},"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",[],[111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130],"time","real time collaboration engine","real time collaboration","collaboration","engine","real time","Video","reliability","video editing","performance","conflict resolution","presence","access","apps","updates","Bash","activate","optimizer","react","streaming",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":140,"publishedAt":23},"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",[137],{"categoryNo":138,"categoryName":139,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000009","前端开发",[120,141,128,129,142,143,144,145,146,147,111,148,149,124,126,150,127,130,151,152],"react performance optimizer","react performance","performance optimizer","app","nextjs","expert","re","render","2025","code","router","strategies",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":160,"publishedAt":23},"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",[159],{"categoryNo":138,"categoryName":139,"taxonomyType":66,"taxonomyTypeDesc":67},[161,130,162,163,164,165,120,111,166,167,168,126,127,128,169,129,170,171,172,173],"llm streaming response handler","handler","error","processing","retry","chat ui","error recovery","critical","batch","display","text","server","read",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":187,"publishedAt":23},"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",[180,183,186],{"categoryNo":181,"categoryName":182,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":184,"categoryName":185,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":64,"categoryName":65,"taxonomyType":66,"taxonomyTypeDesc":67},[188,189,190,191,192,193,194,118,146,195,196,197,127,152,198,173,199,200,201,202],"github actions pipeline builder","actions","github actions","pipeline builder","github","builder","pipeline","testing","ci","workflows","run","release","write","edit","git"]