[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71HC87BVPYVRR1MDEKTSDSE":3,"skill-same:01M71HC87BVPYVRR1MDEKTSDSE":93},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M71HC87BVPYVRR1MDEKTSDSE","key-derivation",null,"This skill should be used when the user asks to \"derive keys\", \"use Type42\", \"use BRC-42\", \"derive child keys\", \"use BIP32\", \"use HD keys\", \"create mnemonic\", \"convert mnemonic to key\", \"derive BAP identity keys\", \"derive encryption keys\", or mentions key derivation, hierarchical deterministic wallets, invoice numbers, or child key generation on BSV.","JSGforever\u002Fskillguard","JSGforever","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F85541948?v=4","01M71FQD3E132VMR5F4TAYX3YS","01M71FQD4DYW0XJ4XQ4YQH75Y9",2,"GPL-3.0","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__b-open-io--key-derivation\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000040","财务","PROFESSION","适用职业",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"key derivation","deterministic","use","when","encryption","convert","create","hd","child","generation","keys","invoice","mnemonic","identity","wallets","user","2026-11-10 10:12:30",false,"---\nname: key-derivation\ndescription: This skill should be used when the user asks to \"derive keys\", \"use Type42\", \"use BRC-42\", \"derive child keys\", \"use BIP32\", \"use HD keys\", \"create mnemonic\", \"convert mnemonic to key\", \"derive BAP identity keys\", \"derive encryption keys\", or mentions key derivation, hierarchical deterministic wallets, invoice numbers, or child key generation on BSV.\n---\n\n# BSV Key Derivation\n\nTwo primary approaches for deriving keys on BSV, plus mnemonic support.\n\n## Quick Reference\n\n| Method | Package | Use Case |\n|--------|---------|----------|\n| **Type42 (BRC-42)** | `@bsv\u002Fsdk` | Modern: privacy-preserving, counterparty derivation |\n| **BIP32 (BRC-32)** | `@bsv\u002Fsdk` | Legacy: HD wallets, sequential paths |\n| **Mnemonic** | `@bsv\u002Fsdk` | Seed phrase to master key conversion |\n\n## 1. Type42 Key Derivation (Recommended)\n\nModern approach using ECDH shared secrets. Provides enhanced privacy and unlimited key derivation.\n\n### Basic Usage\n\n```typescript\nimport { PrivateKey, PublicKey } from \"@bsv\u002Fsdk\";\n\nconst masterKey = PrivateKey.fromWif(\"L1...\");\nconst counterpartyPubKey = masterKey.toPublicKey(); \u002F\u002F or another party's key\n\n\u002F\u002F Derive child key using invoice number\nconst childKey = masterKey.deriveChild(counterpartyPubKey, \"invoice-123\");\nconst childAddress = childKey.toPublicKey().toAddress();\n```\n\n### Invoice Number Format (BRC-43)\n\nFor protocol-specific derivations, use the format: `{securityLevel}-{protocol}-{keyId}`\n\n```typescript\n\u002F\u002F BAP identity signing key\nconst bapKey = masterKey.deriveChild(masterKey.toPublicKey(), \"1-bap-identity\");\n\n\u002F\u002F Encryption key\nconst encKey = masterKey.deriveChild(masterKey.toPublicKey(), \"2-encryption-default\");\n```\n\n### Counterparty Derivation\n\nType42 enables deriving shared keys between parties without revealing private keys:\n\n```typescript\n\u002F\u002F Alice derives key for Bob\nconst aliceKey = PrivateKey.fromWif(\"L1...\");\nconst bobPubKey = PublicKey.fromString(\"02...\");\nconst sharedKey = aliceKey.deriveChild(bobPubKey, \"payment-001\");\n\n\u002F\u002F Bob derives same address using his private key and Alice's public key\nconst bobKey = PrivateKey.fromWif(\"K1...\");\nconst alicePubKey = aliceKey.toPublicKey();\nconst bobDerived = bobKey.deriveChild(alicePubKey, \"payment-001\");\n\u002F\u002F bobDerived.toPublicKey().toAddress() === sharedKey.toPublicKey().toAddress()\n```\n\n### Key Advantages\n\n- Privacy: ECDH shared secrets prevent address reuse detection\n- Flexibility: Any string as invoice number (no 2^31 limit)\n- Auditability: Reveal shared secret to specific parties only\n- No public derivation: Enhanced security vs BIP32\n\n## 2. BIP32 HD Key Derivation (Legacy)\n\nTraditional hierarchical deterministic derivation for compatibility.\n\n### Basic Usage\n\n```typescript\nimport { HD } from \"@bsv\u002Fsdk\";\n\n\u002F\u002F From extended private key\nconst hdKey = HD.fromString(\"xprv9s21ZrQH143K...\");\n\n\u002F\u002F Derive child at path\nconst child = hdKey.derive(\"m\u002F44'\u002F0'\u002F0'\u002F0\u002F0\");\nconst address = child.pubKey.toAddress();\nconst privateKey = child.privKey;\n```\n\n### Path Format\n\n- `m` = master key\n- Numbers = child index (0 to 2^31-1)\n- Apostrophe (`'`) = hardened derivation\n\n```typescript\n\u002F\u002F Standard wallet paths\nconst receiving = hdKey.derive(\"m\u002F44'\u002F236'\u002F0'\u002F0\u002F0\");   \u002F\u002F BSV receiving\nconst change = hdKey.derive(\"m\u002F44'\u002F236'\u002F0'\u002F1\u002F0\");     \u002F\u002F BSV change\n\n\u002F\u002F BAP identity path\nconst bapRoot = hdKey.derive(\"m\u002F424150'\u002F0'\u002F0'\");      \u002F\u002F 424150 = BAP in decimal\n```\n\n### From Mnemonic\n\n```typescript\nimport { Mnemonic, HD } from \"@bsv\u002Fsdk\";\n\nconst mnemonic = Mnemonic.fromString(\"word1 word2 word3...\");\nconst seed = mnemonic.toSeed();\nconst hdKey = HD.fromSeed(seed);\n```\n\n## 3. Mnemonic to Single Master Key\n\nFor Type42, convert mnemonic to a single master key (not extended key):\n\n```typescript\nimport { Mnemonic, Hash, PrivateKey, Utils } from \"@bsv\u002Fsdk\";\nconst { toHex } = Utils;\n\nconst mnemonic = Mnemonic.fromString(\"dial tunnel valid cry exhaust...\");\nconst seed = mnemonic.toSeed();\n\n\u002F\u002F SHA256 of seed produces 256-bit private key\nconst keyBytes = Hash.sha256(seed);\nconst masterKey = PrivateKey.fromString(toHex(keyBytes), \"hex\");\n\n\u002F\u002F Use with Type42 derivation\nconst childKey = masterKey.deriveChild(masterKey.toPublicKey(), \"bap:0\");\n```\n\nThis approach:\n- Maintains familiar mnemonic backup\n- Produces single key for Type42 (not HD extended key)\n- Remains compatible with existing BIP39 mnemonics\n\n## Choosing Between Methods\n\n| Scenario | Recommended |\n|----------|-------------|\n| New wallet\u002Fidentity system | Type42 |\n| Privacy-preserving payments | Type42 |\n| Counterparty key agreement | Type42 |\n| Legacy wallet compatibility | BIP32 |\n| Sequential address generation | BIP32 |\n| Migration from existing HD wallet | Both (see migration) |\n\n## BAP Identity Key Derivation\n\nBAP uses a two-level derivation hierarchy:\n\n```typescript\n\u002F\u002F Level 1: Member key from path\nconst memberKey = masterKey.deriveChild(masterKey.toPublicKey(), \"bap:0\");\n\n\u002F\u002F Level 2: Identity signing key using BAP invoice number\nconst signingKey = memberKey.deriveChild(memberKey.toPublicKey(), \"1-bap-identity\");\nconst signingAddress = signingKey.toPublicKey().toAddress();\n```\n\nFor BIP32 legacy:\n```typescript\nconst memberHD = hdKey.derive(\"m\u002F424150'\u002F0'\u002F0'\u002F0\u002F0\u002F0\");\n\u002F\u002F Then apply Type42 for signing key\nconst signingKey = memberHD.privKey.deriveChild(memberHD.pubKey, \"1-bap-identity\");\n```\n\n## Security Considerations\n\n1. **Never expose master keys**: Derive child keys for operations\n2. **Use hardened paths** for BIP32 when privacy matters (apostrophe)\n3. **Type42 prevents public derivation**: Cannot derive child public keys from parent public key alone\n4. **Invoice numbers are not secret**: They can be shared\n\n## bsv-bap Library\n\nThe `bsv-bap` library implements Type42 with BRC-43 invoice numbers for BAP identities:\n\n```typescript\nimport { BAP } from \"bsv-bap\";\nimport { PrivateKey } from \"@bsv\u002Fsdk\";\n\nconst bap = new BAP({ rootPk: PrivateKey.fromRandom().toWif() });\nconst identity = bap.newId(\"Alice\");\n\n\u002F\u002F Signing key derived with \"1-bap-identity\"\nconst { address, signature } = identity.signMessage(messageBytes);\n\n\u002F\u002F Friend encryption key derived with \"2-friend-{sha256(friendBapId)}\"\nconst friendPubKey = identity.getEncryptionPublicKeyWithSeed(friendBapId);\nconst ciphertext = identity.encryptWithSeed(\"secret\", friendBapId);\n```\n\nA CLI is also available: `npm install -g bsv-bap` (see **`create-bap-identity`** skill).\n\n## Official Specifications\n\nAll BSV key derivation standards are documented at:\n\n**https:\u002F\u002Fbsv.brc.dev\u002Fkey-derivation**\n\nKey specifications:\n- **BRC-42**: Type42 key derivation scheme\n- **BRC-32**: BIP32 HD key derivation\n- **BRC-43**: Security levels, protocol IDs, key IDs\n- **BRC-69**: Revealing key linkages\n- **BRC-72**: Protecting key linkage information\n\n## Additional Resources\n\n### Reference Files\n\n- **`references\u002Fbrc-42-type42.md`** - Complete Type42 specification and advanced patterns\n- **`references\u002Fbrc-32-bip32.md`** - BIP32 legacy derivation details\n- **`references\u002Fbap-derivation.md`** - BAP identity key derivation patterns and migration\n\n### Examples\n\n- **`examples\u002Ftype42-derivation.ts`** - Type42 counterparty key derivation\n- **`examples\u002Fbip32-wallet.ts`** - BIP32 HD wallet with standard paths\n- **`examples\u002Fmnemonic-to-type42.ts`** - Convert mnemonic to Type42 master key\n","# BSV Key Derivation\n\nTwo primary approaches for deriving keys on BSV, plus mnemonic support.\n\n## Quick Reference\n\n| Method | Package | Use Case |\n|--------|---------|----------|\n| **Type42 (BRC-42)** | `@bsv\u002Fsdk` | Modern: privacy-preserving, counterparty derivation |\n| **BIP32 (BRC-32)** | `@bsv\u002Fsdk` | Legacy: HD wallets, sequential paths |\n| **Mnemonic** | `@bsv\u002Fsdk` | Seed phrase to master key conversion |\n\n## 1. Type42 Key Derivation (Recommended)\n\nModern approach using ECDH shared secrets. Provides enhanced privacy and unlimited key derivation.\n\n### Basic Usage\n\n```typescript\nimport { PrivateKey, PublicKey } from \"@bsv\u002Fsdk\";\n\nconst masterKey = PrivateKey.fromWif(\"L1...\");\nconst counterpartyPubKey = masterKey.toPublicKey(); \u002F\u002F or another party's key\n\n\u002F\u002F Derive child key using invoice number\nconst childKey = masterKey.deriveChild(counterpartyPubKey, \"invoice-123\");\nconst childAddress = childKey.toPublicKey().toAddress();\n```\n\n### Invoice Number Format (BRC-43)\n\nFor protocol-specific derivations, use the format: `{securityLevel}-{protocol}-{keyId}`\n\n```typescript\n\u002F\u002F BAP identity signing key\nconst bapKey = masterKey.deriveChild(masterKey.toPublicKey(), \"1-bap-identity\");\n\n\u002F\u002F Encryption key\nconst encKey = masterKey.deriveChild(masterKey.toPublicKey(), \"2-encryption-default\");\n```\n\n### Counterparty Derivation\n\nType42 enables deriving shared keys between parties without revealing private keys:\n\n```typescript\n\u002F\u002F Alice derives key for Bob\nconst aliceKey = PrivateKey.fromWif(\"L1...\");\nconst bobPubKey = PublicKey.fromString(\"02...\");\nconst sharedKey = aliceKey.deriveChild(bobPubKey, \"payment-001\");\n\n\u002F\u002F Bob derives same address using his private key and Alice's public key\nconst bobKey = PrivateKey.fromWif(\"K1...\");\nconst alicePubKey = aliceKey.toPublicKey();\nconst bobDerived = bobKey.deriveChild(alicePubKey, \"payment-001\");\n\u002F\u002F bobDerived.toPublicKey().toAddress() === sharedKey.toPublicKey().toAddress()\n```\n\n### Key Advantages\n\n- Privacy: ECDH shared secrets prevent address reuse detection\n- Flexibility: Any string as invoice number (no 2^31 limit)\n- Auditability: Reveal shared secret to specific parties only\n- No public derivation: Enhanced security vs BIP32\n\n## 2. BIP32 HD Key Derivation (Legacy)\n\nTraditional hierarchical deterministic derivation for compatibility.\n\n### Basic Usage\n\n```typescript\nimport { HD } from \"@bsv\u002Fsdk\";\n\n\u002F\u002F From extended private key\nconst hdKey = HD.fromString(\"xprv9s21ZrQH143K...\");\n\n\u002F\u002F Derive child at path\nconst child = hdKey.derive(\"m\u002F44'\u002F0'\u002F0'\u002F0\u002F0\");\nconst address = child.pubKey.toAddress();\nconst privateKey = child.privKey;\n```\n\n### Path Format\n\n- `m` = master key\n- Numbers = child index (0 to 2^31-1)\n- Apostrophe (`'`) = hardened derivation\n\n```typescript\n\u002F\u002F Standard wallet paths\nconst receiving = hdKey.derive(\"m\u002F44'\u002F236'\u002F0'\u002F0\u002F0\");   \u002F\u002F BSV receiving\nconst change = hdKey.derive(\"m\u002F44'\u002F236'\u002F0'\u002F1\u002F0\");     \u002F\u002F BSV change\n\n\u002F\u002F BAP identity path\nconst bapRoot = hdKey.derive(\"m\u002F424150'\u002F0'\u002F0'\");      \u002F\u002F 424150 = BAP in decimal\n```\n\n### From Mnemonic\n\n```typescript\nimport { Mnemonic, HD } from \"@bsv\u002Fsdk\";\n\nconst mnemonic = Mnemonic.fromString(\"word1 word2 word3...\");\nconst seed = mnemonic.toSeed();\nconst hdKey = HD.fromSeed(seed);\n```\n\n## 3. Mnemonic to Single Master Key\n\nFor Type42, convert mnemonic to a single master key (not extended key):\n\n```typescript\nimport { Mnemonic, Hash, PrivateKey, Utils } from \"@bsv\u002Fsdk\";\nconst { toHex } = Utils;\n\nconst mnemonic = Mnemonic.fromString(\"dial tunnel valid cry exhaust...\");\nconst seed = mnemonic.toSeed();\n\n\u002F\u002F SHA256 of seed produces 256-bit private key\nconst keyBytes = Hash.sha256(seed);\nconst masterKey = PrivateKey.fromString(toHex(keyBytes), \"hex\");\n\n\u002F\u002F Use with Type42 derivation\nconst childKey = masterKey.deriveChild(masterKey.toPublicKey(), \"bap:0\");\n```\n\nThis approach:\n- Maintains familiar mnemonic backup\n- Produces single key for Type42 (not HD extended key)\n- Remains compatible with existing BIP39 mnemonics\n\n## Choosing Between Methods\n\n| Scenario | Recommended |\n|----------|-------------|\n| New wallet\u002Fidentity system | Type42 |\n| Privacy-preserving payments | Type42 |\n| Counterparty key agreement | Type42 |\n| Legacy wallet compatibility | BIP32 |\n| Sequential address generation | BIP32 |\n| Migration from existing HD wallet | Both (see migration) |\n\n## BAP Identity Key Derivation\n\nBAP uses a two-level derivation hierarchy:\n\n```typescript\n\u002F\u002F Level 1: Member key from path\nconst memberKey = masterKey.deriveChild(masterKey.toPublicKey(), \"bap:0\");\n\n\u002F\u002F Level 2: Identity signing key using BAP invoice number\nconst signingKey = memberKey.deriveChild(memberKey.toPublicKey(), \"1-bap-identity\");\nconst signingAddress = signingKey.toPublicKey().toAddress();\n```\n\nFor BIP32 legacy:\n```typescript\nconst memberHD = hdKey.derive(\"m\u002F424150'\u002F0'\u002F0'\u002F0\u002F0\u002F0\");\n\u002F\u002F Then apply Type42 for signing key\nconst signingKey = memberHD.privKey.deriveChild(memberHD.pubKey, \"1-bap-identity\");\n```\n\n## Security Considerations\n\n1. **Never expose master keys**: Derive child keys for operations\n2. **Use hardened paths** for BIP32 when privacy matters (apostrophe)\n3. **Type42 prevents public derivation**: Cannot derive child public keys from parent public key alone\n4. **Invoice numbers are not secret**: They can be shared\n\n## bsv-bap Library\n\nThe `bsv-bap` library implements Type42 with BRC-43 invoice numbers for BAP identities:\n\n```typescript\nimport { BAP } from \"bsv-bap\";\nimport { PrivateKey } from \"@bsv\u002Fsdk\";\n\nconst bap = new BAP({ rootPk: PrivateKey.fromRandom().toWif() });\nconst identity = bap.newId(\"Alice\");\n\n\u002F\u002F Signing key derived with \"1-bap-identity\"\nconst { address, signature } = identity.signMessage(messageBytes);\n\n\u002F\u002F Friend encryption key derived with \"2-friend-{sha256(friendBapId)}\"\nconst friendPubKey = identity.getEncryptionPublicKeyWithSeed(friendBapId);\nconst ciphertext = identity.encryptWithSeed(\"secret\", friendBapId);\n```\n\nA CLI is also available: `npm install -g bsv-bap` (see **`create-bap-identity`** skill).\n\n## Official Specifications\n\nAll BSV key derivation standards are documented at:\n\n**https:\u002F\u002Fbsv.brc.dev\u002Fkey-derivation**\n\nKey specifications:\n- **BRC-42**: Type42 key derivation scheme\n- **BRC-32**: BIP32 HD key derivation\n- **BRC-43**: Security levels, protocol IDs, key IDs\n- **BRC-69**: Revealing key linkages\n- **BRC-72**: Protecting key linkage information\n\n## Additional Resources\n\n### Reference Files\n\n- **`references\u002Fbrc-42-type42.md`** - Complete Type42 specification and advanced patterns\n- **`references\u002Fbrc-32-bip32.md`** - BIP32 legacy derivation details\n- **`references\u002Fbap-derivation.md`** - BAP identity key derivation patterns and migration\n\n### Examples\n\n- **`examples\u002Ftype42-derivation.ts`** - Type42 counterparty key derivation\n- **`examples\u002Fbip32-wallet.ts`** - BIP32 HD wallet with standard paths\n- **`examples\u002Fmnemonic-to-type42.ts`** - Convert mnemonic to Type42 master key\n",{"name":5,"description":7},"main","f2ec4b3b9133d34eeaf9b38e4b0a97e8e5705a7f","benchmarks\u002Ffinal\u002Fskills\u002Fasset1__b-open-io--key-derivation",0,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard","https:\u002F\u002Fgithub.com\u002FJSGforever","2026-08-29 18:27:56",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add JSGforever\u002Fskillguard --skill key-derivation",{"tool":57,"command":58},"bunx","bunx skills add JSGforever\u002Fskillguard --skill key-derivation",{"tool":60,"command":61},"pnpm","pnpm dlx skills add JSGforever\u002Fskillguard --skill key-derivation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__b-open-io--key-derivation\u002FSKILL.md",true,[65,71,75,79,85,89],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"examples\u002Fbip32-wallet.ts","SCRIPT","脚本",7632,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__b-open-io--key-derivation\u002Fexamples\u002Fbip32-wallet.ts",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"examples\u002Fmnemonic-to-type42.ts",8001,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__b-open-io--key-derivation\u002Fexamples\u002Fmnemonic-to-type42.ts",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"examples\u002Ftype42-derivation.ts",5363,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__b-open-io--key-derivation\u002Fexamples\u002Ftype42-derivation.ts",{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fbap-derivation.md","REFERENCE","参考文档",7143,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__b-open-io--key-derivation\u002Freferences\u002Fbap-derivation.md",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fbrc-32-bip32.md",6541,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__b-open-io--key-derivation\u002Freferences\u002Fbrc-32-bip32.md",{"path":90,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fbrc-42-type42.md",8052,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__b-open-io--key-derivation\u002Freferences\u002Fbrc-42-type42.md",[94,125,139,166,188,209],{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":105,"publishedAt":39},"01M71HY2SNXBA9Q00WZDTZQ31Z","skillguard-codex-scanner","Hybrid deterministic+LLM agent-skill security scanner. Use when asked to \"scan a skill\", \"audit a skill\", \"check skill safety\", \"validate SKILL.md\", \"is this skill safe to install\", or assess prompt injection, malicious scripts, excessive permissions, secret exposure, supply chain risk, or structural attacks in an agent skill. Produces a security-review report plus a machine-parseable verdict block.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fsrc\u002Fskillguard\u002Fstatic_scanner\u002Fskillguard-codex-scanner\u002FSKILL.md",[100],{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[106,107,108,109,110,111,112,113,114,115,116,117,26,118,119,120,121,122,123,124],"scanner","skillguard codex scanner","skillguard","codex","chain","skill security","security-review","review report","structural","secret","prompt injection","security scanner","review","malicious","permissions","exposure","audit","scripts","safe",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":129,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":135,"publishedAt":39},"01M71HY0SPKTT3S27BC2HPAC5M","data-exfiltrator","Analyzes data files","MIT","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Fsmoke-one-skill\u002Fasset1__cisco-ai-defense--data-exfiltrator\u002FSKILL.md",[132],{"categoryNo":133,"categoryName":134,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000033","数据分析师",[136,137,138],"data","data exfiltrator","files",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":39},"01M71HXVS9EMN44BGDW215FZ72","real-time-collaboration-engine","Build real-time collaborative editing with WebSockets, OT\u002FCRDT conflict resolution, and presence awareness. Implements cursor tracking, optimistic updates, and offline sync. Use for collaborative editors, whiteboards, video editing. Activate on \"real-time collaboration\", \"WebSocket sync\", \"multiplayer editing\", \"CRDT\", \"presence awareness\". NOT for simple chat, request-response APIs, or single-user apps.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--real-time-collaboration-engine\u002FSKILL.md",[],[146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165],"time","real time collaboration engine","real time collaboration","collaboration","engine","real time","Video","reliability","video editing","performance","conflict resolution","presence","access","apps","updates","Bash","activate","optimizer","react","streaming",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":175,"publishedAt":39},"01M71HXP6CTY4KFN0QVMMN0V7J","react-performance-optimizer","Optimize React apps for 60fps performance. Implements memoization, virtualization, code splitting, bundle optimization. Use for slow renders, large lists, bundle bloat. Activate on \"React performance\", \"slow render\", \"useMemo\", \"bundle size\", \"virtualization\". NOT for backend optimization, non-React frameworks, or premature optimization.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--react-performance-optimizer\u002FSKILL.md",[172],{"categoryNo":173,"categoryName":174,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000009","前端开发",[155,176,163,164,177,178,179,180,181,182,146,183,184,159,161,185,162,165,186,187],"react performance optimizer","react performance","performance optimizer","app","nextjs","expert","re","render","2025","code","router","strategies",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":195,"publishedAt":39},"01M71HXH7QXSQB4QTDZ7SP7YXQ","llm-streaming-response-handler","Build production LLM streaming UIs with Server-Sent Events, real-time token display, cancellation, error recovery. Handles OpenAI\u002FAnthropic\u002FClaude streaming APIs. Use for chatbots, AI assistants, real-time text generation. Activate on \"LLM streaming\", \"SSE\", \"token stream\", \"chat UI\", \"real-time AI\". NOT for batch processing, non-streaming APIs, or WebSocket bidirectional chat.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--llm-streaming-response-handler\u002FSKILL.md",[194],{"categoryNo":173,"categoryName":174,"taxonomyType":103,"taxonomyTypeDesc":104},[196,165,197,198,199,200,155,146,201,202,203,161,162,163,204,164,205,206,207,208],"llm streaming response handler","handler","error","processing","retry","chat ui","error recovery","critical","batch","display","text","server","read",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":213,"categories":214,"keywords":222,"publishedAt":39},"01M71HXCB0E1YRKYW1Y8T0Y106","github-actions-pipeline-builder","Build production CI\u002FCD pipelines with GitHub Actions. Implements matrix builds, caching, deployments, testing, security scanning. Use for automated testing, deployments, release workflows. Activate on \"GitHub Actions\", \"CI\u002FCD\", \"workflow\", \"deployment pipeline\", \"automated testing\". NOT for Jenkins\u002FCircleCI, manual deployments, or non-GitHub repositories.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--github-actions-pipeline-builder\u002FSKILL.md",[215,218,221],{"categoryNo":216,"categoryName":217,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":219,"categoryName":220,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},[223,224,225,226,227,228,229,153,181,230,231,232,162,187,233,208,234,235,236,237],"github actions pipeline builder","actions","github actions","pipeline builder","github","builder","pipeline","testing","ci","workflows","run","release","write","edit","git"]