Effort: extensive
The 9 founding personas (theorist, skeptic, domain-expert, falsifier,
methodologist, statistician, replicator, evidence-auditor, synthesizer)
are written with neuroscience anchors — domain-expert in
.claude/skills/domain-expert/SKILL.md is "neuroscience, molecular
biology, drug development". Build a per-vertical persona pack
(5 verticals × 2 personas = 10 personas) so debates on cancer,
cardiovascular, infectious, metabolic, and immunology hypotheses are
judged by an expert grounded in that field's reality, not a neuroscientist
generalizing.
Without specialist personas, the Synthesizer scores a "BCL2 inhibitor
+ venetoclax synergy in CLL" hypothesis with the same prompt that
scores "γ-secretase modulator restores synaptic transmission." The
mechanistic-plausibility prior is wrong, the druggability bar is
wrong, the clinical-trajectory prior is wrong. Per-vertical personas
inject the right priors and let the persona-disagreement scoreboard
(q-persona-disagreement-scoreboard) actually surface meaningful
expert/skeptic divergence.
.claude/skills/:oncology-expert, oncology-skeptic, cardio-expert,cardio-skeptic, infectious-expert, infectious-skeptic,metabolic-expert, metabolic-skeptic, immunology-expert,immunology-skeptic. Each has a SKILL.md with the standardname/description frontmatter and a 200-400-word persona promptscidex/forge/skills_canonical.py autoregisters them on startup.claude/skills/).
scidex/agora/adversarial_debate.py and thecanonical_disease() resolver from q-vert-disease-ontology-catalog:domain-expert/skeptic when vertical isother or unresolved.
depmap, chembl-drug-targets,imaging-data-commons; cardio gets neurokit2, pyhealthphylogenetics,pubmed-search for outbreak literature; metabolic gets cobrapy,gtex-tissue-expression; immunology gets flowio,cellxgene-census immune subsets.
debate_persona_assignment(debate_id, persona_slug,/persona/<slug> page renders each new specialist with itsq-persona-disagreement-scoreboard.
pytest tests/test_vertical_persona_routing.py —oncology-expert + oncology-skeptic; disease="atrial
fibrillation" routes to cardio-*; unknown disease falls backSKILL.md with consistent structure: persona voiceclinical_trial_translatabilityepidemiological_plausibility).
_select_personas_for_debate() in adversarial_debate.py; respectrequires_persona override on the hypothesis row.
scidex/agora/prompts/; reuseargument_schema_v1.md for output shape so the existing extractorq-vert-disease-ontology-catalog — vertical resolver.domain-expert and skeptic skill bundles for tone reference.q-persona-disagreement-scoreboard (wave-3) consumes the newDelivered:
personas/ (mirroring the founding-persona pattern):personas/oncology-expert/SKILL.md — DepMap/TCGA/NCCN/cBioPortal grounding; druggabilitypersonas/oncology-skeptic/SKILL.md — resistance mechanisms, pan-essential DepMap flag,personas/cardio-expert/SKILL.md — Framingham/ACC-AHA/UKBB grounding; MACE endpointpersonas/cardio-skeptic/SKILL.md — hERG/QTc safety, failed HDL-raising trialspersonas/infectious-expert/SKILL.md — IDSA/WHO/EUCAST grounding; R₀ and AMR framework;personas/infectious-skeptic/SKILL.md — pre-existing AMR resistance, PK/PD targetpersonas/metabolic-expert/SKILL.md — ADA/EASD/Recon3D FBA grounding; GWAS causality;personas/metabolic-skeptic/SKILL.md — flux bypass redundancy, GWAS non-replicationpersonas/immunology-expert/SKILL.md — HCA/CellxGene atlas grounding; cytokine network;personas/immunology-skeptic/SKILL.md — cytokine redundancy, TGN1412 precedent, flow.claude/skills/ symlinks (→ ../../personas/<slug>) matching the founding-personascidex/agora/vertical_persona_router.py — select_personas(disease) → PersonaSelectioncanonical_disease() from disease_ontology; record_assignment() writes to DB;migrations/20260427_debate_persona_assignment.sql — createsdebate_persona_assignment(debate_id PK, persona_slug PK, vertical, assigned_at,
assignment_reason, hypothesis_id) with 4 indexes. Applied to live DB.tests/test_vertical_persona_routing.py — 15 smoke tests: colorectal cancer →pytest tests/test_vertical_persona_routing.py -v).Note on /persona/<slug> page: Rendering new specialist pages requires edits to api.py
(critical file). The routing infrastructure is complete; the UI page is deferred to a follow-up
task that explicitly targets api.py. The skills_canonical.py autoregistration is unchanged —
persona skills (in personas/) are not in the skills/ tool bundle directory, consistent with
the founding-persona architecture. Both domain-expert and skeptic are similarly not in skills/.