[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71HJ06P4M08K558RHP8T07V":3,"skill-same:01M71HJ06P4M08K558RHP8T07V":174},{"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":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":55,"install":56,"resources":69},"01M71HJ06P4M08K558RHP8T07V","convo-agent-skills",null,"Build real-time conversational AI applications using Agora SDKs and Next.js. Covers voice agents, video agents, AI agent lifecycle, live transcript\u002Fsubtitles, RTM messaging\u002Fchat, avatar integration (HeyGen\u002FAnam\u002FAkool), settings persistence, and MCP tool calling. User and agent only; no host controls. Use alongside next-best-practices skill. Activates when the user wants to build a conversational AI app, voice\u002Fvideo agent, real-time communication with Agora, or add AI agent features to a Next.js app.","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__bhupendra1011--convo-agent-skills\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],"convo agent skills","when","live","heygen","features","agora","next","communication","sdks","transcript","agent lifecycle","video agent","ai agent","host","MCP","only","time","messaging","app","Video","2026-11-10 10:12:30",false,"---\nname: convo-agent-skills\nversion: 1.3.0\ndescription: >\n  Build real-time conversational AI applications using Agora SDKs and Next.js.\n  Covers voice agents, video agents, AI agent lifecycle, live transcript\u002Fsubtitles,\n  RTM messaging\u002Fchat, avatar integration (HeyGen\u002FAnam\u002FAkool), settings persistence,\n  and MCP tool calling. User and agent only; no host controls. Use alongside next-best-practices skill.\n  Activates when the user wants to build a conversational AI app, voice\u002Fvideo agent,\n  real-time communication with Agora, or add AI agent features to a Next.js app.\n---\n\n# Convo Agent Skills\n\nBuild Agora Conversational AI apps in Next.js. Pair with `next-best-practices` for Next.js conventions.\n\n## Discovery — Ask Before Building\n\n**IMPORTANT**: Before loading any references or writing any code, you MUST use the AskUserQuestion tool to gather requirements. Do NOT skip these questions.\n\nUse AskUserQuestion with these questions:\n\n**Question 1:**\n- question: \"What type of agent are you building?\"\n- header: \"Agent type\"\n- multiSelect: false\n- options:\n  - Voice-only (Real-time voice conversation with AI agent)\n  - Video + voice (Voice agent with camera\u002Fvideo support)\n  - Text chat (RTM-based text messaging with AI)\n  - Full-featured (Voice, video, text, and all features)\n\n**Question 2:**\n- question: \"Which additional features do you need?\"\n- header: \"Features\"\n- multiSelect: true\n- options:\n  - Live transcript \u002F subtitles (Real-time speech-to-text display)\n  - Settings UI (LLM, TTS, ASR configuration panel)\n  - Avatar (HeyGen, Anam, or Akool avatar integration)\n\n**Question 3:**\n- question: \"Are you building from scratch or adding to an existing project?\"\n- header: \"Starting point\"\n- multiSelect: false\n- options:\n  - From scratch (New Next.js project, scaffold everything)\n  - Existing project (Add Agora features to an existing Next.js app)\n\nWait for all answers before proceeding. Use the answers to determine which references to load from the Loading Paths table below.\n\n## Loading Paths\n\nBased on answers, load ONLY the needed references (one at a time, as user progresses):\n\n| Goal | References to load (in order) |\n|------|-------------------------------|\n| Voice-only agent | 00 → 01 → 02 → 05 |\n| Video + voice agent | 00 → 01 → 02 → 03 → 05 |\n| Text chat with AI | 00 → 01 → 04 → 05 |\n| Full-featured | 00 → 01 → 02 → 03 → 04 → 05 → 06 |\n| + Transcript\u002Fsubtitles | add 06 (and 04 if RTM mode) |\n| + Settings UI | add 07 |\n| + Avatar | add 08 (requires 03 + 05) |\n| + MCP \u002F advanced | add 09 |\n\n## Dependency Graph\n\n```\n00-core-setup ← everything starts here\n01-token-auth ← required by all features\n02-rtc-voice ← requires 01\n03-rtc-video ← requires 02 (extends voice with camera)\n04-rtm-messaging ← requires 01 (independent of RTC)\n05-agent-lifecycle ← requires 01 + (02 or 04)\n06-transcript ← requires 05 + (02 or 04)\n07-settings ← requires 05\n08-avatar ← requires 03 + 05\n09-advanced ← requires 05\n```\n\n## How to Load\n\nRead references one at a time as the user progresses:\n```\nRead: \u003Cskill-path>\u002Freferences\u002F\u003Cfilename>.md\n```\nFor copy-paste code files:\n```\nRead: \u003Cskill-path>\u002Fsnippets\u002F\u003Cfilename>\n```\n\n**IMPORTANT**: Do NOT load all references upfront. Load the next one only when the user is ready.\n\n## Critical Architecture Patterns\n\nEmbed these in every implementation:\n\n1. **Module-scoped singletons** — RTC\u002FRTM clients and track refs MUST be module-scoped (outside hook function), NOT `useRef` inside hooks. Multiple components call `useAgora()` — each gets its own hook instance, so `useRef` state is NOT shared.\n\n2. **Track lifecycle** — To guarantee hardware release (mic\u002Fcamera indicator off):\n   ```ts\n   track.getMediaStreamTrack()?.stop(); \u002F\u002F browser-native, guaranteed\n   track.stop();\n   track.close();\n   ```\n\n3. **Server key injection** — Client sends sentinel `\"__USE_SERVER__\"` for API keys. Server reads from env and replaces. Keys never appear in client code or browser.\n\n## Common Post-Generation Issues\n\nFix these immediately if present in generated code:\n\n1. **Agent UID \"0\"** — Invite route MUST return `responseData.agent_uid` from Agora, NOT the input `\"0\"`\n2. **Agent in participant list** — Filter `agentRtcUid` + `agentAvatarRtcUid` in `handleUserPublished` (see 02)\n3. **Empty transcript** — Do NOT skip `data.object` messages in RTM handler; route to `processTranscriptMessage` (see 04)\n4. **Video toggle error** — Cleanup existing track before creating new one (see 03)\n5. **No chat** — `sendChatMessage` must publish to agent UID with `channelType: \"USER\"` (see 04)\n6. **Duplicate transcripts** — Use `addedTurnIds` Set + separate user\u002Fagent turn tracking (see 06)\n7. **Chat echo** — Track sent messages in `recentlySentMessages` Set (see 04)\n8. **Agent name 409** — Generate unique names: `${baseName}-${timestamp}-${random}` (see 05)\n9. **Wrong field names** — User uses `final`, agent uses `turn_status` (NOT `is_final`) (see 06)\n10. **Controls layout** — Center: mic\u002Fcamera\u002Fend-call, Right: agent\u002Fsettings\n\n## Skill Boundaries\n\n- **This skill**: Agora SDK patterns, token generation, agent API, transcript, RTM, avatar\n- **next-best-practices**: API route structure, RSC boundaries, error handling, performance\n","# Convo Agent Skills\n\nBuild Agora Conversational AI apps in Next.js. Pair with `next-best-practices` for Next.js conventions.\n\n## Discovery — Ask Before Building\n\n**IMPORTANT**: Before loading any references or writing any code, you MUST use the AskUserQuestion tool to gather requirements. Do NOT skip these questions.\n\nUse AskUserQuestion with these questions:\n\n**Question 1:**\n- question: \"What type of agent are you building?\"\n- header: \"Agent type\"\n- multiSelect: false\n- options:\n  - Voice-only (Real-time voice conversation with AI agent)\n  - Video + voice (Voice agent with camera\u002Fvideo support)\n  - Text chat (RTM-based text messaging with AI)\n  - Full-featured (Voice, video, text, and all features)\n\n**Question 2:**\n- question: \"Which additional features do you need?\"\n- header: \"Features\"\n- multiSelect: true\n- options:\n  - Live transcript \u002F subtitles (Real-time speech-to-text display)\n  - Settings UI (LLM, TTS, ASR configuration panel)\n  - Avatar (HeyGen, Anam, or Akool avatar integration)\n\n**Question 3:**\n- question: \"Are you building from scratch or adding to an existing project?\"\n- header: \"Starting point\"\n- multiSelect: false\n- options:\n  - From scratch (New Next.js project, scaffold everything)\n  - Existing project (Add Agora features to an existing Next.js app)\n\nWait for all answers before proceeding. Use the answers to determine which references to load from the Loading Paths table below.\n\n## Loading Paths\n\nBased on answers, load ONLY the needed references (one at a time, as user progresses):\n\n| Goal | References to load (in order) |\n|------|-------------------------------|\n| Voice-only agent | 00 → 01 → 02 → 05 |\n| Video + voice agent | 00 → 01 → 02 → 03 → 05 |\n| Text chat with AI | 00 → 01 → 04 → 05 |\n| Full-featured | 00 → 01 → 02 → 03 → 04 → 05 → 06 |\n| + Transcript\u002Fsubtitles | add 06 (and 04 if RTM mode) |\n| + Settings UI | add 07 |\n| + Avatar | add 08 (requires 03 + 05) |\n| + MCP \u002F advanced | add 09 |\n\n## Dependency Graph\n\n```\n00-core-setup ← everything starts here\n01-token-auth ← required by all features\n02-rtc-voice ← requires 01\n03-rtc-video ← requires 02 (extends voice with camera)\n04-rtm-messaging ← requires 01 (independent of RTC)\n05-agent-lifecycle ← requires 01 + (02 or 04)\n06-transcript ← requires 05 + (02 or 04)\n07-settings ← requires 05\n08-avatar ← requires 03 + 05\n09-advanced ← requires 05\n```\n\n## How to Load\n\nRead references one at a time as the user progresses:\n```\nRead: \u003Cskill-path>\u002Freferences\u002F\u003Cfilename>.md\n```\nFor copy-paste code files:\n```\nRead: \u003Cskill-path>\u002Fsnippets\u002F\u003Cfilename>\n```\n\n**IMPORTANT**: Do NOT load all references upfront. Load the next one only when the user is ready.\n\n## Critical Architecture Patterns\n\nEmbed these in every implementation:\n\n1. **Module-scoped singletons** — RTC\u002FRTM clients and track refs MUST be module-scoped (outside hook function), NOT `useRef` inside hooks. Multiple components call `useAgora()` — each gets its own hook instance, so `useRef` state is NOT shared.\n\n2. **Track lifecycle** — To guarantee hardware release (mic\u002Fcamera indicator off):\n   ```ts\n   track.getMediaStreamTrack()?.stop(); \u002F\u002F browser-native, guaranteed\n   track.stop();\n   track.close();\n   ```\n\n3. **Server key injection** — Client sends sentinel `\"__USE_SERVER__\"` for API keys. Server reads from env and replaces. Keys never appear in client code or browser.\n\n## Common Post-Generation Issues\n\nFix these immediately if present in generated code:\n\n1. **Agent UID \"0\"** — Invite route MUST return `responseData.agent_uid` from Agora, NOT the input `\"0\"`\n2. **Agent in participant list** — Filter `agentRtcUid` + `agentAvatarRtcUid` in `handleUserPublished` (see 02)\n3. **Empty transcript** — Do NOT skip `data.object` messages in RTM handler; route to `processTranscriptMessage` (see 04)\n4. **Video toggle error** — Cleanup existing track before creating new one (see 03)\n5. **No chat** — `sendChatMessage` must publish to agent UID with `channelType: \"USER\"` (see 04)\n6. **Duplicate transcripts** — Use `addedTurnIds` Set + separate user\u002Fagent turn tracking (see 06)\n7. **Chat echo** — Track sent messages in `recentlySentMessages` Set (see 04)\n8. **Agent name 409** — Generate unique names: `${baseName}-${timestamp}-${random}` (see 05)\n9. **Wrong field names** — User uses `final`, agent uses `turn_status` (NOT `is_final`) (see 06)\n10. **Controls layout** — Center: mic\u002Fcamera\u002Fend-call, Right: agent\u002Fsettings\n\n## Skill Boundaries\n\n- **This skill**: Agora SDK patterns, token generation, agent API, transcript, RTM, avatar\n- **next-best-practices**: API route structure, RSC boundaries, error handling, performance\n",{"name":5,"version":48,"description":7},"1.3.0","main","f2ec4b3b9133d34eeaf9b38e4b0a97e8e5705a7f","benchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills",0,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard","https:\u002F\u002Fgithub.com\u002FJSGforever","2026-08-29 18:27:56",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add JSGforever\u002Fskillguard --skill convo-agent-skills",{"tool":62,"command":63},"bunx","bunx skills add JSGforever\u002Fskillguard --skill convo-agent-skills",{"tool":65,"command":66},"pnpm","pnpm dlx skills add JSGforever\u002Fskillguard --skill convo-agent-skills","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002FSKILL.md",true,[70,76,80,84,88,92,96,100,104,108,112,116,122,126,130,134,138,142,146,150,154,158,162,166,170],{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"README.md","REFERENCE","参考文档",4994,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002FREADME.md",{"path":77,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002F00-core-setup.md",4049,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Freferences\u002F00-core-setup.md",{"path":81,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002F01-token-auth.md",2325,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Freferences\u002F01-token-auth.md",{"path":85,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002F02-rtc-voice.md",8140,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Freferences\u002F02-rtc-voice.md",{"path":89,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002F03-rtc-video.md",5200,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Freferences\u002F03-rtc-video.md",{"path":93,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002F04-rtm-messaging.md",7234,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Freferences\u002F04-rtm-messaging.md",{"path":97,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002F05-agent-lifecycle.md",7343,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Freferences\u002F05-agent-lifecycle.md",{"path":101,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":102,"sourceHtmlUrl":103},"references\u002F06-transcript.md",9174,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Freferences\u002F06-transcript.md",{"path":105,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":106,"sourceHtmlUrl":107},"references\u002F07-settings.md",7183,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Freferences\u002F07-settings.md",{"path":109,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":110,"sourceHtmlUrl":111},"references\u002F08-avatar.md",4631,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Freferences\u002F08-avatar.md",{"path":113,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":114,"sourceHtmlUrl":115},"references\u002F09-advanced.md",3681,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Freferences\u002F09-advanced.md",{"path":117,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":120,"sourceHtmlUrl":121},"snippets\u002Fagent-invite-route.ts","SCRIPT","脚本",12291,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002Fagent-invite-route.ts",{"path":123,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":124,"sourceHtmlUrl":125},"snippets\u002Fagent-query-route.ts",1730,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002Fagent-query-route.ts",{"path":127,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":128,"sourceHtmlUrl":129},"snippets\u002Fagent-stop-route.ts",1480,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002Fagent-stop-route.ts",{"path":131,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":132,"sourceHtmlUrl":133},"snippets\u002Fagent-update-route.ts",3519,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002Fagent-update-route.ts",{"path":135,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":136,"sourceHtmlUrl":137},"snippets\u002FagentApi.ts",2614,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002FagentApi.ts",{"path":139,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":140,"sourceHtmlUrl":141},"snippets\u002FagoraApi.ts",185,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002FagoraApi.ts",{"path":143,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":144,"sourceHtmlUrl":145},"snippets\u002Fconversational-ai-api.ts",12140,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002Fconversational-ai-api.ts",{"path":147,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":148,"sourceHtmlUrl":149},"snippets\u002Fenv-example.txt",1554,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002Fenv-example.txt",{"path":151,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":152,"sourceHtmlUrl":153},"snippets\u002Fgenerate-token-route.ts",1337,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002Fgenerate-token-route.ts",{"path":155,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":156,"sourceHtmlUrl":157},"snippets\u002Ftypes-agora.ts",11843,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002Ftypes-agora.ts",{"path":159,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":160,"sourceHtmlUrl":161},"snippets\u002FuiService.ts",413,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002FuiService.ts",{"path":163,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":164,"sourceHtmlUrl":165},"snippets\u002FuseAgora-minimal.ts",21282,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002FuseAgora-minimal.ts",{"path":167,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":168,"sourceHtmlUrl":169},"snippets\u002FuseAppStore-minimal.ts",9752,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002FuseAppStore-minimal.ts",{"path":171,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":172,"sourceHtmlUrl":173},"snippets\u002FuseConversationalAI.ts",4615,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__bhupendra1011--convo-agent-skills\u002Fsnippets\u002FuseConversationalAI.ts",[175,202,218,243,264,285],{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":182,"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",[181],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[183,184,185,186,187,188,189,190,191,192,193,194,24,195,196,197,198,199,200,201],"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":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":206,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":214,"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",[209],{"categoryNo":210,"categoryName":211,"taxonomyType":212,"taxonomyTypeDesc":213},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[215,216,217],"data","data exfiltrator","files",{"skillNo":219,"name":220,"nameZh":6,"description":221,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":222,"categories":223,"keywords":224,"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",[],[39,225,226,227,228,229,42,230,231,232,233,234,235,236,237,238,239,240,241,242],"real time collaboration engine","real time collaboration","collaboration","engine","real time","reliability","video editing","performance","conflict resolution","presence","access","apps","updates","Bash","activate","optimizer","react","streaming",{"skillNo":244,"name":245,"nameZh":6,"description":246,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":247,"categories":248,"keywords":252,"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",[249],{"categoryNo":250,"categoryName":251,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发",[232,253,240,241,254,255,41,256,257,258,39,259,260,236,238,261,239,242,262,263],"react performance optimizer","react performance","performance optimizer","nextjs","expert","re","render","2025","code","router","strategies",{"skillNo":265,"name":266,"nameZh":6,"description":267,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":268,"categories":269,"keywords":271,"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",[270],{"categoryNo":250,"categoryName":251,"taxonomyType":20,"taxonomyTypeDesc":21},[272,242,273,274,275,276,232,39,277,278,279,238,239,240,280,241,281,282,283,284],"llm streaming response handler","handler","error","processing","retry","chat ui","error recovery","critical","batch","display","text","server","read",{"skillNo":286,"name":287,"nameZh":6,"description":288,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":289,"categories":290,"keywords":298,"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",[291,294,297],{"categoryNo":292,"categoryName":293,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":295,"categoryName":296,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[299,300,301,302,303,304,305,230,257,306,307,308,239,263,309,284,310,311,312,313],"github actions pipeline builder","actions","github actions","pipeline builder","github","builder","pipeline","testing","ci","workflows","run","release","write","edit","git"]