[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DM7ACSR4K9GTF06V9YC401":3,"skill-same:01M6DM7ACSR4K9GTF06V9YC401":82},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":46,"updatedAt":47,"install":48,"resources":61},"01M6DM7ACSR4K9GTF06V9YC401","ensembl-sequence-retrieval",null,"Retrieve genomic sequences from Ensembl database using transcript or gene IDs to obtain nucleotide and protein sequences.","InternScience\u002FDrClaw","InternScience","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F154449623?v=4","01M6DHY1ZF02QASNAVMNPT7NP6","Intern Science","01M6DHY2523FY56Q5572NKAAD0",172,"MIT","https:\u002F\u002Fgithub.com\u002FInternScience\u002FDrClaw\u002Fblob\u002Fmain\u002Fdrclaw\u002Flocal_skill_hub\u002Fscience\u002Fgene\u002Fensembl-sequence-retrieval\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28],"ensembl sequence retrieval","transcript","database","ids","ensembl database","2026-11-10 10:12:30",false,"---\nname: ensembl-sequence-retrieval\ndescription: Retrieve genomic sequences from Ensembl database using transcript or\n  gene IDs to obtain nucleotide and protein sequences.\nlicense: MIT license\nmetadata:\n  skill-author: PJLab\ni18n:\n  zh:\n    description: 从Ensembl获取基因或转录。\n---\n\n# Ensembl Sequence Retrieval\n\n## Usage\n\n### 1. MCP Server Definition\n\n```python\nimport asyncio\nimport json\nfrom mcp.client.streamable_http import streamablehttp_client\nfrom mcp import ClientSession\n\nclass OrigeneClient:\n    \"\"\"Origene-Ensembl MCP Client\"\"\"\n\n    def __init__(self, server_url: str, api_key: str):\n        self.server_url = server_url\n        self.api_key = api_key\n        self.session = None\n\n    async def connect(self):\n        try:\n            self.transport = streamablehttp_client(\n                url=self.server_url,\n                headers={\"SCP-HUB-API-KEY\": self.api_key}\n            )\n            self.read, self.write, self.get_session_id = await self.transport.__aenter__()\n            self.session_ctx = ClientSession(self.read, self.write)\n            self.session = await self.session_ctx.__aenter__()\n            await self.session.initialize()\n            return True\n        except Exception as e:\n            print(f\"✗ connect failure: {e}\")\n            return False\n\n    async def disconnect(self):\n        try:\n            if self.session:\n                await self.session_ctx.__aexit__(None, None, None)\n            if hasattr(self, 'transport'):\n                await self.transport.__aexit__(None, None, None)\n        except Exception as e:\n            print(f\"✗ disconnect error: {e}\")\n\n    def parse_result(self, result):\n        if isinstance(result, dict):\n            content_list = result.get(\"content\") or []\n        else:\n            content_list = getattr(result, \"content\", []) or []\n        texts = []\n        for item in content_list:\n            if isinstance(item, dict):\n                if item.get(\"type\") == \"text\":\n                    texts.append(item.get(\"text\") or \"\")\n            else:\n                if getattr(item, \"type\", None) == \"text\":\n                    texts.append(getattr(item, \"text\", \"\") or \"\")\n        return \"\".join(texts)\n```\n\n### 2. Sequence Retrieval Workflow\n\n**Implementation:**\n\n```python\n## Initialize client\nclient = OrigeneClient(\n    \"https:\u002F\u002Fscp.intern-ai.org.cn\u002Fapi\u002Fv1\u002Fmcp\u002F12\u002FOrigene-Ensembl\",\n    \"\u003Cyour-api-key>\"\n)\n\nif not await client.connect():\n    print(\"connection failed\")\n    exit()\n\n## Retrieve sequence by Ensembl ID\nresult = await client.session.call_tool(\n    \"get_sequence_id\",\n    arguments={\n        \"id\": \"ENST00000380152\"\n    }\n)\n\nresult_data = client.parse_result(result)\nprint(result_data)\n\nawait client.disconnect()\n```\n\n### Tool Descriptions\n\n**Origene-Ensembl Server:**\n- `get_sequence_id`: Retrieve sequence by Ensembl ID\n  - Args:\n    - `id` (str): Ensembl transcript or gene ID\n  - Returns: Genomic or protein sequence\n\n### Use Cases\n\n- Genome annotation\n- Comparative genomics\n- Transcript analysis\n- Protein sequence retrieval\n","# Ensembl Sequence Retrieval\n\n## Usage\n\n### 1. MCP Server Definition\n\n```python\nimport asyncio\nimport json\nfrom mcp.client.streamable_http import streamablehttp_client\nfrom mcp import ClientSession\n\nclass OrigeneClient:\n    \"\"\"Origene-Ensembl MCP Client\"\"\"\n\n    def __init__(self, server_url: str, api_key: str):\n        self.server_url = server_url\n        self.api_key = api_key\n        self.session = None\n\n    async def connect(self):\n        try:\n            self.transport = streamablehttp_client(\n                url=self.server_url,\n                headers={\"SCP-HUB-API-KEY\": self.api_key}\n            )\n            self.read, self.write, self.get_session_id = await self.transport.__aenter__()\n            self.session_ctx = ClientSession(self.read, self.write)\n            self.session = await self.session_ctx.__aenter__()\n            await self.session.initialize()\n            return True\n        except Exception as e:\n            print(f\"✗ connect failure: {e}\")\n            return False\n\n    async def disconnect(self):\n        try:\n            if self.session:\n                await self.session_ctx.__aexit__(None, None, None)\n            if hasattr(self, 'transport'):\n                await self.transport.__aexit__(None, None, None)\n        except Exception as e:\n            print(f\"✗ disconnect error: {e}\")\n\n    def parse_result(self, result):\n        if isinstance(result, dict):\n            content_list = result.get(\"content\") or []\n        else:\n            content_list = getattr(result, \"content\", []) or []\n        texts = []\n        for item in content_list:\n            if isinstance(item, dict):\n                if item.get(\"type\") == \"text\":\n                    texts.append(item.get(\"text\") or \"\")\n            else:\n                if getattr(item, \"type\", None) == \"text\":\n                    texts.append(getattr(item, \"text\", \"\") or \"\")\n        return \"\".join(texts)\n```\n\n### 2. Sequence Retrieval Workflow\n\n**Implementation:**\n\n```python\n## Initialize client\nclient = OrigeneClient(\n    \"https:\u002F\u002Fscp.intern-ai.org.cn\u002Fapi\u002Fv1\u002Fmcp\u002F12\u002FOrigene-Ensembl\",\n    \"\u003Cyour-api-key>\"\n)\n\nif not await client.connect():\n    print(\"connection failed\")\n    exit()\n\n## Retrieve sequence by Ensembl ID\nresult = await client.session.call_tool(\n    \"get_sequence_id\",\n    arguments={\n        \"id\": \"ENST00000380152\"\n    }\n)\n\nresult_data = client.parse_result(result)\nprint(result_data)\n\nawait client.disconnect()\n```\n\n### Tool Descriptions\n\n**Origene-Ensembl Server:**\n- `get_sequence_id`: Retrieve sequence by Ensembl ID\n  - Args:\n    - `id` (str): Ensembl transcript or gene ID\n  - Returns: Genomic or protein sequence\n\n### Use Cases\n\n- Genome annotation\n- Comparative genomics\n- Transcript analysis\n- Protein sequence retrieval\n",{"i18n":34,"name":5,"license":37,"metadata":38,"description":7},{"zh":35},{"description":36},"从Ensembl获取基因或转录。","MIT license",{"skill-author":39},"PJLab","main","4f96df0d9df0eae24a992afabe08edec5fc575f0","drclaw\u002Flocal_skill_hub\u002Fscience\u002Fgene\u002Fensembl-sequence-retrieval",10,"https:\u002F\u002Fgithub.com\u002FInternScience\u002FDrClaw","https:\u002F\u002Fgithub.com\u002FInternScience","Shanghai Artificial Intelligence Laboratory","2026-03-20 17:06:10",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add InternScience\u002FDrClaw --skill ensembl-sequence-retrieval",{"tool":54,"command":55},"bunx","bunx skills add InternScience\u002FDrClaw --skill ensembl-sequence-retrieval",{"tool":57,"command":58},"pnpm","pnpm dlx skills add InternScience\u002FDrClaw --skill ensembl-sequence-retrieval","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FInternScience\u002FDrClaw\u002Fblob\u002Fmain\u002Fdrclaw\u002Flocal_skill_hub\u002Fscience\u002Fgene\u002Fensembl-sequence-retrieval\u002FSKILL.md",true,[62,68,74,78],{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"agents\u002Fopenai.yaml","REFERENCE","参考文档",288,"https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills.pre-symlink-1776435493\u002Fpng-svg-converter\u002Fagents\u002Fopenai.yaml",{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"run.sh","SCRIPT","脚本",983,"https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills.pre-symlink-1776435493\u002Fpng-svg-converter\u002Frun.sh",{"path":75,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":76,"sourceHtmlUrl":77},"sanity.sh",1114,"https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills.pre-symlink-1776435493\u002Fpng-svg-converter\u002Fsanity.sh",{"path":79,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":80,"sourceHtmlUrl":81},"scripts\u002Fconvert.py",5447,"https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills.pre-symlink-1776435493\u002Fpng-svg-converter\u002Fscripts\u002Fconvert.py",[83,118,141,157,174,189],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":97,"publishedAt":29},"01M6DMQESTSBW8VJW03QWHMT85","scientific-critical-thinking","Evaluate scientific claims and evidence quality. Use for assessing experimental design validity, identifying biases and confounders, applying evidence grading frameworks (GRADE, Cochrane Risk of Bias), or teaching critical analysis. Best for understanding evidence quality, identifying flaws. For formal peer review writing use peer-review.","https:\u002F\u002Fgithub.com\u002FInternScience\u002FDrClaw\u002Fblob\u002Fmain\u002Fdrclaw\u002Flocal_skill_hub\u002Fthinking\u002Fscientific-critical-thinking\u002FSKILL.md",[89,92],{"categoryNo":90,"categoryName":91,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":93,"categoryName":94,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117],"critical","scientific critical thinking","thinking","design","writing","review","risk","analysis","peer review","Bash","quality","read","write","edit","use","evidence","peer","frameworks","teaching","bias",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":29},"01M6DMQ77Z121463E049G2DG8K","scientific-brainstorming","Creative research ideation and exploration. Use for open-ended brainstorming sessions, exploring interdisciplinary connections, challenging assumptions, or identifying research gaps. Best for early-stage research planning when you do not have specific observations yet. For formulating testable hypotheses from data use hypothesis-generation.","https:\u002F\u002Fgithub.com\u002FInternScience\u002FDrClaw\u002Fblob\u002Fmain\u002Fdrclaw\u002Flocal_skill_hub\u002Fthinking\u002Fscientific-brainstorming\u002FSKILL.md",[],[125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,112],"brainstorming","scientific brainstorming","research ideation","stage","connections","generation","exploration","do","planning","creative","ideation","research","sessions","data","hypothesis","open",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":151,"publishedAt":29},"01M6DMPV4AMCCTWARGPSFHDWJB","scientific-literature-search","Search scientific literature and research papers using FlowSearch to find relevant academic articles and publications.","https:\u002F\u002Fgithub.com\u002FInternScience\u002FDrClaw\u002Fblob\u002Fmain\u002Fdrclaw\u002Flocal_skill_hub\u002Fsearch\u002Fscientific-literature-search\u002FSKILL.md",[147,150],{"categoryNo":148,"categoryName":149,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[152,153,136,154,155,156],"search","scientific literature search","find","Academic","搜索",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":169,"publishedAt":29},"01M6DMPQJP8HVFV54V05D6K9HA","pubmed-article-search","Search PubMed database for scientific articles and publications to retrieve biomedical literature.","https:\u002F\u002Fgithub.com\u002FInternScience\u002FDrClaw\u002Fblob\u002Fmain\u002Fdrclaw\u002Flocal_skill_hub\u002Fsearch\u002Fpubmed-article-search\u002FSKILL.md",[163,166],{"categoryNo":164,"categoryName":165,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":167,"categoryName":168,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000036","内容创作者",[170,171,152,156,26,172,173],"pubmed article search","article","pubmed database","biomedical",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":181,"publishedAt":29},"01M6DMPK4H3JQ185M97BRB9KQJ","biomedical-web-search","Search biomedical literature and web content using Tavily search engine for research and clinical information.","https:\u002F\u002Fgithub.com\u002FInternScience\u002FDrClaw\u002Fblob\u002Fmain\u002Fdrclaw\u002Flocal_skill_hub\u002Fsearch\u002Fbiomedical-web-search\u002FSKILL.md",[180],{"categoryNo":148,"categoryName":149,"taxonomyType":21,"taxonomyTypeDesc":22},[182,173,183,152,184,185,136,186,187,156,188],"biomedical web search","web search","web","tavily","content","engine","clinical",{"skillNo":190,"name":191,"nameZh":6,"description":192,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":193,"categories":194,"keywords":196,"publishedAt":29},"01M6DMNNJH9V1S5PQHZRX0N934","uniprot-protein-retrieval","Retrieve protein sequences and functional information from UniProt database by protein name, enabling protein analysis and bioinformatics workflows.","https:\u002F\u002Fgithub.com\u002FInternScience\u002FDrClaw\u002Fblob\u002Fmain\u002Fdrclaw\u002Flocal_skill_hub\u002Fscience\u002Fprotein\u002Funiprot-protein-retrieval\u002FSKILL.md",[195],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[197,26,105,198,199,200,201],"uniprot protein retrieval","uniprot database","bioinformatics","name","workflows"]