[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CS3HVFFG9XHJZQ2P83XTP1":3,"skill-same:01M6CS3HVFFG9XHJZQ2P83XTP1":66},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":38,"ownerHtmlUrl":39,"ownerBlogUrl":6,"ownerDescription":40,"updatedAt":41,"install":42,"resources":55},"01M6CS3HVFFG9XHJZQ2P83XTP1","azure-eventhub-ts",null,"High-throughput event streaming and real-time data ingestion.","Sam-06060\u002Fjarvis-assistant","Sam-06060","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F208600848?v=4","01M6CRKT7C7FXD21V6HXF293S0","Samson Frank Ganta","01M6CRKTBEKYFD8YX5Z1GT99EE",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fazure-eventhub-ts\u002FSKILL.md",[],[19,20,21,22,23,24,25,26],"azure","azure eventhub ts","streaming","data ingestion","data","real-time","ingestion","community","2026-11-10 10:12:30",false,"---\nname: azure-eventhub-ts\ndescription: \"High-throughput event streaming and real-time data ingestion.\"\nrisk: unknown\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# Azure Event Hubs SDK for TypeScript\n\nHigh-throughput event streaming and real-time data ingestion.\n\n## Installation\n\n```bash\nnpm install @azure\u002Fevent-hubs @azure\u002Fidentity\n```\n\nFor checkpointing with consumer groups:\n```bash\nnpm install @azure\u002Feventhubs-checkpointstore-blob @azure\u002Fstorage-blob\n```\n\n## Environment Variables\n\n```bash\nEVENTHUB_NAMESPACE=\u003Cnamespace>.servicebus.windows.net\nEVENTHUB_NAME=my-eventhub\nSTORAGE_ACCOUNT_NAME=\u003Cstorage-account>\nSTORAGE_CONTAINER_NAME=checkpoints\n```\n\n## Authentication\n\n```typescript\nimport { EventHubProducerClient, EventHubConsumerClient } from \"@azure\u002Fevent-hubs\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\n\nconst fullyQualifiedNamespace = process.env.EVENTHUB_NAMESPACE!;\nconst eventHubName = process.env.EVENTHUB_NAME!;\nconst credential = new DefaultAzureCredential();\n\n\u002F\u002F Producer\nconst producer = new EventHubProducerClient(fullyQualifiedNamespace, eventHubName, credential);\n\n\u002F\u002F Consumer\nconst consumer = new EventHubConsumerClient(\n  \"$Default\", \u002F\u002F Consumer group\n  fullyQualifiedNamespace,\n  eventHubName,\n  credential\n);\n```\n\n## Core Workflow\n\n### Send Events\n\n```typescript\nconst producer = new EventHubProducerClient(namespace, eventHubName, credential);\n\n\u002F\u002F Create batch and add events\nconst batch = await producer.createBatch();\nbatch.tryAdd({ body: { temperature: 72.5, deviceId: \"sensor-1\" } });\nbatch.tryAdd({ body: { temperature: 68.2, deviceId: \"sensor-2\" } });\n\nawait producer.sendBatch(batch);\nawait producer.close();\n```\n\n### Send to Specific Partition\n\n```typescript\n\u002F\u002F By partition ID\nconst batch = await producer.createBatch({ partitionId: \"0\" });\n\n\u002F\u002F By partition key (consistent hashing)\nconst batch = await producer.createBatch({ partitionKey: \"device-123\" });\n```\n\n### Receive Events (Simple)\n\n```typescript\nconst consumer = new EventHubConsumerClient(\"$Default\", namespace, eventHubName, credential);\n\nconst subscription = consumer.subscribe({\n  processEvents: async (events, context) => {\n    for (const event of events) {\n      console.log(`Partition: ${context.partitionId}, Body: ${JSON.stringify(event.body)}`);\n    }\n  },\n  processError: async (err, context) => {\n    console.error(`Error on partition ${context.partitionId}: ${err.message}`);\n  },\n});\n\n\u002F\u002F Stop after some time\nsetTimeout(async () => {\n  await subscription.close();\n  await consumer.close();\n}, 60000);\n```\n\n### Receive with Checkpointing (Production)\n\n```typescript\nimport { EventHubConsumerClient } from \"@azure\u002Fevent-hubs\";\nimport { ContainerClient } from \"@azure\u002Fstorage-blob\";\nimport { BlobCheckpointStore } from \"@azure\u002Feventhubs-checkpointstore-blob\";\n\nconst containerClient = new ContainerClient(\n  `https:\u002F\u002F${storageAccount}.blob.core.windows.net\u002F${containerName}`,\n  credential\n);\n\nconst checkpointStore = new BlobCheckpointStore(containerClient);\n\nconst consumer = new EventHubConsumerClient(\n  \"$Default\",\n  namespace,\n  eventHubName,\n  credential,\n  checkpointStore\n);\n\nconst subscription = consumer.subscribe({\n  processEvents: async (events, context) => {\n    for (const event of events) {\n      console.log(`Processing: ${JSON.stringify(event.body)}`);\n    }\n    \u002F\u002F Checkpoint after processing batch\n    if (events.length > 0) {\n      await context.updateCheckpoint(events[events.length - 1]);\n    }\n  },\n  processError: async (err, context) => {\n    console.error(`Error: ${err.message}`);\n  },\n});\n```\n\n### Receive from Specific Position\n\n```typescript\nconst subscription = consumer.subscribe({\n  processEvents: async (events, context) => { \u002F* ... *\u002F },\n  processError: async (err, context) => { \u002F* ... *\u002F },\n}, {\n  startPosition: {\n    \u002F\u002F Start from beginning\n    \"0\": { offset: \"@earliest\" },\n    \u002F\u002F Start from end (new events only)\n    \"1\": { offset: \"@latest\" },\n    \u002F\u002F Start from specific offset\n    \"2\": { offset: \"12345\" },\n    \u002F\u002F Start from specific time\n    \"3\": { enqueuedOn: new Date(\"2024-01-01\") },\n  },\n});\n```\n\n## Event Hub Properties\n\n```typescript\n\u002F\u002F Get hub info\nconst hubProperties = await producer.getEventHubProperties();\nconsole.log(`Partitions: ${hubProperties.partitionIds}`);\n\n\u002F\u002F Get partition info\nconst partitionProperties = await producer.getPartitionProperties(\"0\");\nconsole.log(`Last sequence: ${partitionProperties.lastEnqueuedSequenceNumber}`);\n```\n\n## Batch Processing Options\n\n```typescript\nconst subscription = consumer.subscribe(\n  {\n    processEvents: async (events, context) => { \u002F* ... *\u002F },\n    processError: async (err, context) => { \u002F* ... *\u002F },\n  },\n  {\n    maxBatchSize: 100,           \u002F\u002F Max events per batch\n    maxWaitTimeInSeconds: 30,    \u002F\u002F Max wait for batch\n  }\n);\n```\n\n## Key Types\n\n```typescript\nimport {\n  EventHubProducerClient,\n  EventHubConsumerClient,\n  EventData,\n  ReceivedEventData,\n  PartitionContext,\n  Subscription,\n  SubscriptionEventHandlers,\n  CreateBatchOptions,\n  EventPosition,\n} from \"@azure\u002Fevent-hubs\";\n\nimport { BlobCheckpointStore } from \"@azure\u002Feventhubs-checkpointstore-blob\";\n```\n\n## Event Properties\n\n```typescript\n\u002F\u002F Send with properties\nconst batch = await producer.createBatch();\nbatch.tryAdd({\n  body: { data: \"payload\" },\n  properties: {\n    eventType: \"telemetry\",\n    deviceId: \"sensor-1\",\n  },\n  contentType: \"application\u002Fjson\",\n  correlationId: \"request-123\",\n});\n\n\u002F\u002F Access in receiver\nconsumer.subscribe({\n  processEvents: async (events, context) => {\n    for (const event of events) {\n      console.log(`Type: ${event.properties?.eventType}`);\n      console.log(`Sequence: ${event.sequenceNumber}`);\n      console.log(`Enqueued: ${event.enqueuedTimeUtc}`);\n      console.log(`Offset: ${event.offset}`);\n    }\n  },\n});\n```\n\n## Error Handling\n\n```typescript\nconsumer.subscribe({\n  processEvents: async (events, context) => {\n    try {\n      for (const event of events) {\n        await processEvent(event);\n      }\n      await context.updateCheckpoint(events[events.length - 1]);\n    } catch (error) {\n      \u002F\u002F Don't checkpoint on error - events will be reprocessed\n      console.error(\"Processing failed:\", error);\n    }\n  },\n  processError: async (err, context) => {\n    if (err.name === \"MessagingError\") {\n      \u002F\u002F Transient error - SDK will retry\n      console.warn(\"Transient error:\", err.message);\n    } else {\n      \u002F\u002F Fatal error\n      console.error(\"Fatal error:\", err);\n    }\n  },\n});\n```\n\n## Best Practices\n\n1. **Use checkpointing** - Always checkpoint in production for exactly-once processing\n2. **Batch sends** - Use `createBatch()` for efficient sending\n3. **Partition keys** - Use partition keys to ensure ordering for related events\n4. **Consumer groups** - Use separate consumer groups for different processing pipelines\n5. **Handle errors gracefully** - Don't checkpoint on processing failures\n6. **Close clients** - Always close producer\u002Fconsumer when done\n7. **Monitor lag** - Track `lastEnqueuedSequenceNumber` vs processed sequence\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Azure Event Hubs SDK for TypeScript\n\nHigh-throughput event streaming and real-time data ingestion.\n\n## Installation\n\n```bash\nnpm install @azure\u002Fevent-hubs @azure\u002Fidentity\n```\n\nFor checkpointing with consumer groups:\n```bash\nnpm install @azure\u002Feventhubs-checkpointstore-blob @azure\u002Fstorage-blob\n```\n\n## Environment Variables\n\n```bash\nEVENTHUB_NAMESPACE=\u003Cnamespace>.servicebus.windows.net\nEVENTHUB_NAME=my-eventhub\nSTORAGE_ACCOUNT_NAME=\u003Cstorage-account>\nSTORAGE_CONTAINER_NAME=checkpoints\n```\n\n## Authentication\n\n```typescript\nimport { EventHubProducerClient, EventHubConsumerClient } from \"@azure\u002Fevent-hubs\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\n\nconst fullyQualifiedNamespace = process.env.EVENTHUB_NAMESPACE!;\nconst eventHubName = process.env.EVENTHUB_NAME!;\nconst credential = new DefaultAzureCredential();\n\n\u002F\u002F Producer\nconst producer = new EventHubProducerClient(fullyQualifiedNamespace, eventHubName, credential);\n\n\u002F\u002F Consumer\nconst consumer = new EventHubConsumerClient(\n  \"$Default\", \u002F\u002F Consumer group\n  fullyQualifiedNamespace,\n  eventHubName,\n  credential\n);\n```\n\n## Core Workflow\n\n### Send Events\n\n```typescript\nconst producer = new EventHubProducerClient(namespace, eventHubName, credential);\n\n\u002F\u002F Create batch and add events\nconst batch = await producer.createBatch();\nbatch.tryAdd({ body: { temperature: 72.5, deviceId: \"sensor-1\" } });\nbatch.tryAdd({ body: { temperature: 68.2, deviceId: \"sensor-2\" } });\n\nawait producer.sendBatch(batch);\nawait producer.close();\n```\n\n### Send to Specific Partition\n\n```typescript\n\u002F\u002F By partition ID\nconst batch = await producer.createBatch({ partitionId: \"0\" });\n\n\u002F\u002F By partition key (consistent hashing)\nconst batch = await producer.createBatch({ partitionKey: \"device-123\" });\n```\n\n### Receive Events (Simple)\n\n```typescript\nconst consumer = new EventHubConsumerClient(\"$Default\", namespace, eventHubName, credential);\n\nconst subscription = consumer.subscribe({\n  processEvents: async (events, context) => {\n    for (const event of events) {\n      console.log(`Partition: ${context.partitionId}, Body: ${JSON.stringify(event.body)}`);\n    }\n  },\n  processError: async (err, context) => {\n    console.error(`Error on partition ${context.partitionId}: ${err.message}`);\n  },\n});\n\n\u002F\u002F Stop after some time\nsetTimeout(async () => {\n  await subscription.close();\n  await consumer.close();\n}, 60000);\n```\n\n### Receive with Checkpointing (Production)\n\n```typescript\nimport { EventHubConsumerClient } from \"@azure\u002Fevent-hubs\";\nimport { ContainerClient } from \"@azure\u002Fstorage-blob\";\nimport { BlobCheckpointStore } from \"@azure\u002Feventhubs-checkpointstore-blob\";\n\nconst containerClient = new ContainerClient(\n  `https:\u002F\u002F${storageAccount}.blob.core.windows.net\u002F${containerName}`,\n  credential\n);\n\nconst checkpointStore = new BlobCheckpointStore(containerClient);\n\nconst consumer = new EventHubConsumerClient(\n  \"$Default\",\n  namespace,\n  eventHubName,\n  credential,\n  checkpointStore\n);\n\nconst subscription = consumer.subscribe({\n  processEvents: async (events, context) => {\n    for (const event of events) {\n      console.log(`Processing: ${JSON.stringify(event.body)}`);\n    }\n    \u002F\u002F Checkpoint after processing batch\n    if (events.length > 0) {\n      await context.updateCheckpoint(events[events.length - 1]);\n    }\n  },\n  processError: async (err, context) => {\n    console.error(`Error: ${err.message}`);\n  },\n});\n```\n\n### Receive from Specific Position\n\n```typescript\nconst subscription = consumer.subscribe({\n  processEvents: async (events, context) => { \u002F* ... *\u002F },\n  processError: async (err, context) => { \u002F* ... *\u002F },\n}, {\n  startPosition: {\n    \u002F\u002F Start from beginning\n    \"0\": { offset: \"@earliest\" },\n    \u002F\u002F Start from end (new events only)\n    \"1\": { offset: \"@latest\" },\n    \u002F\u002F Start from specific offset\n    \"2\": { offset: \"12345\" },\n    \u002F\u002F Start from specific time\n    \"3\": { enqueuedOn: new Date(\"2024-01-01\") },\n  },\n});\n```\n\n## Event Hub Properties\n\n```typescript\n\u002F\u002F Get hub info\nconst hubProperties = await producer.getEventHubProperties();\nconsole.log(`Partitions: ${hubProperties.partitionIds}`);\n\n\u002F\u002F Get partition info\nconst partitionProperties = await producer.getPartitionProperties(\"0\");\nconsole.log(`Last sequence: ${partitionProperties.lastEnqueuedSequenceNumber}`);\n```\n\n## Batch Processing Options\n\n```typescript\nconst subscription = consumer.subscribe(\n  {\n    processEvents: async (events, context) => { \u002F* ... *\u002F },\n    processError: async (err, context) => { \u002F* ... *\u002F },\n  },\n  {\n    maxBatchSize: 100,           \u002F\u002F Max events per batch\n    maxWaitTimeInSeconds: 30,    \u002F\u002F Max wait for batch\n  }\n);\n```\n\n## Key Types\n\n```typescript\nimport {\n  EventHubProducerClient,\n  EventHubConsumerClient,\n  EventData,\n  ReceivedEventData,\n  PartitionContext,\n  Subscription,\n  SubscriptionEventHandlers,\n  CreateBatchOptions,\n  EventPosition,\n} from \"@azure\u002Fevent-hubs\";\n\nimport { BlobCheckpointStore } from \"@azure\u002Feventhubs-checkpointstore-blob\";\n```\n\n## Event Properties\n\n```typescript\n\u002F\u002F Send with properties\nconst batch = await producer.createBatch();\nbatch.tryAdd({\n  body: { data: \"payload\" },\n  properties: {\n    eventType: \"telemetry\",\n    deviceId: \"sensor-1\",\n  },\n  contentType: \"application\u002Fjson\",\n  correlationId: \"request-123\",\n});\n\n\u002F\u002F Access in receiver\nconsumer.subscribe({\n  processEvents: async (events, context) => {\n    for (const event of events) {\n      console.log(`Type: ${event.properties?.eventType}`);\n      console.log(`Sequence: ${event.sequenceNumber}`);\n      console.log(`Enqueued: ${event.enqueuedTimeUtc}`);\n      console.log(`Offset: ${event.offset}`);\n    }\n  },\n});\n```\n\n## Error Handling\n\n```typescript\nconsumer.subscribe({\n  processEvents: async (events, context) => {\n    try {\n      for (const event of events) {\n        await processEvent(event);\n      }\n      await context.updateCheckpoint(events[events.length - 1]);\n    } catch (error) {\n      \u002F\u002F Don't checkpoint on error - events will be reprocessed\n      console.error(\"Processing failed:\", error);\n    }\n  },\n  processError: async (err, context) => {\n    if (err.name === \"MessagingError\") {\n      \u002F\u002F Transient error - SDK will retry\n      console.warn(\"Transient error:\", err.message);\n    } else {\n      \u002F\u002F Fatal error\n      console.error(\"Fatal error:\", err);\n    }\n  },\n});\n```\n\n## Best Practices\n\n1. **Use checkpointing** - Always checkpoint in production for exactly-once processing\n2. **Batch sends** - Use `createBatch()` for efficient sending\n3. **Partition keys** - Use partition keys to ensure ordering for related events\n4. **Consumer groups** - Use separate consumer groups for different processing pipelines\n5. **Handle errors gracefully** - Don't checkpoint on processing failures\n6. **Close clients** - Always close producer\u002Fconsumer when done\n7. **Monitor lag** - Track `lastEnqueuedSequenceNumber` vs processed sequence\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{"name":5,"risk":32,"source":26,"date_added":33,"description":7},"unknown","2026-02-27","main","a50a3aa6b39fb0e1b7db88bef1bfc9c93606e126","modules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fazure-eventhub-ts",0,"https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant","https:\u002F\u002Fgithub.com\u002FSam-06060","Mobile Application Developer | Kotlin | Flutter, KMP, Swfit, Android,Swift UI | Building at Saar It Resources | Creator of Jarvis (AI Assistant)","2026-06-23 05:13:38",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add Sam-06060\u002Fjarvis-assistant --skill azure-eventhub-ts",{"tool":48,"command":49},"bunx","bunx skills add Sam-06060\u002Fjarvis-assistant --skill azure-eventhub-ts",{"tool":51,"command":52},"pnpm","pnpm dlx skills add Sam-06060\u002Fjarvis-assistant --skill azure-eventhub-ts","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fazure-eventhub-ts\u002FSKILL.md",true,[56,62],{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"SOURCE.md","REFERENCE","参考文档",178,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fheyanon-pumpfun\u002FSOURCE.md",{"path":63,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":64,"sourceHtmlUrl":65},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fheyanon-pumpfun\u002FTRUST.auto.yaml",[67,80,96,123,142,169],{"skillNo":68,"name":69,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":77,"publishedAt":27},"01M6GDRVS6FXX3ESH0C9DW01C0","test_skill","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fscratch\u002Ftest_skill\u002FSKILL.md",[72],{"categoryNo":73,"categoryName":74,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[78,79],"Test Skill","test",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":27},"01M6GDRQ40HX22MA6XWC31RHHK","zustand-store-ts","Create Zustand stores following established patterns with proper TypeScript types and middleware.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzustand-store-ts\u002FSKILL.md",[],[87,88,89,90,91,92,93,26,94,95],"zustand store ts","zustand","store","with","types","middleware","patterns","create","typescript",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":105,"publishedAt":27},"01M6GDRKEA0WE670SPFWX5GKCN","zoom-automation","Automate Zoom meeting creation, management, recordings, webinars, and participant tracking via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoom-automation\u002FSKILL.md",[102],{"categoryNo":103,"categoryName":104,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000023","Skill与智能体开发",[106,107,108,109,110,111,112,113,114,115,116,117,118,119,26,120,121,122],"automation","zoom automation","zoom","first","Tools","search","MCP","via","meeting","automate","critical","creation","webinars","composio","recordings","management","tracking",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":130,"publishedAt":27},"01M6GDRFS1452PC71JQ38S24HR","zoho-crm-automation","Automate Zoho CRM tasks via Rube MCP (Composio): create\u002Fupdate records, search contacts, manage leads, and convert leads. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoho-crm-automation\u002FSKILL.md",[129],{"categoryNo":103,"categoryName":104,"taxonomyType":75,"taxonomyTypeDesc":76},[131,106,132,133,134,135,136,26,111,137,119,138,116,115,110,139,94,140,112,141],"crm automation","zoho crm","crm","zoho crm automation","zoho","leads","contacts","records","update","tasks","manage",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":151,"publishedAt":27},"01M6GDRCKQBAVTGHX5XBH26KPZ","zod-validation-expert","Expert in Zod — TypeScript-first schema validation. Covers parsing, custom errors, refinements, type inference, and integration with React Hook Form, Next.js, and tRPC.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzod-validation-expert\u002FSKILL.md",[148],{"categoryNo":149,"categoryName":150,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000009","前端开发",[152,153,154,155,156,95,157,158,159,160,161,162,90,163,164,165,166,26,167,168],"expert","zod","zod validation expert","validation","react","safe","parsing","errors","schema validation","react hook form","hook","trpc","form","type","next","schema","Next.js",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":176,"publishedAt":27},"01M6GDR658B08K4MY0RWD4A6EH","zeroize-audit","Detects missing zeroization of sensitive data in source code and identifies zeroization removed by compiler optimizations, with assembly-level analysis, and control-flow verification. Use for auditing C\u002FC++\u002FRust code handling secrets, keys, passwords, or other sensitive data.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzeroize-audit\u002FSKILL.md",[175],{"categoryNo":103,"categoryName":104,"taxonomyType":75,"taxonomyTypeDesc":76},[177,178,179,180,181,182,183,184,26,185,186,187,188,189,23,190,191,192,193,112],"zeroize audit","audit","write","passwords","get","project","c++","activate","assembly","read","Bash","secrets","analysis","flow","verification","code","rust"]