[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69ATY8XSE58WEADEB4W2HMA":3,"skill-same:01M69ATY8XSE58WEADEB4W2HMA":73},{"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":23,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M69ATY8XSE58WEADEB4W2HMA","azure-keyvault-certificates-rust",null,"Azure Key Vault Certificates library for Rust. Create, manage, and use X.509 certificates including self-signed and CA-issued.\nTriggers: \"keyvault certificates rust\", \"CertificateClient rust\", \"create certificate rust\", \"self-signed certificate rust\", \"X.509 rust\".","microsoft\u002Fskills","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69AJYYW4E1RMSYCQDJ4FJSH",3195,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-sdk-rust\u002Fskills\u002Fazure-keyvault-certificates-rust\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,9],"rust","azure","azure keyvault certificates rust","azure keyvault","certificates","for","security","ca","triggers","self","azure key vault","manage","use","certificate","vault","library","create","2026-11-10 10:12:30",false,"---\nname: azure-keyvault-certificates-rust\ndescription: |\n  Azure Key Vault Certificates library for Rust. Create, manage, and use X.509 certificates including self-signed and CA-issued.\n  Triggers: \"keyvault certificates rust\", \"CertificateClient rust\", \"create certificate rust\", \"self-signed certificate rust\", \"X.509 rust\".\nlicense: MIT\nmetadata:\n  author: Microsoft\n  package: azure_security_keyvault_certificates\n---\n\n# Azure Key Vault Certificates library for Rust\n\nManage X.509 certificates for TLS\u002FSSL, code signing, and authentication.\n\nUse this skill when:\n\n- An app needs to create or manage X.509 certificates in Key Vault from Rust\n- You need self-signed or CA-issued certificates\n- You need long-running operations (LRO) for certificate issuance\n- You need to sign data using a certificate's key\n\n> **IMPORTANT:** Only use the official `azure_security_keyvault_certificates` crate published by the [azure-sdk](https:\u002F\u002Fcrates.io\u002Fusers\u002Fazure-sdk) crates.io user. Do NOT use unofficial or community crates. Official crates use underscores in names and none have version 0.21.0.\n\n## Installation\n\n```sh\ncargo add azure_security_keyvault_certificates azure_identity tokio futures\n```\n\n> If your code uses `azure_core` types directly, add `azure_core` to `Cargo.toml`. If you only use `azure_security_keyvault_certificates` re-exports, direct `azure_core` dependency is optional.\n\n## Environment Variables\n\n```bash\nAZURE_KEYVAULT_URL=https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F # Required for all operations\n```\n\n## Authentication\n\nRust Azure SDK code must not use `DefaultAzureCredential`. The Rust identity crate does not provide that type.\n\n```rust\nuse azure_identity::DeveloperToolsCredential;\nuse azure_security_keyvault_certificates::CertificateClient;\n\n#[tokio::main]\nasync fn main() -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n    \u002F\u002F Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential.\n    let credential = DeveloperToolsCredential::new(None)?;\n    let client = CertificateClient::new(\n        \"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F\",\n        credential.clone(),\n        None,\n    )?;\n\n    let cert = client\n        .get_certificate(\"cert-name\", None)\n        .await?\n        .into_model()?;\n    println!(\"Certificate: {:?}\", cert.id);\n    Ok(())\n}\n```\n\nPrefer the crate README\u002Fexamples when checking LRO and poller usage rather than inferring public behavior from generated internal types.\n\n## Core Workflow\n\n### Create Self-Signed Certificate (LRO)\n\nCreating a certificate is a long-running operation. `Poller\u003CT>` implements `IntoFuture` — just `.await`:\n\n```rust\nuse azure_security_keyvault_certificates::{\n    models::{\n        CertificatePolicy, CreateCertificateParameters, IssuerParameters,\n        X509CertificateProperties,\n    },\n    ResourceExt,\n};\n\nlet policy = CertificatePolicy {\n    x509_certificate_properties: Some(X509CertificateProperties {\n        subject: Some(\"CN=example.com\".into()),\n        ..Default::default()\n    }),\n    issuer_parameters: Some(IssuerParameters {\n        name: Some(\"Self\".into()),\n        ..Default::default()\n    }),\n    ..Default::default()\n};\nlet body = CreateCertificateParameters {\n    certificate_policy: Some(policy),\n    ..Default::default()\n};\n\n\u002F\u002F Poller implements IntoFuture — await directly for completion\nlet cert = client\n    .begin_create_certificate(\"cert-name\", body.try_into()?, None)?\n    .await?\n    .into_model()?;\n\nprintln!(\n    \"Name: {:?}, Version: {:?}\",\n    cert.resource_id()?.name,\n    cert.resource_id()?.version,\n);\n```\n\n### Update Certificate Properties\n\n```rust\nuse azure_security_keyvault_certificates::models::UpdateCertificatePropertiesParameters;\nuse std::collections::HashMap;\n\n#[allow(clippy::needless_update)]\nlet params = UpdateCertificatePropertiesParameters {\n    tags: Some(HashMap::from_iter(vec![(\"env\".into(), \"prod\".into())])),\n    ..Default::default()\n};\n\nclient\n    .update_certificate_properties(\"cert-name\", params.try_into()?, None)\n    .await?\n    .into_model()?;\n```\n\n### Delete Certificate\n\n```rust\nclient.delete_certificate(\"cert-name\", None).await?;\n```\n\n### List Certificates (Pagination)\n\n`list_certificate_properties` returns a `Pager\u003CT>` — iterate items directly:\n\n```rust\nuse azure_security_keyvault_certificates::ResourceExt;\nuse futures::TryStreamExt as _;\n\nlet mut pager = client.list_certificate_properties(None)?;\nwhile let Some(cert) = pager.try_next().await? {\n    println!(\"Found: {}\", cert.resource_id()?.name);\n}\n```\n\n## Signing with a Certificate's Key\n\nCertificates in Key Vault have an associated key. Use the Key Vault Keys SDK for crypto operations:\n\n```rust\nuse azure_security_keyvault_keys::{\n    models::{KeyClientSignOptions, SignParameters, SignatureAlgorithm},\n    KeyClient,\n};\n\nlet key_client = KeyClient::new(\n    \"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F\",\n    credential.clone(),\n    None,\n)?;\n\n\u002F\u002F Sign with the certificate's EC key\nlet digest = vec![0u8; 32]; \u002F\u002F SHA-256 digest\nlet body = SignParameters {\n    algorithm: Some(SignatureAlgorithm::Es256),\n    value: Some(digest),\n};\n\nlet result = key_client\n    .sign(\n        \"cert-name\",\n        body.try_into()?,\n        Some(KeyClientSignOptions {\n            key_version: Some(\"\u003Ccertificate-version>\".to_string()),\n            ..Default::default()\n        }),\n    )\n    .await?\n    .into_model()?;\nprintln!(\"Signature: {:?}\", result.result);\n```\n\n## Certificate Formats\n\n| Format  | Content Type             | Use Case                            |\n| ------- | ------------------------ | ----------------------------------- |\n| PKCS#12 | `application\u002Fx-pkcs12`   | Bundled cert + private key          |\n| PEM     | `application\u002Fx-pem-file` | Base64-encoded, common in Linux\u002Fweb |\n\n## RBAC Roles\n\nFor Entra ID auth, assign one of these roles:\n\n| Role                             | Access                      |\n| -------------------------------- | --------------------------- |\n| `Key Vault Certificate User`     | Use certificates            |\n| `Key Vault Certificates Officer` | Full certificate management |\n\n## Best Practices\n\n1. **Use `cargo add` to manage dependencies, never edit `Cargo.toml` directly.** Add and remove Rust SDK dependencies with cargo commands instead of manual manifest edits.\n2. **Add `azure_core` only when importing `azure_core` types directly.** If your code imports `azure_core::http::Url`, `azure_core::http::RequestContent`, or `azure_core::error::ErrorKind`, include `azure_core`; otherwise a direct dependency is optional.\n3. **Use `DeveloperToolsCredential`** for local dev, **`ManagedIdentityCredential`** for production — Rust does not provide a single `DefaultAzureCredential` type\n4. **Never hardcode credentials** — use environment variables or managed identity\n5. **Use `..Default::default()`** with `#[allow(clippy::needless_update)]` for model struct updates\n6. **Use `ResourceExt`** to extract certificate name\u002Fversion from IDs\n7. **LROs** — `begin_create_certificate` returns a `Poller`; just `.await` for completion (clients should rarely poll for status)\n8. **Reuse clients** — `CertificateClient` is thread-safe; create once, share across tasks\n9. **Run `cargo clippy -- -D warnings`** when the prompt, eval, or CI expects lint-clean output\n\n## Reference Links\n\n| Resource      | Link                                                                                                    |\n| ------------- | ------------------------------------------------------------------------------------------------------- |\n| API Reference | https:\u002F\u002Fdocs.rs\u002Fazure_security_keyvault_certificates\u002Flatest\u002Fazure_security_keyvault_certificates        |\n| crates.io     | https:\u002F\u002Fcrates.io\u002Fcrates\u002Fazure_security_keyvault_certificates                                           |\n| Source Code   | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-rust\u002Ftree\u002Fmain\u002Fsdk\u002Fkeyvault\u002Fazure_security_keyvault_certificates |\n","# Azure Key Vault Certificates library for Rust\n\nManage X.509 certificates for TLS\u002FSSL, code signing, and authentication.\n\nUse this skill when:\n\n- An app needs to create or manage X.509 certificates in Key Vault from Rust\n- You need self-signed or CA-issued certificates\n- You need long-running operations (LRO) for certificate issuance\n- You need to sign data using a certificate's key\n\n> **IMPORTANT:** Only use the official `azure_security_keyvault_certificates` crate published by the [azure-sdk](https:\u002F\u002Fcrates.io\u002Fusers\u002Fazure-sdk) crates.io user. Do NOT use unofficial or community crates. Official crates use underscores in names and none have version 0.21.0.\n\n## Installation\n\n```sh\ncargo add azure_security_keyvault_certificates azure_identity tokio futures\n```\n\n> If your code uses `azure_core` types directly, add `azure_core` to `Cargo.toml`. If you only use `azure_security_keyvault_certificates` re-exports, direct `azure_core` dependency is optional.\n\n## Environment Variables\n\n```bash\nAZURE_KEYVAULT_URL=https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F # Required for all operations\n```\n\n## Authentication\n\nRust Azure SDK code must not use `DefaultAzureCredential`. The Rust identity crate does not provide that type.\n\n```rust\nuse azure_identity::DeveloperToolsCredential;\nuse azure_security_keyvault_certificates::CertificateClient;\n\n#[tokio::main]\nasync fn main() -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n    \u002F\u002F Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential.\n    let credential = DeveloperToolsCredential::new(None)?;\n    let client = CertificateClient::new(\n        \"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F\",\n        credential.clone(),\n        None,\n    )?;\n\n    let cert = client\n        .get_certificate(\"cert-name\", None)\n        .await?\n        .into_model()?;\n    println!(\"Certificate: {:?}\", cert.id);\n    Ok(())\n}\n```\n\nPrefer the crate README\u002Fexamples when checking LRO and poller usage rather than inferring public behavior from generated internal types.\n\n## Core Workflow\n\n### Create Self-Signed Certificate (LRO)\n\nCreating a certificate is a long-running operation. `Poller\u003CT>` implements `IntoFuture` — just `.await`:\n\n```rust\nuse azure_security_keyvault_certificates::{\n    models::{\n        CertificatePolicy, CreateCertificateParameters, IssuerParameters,\n        X509CertificateProperties,\n    },\n    ResourceExt,\n};\n\nlet policy = CertificatePolicy {\n    x509_certificate_properties: Some(X509CertificateProperties {\n        subject: Some(\"CN=example.com\".into()),\n        ..Default::default()\n    }),\n    issuer_parameters: Some(IssuerParameters {\n        name: Some(\"Self\".into()),\n        ..Default::default()\n    }),\n    ..Default::default()\n};\nlet body = CreateCertificateParameters {\n    certificate_policy: Some(policy),\n    ..Default::default()\n};\n\n\u002F\u002F Poller implements IntoFuture — await directly for completion\nlet cert = client\n    .begin_create_certificate(\"cert-name\", body.try_into()?, None)?\n    .await?\n    .into_model()?;\n\nprintln!(\n    \"Name: {:?}, Version: {:?}\",\n    cert.resource_id()?.name,\n    cert.resource_id()?.version,\n);\n```\n\n### Update Certificate Properties\n\n```rust\nuse azure_security_keyvault_certificates::models::UpdateCertificatePropertiesParameters;\nuse std::collections::HashMap;\n\n#[allow(clippy::needless_update)]\nlet params = UpdateCertificatePropertiesParameters {\n    tags: Some(HashMap::from_iter(vec![(\"env\".into(), \"prod\".into())])),\n    ..Default::default()\n};\n\nclient\n    .update_certificate_properties(\"cert-name\", params.try_into()?, None)\n    .await?\n    .into_model()?;\n```\n\n### Delete Certificate\n\n```rust\nclient.delete_certificate(\"cert-name\", None).await?;\n```\n\n### List Certificates (Pagination)\n\n`list_certificate_properties` returns a `Pager\u003CT>` — iterate items directly:\n\n```rust\nuse azure_security_keyvault_certificates::ResourceExt;\nuse futures::TryStreamExt as _;\n\nlet mut pager = client.list_certificate_properties(None)?;\nwhile let Some(cert) = pager.try_next().await? {\n    println!(\"Found: {}\", cert.resource_id()?.name);\n}\n```\n\n## Signing with a Certificate's Key\n\nCertificates in Key Vault have an associated key. Use the Key Vault Keys SDK for crypto operations:\n\n```rust\nuse azure_security_keyvault_keys::{\n    models::{KeyClientSignOptions, SignParameters, SignatureAlgorithm},\n    KeyClient,\n};\n\nlet key_client = KeyClient::new(\n    \"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F\",\n    credential.clone(),\n    None,\n)?;\n\n\u002F\u002F Sign with the certificate's EC key\nlet digest = vec![0u8; 32]; \u002F\u002F SHA-256 digest\nlet body = SignParameters {\n    algorithm: Some(SignatureAlgorithm::Es256),\n    value: Some(digest),\n};\n\nlet result = key_client\n    .sign(\n        \"cert-name\",\n        body.try_into()?,\n        Some(KeyClientSignOptions {\n            key_version: Some(\"\u003Ccertificate-version>\".to_string()),\n            ..Default::default()\n        }),\n    )\n    .await?\n    .into_model()?;\nprintln!(\"Signature: {:?}\", result.result);\n```\n\n## Certificate Formats\n\n| Format  | Content Type             | Use Case                            |\n| ------- | ------------------------ | ----------------------------------- |\n| PKCS#12 | `application\u002Fx-pkcs12`   | Bundled cert + private key          |\n| PEM     | `application\u002Fx-pem-file` | Base64-encoded, common in Linux\u002Fweb |\n\n## RBAC Roles\n\nFor Entra ID auth, assign one of these roles:\n\n| Role                             | Access                      |\n| -------------------------------- | --------------------------- |\n| `Key Vault Certificate User`     | Use certificates            |\n| `Key Vault Certificates Officer` | Full certificate management |\n\n## Best Practices\n\n1. **Use `cargo add` to manage dependencies, never edit `Cargo.toml` directly.** Add and remove Rust SDK dependencies with cargo commands instead of manual manifest edits.\n2. **Add `azure_core` only when importing `azure_core` types directly.** If your code imports `azure_core::http::Url`, `azure_core::http::RequestContent`, or `azure_core::error::ErrorKind`, include `azure_core`; otherwise a direct dependency is optional.\n3. **Use `DeveloperToolsCredential`** for local dev, **`ManagedIdentityCredential`** for production — Rust does not provide a single `DefaultAzureCredential` type\n4. **Never hardcode credentials** — use environment variables or managed identity\n5. **Use `..Default::default()`** with `#[allow(clippy::needless_update)]` for model struct updates\n6. **Use `ResourceExt`** to extract certificate name\u002Fversion from IDs\n7. **LROs** — `begin_create_certificate` returns a `Poller`; just `.await` for completion (clients should rarely poll for status)\n8. **Reuse clients** — `CertificateClient` is thread-safe; create once, share across tasks\n9. **Run `cargo clippy -- -D warnings`** when the prompt, eval, or CI expects lint-clean output\n\n## Reference Links\n\n| Resource      | Link                                                                                                    |\n| ------------- | ------------------------------------------------------------------------------------------------------- |\n| API Reference | https:\u002F\u002Fdocs.rs\u002Fazure_security_keyvault_certificates\u002Flatest\u002Fazure_security_keyvault_certificates        |\n| crates.io     | https:\u002F\u002Fcrates.io\u002Fcrates\u002Fazure_security_keyvault_certificates                                           |\n| Source Code   | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-rust\u002Ftree\u002Fmain\u002Fsdk\u002Fkeyvault\u002Fazure_security_keyvault_certificates |\n",{"name":5,"license":15,"metadata":46,"description":48},{"author":12,"package":47},"azure_security_keyvault_certificates","Azure Key Vault Certificates library for Rust. Create, manage, and use X.509 certificates including self-signed and CA-issued.\nTriggers: \"keyvault certificates rust\", \"CertificateClient rust\", \"create certificate rust\", \"self-signed certificate rust\", \"X.509 rust\".\n","main","3f5b461b2314e01c400564051e92469114c5b68f",".github\u002Fplugins\u002Fazure-sdk-rust\u002Fskills\u002Fazure-keyvault-certificates-rust",365,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","https:\u002F\u002Fmicrosoft.github.io\u002Fskills\u002F","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-12 02:02:58",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add microsoft\u002Fskills --skill azure-keyvault-certificates-rust",{"tool":65,"command":66},"bunx","bunx skills add microsoft\u002Fskills --skill azure-keyvault-certificates-rust",{"tool":68,"command":69},"pnpm","pnpm dlx skills add microsoft\u002Fskills --skill azure-keyvault-certificates-rust","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-sdk-rust\u002Fskills\u002Fazure-keyvault-certificates-rust\u002FSKILL.md",true,[],[74,97,135,162,183,221],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":81,"publishedAt":41},"01M69B4JCRQV5SPXAFCKXQRV0H","skill-creator","Guide for creating effective skills for AI coding agents working with Azure SDKs and Microsoft Foundry services. Use when creating new skills or updating existing skills.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fskill-creator\u002FSKILL.md",[80],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[82,83,84,9,85,86,87,25,88,89,90,36,91,92,93,29,94,95,96],"skill creator","creator","coding agents","foundry","microsoft foundry","ai coding agents","services","coding","guide","ai coding","with","sdks","Existing","when","new",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":113,"publishedAt":41},"01M69B4FD57V1MYKRWAJJECTZ7","podcast-generation","Generate AI-powered podcast-style audio narratives using Azure OpenAI's GPT Realtime Mini model via WebSocket. Use when building text-to-speech features, audio narrative generation, podcast creation from content, or integrating with Azure OpenAI Realtime API for real audio output. Covers full-stack implementation from React frontend to Python FastAPI backend with WebSocket streaming.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fpodcast-generation\u002FSKILL.md",[103,106,109,112],{"categoryNo":104,"categoryName":105,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":107,"categoryName":108,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":110,"categoryName":111,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[114,115,116,117,118,119,120,25,121,122,123,124,125,126,127,128,129,130,131,132,133,95,134],"podcast generation","podcast","generation","frontend","python","react","realtime","azure openai","generate","streaming","api","Audio","stack","text","model","fastapi","creation","python fastapi","narrative","features","fastapi backend",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":142,"publishedAt":41},"01M69B4CYPM5SESY5ZWEFDXEQZ","microsoft-docs","Understand Microsoft technologies by querying official documentation. Use whenever the user asks how something works, wants tutorials, needs configuration options, limits, quotas, or best practices for any Microsoft technology (Azure, .NET, M365, Windows, Power Platform, etc.)—even if they don't mention \"docs.\" If the question is about understanding a concept rather than writing code, this is the right skill.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fmicrosoft-docs\u002FSKILL.md",[141],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[143,9,144,145,146,147,148,149,150,151,152,25,153,154,155,36,156,62,157,158,159,160,161,29],"docs","microsoft docs","MCP","writing","cli","mcp server","windows","power platform","official","documentation","learn","best practices","question","power","back","technology","platform","learn mcp","concept",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":169,"publishedAt":41},"01M69B49C3YPD1ZJ3NC0HPCY58","mcp-builder","Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP), Node\u002FTypeScript (MCP SDK), or C#\u002F.NET (Microsoft MCP SDK).","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fmcp-builder\u002FSKILL.md",[168],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[145,170,171,172,118,173,174,175,9,176,177,128,178,179,90,36,180,181,182,92,29,95],"mcp builder","builder","typescript","llms","sdk","model context protocol","fastmcp","Tools","node","context","integrate","mcp sdk","building mcp servers",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":201,"publishedAt":41},"01M69B467A7CDMFQ0T6Q0ZA12Q","kql","KQL language expertise for writing correct, efficient Kusto Query Language queries. Covers syntax gotchas, join patterns, dynamic types, datetime pitfalls, regex patterns, serialization, memory management, result-size discipline, and advanced functions (geo, vector, graph). USE THIS SKILL whenever writing, debugging, or reviewing KQL queries — even simple ones — because the gotchas section prevents the most common errors that waste tool calls and cause expensive retry cascades. Trigger on: KQL, Kusto, ADX, Azure Data Explorer, Fabric Real-Time Intelligence, EventHouse, Log Analytics, log analysis, data exploration, time series, anomaly detection, summarize, where clause, join, extend, project, let statement, parse operator, extract function, any mention of pipe-forward query syntax.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fkql\u002FSKILL.md",[189,192,193,198],{"categoryNo":190,"categoryName":191,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":194,"categoryName":195,"taxonomyType":196,"taxonomyTypeDesc":197},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",{"categoryNo":199,"categoryName":200,"taxonomyType":196,"taxonomyTypeDesc":197},"01JBSEEDCAT000000000000036","内容创作者",[185,146,202,203,204,25,205,206,207,208,209,210,211,212,213,214,215,216,217,29,218,219,220],"summarize","memory","analytics","vector","time series","tool","discipline","log","geo","exploration","pipe","time","project","regex","join","datetime","section","anomaly","parse",{"skillNo":222,"name":223,"nameZh":6,"description":224,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":225,"categories":226,"keywords":227,"publishedAt":41},"01M69B44HJQ7897EZ7NE7DWQX3","github-issue-creator","Convert raw notes, error logs, voice dictation, or screenshots into crisp GitHub-flavored markdown issue reports. Use when the user pastes bug info, error messages, or informal descriptions and wants a structured GitHub issue. Supports images\u002FGIFs for visual evidence.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fgithub-issue-creator\u002FSKILL.md",[],[228,229,230,231,83,232,233,234,235,236,237,238,36,239,240,241,242,243,244,29,95],"github","github issue creator","github issue","issue","issue creator","screenshots","notes","logs","error messages","messages","convert","evidence","reports","images","info","visual","error"]