Claude Skill

indication-dossier

Build a sourced research dossier for one therapeutic indication — patient population, epidemiology, disease biology, standard of care, regulatory path, and landmark trials. Use when the user asks for an indication overview, disease landscape, or trial-design background.

LLM Mart · 0 points · 16 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download xuzhougeng-wisp-science-skills_indication-dossier-2b7fd45.zip · 9 KB
Part of xuzhougeng/wisp-science — 25 skills

Install

skills CLI npx skills add https://github.com/xuzhougeng/wisp-science/tree/main/skills/indication-dossier
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install xuzhougeng-wisp-science@llmmart
Git git clone https://github.com/xuzhougeng/wisp-science.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole xuzhougeng/wisp-science collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Indication dossier

Five research phases, each writing one waypoint JSON under <workdir>/waypoints/, ending in a cited Markdown report. Waypoints make the run resumable: a later invocation reads which files exist and continues from the first missing one. The only pause for user input is after Phase 1.

The framing rule

Treat the indication as a patient population, not a disease entry. Every section answers a population question — who are these patients, how are they identified and managed, which trials would help them — rather than a textbook question about the condition. Nesting is population nesting: everyone in the child indication is in the parent.

Some inputs are not billable diagnoses at all: a biological state ("immunosenescence"), a non-accepted indication ("ageing"), an iatrogenic population ("GLP-1 induced sarcopenia"). Detect and label this early — it changes the epidemiology evidence base, the regulatory path, and what a "complete" dossier even looks like.

Inputs

Input Required Meaning
indication yes e.g. "sarcopenia", "idiopathic pulmonary fibrosis"
additional_context no focus areas, parent indication, framing
workdir no waypoint/report location; default ./do_not_commit/indication-dossier-<slug>/

Tooling

Preferred: clinical-trials MCP for CT.gov, pubmed MCP for literature, WebSearch/WebFetch for FDA guidance, specialty-society guidelines (NCCN, AASLD, …), and CDC/WHO data; WebFetch for remote PDFs, Read for local ones; Agent subagents for parallel evidence gathering. When a listed MCP is not connected, say so and fall back to WebSearch against the public site itself.

Run protocol

Read references/standards.md first — it defines what counts as a citable finding, the anti-fabrication rules, and the report style. Phase-by-phase instructions live in references/phases.md; waypoint formats in references/waypoints.md.

  1. Identity. Resolve definition, ICD codes, aliases, parent, diagnostic status; quick CT.gov landscape count. Write meta.json. Then show the resolved identity and end the turn asking Proceed / Revise identity / Stop — the expensive phases wait for the answer (Wisp has no separate interactive-question tool, so this is a normal turn end).
  2. Epidemiology. Case definition, prevalence/incidence, demographics, natural history → epidemiology.json.
  3. Biology & standard of care. Mechanism, biomarkers, approved therapies, guidelines, unmet need → biology_soc.json.
  4. Regulatory & trials. Accepted endpoints, precedents, design parameters, landmark trials, failures → regulatory_trials.json.
  5. Synthesis. No new research threads (single targeted gap-fills only). Write indication_dossier_report.md and research_output.json, then mark progress.json complete.

After each of phases 2–5, write the waypoint, emit a ≤200-word summary of findings and open uncertainties, and continue directly.

Resuming

When workdir already contains waypoints: list which phases are complete (file exists and is non-empty), show the meta summary, and ask which phase to run. Never overwrite an existing waypoint without confirmation.

Output layout

