Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
gptomics avatar

Bio Reporting Rmarkdown Reports

  • 4 installs
  • 1.1k repo stars
  • Updated July 25, 2026
  • gptomics/bioskills

Create reproducible bioinformatics reports in HTML, PDF, or Word with R Markdown combining code and results.

About

Creates reproducible bioinformatics analysis reports with R Markdown, combining code, results, and visualizations. Developers use it to generate HTML, PDF, or Word reports from R analyses.

  • Combine code, results, and visualizations in one document
  • Output to HTML, PDF, or Word

Bio Reporting Rmarkdown Reports by the numbers

  • 4 all-time installs (skills.sh)
  • Ranked #1,625 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/gptomics/bioskills --skill bio-reporting-rmarkdown-reports

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs4
repo stars1.1k
Last updatedJuly 25, 2026
Repositorygptomics/bioskills

What it does

Create reproducible bioinformatics reports in HTML, PDF, or Word with R Markdown combining code and results.

Files

SKILL.mdMarkdownGitHub ↗

R Markdown Reports

Basic Document Structure

---
title: "RNA-seq Analysis Report"
author: "Your Name"
date: "`r Sys.Date()`"
output:
  html_document:
    toc: true
    toc_float: true
    code_folding: hide
    theme: cosmo
---

Setup Chunk

```r ``{r setup, include=FALSE} knitr::opts_chunk$set( echo = TRUE, message = FALSE, warning = FALSE, fig.width = 10, fig.height = 6, fig.align = 'center' ) library(tidyverse) library(DESeq2) library(pheatmap)

Code Chunk Options

```r ``{r analysis, echo=TRUE, results='hide'}

echo: show code

results: 'hide', 'asis', 'markup'

include: FALSE hides chunk entirely

eval: FALSE shows code but doesn't run

cache: TRUE caches results

Parameterized Reports

---
title: "Sample Report"
params:
  sample_id: "sample1"
  count_file: "counts.csv"
  fdr_threshold: 0.05
---

```r ``{r} counts <- read.csv(params$count_file) sample <- params$sample_id fdr <- params$fdr_threshold

# Render with parameters
rmarkdown::render('report.Rmd', params = list(sample_id = 'sample2', fdr_threshold = 0.01))

# Batch render
samples <- c('sample1', 'sample2', 'sample3')
for (s in samples) {
    rmarkdown::render('report.Rmd', params = list(sample_id = s),
                       output_file = paste0(s, '_report.html'))
}

Tables

```r ``{r}

Basic kable table

knitr::kable(head(results), caption = 'Top DE genes')

Interactive table with DT

library(DT) datatable(results, filter = 'top', options = list(pageLength = 10))

Formatted table with kableExtra

library(kableExtra) results %>% head(10) %>% kable() %>% kable_styling(bootstrap_options = c('striped', 'hover')) %>% row_spec(which(results$padj < 0.01), bold = TRUE, color = 'red')

Figures

```r ``{r volcano-plot, fig.cap="Volcano plot of differential expression"} ggplot(results, aes(log2FoldChange, -log10(pvalue))) + geom_point(aes(color = padj < 0.05)) + theme_minimal()

Inline Code

We identified `r sum(res$padj < 0.05, na.rm=TRUE)` significantly
DE genes (FDR < 0.05) out of `r nrow(res)` tested.

Child Documents

---
title: "Main Report"
---

```r ``{r child='methods.Rmd'}

PDF Output

---
output:
  pdf_document:
    toc: true
    number_sections: true
    fig_caption: true
    latex_engine: xelatex
---

HTML with Tabs

````r

Results {.tabset}

PCA Plot

```{r} plotPCA(vsd, intgroup = 'condition')


### Heatmap

pheatmap(assay(vsd)[top_genes, ])

Caching Long Computations

```r ``{r deseq-analysis, cache=TRUE, cache.extra=tools::md5sum('counts.csv')}

Cached unless counts.csv changes

dds <- DESeqDataSetFromMatrix(counts, metadata, ~ condition) dds <- DESeq(dds)

Re-runs when deseq-analysis cache changes

res <- results(dds)

Custom CSS

---
output:
  html_document:
    css: custom.css
---
/* custom.css */
body { font-family: 'Helvetica', sans-serif; }
h1 { color: #2c3e50; }
.figure { margin: 20px auto; }

Complete Report Template

```markdown --- title: "RNA-seq Analysis Report" author: "Bioinformatics Core" date: "r Sys.Date()`" output: html_document: toc: true toc_float: true code_folding: hide params: count_file: "counts.csv" metadata_file: "metadata.csv" ---

```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE) library(DESeq2) library(tidyverse) library(pheatmap) library(DT)


## Data Overview

counts <- read.csv(params$count_file, row.names = 1) metadata <- read.csv(params$metadata_file, row.names = 1)


Loaded `r nrow(counts)` genes across `r ncol(counts)` samples.

## Differential Expression

dds <- DESeqDataSetFromMatrix(counts, metadata, ~ condition) dds <- DESeq(dds) res <- results(dds) %>% as.data.frame() %>% arrange(padj)


## Results

datatable(res %>% filter(padj < 0.05), options = list(pageLength = 10))

Related Skills

  • reporting/quarto-reports - Modern alternative
  • data-visualization/ggplot2-fundamentals - Figure creation
  • differential-expression/de-visualization - Analysis plots

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.