[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M73K542RKASE4P2VRSK80CDV":3,"skill-same:01M73K542RKASE4P2VRSK80CDV":53},{"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":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":34,"ownerHtmlUrl":35,"ownerBlogUrl":36,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M73K542RKASE4P2VRSK80CDV","uniprot",null,"Access UniProt for protein sequence and annotation retrieval. Use this skill when: (1) Looking up protein sequences by accession, (2) Finding functional annotations, (3) Getting domain boundaries, (4) Finding homologs and variants, (5) Cross-referencing to PDB structures.\nFor structure retrieval, use pdb. For sequence design, use proteinmpnn.","bg-szy\u002FTOP-SKILLS","bg-szy","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F106576190?v=4","01M73A4E8KPV67SFXRY8XZGNBX","ShuZhiyong","01M73A4E96MQ294MHM74TZBVQD",6,"MIT","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fawesome-skills\u002Funiprot\u002FSKILL.md",[],[],"2026-11-11 15:11:14",false,"---\nname: uniprot\ndescription: \"Access UniProt for protein sequence and annotation retrieval. Use this skill when: (1) Looking up protein sequences by accession, (2) Finding functional annotations, (3) Getting domain boundaries, (4) Finding homologs and variants, (5) Cross-referencing to PDB structures.\n\n  For structure retrieval, use pdb. For sequence design, use proteinmpnn.\"\nlicense: MIT\ncategory: utilities\ntags: [database, sequence, annotation]\n---\n\n# UniProt Database Access\n\n**Note**: This skill uses the UniProt REST API directly. No Modal deployment needed - all operations run locally via HTTP requests.\n\n## Fetching Sequences\n\n### By Accession\n```bash\n# FASTA format\ncurl \"https:\u002F\u002Frest.uniprot.org\u002Funiprotkb\u002FP00533.fasta\"\n\n# JSON format with annotations\ncurl \"https:\u002F\u002Frest.uniprot.org\u002Funiprotkb\u002FP00533.json\"\n```\n\n### Using Python\n```python\nimport requests\n\ndef get_uniprot_sequence(accession):\n    \"\"\"Fetch sequence from UniProt.\"\"\"\n    url = f\"https:\u002F\u002Frest.uniprot.org\u002Funiprotkb\u002F{accession}.fasta\"\n    response = requests.get(url)\n    if response.ok:\n        lines = response.text.strip().split('\\n')\n        header = lines[0]\n        sequence = ''.join(lines[1:])\n        return header, sequence\n    return None, None\n```\n\n## Getting Annotations\n\n### Full Entry\n```python\ndef get_uniprot_entry(accession):\n    \"\"\"Fetch full UniProt entry as JSON.\"\"\"\n    url = f\"https:\u002F\u002Frest.uniprot.org\u002Funiprotkb\u002F{accession}.json\"\n    response = requests.get(url)\n    return response.json() if response.ok else None\n\nentry = get_uniprot_entry(\"P00533\")\nprint(f\"Protein: {entry['proteinDescription']['recommendedName']['fullName']['value']}\")\n```\n\n### Domain Boundaries\n```python\ndef get_domains(accession):\n    \"\"\"Extract domain annotations.\"\"\"\n    entry = get_uniprot_entry(accession)\n    domains = []\n\n    for feature in entry.get('features', []):\n        if feature['type'] == 'Domain':\n            domains.append({\n                'name': feature.get('description', ''),\n                'start': feature['location']['start']['value'],\n                'end': feature['location']['end']['value']\n            })\n\n    return domains\n\n# Example: EGFR domains\ndomains = get_domains(\"P00533\")\n# [{'name': 'Kinase', 'start': 712, 'end': 979}, ...]\n```\n\n## Searching UniProt\n\n### By Gene Name\n```python\ndef search_uniprot(query, organism=None, limit=10):\n    \"\"\"Search UniProt by query.\"\"\"\n    url = \"https:\u002F\u002Frest.uniprot.org\u002Funiprotkb\u002Fsearch\"\n    params = {\n        \"query\": query,\n        \"format\": \"json\",\n        \"size\": limit\n    }\n    if organism:\n        params[\"query\"] += f\" AND organism_id:{organism}\"\n\n    response = requests.get(url, params=params)\n    return response.json()['results']\n\n# Search for human EGFR\nresults = search_uniprot(\"EGFR\", organism=9606)\n```\n\n### By Sequence Similarity (BLAST)\n```python\n# Use UniProt BLAST\n# https:\u002F\u002Fwww.uniprot.org\u002Fblast\n```\n\n## Cross-References\n\n### Get PDB Structures\n```python\ndef get_pdb_references(accession):\n    \"\"\"Get PDB structures for UniProt entry.\"\"\"\n    entry = get_uniprot_entry(accession)\n    pdbs = []\n\n    for xref in entry.get('uniProtKBCrossReferences', []):\n        if xref['database'] == 'PDB':\n            pdbs.append({\n                'pdb_id': xref['id'],\n                'method': xref.get('properties', [{}])[0].get('value', ''),\n                'chains': xref.get('properties', [{}])[1].get('value', '')\n            })\n\n    return pdbs\n\n# Example: PDB structures for EGFR\npdbs = get_pdb_references(\"P00533\")\n```\n\n## Common Use Cases\n\n### Target Selection\n```python\n# 1. Find protein by name\nresults = search_uniprot(\"insulin receptor\", organism=9606)\n\n# 2. Get accession\naccession = results[0]['primaryAccession']  # e.g., P06213\n\n# 3. Get domains\ndomains = get_domains(accession)\n\n# 4. Find PDB structure\npdbs = get_pdb_references(accession)\n\n# 5. Download best structure for design\n```\n\n### Sequence Alignment Info\n```python\ndef get_sequence_variants(accession):\n    \"\"\"Get natural variants from UniProt.\"\"\"\n    entry = get_uniprot_entry(accession)\n    variants = []\n\n    for feature in entry.get('features', []):\n        if feature['type'] == 'Natural variant':\n            variants.append({\n                'position': feature['location']['start']['value'],\n                'original': feature.get('alternativeSequence', {}).get('originalSequence', ''),\n                'variant': feature.get('alternativeSequence', {}).get('alternativeSequences', [''])[0],\n                'description': feature.get('description', '')\n            })\n\n    return variants\n```\n\n## API Reference\n\n| Endpoint | Description |\n|----------|-------------|\n| `\u002Funiprotkb\u002F{id}.fasta` | FASTA sequence |\n| `\u002Funiprotkb\u002F{id}.json` | Full entry JSON |\n| `\u002Funiprotkb\u002Fsearch` | Search entries |\n| `\u002Funiprotkb\u002Fstream` | Batch download |\n\n## Troubleshooting\n\n**Entry not found**: Check accession format (e.g., P00533)\n**Rate limits**: Add delay between requests\n**Large downloads**: Use stream endpoint with pagination\n\n---\n\n**Next**: Use sequence with `esm` for embeddings or `chai` \u002F `boltz` for structure.\n","# UniProt Database Access\n\n**Note**: This skill uses the UniProt REST API directly. No Modal deployment needed - all operations run locally via HTTP requests.\n\n## Fetching Sequences\n\n### By Accession\n```bash\n# FASTA format\ncurl \"https:\u002F\u002Frest.uniprot.org\u002Funiprotkb\u002FP00533.fasta\"\n\n# JSON format with annotations\ncurl \"https:\u002F\u002Frest.uniprot.org\u002Funiprotkb\u002FP00533.json\"\n```\n\n### Using Python\n```python\nimport requests\n\ndef get_uniprot_sequence(accession):\n    \"\"\"Fetch sequence from UniProt.\"\"\"\n    url = f\"https:\u002F\u002Frest.uniprot.org\u002Funiprotkb\u002F{accession}.fasta\"\n    response = requests.get(url)\n    if response.ok:\n        lines = response.text.strip().split('\\n')\n        header = lines[0]\n        sequence = ''.join(lines[1:])\n        return header, sequence\n    return None, None\n```\n\n## Getting Annotations\n\n### Full Entry\n```python\ndef get_uniprot_entry(accession):\n    \"\"\"Fetch full UniProt entry as JSON.\"\"\"\n    url = f\"https:\u002F\u002Frest.uniprot.org\u002Funiprotkb\u002F{accession}.json\"\n    response = requests.get(url)\n    return response.json() if response.ok else None\n\nentry = get_uniprot_entry(\"P00533\")\nprint(f\"Protein: {entry['proteinDescription']['recommendedName']['fullName']['value']}\")\n```\n\n### Domain Boundaries\n```python\ndef get_domains(accession):\n    \"\"\"Extract domain annotations.\"\"\"\n    entry = get_uniprot_entry(accession)\n    domains = []\n\n    for feature in entry.get('features', []):\n        if feature['type'] == 'Domain':\n            domains.append({\n                'name': feature.get('description', ''),\n                'start': feature['location']['start']['value'],\n                'end': feature['location']['end']['value']\n            })\n\n    return domains\n\n# Example: EGFR domains\ndomains = get_domains(\"P00533\")\n# [{'name': 'Kinase', 'start': 712, 'end': 979}, ...]\n```\n\n## Searching UniProt\n\n### By Gene Name\n```python\ndef search_uniprot(query, organism=None, limit=10):\n    \"\"\"Search UniProt by query.\"\"\"\n    url = \"https:\u002F\u002Frest.uniprot.org\u002Funiprotkb\u002Fsearch\"\n    params = {\n        \"query\": query,\n        \"format\": \"json\",\n        \"size\": limit\n    }\n    if organism:\n        params[\"query\"] += f\" AND organism_id:{organism}\"\n\n    response = requests.get(url, params=params)\n    return response.json()['results']\n\n# Search for human EGFR\nresults = search_uniprot(\"EGFR\", organism=9606)\n```\n\n### By Sequence Similarity (BLAST)\n```python\n# Use UniProt BLAST\n# https:\u002F\u002Fwww.uniprot.org\u002Fblast\n```\n\n## Cross-References\n\n### Get PDB Structures\n```python\ndef get_pdb_references(accession):\n    \"\"\"Get PDB structures for UniProt entry.\"\"\"\n    entry = get_uniprot_entry(accession)\n    pdbs = []\n\n    for xref in entry.get('uniProtKBCrossReferences', []):\n        if xref['database'] == 'PDB':\n            pdbs.append({\n                'pdb_id': xref['id'],\n                'method': xref.get('properties', [{}])[0].get('value', ''),\n                'chains': xref.get('properties', [{}])[1].get('value', '')\n            })\n\n    return pdbs\n\n# Example: PDB structures for EGFR\npdbs = get_pdb_references(\"P00533\")\n```\n\n## Common Use Cases\n\n### Target Selection\n```python\n# 1. Find protein by name\nresults = search_uniprot(\"insulin receptor\", organism=9606)\n\n# 2. Get accession\naccession = results[0]['primaryAccession']  # e.g., P06213\n\n# 3. Get domains\ndomains = get_domains(accession)\n\n# 4. Find PDB structure\npdbs = get_pdb_references(accession)\n\n# 5. Download best structure for design\n```\n\n### Sequence Alignment Info\n```python\ndef get_sequence_variants(accession):\n    \"\"\"Get natural variants from UniProt.\"\"\"\n    entry = get_uniprot_entry(accession)\n    variants = []\n\n    for feature in entry.get('features', []):\n        if feature['type'] == 'Natural variant':\n            variants.append({\n                'position': feature['location']['start']['value'],\n                'original': feature.get('alternativeSequence', {}).get('originalSequence', ''),\n                'variant': feature.get('alternativeSequence', {}).get('alternativeSequences', [''])[0],\n                'description': feature.get('description', '')\n            })\n\n    return variants\n```\n\n## API Reference\n\n| Endpoint | Description |\n|----------|-------------|\n| `\u002Funiprotkb\u002F{id}.fasta` | FASTA sequence |\n| `\u002Funiprotkb\u002F{id}.json` | Full entry JSON |\n| `\u002Funiprotkb\u002Fsearch` | Search entries |\n| `\u002Funiprotkb\u002Fstream` | Batch download |\n\n## Troubleshooting\n\n**Entry not found**: Check accession format (e.g., P00533)\n**Rate limits**: Add delay between requests\n**Large downloads**: Use stream endpoint with pagination\n\n---\n\n**Next**: Use sequence with `esm` for embeddings or `chai` \u002F `boltz` for structure.\n",{"name":5,"tags":24,"license":15,"category":28,"description":7},[25,26,27],"database","sequence","annotation","utilities","master","fd76f882a04e445e899d5cfb2732f2105ea054ee","skills\u002Fawesome-skills\u002Funiprot",0,"https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS","https:\u002F\u002Fbg-szy.github.io\u002FTOP-SKILLS\u002F","https:\u002F\u002Fgithub.com\u002Fbg-szy","https:\u002F\u002Fwww.ecust.edu.cn\u002F","a student of East China University of Science and Technology","2026-11-12 05:55:03",{"source":8,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add bg-szy\u002FTOP-SKILLS --skill uniprot",{"tool":45,"command":46},"bunx","bunx skills add bg-szy\u002FTOP-SKILLS --skill uniprot",{"tool":48,"command":49},"pnpm","pnpm dlx skills add bg-szy\u002FTOP-SKILLS --skill uniprot","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fawesome-skills\u002Funiprot\u002FSKILL.md",true,[],[54,61,68,77,85,93],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M748C5DS5BQBVBMG22FCGG34","branding","When the user wants to define, audit, or apply brand strategy—purpose, values, positioning, storytelling, voice, narrative (not only visuals). Also use when the user mentions \"brand strategy\", \"brand story\", \"brand storytelling\" or \"brand voice\". For typography, colors, design tokens, and frontend visuals, use brand-visual-generator.","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fsuperskills\u002Fbranding\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":19},"01M748C1GXJ9WRKP18X45DKP6G","brand-visual-generator","When the user wants to define, audit, or apply visual identity (typography, colors, spacing, design tokens, frontend aesthetics). Also use when the user mentions \"brand style guide\", \"visual identity\", \"design system\" or \"typography\". For brand story, positioning, and voice, use branding.","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fsuperskills\u002Fbrand-visual-generator\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":72,"licenseFileUrl":73,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":19},"01M747T565TFEP3RAVWM0Y899Y","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) or Node\u002FTypeScript (MCP SDK).","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fskills\u002Fmcp-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fskills\u002Fmcp-builder\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":72,"licenseFileUrl":81,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":19},"01M747RAJGMBZ2QN4563STB5SH","frontend-design","Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fskills\u002Ffrontend-design\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fskills\u002Ffrontend-design\u002FSKILL.md",[],[],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":72,"licenseFileUrl":89,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":19},"01M747NHAY5BE9GXEB31H255R1","claude-api","Reference for the Claude API \u002F Anthropic SDK — model ids, pricing, params, streaming, tool use, MCP, agents, caching, token counting, model migration.\nTRIGGER — read BEFORE opening the target file; don't skip because it \"looks like a one-liner\" — whenever: the prompt names Claude\u002FAnthropic in any form (Claude, Anthropic, Fable, Opus, Sonnet, Haiku, `anthropic`, `@anthropic-ai`, `claude-*`, `us.anthropic.*`, `[1m]`); the user asks about an LLM (pricing\u002Fmodel choice\u002Flimits\u002Fcaching) — never answer from memory; OR the task is LLM-shaped with provider unstated (agent\u002FMCP\u002Ftool-definition\u002Fmulti-agent\u002FRAG\u002FLLM-judge\u002Fcomputer-use; generate\u002Fsummarize\u002Fextract\u002Fclassify\u002Frewrite\u002Fconverse over NL; debugging refusals\u002Fcutoffs\u002Fstreaming\u002Ftool-calls\u002Ftokens).\nSKIP only when another provider is being worked on (overrides all triggers): OpenAI\u002FGPT\u002FGemini\u002FLlama\u002FMistral\u002FCohere\u002FOllama named in the query; OR `grep -rE 'openai|langchain_openai|google.generativeai|genai|mistralai|cohere|ollama'` over the project hits (run this grep FIRST if no provider named — don't Read the file).","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fskills\u002Fclaude-api\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fskills\u002Fclaude-api\u002FSKILL.md",[],[],{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":97,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":19},"01M73WM4TPHEJ57D7G2AZ0ABVT","inbox-guardian-for-gmail","Review a personal Gmail inbox with local, owner-approved spam rules. Use for audit-first quarantine, Trash, repeated-evidence sender learning, and header review. Do not use for automatic unsubscribe requests or unreviewed mailbox actions.","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketplace\u002Finbox-guardian-for-gmail\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketplace\u002Finbox-guardian-for-gmail\u002FSKILL.md",[],[]]