Target Safety logo

Target Safety

Organization
K-Dense-AI
target-safety

Assemble the human genetic evidence for and against a target before a programme commits to it — the evidence class that most improves the odds of surviving clinical development. Use this skill to pull gnomAD constraint metrics (LOEUF, pLI, observed/expected) that show whether loss of function is tolerated in people, retrieve GWAS Catalog associations and fine-mapped credible sets for a gene, and read a natural human knockout as a safety readout. Also trigger on gnomAD, LOEUF, pLI, loss-of-function intolerance, mutational constraint, GWAS Catalog, credible set, human knockout, genetic support, or target safety dossier.

Overview

PublisherK-Dense-AI
Repositorydrug-discovery-agent-skills
Skill nametarget-safety
Stars
51
Forks
5
Bundled files
7
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 7 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by K-Dense-AI on GitHub. Read the source before you install it.

Installation

Install the Target Safety AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/K-Dense-AI/drug-discovery-agent-skills/tree/main/skills/target-safety
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/K-Dense-AI/drug-discovery-agent-skills.git /tmp/drug-discovery-agent-skills
mkdir -p .claude/skills
cp -r /tmp/drug-discovery-agent-skills/skills/target-safety .claude/skills/target-safety
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Target Safety in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Target Safety on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Target Safety is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Target Safety Assessment

Two public datasets answer the question that comes before every programme: what happens to people who naturally have less of this protein? gnomAD says whether such people exist. The GWAS Catalog says what else changes when they do. Targets with human genetic support are roughly twice as likely to survive clinical development, and this is the only evidence class available before a molecule does.

Services: https://gnomad.broadinstitute.org/api (GraphQL, POST) · https://www.ebi.ac.uk/gwas/rest/api/v2 (REST). Both unauthenticated. Checked against: gnomAD v4.1 and the live GWAS Catalog v2 API, August 2026.

Read references/gnomad-constraint.md before quoting a constraint number, references/gwas-catalog.md before writing a query by hand, and references/interpreting-genetic-evidence.md before drawing a conclusion — that one is judgement, not syntax.

The three scripts

ScriptAnswers
gnomad_constraint.pyDo healthy humans exist who have lost this protein?
gwas_evidence.pyWhat traits is this gene associated with, and how solidly?
safety_dossier.pyBoth at once, as a verdict with its inputs beside it

A drug is a chemical phenocopy of a loss-of-function variant

That equivalence is the whole idea. If people carrying LoF variants in a gene are healthy and common, inhibiting the protein is likely survivable. If those variants have been removed from the population by selection, that is a warning you can read years before a tox study.

bash
python skills/target-safety/scripts/gnomad_constraint.py compare LRRK2 PCSK9 SCN2A KRAS HTT
symbol  loeuf   band            pLI        obs_lof  exp_lof
SCN2A   0.154   constrained     1          20       188.7
KRAS    0.2264  constrained     0.9998     1        20.95
HTT     0.3379  constrained     1          104      362.3
LRRK2   0.7537  tolerant        1.317e-43  203      302.6
PCSK9   1.144   unconstrained   2.765e-18  57       62.12

obs_lof against exp_lof is the whole argument. KRAS: one observed loss-of-function variant where twenty-one were expected. PCSK9: fifty-seven observed against sixty-two expected — no depletion at all. Human PCSK9 knockouts are healthy and have low LDL cholesterol, which is exactly why evolocumab and alirocumab exist. The constraint table said so before the drugs did.

Use LOEUF, not pLI. pLI is a posterior forced toward 0 or 1 and cannot rank two intolerant genes; LOEUF is continuous and carries its uncertainty in the value. Note how pLI calls both SCN2A and HTT exactly 1 while LOEUF separates them by a factor of two.

An unrecognised GWAS filter returns the entire catalogue

This is the trap to get right on the association side:

GET /associations?mappedGene=LRRK2   ->  93 associations
GET /associations?gene=LRRK2         ->  1142122 associations

Both are HTTP 200. gene is not a parameter, so it was silently dropped and the response is the whole catalogue. Nothing says the filter was ignored. gwas_get() validates parameter names locally and refuses anything unknown, because there is no server-side signal to react to.

