A Claude Code Agent Skill that runs CRISPRme+ from plain-language requests: install it from scratch, run variant- and haplotype-aware off-target searches, and turn the results into a readable risk summary.
Written for and tested against CRISPRme+ v2.7.9.
The skill is a document plus a handful of scripts. It does not wrap or reimplement CRISPRme:
every command it runs is a real crisprme.py subcommand, and CRISPRme's own outputs (including
the shareable report.html) are the deliverables. What the skill adds is the operational
knowledge around those commands — which questions to ask before a search, what the current
defaults are, how to run hour-long jobs without blocking, and which failure modes look like
success.
| Ask | What happens |
|---|---|
| "Set up CRISPRme for me" | Scans for existing installs first, then registers the official v2.7.9 container (Apptainer, Docker, or an existing source install) and downloads the reference data and a variant index as background jobs |
| "Check this guide for off-targets" | Asks only about the choices that matter, states its assumptions for the rest, estimates the cost of deep searches, and runs complete-search as a background job |
| "What did it find?" | Points at CRISPRme's own report and prints a plain-language summary: counts, on-target ambiguity, variant-driven sites, co-occurring variants, and the recommended validation panel |
| "Who carries these off-targets?" | Switches to --per-sample analysis; generate-personal-card for one named individual |
| "Does my install work?" | complete-test smoke test, or validate-test to cross-check against an exhaustive brute-force search |
| "Can it do SaCas9 / pig / my own cohort VCF?" | Builds the needed index via build-index-only or the published enriched-genome kit, with the time and disk cost stated up front |
| "Search this person's assembled genome" | assembly-search on both haplotypes, reconciled against hg38 |
A worked walkthrough of these paths, with real command output, is in
docs/ (see Documentation below).
- Claude Code (any recent version).
- A container runtime: Docker on a laptop or workstation, or Apptainer/Singularity on an HPC or shared server (no root needed). A conda environment with CRISPRme+ installed from source also works.
- Disk: ~4.2 GB for the container image, ~26 GB for the hg38 reference data, and ~70–90 GB per variant index. Budget ~130 GB for a standard variant-aware setup.
- Memory: a genome-wide variant-aware search needs at least 64 GB of RAM (it peaks around 68–75 GB). Reference-only or single-chromosome searches fit in ~16 GB.
Bioconda's crisprme package is still the old 2.1.x line and is not suitable — the skill
expects CRISPRme+ 2.6 or later.
git clone https://github.com/pinellolab/crisprme-skill.git
# make it available to Claude Code, either for one project...
mkdir -p <your-project>/.claude/skills
cp -r crisprme-skill <your-project>/.claude/skills/crisprme
# ...or for every project
cp -r crisprme-skill ~/.claude/skills/crisprmeThen, from the directory where CRISPRme's data and results should live, ask Claude to set CRISPRme up — or run the installer yourself:
cd /path/to/your/crisprme-data-dir
~/.claude/skills/crisprme/scripts/install_crisprme.sh # pulls the v2.7.9 imageThat writes a .crisprme_runtime file recording how to run CRISPRme in this directory. Every
later command goes through scripts/crisprme_cmd.sh, so the rest of the skill works the same
whether CRISPRme runs under Apptainer, Docker, or a source install.
SKILL.md the skill itself: what Claude reads and follows
scripts/
crisprme_cmd.sh runs any crisprme.py command through the configured runtime
run_crisprme_job.sh launches a subcommand as a tracked background job
check_run_status.sh reports a job's status, liveness, and recent log
install_crisprme.sh registers a runtime (container image or conda env)
find_existing_crisprme_installs.sh read-only scan for installs already on the machine
analyze_results.py turns a finished run into a plain-language risk summary
examples/flagship-search/ real output from a genome-wide variant-aware run
SKILL.md is the substance. The scripts exist so that Claude never has to improvise a
docker run or apptainer run invocation, and so long jobs can be launched and checked without
blocking the conversation.
Every route below was executed end-to-end through this skill's own scripts on a shared Linux
server (88 cores, 1 TB RAM), using the published pinellolab/crisprme:v2.7.9 image under
Apptainer, on 2026-10-13. "Executed" means the commands and scripts were run and checked; the
parameters were chosen by hand rather than by a Claude session, except for the search in
examples/flagship-search/, which a session drove from a one-line
request.
| Route | Result | Wall time |
|---|---|---|
Runtime registration from an existing image (install_crisprme.sh --sif) |
pass | seconds |
Container image pull (apptainer pull, run directly — not via the installer) |
pass | 5 min, 4.9 GB → 4.2 GB .sif |
download --what index (NRG_3_hg38+hg38_HGDP1kGP, the new default) |
pass | 18 min, ~87 GB |
download --what genome --source ucsc (pig, susScr11) |
pass | 9 min, 3.0 GB |
download --what pams |
pass | seconds |
scorer-env check (CRISPR-Bulge ML scorer) |
pass, compute self-test OK | seconds |
complete-test smoke test, genome-wide, variant index |
pass | 14 min |
complete-search, genome-wide variant-aware, population-level |
pass | 59 min |
complete-search, same guide with --per-sample |
pass | 61 min |
generate-personal-card for one individual |
pass | 18 s |
complete-test (benchmark mode) + validate-test |
2 benchmarks passed, 0 failed | 21 min + 6 s |
build-index-only on a non-human genome (pig), then search |
pass | 12 min + 21 min |
| SaCas9 index from the published kit, then variant-aware search | pass | 8 min + 33 min |
analyze_results.py on every run above |
pass | 3 s, 16 MB RAM on genome-wide output |
assembly-searchhas not been run on v2.7.9. It is documented from the source and checked against the output of an earlier real run (v2.6.2, HPRC HG01255), so expect rough edges.download --what alland--what assemblyare untested. The--what index,--what genomeand--what pamsmodes were exercised.- GPU scoring is unavailable through the wrapper, which does not pass a GPU into the container, so scoring runs on CPU.
- Non-SpCas9 nucleases get no CFD or CRISPR-Bulge score — both models are SpCas9-trained — so those runs are ranked by edit distance alone. A missing score is not a low score.
examples/flagship-search/ holds real, unedited output from a
genome-wide variant-aware search — produced by a fresh Claude Code session given a single
one-line request, not by a hand-assembled command. Searching 4,091 people's genomes at the
version's recommended depth, it found 205,415 off-target sites, of which 97,879 (48%) do not
exist in the reference genome and are only visible because the search covers population
variation, plus a lone perfect match in BCL11A — which CRISPRme treats as the presumed
on-target, since it cannot know the intended site — and a 101-site recommended validation panel.
The directory ships CRISPRme's own run manifest and parameters, that validation panel, the per-guide summary table, and the skill's plain-language summary. Its README has the full provenance, the exact command, and what each number means.
SKILL.md— the operational document Claude follows. It is also the most complete written account of how to run CRISPRme+ v2.7.9 on a shared server.- Upstream:
pinellolab/crisprme-plus. The skill defers to CRISPRme's own documentation for the science and the file formats; it does not duplicate them.
This skill targets v2.7.9. If scripts/crisprme_cmd.sh --version reports something else,
flags and defaults may have moved — confirm with <subcommand> --help and upstream's
CHANGELOG.md before relying on this document.
This skill is a thin operational layer. The tool, the methods, and the data are CRISPRme's — cite the CRISPRme paper and CRISPRme+ as directed by upstream.
CRISPRme+ itself is licensed under the MGB Open Access License 1.0: free for non-commercial academic use, with commercial use requiring a separate licence.