Install any skill in seconds. Free to start, no credit card required.
Get Started Free →De novo genome assembly from Illumina short reads using SPAdes. Covers bacterial, fungal, and small eukaryotic genome assembly, as well as metagenome and transcriptome assembly modes. Use when assembling genomes from Illumina reads.
.claude/skills/bio-genome-assembly-short-read-assembly/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-15 | ✗→✓ | ▲ Improved | 45% | 0% |
| case-21 | ✓→✗ | ▼ Worse | 58% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 234% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 441% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 174% | 0% |
<!--
#
#
-->
Assemble genomes from Illumina paired-end or single-end reads using SPAdes.
SPAdes (St. Petersburg genome Assembler) uses de Bruijn graph approach with multiple k-mer sizes for robust assembly.
bashconda install -c bioconda spades
bashspades.py -1 R1.fastq.gz -2 R2.fastq.gz -o output_dir
bashspades.py -s reads.fastq.gz -o output_dir
bashspades.py -1 R1.fastq.gz -2 R2.fastq.gz -s unpaired.fastq.gz -o output_dir
bashspades.py --isolate -1 R1.fq.gz -2 R2.fq.gz -o isolate_assembly
Best for single-organism isolates with uniform coverage.
bashspades.py --careful -1 R1.fq.gz -2 R2.fq.gz -o careful_assembly
Reduces misassemblies at cost of speed. Recommended for small genomes.
bashspades.py --meta -1 R1.fq.gz -2 R2.fq.gz -o meta_assembly
For mixed microbial communities with varying coverage.
bashspades.py --rna -1 R1.fq.gz -2 R2.fq.gz -o rna_assembly
Assembles transcripts from RNA-seq data.
bashspades.py --plasmid -1 R1.fq.gz -2 R2.fq.gz -o plasmid_assembly
Extracts plasmid sequences from bacterial isolates.
| Option | Description | |--------|-------------| | -o <dir> | Output directory | | -t <#> | Number of threads (default: 16) | | -m <#> | Memory limit in GB (default: 250) | | -k <#,#,...> | K-mer sizes (auto by default) | | --careful | Reduce misassemblies | | --isolate | Isolate mode for uniform coverage | | --meta | Metagenome mode | | --rna | RNA-seq assembly | | --cov-cutoff <#> | Coverage cutoff (default: off) | | --only-assembler | Skip error correction | | --continue | Resume interrupted run |
bashspades.py \ --pe1-1 short_R1.fq.gz --pe1-2 short_R2.fq.gz \ --pe2-1 long_R1.fq.gz --pe2-2 long_R2.fq.gz \ -o output_dir
bashspades.py \ --pe1-1 paired_R1.fq.gz --pe1-2 paired_R2.fq.gz \ --mp1-1 mate_R1.fq.gz --mp1-2 mate_R2.fq.gz \ -o output_dir
bashspades.py \ -1 illumina_R1.fq.gz -2 illumina_R2.fq.gz \ --pacbio pacbio.fq.gz \ -o hybrid_assembly # Or with Nanopore spades.py \ -1 illumina_R1.fq.gz -2 illumina_R2.fq.gz \ --nanopore nanopore.fq.gz \ -o hybrid_assembly
SPAdes automatically selects appropriate k-mers based on read length.
bash# For 150bp reads spades.py -k 21,33,55,77 -1 R1.fq.gz -2 R2.fq.gz -o output # For 250bp reads spades.py -k 21,33,55,77,99,127 -1 R1.fq.gz -2 R2.fq.gz -o output
output_dir/
├── scaffolds.fasta # Final scaffolds (use this)
├── contigs.fasta # Contigs before scaffolding
├── assembly_graph.gfa # Assembly graph
├── spades.log # Log file
├── params.txt # Parameters used
└── K*/ # Intermediate k-mer assemblies>NODE_1_length_500000_cov_50.5NODE_1 - Contig/scaffold IDlength_500000 - Sequence lengthcov_50.5 - Average k-mer coveragebash# Limit memory to 32GB spades.py -m 32 -1 R1.fq.gz -2 R2.fq.gz -o output # Use fewer threads spades.py -t 8 -1 R1.fq.gz -2 R2.fq.gz -o output
bashspades.py --continue -o output_dir
bash# If reads already corrected spades.py --only-assembler -1 R1.fq.gz -2 R2.fq.gz -o output
bash#!/bin/bash set -euo pipefail R1=$1 R2=$2 OUTDIR=$3 THREADS=${4:-16} echo "=== Bacterial Genome Assembly ===" # Run SPAdes in isolate mode spades.py \ --isolate \ --careful \ -t $THREADS \ -1 $R1 -2 $R2 \ -o $OUTDIR # Basic stats echo "Assembly statistics:" grep -c "^>" ${OUTDIR}/scaffolds.fasta seqkit stats ${OUTDIR}/scaffolds.fasta
bash#!/bin/bash set -euo pipefail R1=$1 R2=$2 OUTDIR=$3 spades.py \ --meta \ -t 32 \ -m 200 \ -1 $R1 -2 $R2 \ -o $OUTDIR echo "Metagenome assembly complete: ${OUTDIR}/scaffolds.fasta"
bashspades.py \ --rna \ -t 16 \ -1 rnaseq_R1.fq.gz -2 rnaseq_R2.fq.gz \ -o transcriptome_assembly
| Assembler | Best For | |-----------|----------| | SPAdes | Small genomes, bacteria, fungi | | MEGAHIT | Metagenomes (memory efficient) | | ABySS | Large genomes | | Velvet | Legacy, small genomes | | Trinity | Transcriptomes |
bashmegahit -1 R1.fq.gz -2 R2.fq.gz -o megahit_output -t 16
-m limit--meta mode (more memory efficient)--careful mode--only-assembler if reads pre-corrected<!-- AUTHOR_SIGNATURE: 9a7f3c2e-MD-BABU-MIA-2026-MSSM-SECURE -->
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 4,578 | 2,514 | -45% | 1 | 1 | 0% | 763 | 2,548 | +234% | 0 | 0 | — |
case-06 | pass→pass | 2,393 | 1,902 | -21% | 1 | 1 | 0% | 454 | 2,457 | +441% | 0 | 0 | — |
case-07 | pass→pass | 4,721 | 2,739 | -42% | 1 | 1 | 0% | 930 | 2,552 | +174% | 0 | 0 | — |
case-02 | pass→pass | 4,012 | 4,465 | +11% | 1 | 1 | 0% | 716 | 2,496 | +249% | 0 | 0 | — |
case-03 | pass→pass | 3,704 | 2,330 | -37% | 1 | 1 | 0% | 561 | 2,429 | +333% | 0 | 0 | — |
case-04 | pass→pass | 3,779 | 2,771 | -27% | 1 | 1 | 0% | 644 | 2,452 | +281% | 0 | 0 | — |
case-05 | pass→pass | 3,266 | 3,308 | +1% | 1 | 1 | 0% | 484 | 2,363 | +388% | 0 | 0 | — |
case-08 | pass→pass | 6,759 | 3,864 | -43% | 1 | 1 | 0% | 1,326 | 2,885 | +118% | 0 | 0 | — |
case-09 | pass→pass | 7,250 | 3,726 | -49% | 1 | 1 | 0% | 1,434 | 2,865 | +100% | 0 | 0 | — |
case-10 | pass→pass | 3,980 | 2,567 | -36% | 1 | 1 | 0% | 759 | 2,568 | +238% | 0 | 0 | — |
case-11 | pass→pass | 3,337 | 1,844 | -45% | 1 | 1 | 0% | 561 | 2,359 | +320% | 0 | 0 | — |
case-12 | pass→pass | 8,629 | 6,593 | -24% | 1 | 1 | 0% | 1,533 | 3,350 | +119% | 0 | 0 | — |
case-13 | pass→pass | 2,548 | 2,813 | +10% | 1 | 1 | 0% | 426 | 2,361 | +454% | 0 | 0 | — |
case-14 | pass→pass | 3,420 | 2,563 | -25% | 1 | 1 | 0% | 545 | 2,444 | +348% | 0 | 0 | — |
case-15 | fail→pass | 9,869 | 5,209 | -47% | 1 | 1 | 0% | 2,153 | 3,132 | +45% | 0 | 0 | — |
case-16 | pass→pass | 4,445 | 2,956 | -33% | 1 | 1 | 0% | 881 | 2,599 | +195% | 0 | 0 | — |
case-17 | pass→pass | 3,063 | 7,020 | +129% | 1 | 1 | 0% | 619 | 2,444 | +295% | 0 | 0 | — |
case-18 | pass→pass | 5,202 | 4,222 | -19% | 1 | 1 | 0% | 1,025 | 2,910 | +184% | 0 | 0 | — |
case-19 | pass→pass | 9,462 | 4,872 | -49% | 1 | 1 | 0% | 1,529 | 3,004 | +96% | 0 | 0 | — |
case-20 | pass→pass | 6,828 | 5,440 | -20% | 1 | 1 | 0% | 1,263 | 3,101 | +146% | 0 | 0 | — |
case-21 | pass→fail | 11,039 | 6,417 | -42% | 1 | 1 | 0% | 2,101 | 3,317 | +58% | 0 | 0 | — |
case-22 | pass→pass | 4,609 | 4,432 | -4% | 1 | 1 | 0% | 868 | 2,804 | +223% | 0 | 0 | — |
case-23 | fail→fail | 3,850 | 3,420 | -11% | 1 | 1 | 0% | 697 | 2,705 | +288% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of 0 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 7/26/2026 | — |
Other measured skills in the registry, with their headline benchmark lift.