[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CS7V0HH66AS3V2KSB0ZX09":3,"skill-same:01M6CS7V0HH66AS3V2KSB0ZX09":54},{"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":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":36,"ownerHtmlUrl":37,"ownerBlogUrl":6,"ownerDescription":38,"updatedAt":39,"install":40,"resources":53},"01M6CS7V0HH66AS3V2KSB0ZX09","azure-servicebus-ts",null,"Enterprise messaging with queues, topics, and subscriptions.","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-servicebus-ts\u002FSKILL.md",[],[19,20,21,22,23,24],"azure","azure servicebus ts","messaging","Enterprise","subscriptions","community","2026-11-10 10:12:30",false,"---\nname: azure-servicebus-ts\ndescription: \"Enterprise messaging with queues, topics, and subscriptions.\"\nrisk: unknown\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# Azure Service Bus SDK for TypeScript\n\nEnterprise messaging with queues, topics, and subscriptions.\n\n## Installation\n\n```bash\nnpm install @azure\u002Fservice-bus @azure\u002Fidentity\n```\n\n## Environment Variables\n\n```bash\nSERVICEBUS_NAMESPACE=\u003Cnamespace>.servicebus.windows.net\nSERVICEBUS_QUEUE_NAME=my-queue\nSERVICEBUS_TOPIC_NAME=my-topic\nSERVICEBUS_SUBSCRIPTION_NAME=my-subscription\n```\n\n## Authentication\n\n```typescript\nimport { ServiceBusClient } from \"@azure\u002Fservice-bus\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\n\nconst fullyQualifiedNamespace = process.env.SERVICEBUS_NAMESPACE!;\nconst client = new ServiceBusClient(fullyQualifiedNamespace, new DefaultAzureCredential());\n```\n\n## Core Workflow\n\n### Send Messages to Queue\n\n```typescript\nconst sender = client.createSender(\"my-queue\");\n\n\u002F\u002F Single message\nawait sender.sendMessages({\n  body: { orderId: \"12345\", amount: 99.99 },\n  contentType: \"application\u002Fjson\",\n});\n\n\u002F\u002F Batch messages\nconst batch = await sender.createMessageBatch();\nbatch.tryAddMessage({ body: \"Message 1\" });\nbatch.tryAddMessage({ body: \"Message 2\" });\nawait sender.sendMessages(batch);\n\nawait sender.close();\n```\n\n### Receive Messages from Queue\n\n```typescript\nconst receiver = client.createReceiver(\"my-queue\");\n\n\u002F\u002F Receive batch\nconst messages = await receiver.receiveMessages(10, { maxWaitTimeInMs: 5000 });\nfor (const message of messages) {\n  console.log(`Received: ${message.body}`);\n  await receiver.completeMessage(message);\n}\n\nawait receiver.close();\n```\n\n### Subscribe to Messages (Event-Driven)\n\n```typescript\nconst receiver = client.createReceiver(\"my-queue\");\n\nconst subscription = receiver.subscribe({\n  processMessage: async (message) => {\n    console.log(`Processing: ${message.body}`);\n    \u002F\u002F Message auto-completed on success\n  },\n  processError: async (args) => {\n    console.error(`Error: ${args.error}`);\n  },\n});\n\n\u002F\u002F Stop after some time\nsetTimeout(async () => {\n  await subscription.close();\n  await receiver.close();\n}, 60000);\n```\n\n### Topics and Subscriptions\n\n```typescript\n\u002F\u002F Send to topic\nconst topicSender = client.createSender(\"my-topic\");\nawait topicSender.sendMessages({\n  body: { event: \"order.created\", data: { orderId: \"123\" } },\n  applicationProperties: { eventType: \"order.created\" },\n});\n\n\u002F\u002F Receive from subscription\nconst subscriptionReceiver = client.createReceiver(\"my-topic\", \"my-subscription\");\nconst messages = await subscriptionReceiver.receiveMessages(10);\n```\n\n## Message Sessions\n\n```typescript\n\u002F\u002F Send session message\nconst sender = client.createSender(\"session-queue\");\nawait sender.sendMessages({\n  body: { step: 1, data: \"First step\" },\n  sessionId: \"workflow-123\",\n});\n\n\u002F\u002F Receive session messages\nconst sessionReceiver = await client.acceptSession(\"session-queue\", \"workflow-123\");\nconst messages = await sessionReceiver.receiveMessages(10);\n\n\u002F\u002F Get\u002Fset session state\nconst state = await sessionReceiver.getSessionState();\nawait sessionReceiver.setSessionState(Buffer.from(JSON.stringify({ progress: 50 })));\n\nawait sessionReceiver.close();\n```\n\n## Dead-Letter Handling\n\n```typescript\n\u002F\u002F Move to dead-letter\nawait receiver.deadLetterMessage(message, {\n  deadLetterReason: \"Validation failed\",\n  deadLetterErrorDescription: \"Missing required field: orderId\",\n});\n\n\u002F\u002F Process dead-letter queue\nconst dlqReceiver = client.createReceiver(\"my-queue\", { subQueueType: \"deadLetter\" });\nconst dlqMessages = await dlqReceiver.receiveMessages(10);\nfor (const msg of dlqMessages) {\n  console.log(`DLQ Reason: ${msg.deadLetterReason}`);\n  \u002F\u002F Reprocess or log\n  await dlqReceiver.completeMessage(msg);\n}\n```\n\n## Scheduled Messages\n\n```typescript\nconst sender = client.createSender(\"my-queue\");\n\n\u002F\u002F Schedule for future delivery\nconst scheduledTime = new Date(Date.now() + 60000); \u002F\u002F 1 minute from now\nconst sequenceNumber = await sender.scheduleMessages(\n  { body: \"Delayed message\" },\n  scheduledTime\n);\n\n\u002F\u002F Cancel scheduled message\nawait sender.cancelScheduledMessages(sequenceNumber);\n```\n\n## Message Deferral\n\n```typescript\n\u002F\u002F Defer message for later\nawait receiver.deferMessage(message);\n\n\u002F\u002F Receive deferred message by sequence number\nconst deferredMessage = await receiver.receiveDeferredMessages(message.sequenceNumber!);\nawait receiver.completeMessage(deferredMessage[0]);\n```\n\n## Peek Messages (Non-Destructive)\n\n```typescript\nconst receiver = client.createReceiver(\"my-queue\");\n\n\u002F\u002F Peek without removing\nconst peekedMessages = await receiver.peekMessages(10);\nfor (const msg of peekedMessages) {\n  console.log(`Peeked: ${msg.body}`);\n}\n```\n\n## Key Types\n\n```typescript\nimport {\n  ServiceBusClient,\n  ServiceBusSender,\n  ServiceBusReceiver,\n  ServiceBusSessionReceiver,\n  ServiceBusMessage,\n  ServiceBusReceivedMessage,\n  ProcessMessageCallback,\n  ProcessErrorCallback,\n} from \"@azure\u002Fservice-bus\";\n```\n\n## Receive Modes\n\n```typescript\n\u002F\u002F Peek-Lock (default) - message locked until completed\u002Fabandoned\nconst receiver = client.createReceiver(\"my-queue\", { receiveMode: \"peekLock\" });\nawait receiver.completeMessage(message);   \u002F\u002F Remove from queue\nawait receiver.abandonMessage(message);    \u002F\u002F Return to queue\nawait receiver.deferMessage(message);      \u002F\u002F Defer for later\nawait receiver.deadLetterMessage(message); \u002F\u002F Move to DLQ\n\n\u002F\u002F Receive-and-Delete - message removed immediately\nconst receiver = client.createReceiver(\"my-queue\", { receiveMode: \"receiveAndDelete\" });\n```\n\n## Best Practices\n\n1. **Use Entra ID auth** - Avoid connection strings in production\n2. **Reuse clients** - Create `ServiceBusClient` once, share across senders\u002Freceivers\n3. **Close resources** - Always close senders\u002Freceivers when done\n4. **Handle errors** - Implement `processError` callback for subscription receivers\n5. **Use sessions for ordering** - When message order matters within a group\n6. **Configure dead-letter** - Always handle DLQ messages\n7. **Batch sends** - Use `createMessageBatch()` for multiple messages\n\n## Reference Documentation\n\nFor detailed patterns, see:\n\n- Queues vs Topics Patterns - Queue\u002Ftopic patterns, sessions, receive modes, message settlement\n- Error Handling and Reliability - ServiceBusError codes, DLQ handling, lock renewal, graceful shutdown\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Azure Service Bus SDK for TypeScript\n\nEnterprise messaging with queues, topics, and subscriptions.\n\n## Installation\n\n```bash\nnpm install @azure\u002Fservice-bus @azure\u002Fidentity\n```\n\n## Environment Variables\n\n```bash\nSERVICEBUS_NAMESPACE=\u003Cnamespace>.servicebus.windows.net\nSERVICEBUS_QUEUE_NAME=my-queue\nSERVICEBUS_TOPIC_NAME=my-topic\nSERVICEBUS_SUBSCRIPTION_NAME=my-subscription\n```\n\n## Authentication\n\n```typescript\nimport { ServiceBusClient } from \"@azure\u002Fservice-bus\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\n\nconst fullyQualifiedNamespace = process.env.SERVICEBUS_NAMESPACE!;\nconst client = new ServiceBusClient(fullyQualifiedNamespace, new DefaultAzureCredential());\n```\n\n## Core Workflow\n\n### Send Messages to Queue\n\n```typescript\nconst sender = client.createSender(\"my-queue\");\n\n\u002F\u002F Single message\nawait sender.sendMessages({\n  body: { orderId: \"12345\", amount: 99.99 },\n  contentType: \"application\u002Fjson\",\n});\n\n\u002F\u002F Batch messages\nconst batch = await sender.createMessageBatch();\nbatch.tryAddMessage({ body: \"Message 1\" });\nbatch.tryAddMessage({ body: \"Message 2\" });\nawait sender.sendMessages(batch);\n\nawait sender.close();\n```\n\n### Receive Messages from Queue\n\n```typescript\nconst receiver = client.createReceiver(\"my-queue\");\n\n\u002F\u002F Receive batch\nconst messages = await receiver.receiveMessages(10, { maxWaitTimeInMs: 5000 });\nfor (const message of messages) {\n  console.log(`Received: ${message.body}`);\n  await receiver.completeMessage(message);\n}\n\nawait receiver.close();\n```\n\n### Subscribe to Messages (Event-Driven)\n\n```typescript\nconst receiver = client.createReceiver(\"my-queue\");\n\nconst subscription = receiver.subscribe({\n  processMessage: async (message) => {\n    console.log(`Processing: ${message.body}`);\n    \u002F\u002F Message auto-completed on success\n  },\n  processError: async (args) => {\n    console.error(`Error: ${args.error}`);\n  },\n});\n\n\u002F\u002F Stop after some time\nsetTimeout(async () => {\n  await subscription.close();\n  await receiver.close();\n}, 60000);\n```\n\n### Topics and Subscriptions\n\n```typescript\n\u002F\u002F Send to topic\nconst topicSender = client.createSender(\"my-topic\");\nawait topicSender.sendMessages({\n  body: { event: \"order.created\", data: { orderId: \"123\" } },\n  applicationProperties: { eventType: \"order.created\" },\n});\n\n\u002F\u002F Receive from subscription\nconst subscriptionReceiver = client.createReceiver(\"my-topic\", \"my-subscription\");\nconst messages = await subscriptionReceiver.receiveMessages(10);\n```\n\n## Message Sessions\n\n```typescript\n\u002F\u002F Send session message\nconst sender = client.createSender(\"session-queue\");\nawait sender.sendMessages({\n  body: { step: 1, data: \"First step\" },\n  sessionId: \"workflow-123\",\n});\n\n\u002F\u002F Receive session messages\nconst sessionReceiver = await client.acceptSession(\"session-queue\", \"workflow-123\");\nconst messages = await sessionReceiver.receiveMessages(10);\n\n\u002F\u002F Get\u002Fset session state\nconst state = await sessionReceiver.getSessionState();\nawait sessionReceiver.setSessionState(Buffer.from(JSON.stringify({ progress: 50 })));\n\nawait sessionReceiver.close();\n```\n\n## Dead-Letter Handling\n\n```typescript\n\u002F\u002F Move to dead-letter\nawait receiver.deadLetterMessage(message, {\n  deadLetterReason: \"Validation failed\",\n  deadLetterErrorDescription: \"Missing required field: orderId\",\n});\n\n\u002F\u002F Process dead-letter queue\nconst dlqReceiver = client.createReceiver(\"my-queue\", { subQueueType: \"deadLetter\" });\nconst dlqMessages = await dlqReceiver.receiveMessages(10);\nfor (const msg of dlqMessages) {\n  console.log(`DLQ Reason: ${msg.deadLetterReason}`);\n  \u002F\u002F Reprocess or log\n  await dlqReceiver.completeMessage(msg);\n}\n```\n\n## Scheduled Messages\n\n```typescript\nconst sender = client.createSender(\"my-queue\");\n\n\u002F\u002F Schedule for future delivery\nconst scheduledTime = new Date(Date.now() + 60000); \u002F\u002F 1 minute from now\nconst sequenceNumber = await sender.scheduleMessages(\n  { body: \"Delayed message\" },\n  scheduledTime\n);\n\n\u002F\u002F Cancel scheduled message\nawait sender.cancelScheduledMessages(sequenceNumber);\n```\n\n## Message Deferral\n\n```typescript\n\u002F\u002F Defer message for later\nawait receiver.deferMessage(message);\n\n\u002F\u002F Receive deferred message by sequence number\nconst deferredMessage = await receiver.receiveDeferredMessages(message.sequenceNumber!);\nawait receiver.completeMessage(deferredMessage[0]);\n```\n\n## Peek Messages (Non-Destructive)\n\n```typescript\nconst receiver = client.createReceiver(\"my-queue\");\n\n\u002F\u002F Peek without removing\nconst peekedMessages = await receiver.peekMessages(10);\nfor (const msg of peekedMessages) {\n  console.log(`Peeked: ${msg.body}`);\n}\n```\n\n## Key Types\n\n```typescript\nimport {\n  ServiceBusClient,\n  ServiceBusSender,\n  ServiceBusReceiver,\n  ServiceBusSessionReceiver,\n  ServiceBusMessage,\n  ServiceBusReceivedMessage,\n  ProcessMessageCallback,\n  ProcessErrorCallback,\n} from \"@azure\u002Fservice-bus\";\n```\n\n## Receive Modes\n\n```typescript\n\u002F\u002F Peek-Lock (default) - message locked until completed\u002Fabandoned\nconst receiver = client.createReceiver(\"my-queue\", { receiveMode: \"peekLock\" });\nawait receiver.completeMessage(message);   \u002F\u002F Remove from queue\nawait receiver.abandonMessage(message);    \u002F\u002F Return to queue\nawait receiver.deferMessage(message);      \u002F\u002F Defer for later\nawait receiver.deadLetterMessage(message); \u002F\u002F Move to DLQ\n\n\u002F\u002F Receive-and-Delete - message removed immediately\nconst receiver = client.createReceiver(\"my-queue\", { receiveMode: \"receiveAndDelete\" });\n```\n\n## Best Practices\n\n1. **Use Entra ID auth** - Avoid connection strings in production\n2. **Reuse clients** - Create `ServiceBusClient` once, share across senders\u002Freceivers\n3. **Close resources** - Always close senders\u002Freceivers when done\n4. **Handle errors** - Implement `processError` callback for subscription receivers\n5. **Use sessions for ordering** - When message order matters within a group\n6. **Configure dead-letter** - Always handle DLQ messages\n7. **Batch sends** - Use `createMessageBatch()` for multiple messages\n\n## Reference Documentation\n\nFor detailed patterns, see:\n\n- Queues vs Topics Patterns - Queue\u002Ftopic patterns, sessions, receive modes, message settlement\n- Error Handling and Reliability - ServiceBusError codes, DLQ handling, lock renewal, graceful shutdown\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{"name":5,"risk":30,"source":24,"date_added":31,"description":7},"unknown","2026-02-27","main","a50a3aa6b39fb0e1b7db88bef1bfc9c93606e126","modules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fazure-servicebus-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":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add Sam-06060\u002Fjarvis-assistant --skill azure-servicebus-ts",{"tool":46,"command":47},"bunx","bunx skills add Sam-06060\u002Fjarvis-assistant --skill azure-servicebus-ts",{"tool":49,"command":50},"pnpm","pnpm dlx skills add Sam-06060\u002Fjarvis-assistant --skill azure-servicebus-ts","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fazure-servicebus-ts\u002FSKILL.md",true,[],[55,68,84,111,130,157],{"skillNo":56,"name":57,"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":58,"categories":59,"keywords":65,"publishedAt":25},"01M6GDRVS6FXX3ESH0C9DW01C0","test_skill","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fscratch\u002Ftest_skill\u002FSKILL.md",[60],{"categoryNo":61,"categoryName":62,"taxonomyType":63,"taxonomyTypeDesc":64},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[66,67],"Test Skill","test",{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":25},"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",[],[75,76,77,78,79,80,81,24,82,83],"zustand store ts","zustand","store","with","types","middleware","patterns","create","typescript",{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":93,"publishedAt":25},"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",[90],{"categoryNo":91,"categoryName":92,"taxonomyType":63,"taxonomyTypeDesc":64},"01JBSEEDCAT000000000000023","Skill与智能体开发",[94,95,96,97,98,99,100,101,102,103,104,105,106,107,24,108,109,110],"automation","zoom automation","zoom","first","Tools","search","MCP","via","meeting","automate","critical","creation","webinars","composio","recordings","management","tracking",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":118,"publishedAt":25},"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",[117],{"categoryNo":91,"categoryName":92,"taxonomyType":63,"taxonomyTypeDesc":64},[119,94,120,121,122,123,124,24,99,125,107,126,104,103,98,127,82,128,100,129],"crm automation","zoho crm","crm","zoho crm automation","zoho","leads","contacts","records","update","tasks","manage",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":139,"publishedAt":25},"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",[136],{"categoryNo":137,"categoryName":138,"taxonomyType":63,"taxonomyTypeDesc":64},"01JBSEEDCAT000000000000009","前端开发",[140,141,142,143,144,83,145,146,147,148,149,150,78,151,152,153,154,24,155,156],"expert","zod","zod validation expert","validation","react","safe","parsing","errors","schema validation","react hook form","hook","trpc","form","type","next","schema","Next.js",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":164,"publishedAt":25},"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",[163],{"categoryNo":91,"categoryName":92,"taxonomyType":63,"taxonomyTypeDesc":64},[165,166,167,168,169,170,171,172,24,173,174,175,176,177,178,179,180,181,182,100],"zeroize audit","audit","write","passwords","get","project","c++","activate","assembly","read","Bash","secrets","analysis","data","flow","verification","code","rust"]