Agent skill · sammcj

personal-genomics

Analyse personal DNA / genome files for pharmacogenomics, disease risk, carrier status, ancestry and traits. Use whenever the user mentions DNA or genome analysis, a raw genome file, gene names, drug-gene interactions, or wants to combine multiple DNA sources.

What it needs

About 3k tokens when loaded.

What this skill does

Personal Genomics Runs the local personal-genomics toolkit over one or more raw DNA files and reports the findings. All analysis is offline; genetic data never leaves the machine. First: track the workflow Create a task for each step below, then work them to completion. The run is multi-step and the reporting step (surfacing findings safely) is the one most often skipped once the analysis file is written. Locate the toolkit The scripts and their virtualenv live at ~/git/personal-genomics (a .venv/ with pandas/numpy/scipy/reportlab). Use that venv's Python: ~/git/personal-genomics/.venv/bin/python. If the repo or venv is missing, set it up before analysing: If the toolkit lives elsewhere, ask the user for the path rather than guessing. Locate the input files Ask the user where their DNA file(s) are if not already given. Common location is ~/Downloads/DNA/. Supported inputs: Array exports: 23andMe, AncestryDNA, MyHeritage, FTDNA (tab-delimited rsid text) Sequencing: .vcf / .vcf.gz (whole genome or exome) A .cram.crai on its own is not usable (it is only an index; the alignment data is in the .cram it points to). See Gotchas for what to do when the .cram itself is available. Choose single-source or combined One file -> comprehensiveanalysis.py: Two or more files -> combinesources.py, which merges them first: Always merge when more than one source exists. A variants-only VCF (the usual WGS export) lists only sites where the person differs from the reference, so every homozygous-reference site is absent. The marker analysis treats an absent rsID as "not tested" and skips it, which makes a rich WGS file yield fewer findings than an array on its own. Merging restores the array's reference/normal calls and keeps the WGS's rare variants, producing a strict superset. The combiner resolves contested sites to the sequencing call and writes mergestats.json recording overlap, agreement, and strand-flip counts. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills sammcj/personal-genomics--7b919e

View the source on GitHub

Browse the @skills marketplace