<workdir>/waypoints/
├── progress.json                 # loop control, flipped last
├── meta.json                     # phase 1
├── epidemiology.json             # phase 2
├── biology_soc.json              # phase 3
├── regulatory_trials.json        # phase 4
├── sources_evaluated.json        # appended by every phase
├── research_output.json          # phase 5, structured
└── indication_dossier_report.md  # phase 5, the deliverable
Files (wisp-science)
  • references
    • phases.md 7.2 KB
      # Phase guide
      
      One section per phase. Each phase reads the previous waypoints, researches its
      questions, and writes its own waypoint (formats in `waypoints.md`). Sourcing
      rules are in `standards.md`.
      
      ## Phase 1 — Identity
      
      Runs when `waypoints/meta.json` is absent. Everything downstream keys off the
      answers here.
      
      1. Create `<workdir>/waypoints/`.
      2. Resolve what the indication *is*: standard clinical definition, ICD-10
         codes, aliases, and — critically — whether it is a recognized diagnostic
         entity at all. Biological states ("immunosenescence"), non-accepted
         indications ("ageing"), and iatrogenic populations ("GLP-1 induced
         sarcopenia") must be labelled as such, because the answer reshapes the
         epidemiology, regulatory, and trial sections.
      3. Place it in the clinical taxonomy: parent indication (often given in
         `additional_context`), therapy area, condition class.
      4. Rough clinical maturity: one `search_trials(condition=...)` call against
         the clinical-trials MCP; record total, phase, and status counts.
      5. Write `meta.json` and initialize `sources_evaluated.json`.
      
      Single iteration; no deep research yet.
      
      ## Phase 2 — Epidemiology
      
      Runs when `meta.json` exists and `epidemiology.json` doesn't. Question: who
      are these patients, how many, and what happens to them?
      
      - **Case definition.** Consensus diagnostic criteria (EWGSOP2, GOLD, …) and
        how the population is separated from its neighbours. Contested or evolving
        criteria are findings, not footnotes. Non-standard indications get proxy
        definitions instead: research criteria, trial enrollment criteria, expert
        consensus.
      - **Burden.** Prevalence and incidence from systematic reviews and
        meta-analyses first, registry/CDC/WHO data second, single-center studies
        last (acceptable for rare disease — say so). Distinguish community-dwelling
        from clinical populations. Note the trend, not just the point estimate.
      - **Who.** Age/sex/ethnicity distribution, dominant risk factors and
        comorbidities, geographic variation when material.
      - **Trajectory.** Acute vs. chronic, progressive vs. relapsing, staging,
        mortality/morbidity, and the inflection points where intervention matters.
      
      Run the PubMed MCP and web searches through parallel subagents. Write
      `epidemiology.json` with per-subsection coverage levels.
      
      ## Phase 3 — Biology and standard of care
      
      Runs when `epidemiology.json` exists and `biology_soc.json` doesn't. Feeds
      report sections 2 (biology) and 3 (standard of care).
      
      - **Mechanism.** Recent mechanism reviews via PubMed MCP; identify the
        pathways that matter for therapy — validated targets vs. hypotheses — at
        analyst depth, not textbook depth.
      - **Biomarkers.** Three buckets with distinct trial uses: diagnostic
        (confirms the condition), prognostic (predicts course), pharmacodynamic
        (measures drug effect). Mark FDA-qualified vs. exploratory; this feeds the
        endpoint discussion in Phase 4.
      - **Approved therapies.** Search `site:fda.gov`; for each drug record
        mechanism, approval year, and above all *limitations* — the limitations
        define the opportunity. Distinguish on-label from off-label use. "Nothing
        is approved" is itself a key finding.
      - **Guidelines.** Specialty society algorithms (NCCN, AASLD, ATS/ERS, AGS…),
        US/EU divergence when relevant, recent changes.
      - **Unmet need.** What current therapy leaves untreated: underserved
        subpopulations, symptom control vs. disease modification, quality-of-life
        burden.
      
      Parallel subagents: PubMed for biology, web for guidelines, FDA for
      approvals. Write `biology_soc.json`.
      
      ## Phase 4 — Regulatory path and trials
      
      Runs when `biology_soc.json` exists and `regulatory_trials.json` doesn't.
      Question: how does one actually run a registrational trial here?
      
      First classify the indication's regulatory maturity, and say which class it
      is in — it controls how much this phase can find:
      
      - established (IPF, MASH): specific FDA guidance exists;
      - emerging (sarcopenia): little or no formal guidance;
      - novel (ageing): no framework at all — a short section is the correct
        output, not a gap to pad.
      
      Then:
      
      - **Endpoints.** Guidance documents via `site:fda.gov`; endpoints from
        successful registrational trials; clinical vs. surrogate vs. PRO; anything
        accepted as "reasonably likely to predict clinical benefit" (accelerated
        approval).
      - **Precedents.** Approval packages, accepted designs, breakthrough/fast
        track/priority review history, advisory committee debates, Complete
        Response Letters.
      - **Design parameters.** `search_trials(condition=..., phase="Phase 3")`
        patterns: enrollment sizes, endpoint timepoints, comparator choices,
        per-patient cost estimates where the literature has them.
      - **Landmark trials.** The 3–5 trials that changed practice (not merely the
        newest): NCT ID, drug, sponsor, phase, results, impact. For active
        sponsors, fetch `/pipeline` or `/investors/presentations` and `Read`
        downloaded decks — they are figure-first.
      - **Failures.** Significant failures with mechanism-level lessons, not "the
        drug didn't work".
      
      Parallel subagents: FDA for guidance, CT.gov for patterns, PubMed for trial
      history reviews. Write `regulatory_trials.json` including `trial_landscape`
      counts.
      
      ## Phase 5 — Synthesis
      
      Runs last. Read all four waypoints plus `sources_evaluated.json`; open no
      new research threads. One targeted fetch to fill a specific missing value in
      an existing waypoint field is allowed (record it in `sources_evaluated.json`);
      anything broader is named as a gap.
      
      Write `waypoints/indication_dossier_report.md` with this outline:
      
      ```markdown
      # Indication Dossier: <name>
      
      **Definition** / **ICD-10** / **Parent indication** (one line each; write
      "Not a standard diagnostic entity" when true)
      
      ## 1. Population Definition & Epidemiology
      ### 1.1 Diagnostic Criteria   ### 1.2 Prevalence & Incidence
      ### 1.3 Demographics & Risk Factors   ### 1.4 Natural History
      
      ## 2. Disease Biology
      ### 2.1 Pathophysiology   ### 2.2 Biomarkers
      
      ## 3. Standard of Care
      ### 3.1 Approved Therapies   ### 3.2 Treatment Guidelines   ### 3.3 Unmet Need
      
      ## 4. Clinical Endpoints & Regulatory Path
      ### 4.1 Accepted Endpoints   ### 4.2 Regulatory Precedents
      ### 4.3 Trial Design Parameters
      
      ## 5. Key Trials
      ### 5.1 Landmark Trials   ### 5.2 Notable Failures
      
      ## Appendix: Sources
      ```
      
      Section guidance:
      
      - 1–3 are narrative prose with inline citations and specific numbers.
        Coverage bookkeeping lives in `research_output.json`; in the report, name
        only what is partial or missing — never label a section "covered".
      - 4 mixes prose with tables for endpoint and design-parameter comparisons.
      - 5 is structured per trial, each entry ending on the lesson for future
        design.
      - Frame every section from the patient population's perspective (see
        SKILL.md framing).
      - Sources appendix: continuous numbering, grouped under bold source-type
        subheadings, title as hyperlink, accessed date closing each entry.
      - Figures only when a chart shows what prose cannot. After rendering, `Read`
        the image and check: does it add information, are title/axes/units/legend
        legible, do tick marks fit the data type (no fractional years or counts)?
        Any "no" deletes the figure.
      
      Then write `research_output.json` (consolidated structured output, format in
      `waypoints.md`) and finally flip `progress.json` to complete — report first,
      progress flag last.
      
    • standards.md 3.8 KB
      # Sourcing standards and report style
      
      Applies to every phase. Read once at the start of a dossier run.
      
      ## What counts as a finding
      
      A finding is citable only when it carries all three of:
      
      1. `source_url` — the URL of the primary source, exactly as fetched;
      2. `source_type` — one of `ctgov`, `fda`, `ema`, `pubmed`, `preprint`,
         `patent`, `conference`, `company_ir`, `news`, `other`;
      3. `quote` — verbatim supporting text from that source.
      
      A finding missing any of these is incomplete and must be flagged, not cited.
      URLs come only from successful fetches or MCP results — never construct or
      guess one. When a journal link rots, try the DOI resolver
      (`https://doi.org/<DOI>`); if that also fails, record the failure in
      `anomaly_flags`.
      
      ## Never invent
      
      Trial statistics, approval/filing/completion dates, prevalence and incidence
      figures, drug names and approval status, patent numbers and expiries — these
      are either sourced or absent. When the canonical primary source comes up
      empty (Drugs@FDA for approvals, the sponsor's pipeline page for stage,
      ClinicalTrials.gov for trial details), write "Not publicly available", add an
      `anomaly_flags` entry, and move on. No placeholders.
      
      ## Retrieval mechanics
      
      - Prefer domain MCP tools (clinical trials, literature) over generic web
        fetch — structured results, fewer parsing errors.
      - `WebSearch` returns index snippets only. To read a PDF, `WebFetch` its URL
        (text extraction is built in). When the data lives in figures or tables —
        waterfall/KM/spider/forest plots, PK curves, AE tables, biomarker
        durability plots — download with `curl -L -o file.pdf '<url>'` and `Read`
        the file, then describe the visual content in the finding ("Figure 2
        waterfall shows 68% ORR"). Single-quote downloaded URLs and only follow
        plain `https://` links without shell metacharacters.
      - Conference decks and posters are figure-first: download and `Read` by
        default instead of text-fetching.
      - IR and guideline pages hide PDFs behind UUID paths (`/static-files/abc123`)
        that don't end in `.pdf`; `WebFetch` the page and harvest its markdown
        links to find them.
      - Keep context lean: distill each source to structured findings as soon as
        it's read, and for long documents target sections via the abstract or
        table of contents rather than reading linearly.
      
      ## Insight vs. context
      
      Before promoting something to an "insight", ask whether a specialist with
      five years in the field would find it surprising or decision-relevant. If
      not, it's context — still useful, but it doesn't lead a section.
      
      ## Report style
      
      Write as an industry analyst: complete, specific, sourced.
      
      - **Inline citations.** Every factual claim links its source:
        `[descriptive claim text](source_url)`. When no natural claim text exists,
        title the link with source name + document type. Reserve numbered `[1]`
        references for a source cited five or more times, or several sources on
        one claim.
      - **Cite:** quantitative data, endpoints and results, competitor stage and
        timing, dates, safety data, patent numbers.
        **Don't cite:** general medical knowledge, your own interpretation, or
        arithmetic you performed on cited inputs (cite the inputs).
      - **Deep links only.** ClinicalTrials.gov →
        `https://clinicaltrials.gov/study/NCT########`; PubMed →
        `https://pubmed.ncbi.nlm.nih.gov/<PMID>/` (PMID over DOI redirect);
        companies → the specific press release or deck; patents →
        `https://patents.google.com/patent/US########X#`. Never a homepage.
      - **Disagreeing sources** are both cited, with a stated choice:
        "the press release reports [200 patients](url1) but ClinicalTrials.gov
        shows [180 enrolled](url2); we use the registry figure."
      - **Final check.** Every number, stage, date, and efficacy figure carries a
        specific inline link; no "studies show" without naming them; citations
        written with the claim, never backfilled.
      
    • waypoints.md 2.7 KB
      # Waypoint file contract
      
      Everything under `<workdir>/waypoints/` is resumable state: each phase writes
      exactly one of these files, and a later invocation reconstructs progress from
      which files exist. Field names below are the contract — keep them stable.
      
      ## Shared shapes
      
      Phase waypoints (`epidemiology.json`, `biology_soc.json`,
      `regulatory_trials.json`) all follow one pattern:
      
      ```json
      {
        "subsections": {
          "<subsection>": {
            "content": "distilled findings, prose",
            "sources": ["..."],
            "coverage": "covered | partial | missing"
          }
        },
        "gaps": ["gaps that could not be filled, stated plainly"]
      }
      ```
      
      Subsection keys per file:
      
      | File | Subsection keys |
      |---|---|
      | `epidemiology.json` | `diagnostic_criteria`, `prevalence_incidence`, `demographics`, `natural_history` |
      | `biology_soc.json` | `pathophysiology`, `biomarkers`, `approved_therapies`, `treatment_guidelines`, `unmet_need` |
      | `regulatory_trials.json` | `accepted_endpoints`, `fda_guidance`, `trial_parameters`, `landmark_trials`, `notable_failures` |
      
      `regulatory_trials.json` additionally carries the CT.gov scan:
      
      ```json
      "trial_landscape": {
        "total_trials": 0,
        "by_phase": {"Phase 1": 0, "Phase 2": 0, "Phase 3": 0, "Phase 4": 0},
        "by_status": {"Recruiting": 0, "Completed": 0}
      }
      ```
      
      ## meta.json (Phase 1)
      
      ```json
      {
        "indication_name": "...",
        "parent_indication": "... or null",
        "definition": "...",
        "icd_codes": ["K70"],
        "aliases": ["..."],
        "is_standard_diagnosis": true,
        "notes": "caveats: not ICD-coded, biological state, iatrogenic, etc."
      }
      ```
      
      ## sources_evaluated.json (initialized Phase 1, appended every phase)
      
      ```json
      {
        "sources": [
          {"url": "...", "source_type": "...", "date_accessed": "...", "result": "success | failed | partial"}
        ]
      }
      ```
      
      ## progress.json (loop control)
      
      ```json
      {"complete": false, "output_file": null, "current_phase": "meta_initialization",
       "iteration_notes": "what this iteration accomplished"}
      ```
      
      Flipping `complete: true` (with `"output_file": "indication_dossier_report.md"`)
      is the very last write of the run — after the report exists.
      
      ## research_output.json (Phase 5)
      
      Consolidates the run for downstream consumers:
      
      ```json
      {
        "indication_name": "...",
        "parent_indication": "...",
        "meta": {},
        "epidemiology": {},
        "biology_soc": {},
        "regulatory_trials": {},
        "sources_evaluated": [],
        "coverage_summary": {
          "epidemiology":      {"covered": [], "partial": [], "missing": []},
          "biology_soc":       {"covered": [], "partial": [], "missing": []},
          "regulatory_trials": {"covered": [], "partial": [], "missing": []}
        }
      }
      ```
      
      `indication_dossier_report.md` (the deliverable) is also written to
      `waypoints/`; its outline is in `phases.md`.
      
  • SKILL.md 4 KB
    ---
    name: indication-dossier
    description: Build a sourced research dossier for one therapeutic indication — patient population, epidemiology, disease biology, standard of care, regulatory path, and landmark trials. Use when the user asks for an indication overview, disease landscape, or trial-design background.
    license: Apache-2.0
    ---
    
    # Indication dossier
    
    Five research phases, each writing one waypoint JSON under
    `<workdir>/waypoints/`, ending in a cited Markdown report. Waypoints make the
    run resumable: a later invocation reads which files exist and continues from
    the first missing one. The only pause for user input is after Phase 1.
    
    ## The framing rule
    
    Treat the indication as a *patient population*, not a disease entry. Every
    section answers a population question — who are these patients, how are they
    identified and managed, which trials would help them — rather than a textbook
    question about the condition. Nesting is population nesting: everyone in the
    child indication is in the parent.
    
    Some inputs are not billable diagnoses at all: a biological state
    ("immunosenescence"), a non-accepted indication ("ageing"), an iatrogenic
    population ("GLP-1 induced sarcopenia"). Detect and label this early — it
    changes the epidemiology evidence base, the regulatory path, and what a
    "complete" dossier even looks like.
    
    ## Inputs
    
    | Input | Required | Meaning |
    |---|---|---|
    | `indication` | yes | e.g. "sarcopenia", "idiopathic pulmonary fibrosis" |
    | `additional_context` | no | focus areas, parent indication, framing |
    | `workdir` | no | waypoint/report location; default `./do_not_commit/indication-dossier-<slug>/` |
    
    ## Tooling
    
    Preferred: `clinical-trials` MCP for CT.gov, `pubmed` MCP for literature,
    `WebSearch`/`WebFetch` for FDA guidance, specialty-society guidelines
    (NCCN, AASLD, …), and CDC/WHO data; `WebFetch` for remote PDFs, `Read` for
    local ones; `Agent` subagents for parallel evidence gathering. When a listed
    MCP is not connected, say so and fall back to `WebSearch` against the public
    site itself.
    
    ## Run protocol
    
    Read `references/standards.md` first — it defines what counts as a citable
    finding, the anti-fabrication rules, and the report style. Phase-by-phase
    instructions live in `references/phases.md`; waypoint formats in
    `references/waypoints.md`.
    
    1. **Identity.** Resolve definition, ICD codes, aliases, parent, diagnostic
       status; quick CT.gov landscape count. Write `meta.json`. Then show the
       resolved identity and end the turn asking **Proceed / Revise identity /
       Stop** — the expensive phases wait for the answer (Wisp has no separate
       interactive-question tool, so this is a normal turn end).
    2. **Epidemiology.** Case definition, prevalence/incidence, demographics,
       natural history → `epidemiology.json`.
    3. **Biology & standard of care.** Mechanism, biomarkers, approved
       therapies, guidelines, unmet need → `biology_soc.json`.
    4. **Regulatory & trials.** Accepted endpoints, precedents, design
       parameters, landmark trials, failures → `regulatory_trials.json`.
    5. **Synthesis.** No new research threads (single targeted gap-fills only).
       Write `indication_dossier_report.md` and `research_output.json`, then
       mark `progress.json` complete.
    
    After each of phases 2–5, write the waypoint, emit a ≤200-word summary of
    findings and open uncertainties, and continue directly.
    
    ## Resuming
    
    When `workdir` already contains waypoints: list which phases are complete
    (file exists and is non-empty), show the meta summary, and ask which phase to
    run. Never overwrite an existing waypoint without confirmation.
    
    ## Output layout
    
    ```
    <workdir>/waypoints/
    ├── progress.json                 # loop control, flipped last
    ├── meta.json                     # phase 1
    ├── epidemiology.json             # phase 2
    ├── biology_soc.json              # phase 3
    ├── regulatory_trials.json        # phase 4
    ├── sources_evaluated.json        # appended by every phase
    ├── research_output.json          # phase 5, structured
    └── indication_dossier_report.md  # phase 5, the deliverable
    ```
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related