[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-biomarker-discovery":3,"mdc--m5z498-key":49,"related-org-aws-labs-biomarker-discovery":1648,"related-repo-aws-labs-biomarker-discovery":1828},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":44,"sourceUrl":47,"mdContent":48},"biomarker-discovery","guide biomarker discovery and validation","Reason about biomarker discovery and validation in HCLS — classifying biomarker intent, choosing feature-selection and cross-validation strategies, avoiding leakage, and planning external replication. Use when the user asks to discover, develop, or validate a biomarker; select features from high-dimensional omics or clinical data; design a validation study; choose evaluation metrics; justify sample size; combine multi-omics signals; or assess clinical utility. Triggers include \"discover a biomarker\", \"validate biomarker\", \"prognostic vs predictive\", \"feature selection\", \"LASSO vs elastic net\", \"nested cross-validation\", \"data leakage\", \"C-index\", \"time-dependent AUC\", \"decision curve analysis\", \"external validation cohort\", \"events per variable\", \"optimism-corrected\", \"multi-omics integration\", \"clinical utility of a biomarker\", \"is this biomarker ready\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,17,20,23],{"name":14,"slug":15,"type":16},"Research","research","tag",{"name":18,"slug":19,"type":16},"Life Sciences","life-sciences",{"name":21,"slug":22,"type":16},"Bioinformatics","bioinformatics",{"name":24,"slug":25,"type":16},"AWS","aws",4,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fhcls-agent-skills","2026-07-12T08:37:49.295301",null,0,[32,33,34,35,36,37,38,39,40,19,41,42,43],"agent-skills","agentcore","ai-agents","amazon-quick-desktop","claims-processing","drug-discovery","genomics","healthcare-ai","kiro","medical-imaging","risk-adjustment","strands-agents",{"repoUrl":27,"stars":26,"forks":30,"topics":45,"description":46},[32,33,34,35,36,37,38,39,40,19,41,42,43],"Agent skills for healthcare and life sciences: genomics, imaging, claims, drug discovery, and more. Works with Amazon Quick, Kiro, Amazon AgentCore, AWS Strands SDK, Claude Code, Codex, and any Agent Skills-compatible platform.","https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fhcls-agent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fbiomarker-discovery","---\nname: biomarker-discovery\ndescription: Reason about biomarker discovery and validation in HCLS — classifying biomarker intent, choosing feature-selection and cross-validation strategies, avoiding leakage, and planning external replication. Use when the user asks to discover, develop, or validate a biomarker; select features from high-dimensional omics or clinical data; design a validation study; choose evaluation metrics; justify sample size; combine multi-omics signals; or assess clinical utility. Triggers include \"discover a biomarker\", \"validate biomarker\", \"prognostic vs predictive\", \"feature selection\", \"LASSO vs elastic net\", \"nested cross-validation\", \"data leakage\", \"C-index\", \"time-dependent AUC\", \"decision curve analysis\", \"external validation cohort\", \"events per variable\", \"optimism-corrected\", \"multi-omics integration\", \"clinical utility of a biomarker\", \"is this biomarker ready\".\nusage: Invoke when discovering, validating, or designing studies for biomarkers, or choosing feature-selection and cross-validation strategies.\nversion: 1.0.0\ntags: [skill, category:reasoning, biomarker, feature-selection, validation, hcls]\n---\n\n# Biomarker Discovery and Validation\n\n## Overview\n\nThis skill teaches the agent how to *think* about biomarker discovery and validation, not how to run a specific pipeline. A biomarker is only useful if three things line up: (1) the **intent** is clearly defined (prognostic, predictive, or diagnostic), (2) the **discovery statistics** are honest (no leakage, appropriate penalization, nested resampling), and (3) the **validation plan** reaches external replication and demonstrates a clinical decision change.\n\nUse this skill to interrogate proposals, spot methodological weaknesses, and guide the user toward the right design *before* code is written.\n\n## Usage\n\nInvoke this skill when the user:\n\n- Describes a candidate marker (gene, protein, imaging feature, EHR variable, composite score) and asks how to develop or validate it.\n- Has a high-dimensional dataset (transcriptomics, proteomics, radiomics, methylation) and wants to select features.\n- Asks which cross-validation scheme, metric, or sample size is appropriate.\n- Claims a biomarker \"works\" based on a single AUC on a single cohort.\n- Wants to combine multiple omics layers or modalities.\n- Asks whether a biomarker is ready for clinical use or regulatory submission.\n\nThe agent should respond by:\n\n1. **Clarifying intent** — force a prognostic\u002Fpredictive\u002Fdiagnostic classification before anything else.\n2. **Auditing the data** — sample size, event counts, site structure, missingness, time origin.\n3. **Recommending a design** — feature selection, resampling, metrics, validation tier.\n4. **Naming the leakage risks** specific to the user's setup.\n5. **Stating what \"validated\" would mean** for this biomarker in this context.\n\n## Response Format\n\n- Lead with the direct recommendation or classification (≤3 sentences)\n- Structure as: recommendation → justification (citing specific criteria\u002Fthresholds) → caveats\n- Use tables for comparisons; bullet points for criteria lists\n- Omit background the user already knows — they asked the question\n- Target: 200-400 words unless the user requests exhaustive detail\nThe decision trees and frameworks in this skill are for internal reasoning only. Apply them to reach your conclusion, but do not reproduce them in your response. Present only the final recommendation with supporting evidence.\n\n\n## Core Concepts\n\n### 1. Biomarker Intent Determines Everything\n\nThe first question is always: *what decision is this biomarker supposed to inform?*\n\n| Intent | Question answered | Minimal design | Key estimand |\n|---|---|---|---|\n| **Prognostic** | What is this patient's outcome regardless of treatment? | Single-arm \u002F observational cohort with outcome follow-up | Hazard ratio, C-index, calibration |\n| **Predictive** | Who benefits more from treatment A vs B? | RCT or well-emulated target trial with both arms | Treatment × biomarker interaction |\n| **Diagnostic** | Does this patient have the disease now? | Case–control with full disease spectrum | Sensitivity, specificity, PPV\u002FNPV |\n\nConsequences of the classification:\n\n- A **prognostic** claim cannot be made from a predictive design without a single-arm reference, and a **predictive** claim cannot be made from a single-arm cohort — there is no counterfactual arm.\n- A **diagnostic** biomarker evaluated only in clear cases vs healthy controls will overstate performance; it must be tested across the clinical *spectrum* it will be used in (mild, early, comorbid, mimics).\n- Confusing prognostic with predictive is the single most common error in oncology biomarker papers. If the user claims \"patients with high X did better on drug Y,\" ask whether the same is true on the control arm — if yes, it is prognostic, not predictive.\n\n### 2. Feature Selection Strategy\n\nPick based on the *shape* of the problem, not familiarity.\n\n| Method | Strength | When it fails |\n|---|---|---|\n| **LASSO (L1)** | Sparse solutions, interpretable, fast | Picks one arbitrary feature from correlated groups |\n| **Elastic net (L1 + L2)** | Handles correlated features, groups them | Two hyperparameters to tune |\n| **Random (survival) forest importance** | Captures non-linearities and interactions | Biased toward high-cardinality features; importance ≠ causation |\n| **Stability selection** | Reports features selected in >60% of subsamples; controls false discoveries | Computationally heavier; needs a base selector (usually LASSO) |\n| **Univariate filtering** | Simple | Ignores multivariate structure; almost always wrong as a sole method in high-d |\n\n#### Decision tree: which feature selection method?\n\n```\nStart\n│\n├── Is n \u003C p (more features than samples)?\n│     ├── Yes → Use penalization (LASSO \u002F elastic net) OR stability selection.\n│     │         Never rely on univariate filtering alone.\n│     └── No  → Continue.\n│\n├── Are features strongly correlated (e.g., gene modules, radiomic clusters)?\n│     ├── Yes → Elastic net (groups correlated features) or\n│     │         group LASSO if groupings are known a priori.\n│     └── No  → LASSO is fine.\n│\n├── Do you suspect non-linear effects or interactions?\n│     ├── Yes → Random forest \u002F gradient-boosted trees for importance,\n│     │         confirm with permutation importance (not impurity-based).\n│     └── No  → Stay with linear penalized models.\n│\n└── Need reproducibility \u002F publication-grade selection?\n      └── Wrap whatever base method above in stability selection\n          (subsample → refit → keep features chosen in ≥60% of runs).\n```\n\n### 3. Nested Cross-Validation is Non-Negotiable\n\nBiomarker discovery must use **nested CV**:\n\n- **Outer loop** — estimates generalization performance on held-out folds.\n- **Inner loop** — performs feature selection *and* hyperparameter tuning on training folds only.\n\nRules:\n\n- **Patient-level splits.** Never split rows when a patient contributes multiple samples (longitudinal labs, multiple lesions, bilateral imaging). Leakage across folds via shared patients is the most common silent inflator of performance.\n- **Stratify by outcome** (and by site\u002Fbatch when feasible).\n- **Everything learned from data goes inside the inner loop:** feature selection, imputation parameters, normalization statistics, scaler means\u002FSDs, batch-correction fits, PCA loadings.\n- Report the **distribution across outer folds**, not just the mean — high variance across folds is a warning sign.\n\n### 4. Data Leakage — The Usual Suspects\n\nLeakage invalidates everything downstream. Check for:\n\n1. **Feature selection on the full dataset before CV.** The selected features already \"know\" the test labels. Always select inside the CV loop.\n2. **Temporal leakage.** A lab is ordered *because* clinicians already suspect the outcome. The feature's presence\u002Fabsence itself encodes the label. Define a clean **time origin** (e.g., admission, diagnosis, randomization) and only use data available before it.\n3. **Outcome-in-features.** Variables that are definitionally downstream of the outcome (e.g., \"received hospice\" predicting death; \"tumor stage IV\" predicting metastasis) are circular.\n4. **Preprocessing leakage.** Computing normalization means, imputation medians, scaler statistics, or PCA on the full dataset leaks test distribution into training. Fit on training folds only, apply to test.\n5. **Batch\u002Fsite leakage.** If all cases come from Site A and all controls from Site B, the model learns site, not biology.\n6. **Target leakage via proxies.** Encounter ID, physician ID, or order timestamps can proxy outcome.\n\n### 5. Evaluation Metrics by Intent\n\nChoosing the wrong metric hides or inflates effects.\n\n- **Prognostic (time-to-event):**\n  - C-index (Harrell's or Uno's for censoring).\n  - Time-dependent AUC at clinically relevant horizons (e.g., 1, 3, 5 years).\n  - Calibration (calibration-in-the-large, calibration slope, calibration plots). Discrimination without calibration is insufficient.\n- **Predictive:**\n  - Treatment × biomarker **interaction** term (p-value and effect size).\n  - Subgroup-specific hazard ratios or risk differences — both point estimates and CIs.\n  - Qualitative interaction (benefit flips direction) is stronger evidence than quantitative interaction (benefit magnitude differs).\n- **Diagnostic:**\n  - Sensitivity and specificity at the *pre-specified* clinical threshold, not the one that maximizes Youden's J on the test set.\n  - AUROC as a summary; AUPRC when prevalence is low and positive class is the focus.\n  - PPV and NPV — **these are prevalence-dependent**. Report the prevalence assumed and re-estimate PPV\u002FNPV at the deployment prevalence.\n\nAlways report **confidence intervals** (bootstrap or analytic) alongside point estimates.\n\n### 6. Validation Hierarchy\n\nA biomarker graduates through tiers. Do not skip.\n\n1. **Internal validation** — nested CV or bootstrap on the discovery cohort. Optimism-corrected.\n2. **Internal-external** — leave-one-site-out or leave-one-batch-out within the discovery dataset. Probes site\u002Fbatch robustness.\n3. **External validation** — independent cohort, ideally collected by a different group, with pre-specified model and threshold (locked).\n4. **Prospective validation** — biomarker used in real time with outcomes assessed after. Required for most regulatory submissions.\n\nA biomarker is **not validated** until step 3 at minimum, and the model + threshold were locked before seeing the external data. Re-tuning on external data = discovery, not validation.\n\n#### Decision tree: which validation tier applies?\n\n```\nStart\n│\n├── Only one cohort available?\n│     └── Internal validation only (nested CV + bootstrap optimism correction).\n│         Label result as \"discovery\", not \"validated\".\n│\n├── Multi-site data within a single study?\n│     └── Add internal-external (leave-one-site-out).\n│         Report performance per site, not just pooled.\n│\n├── Truly independent cohort available?\n│     └── Lock model + threshold → evaluate once → report with CIs.\n│         Pre-register the analysis plan if possible.\n│\n└── Intended for clinical deployment \u002F regulatory submission?\n      └── Prospective validation on the target population,\n          under intended-use conditions, with the locked model.\n```\n\n### 7. Sample Size and Events-Per-Variable\n\nFor Cox and logistic models: aim for **10–20 events per candidate variable** considered during modeling (not just the final set). Counting only the selected variables after LASSO is a mistake — the selection itself used the full candidate pool.\n\nIn high-dimensional settings (omics, radiomics) events-per-variable is unattainable. Compensate with:\n\n- Penalization (LASSO\u002Felastic net) or Bayesian shrinkage priors.\n- **Stability selection** to control false-discovery rate of selected features.\n- **Optimism-corrected performance** via bootstrap (.632+ or Harrell's bootstrap optimism correction).\n- Pre-specification of the number of features carried forward.\n\nEvent counts, not sample size, are the binding constraint for time-to-event outcomes. 1000 patients with 30 events ≈ a 30-event study.\n\n### 8. Multi-Omics Integration\n\nWhen combining transcriptomics + proteomics + imaging + clinical:\n\n- **Early integration** (concatenate all features, fit one model): high-dimensional, sensitive to scale differences and missing modalities. Works only with very large n.\n- **Intermediate integration** (MOFA, canonical correlation, kernel methods, shared latent factors): good when you want to find *shared* biology across layers. Moderate n.\n- **Late integration** (fit one model per omic, combine predictions via stacking or simple averaging): most robust when n is small, tolerates missing modalities per patient, and is easiest to validate modality-by-modality.\n\nDefault with small-to-moderate sample sizes: **late integration**. Escalate to intermediate or early only if n supports it and shared-factor interpretation is a goal.\n\nMissing modalities are the norm, not the exception — design for it from the start.\n\n### 9. Clinical Utility — The Decision Test\n\nA biomarker with excellent AUC that does not change any decision is not useful. For every candidate, the agent should force the user to answer:\n\n- **What decision does this biomarker change?** (treat vs not, escalate vs de-escalate, biopsy vs observe, enroll vs exclude.)\n- **At what threshold?** Thresholds must be pre-specified and tied to the decision's costs and benefits.\n- **What is the net benefit** over treat-all and treat-none, across the plausible threshold range? Use **decision curve analysis**.\n- **Who is harmed** by a false positive or false negative, and at what rate is that acceptable?\n\nIf the user cannot answer these, clinical utility is undefined — regardless of AUC.\n\n## When NOT to Use This Skill\n- Established validated biomarkers already in clinical guidelines (e.g., HER2, BRCA1\u002F2) — use guideline-concordant testing protocols instead\n- Clinical deployment or CLIA\u002FCAP lab validation decisions — those require regulatory and laboratory expertise, not discovery methodology\n- Companion diagnostic development — that is a regulatory\u002Fmanufacturing problem, not a biomarker discovery problem\n\n## When to Escalate to Human Expert\n- The biomarker will be used for treatment selection in a clinical trial — requires biostatistician sign-off on the adaptive design\n- Analytical validation (sensitivity, specificity, reproducibility across platforms) is needed — requires wet-lab expertise\n- Ethical review is needed for biomarker-driven patient stratification that could deny treatment to a subgroup\n\n## Common Mistakes\n\n- **Wrong:** Claiming a biomarker is \"predictive\" from a single-arm study\n  **Right:** Require a comparator arm (RCT or emulated target trial) to estimate a treatment-by-biomarker interaction\n  **Why:** Without a counterfactual arm, you cannot distinguish prognostic from predictive — the biomarker may simply mark prognosis regardless of treatment\n\n- **Wrong:** Performing feature selection on the full dataset, then running CV on the reduced feature set\n  **Right:** Always perform feature selection inside the CV inner loop so each fold selects features independently\n  **Why:** Selected features already \"know\" the test labels, inflating performance estimates and producing unreproducible models\n\n- **Wrong:** Splitting by row when a patient contributes multiple samples\n  **Right:** Split at the patient level so all samples from one patient stay in the same fold\n  **Why:** Repeated measures, bilateral lesions, and longitudinal labs leak patient identity across folds, inflating apparent performance\n\n- **Wrong:** Tuning the decision threshold on the test set\n  **Right:** Lock thresholds on training data or pre-specify them based on clinical cost-benefit reasoning\n  **Why:** Optimizing the threshold on test data overfits to the evaluation set and produces unreliable operating characteristics\n\n- **Wrong:** Reporting PPV\u002FNPV from a 50\u002F50 case-control sample and implying it generalizes\n  **Right:** Re-estimate PPV and NPV at the deployment prevalence using Bayes' theorem\n  **Why:** PPV and NPV are prevalence-dependent — values from enriched samples are misleading at real-world disease rates\n\n- **Wrong:** Ignoring calibration when reporting model performance\n  **Right:** Always report calibration (calibration-in-the-large, calibration slope, calibration plots) alongside discrimination\n  **Why:** Good discrimination with poor calibration produces clinically dangerous probability estimates that misinform decisions\n\n- **Wrong:** Counting events-per-variable only after feature selection\n  **Right:** Count EPV against all candidate variables considered during modeling, not just the final selected set\n  **Why:** The selection process itself used the full candidate pool — the effective degrees of freedom reflect the original dimensionality\n\n- **Wrong:** Declaring a biomarker \"validated\" based on cross-validation on the discovery cohort\n  **Right:** Require external replication on an independent cohort with a locked model and pre-specified threshold\n  **Why:** Cross-validation is internal validation only — it estimates optimism but does not prove generalizability\n\n- **Wrong:** Confounding the biomarker signal with site, batch, platform, or scanner effects\n  **Right:** Always check whether site\u002Fbatch predicts outcome as well as the biomarker does; include site as a covariate or use leave-one-site-out validation\n  **Why:** If all cases come from one site and controls from another, the model learns site identity, not biology\n\n- **Wrong:** Using future information as a feature (e.g., a lab ordered because of clinical suspicion)\n  **Right:** Define a clean time origin and only use data available before it\n  **Why:** A lab ordered because of suspicion encodes the suspicion itself — this is temporal leakage, not predictive signal\n\n- **Wrong:** Early integration of multi-omics with small sample sizes\n  **Right:** Use late integration (fit one model per omic, combine predictions via stacking) when n is small to moderate\n  **Why:** Concatenating thousands of features across layers with a few hundred patients overfits to batch effects, not biology\n\n- **Wrong:** Reporting only point estimates without confidence intervals\n  **Right:** Always include bootstrap or analytic confidence intervals for all performance metrics\n  **Why:** Single numbers hide instability — a C-index of 0.78 with a 95% CI of [0.55, 0.92] tells a very different story\n\n- **Wrong:** Optimizing AUC while ignoring clinical utility\n  **Right:** Perform decision curve analysis to demonstrate net benefit over treat-all and treat-none strategies\n  **Why:** A 0.85 AUC that changes no clinical decision is worse than a 0.70 AUC that reliably changes one\n\n- **Wrong:** Retraining or tuning the model on external validation data \"just a little\"\n  **Right:** Lock the model completely before seeing external data — any tuning collapses validation back into discovery\n  **Why:** Even minor adjustments on external data eliminate its independence, making the \"validation\" circular\n\n- **Wrong:** Skipping decision curve analysis when reporting biomarker performance\n  **Right:** Always include net-benefit curves across the plausible threshold range\n  **Why:** Without net-benefit reasoning, there is no evidence the biomarker helps patients — only that it correlates with outcome\n\n## References\n\n- Steyerberg EW. Clinical Prediction Models. Springer 2019\n- Vickers AJ et al. Decision curve analysis. Med Decis Making 2006, https:\u002F\u002Fdoi.org\u002F10.1177\u002F0272989X06295361\n- Meinshausen & Bühlmann. Stability selection. JRSS-B 2010, https:\u002F\u002Fdoi.org\u002F10.1111\u002Fj.1467-9868.2010.00740.x\n- Harrell FE. Regression Modeling Strategies. Springer 2015\n- Simon RM et al. J Natl Cancer Inst 2009, https:\u002F\u002Fdoi.org\u002F10.1093\u002Fjnci\u002Fdjp335\n",{"data":50,"body":60},{"name":4,"description":6,"usage":51,"version":52,"tags":53},"Invoke when discovering, validating, or designing studies for biomarkers, or choosing feature-selection and cross-validation strategies.","1.0.0",[54,55,56,57,58,59],"skill","category:reasoning","biomarker","feature-selection","validation","hcls",{"type":61,"children":62},"root",[63,72,79,115,127,133,138,173,178,232,238,266,272,279,289,405,410,455,461,473,605,612,625,631,643,673,678,723,729,734,811,817,822,924,936,942,947,990,1002,1008,1017,1023,1035,1040,1072,1077,1083,1088,1128,1140,1145,1151,1156,1206,1211,1217,1235,1241,1259,1265,1594,1600],{"type":64,"tag":65,"props":66,"children":68},"element","h1",{"id":67},"biomarker-discovery-and-validation",[69],{"type":70,"value":71},"text","Biomarker Discovery and Validation",{"type":64,"tag":73,"props":74,"children":76},"h2",{"id":75},"overview",[77],{"type":70,"value":78},"Overview",{"type":64,"tag":80,"props":81,"children":82},"p",{},[83,85,91,93,99,101,106,108,113],{"type":70,"value":84},"This skill teaches the agent how to ",{"type":64,"tag":86,"props":87,"children":88},"em",{},[89],{"type":70,"value":90},"think",{"type":70,"value":92}," about biomarker discovery and validation, not how to run a specific pipeline. A biomarker is only useful if three things line up: (1) the ",{"type":64,"tag":94,"props":95,"children":96},"strong",{},[97],{"type":70,"value":98},"intent",{"type":70,"value":100}," is clearly defined (prognostic, predictive, or diagnostic), (2) the ",{"type":64,"tag":94,"props":102,"children":103},{},[104],{"type":70,"value":105},"discovery statistics",{"type":70,"value":107}," are honest (no leakage, appropriate penalization, nested resampling), and (3) the ",{"type":64,"tag":94,"props":109,"children":110},{},[111],{"type":70,"value":112},"validation plan",{"type":70,"value":114}," reaches external replication and demonstrates a clinical decision change.",{"type":64,"tag":80,"props":116,"children":117},{},[118,120,125],{"type":70,"value":119},"Use this skill to interrogate proposals, spot methodological weaknesses, and guide the user toward the right design ",{"type":64,"tag":86,"props":121,"children":122},{},[123],{"type":70,"value":124},"before",{"type":70,"value":126}," code is written.",{"type":64,"tag":73,"props":128,"children":130},{"id":129},"usage",[131],{"type":70,"value":132},"Usage",{"type":64,"tag":80,"props":134,"children":135},{},[136],{"type":70,"value":137},"Invoke this skill when the user:",{"type":64,"tag":139,"props":140,"children":141},"ul",{},[142,148,153,158,163,168],{"type":64,"tag":143,"props":144,"children":145},"li",{},[146],{"type":70,"value":147},"Describes a candidate marker (gene, protein, imaging feature, EHR variable, composite score) and asks how to develop or validate it.",{"type":64,"tag":143,"props":149,"children":150},{},[151],{"type":70,"value":152},"Has a high-dimensional dataset (transcriptomics, proteomics, radiomics, methylation) and wants to select features.",{"type":64,"tag":143,"props":154,"children":155},{},[156],{"type":70,"value":157},"Asks which cross-validation scheme, metric, or sample size is appropriate.",{"type":64,"tag":143,"props":159,"children":160},{},[161],{"type":70,"value":162},"Claims a biomarker \"works\" based on a single AUC on a single cohort.",{"type":64,"tag":143,"props":164,"children":165},{},[166],{"type":70,"value":167},"Wants to combine multiple omics layers or modalities.",{"type":64,"tag":143,"props":169,"children":170},{},[171],{"type":70,"value":172},"Asks whether a biomarker is ready for clinical use or regulatory submission.",{"type":64,"tag":80,"props":174,"children":175},{},[176],{"type":70,"value":177},"The agent should respond by:",{"type":64,"tag":179,"props":180,"children":181},"ol",{},[182,192,202,212,222],{"type":64,"tag":143,"props":183,"children":184},{},[185,190],{"type":64,"tag":94,"props":186,"children":187},{},[188],{"type":70,"value":189},"Clarifying intent",{"type":70,"value":191}," — force a prognostic\u002Fpredictive\u002Fdiagnostic classification before anything else.",{"type":64,"tag":143,"props":193,"children":194},{},[195,200],{"type":64,"tag":94,"props":196,"children":197},{},[198],{"type":70,"value":199},"Auditing the data",{"type":70,"value":201}," — sample size, event counts, site structure, missingness, time origin.",{"type":64,"tag":143,"props":203,"children":204},{},[205,210],{"type":64,"tag":94,"props":206,"children":207},{},[208],{"type":70,"value":209},"Recommending a design",{"type":70,"value":211}," — feature selection, resampling, metrics, validation tier.",{"type":64,"tag":143,"props":213,"children":214},{},[215,220],{"type":64,"tag":94,"props":216,"children":217},{},[218],{"type":70,"value":219},"Naming the leakage risks",{"type":70,"value":221}," specific to the user's setup.",{"type":64,"tag":143,"props":223,"children":224},{},[225,230],{"type":64,"tag":94,"props":226,"children":227},{},[228],{"type":70,"value":229},"Stating what \"validated\" would mean",{"type":70,"value":231}," for this biomarker in this context.",{"type":64,"tag":73,"props":233,"children":235},{"id":234},"response-format",[236],{"type":70,"value":237},"Response Format",{"type":64,"tag":139,"props":239,"children":240},{},[241,246,251,256,261],{"type":64,"tag":143,"props":242,"children":243},{},[244],{"type":70,"value":245},"Lead with the direct recommendation or classification (≤3 sentences)",{"type":64,"tag":143,"props":247,"children":248},{},[249],{"type":70,"value":250},"Structure as: recommendation → justification (citing specific criteria\u002Fthresholds) → caveats",{"type":64,"tag":143,"props":252,"children":253},{},[254],{"type":70,"value":255},"Use tables for comparisons; bullet points for criteria lists",{"type":64,"tag":143,"props":257,"children":258},{},[259],{"type":70,"value":260},"Omit background the user already knows — they asked the question",{"type":64,"tag":143,"props":262,"children":263},{},[264],{"type":70,"value":265},"Target: 200-400 words unless the user requests exhaustive detail\nThe decision trees and frameworks in this skill are for internal reasoning only. Apply them to reach your conclusion, but do not reproduce them in your response. Present only the final recommendation with supporting evidence.",{"type":64,"tag":73,"props":267,"children":269},{"id":268},"core-concepts",[270],{"type":70,"value":271},"Core Concepts",{"type":64,"tag":273,"props":274,"children":276},"h3",{"id":275},"_1-biomarker-intent-determines-everything",[277],{"type":70,"value":278},"1. Biomarker Intent Determines Everything",{"type":64,"tag":80,"props":280,"children":281},{},[282,284],{"type":70,"value":283},"The first question is always: ",{"type":64,"tag":86,"props":285,"children":286},{},[287],{"type":70,"value":288},"what decision is this biomarker supposed to inform?",{"type":64,"tag":290,"props":291,"children":292},"table",{},[293,322],{"type":64,"tag":294,"props":295,"children":296},"thead",{},[297],{"type":64,"tag":298,"props":299,"children":300},"tr",{},[301,307,312,317],{"type":64,"tag":302,"props":303,"children":304},"th",{},[305],{"type":70,"value":306},"Intent",{"type":64,"tag":302,"props":308,"children":309},{},[310],{"type":70,"value":311},"Question answered",{"type":64,"tag":302,"props":313,"children":314},{},[315],{"type":70,"value":316},"Minimal design",{"type":64,"tag":302,"props":318,"children":319},{},[320],{"type":70,"value":321},"Key estimand",{"type":64,"tag":323,"props":324,"children":325},"tbody",{},[326,353,379],{"type":64,"tag":298,"props":327,"children":328},{},[329,338,343,348],{"type":64,"tag":330,"props":331,"children":332},"td",{},[333],{"type":64,"tag":94,"props":334,"children":335},{},[336],{"type":70,"value":337},"Prognostic",{"type":64,"tag":330,"props":339,"children":340},{},[341],{"type":70,"value":342},"What is this patient's outcome regardless of treatment?",{"type":64,"tag":330,"props":344,"children":345},{},[346],{"type":70,"value":347},"Single-arm \u002F observational cohort with outcome follow-up",{"type":64,"tag":330,"props":349,"children":350},{},[351],{"type":70,"value":352},"Hazard ratio, C-index, calibration",{"type":64,"tag":298,"props":354,"children":355},{},[356,364,369,374],{"type":64,"tag":330,"props":357,"children":358},{},[359],{"type":64,"tag":94,"props":360,"children":361},{},[362],{"type":70,"value":363},"Predictive",{"type":64,"tag":330,"props":365,"children":366},{},[367],{"type":70,"value":368},"Who benefits more from treatment A vs B?",{"type":64,"tag":330,"props":370,"children":371},{},[372],{"type":70,"value":373},"RCT or well-emulated target trial with both arms",{"type":64,"tag":330,"props":375,"children":376},{},[377],{"type":70,"value":378},"Treatment × biomarker interaction",{"type":64,"tag":298,"props":380,"children":381},{},[382,390,395,400],{"type":64,"tag":330,"props":383,"children":384},{},[385],{"type":64,"tag":94,"props":386,"children":387},{},[388],{"type":70,"value":389},"Diagnostic",{"type":64,"tag":330,"props":391,"children":392},{},[393],{"type":70,"value":394},"Does this patient have the disease now?",{"type":64,"tag":330,"props":396,"children":397},{},[398],{"type":70,"value":399},"Case–control with full disease spectrum",{"type":64,"tag":330,"props":401,"children":402},{},[403],{"type":70,"value":404},"Sensitivity, specificity, PPV\u002FNPV",{"type":64,"tag":80,"props":406,"children":407},{},[408],{"type":70,"value":409},"Consequences of the classification:",{"type":64,"tag":139,"props":411,"children":412},{},[413,432,450],{"type":64,"tag":143,"props":414,"children":415},{},[416,418,423,425,430],{"type":70,"value":417},"A ",{"type":64,"tag":94,"props":419,"children":420},{},[421],{"type":70,"value":422},"prognostic",{"type":70,"value":424}," claim cannot be made from a predictive design without a single-arm reference, and a ",{"type":64,"tag":94,"props":426,"children":427},{},[428],{"type":70,"value":429},"predictive",{"type":70,"value":431}," claim cannot be made from a single-arm cohort — there is no counterfactual arm.",{"type":64,"tag":143,"props":433,"children":434},{},[435,436,441,443,448],{"type":70,"value":417},{"type":64,"tag":94,"props":437,"children":438},{},[439],{"type":70,"value":440},"diagnostic",{"type":70,"value":442}," biomarker evaluated only in clear cases vs healthy controls will overstate performance; it must be tested across the clinical ",{"type":64,"tag":86,"props":444,"children":445},{},[446],{"type":70,"value":447},"spectrum",{"type":70,"value":449}," it will be used in (mild, early, comorbid, mimics).",{"type":64,"tag":143,"props":451,"children":452},{},[453],{"type":70,"value":454},"Confusing prognostic with predictive is the single most common error in oncology biomarker papers. If the user claims \"patients with high X did better on drug Y,\" ask whether the same is true on the control arm — if yes, it is prognostic, not predictive.",{"type":64,"tag":273,"props":456,"children":458},{"id":457},"_2-feature-selection-strategy",[459],{"type":70,"value":460},"2. Feature Selection Strategy",{"type":64,"tag":80,"props":462,"children":463},{},[464,466,471],{"type":70,"value":465},"Pick based on the ",{"type":64,"tag":86,"props":467,"children":468},{},[469],{"type":70,"value":470},"shape",{"type":70,"value":472}," of the problem, not familiarity.",{"type":64,"tag":290,"props":474,"children":475},{},[476,497],{"type":64,"tag":294,"props":477,"children":478},{},[479],{"type":64,"tag":298,"props":480,"children":481},{},[482,487,492],{"type":64,"tag":302,"props":483,"children":484},{},[485],{"type":70,"value":486},"Method",{"type":64,"tag":302,"props":488,"children":489},{},[490],{"type":70,"value":491},"Strength",{"type":64,"tag":302,"props":493,"children":494},{},[495],{"type":70,"value":496},"When it fails",{"type":64,"tag":323,"props":498,"children":499},{},[500,521,542,563,584],{"type":64,"tag":298,"props":501,"children":502},{},[503,511,516],{"type":64,"tag":330,"props":504,"children":505},{},[506],{"type":64,"tag":94,"props":507,"children":508},{},[509],{"type":70,"value":510},"LASSO (L1)",{"type":64,"tag":330,"props":512,"children":513},{},[514],{"type":70,"value":515},"Sparse solutions, interpretable, fast",{"type":64,"tag":330,"props":517,"children":518},{},[519],{"type":70,"value":520},"Picks one arbitrary feature from correlated groups",{"type":64,"tag":298,"props":522,"children":523},{},[524,532,537],{"type":64,"tag":330,"props":525,"children":526},{},[527],{"type":64,"tag":94,"props":528,"children":529},{},[530],{"type":70,"value":531},"Elastic net (L1 + L2)",{"type":64,"tag":330,"props":533,"children":534},{},[535],{"type":70,"value":536},"Handles correlated features, groups them",{"type":64,"tag":330,"props":538,"children":539},{},[540],{"type":70,"value":541},"Two hyperparameters to tune",{"type":64,"tag":298,"props":543,"children":544},{},[545,553,558],{"type":64,"tag":330,"props":546,"children":547},{},[548],{"type":64,"tag":94,"props":549,"children":550},{},[551],{"type":70,"value":552},"Random (survival) forest importance",{"type":64,"tag":330,"props":554,"children":555},{},[556],{"type":70,"value":557},"Captures non-linearities and interactions",{"type":64,"tag":330,"props":559,"children":560},{},[561],{"type":70,"value":562},"Biased toward high-cardinality features; importance ≠ causation",{"type":64,"tag":298,"props":564,"children":565},{},[566,574,579],{"type":64,"tag":330,"props":567,"children":568},{},[569],{"type":64,"tag":94,"props":570,"children":571},{},[572],{"type":70,"value":573},"Stability selection",{"type":64,"tag":330,"props":575,"children":576},{},[577],{"type":70,"value":578},"Reports features selected in >60% of subsamples; controls false discoveries",{"type":64,"tag":330,"props":580,"children":581},{},[582],{"type":70,"value":583},"Computationally heavier; needs a base selector (usually LASSO)",{"type":64,"tag":298,"props":585,"children":586},{},[587,595,600],{"type":64,"tag":330,"props":588,"children":589},{},[590],{"type":64,"tag":94,"props":591,"children":592},{},[593],{"type":70,"value":594},"Univariate filtering",{"type":64,"tag":330,"props":596,"children":597},{},[598],{"type":70,"value":599},"Simple",{"type":64,"tag":330,"props":601,"children":602},{},[603],{"type":70,"value":604},"Ignores multivariate structure; almost always wrong as a sole method in high-d",{"type":64,"tag":606,"props":607,"children":609},"h4",{"id":608},"decision-tree-which-feature-selection-method",[610],{"type":70,"value":611},"Decision tree: which feature selection method?",{"type":64,"tag":613,"props":614,"children":618},"pre",{"className":615,"code":617,"language":70},[616],"language-text","Start\n│\n├── Is n \u003C p (more features than samples)?\n│     ├── Yes → Use penalization (LASSO \u002F elastic net) OR stability selection.\n│     │         Never rely on univariate filtering alone.\n│     └── No  → Continue.\n│\n├── Are features strongly correlated (e.g., gene modules, radiomic clusters)?\n│     ├── Yes → Elastic net (groups correlated features) or\n│     │         group LASSO if groupings are known a priori.\n│     └── No  → LASSO is fine.\n│\n├── Do you suspect non-linear effects or interactions?\n│     ├── Yes → Random forest \u002F gradient-boosted trees for importance,\n│     │         confirm with permutation importance (not impurity-based).\n│     └── No  → Stay with linear penalized models.\n│\n└── Need reproducibility \u002F publication-grade selection?\n      └── Wrap whatever base method above in stability selection\n          (subsample → refit → keep features chosen in ≥60% of runs).\n",[619],{"type":64,"tag":620,"props":621,"children":623},"code",{"__ignoreMap":622},"",[624],{"type":70,"value":617},{"type":64,"tag":273,"props":626,"children":628},{"id":627},"_3-nested-cross-validation-is-non-negotiable",[629],{"type":70,"value":630},"3. Nested Cross-Validation is Non-Negotiable",{"type":64,"tag":80,"props":632,"children":633},{},[634,636,641],{"type":70,"value":635},"Biomarker discovery must use ",{"type":64,"tag":94,"props":637,"children":638},{},[639],{"type":70,"value":640},"nested CV",{"type":70,"value":642},":",{"type":64,"tag":139,"props":644,"children":645},{},[646,656],{"type":64,"tag":143,"props":647,"children":648},{},[649,654],{"type":64,"tag":94,"props":650,"children":651},{},[652],{"type":70,"value":653},"Outer loop",{"type":70,"value":655}," — estimates generalization performance on held-out folds.",{"type":64,"tag":143,"props":657,"children":658},{},[659,664,666,671],{"type":64,"tag":94,"props":660,"children":661},{},[662],{"type":70,"value":663},"Inner loop",{"type":70,"value":665}," — performs feature selection ",{"type":64,"tag":86,"props":667,"children":668},{},[669],{"type":70,"value":670},"and",{"type":70,"value":672}," hyperparameter tuning on training folds only.",{"type":64,"tag":80,"props":674,"children":675},{},[676],{"type":70,"value":677},"Rules:",{"type":64,"tag":139,"props":679,"children":680},{},[681,691,701,711],{"type":64,"tag":143,"props":682,"children":683},{},[684,689],{"type":64,"tag":94,"props":685,"children":686},{},[687],{"type":70,"value":688},"Patient-level splits.",{"type":70,"value":690}," Never split rows when a patient contributes multiple samples (longitudinal labs, multiple lesions, bilateral imaging). Leakage across folds via shared patients is the most common silent inflator of performance.",{"type":64,"tag":143,"props":692,"children":693},{},[694,699],{"type":64,"tag":94,"props":695,"children":696},{},[697],{"type":70,"value":698},"Stratify by outcome",{"type":70,"value":700}," (and by site\u002Fbatch when feasible).",{"type":64,"tag":143,"props":702,"children":703},{},[704,709],{"type":64,"tag":94,"props":705,"children":706},{},[707],{"type":70,"value":708},"Everything learned from data goes inside the inner loop:",{"type":70,"value":710}," feature selection, imputation parameters, normalization statistics, scaler means\u002FSDs, batch-correction fits, PCA loadings.",{"type":64,"tag":143,"props":712,"children":713},{},[714,716,721],{"type":70,"value":715},"Report the ",{"type":64,"tag":94,"props":717,"children":718},{},[719],{"type":70,"value":720},"distribution across outer folds",{"type":70,"value":722},", not just the mean — high variance across folds is a warning sign.",{"type":64,"tag":273,"props":724,"children":726},{"id":725},"_4-data-leakage-the-usual-suspects",[727],{"type":70,"value":728},"4. Data Leakage — The Usual Suspects",{"type":64,"tag":80,"props":730,"children":731},{},[732],{"type":70,"value":733},"Leakage invalidates everything downstream. Check for:",{"type":64,"tag":179,"props":735,"children":736},{},[737,747,771,781,791,801],{"type":64,"tag":143,"props":738,"children":739},{},[740,745],{"type":64,"tag":94,"props":741,"children":742},{},[743],{"type":70,"value":744},"Feature selection on the full dataset before CV.",{"type":70,"value":746}," The selected features already \"know\" the test labels. Always select inside the CV loop.",{"type":64,"tag":143,"props":748,"children":749},{},[750,755,757,762,764,769],{"type":64,"tag":94,"props":751,"children":752},{},[753],{"type":70,"value":754},"Temporal leakage.",{"type":70,"value":756}," A lab is ordered ",{"type":64,"tag":86,"props":758,"children":759},{},[760],{"type":70,"value":761},"because",{"type":70,"value":763}," clinicians already suspect the outcome. The feature's presence\u002Fabsence itself encodes the label. Define a clean ",{"type":64,"tag":94,"props":765,"children":766},{},[767],{"type":70,"value":768},"time origin",{"type":70,"value":770}," (e.g., admission, diagnosis, randomization) and only use data available before it.",{"type":64,"tag":143,"props":772,"children":773},{},[774,779],{"type":64,"tag":94,"props":775,"children":776},{},[777],{"type":70,"value":778},"Outcome-in-features.",{"type":70,"value":780}," Variables that are definitionally downstream of the outcome (e.g., \"received hospice\" predicting death; \"tumor stage IV\" predicting metastasis) are circular.",{"type":64,"tag":143,"props":782,"children":783},{},[784,789],{"type":64,"tag":94,"props":785,"children":786},{},[787],{"type":70,"value":788},"Preprocessing leakage.",{"type":70,"value":790}," Computing normalization means, imputation medians, scaler statistics, or PCA on the full dataset leaks test distribution into training. Fit on training folds only, apply to test.",{"type":64,"tag":143,"props":792,"children":793},{},[794,799],{"type":64,"tag":94,"props":795,"children":796},{},[797],{"type":70,"value":798},"Batch\u002Fsite leakage.",{"type":70,"value":800}," If all cases come from Site A and all controls from Site B, the model learns site, not biology.",{"type":64,"tag":143,"props":802,"children":803},{},[804,809],{"type":64,"tag":94,"props":805,"children":806},{},[807],{"type":70,"value":808},"Target leakage via proxies.",{"type":70,"value":810}," Encounter ID, physician ID, or order timestamps can proxy outcome.",{"type":64,"tag":273,"props":812,"children":814},{"id":813},"_5-evaluation-metrics-by-intent",[815],{"type":70,"value":816},"5. Evaluation Metrics by Intent",{"type":64,"tag":80,"props":818,"children":819},{},[820],{"type":70,"value":821},"Choosing the wrong metric hides or inflates effects.",{"type":64,"tag":139,"props":823,"children":824},{},[825,851,884],{"type":64,"tag":143,"props":826,"children":827},{},[828,833],{"type":64,"tag":94,"props":829,"children":830},{},[831],{"type":70,"value":832},"Prognostic (time-to-event):",{"type":64,"tag":139,"props":834,"children":835},{},[836,841,846],{"type":64,"tag":143,"props":837,"children":838},{},[839],{"type":70,"value":840},"C-index (Harrell's or Uno's for censoring).",{"type":64,"tag":143,"props":842,"children":843},{},[844],{"type":70,"value":845},"Time-dependent AUC at clinically relevant horizons (e.g., 1, 3, 5 years).",{"type":64,"tag":143,"props":847,"children":848},{},[849],{"type":70,"value":850},"Calibration (calibration-in-the-large, calibration slope, calibration plots). Discrimination without calibration is insufficient.",{"type":64,"tag":143,"props":852,"children":853},{},[854,859],{"type":64,"tag":94,"props":855,"children":856},{},[857],{"type":70,"value":858},"Predictive:",{"type":64,"tag":139,"props":860,"children":861},{},[862,874,879],{"type":64,"tag":143,"props":863,"children":864},{},[865,867,872],{"type":70,"value":866},"Treatment × biomarker ",{"type":64,"tag":94,"props":868,"children":869},{},[870],{"type":70,"value":871},"interaction",{"type":70,"value":873}," term (p-value and effect size).",{"type":64,"tag":143,"props":875,"children":876},{},[877],{"type":70,"value":878},"Subgroup-specific hazard ratios or risk differences — both point estimates and CIs.",{"type":64,"tag":143,"props":880,"children":881},{},[882],{"type":70,"value":883},"Qualitative interaction (benefit flips direction) is stronger evidence than quantitative interaction (benefit magnitude differs).",{"type":64,"tag":143,"props":885,"children":886},{},[887,892],{"type":64,"tag":94,"props":888,"children":889},{},[890],{"type":70,"value":891},"Diagnostic:",{"type":64,"tag":139,"props":893,"children":894},{},[895,907,912],{"type":64,"tag":143,"props":896,"children":897},{},[898,900,905],{"type":70,"value":899},"Sensitivity and specificity at the ",{"type":64,"tag":86,"props":901,"children":902},{},[903],{"type":70,"value":904},"pre-specified",{"type":70,"value":906}," clinical threshold, not the one that maximizes Youden's J on the test set.",{"type":64,"tag":143,"props":908,"children":909},{},[910],{"type":70,"value":911},"AUROC as a summary; AUPRC when prevalence is low and positive class is the focus.",{"type":64,"tag":143,"props":913,"children":914},{},[915,917,922],{"type":70,"value":916},"PPV and NPV — ",{"type":64,"tag":94,"props":918,"children":919},{},[920],{"type":70,"value":921},"these are prevalence-dependent",{"type":70,"value":923},". Report the prevalence assumed and re-estimate PPV\u002FNPV at the deployment prevalence.",{"type":64,"tag":80,"props":925,"children":926},{},[927,929,934],{"type":70,"value":928},"Always report ",{"type":64,"tag":94,"props":930,"children":931},{},[932],{"type":70,"value":933},"confidence intervals",{"type":70,"value":935}," (bootstrap or analytic) alongside point estimates.",{"type":64,"tag":273,"props":937,"children":939},{"id":938},"_6-validation-hierarchy",[940],{"type":70,"value":941},"6. Validation Hierarchy",{"type":64,"tag":80,"props":943,"children":944},{},[945],{"type":70,"value":946},"A biomarker graduates through tiers. Do not skip.",{"type":64,"tag":179,"props":948,"children":949},{},[950,960,970,980],{"type":64,"tag":143,"props":951,"children":952},{},[953,958],{"type":64,"tag":94,"props":954,"children":955},{},[956],{"type":70,"value":957},"Internal validation",{"type":70,"value":959}," — nested CV or bootstrap on the discovery cohort. Optimism-corrected.",{"type":64,"tag":143,"props":961,"children":962},{},[963,968],{"type":64,"tag":94,"props":964,"children":965},{},[966],{"type":70,"value":967},"Internal-external",{"type":70,"value":969}," — leave-one-site-out or leave-one-batch-out within the discovery dataset. Probes site\u002Fbatch robustness.",{"type":64,"tag":143,"props":971,"children":972},{},[973,978],{"type":64,"tag":94,"props":974,"children":975},{},[976],{"type":70,"value":977},"External validation",{"type":70,"value":979}," — independent cohort, ideally collected by a different group, with pre-specified model and threshold (locked).",{"type":64,"tag":143,"props":981,"children":982},{},[983,988],{"type":64,"tag":94,"props":984,"children":985},{},[986],{"type":70,"value":987},"Prospective validation",{"type":70,"value":989}," — biomarker used in real time with outcomes assessed after. Required for most regulatory submissions.",{"type":64,"tag":80,"props":991,"children":992},{},[993,995,1000],{"type":70,"value":994},"A biomarker is ",{"type":64,"tag":94,"props":996,"children":997},{},[998],{"type":70,"value":999},"not validated",{"type":70,"value":1001}," until step 3 at minimum, and the model + threshold were locked before seeing the external data. Re-tuning on external data = discovery, not validation.",{"type":64,"tag":606,"props":1003,"children":1005},{"id":1004},"decision-tree-which-validation-tier-applies",[1006],{"type":70,"value":1007},"Decision tree: which validation tier applies?",{"type":64,"tag":613,"props":1009,"children":1012},{"className":1010,"code":1011,"language":70},[616],"Start\n│\n├── Only one cohort available?\n│     └── Internal validation only (nested CV + bootstrap optimism correction).\n│         Label result as \"discovery\", not \"validated\".\n│\n├── Multi-site data within a single study?\n│     └── Add internal-external (leave-one-site-out).\n│         Report performance per site, not just pooled.\n│\n├── Truly independent cohort available?\n│     └── Lock model + threshold → evaluate once → report with CIs.\n│         Pre-register the analysis plan if possible.\n│\n└── Intended for clinical deployment \u002F regulatory submission?\n      └── Prospective validation on the target population,\n          under intended-use conditions, with the locked model.\n",[1013],{"type":64,"tag":620,"props":1014,"children":1015},{"__ignoreMap":622},[1016],{"type":70,"value":1011},{"type":64,"tag":273,"props":1018,"children":1020},{"id":1019},"_7-sample-size-and-events-per-variable",[1021],{"type":70,"value":1022},"7. Sample Size and Events-Per-Variable",{"type":64,"tag":80,"props":1024,"children":1025},{},[1026,1028,1033],{"type":70,"value":1027},"For Cox and logistic models: aim for ",{"type":64,"tag":94,"props":1029,"children":1030},{},[1031],{"type":70,"value":1032},"10–20 events per candidate variable",{"type":70,"value":1034}," considered during modeling (not just the final set). Counting only the selected variables after LASSO is a mistake — the selection itself used the full candidate pool.",{"type":64,"tag":80,"props":1036,"children":1037},{},[1038],{"type":70,"value":1039},"In high-dimensional settings (omics, radiomics) events-per-variable is unattainable. Compensate with:",{"type":64,"tag":139,"props":1041,"children":1042},{},[1043,1048,1057,1067],{"type":64,"tag":143,"props":1044,"children":1045},{},[1046],{"type":70,"value":1047},"Penalization (LASSO\u002Felastic net) or Bayesian shrinkage priors.",{"type":64,"tag":143,"props":1049,"children":1050},{},[1051,1055],{"type":64,"tag":94,"props":1052,"children":1053},{},[1054],{"type":70,"value":573},{"type":70,"value":1056}," to control false-discovery rate of selected features.",{"type":64,"tag":143,"props":1058,"children":1059},{},[1060,1065],{"type":64,"tag":94,"props":1061,"children":1062},{},[1063],{"type":70,"value":1064},"Optimism-corrected performance",{"type":70,"value":1066}," via bootstrap (.632+ or Harrell's bootstrap optimism correction).",{"type":64,"tag":143,"props":1068,"children":1069},{},[1070],{"type":70,"value":1071},"Pre-specification of the number of features carried forward.",{"type":64,"tag":80,"props":1073,"children":1074},{},[1075],{"type":70,"value":1076},"Event counts, not sample size, are the binding constraint for time-to-event outcomes. 1000 patients with 30 events ≈ a 30-event study.",{"type":64,"tag":273,"props":1078,"children":1080},{"id":1079},"_8-multi-omics-integration",[1081],{"type":70,"value":1082},"8. Multi-Omics Integration",{"type":64,"tag":80,"props":1084,"children":1085},{},[1086],{"type":70,"value":1087},"When combining transcriptomics + proteomics + imaging + clinical:",{"type":64,"tag":139,"props":1089,"children":1090},{},[1091,1101,1118],{"type":64,"tag":143,"props":1092,"children":1093},{},[1094,1099],{"type":64,"tag":94,"props":1095,"children":1096},{},[1097],{"type":70,"value":1098},"Early integration",{"type":70,"value":1100}," (concatenate all features, fit one model): high-dimensional, sensitive to scale differences and missing modalities. Works only with very large n.",{"type":64,"tag":143,"props":1102,"children":1103},{},[1104,1109,1111,1116],{"type":64,"tag":94,"props":1105,"children":1106},{},[1107],{"type":70,"value":1108},"Intermediate integration",{"type":70,"value":1110}," (MOFA, canonical correlation, kernel methods, shared latent factors): good when you want to find ",{"type":64,"tag":86,"props":1112,"children":1113},{},[1114],{"type":70,"value":1115},"shared",{"type":70,"value":1117}," biology across layers. Moderate n.",{"type":64,"tag":143,"props":1119,"children":1120},{},[1121,1126],{"type":64,"tag":94,"props":1122,"children":1123},{},[1124],{"type":70,"value":1125},"Late integration",{"type":70,"value":1127}," (fit one model per omic, combine predictions via stacking or simple averaging): most robust when n is small, tolerates missing modalities per patient, and is easiest to validate modality-by-modality.",{"type":64,"tag":80,"props":1129,"children":1130},{},[1131,1133,1138],{"type":70,"value":1132},"Default with small-to-moderate sample sizes: ",{"type":64,"tag":94,"props":1134,"children":1135},{},[1136],{"type":70,"value":1137},"late integration",{"type":70,"value":1139},". Escalate to intermediate or early only if n supports it and shared-factor interpretation is a goal.",{"type":64,"tag":80,"props":1141,"children":1142},{},[1143],{"type":70,"value":1144},"Missing modalities are the norm, not the exception — design for it from the start.",{"type":64,"tag":273,"props":1146,"children":1148},{"id":1147},"_9-clinical-utility-the-decision-test",[1149],{"type":70,"value":1150},"9. Clinical Utility — The Decision Test",{"type":64,"tag":80,"props":1152,"children":1153},{},[1154],{"type":70,"value":1155},"A biomarker with excellent AUC that does not change any decision is not useful. For every candidate, the agent should force the user to answer:",{"type":64,"tag":139,"props":1157,"children":1158},{},[1159,1169,1179,1196],{"type":64,"tag":143,"props":1160,"children":1161},{},[1162,1167],{"type":64,"tag":94,"props":1163,"children":1164},{},[1165],{"type":70,"value":1166},"What decision does this biomarker change?",{"type":70,"value":1168}," (treat vs not, escalate vs de-escalate, biopsy vs observe, enroll vs exclude.)",{"type":64,"tag":143,"props":1170,"children":1171},{},[1172,1177],{"type":64,"tag":94,"props":1173,"children":1174},{},[1175],{"type":70,"value":1176},"At what threshold?",{"type":70,"value":1178}," Thresholds must be pre-specified and tied to the decision's costs and benefits.",{"type":64,"tag":143,"props":1180,"children":1181},{},[1182,1187,1189,1194],{"type":64,"tag":94,"props":1183,"children":1184},{},[1185],{"type":70,"value":1186},"What is the net benefit",{"type":70,"value":1188}," over treat-all and treat-none, across the plausible threshold range? Use ",{"type":64,"tag":94,"props":1190,"children":1191},{},[1192],{"type":70,"value":1193},"decision curve analysis",{"type":70,"value":1195},".",{"type":64,"tag":143,"props":1197,"children":1198},{},[1199,1204],{"type":64,"tag":94,"props":1200,"children":1201},{},[1202],{"type":70,"value":1203},"Who is harmed",{"type":70,"value":1205}," by a false positive or false negative, and at what rate is that acceptable?",{"type":64,"tag":80,"props":1207,"children":1208},{},[1209],{"type":70,"value":1210},"If the user cannot answer these, clinical utility is undefined — regardless of AUC.",{"type":64,"tag":73,"props":1212,"children":1214},{"id":1213},"when-not-to-use-this-skill",[1215],{"type":70,"value":1216},"When NOT to Use This Skill",{"type":64,"tag":139,"props":1218,"children":1219},{},[1220,1225,1230],{"type":64,"tag":143,"props":1221,"children":1222},{},[1223],{"type":70,"value":1224},"Established validated biomarkers already in clinical guidelines (e.g., HER2, BRCA1\u002F2) — use guideline-concordant testing protocols instead",{"type":64,"tag":143,"props":1226,"children":1227},{},[1228],{"type":70,"value":1229},"Clinical deployment or CLIA\u002FCAP lab validation decisions — those require regulatory and laboratory expertise, not discovery methodology",{"type":64,"tag":143,"props":1231,"children":1232},{},[1233],{"type":70,"value":1234},"Companion diagnostic development — that is a regulatory\u002Fmanufacturing problem, not a biomarker discovery problem",{"type":64,"tag":73,"props":1236,"children":1238},{"id":1237},"when-to-escalate-to-human-expert",[1239],{"type":70,"value":1240},"When to Escalate to Human Expert",{"type":64,"tag":139,"props":1242,"children":1243},{},[1244,1249,1254],{"type":64,"tag":143,"props":1245,"children":1246},{},[1247],{"type":70,"value":1248},"The biomarker will be used for treatment selection in a clinical trial — requires biostatistician sign-off on the adaptive design",{"type":64,"tag":143,"props":1250,"children":1251},{},[1252],{"type":70,"value":1253},"Analytical validation (sensitivity, specificity, reproducibility across platforms) is needed — requires wet-lab expertise",{"type":64,"tag":143,"props":1255,"children":1256},{},[1257],{"type":70,"value":1258},"Ethical review is needed for biomarker-driven patient stratification that could deny treatment to a subgroup",{"type":64,"tag":73,"props":1260,"children":1262},{"id":1261},"common-mistakes",[1263],{"type":70,"value":1264},"Common Mistakes",{"type":64,"tag":139,"props":1266,"children":1267},{},[1268,1292,1313,1334,1355,1376,1397,1418,1439,1460,1481,1502,1531,1552,1573],{"type":64,"tag":143,"props":1269,"children":1270},{},[1271,1276,1278,1283,1285,1290],{"type":64,"tag":94,"props":1272,"children":1273},{},[1274],{"type":70,"value":1275},"Wrong:",{"type":70,"value":1277}," Claiming a biomarker is \"predictive\" from a single-arm study\n",{"type":64,"tag":94,"props":1279,"children":1280},{},[1281],{"type":70,"value":1282},"Right:",{"type":70,"value":1284}," Require a comparator arm (RCT or emulated target trial) to estimate a treatment-by-biomarker interaction\n",{"type":64,"tag":94,"props":1286,"children":1287},{},[1288],{"type":70,"value":1289},"Why:",{"type":70,"value":1291}," Without a counterfactual arm, you cannot distinguish prognostic from predictive — the biomarker may simply mark prognosis regardless of treatment",{"type":64,"tag":143,"props":1293,"children":1294},{},[1295,1299,1301,1305,1307,1311],{"type":64,"tag":94,"props":1296,"children":1297},{},[1298],{"type":70,"value":1275},{"type":70,"value":1300}," Performing feature selection on the full dataset, then running CV on the reduced feature set\n",{"type":64,"tag":94,"props":1302,"children":1303},{},[1304],{"type":70,"value":1282},{"type":70,"value":1306}," Always perform feature selection inside the CV inner loop so each fold selects features independently\n",{"type":64,"tag":94,"props":1308,"children":1309},{},[1310],{"type":70,"value":1289},{"type":70,"value":1312}," Selected features already \"know\" the test labels, inflating performance estimates and producing unreproducible models",{"type":64,"tag":143,"props":1314,"children":1315},{},[1316,1320,1322,1326,1328,1332],{"type":64,"tag":94,"props":1317,"children":1318},{},[1319],{"type":70,"value":1275},{"type":70,"value":1321}," Splitting by row when a patient contributes multiple samples\n",{"type":64,"tag":94,"props":1323,"children":1324},{},[1325],{"type":70,"value":1282},{"type":70,"value":1327}," Split at the patient level so all samples from one patient stay in the same fold\n",{"type":64,"tag":94,"props":1329,"children":1330},{},[1331],{"type":70,"value":1289},{"type":70,"value":1333}," Repeated measures, bilateral lesions, and longitudinal labs leak patient identity across folds, inflating apparent performance",{"type":64,"tag":143,"props":1335,"children":1336},{},[1337,1341,1343,1347,1349,1353],{"type":64,"tag":94,"props":1338,"children":1339},{},[1340],{"type":70,"value":1275},{"type":70,"value":1342}," Tuning the decision threshold on the test set\n",{"type":64,"tag":94,"props":1344,"children":1345},{},[1346],{"type":70,"value":1282},{"type":70,"value":1348}," Lock thresholds on training data or pre-specify them based on clinical cost-benefit reasoning\n",{"type":64,"tag":94,"props":1350,"children":1351},{},[1352],{"type":70,"value":1289},{"type":70,"value":1354}," Optimizing the threshold on test data overfits to the evaluation set and produces unreliable operating characteristics",{"type":64,"tag":143,"props":1356,"children":1357},{},[1358,1362,1364,1368,1370,1374],{"type":64,"tag":94,"props":1359,"children":1360},{},[1361],{"type":70,"value":1275},{"type":70,"value":1363}," Reporting PPV\u002FNPV from a 50\u002F50 case-control sample and implying it generalizes\n",{"type":64,"tag":94,"props":1365,"children":1366},{},[1367],{"type":70,"value":1282},{"type":70,"value":1369}," Re-estimate PPV and NPV at the deployment prevalence using Bayes' theorem\n",{"type":64,"tag":94,"props":1371,"children":1372},{},[1373],{"type":70,"value":1289},{"type":70,"value":1375}," PPV and NPV are prevalence-dependent — values from enriched samples are misleading at real-world disease rates",{"type":64,"tag":143,"props":1377,"children":1378},{},[1379,1383,1385,1389,1391,1395],{"type":64,"tag":94,"props":1380,"children":1381},{},[1382],{"type":70,"value":1275},{"type":70,"value":1384}," Ignoring calibration when reporting model performance\n",{"type":64,"tag":94,"props":1386,"children":1387},{},[1388],{"type":70,"value":1282},{"type":70,"value":1390}," Always report calibration (calibration-in-the-large, calibration slope, calibration plots) alongside discrimination\n",{"type":64,"tag":94,"props":1392,"children":1393},{},[1394],{"type":70,"value":1289},{"type":70,"value":1396}," Good discrimination with poor calibration produces clinically dangerous probability estimates that misinform decisions",{"type":64,"tag":143,"props":1398,"children":1399},{},[1400,1404,1406,1410,1412,1416],{"type":64,"tag":94,"props":1401,"children":1402},{},[1403],{"type":70,"value":1275},{"type":70,"value":1405}," Counting events-per-variable only after feature selection\n",{"type":64,"tag":94,"props":1407,"children":1408},{},[1409],{"type":70,"value":1282},{"type":70,"value":1411}," Count EPV against all candidate variables considered during modeling, not just the final selected set\n",{"type":64,"tag":94,"props":1413,"children":1414},{},[1415],{"type":70,"value":1289},{"type":70,"value":1417}," The selection process itself used the full candidate pool — the effective degrees of freedom reflect the original dimensionality",{"type":64,"tag":143,"props":1419,"children":1420},{},[1421,1425,1427,1431,1433,1437],{"type":64,"tag":94,"props":1422,"children":1423},{},[1424],{"type":70,"value":1275},{"type":70,"value":1426}," Declaring a biomarker \"validated\" based on cross-validation on the discovery cohort\n",{"type":64,"tag":94,"props":1428,"children":1429},{},[1430],{"type":70,"value":1282},{"type":70,"value":1432}," Require external replication on an independent cohort with a locked model and pre-specified threshold\n",{"type":64,"tag":94,"props":1434,"children":1435},{},[1436],{"type":70,"value":1289},{"type":70,"value":1438}," Cross-validation is internal validation only — it estimates optimism but does not prove generalizability",{"type":64,"tag":143,"props":1440,"children":1441},{},[1442,1446,1448,1452,1454,1458],{"type":64,"tag":94,"props":1443,"children":1444},{},[1445],{"type":70,"value":1275},{"type":70,"value":1447}," Confounding the biomarker signal with site, batch, platform, or scanner effects\n",{"type":64,"tag":94,"props":1449,"children":1450},{},[1451],{"type":70,"value":1282},{"type":70,"value":1453}," Always check whether site\u002Fbatch predicts outcome as well as the biomarker does; include site as a covariate or use leave-one-site-out validation\n",{"type":64,"tag":94,"props":1455,"children":1456},{},[1457],{"type":70,"value":1289},{"type":70,"value":1459}," If all cases come from one site and controls from another, the model learns site identity, not biology",{"type":64,"tag":143,"props":1461,"children":1462},{},[1463,1467,1469,1473,1475,1479],{"type":64,"tag":94,"props":1464,"children":1465},{},[1466],{"type":70,"value":1275},{"type":70,"value":1468}," Using future information as a feature (e.g., a lab ordered because of clinical suspicion)\n",{"type":64,"tag":94,"props":1470,"children":1471},{},[1472],{"type":70,"value":1282},{"type":70,"value":1474}," Define a clean time origin and only use data available before it\n",{"type":64,"tag":94,"props":1476,"children":1477},{},[1478],{"type":70,"value":1289},{"type":70,"value":1480}," A lab ordered because of suspicion encodes the suspicion itself — this is temporal leakage, not predictive signal",{"type":64,"tag":143,"props":1482,"children":1483},{},[1484,1488,1490,1494,1496,1500],{"type":64,"tag":94,"props":1485,"children":1486},{},[1487],{"type":70,"value":1275},{"type":70,"value":1489}," Early integration of multi-omics with small sample sizes\n",{"type":64,"tag":94,"props":1491,"children":1492},{},[1493],{"type":70,"value":1282},{"type":70,"value":1495}," Use late integration (fit one model per omic, combine predictions via stacking) when n is small to moderate\n",{"type":64,"tag":94,"props":1497,"children":1498},{},[1499],{"type":70,"value":1289},{"type":70,"value":1501}," Concatenating thousands of features across layers with a few hundred patients overfits to batch effects, not biology",{"type":64,"tag":143,"props":1503,"children":1504},{},[1505,1509,1511,1515,1517,1521,1523,1529],{"type":64,"tag":94,"props":1506,"children":1507},{},[1508],{"type":70,"value":1275},{"type":70,"value":1510}," Reporting only point estimates without confidence intervals\n",{"type":64,"tag":94,"props":1512,"children":1513},{},[1514],{"type":70,"value":1282},{"type":70,"value":1516}," Always include bootstrap or analytic confidence intervals for all performance metrics\n",{"type":64,"tag":94,"props":1518,"children":1519},{},[1520],{"type":70,"value":1289},{"type":70,"value":1522}," Single numbers hide instability — a C-index of 0.78 with a 95% CI of ",{"type":64,"tag":1524,"props":1525,"children":1526},"span",{},[1527],{"type":70,"value":1528},"0.55, 0.92",{"type":70,"value":1530}," tells a very different story",{"type":64,"tag":143,"props":1532,"children":1533},{},[1534,1538,1540,1544,1546,1550],{"type":64,"tag":94,"props":1535,"children":1536},{},[1537],{"type":70,"value":1275},{"type":70,"value":1539}," Optimizing AUC while ignoring clinical utility\n",{"type":64,"tag":94,"props":1541,"children":1542},{},[1543],{"type":70,"value":1282},{"type":70,"value":1545}," Perform decision curve analysis to demonstrate net benefit over treat-all and treat-none strategies\n",{"type":64,"tag":94,"props":1547,"children":1548},{},[1549],{"type":70,"value":1289},{"type":70,"value":1551}," A 0.85 AUC that changes no clinical decision is worse than a 0.70 AUC that reliably changes one",{"type":64,"tag":143,"props":1553,"children":1554},{},[1555,1559,1561,1565,1567,1571],{"type":64,"tag":94,"props":1556,"children":1557},{},[1558],{"type":70,"value":1275},{"type":70,"value":1560}," Retraining or tuning the model on external validation data \"just a little\"\n",{"type":64,"tag":94,"props":1562,"children":1563},{},[1564],{"type":70,"value":1282},{"type":70,"value":1566}," Lock the model completely before seeing external data — any tuning collapses validation back into discovery\n",{"type":64,"tag":94,"props":1568,"children":1569},{},[1570],{"type":70,"value":1289},{"type":70,"value":1572}," Even minor adjustments on external data eliminate its independence, making the \"validation\" circular",{"type":64,"tag":143,"props":1574,"children":1575},{},[1576,1580,1582,1586,1588,1592],{"type":64,"tag":94,"props":1577,"children":1578},{},[1579],{"type":70,"value":1275},{"type":70,"value":1581}," Skipping decision curve analysis when reporting biomarker performance\n",{"type":64,"tag":94,"props":1583,"children":1584},{},[1585],{"type":70,"value":1282},{"type":70,"value":1587}," Always include net-benefit curves across the plausible threshold range\n",{"type":64,"tag":94,"props":1589,"children":1590},{},[1591],{"type":70,"value":1289},{"type":70,"value":1593}," Without net-benefit reasoning, there is no evidence the biomarker helps patients — only that it correlates with outcome",{"type":64,"tag":73,"props":1595,"children":1597},{"id":1596},"references",[1598],{"type":70,"value":1599},"References",{"type":64,"tag":139,"props":1601,"children":1602},{},[1603,1608,1621,1632,1637],{"type":64,"tag":143,"props":1604,"children":1605},{},[1606],{"type":70,"value":1607},"Steyerberg EW. Clinical Prediction Models. Springer 2019",{"type":64,"tag":143,"props":1609,"children":1610},{},[1611,1613],{"type":70,"value":1612},"Vickers AJ et al. Decision curve analysis. Med Decis Making 2006, ",{"type":64,"tag":1614,"props":1615,"children":1619},"a",{"href":1616,"rel":1617},"https:\u002F\u002Fdoi.org\u002F10.1177\u002F0272989X06295361",[1618],"nofollow",[1620],{"type":70,"value":1616},{"type":64,"tag":143,"props":1622,"children":1623},{},[1624,1626],{"type":70,"value":1625},"Meinshausen & Bühlmann. Stability selection. JRSS-B 2010, ",{"type":64,"tag":1614,"props":1627,"children":1630},{"href":1628,"rel":1629},"https:\u002F\u002Fdoi.org\u002F10.1111\u002Fj.1467-9868.2010.00740.x",[1618],[1631],{"type":70,"value":1628},{"type":64,"tag":143,"props":1633,"children":1634},{},[1635],{"type":70,"value":1636},"Harrell FE. Regression Modeling Strategies. Springer 2015",{"type":64,"tag":143,"props":1638,"children":1639},{},[1640,1642],{"type":70,"value":1641},"Simon RM et al. J Natl Cancer Inst 2009, ",{"type":64,"tag":1614,"props":1643,"children":1646},{"href":1644,"rel":1645},"https:\u002F\u002Fdoi.org\u002F10.1093\u002Fjnci\u002Fdjp335",[1618],[1647],{"type":70,"value":1644},{"items":1649,"total":1827},[1650,1669,1690,1700,1713,1726,1736,1746,1767,1782,1797,1812],{"slug":1651,"name":1651,"fn":1652,"description":1653,"org":1654,"tags":1655,"stars":1666,"repoUrl":1667,"updatedAt":1668},"agentcore-investigation","investigate Bedrock AgentCore runtime sessions","Investigate Bedrock AgentCore runtime sessions via CloudWatch Logs Insights — resolve session\u002Ftrace IDs, query OTEL spans, filter noise, build timelines. Use when debugging AgentCore agent sessions, tracing tool calls, or analyzing latency.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1656,1657,1660,1663],{"name":24,"slug":25,"type":16},{"name":1658,"slug":1659,"type":16},"Debugging","debugging",{"name":1661,"slug":1662,"type":16},"Logs","logs",{"name":1664,"slug":1665,"type":16},"Observability","observability",9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":1670,"name":1671,"fn":1672,"description":1673,"org":1674,"tags":1675,"stars":1666,"repoUrl":1667,"updatedAt":1689},"amazon-aurora-dsql","amazon aurora dsql","build applications with Aurora DSQL","Build with Aurora DSQL — manage schemas, execute queries, handle migrations, diagnose query plans, load data, and develop applications with a serverless, distributed SQL database. Covers IAM auth, multi-tenant patterns, MySQL-to-DSQL and PostgreSQL-to-DSQL schema conversion, FK replacement code generation, OCC retry patterns, ORM migration (Django\u002FHibernate\u002FRails), DDL operations, query plan explainability, SQL compatibility validation, and bulk data loading. Triggers on phrases like: DSQL, Aurora DSQL, create DSQL table, DSQL schema, migrate to DSQL, distributed SQL database, serverless PostgreSQL-compatible database, DSQL query plan, DSQL EXPLAIN ANALYZE, why is my DSQL query slow, DSQL foreign key, DSQL OCC retry, DSQL multi-region, load into DSQL, load CSV into DSQL, bulk load DSQL, aurora-dsql-loader.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1676,1679,1680,1683,1686],{"name":1677,"slug":1678,"type":16},"Aurora","aurora",{"name":24,"slug":25,"type":16},{"name":1681,"slug":1682,"type":16},"Database","database",{"name":1684,"slug":1685,"type":16},"Serverless","serverless",{"name":1687,"slug":1688,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":1691,"name":1692,"fn":1672,"description":1673,"org":1693,"tags":1694,"stars":1666,"repoUrl":1667,"updatedAt":1699},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1695,1696,1697,1698],{"name":24,"slug":25,"type":16},{"name":1681,"slug":1682,"type":16},{"name":1684,"slug":1685,"type":16},{"name":1687,"slug":1688,"type":16},"2026-07-12T08:36:42.694299",{"slug":1701,"name":1702,"fn":1672,"description":1673,"org":1703,"tags":1704,"stars":1666,"repoUrl":1667,"updatedAt":1712},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1705,1706,1707,1710,1711],{"name":24,"slug":25,"type":16},{"name":1681,"slug":1682,"type":16},{"name":1708,"slug":1709,"type":16},"Migration","migration",{"name":1684,"slug":1685,"type":16},{"name":1687,"slug":1688,"type":16},"2026-07-12T08:36:38.584057",{"slug":1714,"name":1715,"fn":1672,"description":1673,"org":1716,"tags":1717,"stars":1666,"repoUrl":1667,"updatedAt":1725},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1718,1719,1720,1723,1724],{"name":24,"slug":25,"type":16},{"name":1681,"slug":1682,"type":16},{"name":1721,"slug":1722,"type":16},"PostgreSQL","postgresql",{"name":1684,"slug":1685,"type":16},{"name":1687,"slug":1688,"type":16},"2026-07-12T08:36:46.530743",{"slug":1727,"name":1728,"fn":1672,"description":1673,"org":1729,"tags":1730,"stars":1666,"repoUrl":1667,"updatedAt":1735},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1731,1732,1733,1734],{"name":24,"slug":25,"type":16},{"name":1681,"slug":1682,"type":16},{"name":1684,"slug":1685,"type":16},{"name":1687,"slug":1688,"type":16},"2026-07-12T08:36:48.104182",{"slug":1737,"name":1737,"fn":1672,"description":1673,"org":1738,"tags":1739,"stars":1666,"repoUrl":1667,"updatedAt":1745},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1740,1741,1742,1743,1744],{"name":24,"slug":25,"type":16},{"name":1681,"slug":1682,"type":16},{"name":1708,"slug":1709,"type":16},{"name":1684,"slug":1685,"type":16},{"name":1687,"slug":1688,"type":16},"2026-07-12T08:36:36.374512",{"slug":1747,"name":1747,"fn":1748,"description":1749,"org":1750,"tags":1751,"stars":1764,"repoUrl":1765,"updatedAt":1766},"cost-efficiency-analyzer","analyze cost efficiency and expenses","Analyzes cost structure, cost efficiency, and expense management from P&L data. Use when the user asks about costs, expenses, COGS, operating expenses, cost ratios, cost control, spending efficiency, margin compression from cost side, or wants to understand where money is going. Also use for \"are we spending too much\", \"cost breakdown\", \"expense analysis\", or \"how efficient are our operations\". NOT for revenue or top-line analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1752,1755,1758,1761],{"name":1753,"slug":1754,"type":16},"Accounting","accounting",{"name":1756,"slug":1757,"type":16},"Analytics","analytics",{"name":1759,"slug":1760,"type":16},"Cost Optimization","cost-optimization",{"name":1762,"slug":1763,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":1768,"name":1768,"fn":1769,"description":1770,"org":1771,"tags":1772,"stars":1764,"repoUrl":1765,"updatedAt":1781},"executive-financial-briefing","generate executive financial briefings","Generates a concise executive-level financial briefing or summary suitable for a CEO, CFO, or board presentation. Use when the user asks for a summary, briefing, executive summary, board update, financial overview, financial health check, or \"how is the business doing\". Covers the full P&L picture in one page. Also use for \"give me the highlights\", \"what do I need to know\", or \"quick financial update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1773,1774,1775,1778],{"name":24,"slug":25,"type":16},{"name":1762,"slug":1763,"type":16},{"name":1776,"slug":1777,"type":16},"Management","management",{"name":1779,"slug":1780,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":1783,"name":1783,"fn":1784,"description":1785,"org":1786,"tags":1787,"stars":1764,"repoUrl":1765,"updatedAt":1796},"multi-quarter-trend-analysis","analyze multi-quarter financial trends","Analyzes financial trends across multiple quarters by comparing P&L metrics over time. Use when the user wants to see trends, patterns, trajectories, or directional movement across 3 or more quarters. Also use for \"how are we trending\", \"show me the trend\", \"track performance over time\", \"quarter over quarter comparison across all quarters\", or any multi-period longitudinal analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1788,1789,1790,1793],{"name":1756,"slug":1757,"type":16},{"name":1762,"slug":1763,"type":16},{"name":1791,"slug":1792,"type":16},"Financial Statements","financial-statements",{"name":1794,"slug":1795,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":1798,"name":1798,"fn":1799,"description":1800,"org":1801,"tags":1802,"stars":1764,"repoUrl":1765,"updatedAt":1811},"pdf","process and manipulate PDF documents","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1803,1806,1809],{"name":1804,"slug":1805,"type":16},"Automation","automation",{"name":1807,"slug":1808,"type":16},"Documents","documents",{"name":1810,"slug":1798,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":1813,"name":1813,"fn":1814,"description":1815,"org":1816,"tags":1817,"stars":1764,"repoUrl":1765,"updatedAt":1826},"quarterly-kpi-calculator","calculate quarterly financial KPIs","Calculates quarterly financial KPIs from P&L data. P&L figures can be provided directly by the user or fetched from the financial data MCP server. Use when the user wants KPI calculations such as Gross Margin %, EBITDA Margin %, Operating Expense Ratio, or Revenue Growth % QoQ. Also use for quarterly performance review, P&L analysis, or interpreting financial ratios against benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1818,1819,1822,1823],{"name":1753,"slug":1754,"type":16},{"name":1820,"slug":1821,"type":16},"Data Analysis","data-analysis",{"name":1762,"slug":1763,"type":16},{"name":1824,"slug":1825,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150,{"items":1829,"total":1918},[1830,1848,1855,1869,1882,1895,1908],{"slug":1831,"name":1831,"fn":1832,"description":1833,"org":1834,"tags":1835,"stars":26,"repoUrl":27,"updatedAt":1847},"aws-genai-ml-architect","design AWS GenAI and ML architectures","Reasoning skill for designing AWS GenAI and ML architectures for healthcare and life sciences workloads. Use when the user asks to choose between SageMaker and Bedrock, design a RAG system over medical literature, architect clinical NLP or medical imaging inference, plan genomics or drug discovery pipelines on AWS, address HIPAA\u002FPHI compliance in ML systems, design MLOps for regulated clinical models, or optimize cost for HCLS ML workloads. Triggers include \"AWS architecture\", \"SageMaker vs Bedrock\", \"HIPAA ML\", \"clinical RAG\", \"medical imaging inference\", \"genomics on AWS\", \"PHI training\", \"MLOps healthcare\", \"Bedrock guardrails\", \"HealthLake\", \"HCLS cloud architecture\", \"BAA compliance\", \"SageMaker endpoint\", \"Bedrock knowledge base\", \"clinical NLP on AWS\", \"FDA SaMD on AWS\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1836,1839,1840,1843,1844],{"name":1837,"slug":1838,"type":16},"Architecture","architecture",{"name":24,"slug":25,"type":16},{"name":1841,"slug":1842,"type":16},"Healthcare","healthcare",{"name":18,"slug":19,"type":16},{"name":1845,"slug":1846,"type":16},"LLM","llm","2026-07-12T08:38:07.975937",{"slug":4,"name":4,"fn":5,"description":6,"org":1849,"tags":1850,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1851,1852,1853,1854],{"name":24,"slug":25,"type":16},{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"slug":1856,"name":1856,"fn":1857,"description":1858,"org":1859,"tags":1860,"stars":26,"repoUrl":27,"updatedAt":1868},"cdisc-compliance","reason about CDISC SDTM and ADaM implementation","Reason about CDISC SDTM and ADaM implementation for regulatory submissions. Use when the user asks about SDTM domain mapping, ADaM dataset design, controlled terminology versioning, define.xml completeness, FDA or PMDA submission requirements, query prioritization by clinical impact, SUPPQUAL usage, or CDISC compliance review. Triggers include \"SDTM mapping\", \"ADaM dataset\", \"CDISC compliance\", \"controlled terminology\", \"define.xml\", \"FDA submission data\", \"PMDA submission\", \"SDTM domain\", \"ADSL\", \"ADAE\", \"ADLB\", \"BDS structure\", \"SUPPQUAL\", \"RELREC\", \"value-level metadata\", \"CDISC CT\", \"regulatory submission data standards\", \"eCTD datasets\", \"SDTM 3.3\", \"ADaM 1.1\", \"query prioritization\", \"clinical data review\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1861,1864,1865],{"name":1862,"slug":1863,"type":16},"Clinical Trials","clinical-trials",{"name":18,"slug":19,"type":16},{"name":1866,"slug":1867,"type":16},"Regulatory Compliance","regulatory-compliance","2026-07-12T08:37:33.35594",{"slug":1870,"name":1870,"fn":1871,"description":1872,"org":1873,"tags":1874,"stars":26,"repoUrl":27,"updatedAt":1881},"cell-type-annotation","annotate single-cell RNA-seq clusters","Generate code to assign cell type labels to single-cell RNA-seq clusters using CellTypist, SingleR, marker-based annotation, or reference label transfer (scANVI\u002Fingest). Triggers on requests to \"annotate cell types\", \"label clusters\", \"run CellTypist\", \"SingleR annotation\", \"marker gene dotplot\", \"transfer labels from reference atlas\", \"cell identity\", \"automated annotation\", \"reference mapping\", \"scANVI label transfer\", \"canonical markers\", \"immune cell types\", \"hierarchical annotation\", \"majority voting CellTypist\", \"over-clustering annotation\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1875,1876,1877,1878],{"name":21,"slug":22,"type":16},{"name":1820,"slug":1821,"type":16},{"name":18,"slug":19,"type":16},{"name":1879,"slug":1880,"type":16},"RNA-seq","rna-seq","2026-07-12T08:38:05.443454",{"slug":1883,"name":1883,"fn":1884,"description":1885,"org":1886,"tags":1887,"stars":26,"repoUrl":27,"updatedAt":1894},"cheminformatics","calculate molecular properties with RDKit","Cheminformatics pipeline for small-molecule property calculation, filtering, and similarity analysis using RDKit. Use when the user asks to compute molecular descriptors, filter compounds by Lipinski or Veber rules, detect PAINS, calculate fingerprint similarity, run matched molecular pair analysis, generate ADMET descriptors, or process SMILES. Triggers include \"RDKit\", \"molecular descriptors\", \"Lipinski\", \"rule of five\", \"Veber\", \"PAINS\", \"pan-assay interference\", \"Morgan fingerprint\", \"Tanimoto\", \"fingerprint similarity\", \"matched molecular pair\", \"MMP\", \"mmpdb\", \"ADMET\", \"druglikeness\", \"SMILES\", \"cheminformatics\", \"compound filtering\", \"chemical similarity\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1888,1889,1892,1893],{"name":21,"slug":22,"type":16},{"name":1890,"slug":1891,"type":16},"Chemistry","chemistry",{"name":1820,"slug":1821,"type":16},{"name":14,"slug":15,"type":16},"2026-07-12T08:37:28.334619",{"slug":1896,"name":1896,"fn":1897,"description":1898,"org":1899,"tags":1900,"stars":26,"repoUrl":27,"updatedAt":1907},"claims-analytics","analyze and parse healthcare claims data","Pipeline skill for healthcare claims data parsing, analysis, and fraud detection. Use when the user asks to parse X12 837 or 835 claim files, manipulate ICD-10 CPT or HCPCS codes, detect billing pattern anomalies, profile providers against specialty peers, identify outlier billing behavior, validate NCCI edits programmatically, detect duplicate claims, run Benford's law analysis on charges, build claims data pipelines, or analyze E&M code distributions. Triggers include \"parse X12 837\", \"parse 835\", \"claims SQL\", \"ICD-10 manipulation\", \"CPT code analysis\", \"provider profiling\", \"billing outlier\", \"NCCI validation code\", \"duplicate claim detection\", \"Benford's law charges\", \"claims ETL\", \"E&M distribution analysis\", \"claims analytics pipeline\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1901,1902,1903,1906],{"name":1820,"slug":1821,"type":16},{"name":1841,"slug":1842,"type":16},{"name":1904,"slug":1905,"type":16},"Insurance","insurance",{"name":18,"slug":19,"type":16},"2026-07-12T08:37:34.815088",{"slug":1909,"name":1909,"fn":1910,"description":1911,"org":1912,"tags":1913,"stars":26,"repoUrl":27,"updatedAt":1917},"claims-billing-rules","analyze healthcare claims billing rules","Reasoning skill for healthcare claims billing rules and fraud detection logic. Use when the user asks about CMS billing rules, place of service codes, global surgery periods, modifier usage (25 59 76 77), NCCI edit logic, column 1 column 2 code pairs, mutually exclusive procedures, modifier indicators, fraud waste and abuse patterns, E&M upcoding, unbundling, phantom billing, impossible day detection, coding error versus fraud distinction, FWA investigation methodology, or claims audit logic. Triggers include \"CMS billing rules\", \"NCCI edits\", \"modifier 25\", \"modifier 59\", \"global surgery period\", \"upcoding\", \"unbundling\", \"phantom billing\", \"impossible day\", \"FWA\", \"fraud waste abuse\", \"coding error vs fraud\", \"claims audit\", \"billing compliance\", \"E&M level selection\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1914,1915,1916],{"name":1841,"slug":1842,"type":16},{"name":1904,"slug":1905,"type":16},{"name":1866,"slug":1867,"type":16},"2026-07-12T08:38:28.210856",40]