| name | antibody-engineering |
| description | Number antibody variable domains, annotate CDRs, and assess developability from sequence. Use this skill to apply IMGT, Kabat, Chothia, Martin, or AHo numbering with ANARCI, delimit CDRs and framework regions, scan for chemical liabilities (N-glycosylation sequons, deamidation NG, isomerisation DG, oxidation, unpaired cysteine, fragmentation), compute pI, net charge, extinction coefficient and hydrophobicity, and plan humanisation by CDR grafting. Also trigger on antibody, nanobody, VHH, scFv, Fab, CDR, framework, ANARCI, abnumber, IgBLAST, OAS, SAbDab, humanization, Vernier residues, or developability. |
| license | MIT |
| allowed-tools | Read Write Edit Bash |
| compatibility | scan_liabilities.py and physchem_profile.py need only Python 3.10+ and the standard library. number_antibody.py additionally needs anarci (pip install anarci) and HMMER with hmmscan on PATH (conda install -c bioconda hmmer, or brew install hmmer). No GPU, no network, no API key. |
| metadata | {"version":"1.0","skill-author":"K-Dense Inc.","openclaw":{"emoji":"🅨","homepage":"https://opig.stats.ox.ac.uk/webapps/sabdab-sabpred/"},"hermes":{"category":"research"}} |
Antibody engineering
Sequence-level analysis for antibodies, nanobodies, and other variable-domain formats: numbering,
CDR annotation, chemical liabilities, and physicochemical properties. All of it runs in seconds
and rules out a surprising fraction of problems before a model or a wet-lab week is spent.
Read references/numbering-schemes.md before quoting any
residue position, references/developability.md before acting on a
liability, references/humanization-and-design.md for
grafting and humanness, and references/tools.md for the wider ecosystem.
A residue number means nothing without its scheme
"Residue 52" is a different residue in IMGT, Kabat, and Chothia numbering, and the CDRs they
define overlap only partially. The same trastuzumab heavy chain:
IMGT CDRH1 GFNIKDTY (8) CDRH2 IYPTNGYT (8) CDRH3 SRWGGDGFYAMDY (13)
Kabat CDRH1 DTYIH (5) CDRH2 RIYPTNGYTRYADSVKG (17) CDRH3 WGGDGFYAMDY (11)
Neither is wrong. Use IMGT by default — one definition for both chains, structurally
principled gaps, and the germline database is IMGT-numbered — and convert to Kabat when matching
legacy literature. State the scheme every time.
python skills/antibody-engineering/scripts/number_antibody.py antibody.fasta
python skills/antibody-engineering/scripts/number_antibody.py antibody.fasta --scheme kabat
python skills/antibody-engineering/scripts/number_antibody.py antibody.fasta \
--format regions --out regions.tsv
# trastuzumab_VH: chain H, closest germline human_H (human), E=3e-60
# variable domain spans input residues 1-120
CDRH1 8 GFNIKDTY
CDRH2 8 IYPTNGYT
CDRH3 13 SRWGGDGFYAMDY
Needs pip install anarci plus HMMER (hmmscan on PATH). Note that ANARCI's species call is
the closest germline, not an annotation — a humanised antibody reports human because its
frameworks are human, which says nothing about its CDRs.
Liabilities, weighted by region
python skills/antibody-engineering/scripts/scan_liabilities.py antibody.fasta \
--regions regions.tsv --min-severity high
# trastuzumab_VH: 120 residues, 3 finding(s)
[critical] deamidation (NG) 'NG' at 55 (CDRH2)
the fastest-deamidating motif; Asn -> iso-Asp/Asp changes charge and can
abolish binding, and it is the usual cause of potency loss on storage
[critical] isomerisation (DG) 'DG' at 102 (CDRH3)
Asp-Gly isomerises to iso-Asp through a succinimide intermediate