Association is positional, not causal

bash
python skills/target-safety/scripts/gwas_evidence.py traits LRRK2
trait                     best_p    associations  studies  sole_mapping
bone density              1e-300    1             1        0
Parkinson disease         4e-148    23            18       18
cathepsin L1 measurement  4e-39     2             2        0

The strongest p-value in that table is not the answer. Bone density at 1e-300 has zero associations mapping to LRRK2 alone — the causal gene at that locus is almost certainly a neighbour. Parkinson disease has eighteen sole-mapping associations across eighteen studies. Ranking by p-value alone picks the wrong one.

Never rank by association count either: the same locus is rediscovered by every new cohort, so a count measures genotyping effort.

The combined readout

bash
python skills/target-safety/scripts/safety_dossier.py gene PCSK9 LRRK2 HTT
symbol  loeuf   band           genome_wide_traits  sole_mapped_hits  verdict
PCSK9   1.144   unconstrained  44                  115               genetically supported
LRRK2   0.7537  tolerant       37                  39                genetically supported
HTT     0.3379  constrained    59                  92                associated but constrained

The two axes are independent and mean opposite things. Tolerant plus associated is the pattern that most improves the odds. Constrained plus associated — HTT — means the biology is real but systemic inhibition should expect mechanism-based toxicity, which is precisely the live debate about lowering wild-type huntingtin.

Four ways this evidence misleads

  1. Absent constraint is missing data, not zero. A gene with too little coverage has no estimate. Reporting that as LOEUF 0 inverts the conclusion. The scripts return unknown.
  2. Constraint only speaks to inhibition. An agonist is not phenocopied by loss of function.
  3. Late-onset effects are invisible. Selection acts on reproductive fitness, so a gene whose loss causes disease at seventy looks unconstrained — in a population that is mostly patients.
  4. Association gives no direction. Whether to inhibit or activate needs an allelic series or Mendelian randomisation, not the association table.

When to stop using these APIs

Direction of effect, effect size, and causal-gene resolution all need summary statistics rather than the association table — fine-mapping, colocalisation, and MR with TwoSampleMR. For variant-level detail, homozygous LoF counts, and per-population frequencies, use the gnomAD browser directly.

Composing with the rest of the bundle

  • open-targets → alongside: aggregated evidence plus L2G scoring, which resolves some of the causal-gene ambiguity this API leaves open.
  • depmap → alongside: cellular essentiality is a different question from human constraint — a gene can be pan-essential in culture and unconstrained in people.
  • uniprot-rcsb → before: resolve an alias to a current HGNC symbol; neither API resolves them.
  • openfda → after: for a target already drugged, what actually happened in people.
  • clinicaltrials → alongside: whether anyone has taken the genetic hypothesis into a trial.

Reporting results honestly

Give LOEUF with its band and the observed/expected counts behind it. Give the best p-value, the number of independent studies, and how many associations map to the gene alone. Call the verdict a heuristic and show both axes. Say "loss of function is tolerated in humans", not "the target is safe"; say "this locus is associated with", not "this gene causes". Genetic support roughly doubles the odds of approval — from low to less low.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Target Safety AI skill do?

Assemble the human genetic evidence for and against a target before a programme commits to it — the evidence class that most improves the odds of surviving clinical development. Use this skill to pull gnomAD constraint metrics (LOEUF, pLI, observed/expected) that show whether loss of function is tolerated in people, retrieve GWAS Catalog associations and fine-mapped credible sets for a gene, and read a natural human knockout as a safety readout. Also trigger on gnomAD, LOEUF, pLI, loss-of-function intolerance, mutational constraint, GWAS Catalog, credible set, human knockout, genetic suppor...

Why use Target Safety on TypingMind?

Because you install it once and use it with any model. Target Safety is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Target Safety in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/K-Dense-AI/drug-discovery-agent-skills/tree/main/skills/target-safety. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Target Safety?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Target Safety?

As many as you like. As long as a model supports skills, you can use Target Safety with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Target Safety AI skill free?

Yes. It is published on GitHub by K-Dense-AI under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