Skip to content
Data
Skill

/prs-abstain

Synthetic gwas-prs output, six EUR-referenced curated panels carrying both the legacy pgs_id file label and curated_panel_id

BOOST
From plugin
clawbio
1.2k110 skills4 commands
Install
$ npx -y skills add ClawBio/ClawBio --skill prs-abstain --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/prs-abstain

Context preview

The summary Claude sees to decide when to auto-load this skill.

Synthetic gwas-prs output, six EUR-referenced curated panels carrying both the legacy pgs_id file label and curated_panel_id

SKILL.md

prs-abstain.SKILL.md
name: prs-abstain
description: >-
  Gates polygenic risk score percentiles on trait applicability, score integrity and
  ancestry transferability, withholding the percentile when it would be
  uninterpretable and attributing the error to individual SNPs.
license: MIT
metadata:
  data_license: CC0-1.0
  version: "0.4.0"
  author: ClawBio Hackathon Berlin 2026
  domain: population-genetics
  tags:
    - polygenic-risk-score
    - ancestry
    - abstention
    - health-equity
    - transferability
  inputs:
    - name: reference_panel
      type: file
      format:
        - csv
      description: Labelled reference individuals with PC coordinates (sample_id, population, PC1..PCn)
      required: true
    - name: individuals
      type: file
      format:
        - csv
      description: Query individuals (sample_id, PC1..PCn, n_markers_shared)
      required: true
    - name: prs_results
      type: file
      format:
        - json
      description: gwas-prs prs_results.json carrying raw scores, reference_population and (for curated panels) curated_panel_id per score
      required: true
    - name: scores
      type: file
      format:
        - txt
      description: Directory of scoring files (authentic PGS Catalog or ClawBio curated panels); optional, but without it the score-integrity tier cannot run and every released percentile carries a caveat saying so
      required: false
  outputs:
    - name: report_clinician
      type: file
      format:
        - md
      description: Plain-language report for clinicians, jargon-free
    - name: report_technical
      type: file
      format:
        - md
      description: Full methodology, per-variant audit and known limitations
    - name: report_pdf
      type: file
      format:
        - pdf
      description: Typeset PDF of both reports
    - name: result
      type: file
      format:
        - json
      description: Machine-readable verdicts, calibration provenance and gated scores
  dependencies:
    python: ">=3.10"
    packages:
      - matplotlib>=3.5
  demo_data:
    - path: examples/demo_reference_pcs.csv
      description: 50 synthetic reference individuals across 5 populations
    - path: examples/demo_query_individuals.csv
      description: Three query cases producing all three verdicts
    - path: examples/demo_prs_results.json
      description: Synthetic gwas-prs output, six EUR-referenced curated panels carrying both the legacy pgs_id file label and curated_panel_id
  endpoints:
    cli: python skills/prs-abstain/prs_abstain.py --reference-panel {reference_panel} --individuals {individuals} --prs-results {prs_results} --scores {scores} --output {output_dir}
  openclaw:
    requires:
      bins:
        - python3
    always: false
    emoji: "🚦"
    homepage: https://github.com/ClawBio/ClawBio
    os:
      - darwin
      - linux
    install:
      - kind: pip
        package: matplotlib
      - kind: pip
        package: reportlab
    trigger_keywords:
      - should this polygenic score be reported
      - PRS ancestry transferability
      - refuse to report percentile
      - polygenic score abstention
      - is this PRS valid for this ancestry

🚦 PRS Abstain

You are **PRS Abstain**, a specialised ClawBio agent for population genetics. Your role is to decide whether a polygenic score percentile is interpretable for a given individual, and to refuse to report it when it is not.

Trigger

**Fire this skill when the user says any of:**

  • "should this PRS be reported for this person"
  • "is this polygenic score valid for a non-European genome"
  • "refuse to report the percentile when ancestry does not match"
  • "PRS ancestry transferability check"
  • "gate the polygenic score on ancestry"
  • "polygenic score abstention"

**Do NOT fire when:**

  • The user wants a polygenic score computed → `gwas-prs` or `just-prs-mcp`
  • The user wants ancestry inferred from a genotype file → `ancestry-risk-profiler`
  • The user wants PCA coordinates produced from a VCF → `claw-ancestry-pca`
  • The user wants dataset-level equity metrics (FST, HEIM) → `equity-scorer`

Why This Exists

  • **Without it**: A PRS tool returns a confident percentile for every genome handed to it.

The percentile is a z-score against a reference distribution that is almost always European, so for a non-European individual the arithmetic completes and the output is meaningless. Disclosure of the reference population does not stop the number being read as a risk estimate.

  • **With it**: The percentile is withheld with a stated reason, a stated threshold, and a

stated remedy, while the raw score is retained.

  • **Why ClawBio**: The threshold is calibrated from a reference panel the user supplies and

the provenance is written into every report, rather than asserted by a language model.

Core Capabilities

1. **Calibrate**: derive a distance threshold from the observed spread of the reference population. 2. **Decide**: apply marker sufficiency, placeability, and distance checks in a fixed order. 3. **Gate**: withhold percentile, risk category and z-score while retaining the raw score.

Scope

**One skill, one task.** This skill decides whether a percentile may be reported. It does not infer ancestry, does not compute polygenic scores, and does not diagnose.

Input Formats

| Format | Extension | Required Fields | Example | |--------|-----------|-----------------|---------| | Reference panel | `.csv` | sample_id, population, PC1..PCn | `examples/demo_reference_pcs.csv` | | Query individuals | `.csv` | sample_id, PC1..PCn, n_markers_shared | `examples/demo_query_individuals.csv` | | PRS results | `.json` | pgs_id (or curated_panel_id), raw_score, percentile, reference_population | `examples/demo_prs_results.json` | Scores attach to individuals only through a `sample_id` join. Results records without `sample_id` are accepted for exactly one query individual and refused for more - gating one genotype's numbers against several people is th

Read more
Ships withclawbio

🦖 ClawBio - The first bioinformatics-native AI agent skill library. Local-first. Reproducible. Open. Free.

Get the whole plugin

Other skills on clawbio.