[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F42XR06HBATYABXCZVD12F":3,"skill-same:01M6F42XR06HBATYABXCZVD12F":53},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":25,"publishedAt":26,"linkOnly":27,"markdownContent":28,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":35,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M6F42XR06HBATYABXCZVD12F","wycheproof",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FelizaOS\u002Feliza\u002Fwycheproof\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[5],"2026-11-10 10:12:30",false,"# Wycheproof\n\nWycheproof is an extensive collection of test vectors designed to verify the correctness of cryptographic implementations and test against known attacks. Originally developed by Google, it is now a community-managed project where contributors can add test vectors for specific cryptographic constructions.\n\n## Background\n\n### Key Concepts\n\n| Concept | Description |\n|---------|-------------|\n| Test vector | Input\u002Foutput pair for validating crypto implementation correctness |\n| Test group | Collection of test vectors sharing attributes (key size, IV size, curve) |\n| Result flag | Indicates if test should pass (valid), fail (invalid), or is acceptable |\n| Edge case testing | Testing for known vulnerabilities and attack patterns |\n\n### Why This Matters\n\nCryptographic implementations are notoriously difficult to get right. Even small bugs can:\n- Expose private keys\n- Allow signature forgery\n- Enable message decryption\n- Create consensus problems when different implementations accept\u002Freject the same inputs\n\nWycheproof has found vulnerabilities in major libraries including OpenJDK's SHA1withDSA, Bouncy Castle's ECDHC, and the elliptic npm package.\n\n## When to Use\n\n**Apply Wycheproof when:**\n- Testing cryptographic implementations (AES-GCM, ECDSA, ECDH, RSA, etc.)\n- Validating that crypto code handles edge cases correctly\n- Verifying implementations against known attack vectors\n- Setting up CI\u002FCD for cryptographic libraries\n- Auditing third-party crypto code for correctness\n\n**Consider alternatives when:**\n- Testing for timing side-channels (use constant-time testing tools instead)\n- Finding new unknown bugs (use fuzzing instead)\n- Testing custom\u002Fexperimental cryptographic algorithms (Wycheproof only covers established algorithms)\n\n## Quick Reference\n\n| Scenario | Recommended Approach | Notes |\n|----------|---------------------|-------|\n| AES-GCM implementation | Use `aes_gcm_test.json` | 316 test vectors across 44 test groups |\n| ECDSA verification | Use `ecdsa_*_test.json` for specific curves | Tests signature malleability, DER encoding |\n| ECDH key exchange | Use `ecdh_*_test.json` | Tests invalid curve attacks |\n| RSA signatures | Use `rsa_*_test.json` | Tests padding oracle attacks |\n| ChaCha20-Poly1305 | Use `chacha20_poly1305_test.json` | Tests AEAD implementation |\n\n## Testing Workflow\n\n```\nPhase 1: Setup                 Phase 2: Parse Test Vectors\n┌─────────────────┐          ┌─────────────────┐\n│ Add Wycheproof  │    →     │ Load JSON file  │\n│ as submodule    │          │ Filter by params│\n└─────────────────┘          └─────────────────┘\n         ↓                            ↓\nPhase 4: CI Integration        Phase 3: Write Harness\n┌─────────────────┐          ┌─────────────────┐\n│ Auto-update     │    ←     │ Test valid &    │\n│ test vectors    │          │ invalid cases   │\n└─────────────────┘          └─────────────────┘\n```\n\n## Repository Structure\n\nThe Wycheproof repository is organized as follows:\n\n```text\n┣ ? README.md       : Project overview\n┣ ? doc             : Documentation\n┣ ? java            : Java JCE interface testing harness\n┣ ? javascript      : JavaScript testing harness\n┣ ? schemas         : Test vector schemas\n┣ ? testvectors     : Test vectors\n┗ ? testvectors_v1  : Updated test vectors (more detailed)\n```\n\nThe essential folders are `testvectors` and `testvectors_v1`. While both contain similar files, `testvectors_v1` includes more detailed information and is recommended for new integrations.\n\n## Supported Algorithms\n\nWycheproof provides test vectors for a wide range of cryptographic algorithms:\n\n| Category | Algorithms |\n|----------|------------|\n| **Symmetric Encryption** | AES-GCM, AES-EAX, ChaCha20-Poly1305 |\n| **Signatures** | ECDSA, EdDSA, RSA-PSS, RSA-PKCS1 |\n| **Key Exchange** | ECDH, X25519, X448 |\n| **Hashing** | HMAC, HKDF |\n| **Curves** | secp256k1, secp256r1, secp384r1, secp521r1, ed25519, ed448 |\n\n## Test File Structure\n\nEach JSON test file tests a specific cryptographic construction. All test files share common attributes:\n\n```json\n\"algorithm\"         : The name of the algorithm tested\n\"schema\"            : The JSON schema (found in schemas folder)\n\"generatorVersion\"  : The version number\n\"numberOfTests\"     : The total number of test vectors in this file\n\"header\"            : Detailed description of test vectors\n\"notes\"             : In-depth explanation of flags in test vectors\n\"testGroups\"        : Array of one or multiple test groups\n```\n\n### Test Groups\n\nTest groups group sets of tests based on shared attributes such as:\n- Key sizes\n- IV sizes\n- Public keys\n- Curves\n\nThis classification allows extracting tests that meet specific criteria relevant to the construction being tested.\n\n### Test Vector Attributes\n\n#### Shared Attributes\n\nAll test vectors contain four common fields:\n\n- **tcId**: Unique identifier for the test vector within a file\n- **comment**: Additional information about the test case\n- **flags**: Descriptions of specific test case types and potential dangers (referenced in `notes` field)\n- **result**: Expected outcome of the test\n\nThe `result` field can take three values:\n\n| Result | Meaning |\n|--------|---------|\n| **valid** | Test case should succeed |\n| **acceptable** | Test case is allowed to succeed but contains non-ideal attributes |\n| **invalid** | Test case should fail |\n\n#### Unique Attributes\n\nUnique attributes are specific to the algorithm being tested:\n\n| Algorithm | Unique Attributes |\n|-----------|-------------------|\n| AES-GCM | `key`, `iv`, `aad`, `msg`, `ct`, `tag` |\n| ECDH secp256k1 | `public`, `private`, `shared` |\n| ECDSA | `msg`, `sig`, `result` |\n| EdDSA | `msg`, `sig`, `pk` |\n\n## Implementation Guide\n\n### Phase 1: Add Wycheproof to Your Project\n\n**Option 1: Git Submodule (Recommended)**\n\nAdding Wycheproof as a git submodule ensures automatic updates:\n\n```bash\ngit submodule add https:\u002F\u002Fgithub.com\u002FC2SP\u002Fwycheproof.git\n```\n\n**Option 2: Fetch Specific Test Vectors**\n\nIf submodules aren't possible, fetch specific JSON files:\n\n```bash\n#!\u002Fbin\u002Fbash\n\nTMP_WYCHEPROOF_FOLDER=\".wycheproof\u002F\"\nTEST_VECTORS=('aes_gcm_test.json' 'aes_eax_test.json')\nBASE_URL=\"https:\u002F\u002Fraw.githubusercontent.com\u002FC2SP\u002Fwycheproof\u002Fmaster\u002Ftestvectors_v1\u002F\"\n\n# Create wycheproof folder\nmkdir -p $TMP_WYCHEPROOF_FOLDER\n\n# Request all test vector files if they don't exist\nfor i in \"${TEST_VECTORS[@]}\"; do\n  if [ ! -f \"${TMP_WYCHEPROOF_FOLDER}${i}\" ]; then\n    curl -o \"${TMP_WYCHEPROOF_FOLDER}${i}\" \"${BASE_URL}${i}\"\n    if [ $? -ne 0 ]; then\n      echo \"Failed to download ${i}\"\n      exit 1\n    fi\n  fi\ndone\n```\n\n### Phase 2: Parse Test Vectors\n\nIdentify the test file for your algorithm and parse the JSON:\n\n**Python Example:**\n\n```python\nimport json\n\ndef load_wycheproof_test_vectors(path: str):\n    testVectors = []\n    try:\n        with open(path, \"r\") as f:\n            wycheproof_json = json.loads(f.read())\n    except FileNotFoundError:\n        print(f\"No Wycheproof file found at: {path}\")\n        return testVectors\n\n    # Attributes that need hex-to-bytes conversion\n    convert_attr = {\"key\", \"aad\", \"iv\", \"msg\", \"ct\", \"tag\"}\n\n    for testGroup in wycheproof_json[\"testGroups\"]:\n        # Filter test groups based on implementation constraints\n        if testGroup[\"ivSize\"] \u003C 64 or testGroup[\"ivSize\"] > 1024:\n            continue\n\n        for tv in testGroup[\"tests\"]:\n            # Convert hex strings to bytes\n            for attr in convert_attr:\n                if attr in tv:\n                    tv[attr] = bytes.fromhex(tv[attr])\n            testVectors.append(tv)\n\n    return testVectors\n```\n\n**JavaScript Example:**\n\n```javascript\nconst fs = require('fs').promises;\n\nasync function loadWycheproofTestVectors(path) {\n  const tests = [];\n\n  try {\n    const fileContent = await fs.readFile(path);\n    const data = JSON.parse(fileContent.toString());\n\n    data.testGroups.forEach(testGroup => {\n      testGroup.tests.forEach(test => {\n        \u002F\u002F Add shared test group properties to each test\n        test['pk'] = testGroup.publicKey.pk;\n        tests.push(test);\n      });\n    });\n  } catch (err) {\n    console.error('Error reading or parsing file:', err);\n    throw err;\n  }\n\n  return tests;\n}\n```\n\n### Phase 3: Write Testing Harness\n\nCreate test functions that handle both valid and invalid test cases.\n\n**Python\u002Fpytest Example:**\n\n```python\nimport pytest\nfrom cryptography.hazmat.primitives.ciphers.aead import AESGCM\n\ntvs = load_wycheproof_test_vectors(\"wycheproof\u002Ftestvectors_v1\u002Faes_gcm_test.json\")\n\n@pytest.mark.parametrize(\"tv\", tvs, ids=[str(tv['tcId']) for tv in tvs])\ndef test_encryption(tv):\n    try:\n        aesgcm = AESGCM(tv['key'])\n        ct = aesgcm.encrypt(tv['iv'], tv['msg'], tv['aad'])\n    except ValueError as e:\n        # Implementation raised error - verify test was expected to fail\n        assert tv['result'] != 'valid', tv['comment']\n        return\n\n    if tv['result'] == 'valid':\n        assert ct[:-16] == tv['ct'], f\"Ciphertext mismatch: {tv['comment']}\"\n        assert ct[-16:] == tv['tag'], f\"Tag mismatch: {tv['comment']}\"\n    elif tv['result'] == 'invalid' or tv['result'] == 'acceptable':\n        assert ct[:-16] != tv['ct'] or ct[-16:] != tv['tag']\n\n@pytest.mark.parametrize(\"tv\", tvs, ids=[str(tv['tcId']) for tv in tvs])\ndef test_decryption(tv):\n    try:\n        aesgcm = AESGCM(tv['key'])\n        decrypted_msg = aesgcm.decrypt(tv['iv'], tv['ct'] + tv['tag'], tv['aad'])\n    except ValueError:\n        assert tv['result'] != 'valid', tv['comment']\n        return\n    except InvalidTag:\n        assert tv['result'] != 'valid', tv['comment']\n        assert 'ModifiedTag' in tv['flags'], f\"Expected 'ModifiedTag' flag: {tv['comment']}\"\n        return\n\n    assert tv['result'] == 'valid', f\"No invalid test case should pass: {tv['comment']}\"\n    assert decrypted_msg == tv['msg'], f\"Decryption mismatch: {tv['comment']}\"\n```\n\n**JavaScript\u002FMocha Example:**\n\n```javascript\nconst assert = require('assert');\n\nfunction testFactory(tcId, tests) {\n  it(`[${tcId + 1}] ${tests[tcId].comment}`, function () {\n    const test = tests[tcId];\n    const ed25519 = new eddsa('ed25519');\n    const key = ed25519.keyFromPublic(toArray(test.pk, 'hex'));\n\n    let sig;\n    if (test.result === 'valid') {\n      sig = key.verify(test.msg, test.sig);\n      assert.equal(sig, true, `[${test.tcId}] ${test.comment}`);\n    } else if (test.result === 'invalid') {\n      try {\n        sig = key.verify(test.msg, test.sig);\n      } catch (err) {\n        \u002F\u002F Point could not be decoded\n        sig = false;\n      }\n      assert.equal(sig, false, `[${test.tcId}] ${test.comment}`);\n    }\n  });\n}\n\n\u002F\u002F Generate tests for all test vectors\nfor (var tcId = 0; tcId \u003C tests.length; tcId++) {\n  testFactory(tcId, tests);\n}\n```\n\n### Phase 4: CI Integration\n\nEnsure test vectors stay up to date by:\n\n1. **Using git submodules**: Update submodule in CI before running tests\n2. **Fetching latest vectors**: Run fetch script before test execution\n3. **Scheduled updates**: Set up weekly\u002Fmonthly updates to catch new test vectors\n\n## Common Vulnerabilities Detected\n\nWycheproof test vectors are designed to catch specific vulnerability patterns:\n\n| Vulnerability | Description | Affected Algorithms | Example CVE |\n|---------------|-------------|---------------------|-------------|\n| Signature malleability | Multiple valid signatures for same message | ECDSA, EdDSA | CVE-2024-42459 |\n| Invalid DER encoding | Accepting non-canonical DER signatures | ECDSA | CVE-2024-42460, CVE-2024-42461 |\n| Invalid curve attacks | ECDH with invalid curve points | ECDH | Common in many libraries |\n| Padding oracle | Timing leaks in padding validation | RSA-PKCS1 | Historical OpenSSL issues |\n| Tag forgery | Accepting modified authentication tags | AES-GCM, ChaCha20-Poly1305 | Various implementations |\n\n### Signature Malleability: Deep Dive\n\n**Problem:** Implementations that don't validate signature encoding can accept multiple valid signatures for the same message.\n\n**Example (EdDSA):** Appending or removing zeros from signature:\n```text\nValid signature:   ...6a5c51eb6f946b30d\nInvalid signature: ...6a5c51eb6f946b30d0000  (should be rejected)\n```\n\n**How to detect:**\n```python\n# Add signature length check\nif len(sig) != 128:  # EdDSA signatures must be exactly 64 bytes (128 hex chars)\n    return False\n```\n\n**Impact:** Can lead to consensus problems when different implementations accept\u002Freject the same signatures.\n\n**Related Wycheproof tests:**\n- EdDSA: tcId 37 - \"removing 0 byte from signature\"\n- ECDSA: tcId 06 - \"Legacy: ASN encoding of r misses leading 0\"\n\n## Case Study: Elliptic npm Package\n\nThis case study demonstrates how Wycheproof found three CVEs in the popular elliptic npm package (3000+ dependents, millions of weekly downloads).\n\n### Overview\n\nThe [elliptic](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Felliptic) library is an elliptic-curve cryptography library written in JavaScript, supporting ECDH, ECDSA, and EdDSA. Using Wycheproof test vectors on version 6.5.6 revealed multiple vulnerabilities:\n\n- **CVE-2024-42459**: EdDSA signature malleability (appending\u002Fremoving zeros)\n- **CVE-2024-42460**: ECDSA DER encoding - invalid bit placement\n- **CVE-2024-42461**: ECDSA DER encoding - leading zero in length field\n\n### Methodology\n\n1. **Identify supported curves**: ed25519 for EdDSA\n2. **Find test vectors**: `testvectors_v1\u002Fed25519_test.json`\n3. **Parse test vectors**: Load JSON and extract tests\n4. **Write test harness**: Create parameterized tests\n5. **Run tests**: Identify failures\n6. **Analyze root causes**: Examine implementation code\n7. **Propose fixes**: Add validation checks\n\n### Key Findings\n\n**EdDSA Issue (CVE-2024-42459):**\n- Missing signature length validation\n- Allowed trailing zeros in signatures\n- Fix: Add `if(sig.length !== 128) return false;`\n\n**ECDSA Issue 1 (CVE-2024-42460):**\n- Missing check for first bit being zero in DER-encoded r and s values\n- Fix: Add `if ((data[p.place] & 128) !== 0) return false;`\n\n**ECDSA Issue 2 (CVE-2024-42461):**\n- DER length field accepted leading zeros\n- Fix: Add `if(buf[p.place] === 0x00) return false;`\n\n### Impact\n\nAll three vulnerabilities allowed multiple valid signatures for a single message, leading to consensus problems across implementations.\n\n**Lessons learned:**\n- Wycheproof catches subtle encoding bugs\n- Reusable test harnesses pay dividends\n- Test vector comments and flags help diagnose issues\n- Even popular libraries benefit from systematic test vector validation\n\n## Advanced Usage\n\n### Tips and Tricks\n\n| Tip | Why It Helps |\n|-----|--------------|\n| Filter test groups by parameters | Focus on test vectors relevant to your implementation constraints |\n| Use test vector flags | Understand specific vulnerability patterns being tested |\n| Check the `notes` field | Get detailed explanations of flag meanings |\n| Test both encrypt\u002Fdecrypt and sign\u002Fverify | Ensure bidirectional correctness |\n| Run tests in CI | Catch regressions and benefit from new test vectors |\n| Use parameterized tests | Get clear failure messages with tcId and comment |\n\n### Common Mistakes\n\n| Mistake | Why It's Wrong | Correct Approach |\n|---------|----------------|------------------|\n| Only testing valid cases | Misses vulnerabilities where invalid inputs are accepted | Test all result types: valid, invalid, acceptable |\n| Ignoring \"acceptable\" result | Implementation might have subtle bugs | Treat acceptable as warnings worth investigating |\n| Not filtering test groups | Wastes time on unsupported parameters | Filter by keySize, ivSize, etc. based on your implementation |\n| Not updating test vectors | Miss new vulnerability patterns | Use submodules or scheduled fetches |\n| Testing only one direction | Encrypt\u002Fsign might work but decrypt\u002Fverify fails | Test both operations |\n\n## Related Skills\n\n### Tool Skills\n\n| Skill | Primary Use in Wycheproof Testing |\n|-------|-----------------------------------|\n| **pytest** | Python testing framework for parameterized tests |\n| **mocha** | JavaScript testing framework for test generation |\n| **constant-time-testing** | Complement Wycheproof with timing side-channel testing |\n| **cryptofuzz** | Fuzz-based crypto testing to find additional bugs |\n\n### Technique Skills\n\n| Skill | When to Apply |\n|-------|---------------|\n| **coverage-analysis** | Ensure test vectors cover all code paths in crypto implementation |\n| **property-based-testing** | Test mathematical properties (e.g., encrypt\u002Fdecrypt round-trip) |\n| **fuzz-harness-writing** | Create harnesses for crypto parsers (complements Wycheproof) |\n\n### Related Domain Skills\n\n| Skill | Relationship |\n|-------|--------------|\n| **crypto-testing** | Wycheproof is a key tool in comprehensive crypto testing methodology |\n| **fuzzing** | Use fuzzing to find bugs Wycheproof doesn't cover (new edge cases) |\n\n## Skill Dependency Map\n\n```\n                    ┌─────────────────────┐\n                    │    wycheproof       │\n                    │   (this skill)      │\n                    └──────────┬──────────┘\n                               │\n           ┌───────────────────┼───────────────────┐\n           │                   │                   │\n           ▼                   ▼                   ▼\n┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐\n│  pytest\u002Fmocha   │ │ constant-time   │ │   cryptofuzz    │\n│ (test framework)│ │   testing       │ │   (fuzzing)     │\n└────────┬────────┘ └────────┬────────┘ └────────┬────────┘\n         │                   │                   │\n         └───────────────────┼───────────────────┘\n                             │\n                             ▼\n              ┌──────────────────────────┐\n              │   Technique Skills       │\n              │ coverage, harness, PBT   │\n              └──────────────────────────┘\n```\n\n## Resources\n\n### Official Repository\n\n**[Wycheproof GitHub Repository](https:\u002F\u002Fgithub.com\u002FC2SP\u002Fwycheproof)**\n\nThe official repository contains:\n- All test vectors in `testvectors\u002F` and `testvectors_v1\u002F`\n- JSON schemas in `schemas\u002F`\n- Reference implementations in Java and JavaScript\n- Documentation in `doc\u002F`\n\n### Real-World Examples\n\n**[pycryptodome](https:\u002F\u002Fpypi.org\u002Fproject\u002Fpycryptodome\u002F)**\n\nThe pycryptodome library integrates Wycheproof test vectors in their test suite, demonstrating best practices for Python crypto implementations.\n\n### Community Resources\n\n- [C2SP Community](https:\u002F\u002Fc2sp.org\u002F) - Cryptographic specifications and standards community maintaining Wycheproof\n- Wycheproof issues tracker - Report bugs in test vectors or suggest new constructions\n\n## Summary\n\nWycheproof is an essential tool for validating cryptographic implementations against known attack vectors and edge cases. By integrating Wycheproof test vectors into your testing workflow:\n\n1. Catch subtle encoding and validation bugs\n2. Prevent signature malleability issues\n3. Ensure consistent behavior across implementations\n4. Benefit from community-contributed test vectors\n5. Protect against known cryptographic vulnerabilities\n\nThe investment in writing a reusable testing harness pays dividends through continuous validation as new test vectors are added to the Wycheproof repository.\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FelizaOS\u002Feliza\u002Fwycheproof",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill wycheproof",{"tool":45,"command":46},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill wycheproof",{"tool":48,"command":49},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill wycheproof","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FelizaOS\u002Feliza\u002Fwycheproof\u002FSKILL.md",true,[],[54,64,74,83,89,96],{"skillNo":55,"name":56,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":60,"publishedAt":26},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[59],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[61,62,63],"model","model hierarchy","model hierarchy skill",{"skillNo":65,"name":66,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":70,"publishedAt":26},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[69],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[71,72,73],"MCP","zoom","zoom mcp",{"skillNo":75,"name":76,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":26},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[80,81,82,72],"sdk","zoom apps sdk","apps",{"skillNo":84,"name":85,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":26},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[85],{"skillNo":90,"name":91,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":95,"publishedAt":26},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[94],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[91],{"skillNo":97,"name":98,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":26},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[98]]