Agent skill

Comprehensive Variant Annotation

by InternScience in InternScience/scp

Given an rsID, query multiple databases (dbSNP, FAVOR, GWAS Catalog, ClinVar, gnomAD, PharmGKB, ClinGen) for comprehensive annotation.

MITAuto-check passed

Install Comprehensive Variant Annotation

skills CLI
$ npx skills add InternScience/scp --skill comprehensive-variant-annotation -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install InternScience/scp comprehensive-variant-annotation --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/InternScience/scp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/comprehensive-variant-annotation .claude/skills/comprehensive-variant-annotation && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
comprehensive-variant-annotation
GitHub stars
169
Used in
1 other repo
Token cost
~2.2k tokens
SKILL.md length
111 words
Files
1
Skills in repo
73
Repo updated
First seen
Licence
MIT

At a glance

Given an rsID, query multiple databases (dbSNP, FAVOR, GWAS Catalog, ClinVar, gnomAD, PharmGKB, ClinGen) for comprehensive annotation.

  • Works in 2 steps: Tool Descriptions → Comprehensive Variant Annotation
  • User asks a general question about a variant without specifying which aspect
  • Reaches api.ncbi.nlm.nih.gov and api.genohub.org

What it does

Comprehensive Variant Annotation is an agent skill from InternScience/scp. Given an rsID, query multiple databases (dbSNP, FAVOR, GWAS Catalog, ClinVar, gnomAD, PharmGKB, ClinGen) for comprehensive annotation. Use when user asks a general question about a variant without specifying which aspect.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The licence is MIT.

When your agent uses it

  • User asks a general question about a variant without specifying which aspect

Example prompts

  • “/comprehensive-variant-annotation”

Requirements

  • Python 3

Workflow steps

2 steps, taken from the step headings in SKILL.md.

  1. Tool Descriptions
  2. Comprehensive Variant Annotation

What it can do on your machine

Read from SKILL.md and the folder at commit cea5398. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are tex and python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.ncbi.nlm.nih.gov
    • api.genohub.org
    • gnomad.broadinstitute.org
    • ebi.ac.uk
    • api.clinpgx.org
    • reg.genome.network

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Comprehensive Variant Annotation loads about 2.2k tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 111 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~64
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from InternScience/scp at commit cea5398, republished under its MIT licence (© InternScience). 111 words, ~2,201 tokens.

