{"id":"5e956a84-8784-4b2e-893d-59c20a554206","shortId":"3uVvnu","kind":"skill","title":"azure-servicebus-dotnet","tagline":"Azure Service Bus SDK for .NET. Enterprise messaging with queues, topics, subscriptions, and sessions.","description":"# Azure.Messaging.ServiceBus (.NET)\n\nEnterprise messaging SDK for reliable message delivery with queues, topics, subscriptions, and sessions.\n\n## Installation\n\n```bash\ndotnet add package Azure.Messaging.ServiceBus\ndotnet add package Azure.Identity\n```\n\n**Current Version**: v7.20.1 (stable)\n\n## Environment Variables\n\n```bash\nAZURE_SERVICEBUS_FULLY_QUALIFIED_NAMESPACE=<namespace>.servicebus.windows.net\n# Or connection string (less secure)\nAZURE_SERVICEBUS_CONNECTION_STRING=Endpoint=sb://...\n```\n\n## Authentication\n\n### Microsoft Entra ID (Recommended)\n\n```csharp\nusing Azure.Identity;\nusing Azure.Messaging.ServiceBus;\n\nstring fullyQualifiedNamespace = \"<namespace>.servicebus.windows.net\";\nawait using ServiceBusClient client = new(fullyQualifiedNamespace, new DefaultAzureCredential());\n```\n\n### Connection String\n\n```csharp\nstring connectionString = \"<connection_string>\";\nawait using ServiceBusClient client = new(connectionString);\n```\n\n### ASP.NET Core Dependency Injection\n\n```csharp\nservices.AddAzureClients(builder =>\n{\n    builder.AddServiceBusClientWithNamespace(\"<namespace>.servicebus.windows.net\");\n    builder.UseCredential(new DefaultAzureCredential());\n});\n```\n\n## Client Hierarchy\n\n```\nServiceBusClient\n├── CreateSender(queueOrTopicName)      → ServiceBusSender\n├── CreateReceiver(queueName)           → ServiceBusReceiver\n├── CreateReceiver(topicName, subName)  → ServiceBusReceiver\n├── AcceptNextSessionAsync(queueName)   → ServiceBusSessionReceiver\n├── CreateProcessor(queueName)          → ServiceBusProcessor\n└── CreateSessionProcessor(queueName)   → ServiceBusSessionProcessor\n\nServiceBusAdministrationClient (separate client for CRUD)\n```\n\n## Core Workflows\n\n### 1. Send Messages\n\n```csharp\nawait using ServiceBusClient client = new(fullyQualifiedNamespace, new DefaultAzureCredential());\nServiceBusSender sender = client.CreateSender(\"my-queue\");\n\n// Single message\nServiceBusMessage message = new(\"Hello world!\");\nawait sender.SendMessageAsync(message);\n\n// Safe batching (recommended)\nusing ServiceBusMessageBatch batch = await sender.CreateMessageBatchAsync();\nif (batch.TryAddMessage(new ServiceBusMessage(\"Message 1\")))\n{\n    // Message added successfully\n}\nif (batch.TryAddMessage(new ServiceBusMessage(\"Message 2\")))\n{\n    // Message added successfully\n}\nawait sender.SendMessagesAsync(batch);\n```\n\n### 2. Receive Messages\n\n```csharp\nServiceBusReceiver receiver = client.CreateReceiver(\"my-queue\");\n\n// Single message\nServiceBusReceivedMessage message = await receiver.ReceiveMessageAsync();\nstring body = message.Body.ToString();\nConsole.WriteLine(body);\n\n// Complete the message (removes from queue)\nawait receiver.CompleteMessageAsync(message);\n\n// Batch receive\nIReadOnlyList<ServiceBusReceivedMessage> messages = await receiver.ReceiveMessagesAsync(maxMessages: 10);\nforeach (var msg in messages)\n{\n    Console.WriteLine(msg.Body.ToString());\n    await receiver.CompleteMessageAsync(msg);\n}\n```\n\n### 3. Message Settlement\n\n```csharp\n// Complete - removes message from queue\nawait receiver.CompleteMessageAsync(message);\n\n// Abandon - releases lock, message can be received again\nawait receiver.AbandonMessageAsync(message);\n\n// Defer - prevents normal receive, use ReceiveDeferredMessageAsync\nawait receiver.DeferMessageAsync(message);\n\n// Dead Letter - moves to dead letter subqueue\nawait receiver.DeadLetterMessageAsync(message, \"InvalidFormat\", \"Message body was not valid JSON\");\n```\n\n### 4. Background Processing with Processor\n\n```csharp\nServiceBusProcessor processor = client.CreateProcessor(\"my-queue\", new ServiceBusProcessorOptions\n{\n    AutoCompleteMessages = false,\n    MaxConcurrentCalls = 2\n});\n\nprocessor.ProcessMessageAsync += async (args) =>\n{\n    try\n    {\n        string body = args.Message.Body.ToString();\n        Console.WriteLine($\"Received: {body}\");\n        await args.CompleteMessageAsync(args.Message);\n    }\n    catch (Exception ex)\n    {\n        Console.WriteLine($\"Error processing: {ex.Message}\");\n        await args.AbandonMessageAsync(args.Message);\n    }\n};\n\nprocessor.ProcessErrorAsync += (args) =>\n{\n    Console.WriteLine($\"Error source: {args.ErrorSource}\");\n    Console.WriteLine($\"Entity: {args.EntityPath}\");\n    Console.WriteLine($\"Exception: {args.Exception}\");\n    return Task.CompletedTask;\n};\n\nawait processor.StartProcessingAsync();\n// ... application runs\nawait processor.StopProcessingAsync();\n```\n\n### 5. Sessions (Ordered Processing)\n\n```csharp\n// Send session message\nServiceBusMessage message = new(\"Hello\")\n{\n    SessionId = \"order-123\"\n};\nawait sender.SendMessageAsync(message);\n\n// Receive from next available session\nServiceBusSessionReceiver receiver = await client.AcceptNextSessionAsync(\"my-queue\");\n\n// Or receive from specific session\nServiceBusSessionReceiver receiver = await client.AcceptSessionAsync(\"my-queue\", \"order-123\");\n\n// Session state management\nawait receiver.SetSessionStateAsync(new BinaryData(\"processing\"));\nBinaryData state = await receiver.GetSessionStateAsync();\n\n// Renew session lock\nawait receiver.RenewSessionLockAsync();\n```\n\n### 6. Dead Letter Queue\n\n```csharp\n// Receive from dead letter queue\nServiceBusReceiver dlqReceiver = client.CreateReceiver(\"my-queue\", new ServiceBusReceiverOptions\n{\n    SubQueue = SubQueue.DeadLetter\n});\n\nServiceBusReceivedMessage dlqMessage = await dlqReceiver.ReceiveMessageAsync();\n\n// Access dead letter metadata\nstring reason = dlqMessage.DeadLetterReason;\nstring description = dlqMessage.DeadLetterErrorDescription;\nConsole.WriteLine($\"Dead letter reason: {reason} - {description}\");\n```\n\n### 7. Topics and Subscriptions\n\n```csharp\n// Send to topic\nServiceBusSender topicSender = client.CreateSender(\"my-topic\");\nawait topicSender.SendMessageAsync(new ServiceBusMessage(\"Broadcast message\"));\n\n// Receive from subscription\nServiceBusReceiver subReceiver = client.CreateReceiver(\"my-topic\", \"my-subscription\");\nvar message = await subReceiver.ReceiveMessageAsync();\n```\n\n### 8. Administration (CRUD)\n\n```csharp\nvar adminClient = new ServiceBusAdministrationClient(\n    fullyQualifiedNamespace, \n    new DefaultAzureCredential());\n\n// Create queue\nvar options = new CreateQueueOptions(\"my-queue\")\n{\n    MaxDeliveryCount = 10,\n    LockDuration = TimeSpan.FromSeconds(30),\n    RequiresSession = true,\n    DeadLetteringOnMessageExpiration = true\n};\nQueueProperties queue = await adminClient.CreateQueueAsync(options);\n\n// Update queue\nqueue.LockDuration = TimeSpan.FromSeconds(60);\nawait adminClient.UpdateQueueAsync(queue);\n\n// Create topic and subscription\nawait adminClient.CreateTopicAsync(new CreateTopicOptions(\"my-topic\"));\nawait adminClient.CreateSubscriptionAsync(new CreateSubscriptionOptions(\"my-topic\", \"my-subscription\"));\n\n// Delete\nawait adminClient.DeleteQueueAsync(\"my-queue\");\n```\n\n### 9. Cross-Entity Transactions\n\n```csharp\nvar options = new ServiceBusClientOptions { EnableCrossEntityTransactions = true };\nawait using var client = new ServiceBusClient(connectionString, options);\n\nServiceBusReceiver receiverA = client.CreateReceiver(\"queueA\");\nServiceBusSender senderB = client.CreateSender(\"queueB\");\n\nServiceBusReceivedMessage receivedMessage = await receiverA.ReceiveMessageAsync();\n\nusing (var ts = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))\n{\n    await receiverA.CompleteMessageAsync(receivedMessage);\n    await senderB.SendMessageAsync(new ServiceBusMessage(\"Forwarded\"));\n    ts.Complete();\n}\n```\n\n## Key Types Reference\n\n| Type | Purpose |\n|------|---------|\n| `ServiceBusClient` | Main entry point, manages connection |\n| `ServiceBusSender` | Sends messages to queues/topics |\n| `ServiceBusReceiver` | Receives messages from queues/subscriptions |\n| `ServiceBusSessionReceiver` | Receives session messages |\n| `ServiceBusProcessor` | Background message processing |\n| `ServiceBusSessionProcessor` | Background session processing |\n| `ServiceBusAdministrationClient` | CRUD for queues/topics/subscriptions |\n| `ServiceBusMessage` | Message to send |\n| `ServiceBusReceivedMessage` | Received message with metadata |\n| `ServiceBusMessageBatch` | Batch of messages |\n\n## Best Practices\n\n1. **Use singletons** — Clients, senders, receivers, and processors are thread-safe\n2. **Always dispose** — Use `await using` or call `DisposeAsync()`\n3. **Dispose order** — Close senders/receivers/processors first, then client\n4. **Use DefaultAzureCredential** — Prefer over connection strings for production\n5. **Use processors for background work** — Handles lock renewal automatically\n6. **Use safe batching** — `CreateMessageBatchAsync()` and `TryAddMessage()`\n7. **Handle transient errors** — Use `ServiceBusException.Reason`\n8. **Configure transport** — Use `AmqpWebSockets` if ports 5671/5672 are blocked\n9. **Set appropriate lock duration** — Default is 30 seconds\n10. **Use sessions for ordering** — FIFO within a session\n\n## Error Handling\n\n```csharp\ntry\n{\n    await sender.SendMessageAsync(message);\n}\ncatch (ServiceBusException ex) when (ex.Reason == ServiceBusFailureReason.ServiceBusy)\n{\n    // Retry with backoff\n}\ncatch (ServiceBusException ex)\n{\n    Console.WriteLine($\"Service Bus Error: {ex.Reason} - {ex.Message}\");\n}\n```\n\n## Related SDKs\n\n| SDK | Purpose | Install |\n|-----|---------|---------|\n| `Azure.Messaging.ServiceBus` | Service Bus (this SDK) | `dotnet add package Azure.Messaging.ServiceBus` |\n| `Azure.Messaging.EventHubs` | Event streaming | `dotnet add package Azure.Messaging.EventHubs` |\n| `Azure.Messaging.EventGrid` | Event routing | `dotnet add package Azure.Messaging.EventGrid` |\n\n## Reference Links\n\n| Resource | URL |\n|----------|-----|\n| NuGet Package | https://www.nuget.org/packages/Azure.Messaging.ServiceBus |\n| API Reference | https://learn.microsoft.com/dotnet/api/azure.messaging.servicebus |\n| GitHub Source | https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/servicebus/Azure.Messaging.ServiceBus |\n| Troubleshooting | https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/servicebus/Azure.Messaging.ServiceBus/TROUBLESHOOTING.md |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["azure","servicebus","dotnet","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-azure-servicebus-dotnet","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-servicebus-dotnet","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34928 github stars · SKILL.md body (10,410 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T18:50:33.951Z","embedding":null,"createdAt":"2026-04-18T21:33:07.329Z","updatedAt":"2026-04-24T18:50:33.951Z","lastSeenAt":"2026-04-24T18:50:33.951Z","tsv":"'-123':369,398 '/azure/azure-sdk-for-net/blob/main/sdk/servicebus/azure.messaging.servicebus/troubleshooting.md':824 '/azure/azure-sdk-for-net/tree/main/sdk/servicebus/azure.messaging.servicebus':820 '/dotnet/api/azure.messaging.servicebus':815 '/packages/azure.messaging.servicebus':810 '1':140,181,660 '10':234,513,740 '2':190,197,311,672 '3':245,681 '30':516,738 '4':294,689 '5':355,698 '5671/5672':728 '6':416,708 '60':530 '7':456,715 '8':492,721 '9':561,731 'abandon':257 'acceptnextsessionasync':124 'access':440 'action':837 'ad':183,192 'add':37,41,785,792,799 'admincli':497 'adminclient.createqueueasync':524 'adminclient.createsubscriptionasync':546 'adminclient.createtopicasync':539 'adminclient.deletequeueasync':557 'adminclient.updatequeueasync':532 'administr':493 'alway':673 'amqpwebsocket':725 'api':811 'applic':351,831 'appropri':733 'arg':314,336 'args.abandonmessageasync':333 'args.completemessageasync':323 'args.entitypath':343 'args.errorsource':340 'args.exception':346 'args.message':324,334 'args.message.body.tostring':318 'ask':875 'asp.net':99 'async':313 'authent':67 'autocompletemessag':308 'automat':707 'avail':376 'await':80,93,144,165,174,194,211,224,231,242,254,265,274,284,322,332,349,353,370,380,392,402,409,414,438,470,490,523,531,538,545,556,573,591,599,602,676,753 'azur':2,5,51,62 'azure-servicebus-dotnet':1 'azure.identity':43,74 'azure.messaging.eventgrid':795,801 'azure.messaging.eventhubs':788,794 'azure.messaging.servicebus':19,39,76,779,787 'background':295,634,638,702 'backoff':764 'bash':35,50 'batch':169,173,196,227,655,711 'batch.tryaddmessage':177,186 'best':658 'binarydata':405,407 'block':730 'bodi':214,217,289,317,321 'boundari':883 'broadcast':474 'builder':105 'builder.addservicebusclientwithnamespace':106 'builder.usecredential':108 'bus':7,770,781 'call':679 'catch':325,756,765 'clarif':877 'clear':850 'client':83,96,111,135,147,576,663,688 'client.acceptnextsessionasync':381 'client.acceptsessionasync':393 'client.createprocessor':302 'client.createreceiver':203,428,481,583 'client.createsender':154,466,587 'close':684 'complet':218,249 'configur':722 'connect':58,64,88,618,694 'connectionstr':92,98,579 'console.writeline':216,240,319,328,337,341,344,450,768 'core':100,138 'creat':503,534 'createmessagebatchasync':712 'createprocessor':127 'createqueueopt':508 'createreceiv':117,120 'createsend':114 'createsessionprocessor':130 'createsubscriptionopt':548 'createtopicopt':541 'criteria':886 'cross':563 'cross-ent':562 'crud':137,494,642 'csharp':72,90,103,143,200,248,299,359,420,460,495,566,751 'current':44 'dead':277,281,417,423,441,451 'deadletteringonmessageexpir':519 'default':736 'defaultazurecredenti':87,110,151,502,691 'defer':268 'delet':555 'deliveri':27 'depend':101 'describ':838,854 'descript':448,455 'dispos':674,682 'disposeasync':680 'dlqmessag':437 'dlqmessage.deadlettererrordescription':449 'dlqmessage.deadletterreason':446 'dlqreceiv':427 'dlqreceiver.receivemessageasync':439 'dotnet':4,36,40,784,791,798 'durat':735 'enablecrossentitytransact':571 'endpoint':66 'enterpris':11,21 'entiti':342,564 'entra':69 'entri':615 'environ':48,866 'environment-specif':865 'error':329,338,718,749,771 'event':789,796 'ex':327,758,767 'ex.message':331,773 'ex.reason':760,772 'except':326,345 'execut':833 'expert':871 'fals':309 'fifo':745 'first':686 'foreach':235 'forward':606 'fulli':53 'fullyqualifiednamespac':78,85,149,500 'github':816 'github.com':819,823 'github.com/azure/azure-sdk-for-net/blob/main/sdk/servicebus/azure.messaging.servicebus/troubleshooting.md':822 'github.com/azure/azure-sdk-for-net/tree/main/sdk/servicebus/azure.messaging.servicebus':818 'handl':704,716,750 'hello':163,366 'hierarchi':112 'id':70 'inject':102 'input':880 'instal':34,778 'invalidformat':287 'ireadonlylist':229 'json':293 'key':608 'learn.microsoft.com':814 'learn.microsoft.com/dotnet/api/azure.messaging.servicebus':813 'less':60 'letter':278,282,418,424,442,452 'limit':842 'link':803 'lock':259,413,705,734 'lockdur':514 'main':614 'manag':401,617 'match':851 'maxconcurrentcal':310 'maxdeliverycount':512 'maxmessag':233 'messag':12,22,26,142,159,161,167,180,182,189,191,199,208,210,220,226,230,239,246,251,256,260,267,276,286,288,362,364,372,475,489,621,626,632,635,646,651,657,755 'message.body.tostring':215 'metadata':443,653 'microsoft':68 'miss':888 'move':279 'msg':237,244 'msg.body.tostring':241 'my-queu':155,204,303,382,394,429,509,558 'my-subscript':485,552 'my-top':467,482,542,549 'namespac':55 'net':10,20 'new':84,86,97,109,148,150,162,178,187,306,365,404,432,472,498,501,507,540,547,569,577,596,604 'next':375 'normal':270 'nuget':806 'option':506,525,568,580 'order':357,368,397,683,744 'output':860 'overview':841 'packag':38,42,786,793,800,807 'permiss':881 'point':616 'port':727 'practic':659 'prefer':692 'prevent':269 'process':296,330,358,406,636,640 'processor':298,301,667,700 'processor.processerrorasync':335 'processor.processmessageasync':312 'processor.startprocessingasync':350 'processor.stopprocessingasync':354 'product':697 'purpos':612,777 'qualifi':54 'queue':14,29,157,206,223,253,305,384,396,419,425,431,504,511,522,527,533,560 'queue.lockduration':528 'queuea':584 'queueb':588 'queuenam':118,125,128,131 'queueortopicnam':115 'queueproperti':521 'queues/subscriptions':628 'queues/topics':623 'queues/topics/subscriptions':644 'reason':445,453,454 'receiv':198,202,228,263,271,320,373,379,386,391,421,476,625,630,650,665 'receivedeferredmessageasync':273 'receivedmessag':590,601 'receiver.abandonmessageasync':266 'receiver.completemessageasync':225,243,255 'receiver.deadlettermessageasync':285 'receiver.defermessageasync':275 'receiver.getsessionstateasync':410 'receiver.receivemessageasync':212 'receiver.receivemessagesasync':232 'receiver.renewsessionlockasync':415 'receiver.setsessionstateasync':403 'receivera':582 'receivera.completemessageasync':600 'receivera.receivemessageasync':592 'recommend':71,170 'refer':610,802,812 'relat':774 'releas':258 'reliabl':25 'remov':221,250 'renew':411,706 'requir':879 'requiressess':517 'resourc':804 'retri':762 'return':347 'review':872 'rout':797 'run':352 'safe':168,671,710 'safeti':882 'scope':853 'sdk':8,23,776,783 'sdks':775 'second':739 'secur':61 'send':141,360,461,620,648 'sender':153,664 'sender.createmessagebatchasync':175 'sender.sendmessageasync':166,371,754 'sender.sendmessagesasync':195 'senderb':586 'senderb.sendmessageasync':603 'senders/receivers/processors':685 'separ':134 'servic':6,769,780 'servicebus':3,52,63 'servicebus.windows.net':56,79,107 'servicebusadministrationcli':133,499,641 'servicebuscli':82,95,113,146,578,613 'servicebusclientopt':570 'servicebusexcept':757,766 'servicebusexception.reason':720 'servicebusfailurereason.servicebusy':761 'servicebusmessag':160,179,188,363,473,605,645 'servicebusmessagebatch':172,654 'servicebusprocessor':129,300,633 'servicebusprocessoropt':307 'servicebusreceiv':119,123,201,426,479,581,624 'servicebusreceivedmessag':209,436,589,649 'servicebusreceiveropt':433 'servicebussend':116,152,464,585,619 'servicebussessionprocessor':132,637 'servicebussessionreceiv':126,378,390,629 'services.addazureclients':104 'session':18,33,356,361,377,389,399,412,631,639,742,748 'sessionid':367 'set':732 'settlement':247 'singl':158,207 'singleton':662 'skill':829,845 'skill-azure-servicebus-dotnet' 'sourc':339,817 'source-sickn33' 'specif':388,867 'stabl':47 'state':400,408 'stop':873 'stream':790 'string':59,65,77,89,91,213,316,444,447,695 'subnam':122 'subqueu':283,434 'subqueue.deadletter':435 'subreceiv':480 'subreceiver.receivemessageasync':491 'subscript':16,31,459,478,487,537,554 'substitut':863 'success':184,193,885 'task':849 'task.completedtask':348 'test':869 'thread':670 'thread-saf':669 'timespan.fromseconds':515,529 'topic':15,30,457,463,469,484,535,544,551 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'topicnam':121 'topicsend':465 'topicsender.sendmessageasync':471 'transact':565 'transactionscop':597 'transactionscopeasyncflowoption.enabled':598 'transient':717 'transport':723 'treat':858 'tri':315,752 'troubleshoot':821 'true':518,520,572 'tryaddmessag':714 'ts':595 'ts.complete':607 'type':609,611 'updat':526 'url':805 'use':73,75,81,94,145,171,272,574,593,661,675,677,690,699,709,719,724,741,827,843 'v7.20.1':46 'valid':292,868 'var':236,488,496,505,567,575,594 'variabl':49 'version':45 'within':746 'work':703 'workflow':139,835 'world':164 'www.nuget.org':809 'www.nuget.org/packages/azure.messaging.servicebus':808","prices":[{"id":"36000d3a-7f9a-455e-9d34-c6e9671e9090","listingId":"5e956a84-8784-4b2e-893d-59c20a554206","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:33:07.329Z"}],"sources":[{"listingId":"5e956a84-8784-4b2e-893d-59c20a554206","source":"github","sourceId":"sickn33/antigravity-awesome-skills/azure-servicebus-dotnet","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-servicebus-dotnet","isPrimary":false,"firstSeenAt":"2026-04-18T21:33:07.329Z","lastSeenAt":"2026-04-24T18:50:33.951Z"}],"details":{"listingId":"5e956a84-8784-4b2e-893d-59c20a554206","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"azure-servicebus-dotnet","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34928,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"fea3d998f627748bd8b3456ec3eedcad783c741d","skill_md_path":"skills/azure-servicebus-dotnet/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-servicebus-dotnet"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"azure-servicebus-dotnet","description":"Azure Service Bus SDK for .NET. Enterprise messaging with queues, topics, subscriptions, and sessions."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-servicebus-dotnet"},"updatedAt":"2026-04-24T18:50:33.951Z"}}