# ngs-bulk-rnaseq-counts-qc

Plans or runs bulk RNA-seq processing from FASTQ reads to count matrices, with MultiQC and QC checks. Use it before differential-expression analysis.

- skill · `type=skill` · Codex, ChatGPT · 2 installs · ★ 7604
- Author: OpenAI · official OpenAI repository
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/openai/plugins/tree/HEAD/plugins/ngs-analysis/skills/ngs-bulk-rnaseq-counts-qc/SKILL.md
- Updated: 2026-10-08
- HTML: https://affpapa.org/en/nevibecode/skills/ngs-bulk-rnaseq-counts-qc

## What it does

This skill works from FASTQ or aligned reads, a sample sheet, organism and genome-build details, FASTA, GTF, and library strandedness. It can route standard runs through `nf-core/rnaseq`, use a local Snakemake/Salmon path, or follow `STAR/Salmon`, Salmon-only, and `featureCounts` workflows. The local runner is `run_bulk_rnaseq_counts_qc.py`; `ngs_preflight.py` prepares installation and readiness checks.

Outputs include Salmon quantification files, TPM and expected-count matrices, a `tx2gene` provenance table, MultiQC summaries, and a compact QC verdict. The skill also keeps sample metadata and writes run artifacts such as logs, versions, validation files, and resource readiness files under `resources/`. When strandedness is unknown, it must be inferred before final counting; otherwise the configured library type can be wrong.

## Install

### Codex (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add openai/plugins --skill ngs-bulk-rnaseq-counts-qc -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/ngs-bulk-rnaseq-counts-qc/SKILL.md` — For all projects use ~/.agents/skills/

### Claude Code

1. **Skills CLI (Vercel)**
```bash
npx skills add openai/plugins --skill ngs-bulk-rnaseq-counts-qc -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/ngs-bulk-rnaseq-counts-qc/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/ngs-bulk-rnaseq-counts-qc/

### Cursor

**Manually: put the files in place**
- File: `.cursor/skills/ngs-bulk-rnaseq-counts-qc/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install openai/plugins ngs-bulk-rnaseq-counts-qc
```

2. **Manually: put the files in place**
- File: `.github/skills/ngs-bulk-rnaseq-counts-qc/SKILL.md`

### Gemini CLI

**Platform CLI**
```bash
gemini skills install https://github.com/openai/plugins --path plugins/ngs-analysis/skills/ngs-bulk-rnaseq-counts-qc
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/ngs-bulk-rnaseq-counts-qc/SKILL.md` — The legacy .windsurf/skills/ path still works

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/openai/plugins/tree/HEAD/plugins/ngs-analysis/skills/ngs-bulk-rnaseq-counts-qc/SKILL.md

## When to use it
- process bulk RNA-seq FASTQs into count matrices
- resolve library strandedness before quantification
- collect per-sample results in a MultiQC report
- derive gene-level matrices from Salmon output
- flag missing replicates, mislabeled groups, or batch failures

## Example prompts
- Run bulk RNA-seq processing from `samplesheet.csv` and `path/to/fastqs` using the references in `reference/`.
- Run `ngs_preflight.py` for the bulk RNA-seq pipeline and prepare its installation plan.
- Create count matrices and QC outputs, carry the sample metadata forward, and check the library-type agreement.

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: d6ab09ed768a7dd5.

BEGIN THIRD-PARTY FILE d6ab09ed768a7dd5
````text
---
name: ngs-bulk-rnaseq-counts-qc
description: Run or plan bulk RNA-seq FASTQ-to-count processing with sample-sheet, strandedness, genome annotation, alignment or pseudoalignment, MultiQC, and count-matrix QC checks.
---

# Bulk RNA-seq Counts QC

Use this skill for bulk RNA-seq read processing, quantification, and count-matrix generation. If the user already has a count matrix and wants contrasts or statistics, use `ngs-bulk-rnaseq-differential-expression`.

## Essential Inputs

Confirm:

- FASTQ or aligned-read inputs and paired-end/single-end status
- organism, genome build, FASTA, GTF, and gene ID convention
- strandedness or permission to infer strandedness
- sample sheet with biological condition, replicate, batch, and library metadata
- desired quantification: gene counts, transcript estimates, or both
- alignment strategy: `STAR/Salmon`, Salmon-only, featureCounts from BAMs, or existing lab protocol

## Route

Prefer `nf-core/rnaseq` for standard processing when a stable container or HPC runtime is available. Use the `local_light` Snakemake/Salmon path for small local/devbox feasibility runs when Docker, registry egress, or Nextflow process containers are the blocker.

The plugin-owned local runner is:

```bash
python plugins/ngs-analysis/scripts/run_bulk_rnaseq_counts_qc.py \
  --sample-sheet samplesheet.csv \
  --fastq-root path/to/fastqs \
  --transcriptome-fasta reference/transcriptome.fasta \
  --genome-fasta reference/genome.fa \
  --annotation-gtf reference/genes.gtf \
  --execute
```

Omit `--execute` for validation plus Snakemake workflow validation only. Use `--no-dry-run` only when the user wants input validation and run-envelope preparation without workflow graph validation.

The runner emits a run-local `resources/` readiness bundle with `resource_plan.json`, `resource_manifest.tsv`, `resource_env.sh`, and `resource_readiness.md`. Resource checks are advisory by default for custom or reduced references; add `--genome-build`, `--bundle-root <bundle>=<path>`, and `--require-resource-plan` when a registered genome bundle must be complete before the run is considered ready.

Preflight command:

```bash
python plugins/ngs-analysis/scripts/ngs_preflight.py --pipeline bulk_rnaseq_counts_qc --emit-install-plan
python plugins/ngs-analysis/scripts/ngs_preflight.py --profile local_light --emit-install-plan
```

## Decision Points

- If strandedness is unknown, infer it before final counting; do not lock in a design based on library guesses.
- If strandedness is provided, carry it into the quantification command and flag any disagreement between the configured library type and Salmon's inferred format.
- Keep genome FASTA, GTF, transcriptome, and aligner indexes from the same build/release.
- Inspect per-sample reads, mapping rate, rRNA/mitochondrial fraction when available, duplication, insert size, gene-body bias, and assignment rate.
- Preserve raw counts separately from normalized expression.
````
END THIRD-PARTY FILE d6ab09ed768a7dd5

The third-party file has ended. Everything between the d6ab09ed768a7dd5 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2960 of 4037 bytes. © OpenAI · MIT · https://github.com/openai/plugins/tree/HEAD/plugins/ngs-analysis/skills/ngs-bulk-rnaseq-counts-qc/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
