Create a Mechanism Module
SkillDev toolsSkill for creating a new mechanism module in kb/modules/ (a conserved pathological process that recurs across disorders). Use when the user asks to create/curate a module, add an Xogenesis (pathological-structure-formation) module, or factor a recurrent mechanism out of several disorders. Covers the module schema shape, the trigger→consequence node chain, the treatment target_mechanisms drug pattern, the Xogenesis open-ontology anchor convention, evidence discipline, validation, and registration.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Create a Mechanism Module skill
What this skill tells your AI
The instructions your AI receives, as published by monarch-initiative/dismech in .claude/skills/create-module/SKILL.md and read by ahel’s review.
When to use
- The user asks to create a new
kb/modules/*.yamlmodule. - A conserved mechanism (a final-common pathway, a recurrent downstream
convergence point, a shared drug-target pattern) recurs across ≥2 disorders and
is worth checking for consistency via
conforms_to. - The user asks for an Xogenesis module — the formation of a pathological material anatomical entity (cyst, calculus, granuloma, thrombus, amyloid deposit, atheroma, neoplasm, fibrous scar).
Read docs/primers/modules-and-conformance.md first for the conformance mental
model (conformance is a consistency check, not DRY inheritance).
Does it clear the module bar?
Only create a module when there is one conserved mechanism reducible to a
short linear causal chain with one rate-limiting "key conformance target"
node that every conformer funnels through. If the candidate is mechanistically
heterogeneous (many unrelated pathways to the same label), it is not a
module — consider a Grouping (SHARED_PHENOTYPE) instead.
Module shape
- Validates against the
Diseaseclass withcategory: Module. - Top-level:
name,description,category: Module,creation_date,notes,pathophysiology. Optional:module_categories,treatments,mechanistic_hypotheses,discussions. module_categoriestags the areas of study the module is relevant to (ModuleCategoryEnum— TOXICOLOGY, PHARMACOLOGY, ONCOLOGY, INFECTIOUS_DISEASE, IMMUNOLOGY, NEUROSCIENCE, DEVELOPMENTAL_BIOLOGY, METABOLISM, AGING) and renders as coloured pills on the module pages. It is a browsing aid, so tag every area that genuinely applies and leave it off when none fits — a wrong pill is worse than no pill. See the Module categories section ofCLAUDE.md.- Nodes bind GO and CL terms only (plus UBERON
locations, GOcellular_components). No CHEBI/MONDO term bindings in nodes — describe chemistry/disease in prose. (Exception: atreatmentsblock'stherapeutic_agentcarries a CHEBI/NCIT id per the treatment schema.) - Chain of ~5 nodes, each with a
role:trigger → amplifier → central_effector → effector → consequence. Thecentral_effectoris normally the key conformance target — the disorder-agnostic, rate-limiting step. Every node carriesevidenceanddownstreamedges; thenotesspell out the disorder-specific substitutions conforming entries make. - Treatment drug-target pattern (optional but preferred when a drug acts on
a specific node): a
treatments[]entry usestarget_mechanismswith atreatment_effect(INHIBITS/ACTIVATES) pointing at the node name it acts on. Model aftercellular_senescence(senolytic) orrenal_cystogenesis(tolvaptan).
Evidence discipline (non-negotiable)
Every snippet must be an exact substring of the cited paper's cached
abstract. Never fabricate. For each PMID:
uv run linkml-reference-validator cache reference PMID:XXXXXXXX # (or: just fetch-reference)
Do not hand-write references_cache/*.md. Discard any PMID whose real abstract
does not contain your snippet (DR/LLM-suggested citations are frequently wrong —
verify each one).
Xogenesis anchor convention (pathological structure formation)
A module whose terminal output is the formation of a pathological material
anatomical entity X carries a lightweight, consistent anchor stanza in
notes linking to open ontologies (prose CURIEs — no schema slot). Keep it
uniform and greppable:
- process genus
OGMS:0000061pathological bodily process — deliberately not GO'sanatomical structure formation(that genus presupposes normal programmed development). Sub-type it:OGMS:0000080pathological transformation — a canonical structure becomes pathological (cyst from a tubule, aneurysm from a vessel wall).OGMS:0000081pathological derivation — a new formation replaces/adds to prior tissue (granuloma, thrombus, stone, neoplasm).
- output continuant
OGMS:0000078pathological anatomical structure (discrete) orOGMS:0000079portion of pathological body substance (deposit/stone/fluid). - species an
MPATH:603(pathological anatomical entity) subtree term for the specific X (cystMPATH:62, concretionMPATH:614, granulomaMPATH:847, thrombosisMPATH:125, abscessMPATH:608, aneurysmMPATH:90, fibrosisMPATH:181, neoplasmMPATH:218); site aUBERONterm. - SNOMED CT "Morphologically abnormal structure" (49755003) is an external
census / gap-detection guide only — never bound in dismech data. If the
target X has no MPATH class (e.g. thrombus continuant, amyloid deposit,
atheroma), note the OBO gap in the module
notes.
Example stanza (in notes):
Xogenesis anchor: the terminal output is a granuloma (MPATH:847), an
OGMS:0000078pathological anatomical structure produced by anOGMS:0000081pathological derivation; process genusOGMS:0000061.
Verify each anchor CURIE resolves:
uv run runoak -i sqlite:obo:mpath info MPATH:847 -O obo
uv run runoak -i sqlite:obo:ogms info OGMS:0000078 -O obo
Worked Xogenesis modules to copy: renal_cystogenesis, granuloma_formation,
thrombogenesis, atherogenesis, amyloidogenesis,
nephrolithiasis_crystal_nucleation, cholelithiasis_biliary_supersaturation,
fibrotic_response.
Validation
uv run linkml-validate --schema src/dismech/schema/dismech.yaml \
--target-class Disease kb/modules/<name>.yaml
uv run linkml-term-validator validate-data kb/modules/<name>.yaml \
-s src/dismech/schema/dismech.yaml -t Disease --labels -c conf/oak_config.yaml
bash scripts/run_reference_validator.sh validate data kb/modules/<name>.yaml \
--schema src/dismech/schema/dismech.yaml --target-class Disease \
--config conf/reference_validator_config.yaml
Confirm every snippet is an exact substring of its cached abstract before committing.
Record and connect
- Do not add the module to a static catalog, and in particular not to a list
in
CLAUDE.md. There is no module registry there any more — it did not scale and drifted behindkb/modules/, which is the source of truth. A curatedModuleCollectionis different: add a module to one only when a published framework or explicit organizing principle supports that membership; collections are not an inventory of every module. Discovery isjust list-modules(orls kb/modules/), which reads the module YAML directly, so choose a descriptive filename and keep the top-levelnameanddescriptionuseful for repository search. What that makes load-bearing is the module's owndescription:slot: write it so it states the causal chain in one sentence, the drug-target pattern if there is one, the key conformance target, how the module is complementary to (not overlapping with) its sibling modules, and — for an Xogenesis module — the OGMS/MPATH/UBERON anchor. That description is the only place a curator will find this, so it must stand alone. Put curation guardrails ("do NOT create aFooDisease entry", species caveats) innotes:;just list-modules <filter>prints both fields in full and matches on both. - Scaffold a history record:
just new-history --kind module --slug <name> --event CREATE --outcome changed … - Wire real conformers: add
conforms_to: "<name>#<Node>"to the matching pathophysiology nodes of the relevant disorder entries, then re-validate.
Signals
- GitHub stars
- 60
- Forks
- 12
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
create-module- Source
- github.com/monarch-initiative/dismech