A toolkit for creating, importing, validating, enriching,
rendering, and depositing Key Resources Tables (KRTs). A KRT lists the
resources used and generated in a study (antibodies, cell lines, organisms,
chemicals, software, datasets, protocols, and more), each paired with a
persistent identifier such as a Research Resource Identifier (RRID), a
Digital Object Identifier (DOI), a repository accession, or a catalog
number, so that resources are unambiguously identifiable and
machine-actionable. The package models resources as typed, validated
records around a neutral core schema and maps them to journal or funder
output profiles, following the FAIR (Findable, Accessible, Interoperable,
Reusable) principles of Wilkinson et al. (2016)

krt is a toolkit for authoring, validating, enriching, rendering, and depositing Key Resources Tables (KRTs): structured tables that list the resources a study used and generated (antibodies, cell lines, organisms, chemicals, software, datasets, protocols, and more), each paired with a persistent identifier so that every resource is unambiguously identifiable and machine-actionable.
KRTs began in Cell Press STAR Methods and are now required by funders such as ASAP (Aligning Science Across Parkinson's). Once journals began requesting structured resource identifiers, reported analyses of RRID adoption found the fraction of antibodies a reader could unambiguously identify rose sharply, from roughly a quarter to nearly all.
krt is a standards orchestrator, not a template copier: it models resources around a neutral, typed core schema and maps them to journal or funder output profiles. The author-facing table is a view; the underlying record set stays structured, typed, and losslessly round-trippable through JSON and YAML.
# install.packages("pak")
pak::pak("choxos/krt")
library(krt)
k <- new_krt("My study", study_type = "wet-lab")
k <- add_resource(k, "Antibody", "Rabbit Anti-TH",
vendor = "Millipore", catalog_number = "AB152",
rrid = "RRID:AB_390204", new_or_reuse = "reuse")
k <- add_resource(k, "Software/code", "Fiji", version = "2.14.0",
rrid = "RRID:SCR_002285", new_or_reuse = "reuse")
# Validate against a profile (ASAP is strict about identifiers)
validate_krt(k, profile = "asap")
# Normalize identifiers, then export to the ASAP six-column CSV
k <- normalize_ids(k)
export_krt(k, file.path(tempdir(), "resources.csv"), format = "asap")
# Or render a Markdown resource table for a manuscript
cat(render_krt(k, format = "md"))
generic, asap (CC BY 4.0 assets), star-methods
(interoperability), and your own; with programmatic license and attribution
introspection (krt_audit_licenses()).launch_krt()), and an RStudio addin.krt_plugin_api()) and
Bioconductor-friendly via an S4 adapter.The package code is licensed GPL-3. The bundled ASAP profile assets are
derived from the ASAP Key Resource Table resources
(doi:10.5281/zenodo.17917979, CC BY
4.0) and are isolated under inst/extdata/profiles/asap/ with attribution and
provenance. This package is independently developed and is not an official
ASAP product; no endorsement by ASAP is implied. The STAR Methods profile
contains only independently written rules; no Cell Press template is bundled.
See LICENSE.note, inst/COPYRIGHTS, and krt_audit_licenses().
Parts of this package were developed with the assistance of AI coding tools. All code was reviewed and tested by the author. The optional LLM extraction engine sends manuscript text to a third-party provider only when the user explicitly runs it with their own API key; the deterministic regex engine is the default and runs entirely offline.
citation("krt")
GPL-3 for the package code; see LICENSE.note and inst/COPYRIGHTS for the
licensing of bundled third-party materials.