Alphagenome Single Variant Analysis
google-deepmind/science-skills
Analyzes genetic variant effects on gene expression (RNA-seq), chromatin accessibility (DNASE), histone marks (ChIP), and transcription factors using the AlphaGenome API.
Builds and analyzes phylogenetic trees using MAFFT multiple sequence alignment, IQ-TREE maximum likelihood with ModelFinder and branch support, and FastTree approximate inference.
$ npx skills add K-Dense-AI/scientific-agent-skills --skill phylogenetics -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install K-Dense-AI/scientific-agent-skills phylogenetics --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/K-Dense-AI/scientific-agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/phylogenetics .claude/skills/phylogenetics && 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 "phylogenetics" agent skill from https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/phylogenetics into .claude/skills/phylogenetics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "phylogenetics", 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/K-Dense-AI/scientific-agent-skills/tree/main/skills/phylogeneticsType 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 K-Dense-AI/scientific-agent-skills --skill phylogenetics -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install K-Dense-AI/scientific-agent-skills phylogenetics --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/K-Dense-AI/scientific-agent-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/phylogenetics .agents/skills/phylogenetics && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "phylogenetics" agent skill from https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/phylogenetics into .agents/skills/phylogenetics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "phylogenetics", 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 K-Dense-AI/scientific-agent-skills --skill phylogenetics -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install K-Dense-AI/scientific-agent-skills phylogenetics --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/K-Dense-AI/scientific-agent-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/phylogenetics .cursor/skills/phylogenetics && 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 "phylogenetics" agent skill from https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/phylogenetics into .cursor/skills/phylogenetics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "phylogenetics", 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/K-Dense-AI/scientific-agent-skills.git --path skills/phylogenetics--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 K-Dense-AI/scientific-agent-skills --skill phylogenetics -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install K-Dense-AI/scientific-agent-skills phylogenetics --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/K-Dense-AI/scientific-agent-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/phylogenetics .gemini/skills/phylogenetics && 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 "phylogenetics" agent skill from https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/phylogenetics into .gemini/skills/phylogenetics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "phylogenetics", 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 K-Dense-AI/scientific-agent-skills phylogeneticsInstalls 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 K-Dense-AI/scientific-agent-skills --skill phylogenetics -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/K-Dense-AI/scientific-agent-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/phylogenetics .github/skills/phylogenetics && 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 "phylogenetics" agent skill from https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/phylogenetics into .github/skills/phylogenetics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "phylogenetics", 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 K-Dense-AI/scientific-agent-skills --skill phylogenetics -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install K-Dense-AI/scientific-agent-skills phylogenetics --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/K-Dense-AI/scientific-agent-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/phylogenetics .opencode/skills/phylogenetics && 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 "phylogenetics" agent skill from https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/phylogenetics into .opencode/skills/phylogenetics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "phylogenetics", 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.
phylogeneticsBuilds and analyzes phylogenetic trees using MAFFT multiple sequence alignment, IQ-TREE maximum likelihood with ModelFinder and branch support, and FastTree approximate inference.
Phylogenetics is an agent skill from K-Dense-AI/scientific-agent-skills. Builds and analyzes phylogenetic trees using MAFFT multiple sequence alignment, IQ-TREE maximum likelihood with ModelFinder and branch support, and FastTree approximate inference. Uses ETE3 for tree summaries and visualization. Applies to homologous nucleotide or protein sequences, microbial gene trees, protein families, and cautiously interpreted dated phylogenies.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts and reference files (for example `references/iqtree_inference.md` and `scripts/phylogenetic_analysis.py`). Compatibility notes: Requires MAFFT and IQ-TREE 3 or FastTree executables. Optional tree summaries use Python 3.12 and ete3 3.1.3; rendering also needs PyQt5. Optional trimming…
It sits in Research & Science, covering Bioinformatics. It works with Python. The repository describes itself as: Turn any AI agent into an AI Scientist. The 1 Agent Skills library for science, used by 250,000+ scientists worldwide. 177 ready-to-use validated skills plus 100+ scientific… The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 92ace75. 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.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
uvpythoncondaFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
mafft.cbrc.jpiqtree.github.ioetetoolkit.orggithub.commorgannprice.github.iovicfero.github.ioFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires MAFFT and IQ-TREE 3 or FastTree executables. Optional tree summaries use Python 3.12 and ete3 3.1.3; rendering also needs PyQt5. Optional trimming needs trimAl. Network access is required for installation, not local inference.
From compatibility in the SKILL.md frontmatter.
Phylogenetics loads about 2.3k tokens when it runs, and up to ~4.2k if it reads all its reference files. Until then it costs about 96 tokens; SKILL.md has 853 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 found no risky patterns in SKILL.md.
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); the scripts in this folder are not scanned.
The full file from K-Dense-AI/scientific-agent-skills at commit 92ace75, republished under its MIT licence (© K-Dense-AI). 853 words, ~2,347 tokens.
.claude/skills/phylogenetics/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Use this workflow for an alignment of homologous loci or proteins, a gene tree, branch support, and an interpretable tree figure. Multi-locus partitioning, concordance factors, ancestral states and dating are covered in IQ-TREE reference.
A gene tree does not establish a species tree, transmission direction, or horizontal transfer by itself. Sampling dates alone do not justify a molecular clock.
Reviewed against current official documentation on 2026-10-01. The executed
smoke workflow used MAFFT 7.526, IQ-TREE 3.1.4, FastTree 2.2.0 and
ETE3 3.1.3 on Python 3.12. ETE3 remains deliberate for this helper; ETE4 is a
separate API and is not a drop-in replacement. ETE3 imports cgi, removed in
Python 3.13. The native executables are not Python packages.
Illustrative installation commands; verify executable versions after installation:
conda create -n phylo -c conda-forge -c bioconda mafft iqtree fasttree trimal
conda activate phylo
uv venv --python 3.12 .venv-phylo
uv pip install --python .venv-phylo/bin/python ete3==3.1.3 numpy six
# Optional rendering backend; it can require a working Qt platform plugin.
uv pip install --python .venv-phylo/bin/python PyQt5The helper defaults to iqtree3 and FastTree; use --iqtree-bin iqtree2 for an
existing IQ-TREE 2 installation, or --fasttree-bin fasttree if that is the
installed name. Version 2 compatibility is source-checked, not runtime-tested
in this refresh. All analyses are local; this skill invokes no HTTP API or remote
inference endpoint.
--type nt or --type aa. The helper sends -st DNA or -st AA to
IQ-TREE and selects nucleotide/protein FastTree flags explicitly.These MAFFT commands were exercised on small synthetic FASTA data:
mafft --auto --thread 1 --inputorder sequences.fasta > aligned.fasta
# L-INS-i: locally alignable homologs, typically small datasets.
mafft --localpair --maxiterate 1000 --thread 1 --inputorder sequences.fasta > linsi.fasta
# E-INS-i: homologs with large internal gaps.
mafft --genafpair --maxiterate 1000 --thread 1 --inputorder sequences.fasta > einsi.fasta
# FFT-NS-i (two refinement cycles), then FFT-NS-2 (progressive).
mafft --retree 2 --maxiterate 2 --thread 1 --inputorder sequences.fasta > fftnsi.fasta
mafft --retree 2 --maxiterate 0 --thread 1 --inputorder sequences.fasta > fftns.fastaauto delegates the choice to MAFFT. Sequence count alone is not an accuracy
criterion. Single-thread runs simplify reproducibility; MAFFT iterative refinement
with multiple threads can produce different results between runs.
Trimming is optional and must be justified by alignment quality, not assumed to improve every tree. The following trimAl command is documentation-checked and illustrative; trimAl was not installed for this review:
trimal -in aligned.fasta -out trimmed.fasta -automated1 -fastaRecord retained columns/taxa and compare sensitivity to trimming. A failed trim must stop the trimming step; do not silently copy the untrimmed input under a “trimmed” filename. The bundled helper does not trim automatically.
Use the maintained helper instead of recreating subprocess wrappers. From the
skill directory, with the executable names on PATH:
python scripts/phylogenetic_analysis.py sequences.fasta --type nt --threads 1 \
--bootstrap 1000 --seed 42 --output-dir results --no-visualization
# Use a reviewed alignment (including any explicit trimming) without realigning.
python scripts/phylogenetic_analysis.py aligned.fasta --aligned --type nt \
--threads 1 --output-dir reviewed --no-visualization
# Protein FastTree alternative; --threads applies to MAFFT/IQ-TREE, not FastTree.
python scripts/phylogenetic_analysis.py proteins.fasta --type aa --fasttree \
--threads 1 --output-dir fast_protein --no-visualizationThe standard IQ-TREE command uses -m MFP (ModelFinder including FreeRate
models), -B 1000 (UFBoot) and --alrt 1000. -m TEST remains supported but
searches a narrower model set. Use --model for a scientifically justified fixed
model. IQ-TREE checkpoints are preserved; --redo explicitly restarts and
replaces results. Use a new output prefix when data or model assumptions change.
FastTree uses -nt -gtr -gamma for DNA and -lg -gamma for proteins. Its search
uses the CAT approximation before Gamma20 rescaling; it is not a full Gamma-model
ML search. JTT is FastTree's protein default (no -jtt flag); nucleotide JC is
selected by -nt without -gtr. FastTree defaults to SH-like local support
in the 0–1 range, not UFBoot percentages. Use workload-based benchmarking,
not a universal taxon threshold, to decide between inference tools.
Read .iqtree and .log, not only the image. In the default combined test,
IQ-TREE writes slash-delimited SH-aLRT/UFBoot labels; verify their order in the
report. UFBoot >=95 and SH-aLRT >=80 are common screening thresholds, not proof
of correctness or posterior probabilities. Do not apply a standard-bootstrap
70% rule to UFBoot. Model misspecification, alignment error and sampling can
produce strongly supported wrong branches; consider -bnni when assessing
model violations and UFBoot overestimation.
Reversible substitution models do not infer the evolutionary root. The helper
preserves the supplied tree orientation unless an explicit --outgroup or
--midpoint display choice is made. Select outgroups biologically; midpoint
rooting assumes sufficiently clock-like path lengths and is only a heuristic.
--outgroup passes one taxon to IQ-TREE and verifies that it exists. Display
rerooting preserves support labels on their splits. Neither display option
creates a dated phylogeny or overwrites the original inferred tree.
Primary outputs are <prefix>.treefile (IQ-TREE) or <prefix>.tree (FastTree),
the alignment, and IQ-TREE's .iqtree, .log, .ckp.gz, plus optional support
files. .model.gz caches model-selection work; it is not an estimated model
parameter report. Keep these artifacts together.
ETE must read combined IQ-TREE labels as internal names with format=1;
its default numeric-support parser cannot parse 95.2/99. The helper renders
the original text labels, not ETE's default support value. Branch statistics
use all original non-root edges, including zero-length edges, without rerooting.
# Run from the skill directory in the ETE3 environment.
import sys
sys.path.insert(0, "scripts")
from phylogenetic_analysis import load_tree, tree_summary
tree = load_tree("results/sequences.treefile")
print(tree.get_leaf_names())
print(tree_summary("results/sequences.treefile"))To request rendering, omit --no-visualization. ETE3 needs PyQt5; on a headless
host the appropriate Qt platform plugin must be available. Missing rendering
support leaves the inferred tree intact and is reported explicitly. Qt rendering
was not exercised in this review. FigTree or iTOL can also display Newick; verify
that a viewer retains the support labels and branch-length scale.
© K-Dense-AI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts, references) in skills/phylogenetics of K-Dense-AI/scientific-agent-skills.
Open the folder on GitHubat commit 92ace75
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in K-Dense-AI/scientific-agent-skills, which our catalogue first saw on October 7, 2026.
Phylogenetics 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 |
|---|---|---|---|---|---|---|
| Phylogenetics this skillK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Alphagenome Single Variant Analysisgoogle-deepmind/science-skills | 3.2k | 2 repos | ~3k | Automated safety check: Notes | Apache-2.0 | |
| Singlecell Qcxuzhougeng/wisp-science | 1k | — | ~1.6k | Automated safety check: Pass | AGPL-3.0 | |
| Trackplotygidtu/trackplot | 109 | — | ~1.9k | Automated safety check: Pass | BSD-3-Clause | |
| UniProt Database Accessdavila7/claude-code-templates | 32k | 14 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Spatial TranscriptomicsQING1105/ezST | 101 | — | ~1.4k | Automated safety check: Pass | MIT |
google-deepmind/science-skills
Analyzes genetic variant effects on gene expression (RNA-seq), chromatin accessibility (DNASE), histone marks (ChIP), and transcription factors using the AlphaGenome API.
xuzhougeng/wisp-science
A skill your agent uses when designing, reviewing, or implementing single-cell RNA-seq QC in Python or R with a human-in-the-loop, data-driven approach.
ygidtu/trackplot
Generate sashimi-style genome visualization plots (coverage, line, heatmap, IGV read-by-read, HiC, circRNA, motif) from BAM/bigWig/depth/HiC inputs.
davila7/claude-code-templates
Queries the UniProt REST API directly to search proteins, fetch FASTA sequences, map IDs between databases and read Swiss-Prot and TrEMBL entries.
QING1105/ezST
End-to-end 10x Visium spatial transcriptomics analysis workflow with staged execution and human review gates.
davila7/claude-code-templates
Guides use of deepTools on sequencing data: BAM to bigWig conversion, QC, sample correlation, and heatmaps or profiles around TSS and peaks for ChIP-seq, RNA-seq and ATAC-seq.
K-Dense-AI/scientific-agent-skills
Estimates reaction fluxes inside cells from steady-state carbon-13 labeling data with a bundled mfapy-based solver, and reports which fluxes the data pin down.
K-Dense-AI/scientific-agent-skills
Plans, runs, and documents analytical method validation, verification, or transfer studies under ICH Q2(R2)/Q14, USP, ICH M10, CLSI EP, or ISO/IEC 17025.
K-Dense-AI/scientific-agent-skills
Runs Cantera constant-volume or constant-pressure ignition simulations and reports temperature-based ignition delay with mechanism provenance and checks.
K-Dense-AI/scientific-agent-skills
Predicts how small molecules bind to a protein with DiffDock, covering batch docking, pose ranking by confidence and checks on the results; not for binding affinity.
K-Dense-AI/scientific-agent-skills
Plans and audits runs of the HypoGeniC and HypoRefine packages, which propose hypotheses from labeled text datasets, with local checks before any model call.
K-Dense-AI/scientific-agent-skills
Organizes scope, controlled documents, risk files and traceability into draft evidence for human review against ISO 13485, 14971, 17025 and 15189.
Works with
Categories
Builds and analyzes phylogenetic trees using MAFFT multiple sequence alignment, IQ-TREE maximum likelihood with ModelFinder and branch support, and FastTree approximate inference. Phylogenetics is an agent skill from K-Dense-AI/scientific-agent-skills. Builds and analyzes phylogenetic trees using MAFFT multiple sequence alignment, IQ-TREE maximum likelihood with ModelFinder and branch support, and FastTree approximate inference.
Phylogenetics fits situations like: tasks that involve Bioinformatics.
Run `npx skills add K-Dense-AI/scientific-agent-skills --skill phylogenetics -a claude-code`. Or copy the skill folder (skills/phylogenetics in K-Dense-AI/scientific-agent-skills) into .claude/skills/phylogenetics in your project. Claude Code loads it when a task matches its description.
Run `npx skills add K-Dense-AI/scientific-agent-skills --skill phylogenetics -a codex`. Or copy the skill folder (skills/phylogenetics in K-Dense-AI/scientific-agent-skills) into .agents/skills/phylogenetics 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 K-Dense-AI/scientific-agent-skills --skill phylogenetics -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/phylogenetics, .gemini/skills/phylogenetics, .github/skills/phylogenetics and .opencode/skills/phylogenetics in your project.
Going by SKILL.md and its folder, Phylogenetics needs Python for the scripts in its folder and the command-line tools its instructions call (uv, python and conda). Our summary lists: Python 3. Compatibility (from SKILL.md): Requires MAFFT and IQ-TREE 3 or FastTree executables. Optional tree summaries use Python 3.12 and ete3 3.1.3; rendering also needs PyQt5. Optional trimming needs trimAl. Network access is required for installation, not local inference..
SKILL.md names 6 domains. As links in the text: mafft.cbrc.jp, iqtree.github.io, etetoolkit.org, github.com, morgannprice.github.io and vicfero.github.io. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Phylogenetics is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Phylogenetics: Alphagenome Single Variant Analysis (google-deepmind/science-skills, 3.2k stars), Singlecell Qc (xuzhougeng/wisp-science, 1k stars), Trackplot (ygidtu/trackplot, 109 stars) and UniProt Database Access (davila7/claude-code-templates, 32k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
K-Dense-AI (a GitHub organization) maintains it in K-Dense-AI/scientific-agent-skills, which has 48,095 GitHub stars. The repository holds 153 skills in this directory. The repository was last updated on October 5, 2026.
Source: K-Dense-AI/scientific-agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.