Download SKILL.mdSave it as .claude/skills/comprehensive-variant-annotation/SKILL.md (or your agent's skills folder).
name
comprehensive-variant-annotation
description
Given an rsID, query multiple databases (dbSNP, FAVOR, GWAS Catalog, ClinVar, gnomAD, PharmGKB, ClinGen) for comprehensive annotation. Use when user asks a general question about a variant without specifying which aspect.
license
MIT license
metadata.skill-author
PJLab

Comprehensive Variant Annotation

Usage

1. Tool Descriptions

This skill chains 7 public genomics database APIs sequentially to build a comprehensive annotation for a given variant. Use this when the user asks a general/vague question like "帮我查一下 rs7412" or "tell me about rs7412".

Tool 1: dbSNP — Variant Basic Info & ClinVar RCV Records

tex
Query NCBI dbSNP REST API to get SNP basic information and ClinVar clinical records.
API: GET https://api.ncbi.nlm.nih.gov/variation/v0/refsnp/{rsid_number}
Args:
    rs_id (str): dbSNP rsID (e.g. "rs7412")
Return:
    primary_snapshot_data: allele_annotations (gene associations, functional impact,
        ClinVar RCV clinical records), placements_with_allele (GRCh38 coordinates).

Tool 2: FAVOR — Functional Annotation & Scores

tex
Query FAVOR (GenoHub) API to get functional annotation and conservation scores.
API: GET https://api.genohub.org/v1/rsids/{rsid}
Return:
    Functional prediction scores (CADD, REVEL, etc.), conservation scores,
    gene annotations, variant effect predictions, and variant_id for gnomAD.

Tool 3: gnomAD — Population Allele Frequency

tex
Query gnomAD GraphQL API for population allele frequencies.
API: POST https://gnomad.broadinstitute.org/api
Note: Requires variant_id (chr-pos-ref-alt format) from FAVOR Step 2.
Return:
    Allele frequencies across populations (global, AFR, AMR, ASJ, EAS, FIN, NFE, SAS, etc.)

Tool 4: GWAS Catalog — Trait Associations

tex
Query EBI GWAS Catalog REST API for GWAS statistical associations.
API: GET https://www.ebi.ac.uk/gwas/rest/api/associations/search/findByRsId?rsId={rsid}
Return:
    associations: pvalue, risk allele, associated trait/disease, source study.

Tool 5: ClinVar — Clinical Pathogenicity (extracted from dbSNP Step 1)

tex
Extract ClinVar RCV records from dbSNP response (already obtained in Step 1).
Return:
    Clinical significance (Pathogenic/Benign/VUS/drug-response),
    review status, associated diseases, RCV accession numbers.

Tool 6: PharmGKB — Pharmacogenomic Annotations

tex
Query PharmGKB clinPGx API for drug-gene-variant interactions.
API: GET https://api.clinpgx.org/v1/data/clinicalAnnotation?location.fingerprint={rsid}&view=base
Return:
    Related drugs, evidence level (1A-4), related diseases, annotation types.

Tool 7: ClinGen — Cross-Database ID Mapping

tex
Query ClinGen Allele Registry for cross-database identifiers.
API: GET https://reg.genome.network/alleles?dbSNP.rs={rs_id}
Headers: Accept: application/json
Return:
    CA ID, ClinVar IDs, COSMIC ID, gnomAD IDs, external cross-references.
2. Comprehensive Variant Annotation

Query 7 databases for a given rsID, then save all results into a single JSON file {rsID}_annotation.json.

python
import requests
import json
from datetime import datetime

rs_id = "rs7412"
results = {"query_rsid": rs_id, "timestamp": datetime.now().isoformat()}

def safe_request(name, func, fallback=None):
    """统一的容错请求包装器。任一数据库超时/报错不会中断整个流程。"""
    try:
        return func()
    except requests.exceptions.Timeout:
        print(f"[{name}] ⚠ 连接超时,跳过")
        results.setdefault("errors", {})[name] = "timeout"
        return fallback
    except Exception as e:
        print(f"[{name}] ⚠ 请求失败: {e},跳过")
        results.setdefault("errors", {})[name] = str(e)
        return fallback

# ── Step 1: dbSNP — 变异基本信息 + ClinVar RCV ──
rsid_num = rs_id.replace("rs", "")
dbsnp_url = f"https://api.ncbi.nlm.nih.gov/variation/v0/refsnp/{rsid_num}"
dbsnp = safe_request("dbSNP",
    lambda: requests.get(dbsnp_url, timeout=30).json(), fallback={})
results["dbsnp"] = dbsnp
print(f"[dbSNP] {rs_id} 查询{'成功' if dbsnp else '失败'}")

# 从 dbSNP 提取 ClinVar RCV 记录(Step 5)
snapshot = dbsnp.get("primary_snapshot_data", {})
clinvar_records = []
for ann in snapshot.get("allele_annotations", []):
    for clin in ann.get("clinical", []):
        clinvar_records.append({
            "accession": clin.get("accession_version", ""),
            "significances": clin.get("clinical_significances", []),
            "diseases": clin.get("disease_names", []),
            "review_status": clin.get("review_status", "")
        })
results["clinvar"] = clinvar_records
print(f"[ClinVar] RCV 记录数: {len(clinvar_records)}")

# ── Step 2: FAVOR — 功能注释与评分 ──
favor_url = f"https://api.genohub.org/v1/rsids/{rs_id}"
favor = safe_request("FAVOR",
    lambda: requests.get(favor_url, timeout=30).json(), fallback={})
results["favor"] = favor
print(f"[FAVOR] 功能注释{'获取成功' if favor else '获取失败'}")

# 从 FAVOR 提取 variant_id 用于 gnomAD 查询
variant_id = None
favor_results = favor if isinstance(favor, list) else favor.get("results", [favor]) if favor else []
if favor_results and isinstance(favor_results, list):
    first = favor_results[0] if favor_results else {}
    chrom = str(first.get("chromosome", ""))
    pos = str(first.get("position", ""))
    ref = first.get("ref", "")
    alt = first.get("alt", "")
    if chrom and pos and ref and alt:
        variant_id = f"{chrom}-{pos}-{ref}-{alt}"

# ── Step 3: gnomAD — 人群等位基因频率 ──
if variant_id:
    gnomad_query = """
    query($variantId: String!) {
      variant(variantId: $variantId, dataset: gnomad_r4) {
        variant_id
        genome {
          ac
          an
          af
          populations { id ac an af }
        }
      }
    }
    """
    gnomad_data = safe_request("gnomAD",
        lambda: requests.post(
            "https://gnomad.broadinstitute.org/api",
            json={"query": gnomad_query, "variables": {"variantId": variant_id}},
            timeout=30
        ).json(), fallback={})
    results["gnomad"] = (gnomad_data or {}).get("data", {}).get("variant", {})
    genome = results["gnomad"].get("genome", {}) if results["gnomad"] else {}
    print(f"[gnomAD] AF={genome.get('af', 'N/A')}")
else:
    results["gnomad"] = {"error": "无法从 FAVOR 提取 variant_id"}
    print("[gnomAD] 跳过: 无 variant_id")

# ── Step 4: GWAS Catalog — 关联表型 ──
gwas_url = f"https://www.ebi.ac.uk/gwas/rest/api/associations/search/findByRsId?rsId={rs_id}"
gwas = safe_request("GWAS Catalog",
    lambda: requests.get(gwas_url, headers={"Accept": "application/json"}, timeout=30).json(),
    fallback={})
associations = (gwas or {}).get("_embedded", {}).get("associations", [])
results["gwas_catalog"] = {
    "association_count": len(associations),
    "associations": associations
}
print(f"[GWAS Catalog] 关联数={len(associations)}")

# ── Step 6: PharmGKB — 药物基因组注释 ──
pgx_url = f"https://api.clinpgx.org/v1/data/clinicalAnnotation?location.fingerprint={rs_id}&view=base"
pgx_resp = safe_request("PharmGKB",
    lambda: requests.get(pgx_url, timeout=30).json(), fallback=[])
pgx_annotations = pgx_resp if isinstance(pgx_resp, list) else (pgx_resp or {}).get("data", [])
results["pharmgkb"] = pgx_annotations
print(f"[PharmGKB] 药物基因组注释数: {len(pgx_annotations)}")

# ── Step 7: ClinGen — 跨数据库 ID 映射 ──
# 注意: ClinGen Allele Registry 服务器可能响应较慢,使用 60s 超时 + 重试
clingen_url = f"https://reg.genome.network/alleles?dbSNP.rs={rs_id}"
clingen_resp = None
for attempt in range(2):  # 最多重试 1 次
    clingen_resp = safe_request("ClinGen",
        lambda: requests.get(clingen_url,
            headers={"Accept": "application/json"}, timeout=60).json(),
        fallback=None)
    if clingen_resp is not None:
        break
    print(f"[ClinGen] 第 {attempt+1} 次尝试失败,重试中...")

if clingen_resp is not None:
    if not isinstance(clingen_resp, list):
        clingen_resp = [clingen_resp]
    # 过滤同义变异
    clingen_alleles = []
    for allele in clingen_resp:
        titles = allele.get("communityStandardTitle", [])
        if titles and any("=" in t for t in titles):
            continue
        clingen_alleles.append({
            "ca_id": allele.get("@id", "").split("/")[-1],
            "title": titles,
            "externalRecords": allele.get("externalRecords", {})
        })
    results["clingen"] = clingen_alleles
    print(f"[ClinGen] 等位基因数: {len(clingen_alleles)}")
else:
    results["clingen"] = {"error": "ClinGen API 连接超时,可稍后单独使用 variant-cross-database-ids skill 重试"}
    print("[ClinGen] ⚠ 所有尝试均超时,已跳过")

# ── 保存结果到 JSON 文件 ──
output_file = f"{rs_id}_annotation.json"
with open(output_file, "w", encoding="utf-8") as f:
    json.dump(results, f, indent=2, ensure_ascii=False)

# 汇总报告
errors = results.get("errors", {})
if errors:
    print(f"\n⚠ 以下数据库查询失败: {list(errors.keys())},其余数据库结果正常")
print(f"✓ 结果已保存: {output_file}")

© InternScience, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/comprehensive-variant-annotation of InternScience/scp.

Open the folder on GitHubat commit cea5398

Used in 2 other repositories

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in InternScience/scp, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Comprehensive Variant Annotation next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Comprehensive Variant Annotation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Comprehensive Variant Annotation this skillInternScience/scp1691 repos~2.2kAutomated safety check: PassMIT
Annotating Variantsmaziyarpanahi/openmed5.5k—~2.1kAutomated safety check: PassApache-2.0
Variant Annotationaipoch/medical-research-skills2k—~3.5kAutomated safety check: PassMIT
Bio Variant AnnotationFreedomIntelligence/OpenClaw-Medical-Skills3.1k1 repos~2.9kAutomated safety check: PassNone
Variant AnnotationClawBio/ClawBio1.2k1 repos~2.8kAutomated safety check: PassMIT
Bio Variant AnnotationGPTomics/bioSkills1.2k1 repos~6.4kAutomated safety check: PassMIT

Similar skills

  • Annotating Variants

    maziyarpanahi/openmed

    Annotates VCF variants and normalizes HGVS nomenclature with public, license-free annotators (Ensembl VEP REST, VEP/SnpEff/ANNOVAR offline) and links variants to gnomAD population frequencies and…

    5.5k GitHub stars~2.1k tokensUpdated yesterday
    Research & ScienceAuto-check passed
  • Variant Annotation

    aipoch/medical-research-skills

    Query and annotate gene variants from ClinVar and dbSNP databases.

    2k GitHub stars~3.5k tokensUpdated 22 days ago
    Research & ScienceAuto-check passed
  • Bio Variant Annotation

    FreedomIntelligence/OpenClaw-Medical-Skills

    Comprehensive variant annotation using bcftools annotate/csq, VEP, SnpEff, and ANNOVAR.

    3.1k GitHub starsUsed in 1 repo~2.9k tokens
    Auto-check passed
  • Variant Annotation

    ClawBio/ClawBio

    Annotate VCF variants with Ensembl VEP REST, ClinVar significance, gnomAD/population frequency context, and prioritized variant ranking.

    1.2k GitHub starsUsed in 1 repo~2.8k tokens
    Research & ScienceAuto-check passed
  • Bio Variant Annotation

    GPTomics/bioSkills

    Annotates VCF variants with functional consequences, population frequencies, and pathogenicity scores using bcftools annotate/csq, Ensembl VEP, SnpEff, and ANNOVAR.

    1.2k GitHub starsUsed in 1 repo~6.4k tokens
    Research & ScienceAuto-check passed
  • Wireframe Annotated

    nexu-io/open-design

    An annotated / redline lo-fi wireframe — a desktop landing/marketing page drawn as flat greyboxes inside a browser chrome frame, overlaid with numbered annotation pins (①②③④⑤) in a single accent…

    100k GitHub stars~960 tokensUpdated yesterday
    Frontend & DesignAuto-check passed

More from InternScience/scp

All 73 skills in this repo
  • Drugsda Esmfold

    InternScience/scp

    Use ESMFold model to predict 3D structure of the input protein sequence.

    169 GitHub starsUsed in 2 repos~721 tokens
    Auto-check passed
  • Drugsda Prosst

    InternScience/scp

    Given a protein sequence and its structure, employ ProSST model to predict mutation effects and obtain the top-k mutated sequences.

    169 GitHub starsUsed in 2 repos~949 tokens
    Auto-check passed
  • Calculate atmospheric parameters including Coriolis parameter, geostrophic wind, heat index, potential temperature, and dewpoint for meteorology and climate science.

    169 GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • Biomedical Web Search

    InternScience/scp

    Search biomedical literature and web content using Tavily search engine for research and clinical information.

    169 GitHub starsUsed in 1 repo~598 tokens
    Auto-check passed
  • Calculate buoyancy forces and acceleration for fluid mechanics and hydrodynamics analysis.

    169 GitHub starsUsed in 1 repo~540 tokens
    Auto-check passed
  • Capacitance Calculation

    InternScience/scp

    Calculate electrical capacitance from geometric parameters and dielectric properties for circuit design.

    169 GitHub starsUsed in 1 repo~537 tokens
    Auto-check passed

Questions about Comprehensive Variant Annotation

What does Comprehensive Variant Annotation do?

Given an rsID, query multiple databases (dbSNP, FAVOR, GWAS Catalog, ClinVar, gnomAD, PharmGKB, ClinGen) for comprehensive annotation. Comprehensive Variant Annotation is an agent skill from InternScience/scp. Given an rsID, query multiple databases (dbSNP, FAVOR, GWAS Catalog, ClinVar, gnomAD, PharmGKB, ClinGen) for comprehensive annotation.

When should I use Comprehensive Variant Annotation?

Comprehensive Variant Annotation fits situations like: user asks a general question about a variant without specifying which aspect.

How do I install Comprehensive Variant Annotation in Claude Code?

Run `npx skills add InternScience/scp --skill comprehensive-variant-annotation -a claude-code`. Or copy the skill folder (skills/comprehensive-variant-annotation in InternScience/scp) into .claude/skills/comprehensive-variant-annotation in your project. Claude Code loads it when a task matches its description.

How do I install Comprehensive Variant Annotation in Codex?

Run `npx skills add InternScience/scp --skill comprehensive-variant-annotation -a codex`. Or copy the skill folder (skills/comprehensive-variant-annotation in InternScience/scp) into .agents/skills/comprehensive-variant-annotation in your project. Codex loads it when a task matches its description.

Can I use Comprehensive Variant Annotation in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add InternScience/scp --skill comprehensive-variant-annotation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/comprehensive-variant-annotation, .gemini/skills/comprehensive-variant-annotation, .github/skills/comprehensive-variant-annotation and .opencode/skills/comprehensive-variant-annotation in your project.

What does Comprehensive Variant Annotation need to run?

SKILL.md names no scripts, command-line tools or credentials: Comprehensive Variant Annotation is instructions for the agent only. Our summary lists: Python 3.

Does Comprehensive Variant Annotation access the network?

SKILL.md names 6 domains. In commands or code: api.ncbi.nlm.nih.gov, api.genohub.org, gnomad.broadinstitute.org, ebi.ac.uk, api.clinpgx.org and reg.genome.network; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Comprehensive Variant Annotation safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Comprehensive Variant Annotation use?

Comprehensive Variant Annotation is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Comprehensive Variant Annotation use?

About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Comprehensive Variant Annotation?

Skills that share tags, products or a category with Comprehensive Variant Annotation: Annotating Variants (maziyarpanahi/openmed, 5.5k stars), Variant Annotation (aipoch/medical-research-skills, 2k stars), Bio Variant Annotation (FreedomIntelligence/OpenClaw-Medical-Skills, 3.1k stars) and Variant Annotation (ClawBio/ClawBio, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Comprehensive Variant Annotation?

InternScience (a GitHub organization) maintains it in InternScience/scp, which has 169 GitHub stars. The repository holds 73 skills in this directory. The repository was last updated on June 3, 2026.

Source: InternScience/scp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.