[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7EK4TMAD87SZ2M0482PAPM7":3,"skill-same:01M7EK4TMAD87SZ2M0482PAPM7":47},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":14,"repositoryHtmlUrl":30,"repositoryHomepageUrl":30,"ownerHtmlUrl":31,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":32,"install":33,"resources":46},"01M7EK4TMAD87SZ2M0482PAPM7","azure-keyvault-secrets-ts",null,"Manage secrets using Azure Key Vault Secrets SDK for JavaScript (@azure\u002Fkeyvault-secrets). Use when storing and retrieving application secrets or configuration values.","Mr-Nobody-Anonymous\u002FAll-skills","Mr-Nobody-Anonymous","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F184253119?v=4","01M7AEXFJHKTYQW5R0ZCQQTWFV","anonymous","01M7C00M3GQR4QKP9GZA42GFAK",0,"MIT","https:\u002F\u002Fgithub.com\u002FMr-Nobody-Anonymous\u002FAll-skills\u002Fblob\u002Fmain\u002Fawesome_skills\u002Fcloud\u002Fazure-keyvault-secrets-ts\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: azure-keyvault-secrets-ts\ndescription: \"Manage secrets using Azure Key Vault Secrets SDK for JavaScript (@azure\u002Fkeyvault-secrets). Use when storing and retrieving application secrets or configuration values.\"\nrisk: critical\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# Azure Key Vault Secrets SDK for TypeScript\n\nManage secrets with Azure Key Vault.\n\n## Installation\n\n```bash\n# Secrets SDK\nnpm install @azure\u002Fkeyvault-secrets @azure\u002Fidentity\n```\n\n## Environment Variables\n\n```bash\nKEY_VAULT_URL=https:\u002F\u002F\u003Cvault-name>.vault.azure.net\n# Or\nAZURE_KEYVAULT_NAME=\u003Cvault-name>\n```\n\n## Authentication\n\n```typescript\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\nimport { SecretClient } from \"@azure\u002Fkeyvault-secrets\";\n\nconst credential = new DefaultAzureCredential();\nconst vaultUrl = `https:\u002F\u002F${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`;\n\nconst keyClient = new KeyClient(vaultUrl, credential);\nconst secretClient = new SecretClient(vaultUrl, credential);\n```\n\n## Secrets Operations\n\n### Create\u002FSet Secret\n\n```typescript\nconst secret = await secretClient.setSecret(\"MySecret\", \"secret-value\");\n\n\u002F\u002F With attributes\nconst secretWithAttrs = await secretClient.setSecret(\"MySecret\", \"value\", {\n  enabled: true,\n  expiresOn: new Date(\"2025-12-31\"),\n  contentType: \"application\u002Fjson\",\n  tags: { environment: \"production\" }\n});\n```\n\n### Get Secret\n\n```typescript\n\u002F\u002F Get latest version\nconst secret = await secretClient.getSecret(\"MySecret\");\nconsole.log(secret.value);\n\n\u002F\u002F Get specific version\nconst specificSecret = await secretClient.getSecret(\"MySecret\", {\n  version: secret.properties.version\n});\n```\n\n### List Secrets\n\n```typescript\nfor await (const secretProperties of secretClient.listPropertiesOfSecrets()) {\n  console.log(secretProperties.name);\n}\n\n\u002F\u002F List versions\nfor await (const version of secretClient.listPropertiesOfSecretVersions(\"MySecret\")) {\n  console.log(version.version);\n}\n```\n\n### Delete Secret\n\n```typescript\n\u002F\u002F Soft delete\nconst deletePoller = await secretClient.beginDeleteSecret(\"MySecret\");\nawait deletePoller.pollUntilDone();\n\n\u002F\u002F Purge (permanent)\nawait secretClient.purgeDeletedSecret(\"MySecret\");\n\n\u002F\u002F Recover\nconst recoverPoller = await secretClient.beginRecoverDeletedSecret(\"MySecret\");\nawait recoverPoller.pollUntilDone();\n```\n\n## Keys Operations\n\n### Create Keys\n\n```typescript\n\u002F\u002F Generic key\nconst key = await keyClient.createKey(\"MyKey\", \"RSA\");\n\n\u002F\u002F RSA key with size\nconst rsaKey = await keyClient.createRsaKey(\"MyRsaKey\", { keySize: 2048 });\n\n\u002F\u002F Elliptic Curve key\nconst ecKey = await keyClient.createEcKey(\"MyEcKey\", { curve: \"P-256\" });\n\n\u002F\u002F With attributes\nconst keyWithAttrs = await keyClient.createKey(\"MyKey\", \"RSA\", {\n  enabled: true,\n  expiresOn: new Date(\"2025-12-31\"),\n  tags: { purpose: \"encryption\" },\n  keyOps: [\"encrypt\", \"decrypt\", \"sign\", \"verify\"]\n});\n```\n\n### Get Key\n\n```typescript\nconst key = await keyClient.getKey(\"MyKey\");\nconsole.log(key.name, key.keyType);\n```\n\n### List Keys\n\n```typescript\nfor await (const keyProperties of keyClient.listPropertiesOfKeys()) {\n  console.log(keyProperties.name);\n}\n```\n\n### Rotate Key\n\n```typescript\n\u002F\u002F Manual rotation\nconst rotatedKey = await keyClient.rotateKey(\"MyKey\");\n\n\u002F\u002F Set rotation policy\nawait keyClient.updateKeyRotationPolicy(\"MyKey\", {\n  lifetimeActions: [{ action: \"Rotate\", timeBeforeExpiry: \"P30D\" }],\n  expiresIn: \"P90D\"\n});\n```\n\n### Delete Key\n\n```typescript\nconst deletePoller = await keyClient.beginDeleteKey(\"MyKey\");\nawait deletePoller.pollUntilDone();\n\n\u002F\u002F Purge\nawait keyClient.purgeDeletedKey(\"MyKey\");\n```\n\n## Cryptographic Operations\n\n### Create CryptographyClient\n\n```typescript\nimport { CryptographyClient } from \"@azure\u002Fkeyvault-keys\";\n\n\u002F\u002F From key object\nconst cryptoClient = new CryptographyClient(key, credential);\n\n\u002F\u002F From key ID\nconst cryptoClient = new CryptographyClient(key.id!, credential);\n```\n\n### Encrypt\u002FDecrypt\n\n```typescript\n\u002F\u002F Encrypt\nconst encryptResult = await cryptoClient.encrypt({\n  algorithm: \"RSA-OAEP\",\n  plaintext: Buffer.from(\"My secret message\")\n});\n\n\u002F\u002F Decrypt\nconst decryptResult = await cryptoClient.decrypt({\n  algorithm: \"RSA-OAEP\",\n  ciphertext: encryptResult.result\n});\n\nconsole.log(decryptResult.result.toString());\n```\n\n### Sign\u002FVerify\n\n```typescript\nimport { createHash } from \"node:crypto\";\n\n\u002F\u002F Create digest\nconst hash = createHash(\"sha256\").update(\"My message\").digest();\n\n\u002F\u002F Sign\nconst signResult = await cryptoClient.sign(\"RS256\", hash);\n\n\u002F\u002F Verify\nconst verifyResult = await cryptoClient.verify(\"RS256\", hash, signResult.result);\nconsole.log(\"Valid:\", verifyResult.result);\n```\n\n### Wrap\u002FUnwrap Keys\n\n```typescript\n\u002F\u002F Wrap a key (encrypt it for storage)\nconst wrapResult = await cryptoClient.wrapKey(\"RSA-OAEP\", Buffer.from(\"key-material\"));\n\n\u002F\u002F Unwrap\nconst unwrapResult = await cryptoClient.unwrapKey(\"RSA-OAEP\", wrapResult.result);\n```\n\n## Backup and Restore\n\n```typescript\n\u002F\u002F Backup\nconst keyBackup = await keyClient.backupKey(\"MyKey\");\nconst secretBackup = await secretClient.backupSecret(\"MySecret\");\n\n\u002F\u002F Restore (can restore to different vault)\nconst restoredKey = await keyClient.restoreKeyBackup(keyBackup!);\nconst restoredSecret = await secretClient.restoreSecretBackup(secretBackup!);\n```\n\n## Key Types\n\n```typescript\nimport {\n  KeyClient,\n  KeyVaultKey,\n  KeyProperties,\n  DeletedKey,\n  CryptographyClient,\n  KnownEncryptionAlgorithms,\n  KnownSignatureAlgorithms\n} from \"@azure\u002Fkeyvault-keys\";\n\nimport {\n  SecretClient,\n  KeyVaultSecret,\n  SecretProperties,\n  DeletedSecret\n} from \"@azure\u002Fkeyvault-secrets\";\n```\n\n## Error Handling\n\n```typescript\ntry {\n  const secret = await secretClient.getSecret(\"NonExistent\");\n} catch (error: any) {\n  if (error.code === \"SecretNotFound\") {\n    console.log(\"Secret does not exist\");\n  } else {\n    throw error;\n  }\n}\n```\n\n## Best Practices\n\n1. **Use DefaultAzureCredential** - Works across dev and production\n2. **Enable soft-delete** - Required for production vaults\n3. **Set expiration dates** - On both keys and secrets\n4. **Use key rotation policies** - Automate key rotation\n5. **Limit key operations** - Only grant needed operations (encrypt, sign, etc.)\n6. **Browser not supported** - These SDKs are Node.js only\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.\n","# Azure Key Vault Secrets SDK for TypeScript\n\nManage secrets with Azure Key Vault.\n\n## Installation\n\n```bash\n# Secrets SDK\nnpm install @azure\u002Fkeyvault-secrets @azure\u002Fidentity\n```\n\n## Environment Variables\n\n```bash\nKEY_VAULT_URL=https:\u002F\u002F\u003Cvault-name>.vault.azure.net\n# Or\nAZURE_KEYVAULT_NAME=\u003Cvault-name>\n```\n\n## Authentication\n\n```typescript\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\nimport { SecretClient } from \"@azure\u002Fkeyvault-secrets\";\n\nconst credential = new DefaultAzureCredential();\nconst vaultUrl = `https:\u002F\u002F${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`;\n\nconst keyClient = new KeyClient(vaultUrl, credential);\nconst secretClient = new SecretClient(vaultUrl, credential);\n```\n\n## Secrets Operations\n\n### Create\u002FSet Secret\n\n```typescript\nconst secret = await secretClient.setSecret(\"MySecret\", \"secret-value\");\n\n\u002F\u002F With attributes\nconst secretWithAttrs = await secretClient.setSecret(\"MySecret\", \"value\", {\n  enabled: true,\n  expiresOn: new Date(\"2025-12-31\"),\n  contentType: \"application\u002Fjson\",\n  tags: { environment: \"production\" }\n});\n```\n\n### Get Secret\n\n```typescript\n\u002F\u002F Get latest version\nconst secret = await secretClient.getSecret(\"MySecret\");\nconsole.log(secret.value);\n\n\u002F\u002F Get specific version\nconst specificSecret = await secretClient.getSecret(\"MySecret\", {\n  version: secret.properties.version\n});\n```\n\n### List Secrets\n\n```typescript\nfor await (const secretProperties of secretClient.listPropertiesOfSecrets()) {\n  console.log(secretProperties.name);\n}\n\n\u002F\u002F List versions\nfor await (const version of secretClient.listPropertiesOfSecretVersions(\"MySecret\")) {\n  console.log(version.version);\n}\n```\n\n### Delete Secret\n\n```typescript\n\u002F\u002F Soft delete\nconst deletePoller = await secretClient.beginDeleteSecret(\"MySecret\");\nawait deletePoller.pollUntilDone();\n\n\u002F\u002F Purge (permanent)\nawait secretClient.purgeDeletedSecret(\"MySecret\");\n\n\u002F\u002F Recover\nconst recoverPoller = await secretClient.beginRecoverDeletedSecret(\"MySecret\");\nawait recoverPoller.pollUntilDone();\n```\n\n## Keys Operations\n\n### Create Keys\n\n```typescript\n\u002F\u002F Generic key\nconst key = await keyClient.createKey(\"MyKey\", \"RSA\");\n\n\u002F\u002F RSA key with size\nconst rsaKey = await keyClient.createRsaKey(\"MyRsaKey\", { keySize: 2048 });\n\n\u002F\u002F Elliptic Curve key\nconst ecKey = await keyClient.createEcKey(\"MyEcKey\", { curve: \"P-256\" });\n\n\u002F\u002F With attributes\nconst keyWithAttrs = await keyClient.createKey(\"MyKey\", \"RSA\", {\n  enabled: true,\n  expiresOn: new Date(\"2025-12-31\"),\n  tags: { purpose: \"encryption\" },\n  keyOps: [\"encrypt\", \"decrypt\", \"sign\", \"verify\"]\n});\n```\n\n### Get Key\n\n```typescript\nconst key = await keyClient.getKey(\"MyKey\");\nconsole.log(key.name, key.keyType);\n```\n\n### List Keys\n\n```typescript\nfor await (const keyProperties of keyClient.listPropertiesOfKeys()) {\n  console.log(keyProperties.name);\n}\n```\n\n### Rotate Key\n\n```typescript\n\u002F\u002F Manual rotation\nconst rotatedKey = await keyClient.rotateKey(\"MyKey\");\n\n\u002F\u002F Set rotation policy\nawait keyClient.updateKeyRotationPolicy(\"MyKey\", {\n  lifetimeActions: [{ action: \"Rotate\", timeBeforeExpiry: \"P30D\" }],\n  expiresIn: \"P90D\"\n});\n```\n\n### Delete Key\n\n```typescript\nconst deletePoller = await keyClient.beginDeleteKey(\"MyKey\");\nawait deletePoller.pollUntilDone();\n\n\u002F\u002F Purge\nawait keyClient.purgeDeletedKey(\"MyKey\");\n```\n\n## Cryptographic Operations\n\n### Create CryptographyClient\n\n```typescript\nimport { CryptographyClient } from \"@azure\u002Fkeyvault-keys\";\n\n\u002F\u002F From key object\nconst cryptoClient = new CryptographyClient(key, credential);\n\n\u002F\u002F From key ID\nconst cryptoClient = new CryptographyClient(key.id!, credential);\n```\n\n### Encrypt\u002FDecrypt\n\n```typescript\n\u002F\u002F Encrypt\nconst encryptResult = await cryptoClient.encrypt({\n  algorithm: \"RSA-OAEP\",\n  plaintext: Buffer.from(\"My secret message\")\n});\n\n\u002F\u002F Decrypt\nconst decryptResult = await cryptoClient.decrypt({\n  algorithm: \"RSA-OAEP\",\n  ciphertext: encryptResult.result\n});\n\nconsole.log(decryptResult.result.toString());\n```\n\n### Sign\u002FVerify\n\n```typescript\nimport { createHash } from \"node:crypto\";\n\n\u002F\u002F Create digest\nconst hash = createHash(\"sha256\").update(\"My message\").digest();\n\n\u002F\u002F Sign\nconst signResult = await cryptoClient.sign(\"RS256\", hash);\n\n\u002F\u002F Verify\nconst verifyResult = await cryptoClient.verify(\"RS256\", hash, signResult.result);\nconsole.log(\"Valid:\", verifyResult.result);\n```\n\n### Wrap\u002FUnwrap Keys\n\n```typescript\n\u002F\u002F Wrap a key (encrypt it for storage)\nconst wrapResult = await cryptoClient.wrapKey(\"RSA-OAEP\", Buffer.from(\"key-material\"));\n\n\u002F\u002F Unwrap\nconst unwrapResult = await cryptoClient.unwrapKey(\"RSA-OAEP\", wrapResult.result);\n```\n\n## Backup and Restore\n\n```typescript\n\u002F\u002F Backup\nconst keyBackup = await keyClient.backupKey(\"MyKey\");\nconst secretBackup = await secretClient.backupSecret(\"MySecret\");\n\n\u002F\u002F Restore (can restore to different vault)\nconst restoredKey = await keyClient.restoreKeyBackup(keyBackup!);\nconst restoredSecret = await secretClient.restoreSecretBackup(secretBackup!);\n```\n\n## Key Types\n\n```typescript\nimport {\n  KeyClient,\n  KeyVaultKey,\n  KeyProperties,\n  DeletedKey,\n  CryptographyClient,\n  KnownEncryptionAlgorithms,\n  KnownSignatureAlgorithms\n} from \"@azure\u002Fkeyvault-keys\";\n\nimport {\n  SecretClient,\n  KeyVaultSecret,\n  SecretProperties,\n  DeletedSecret\n} from \"@azure\u002Fkeyvault-secrets\";\n```\n\n## Error Handling\n\n```typescript\ntry {\n  const secret = await secretClient.getSecret(\"NonExistent\");\n} catch (error: any) {\n  if (error.code === \"SecretNotFound\") {\n    console.log(\"Secret does not exist\");\n  } else {\n    throw error;\n  }\n}\n```\n\n## Best Practices\n\n1. **Use DefaultAzureCredential** - Works across dev and production\n2. **Enable soft-delete** - Required for production vaults\n3. **Set expiration dates** - On both keys and secrets\n4. **Use key rotation policies** - Automate key rotation\n5. **Limit key operations** - Only grant needed operations (encrypt, sign, etc.)\n6. **Browser not supported** - These SDKs are Node.js only\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.\n",{"name":5,"risk":24,"source":25,"date_added":26,"description":7},"critical","community","2026-02-27","main","2d1750717747097b602acf30bd09a7cbd4b4c6ea","awesome_skills\u002Fcloud\u002Fazure-keyvault-secrets-ts","https:\u002F\u002Fgithub.com\u002FMr-Nobody-Anonymous\u002FAll-skills","https:\u002F\u002Fgithub.com\u002FMr-Nobody-Anonymous","2026-11-09 11:45:36",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add Mr-Nobody-Anonymous\u002FAll-skills --skill azure-keyvault-secrets-ts",{"tool":39,"command":40},"bunx","bunx skills add Mr-Nobody-Anonymous\u002FAll-skills --skill azure-keyvault-secrets-ts",{"tool":42,"command":43},"pnpm","pnpm dlx skills add Mr-Nobody-Anonymous\u002FAll-skills --skill azure-keyvault-secrets-ts","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMr-Nobody-Anonymous\u002FAll-skills\u002Fblob\u002Fmain\u002Fawesome_skills\u002Fcloud\u002Fazure-keyvault-secrets-ts\u002FSKILL.md",true,[],[48,56,63,70,77,84],{"skillNo":49,"name":50,"nameZh":6,"description":51,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":54,"publishedAt":55},"01M7EXRQF9GFM7D9BG6N5HAT34","oath","Auditing regulatory compliance (SOC2\u002FPCI-DSS\u002FHIPAA\u002FISO 27001): maps requirements, checks controls, designs audit trails, implements Policy as Code. Use when compliance auditing is needed.","https:\u002F\u002Fgithub.com\u002FMr-Nobody-Anonymous\u002FAll-skills\u002Fblob\u002Fmain\u002Fawesome_skills\u002Fdevsecops\u002Foath\u002FSKILL.md",[],[],"2026-11-15 14:25:24",{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":62,"publishedAt":19},"01M7EXRH7TYTNZJT0BQXEWAMW7","nexus","Orchestrating multi-specialist task chains and scope-adaptive product delivery: classifies intent, selects and executes the minimum viable chain, aggregates results, and verifies acceptance criteria. For multi-domain tasks, build-first delivery, and product lifecycle execution.","https:\u002F\u002Fgithub.com\u002FMr-Nobody-Anonymous\u002FAll-skills\u002Fblob\u002Fmain\u002Fawesome_skills\u002Fdevsecops\u002Fnexus\u002FSKILL.md",[],[],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":19},"01M7EXRCDPFWVEEEFR2ZQGJCYY","nest","Designing LLM-optimized folder structures: audits and restructures directories for context efficiency, progressive disclosure, and prompt cache performance. Not for general repo structure (Grove).","https:\u002F\u002Fgithub.com\u002FMr-Nobody-Anonymous\u002FAll-skills\u002Fblob\u002Fmain\u002Fawesome_skills\u002Fdevsecops\u002Fnest\u002FSKILL.md",[],[],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":19},"01M7EXR7JEER60TH0HD0AH4EE9","native","Implementing production iOS\u002FAndroid\u002FmacOS native features (SwiftUI, Compose) and iterating a screen against a reference design. Not for cross-platform RN\u002FFlutter (Port) or web (Artisan).","https:\u002F\u002Fgithub.com\u002FMr-Nobody-Anonymous\u002FAll-skills\u002Fblob\u002Fmain\u002Fawesome_skills\u002Fdevsecops\u002Fnative\u002FSKILL.md",[],[],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":19},"01M7EXR133J7DD5961R80QTRZY","muse","Defining and managing design tokens, applying token systems to existing codebases, building design system foundations. Use for spacing, color, typography, dark mode, cross-platform output.","https:\u002F\u002Fgithub.com\u002FMr-Nobody-Anonymous\u002FAll-skills\u002Fblob\u002Fmain\u002Fawesome_skills\u002Fdevsecops\u002Fmuse\u002FSKILL.md",[],[],{"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":90,"publishedAt":19},"01M7EXQWWX7ECQN0J50B41YN5N","morph","Converting document formats (Markdown\u002FWord\u002FExcel\u002FPDF\u002FHTML) and generating reusable conversion scripts. Use for distributable specs, accessibility-compliant PDFs, or Pandoc\u002FLibreOffice pipelines.","https:\u002F\u002Fgithub.com\u002FMr-Nobody-Anonymous\u002FAll-skills\u002Fblob\u002Fmain\u002Fawesome_skills\u002Fdevsecops\u002Fmorph\u002FSKILL.md",[],[]]