Vdjdb Extract
antigenomics/vdjdb-db
Extract TCR:pMHC specificity records from raw submission sources - supplementary XLS/CSV tables, PDF manuscripts, 10x Genomics contig and clonotype files, AIRR Rearrangement TSVs, Adaptive ImmunoSEQ…
Author, resolve, compile and publish a just-dna annotation module — the spec directory layout, the CSV column contracts and vocabularies, the enrich→compile pipeline, and the checks that decide…
$ npx skills add dna-seq/just-dna-lite --skill module-authoring -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dna-seq/just-dna-lite module-authoring --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dna-seq/just-dna-lite.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/module-authoring .claude/skills/module-authoring && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "module-authoring" agent skill from https://github.com/dna-seq/just-dna-lite/tree/main/.claude/skills/module-authoring into .claude/skills/module-authoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "module-authoring", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dna-seq/just-dna-lite/tree/main/.claude/skills/module-authoringType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dna-seq/just-dna-lite --skill module-authoring -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dna-seq/just-dna-lite module-authoring --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dna-seq/just-dna-lite.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/module-authoring .agents/skills/module-authoring && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "module-authoring" agent skill from https://github.com/dna-seq/just-dna-lite/tree/main/.claude/skills/module-authoring into .agents/skills/module-authoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "module-authoring", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dna-seq/just-dna-lite --skill module-authoring -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dna-seq/just-dna-lite module-authoring --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dna-seq/just-dna-lite.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/module-authoring .cursor/skills/module-authoring && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "module-authoring" agent skill from https://github.com/dna-seq/just-dna-lite/tree/main/.claude/skills/module-authoring into .cursor/skills/module-authoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "module-authoring", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dna-seq/just-dna-lite.git --path .claude/skills/module-authoring--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dna-seq/just-dna-lite --skill module-authoring -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dna-seq/just-dna-lite module-authoring --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dna-seq/just-dna-lite.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/module-authoring .gemini/skills/module-authoring && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "module-authoring" agent skill from https://github.com/dna-seq/just-dna-lite/tree/main/.claude/skills/module-authoring into .gemini/skills/module-authoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "module-authoring", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dna-seq/just-dna-lite module-authoringInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dna-seq/just-dna-lite --skill module-authoring -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dna-seq/just-dna-lite.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/module-authoring .github/skills/module-authoring && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "module-authoring" agent skill from https://github.com/dna-seq/just-dna-lite/tree/main/.claude/skills/module-authoring into .github/skills/module-authoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "module-authoring", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dna-seq/just-dna-lite --skill module-authoring -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dna-seq/just-dna-lite module-authoring --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dna-seq/just-dna-lite.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/module-authoring .opencode/skills/module-authoring && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "module-authoring" agent skill from https://github.com/dna-seq/just-dna-lite/tree/main/.claude/skills/module-authoring into .opencode/skills/module-authoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "module-authoring", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
module-authoringAuthor, resolve, compile and publish a just-dna annotation module — the spec directory layout, the CSV column contracts and vocabularies, the enrich→compile pipeline, and the checks that decide…
Module Authoring is an agent skill from dna-seq/just-dna-lite. Author, resolve, compile and publish a just-dna annotation module — the spec directory layout, the CSV column contracts and vocabularies, the enrich→compile pipeline, and the checks that decide whether a module will publish. Use when creating a new annotation module, editing an existing spec (variants.csv, pharmvariants.csv, modulespec.yaml), debugging a validate/compile failure, or preparing a module for the registry.
Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Documents & Office, covering CSV and tabular files. The repository describes itself as: lite and fast version of just-dna-seq personalized genomic platform. The licence is AGPL-3.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 087f9c2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
HF_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Module Authoring loads about 4.8k tokens when it runs. Until then it costs about 110 tokens; SKILL.md has 2,152 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
`.env` for cache paths: `uv run pipelines module …`, `uv run pipelines enrich …`.Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from dna-seq/just-dna-lite at commit 087f9c2, republished under its AGPL-3.0 licence (© dna-seq). 2,152 words, ~4,761 tokens.
.claude/skills/module-authoring/SKILL.md (or your agent's skills folder).A module is a directory of authored CSVs plus a YAML header. A compiler turns it into parquet with a content-addressed manifest. You never write parquet by hand and never commit coordinates you looked up yourself — a separate resolution step fills those and records where they came from.
Three packages, three jobs. Keep them straight; most confusion comes from mixing them up.
| package | CLI | does | never does |
|---|---|---|---|
just-dna-format | — | the schema: models, vocabularies, identity rules | touch the network |
just-dna-compiler | just-dna-compiler | spec directory → parquet + manifest.json | touch the network |
just-dna-enricher | just-dna-enricher | resolve rsIDs→coordinates, fill citations, mint VRS ids | decide what a variant means |
The compiler is inject-only: it reads a resolution.csv the enricher produced. It will not go
and look a coordinate up for you.
uv run just-dna-compiler scaffold my_module --name my_module # 1. skeleton
# 2. fill the YAML placeholders
# 3. author the CSVs by hand
uv run just-dna-compiler hint variants.csv --file my_module/variants.csv # 4. writes nothing
uv run just-dna-enricher enrich my_module # 5. → resolution.csv
uv run just-dna-enricher literature my_module # 6. → literature.csv (online)
uv run just-dna-compiler validate my_module --strict # 7. the publish gate
uv run just-dna-compiler compile my_module my_module/out --strict # 8. → parquet + manifest.jsonStep 2 is not optional. scaffold writes <<REPLACE>> into module.title, description and
report_title; leaving any of them fails validation with "unreplaced template placeholder". The
same convention appears wherever a tool refuses to invent a value for you.
hint takes the table kind as a positional plus --file (or --row for inline text) — it lints
CSV text, not a directory. Its info: lines are worth reading: they name the columns deliberately
left to you, because filling them from the same source a later check compares them against would
make that check vacuous.
Steps 5 and 6 are the only ones that use the network. Once resolution.csv and literature.csv
exist they are the pin: every later compile is offline and reproducible.
A successful compile prints four hashes — digest, content_signature, resolution_signature, and
the resolution mode. Recompiling an untouched spec must reproduce all of them.
In this repo the same tiers are mounted on one CLI, which is usually what you want because it loads
.env for cache paths: uv run pipelines module …, uv run pipelines enrich ….
my_module/
module_spec.yaml # required: identity + display
variants.csv # the lead table (or pharm_variants.csv, diplotypes.csv, pgs.csv …)
studies.csv # required when variants.csv is present: the grounding
resolution.csv # produced by `enrich` — coordinates + VRS ids. Commit it.
literature.csv # produced by `literature` — PMID/DOI existence. Commit it.
licensing.csv # required when data came from a licence-bearing source
# (`sources.csv` is the deprecated 0.5 spelling — read, warned, gone at 1.0)
logo.png # optionalOne CSV = one concern. A module leads with exactly one primary table. A drug-response module
carries pharm_variants.csv and no variants.csv.
schema_version: "1.0" # always this
module:
name: my_module # lowercase alphanumeric + underscores. `my-module` is rejected.
version: "1.0.0" # SemVer STRING. Unquoted 1 parses as int and is rejected.
title: My Module
description: One sentence a non-specialist can read.
report_title: What the report section is called
icon: heart
color: "#db2828"
genome_build: GRCh38
license: CC0-1.0 # SPDX id; must not contradict licensing.csv
authorship:
- who: your-name
role: created
kind: [human]module: is extra="forbid" — a typo like colour: is a hard error, not a silent drop.
Always required: genotype, state, conclusion
Identity — one of: rsid or chrom + start
Optional: ref, alts, weight, negatives, priority, gene, phenotype, category,
clinvar, pathogenic, benign, curator, method, direction, stat_significance,
effect_size, effect_measure, effect_allele, flags, trait_efo_id, clin_sig,
requires_callable, acmg_sf, actionability, callable_from, quality_from, min_quality
Do not author variant_key or authored_ident — the compiler derives them, and variant_key
is frozen at load, so an authored one is not overwritten.
rsid,genotype,weight,state,conclusion,gene,clin_sig
rs1801133,A/A,-0.5,risk,Reduced MTHFR activity; homozygous,MTHFR,
rs1801133,A/G,-0.25,risk,Reduced MTHFR activity; heterozygous,MTHFR,
rs1801133,G/G,0.0,neutral,Normal MTHFR activity,MTHFR,state: alt, neutral, protective, ref, risk, significantdirection: neutral, protective, risk, unknownstat_significance: not_significant, significant, suggestive, unknownclin_sig: affects, association, benign, conflicting, drug_response,
likely_benign, likely_pathogenic, not_provided, other, pathogenic, protective,
risk_factor, uncertain_significanceflags (open list, ;-separated in a cell; these are reserved): conditional, phased,
pleiotropicchrom: 1–22, X, Y, MT — no chr prefix (chr1 is normalized, NC_… is not)A/G, never G/A. An unphased genotype is a set; two spellings of
one call would be two rows.[ACGT]+, and must be drawn from {ref} ∪ alts at that locus. A genotype whose
alleles are not at the locus can never match a VCF.MT (haploid) and on Y outside the
pseudoautosomal regions (hemizygous) write G, not G/G or A/G — a two-allele call there
asserts a second copy that does not exist. The compiler warns if you get this wrong, but only
warns, and the warning is aggregated, so on a large module it is easy to miss. PAR1/PAR2 on Y
are diploid; a mixed mitochondrial population is heteroplasmy and belongs in
heteroplasmy.csv, not in a het genotype.A/AG, C/CTT — reference-anchored, VCF convention.ref/alts may only appear with chrom+start. You cannot attach alleles to a bare rsID.Prefer rsid alone and let enrich fill the coordinate. Author chrom+start+ref+alts only
when there is no rsID (roughly 10% of ClinVar pathogenic variants), or when one rsID names several
alleles at a locus and the row must say which.
Always required: pmid. Identity — one of: rsid or chrom (+start, ref).
Optional: population, p_value, conclusion, study_design, doi, trait_efo_id,
effect_size, effect_measure, stat_significance, provenance_quote, provenance_regex.
pmid is 1–8 digits. Nine-digit ids are not PubMed ids and are rejected.Always required: drug, conclusion. Identity — one of: rsid or chrom+start.
Optional: ref, gene, genotype, phenotype_category, annotation_id, response,
evidence_level, trait_efo_id.
The duplicate key is (variant, drug, genotype, phenotype_category, annotation_id) — one variant and
drug legitimately carry separate efficacy, toxicity and pharmacokinetic rows, and they can disagree.
phenotype_category is closed: dosage, efficacy, metabolism_pk, other, pd, toxicity.
This module type carries no variants.csv and needs no studies.csv.
enrich writes one row per resolved locus: variant_key, rsid, chrom, start, ref, alts, genome_build, vrs_id, source, status, …. It is what makes a compile offline and reproducible, and
it travels with the module.
resolution.csv first — otherwise stale rows survive silently.--offline restricts to local caches. Substitution VRS ids mint offline; indels and MNVs need
the reference sequence, so an offline run leaves them unminted (expect ~50% coverage on an
indel-heavy module, ~99% online).The file is licensing.csv from format 0.6 on. sources.csv is the deprecated spelling: still
read, warned about, and removed at 1.0 (RM51). A drafting pass writes whichever copy the module already
carries and creates the new name when there is none, so you normally never choose — but if you are
hand-editing, use licensing.csv, and never let both exist: two copies of a fact-hashed,
hand-editable table are two claims, so the compiler refuses rather than picking a winner. Reach for it
in code through just_dna_format.layout (resolve_sidecar, sidecar_write_path), never by name.
The rename stops at the file. The compiled parquet is still sources.parquet and the manifest key
is still manifest.sources, both for the whole 0.x tail, because they sit inside artifact.digest or
are published keys. So a module reads licensing.csv → sources.parquet → manifest.sources. That is
a real legibility cost, taken knowingly; do not "finish" the rename.
Any module built from a licence-bearing source needs a SourceRow recording the terms. Passes that
read such a source write it for you. Two rules that bite:
declared_use is recorded.
Delete the cell and the compile fails — that is the gate working.license: in the YAML must not contradict licensing.csv. A ClinVar module declaring CC0-1.0
warns, because the source row says public-domain; they are the same grant, but the check compares
spellings. Match the source's spelling.--strict changesuv run just-dna-compiler hint variants.csv --file my_module/variants.csv # rewrites nothing
uv run just-dna-compiler validate my_module --strict
uv run just-dna-compiler signature my_module # content signature, no compile
uv run just-dna-compiler compile my_module out/ --strictAuthor against --strict, because that is what a registry runs. The difference is not cosmetic:
| condition | plain | --strict |
|---|---|---|
| genotype allele not among the locus's alleles | warning, valid | error, invalid |
two-allele genotype on MT/Y | warning | warning |
| unresolved rows (no coordinate) | warning | counts against publishability |
A plain compile succeeds through both of the above. So "it compiled" is not evidence the module
is correct — a module can compile cleanly and contain rows that will never match a genome.
Check what you shipped, don't assume:
uv run python -c "
import polars as pl; w = pl.read_parquet('out/weights.parquet')
print(w.height, 'rows;', w.filter(pl.col('chrom').is_not_null()).height, 'with a coordinate')"0 with a coordinate means resolution did not reach the compile — see the trap below.
Current as of compiler/enricher 0.5.2.
compile_module(resolve_with_ensembl=False) disables resolution.csv too. The name reads as
"don't use Ensembl", which is exactly what a spec carrying its own resolution wants. It is the master
switch for all resolution: set it False and every row compiles with chrom=None, and the compile
succeeds — it warns, but a script checking only the exit status ships a module that can never
match a genome. The correct call is resolve_with_ensembl=True, ensembl_cache=None: switch on, no
cache, injected-table path.
Deleting resolution.csv is part of a rebuild. Existing rows are authoritative and merged, so a
fix that changes an authored allele will not show up until you delete the file first. That is
deliberate — the table is a pin, not a cache.
A drafted panel does not need a zygosity decision on every row. draft_gene_panel writes the sole
expressible genotype where the contig leaves nothing open — the mitochondrial genome, and chrY outside
the pseudoautosomal regions, decided per locus — and keeps <<REPLACE>> only where a real judgement
remains. If you expand placeholders into both zygosities, expand only what is still a placeholder;
do not key that off the contig yourself.
licensing.csv must cover every source your fact tables cite, including PubMed if you carry
studies. A missing row is a warning, not an error, so it is easy to ship without noticing.
A re-draft always changes artifact.digest, even when the data is identical. licensing.csv
carries a fetched_at timestamp stamped when the row is written, and sources.parquet is one of the
parquets the digest is a Merkle root over — nineteen of them as of 0.6, not four — so two builds of
byte-identical content, an hour apart, are two different artifacts. Verified by changing only fetched_at and recompiling: the digest
moves. Consequences worth planning around:
compile twice on an untouched spec gives the
same digest every time. That is the property to test, and the checklist below says so.find-by-hash cannot recognise a
module you rebuilt without editing.If you need a rebuild to be digest-stable, keep the previous licensing.csv rather than letting the
draft re-stamp it.
Upgrading a module to 0.6 moves its artifact.digest on its own, with no edit at all: the compiler
emits new stamped columns (weights.parquet went 37 → 39). content_signature — the authored-content
identity, and the one that claims a dedup slot — does not move, measured at 0/11 and 0/16 upstream.
So re-pin stored digests at the version boundary and do not read the change as a content change.
Version deliberately. A rebuild that changes the compiled shape still moves artifact.digest, so it
needs a version either way; a rebuild that changes what variants are in the module or how they are
grounded is a major, because someone pinned to the old major would silently receive different
content.
uv run pipelines marketplace validate <ns> <name> <spec_dir> # server-side, no publish
uv run pipelines marketplace check <ns> <name> <spec_dir> --identifiers
uv run pipelines marketplace publish <ns> <name> <version> <spec_dir> --changelog "…"check = validate plus network checks (ref against the genome, rsID currency, VRS coverage);
it returns would_publish, the one field to branch on. It has a variant ceiling, so a large module
gets 422 too_many_variants — use validate, which has no network tier and decides publishability.--pack (client-side tar.gz).There is a second, separate destination: the HuggingFace annotator collection, which the app discovers directly. It takes the compiled artifacts rather than the spec, and the two are published independently — no command does both, and that is deliberate for now.
uv run pipelines v1-port publish <module_dir|name> --dry-run # prints the exact file list
uv run pipelines v1-port publish <module_dir|name> # needs HF_TOKEN / `hf auth login`Discovery decides a directory is a module by probing every family in module_config.LEAD_TABLES, so
a module led by a 0.4 table (pharm_variants.parquet, diplotypes.parquet, pgs.parquet, …)
publishes here too — add a new family to that tuple and it becomes discoverable and publishable at
once. Verify with pipelines list-modules, which answers whether the app can see the module rather
than merely whether files landed.
A 0.4-led module is joined against the VCF on rsid + genotype, not by position: the compiler
materializes those families verbatim from their authored CSV and applies resolution.csv to
weights.parquet only, so their chrom/start arrive null. validate and compile both warn
about this per table, naming how many rows are unplaced and how many resolution.csv could place —
the warning is expected on an rsid-authored PGx module, is never a --strict error, and is not
something you can clear by editing the spec. Author the rsid, and expect no matches from a VCF whose
ID column is empty. Such a module also publishes to the registry as trusted: false, which is the
facet reporting that same fact rather than a problem with your module.
validate --strict passesMT/Y; alleles drawn from the locusresolution.csv and literature.csv committed alongside the CSVslicensing.csv present (not sources.csv, and never both) and consistent with license: if a
licensed source was usedmodule.version is a quoted SemVer stringartifact.digest (a re-draft
will not — licensing.csv re-stamps fetched_at, which is inside the digest)© dna-seq, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/module-authoring of dna-seq/just-dna-lite.
Open the folder on GitHubat commit 087f9c2
Module Authoring next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Module Authoring this skilldna-seq/just-dna-lite | 141 | — | ~4.8k | Automated safety check: Notes | AGPL-3.0 | |
| Vdjdb Extractantigenomics/vdjdb-db | 157 | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Nwb ConversionK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Auditing Part11 Trailsmaziyarpanahi/openmed | 5.5k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Generate CodebookAperivue/medsci-skills | 329 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Marker Dominance MapperClawBio/ClawBio | 1.2k | — | ~1.6k | Automated safety check: Pass | MIT |
antigenomics/vdjdb-db
Extract TCR:pMHC specificity records from raw submission sources - supplementary XLS/CSV tables, PDF manuscripts, 10x Genomics contig and clonotype files, AIRR Rearrangement TSVs, Adaptive ImmunoSEQ…
K-Dense-AI/scientific-agent-skills
Converts neuroscience acquisition data to Neurodata Without Borders files with NeuroConv and PyNWB, preserves metadata and timebases, checks evidence-based clock alignment, and produces schema…
maziyarpanahi/openmed
Generates and verifies 21 CFR Part 11-style audit trails — who/what/when, electronic signatures, and tamper-evidence — for OpenMed pipelines in GxP and clinical-trial (GCP) settings.
Aperivue/medsci-skills
A skill your agent uses when a tabular dataset (CSV, Excel, Parquet, Stata, SAS) needs a data dictionary.
ClawBio/ClawBio
Deterministic marker-dominance region mapping from local spot-count CSVs
ClawBio/ClawBio
Query metadata and download data from EMBL-EBI BioStudies, the database that describes biological studies and links their data across collections (ArrayExpress, BioImages, BioModels, EGA-linked…
Author, resolve, compile and publish a just-dna annotation module — the spec directory layout, the CSV column contracts and vocabularies, the enrich→compile pipeline, and the checks that decide…. Module Authoring is an agent skill from dna-seq/just-dna-lite. Author, resolve, compile and publish a just-dna annotation module — the spec directory layout, the CSV column contracts and vocabularies, the enrich→compile pipeline, and the checks that decide whether a module will publish.
Module Authoring fits situations like: creating a new annotation module; editing an existing spec (variants.csv; pharmvariants.csv; modulespec.yaml).
Run `npx skills add dna-seq/just-dna-lite --skill module-authoring -a claude-code`. Or copy the skill folder (.claude/skills/module-authoring in dna-seq/just-dna-lite) into .claude/skills/module-authoring in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dna-seq/just-dna-lite --skill module-authoring -a codex`. Or copy the skill folder (.claude/skills/module-authoring in dna-seq/just-dna-lite) into .agents/skills/module-authoring in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dna-seq/just-dna-lite --skill module-authoring -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/module-authoring, .gemini/skills/module-authoring, .github/skills/module-authoring and .opencode/skills/module-authoring in your project.
Going by SKILL.md and its folder, Module Authoring needs the command-line tools its instructions call (uv) and credentials named HF_TOKEN.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Module Authoring is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Module Authoring: Vdjdb Extract (antigenomics/vdjdb-db, 157 stars), Nwb Conversion (K-Dense-AI/scientific-agent-skills, 48k stars), Auditing Part11 Trails (maziyarpanahi/openmed, 5.5k stars) and Generate Codebook (Aperivue/medsci-skills, 329 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dna-seq (a GitHub organization) maintains it in dna-seq/just-dna-lite, which has 141 GitHub stars. The repository was last updated on September 28, 2026.
Source: dna-seq/just-dna-lite on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.