[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H8PC7CVK94ZJ8R2YPXAM9T":3,"skill-same:01M6H8PC7CVK94ZJ8R2YPXAM9T":77},{"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":25,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":6,"ownerHtmlUrl":61,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":62,"install":63,"resources":76},"01M6H8PC7CVK94ZJ8R2YPXAM9T","retellai-data-handling",null,"Implement Retell AI PII handling, data retention, and GDPR\u002FCCPA compliance patterns.\nUse when handling sensitive data, implementing data redaction, configuring retention policies,\nor ensuring compliance with privacy regulations for Retell AI integrations.\nTrigger with phrases like \"retellai data\", \"retellai PII\",\n\"retellai GDPR\", \"retellai data retention\", \"retellai privacy\", \"retellai CCPA\".","micsapp\u002Fmicstec-skills","micsapp","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F82411001?v=4","01M6GWCFQ6D3PV8EHNY62NN5VW","01M6GWCFVE1PA5HG0DKC7AMFJ3",4,"MIT","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fclaude-code\u002Fplugins-plus-skills\u002Fplugins\u002Fsaas-packs\u002Fretellai-pack\u002Fskills\u002Fretellai-data-handling\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000037","律师与法务",[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"retellai data handling","data","write","for","implementing","with","retention","trigger","io","ccpa compliance","use","codex","read","integrations","pii","gdpr","ccpa","compliance","code","implement","2026-11-10 10:12:30",false,"---\nname: retellai-data-handling\ndescription: |\n  Implement Retell AI PII handling, data retention, and GDPR\u002FCCPA compliance patterns.\n  Use when handling sensitive data, implementing data redaction, configuring retention policies,\n  or ensuring compliance with privacy regulations for Retell AI integrations.\n  Trigger with phrases like \"retellai data\", \"retellai PII\",\n  \"retellai GDPR\", \"retellai data retention\", \"retellai privacy\", \"retellai CCPA\".\nallowed-tools: Read, Write, Edit\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ncompatible-with: claude-code, codex, openclaw\n---\n# Retell AI Data Handling\n\n## Overview\nManage voice call data from Retell AI agents. Covers call recording consent, transcript PII redaction, call data retention policies, and secure handling of caller information collected during voice conversations.\n\n## Prerequisites\n- Retell AI account with API key\n- `retell-sdk` npm package\n- Understanding of call recording laws (varies by jurisdiction)\n- Database for call record storage\n\n## Instructions\n\n### Step 1: Call Recording Consent Configuration\n```typescript\nimport Retell from 'retell-sdk';\n\nconst retell = new Retell({ apiKey: process.env.RETELL_API_KEY! });\n\n\u002F\u002F Configure agent with consent prompt\nasync function createConsentAgent() {\n  const llm = await retell.llm.create({\n    model: 'gpt-4o-mini',\n    general_prompt: `You are a helpful phone assistant.\n\nIMPORTANT: At the start of every call, you MUST say:\n\"This call may be recorded for quality purposes. Do you consent to continue?\"\n\nIf the caller says no:\n- Say \"I understand. Let me transfer you to a team member.\"\n- Call the transfer_call tool\n\nIf the caller says yes:\n- Proceed with the normal conversation flow`,\n    begin_message: 'Hello! This call may be recorded for quality purposes. Do you consent to continue?',\n  });\n\n  return llm;\n}\n```\n\n### Step 2: Transcript PII Redaction\n```typescript\ninterface CallTranscript {\n  callId: string;\n  utterances: Array\u003C{ speaker: string; text: string; timestamp: number }>;\n}\n\nconst PII_PATTERNS = [\n  { regex: \u002F\\b\\d{3}[-.]?\\d{3}[-.]?\\d{4}\\b\u002Fg, tag: '[PHONE]' },\n  { regex: \u002F\\b\\d{3}-\\d{2}-\\d{4}\\b\u002Fg, tag: '[SSN]' },\n  { regex: \u002F\\b\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b\u002Fg, tag: '[CARD]' },\n  { regex: \u002F\\b[\\w.+-]+@[\\w-]+\\.[\\w.]+\\b\u002Fg, tag: '[EMAIL]' },\n  { regex: \u002F\\b\\d{5}(-\\d{4})?\\b\u002Fg, tag: '[ZIP]' },\n];\n\nfunction redactTranscript(transcript: CallTranscript): CallTranscript {\n  return {\n    ...transcript,\n    utterances: transcript.utterances.map(u => ({\n      ...u,\n      text: redactText(u.text),\n    })),\n  };\n}\n\nfunction redactText(text: string): string {\n  let redacted = text;\n  for (const { regex, tag } of PII_PATTERNS) {\n    redacted = redacted.replace(regex, tag);\n  }\n  return redacted;\n}\n```\n\n### Step 3: Call Data Retention Policy\n```typescript\ninterface CallRecord {\n  callId: string;\n  agentId: string;\n  startedAt: string;\n  endedAt: string;\n  duration: number;\n  transcript: string;\n  recordingUrl?: string;\n  retainUntil: string;\n}\n\nfunction calculateRetention(callRecord: any): CallRecord {\n  const retentionDays = 90; \u002F\u002F Default 90-day retention\n  const retainUntil = new Date(callRecord.end_timestamp * 1000);  # 1000: 1 second in ms\n  retainUntil.setDate(retainUntil.getDate() + retentionDays);\n\n  return {\n    callId: callRecord.call_id,\n    agentId: callRecord.agent_id,\n    startedAt: new Date(callRecord.start_timestamp * 1000).toISOString(),  # 1 second in ms\n    endedAt: new Date(callRecord.end_timestamp * 1000).toISOString(),  # 1 second in ms\n    duration: callRecord.end_timestamp - callRecord.start_timestamp,\n    transcript: JSON.stringify(callRecord.transcript_object || []),\n    recordingUrl: callRecord.recording_url,\n    retainUntil: retainUntil.toISOString(),\n  };\n}\n\nasync function cleanExpiredRecords(records: CallRecord[]) {\n  const now = new Date();\n  const expired = records.filter(r => new Date(r.retainUntil) \u003C now);\n\n  for (const record of expired) {\n    \u002F\u002F Delete recording if stored locally\n    if (record.recordingUrl) {\n      await deleteRecording(record.callId);\n    }\n    \u002F\u002F Clear transcript\n    record.transcript = '[EXPIRED]';\n  }\n\n  return { expired: expired.length, active: records.length - expired.length };\n}\n```\n\n### Step 4: Webhook Data Filtering\n```typescript\napp.post('\u002Fwebhooks\u002Fretell', express.json(), async (req, res) => {\n  const { event, call } = req.body;\n\n  if (event === 'call_ended') {\n    \u002F\u002F Redact PII before storing\n    const transcript = {\n      callId: call.call_id,\n      utterances: (call.transcript_object || []).map((u: any) => ({\n        speaker: u.role,\n        text: redactText(u.content),\n        timestamp: u.words?.[0]?.start,\n      })),\n    };\n\n    const record = calculateRetention(call);\n    record.transcript = JSON.stringify(transcript);\n\n    await storeCallRecord(record);\n  }\n\n  res.json({ received: true });\n});\n```\n\n## Error Handling\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| PII in stored transcripts | No redaction applied | Always redact before storage |\n| Missing consent | Agent skips consent prompt | Include consent in `begin_message` |\n| Recordings not deleted | No retention enforcement | Schedule cleanup for expired records |\n| Caller PII in tool args | Phone\u002Femail passed to tools | Redact tool argument logs |\n\n## Examples\n\n### Compliance Report\n```typescript\nasync function complianceReport(records: CallRecord[]) {\n  const now = new Date();\n  return {\n    totalCalls: records.length,\n    withRecordings: records.filter(r => r.recordingUrl).length,\n    expiringThisWeek: records.filter(r => {\n      const exp = new Date(r.retainUntil);\n      return exp > now && exp \u003C new Date(now.getTime() + 7 * 86400000);  # 86400000 = configured value\n    }).length,\n  };\n}\n```\n\n## Resources\n- [Retell AI Privacy](https:\u002F\u002Fwww.retellai.com\u002Fprivacy)\n- [Retell Call Data](https:\u002F\u002Fdocs.retellai.com\u002Fapi-references\u002Fget-call)\n\n## Output\n\n- Configuration files or code changes applied to the project\n- Validation report confirming correct implementation\n- Summary of changes made and their rationale","# Retell AI Data Handling\n\n## Overview\nManage voice call data from Retell AI agents. Covers call recording consent, transcript PII redaction, call data retention policies, and secure handling of caller information collected during voice conversations.\n\n## Prerequisites\n- Retell AI account with API key\n- `retell-sdk` npm package\n- Understanding of call recording laws (varies by jurisdiction)\n- Database for call record storage\n\n## Instructions\n\n### Step 1: Call Recording Consent Configuration\n```typescript\nimport Retell from 'retell-sdk';\n\nconst retell = new Retell({ apiKey: process.env.RETELL_API_KEY! });\n\n\u002F\u002F Configure agent with consent prompt\nasync function createConsentAgent() {\n  const llm = await retell.llm.create({\n    model: 'gpt-4o-mini',\n    general_prompt: `You are a helpful phone assistant.\n\nIMPORTANT: At the start of every call, you MUST say:\n\"This call may be recorded for quality purposes. Do you consent to continue?\"\n\nIf the caller says no:\n- Say \"I understand. Let me transfer you to a team member.\"\n- Call the transfer_call tool\n\nIf the caller says yes:\n- Proceed with the normal conversation flow`,\n    begin_message: 'Hello! This call may be recorded for quality purposes. Do you consent to continue?',\n  });\n\n  return llm;\n}\n```\n\n### Step 2: Transcript PII Redaction\n```typescript\ninterface CallTranscript {\n  callId: string;\n  utterances: Array\u003C{ speaker: string; text: string; timestamp: number }>;\n}\n\nconst PII_PATTERNS = [\n  { regex: \u002F\\b\\d{3}[-.]?\\d{3}[-.]?\\d{4}\\b\u002Fg, tag: '[PHONE]' },\n  { regex: \u002F\\b\\d{3}-\\d{2}-\\d{4}\\b\u002Fg, tag: '[SSN]' },\n  { regex: \u002F\\b\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b\u002Fg, tag: '[CARD]' },\n  { regex: \u002F\\b[\\w.+-]+@[\\w-]+\\.[\\w.]+\\b\u002Fg, tag: '[EMAIL]' },\n  { regex: \u002F\\b\\d{5}(-\\d{4})?\\b\u002Fg, tag: '[ZIP]' },\n];\n\nfunction redactTranscript(transcript: CallTranscript): CallTranscript {\n  return {\n    ...transcript,\n    utterances: transcript.utterances.map(u => ({\n      ...u,\n      text: redactText(u.text),\n    })),\n  };\n}\n\nfunction redactText(text: string): string {\n  let redacted = text;\n  for (const { regex, tag } of PII_PATTERNS) {\n    redacted = redacted.replace(regex, tag);\n  }\n  return redacted;\n}\n```\n\n### Step 3: Call Data Retention Policy\n```typescript\ninterface CallRecord {\n  callId: string;\n  agentId: string;\n  startedAt: string;\n  endedAt: string;\n  duration: number;\n  transcript: string;\n  recordingUrl?: string;\n  retainUntil: string;\n}\n\nfunction calculateRetention(callRecord: any): CallRecord {\n  const retentionDays = 90; \u002F\u002F Default 90-day retention\n  const retainUntil = new Date(callRecord.end_timestamp * 1000);  # 1000: 1 second in ms\n  retainUntil.setDate(retainUntil.getDate() + retentionDays);\n\n  return {\n    callId: callRecord.call_id,\n    agentId: callRecord.agent_id,\n    startedAt: new Date(callRecord.start_timestamp * 1000).toISOString(),  # 1 second in ms\n    endedAt: new Date(callRecord.end_timestamp * 1000).toISOString(),  # 1 second in ms\n    duration: callRecord.end_timestamp - callRecord.start_timestamp,\n    transcript: JSON.stringify(callRecord.transcript_object || []),\n    recordingUrl: callRecord.recording_url,\n    retainUntil: retainUntil.toISOString(),\n  };\n}\n\nasync function cleanExpiredRecords(records: CallRecord[]) {\n  const now = new Date();\n  const expired = records.filter(r => new Date(r.retainUntil) \u003C now);\n\n  for (const record of expired) {\n    \u002F\u002F Delete recording if stored locally\n    if (record.recordingUrl) {\n      await deleteRecording(record.callId);\n    }\n    \u002F\u002F Clear transcript\n    record.transcript = '[EXPIRED]';\n  }\n\n  return { expired: expired.length, active: records.length - expired.length };\n}\n```\n\n### Step 4: Webhook Data Filtering\n```typescript\napp.post('\u002Fwebhooks\u002Fretell', express.json(), async (req, res) => {\n  const { event, call } = req.body;\n\n  if (event === 'call_ended') {\n    \u002F\u002F Redact PII before storing\n    const transcript = {\n      callId: call.call_id,\n      utterances: (call.transcript_object || []).map((u: any) => ({\n        speaker: u.role,\n        text: redactText(u.content),\n        timestamp: u.words?.[0]?.start,\n      })),\n    };\n\n    const record = calculateRetention(call);\n    record.transcript = JSON.stringify(transcript);\n\n    await storeCallRecord(record);\n  }\n\n  res.json({ received: true });\n});\n```\n\n## Error Handling\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| PII in stored transcripts | No redaction applied | Always redact before storage |\n| Missing consent | Agent skips consent prompt | Include consent in `begin_message` |\n| Recordings not deleted | No retention enforcement | Schedule cleanup for expired records |\n| Caller PII in tool args | Phone\u002Femail passed to tools | Redact tool argument logs |\n\n## Examples\n\n### Compliance Report\n```typescript\nasync function complianceReport(records: CallRecord[]) {\n  const now = new Date();\n  return {\n    totalCalls: records.length,\n    withRecordings: records.filter(r => r.recordingUrl).length,\n    expiringThisWeek: records.filter(r => {\n      const exp = new Date(r.retainUntil);\n      return exp > now && exp \u003C new Date(now.getTime() + 7 * 86400000);  # 86400000 = configured value\n    }).length,\n  };\n}\n```\n\n## Resources\n- [Retell AI Privacy](https:\u002F\u002Fwww.retellai.com\u002Fprivacy)\n- [Retell Call Data](https:\u002F\u002Fdocs.retellai.com\u002Fapi-references\u002Fget-call)\n\n## Output\n\n- Configuration files or code changes applied to the project\n- Validation report confirming correct implementation\n- Summary of changes made and their rationale",{"name":5,"author":51,"license":14,"version":52,"description":53,"allowed-tools":54,"compatible-with":55},"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Implement Retell AI PII handling, data retention, and GDPR\u002FCCPA compliance patterns.\nUse when handling sensitive data, implementing data redaction, configuring retention policies,\nor ensuring compliance with privacy regulations for Retell AI integrations.\nTrigger with phrases like \"retellai data\", \"retellai PII\",\n\"retellai GDPR\", \"retellai data retention\", \"retellai privacy\", \"retellai CCPA\".\n","Read, Write, Edit","claude-code, codex, openclaw","master","3f5d983eb4ef375b749adcd6b07ec03bd82ae8a8","claude-code\u002Fplugins-plus-skills\u002Fplugins\u002Fsaas-packs\u002Fretellai-pack\u002Fskills\u002Fretellai-data-handling",0,"https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills","https:\u002F\u002Fgithub.com\u002Fmicsapp","2026-03-20 11:24:18",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add micsapp\u002Fmicstec-skills --skill retellai-data-handling",{"tool":69,"command":70},"bunx","bunx skills add micsapp\u002Fmicstec-skills --skill retellai-data-handling",{"tool":72,"command":73},"pnpm","pnpm dlx skills add micsapp\u002Fmicstec-skills --skill retellai-data-handling","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fclaude-code\u002Fplugins-plus-skills\u002Fplugins\u002Fsaas-packs\u002Fretellai-pack\u002Fskills\u002Fretellai-data-handling\u002FSKILL.md",true,[],[78,112,140,160,180,205],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":92,"publishedAt":46},"01M6HBTJ02FXBFG9NYEHHYAP52","azure-apim-architecture","Analyzes and explains Azure API Management architecture decisions for enterprise API marketplace implementations using VNet Internal mode, Front Door, hybrid authentication, and multi-environment strategies. Use when discussing APIM component selection, network topology, cost optimization, or comparing alternatives like workspaces vs instances, VNet Internal vs External mode, or Front Door vs Application Gateway.","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fcopilot-cli\u002Fcopilot-agent-skills\u002F.github\u002Fskills\u002Fazure-apim-architecture\u002FSKILL.md",[84,89],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":90,"categoryName":91,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000030","开发工程师",[93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,29],"architecture","azure","azure apim architecture","component","authentication","gateway","topology","Optimization","network","api","team","environment","multi-environment","workspaces","instances","selection","strategies","azure api management","mode",{"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":126,"publishedAt":46},"01M6HBT7J4H082JEEA670B3EQ9","apiops-deployment","Guides deployment of Azure API Management infrastructure using Infrastructure as Code (Bicep\u002FTerraform), CI\u002FCD pipelines (GitHub Actions\u002FAzure DevOps), and APIOps workflows. Use when deploying APIM, creating pipelines, or implementing dev→test→prod promotion strategies.","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fcopilot-cli\u002Fcopilot-agent-skills\u002F.github\u002Fskills\u002Fapiops-deployment\u002FSKILL.md",[118,119,122,125],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},{"categoryNo":120,"categoryName":121,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":123,"categoryName":124,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":90,"categoryName":91,"taxonomyType":20,"taxonomyTypeDesc":21},[127,128,129,130,94,131,44,132,133,134,135,136,102,103,109,137,138,110,139,30],"deployment","apiops deployment","workflows","azure devops","infrastructure","infrastructure as code","actions","ci","github actions","github-actions","as","guides","CI\u002FCD",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":147,"publishedAt":46},"01M6HBT2HEA23THNE9E00GYQBE","apim-policy-authoring","Creates production-ready Azure API Management policy XML for authentication (OAuth 2.0, JWT validation, subscription keys), rate limiting, CORS configuration, error handling, and API transformations. Use when implementing API security, access control, or request\u002Fresponse processing logic.","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fcopilot-cli\u002Fcopilot-agent-skills\u002F.github\u002Fskills\u002Fapim-policy-authoring\u002FSKILL.md",[146],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},[148,149,150,151,94,97,102,103,152,36,153,154,155,156,157,110,158,159,30,29],"policy","authoring","apim policy authoring","security","access","ready","api security","Access Control","error","processing","cors configuration","production-ready",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":168,"publishedAt":46},"01M6HBSY65SB29J9WE9KYD0K6T","api-security-review","Reviews Azure API Management configurations for security vulnerabilities, OWASP API Security Top 10 compliance, VNet Internal mode validation, Private Link verification, and Azure Security Benchmark alignment. Use when performing security audits, pre-deployment validation, or compliance reviews.","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fcopilot-cli\u002Fcopilot-agent-skills\u002F.github\u002Fskills\u002Fapi-security-review\u002FSKILL.md",[166,167],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},{"categoryNo":90,"categoryName":91,"taxonomyType":20,"taxonomyTypeDesc":21},[169,151,170,102,154,171,94,127,172,173,174,175,103,176,110,177,178,179,111,29],"review","security review","api security review","benchmark","verification","owasp","owasp-api","alignment","azure security","reviews","top",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":186,"publishedAt":46},"01M6HBSRW4PDFE6K4F8JYPZQ05","jira-cli","Interact with Jira from the command line to create, list, view, edit, and transition issues, manage sprints and epics, and perform common Jira workflows. Use when the user asks about Jira tasks, tickets, issues, sprints, or needs to manage project work items.","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fcopilot-cli\u002Fawesome-copilot-agents\u002Fskills\u002Fjira-cli\u002FSKILL.md",[],[187,188,189,129,190,191,192,193,102,194,195,196,197,198,199,200,201,202,203,204],"cli","jira","jira cli","init","tasks","create","issues","common","work","command","edit","list","view","project","project work","token","line","sprints",{"skillNo":206,"name":207,"nameZh":6,"description":208,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":209,"categories":210,"keywords":211,"publishedAt":46},"01M6HBSNS3JHMW603G47TWE31H","calculator","Performs arbitrary-precision arithmetic calculations including addition, subtraction, multiplication, division, and exponents. Use when the user asks to calculate, compute, or evaluate math expressions, or when precise decimal arithmetic is needed to avoid floating-point errors.","https:\u002F\u002Fgithub.com\u002Fmicsapp\u002Fmicstec-skills\u002Fblob\u002Fmaster\u002Fcopilot-cli\u002Fawesome-copilot-agents\u002Fskills\u002Fcalculator\u002FSKILL.md",[],[207,212,213,214,215,216,217,36,218,219],"npm","js","calculate","node","math","user","compute","errors"]