Skip to content

feat(skills): add clinical-case-report skill#581

Open
syedali254 wants to merge 13 commits intonexu-io:mainfrom
syedali254:feature/clinical-case-report
Open

feat(skills): add clinical-case-report skill#581
syedali254 wants to merge 13 commits intonexu-io:mainfrom
syedali254:feature/clinical-case-report

Conversation

@syedali254
Copy link
Copy Markdown

What

Adds clinical-case-report — a new healthcare skill that generates structured medical case presentations for clinical rounds, conferences, and ward documentation.

Why

The current skill catalog has 31 skills covering SaaS, marketing, and operations — zero healthcare coverage. Healthcare professionals and medical students are a real use case for AI-assisted document generation.

I have domain context: I built a multi-agent clinical triage system using XGBoost and LangGraph (github.com/syedali254/agentic-clinical-intelligence), so I can verify medical accuracy personally.

Files added

  • SKILL.md — od: frontmatter + full agent workflow instructions
  • references/checklist.md — P0/P1/P2 medical accuracy validation
  • references/case-formats.md — SOAP, conference, and rounds formats
  • examples/example-stemi.html — Inferior STEMI with cardiogenic shock

Skill metadata

  • mode: prototype
  • scenario: healthcare
  • platform: desktop
  • fidelity: high-fidelity
  • Triggers: "case report", "case presentation", "SOAP note", "clinical case"

Medical accuracy

  • Vitals and labs are physiologically consistent (shock index, troponin, lactate)
  • Management follows current standard of care (dual antiplatelet, primary PCI)
  • Differential includes clinical reasoning per item
  • TIMI risk score and Killip class included

Next

Happy to add more healthcare skills (patient dashboard, research poster, clinical protocol) based on feedback from this one.

Adds a new healthcare skill for generating structured medical case
presentations (SOAP format, conference, and ward rounds).

Files added:
- SKILL.md — od: frontmatter + full agent workflow instructions
- references/checklist.md — P0/P1/P2 medical accuracy validation
- references/case-formats.md — SOAP, conference, and rounds formats
- examples/example-stemi.html — inferior STEMI with cardiogenic shock

Fills the healthcare vertical gap in the current skill catalog.
Includes physiologically consistent vitals, labs, and an
evidence-based management plan using real clinical guidelines.
@lefarcen lefarcen added the feature New feature or enhancement label May 5, 2026
@lefarcen
Copy link
Copy Markdown
Contributor

lefarcen commented May 5, 2026

Hi @syedali254! 🎉

Thanks for the contribution — adding healthcare coverage to the skill catalog is a great direction.

I will run a deep review and get back to you within 24h.

Thanks for making open-design better!
— open-design team

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1ebb73c1e8

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@@ -0,0 +1,676 @@
<!DOCTYPE html>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Move skill example to the path the gallery resolver reads

The new skill ships its only demo at examples/example-stemi.html, but the example API used by the Examples gallery only resolves <skillDir>/example.html, assets/template.html (+ optional slides), or assets/index.html (see apps/daemon/src/server.ts /api/skills/:id/example). Because none of those files exist for this skill, the endpoint returns 404 and users cannot preview this skill card before running it. Rename/copy this file to skills/clinical-case-report/example.html (or provide one of the supported asset paths) so the gallery can render it.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @syedali254, thanks for this healthcare skill contribution! 🏥

I've reviewed the complete skill package (agent instructions, example HTML, references, and checklist). The structure is solid and the STEMI example demonstrates good medical detail. However, there are 4 must-fix safety and accuracy issues that need addressing before this can ship:

  1. Missing prescribing safety gates — the skill instructs agents to generate specific drug doses without checking allergies, renal function, pregnancy, or regional protocols
  2. Overly rigid physiologic rules — some "must follow" constraints don't match real clinical variability and may force incorrect data
  3. Wrong TIMI score scale — the example uses the UA/NSTEMI scale (0-7) for a STEMI case
  4. Overly narrow PHI definition — the checklist only blocks "names" but clinical cases can identify patients through dates, locations, rare conditions, etc.

See inline comments below for concrete fixes. Once these are addressed, this will be a strong addition to the skill catalog.

— open-design team


### Step 5 — Write the management plan

The plan must be:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 — Prescribing safety gate missing

The workflow instructs agents to write specific drug names, doses, routes, and frequencies, but doesn't require checking:

  • Allergies
  • Renal/hepatic function
  • Pregnancy status
  • Weight (for weight-based dosing)
  • Anticoagulation/bleeding risk
  • Regional protocols
  • Contraindications

In a medical skill, this can produce unsafe authoritative treatment plans.

Concrete fix:
Add a safety paragraph at the end of Step 5:

### Important — Prescribing Safety

Generated plans must:
- Be marked as educational/simulated, not a substitute for clinician judgment
- Use "per local formulary/protocol" language when required patient variables (weight, renal function, allergies) are missing
- List key contraindications and unknowns before medication recommendations
- Never claim a plan is "definitive" or "standard of care" without full patient context

Comment thread skills/clinical-case-report/SKILL.md Outdated
If the user has not provided specific values, generate values that are
internally consistent with the diagnosis:

**Consistency rules (must follow):**
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 — Overly absolute physiologic rules

These "must follow" rules don't match real clinical variability:

  • Pneumonia does not always require temperature >38°C (afebrile pneumonia exists)
  • Shock can be bradycardic (beta-blocker, spinal shock) or medication-blunted
  • Early STEMI may have initially normal troponin
  • CK-MB is not universally required or preferred (hs-troponin is now standard in many settings)

These absolute rules may force the model to invent or "correct" plausible user-provided data.

Concrete fix:
Reframe as typical consistency checks and preserve user data:

**Consistency checks (typical patterns):**
- A patient in shock **typically** has: HR >100, SBP <90, raised lactate — but medication, age, or shock type can alter this
- **Preserve all user-provided values** — if the user says SBP is 110 in a shock case, keep it and explain the atypical presentation
- If generating values, explain atypical presentations rather than forcing canonical numbers

(RCA) based on inferior lead involvement.
</p>

<div class="risk-score">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 — Wrong TIMI score scale for STEMI

The example states "TIMI Risk Score: 6 / 7" but the 0-7 TIMI scale is for UA/NSTEMI, not STEMI. This undermines the skill's risk-stratification guidance.

For STEMI, either:

  1. Use the STEMI-specific TIMI score (which has different components and scale), OR
  2. Use another appropriate ACS risk tool (GRACE, Killip only), OR
  3. Omit the numeric TIMI score if not fully derived with component breakdown

Concrete fix:
Replace line 509-511 with:

<strong>Killip Class: III</strong> — Acute pulmonary oedema present.
&nbsp;|&nbsp;
<strong>Shock Index: 1.27</strong> (HR/SBP — normal <0.7)

(Remove the TIMI score or recalculate it using the STEMI-specific version with component details.)

- [ ] Vital signs are internally consistent (shocked patient has low SBP AND high HR AND raised lactate)
- [ ] Assessment contains a clearly stated primary diagnosis
- [ ] Plan is present and directly addresses the primary diagnosis
- [ ] No real patient names or identifying information included
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 — PHI definition too narrow

The P0 item says "No real patient names or identifying information" but clinical cases can identify patients through:

  • Medical record numbers
  • Exact dates and locations
  • Rare condition combinations
  • Occupation, family details, verbatim story details
  • Images or scans

Even without names, these constitute Protected Health Information.

Concrete fix:
Expand the P0 item:

- [ ] No real patient identifiers (direct or indirect): no names, MRNs, exact dates, locations, images, rare condition combos, occupation details, or verbatim stories from real cases
- [ ] All data is synthetic, de-identified, or clearly fictional
- [ ] If based on a real case, apply formal de-identification before use


---

## Format Selection Guide
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 — Format selection guide ambiguous

Line 90 maps "rounds" → SOAP, but line 92 maps "ward round" → Brief Rounds. This can make the skill choose a long SOAP report when the user wants a fast handover, or vice versa.

Concrete fix:
Distinguish clearly:

| "case presentation", "formal rounds", "clinic" | SOAP |
| "daily review", "ward round", "handover", "ICU", "post-call" | Brief Rounds |

Patient meets STEMI criteria. Door-to-balloon time target: &lt;90 minutes.
</div>

<table>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 — Table accessibility and troponin units

The vital signs and lab tables lack <caption> and scope="col" attributes for accessibility. Also, "high-sensitivity Troponin I" is reported in ng/mL with a conventional-looking reference range; hs-troponin is more typically ng/L with a much lower cutoff.

Concrete fix:

  1. Add <caption>Vital Signs</caption> inside <table> (line 286)
  2. Add <caption>Laboratory Results</caption> (line 398)
  3. Add scope="col" to all <th> elements
  4. Either relabel as "Troponin I (conventional)" or use hs-troponin units consistently (2400 ng/L with reference <40 ng/L)

Copy link
Copy Markdown
Contributor

@mrcfps mrcfps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@syedali254 thanks for adding the clinical-case-report skill — the structure and reference materials are a thoughtful start. I reviewed the changed skill package and the existing safety threads, and I’m leaving one additional blocking integration issue so the new skill can be previewed from the catalog once those safety fixes land.

Generated by Looper 0.5.6 · runner=reviewer · agent=opencode

@@ -0,0 +1,676 @@
<!DOCTYPE html>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — make the shipped example discoverable by the skill preview endpoint

The new static example lives at skills/clinical-case-report/examples/example-stemi.html, but the daemon’s /api/skills/:id/example resolver only serves <skillDir>/example.html, <skillDir>/assets/template.html (optionally with assets/example-slides.html), or <skillDir>/assets/index.html. Because this skill does not add any of those supported files, opening the Examples/gallery preview for clinical-case-report will return the resolver’s 404 even though the PR includes a complete HTML example. Please move or copy this file to skills/clinical-case-report/example.html (or add one of the supported assets/... fallbacks) so the new skill’s preview works from the catalog.

- Add prescribing safety gate (Step 5) — warns about missing allergy,
  renal, weight, and pregnancy context before drug recommendations
- Soften physiologic rules from 'must follow' to 'typical patterns' —
  acknowledges afebrile pneumonia, beta-blocker-blunted shock, etc.
- Preserve user-provided values even if atypical for the diagnosis
- Remove incorrect TIMI 0-7 score (UA/NSTEMI scale) from STEMI example;
  retain Killip Class III and Shock Index 1.27
- Fix troponin units: hs-troponin reported as 2400 ng/L (ref <40 ng/L)
  instead of conventional 2.4 ng/mL
- Add table accessibility: <caption> and scope='col' on vital signs
  and laboratory results tables
- Expand PHI checklist item to cover indirect identifiers (MRNs, dates,
  locations, rare conditions, occupation, verbatim stories)
- Disambiguate format selection guide ('ward round' maps to Brief Rounds,
  'formal rounds' maps to SOAP)
- Add example.html at skill root for /api/skills/:id/example resolver
Copy link
Copy Markdown
Contributor

@mrcfps mrcfps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@syedali254 thanks for the quick follow-up on the safety and preview feedback — the new root example and the softened guidance are moving this in a better direction. I found one remaining blocking safety mismatch in the shipped example, plus a couple of follow-up consistency items so the reference files actually guide generated outputs. 🏥

Generated by Looper 0.5.6 · runner=reviewer · agent=opencode

</div>

<div class="plan-block">
<div class="plan-title">2. Antiplatelet and Anticoagulation</div>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — keep the shipped example aligned with the new prescribing-safety gate

The updated skill now requires generated plans to list key contraindications and unknowns before medication recommendations when relevant patient data is missing, but this example moves directly into aspirin, ticagrelor, heparin, norepinephrine, furosemide, beta-blocker, and ACE-inhibitor dosing without a safety/unknowns block. Because example.html is the catalog preview and examples/example-stemi.html mirrors it, this still teaches the exact unsafe output pattern the new SKILL.md guidance is trying to prevent.

Please add a short Medication safety checks / unknowns block before this antiplatelet/anticoagulation section (and mirror it in examples/example-stemi.html) that explicitly confirms the known items already present, such as allergies and renal function, and calls out missing or protocol-dependent items such as bleeding risk/current anticoagulants, weight-based/protocol dosing, hepatic function, and any drug-specific contraindications. Where those details are not provided, keep the recommendation at per local formulary/protocol rather than giving a fully specific dose.

- [ ] HPI is written as a chronological prose narrative
- [ ] HPI includes at least one timeline marker (e.g. "2 hours prior to presentation")
- [ ] Vital signs are present and physiologically plausible
- [ ] Vital signs are internally consistent (shocked patient has low SBP AND high HR AND raised lactate)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-blocking — make the checklist match the softened shock guidance

This P0 checklist item still says a shocked patient must have low SBP and high HR and raised lactate. That conflicts with the updated SKILL.md guidance, which now correctly notes that beta-blockers, age, and shock type can make shock presentations atypical. If agents use this checklist literally, they may still rewrite or reject plausible user-provided values even though the main instructions say to preserve them.

Please soften this to something like: Shock physiology is supported by vitals/labs, or atypical findings are preserved and explicitly explained in the assessment.


---

## Step-by-step workflow
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-blocking — explicitly wire the new references into the workflow

The PR adds references/case-formats.md and references/checklist.md, but the step-by-step workflow never tells the agent to read or apply either file. Other skills in this repository make those reference reads explicit, and without that instruction the format-selection table and P0 safety checklist can be skipped during normal generation.

Please add an early workflow step that reads references/case-formats.md before choosing SOAP/conference/brief rounds, and runs references/checklist.md before emitting the final HTML artifact.

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @syedali254, great work addressing the review feedback! 🎉

Resolved:

  1. Prescribing safety gates — added at SKILL.md:139 with educational footer guidance
  2. TIMI score — removed the incorrect UA/NSTEMI scale; example now uses Killip + Shock Index
  3. PHI definition — expanded to cover direct and indirect identifiers
  4. Preview integrationexample.html added at the skill root (mrcfps's issue)

⚠️ Minor remaining inconsistency:
The physiologic rules in SKILL.md were softened to allow clinical variability (good!), but references/checklist.md:9 still has a hard P0 rule: "shocked patient has low SBP AND high HR AND raised lactate." This contradicts the more nuanced guidance in SKILL.md (shock can be bradycardic, medication-blunted, etc.).

Suggested fix: Soften the checklist P0 rule to match SKILL.md — change it to a consistency check rather than an absolute requirement. For example: "Vital signs are internally consistent with the diagnosis (allowing for clinical variability like bradycardic shock, afebrile pneumonia, etc.)."

This is non-blocking — the skill is in much better shape now. The maintainer will make the final call on whether to merge as-is or wait for the checklist tweak.

— open-design team

@syedali254
Copy link
Copy Markdown
Author

All review feedback addressed across 3 follow-up commits. The checklist P0 rule is also softened now to match SKILL.md. Ready for re-review when you get a chance!

Copy link
Copy Markdown
Contributor

@mrcfps mrcfps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@syedali254 thanks for continuing to tighten the clinical-case-report skill — the fallback translations, preview file, and softened checklist updates are helpful. I found one remaining blocking safety mismatch in the shipped example that should be resolved before merge. 🏥

Generated by Looper 0.5.6 · runner=reviewer · agent=opencode

</div>

<div class="plan-block">
<div class="plan-title">2. Antiplatelet and Anticoagulation</div>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — keep the catalog example aligned with the prescribing-safety gate

The new SKILL.md prescribing-safety guidance requires generated plans to list key contraindications and unknowns before medication recommendations when relevant patient data is missing, and to fall back to per local formulary/protocol when required variables such as weight, renal function, allergies, or bleeding risk are not available. This example still jumps directly from the revascularisation plan into specific aspirin, ticagrelor, heparin, norepinephrine, furosemide, beta-blocker, and ACE-inhibitor recommendations without a preceding medication-safety/unknowns block.

That matters because skills/clinical-case-report/example.html is the root preview served from the catalog, so it teaches the exact output shape users and agents will copy. Even though the example includes allergies and renal function, it still omits other protocol-dependent safety inputs like bleeding risk/current anticoagulants, weight-based or local-protocol dosing, hepatic function, and drug-specific contraindications before giving precise doses.

Please add a short Medication safety checks / unknowns block before this antiplatelet/anticoagulation section, and mirror the same fix in skills/clinical-case-report/examples/example-stemi.html, that explicitly confirms the known safety inputs and calls out any missing or protocol-dependent items. Where those inputs are not provided, keep the medication recommendation at per local formulary/protocol rather than presenting a fully specific dose.

@lefarcen
Copy link
Copy Markdown
Contributor

lefarcen commented May 5, 2026

Hi @syedali254! 👋

Thanks for the updates — the checklist softening (commit aa22b5e) addresses one of the non-blocking items nicely.

However, mrcfps's blocking issue from this comment is not yet resolved:

"Please add a short Medication safety checks / unknowns block before this antiplatelet/anticoagulation section..."

The current example.html still jumps directly into aspirin/ticagrelor/heparin dosing (lines 593–598) without a safety block that confirms known items (allergies, renal function) and calls out unknowns (bleeding risk, hepatic function, etc.).

Could you add that block? Once that's in, we'll be good to go!

— open-design team

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @syedali254 — thanks for the follow-up! You've addressed the two non-blocking findings (checklist vital signs softened ✅, i18n entries added ✅), but mrcfps's blocking finding from their last review is still unaddressed:

"Please add a short Medication safety checks / unknowns block before this antiplatelet/anticoagulation section (and mirror it in examples/example-stemi.html) that explicitly confirms the known items already present, such as allergies and renal function, and calls out missing or protocol-dependent items such as bleeding risk/current anticoagulants, weight-based/protocol dosing, hepatic function, and any drug-specific contraindications."

The current example.html (and examples/example-stemi.html) still jump directly from section 1 (revascularisation) to section 2 (antiplatelet/anticoagulation) without that safety gate. This is the blocker — the example needs to show the workflow that the updated SKILL.md now requires.

Once that safety block is in both example files, we'll be ready for maintainer sign-off!

@syedali254
Copy link
Copy Markdown
Author

Added the medication safety block before section 2 in both files — it lists what's known (allergies, eGFR, anticoagulants), calls out the unknowns (weight, bleeding risk, hepatic function), and defers weight-based dosing to local formulary.

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the quick fix @syedali254 — the medication safety checks block is now present in both example.html and examples/example-stemi.html before the antiplatelet section. Looks good.

All prior blocking issues are resolved. mrcfps may want to re-review the current head, but from my side the PR is now aligned with the prescribing-safety guidance. 🏥

Copy link
Copy Markdown
Contributor

@mrcfps mrcfps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@syedali254 thanks for the quick follow-up and for adding the medication-safety block — that’s the right direction. I found one remaining blocking consistency issue in the new safety block, plus one non-blocking checklist alignment item so the new safety rule is enforced during generation. 🏥

Generated by Looper 0.5.6 · runner=reviewer · agent=opencode

<div class="plan-block" style="border-left:3px solid #e6a817;padding-left:12px;">
<div class="plan-title" style="color:#b07a00;">⚠ Medication Safety Checks — confirm before prescribing</div>
<ul>
<li><strong>Known (from this case):</strong> No documented drug allergies; eGFR 48 mL/min/1.73m² (moderate CKD — dose-adjust renally cleared drugs); no current anticoagulants documented</li>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — make the safety block use this case’s actual demographics and renal data

This newly added medication-safety block says the known data includes eGFR 48 mL/min/1.73m² (moderate CKD...), but the same example’s lab table reports eGFR 72 mL/min/1.73m² with creatinine 98 µmol/L, and the header/HPI identify the patient as a 58-year-old male while this block later says age 67. Because this section is specifically meant to guard prescribing safety, stale renal function and age values can lead users or agents to apply the wrong renal-dose assumptions and undermines the consistency of the shipped catalog example.

Please update the block to match the case data — e.g. eGFR 72 mL/min/1.73m²; renal function currently preserved, monitor around contrast/acute illness and patient is male, age 58 — and adjust any CKD/dose-adjust wording accordingly.

<div class="plan-block" style="border-left:3px solid #e6a817;padding-left:12px;">
<div class="plan-title" style="color:#b07a00;">⚠ Medication Safety Checks — confirm before prescribing</div>
<ul>
<li><strong>Known (from this case):</strong> No documented drug allergies; eGFR 48 mL/min/1.73m² (moderate CKD — dose-adjust renally cleared drugs); no current anticoagulants documented</li>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — mirror the same safety-data correction in the example copy

This mirrored example has the same newly added safety block with eGFR 48 mL/min/1.73m² (moderate CKD...), while its investigation table still shows eGFR 72 mL/min/1.73m² and creatinine 98 µmol/L; the patient is also introduced as 58 years old, not 67. Since this file is the concrete STEMI example agents and reviewers may copy from, the medication-safety section should not introduce contradictory renal or demographic facts.

Please make the same correction here as in the root preview: use the case’s actual eGFR/age and change the renal-safety wording so it no longer claims moderate CKD or renal dose-adjustment unless the rest of the case is updated to support that.

- [ ] Plan is present and directly addresses the primary diagnosis
- [ ] No real patient identifiers (direct or indirect): no names, MRNs, exact dates, locations, images, rare condition combos, occupation details, or verbatim stories from real cases
- [ ] All data is synthetic, de-identified, or clearly fictional
- [ ] If based on a real case, apply formal de-identification before use
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-blocking — add the new prescribing-safety gate to the P0 checklist

SKILL.md now makes prescribing safety mandatory before medication recommendations: label the plan as educational/simulated, use per local formulary/protocol when key variables are missing, list contraindications/unknowns, and include the disclaimer. The P0 checklist here adds de-identification checks, but it still does not require those prescribing-safety checks, so an agent could pass the checklist while emitting a medication plan that violates the new Step 5 safety rules.

Please add one or two P0 checklist items next to the de-identification requirements that explicitly cover the medication-safety block and local-protocol fallback when weight, renal/hepatic function, allergies, pregnancy status, anticoagulation, or bleeding risk are unknown. It would also help to qualify the later “drug names, doses, routes, and frequencies” P1 item so specificity does not override missing safety context.

@lefarcen
Copy link
Copy Markdown
Contributor

lefarcen commented May 5, 2026

Hi @syedali254! 👋

mrcfps caught an important data consistency issue in the medication safety block: the block says eGFR 48 and age 67, but the lab table shows eGFR 72 and the header says age 58.

Please update the medication safety block in BOTH files to match the actual case data (eGFR 72, age 58) and adjust the wording (e.g. "renal function currently preserved" instead of "moderate CKD") — that way the safety checks align with the rest of the example.

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @syedali254! 👋

Perfect — the safety block data now matches the case facts (eGFR 72, age 58), and the P0 checklist additions ensure the prescribing-safety gate is enforced during generation.

All of mrcfps's blocking findings are resolved. The examples are now internally consistent and aligned with the skill's safety guidance.

Looks good to me; deferring final approval to a maintainer.

@lefarcen
Copy link
Copy Markdown
Contributor

lefarcen commented May 5, 2026

Hi @syedali254! 👋

Verified the fix on head 502ecb4 — the medication safety block now has the correct patient data (eGFR 72, age 58, renal function "currently preserved"), and both example files are updated. The P0 checklist also has the prescribing-safety check now.

All of mrcfps's findings are addressed. The PR is aligned with the prescribing-safety guidance. Deferring final approval to a maintainer.

Copy link
Copy Markdown
Contributor

@mrcfps mrcfps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@syedali254 thanks for continuing to tighten the clinical-case-report skill and for addressing the prior safety-block inconsistencies. I found one remaining prescribing-safety consistency issue in the shipped examples that should be fixed before merge. 🏥

Generated by Looper 0.5.6 · runner=reviewer · agent=opencode

<ul>
<li>Hold IV fluids until right-sided leads reviewed — if RV infarct
present, cautious fluid challenge 250mL normal saline</li>
<li>If MAP &lt;65mmHg despite fluids: commence Norepinephrine
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — keep weight-based vasoactive dosing behind the safety gate

The new medication-safety block at skills/clinical-case-report/example.html:594 says weight is not provided and that weight-based dosing should follow local formulary/protocol once weight is confirmed, but this plan still gives a norepinephrine dosing range here (0.05–0.5 mcg/kg/min) without that same protocol/weight-confirmation guard. Because the checklist now makes this prescribing-safety gate a P0 requirement for medication plans, the root preview example can still teach agents to emit weight-based drug dosing after explicitly saying weight is missing.

Please change this line to defer the vasoactive dose to local protocol until weight/concentration are confirmed, for example: If MAP <65mmHg despite fluids: commence norepinephrine infusion per local vasoactive-infusion protocol once weight and concentration are confirmed, titrate to MAP ≥65mmHg.

<ul>
<li>Hold IV fluids until right-sided leads reviewed — if RV infarct
present, cautious fluid challenge 250mL normal saline</li>
<li>If MAP &lt;65mmHg despite fluids: commence Norepinephrine
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — mirror the norepinephrine safety wording in the STEMI example copy

This mirrored example has the same safety block declaring that weight is not provided and weight-based dosing should defer to local formulary/protocol, but the cardiogenic-shock plan still provides Norepinephrine infusion 0.05–0.5 mcg/kg/min here. Since this file is the concrete STEMI example users and agents may copy from, it should not contradict the newly added prescribing-safety requirement in the same artifact.

Please make the same update as the root preview: replace the explicit norepinephrine range with wording that starts norepinephrine per local vasoactive-infusion protocol only after weight and concentration are confirmed, then titrates to the MAP goal.

@lefarcen
Copy link
Copy Markdown
Contributor

lefarcen commented May 5, 2026

Hi @syedali254! 👋

mrcfps caught one more prescribing-safety consistency issue: the medication safety block says weight is not provided, but the plan still gives a weight-based norepinephrine range (0.05–0.5 mcg/kg/min) in both example files.

Please update those lines to defer the norepinephrine dose to local protocol until weight is confirmed — that way the examples fully align with the safety-block guidance.

— open-design team

@syedali254
Copy link
Copy Markdown
Author

Fixed in both files norepinephrine line now defers to local vasoactive-infusion protocol once weight and concentration are confirmed, consistent with the safety block above it.

@lefarcen
Copy link
Copy Markdown
Contributor

lefarcen commented May 5, 2026

Hi @syedali254! 👋

mrcfps found one more consistency issue: the medication safety block says weight is not provided and defers weight-based dosing to local protocol, but the norepinephrine line still shows 0.05–0.5 mcg/kg/min (a weight-based range) without that same protocol guard.

Could you update that line in both example files to defer to local vasoactive-infusion protocol until weight/concentration are confirmed? Once that's aligned, the safety block will be fully consistent with the medication recommendations.

@syedali254
Copy link
Copy Markdown
Author

Already done in the latest commit the norepinephrine line now defers to local protocol. Should be visible on head b181c28.

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All blocking findings resolved — the norepinephrine line now correctly defers to local vasoactive-infusion protocol instead of specifying a weight-based range when weight is not available. The fix is consistent across both example files and aligns with the prescribing-safety gate. 🏥

Copy link
Copy Markdown
Contributor

@mrcfps mrcfps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@syedali254 thanks for continuing to iterate on the clinical-case-report skill and tightening the prescribing-safety guidance. I found two remaining safety/workflow issues in the new skill package that should be fixed before merge. 🏥

Generated by Looper 0.5.6 · runner=reviewer · agent=opencode


---

## Step-by-step workflow
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — wire the shipped references into the workflow

This skill adds references/case-formats.md and references/checklist.md, but the step-by-step workflow starts here without telling the agent to read either file before choosing the case format or before emitting the HTML. The daemon only lists side files in the skill preamble when their paths are referenced from SKILL.md, so these new reference files are otherwise just passive files in the folder and the P0 checklist/de-identification rules will not reliably run.

Please add explicit workflow steps that reference both files by path, for example: read references/case-formats.md before building the narrative to choose SOAP vs conference vs rounds, and run references/checklist.md before emitting with all P0 items passing.

<div class="plan-block">
<div class="plan-title">6. Secondary Prevention (commence post-stabilisation)</div>
<ul>
<li>Beta-blocker: Bisoprolol 1.25mg PO once daily — initiate within
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — strengthen the beta-blocker safety gate for this shock case

The example is an inferior STEMI complicated by cardiogenic shock/Killip III, but this secondary-prevention line still teaches starting bisoprolol within 24 hours once only SBP and HR thresholds are met. In a STEMI patient with cardiogenic shock or acute pulmonary oedema, early beta-blockade can worsen haemodynamics; SBP >100 and HR <110 are not enough to establish that shock has resolved.

Please change this recommendation to defer beta-blocker initiation until the patient is truly stabilised, for example after shock/pulmonary oedema have resolved, the patient is off vasopressors/inotropes, euvolemic, and has no bradycardia/heart block or other contraindications.

@lefarcen
Copy link
Copy Markdown
Contributor

lefarcen commented May 5, 2026

mrcfps found two additional safety/workflow issues on head b181c28:

  1. Beta-blocker timing — deferring to after shock resolution + off vasopressors
  2. Workflow must explicitly reference the checklist and format files

Please address these two findings.

@syedali254
Copy link
Copy Markdown
Author

Both fixed in 35cb5e3 added Step 0 to explicitly load the reference files before the workflow starts, Step 7 to block on P0 items before emitting, and rewrote the bisoprolol line to defer until shock is fully resolved and off pressors. Good catches.

Copy link
Copy Markdown
Contributor

@mrcfps mrcfps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@syedali254 thanks for the continued iteration on the clinical-case-report skill — the safety checks and reference workflow are much stronger now. I found one remaining workflow-formatting issue that keeps the final checklist step from being rendered as an actual instruction, so I’m requesting one small fix before merge. 🏥

Generated by Looper 0.5.6 · runner=reviewer · agent=opencode

<section data-od-id="assessment">...</section>
<section data-od-id="plan">...</section>

### Step 7 — Self-check against `references/checklist.md`
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — close the HTML code fence before Step 7

The new Step 7 is currently added immediately after the sample <section data-od-id="plan">...</section> line, but the preceding ```html fence is never closed. That means Markdown will render ### Step 7 — Self-check against references/checklist.md and the two checklist-enforcement sentences as part of the code sample instead of as workflow instructions. This matters because the previous fix is intended to make the P0 checklist mandatory before emitting the artifact; as rendered, that instruction is easy for the skill runner/agent to miss or treat as inert example text.

Please add a closing triple-backtick line right after <section data-od-id="plan">...</section> and before ### Step 7, so Step 7 is a real heading and the P0 checklist requirement is active prose in the skill workflow.

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified both fixes on head 35cb5e3:

  1. Beta-blocker safety gate — Both example files now defer bisoprolol until shock resolved, off vasopressors/inotropes, euvolaemic, no bradycardia/heart block, SBP >100mmHg and HR <110bpm. This correctly addresses mrcfps's concern about early beta-blockade in cardiogenic shock.

  2. Workflow reference wiring — Step 0 explicitly reads both references/case-formats.md and references/checklist.md, and Step 7 blocks on P0 checklist items before emitting. The reference files are now actively wired into the workflow.

All blocking findings from mrcfps's 6th review are now resolved. The skill workflow and examples are aligned with the prescribing-safety and medical-accuracy guidance.

@syedali254
Copy link
Copy Markdown
Author

syedali254 commented May 5, 2026

fixed in 54ade12 added the closing triple-backtick after the last

line so Step 7 is outside the code block and renders as active prose

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified the Markdown fence fix on head 54ade12:

Workflow formatting — Added closing triple-backtick after <section data-od-id="plan">...</section> and before ### Step 7. Step 7 now renders as an active workflow heading with prose instructions, making the P0 checklist gate enforcement clear and actionable.

All blocking findings from mrcfps's 7th review are resolved. The skill workflow and examples are now fully aligned with the prescribing-safety and medical-accuracy guidance.

Copy link
Copy Markdown
Contributor

@mrcfps mrcfps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@syedali254 thanks for the steady iteration on this clinical-case-report skill — the reference workflow and prescribing-safety gates are much stronger now. I found one remaining clinical safety issue in the shipped example, plus a smaller privacy-checklist consistency item to align the examples with the new P0 gate. 🏥

Generated by Looper 0.5.6 · runner=reviewer · agent=opencode

<div class="plan-block">
<div class="plan-title">4. Respiratory / Oxygenation</div>
<ul>
<li>Supplemental O₂ via non-rebreather mask — titrate to SpO₂ ≥94%</li>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — avoid routine high-flow oxygen for a normoxic STEMI example

This case lists SpO₂ 94% on room air in the vitals table and the HPI explicitly says there is no dyspnoea, but this plan teaches starting a non-rebreather mask and titrating to ≥94%. In ACS/STEMI examples, routine supplemental/high-flow oxygen when the patient is not hypoxaemic can be harmful and is not the main-path recommendation; because this is a healthcare skill example, generated management plans can copy that unsafe pattern.

Please change this oxygen line, and the identical line in skills/clinical-case-report/examples/example-stemi.html, to use oxygen only for hypoxaemia or respiratory distress per local protocol, with the lowest-flow device needed to meet the target. For example, reserve non-rebreather/CPAP escalation for worsening pulmonary oedema or SpO₂ below the local threshold.

</p>

<p style="margin-top:14px"><strong>Social History:</strong>
Works as an accountant. Lives with wife and two adult children.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-blocking — make the example match the de-identification checklist

The new P0 checklist at references/checklist.md:14 says generated cases should not include indirect identifiers such as occupation details, but this Social History still includes a specific occupation and household composition. Even though this sample is fictional, the example is what future skill runs will imitate, so it weakens the de-identification rule you just added.

Please generalize this line in both example copies, for example to “works in an office role; lives with family/supports at home,” or remove nonessential occupation/household detail so the examples model the checklist gate consistently.

@lefarcen
Copy link
Copy Markdown
Contributor

lefarcen commented May 5, 2026

Hey @syedali254, mrcfps found 2 more items on head 54ade12:

  1. Blocking: The O₂ line teaches routine high-flow (non-rebreather mask) for a normoxic patient (SpO₂ 94% on room air, no dyspnoea) — that's contraindicated per current ACS guidelines. Please reserve O₂/high-flow for actual hypoxaemia or respiratory distress per local protocol.

  2. Non-blocking: The example's Social History lists specific occupation + household composition, which violates the new de-identification P0 checklist you added. Please generalize to something like "works in an office role; lives with family" or remove the occupation detail.

Both findings apply to example.html and examples/example-stemi.html. The oxygen issue is the blocker — fix that first. 🏥

@syedali254
Copy link
Copy Markdown
Author

Both fixed in 63b0ee5. Oxygen is now only started if SpO₂ <94% or respiratory distress is present .lowest-flow device to target 94–98%, with a note that routine high-flow in normoxic STEMI can worsen ischaemia. Non-rebreather/CPAP escalation is reserved for worsening SpO₂ or distress. Social history now says "works in an office role; lives with family and has good home supports" no occupation or household specifics

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified both fixes on head 63b0ee5:

Oxygen therapy safety (BLOCKING) — Both example files now correctly reserve supplemental O₂ for hypoxaemia (SpO₂ <94%) or respiratory distress, using the lowest-flow device to maintain SpO₂ 94–98%. The plan explicitly states "do not give routine high-flow oxygen in normoxic STEMI (may worsen ischaemia)", which directly addresses mrcfps's concern about contraindicated routine high-flow oxygen for a normoxic patient (SpO₂ 94% on room air, no dyspnoea).

De-identification compliance (NON-BLOCKING) — Social History now says "Works in an office role. Lives with family and has good home supports." Both example files generalized the occupation and household details to comply with the P0 checklist rule against indirect identifiers.

All blocking findings from mrcfps's 8th review are resolved. The examples now align with current ACS management guidelines and the skill's de-identification requirements. 🏥

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified both fixes on head 63b0ee5:

  1. Oxygen therapy — Both example files now reserve supplemental O₂ for actual hypoxaemia (SpO₂ <94%) or respiratory distress, using the lowest-flow device to target 94–98%. Routine high-flow oxygen for normoxic STEMI is correctly flagged as potentially harmful. Non-rebreather/CPAP escalation is reserved for worsening SpO₂ or distress.

  2. De-identification — Social History in both examples now uses generic wording ("works in an office role; lives with family and has good home supports") instead of specific occupation/household details, aligning with the P0 checklist de-identification rule.

All blocking findings from mrcfps's 8th review are now resolved. The skill is aligned with the clinical safety guidance and de-identification requirements.

Copy link
Copy Markdown
Contributor

@mrcfps mrcfps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@syedali254 thanks for the continued iteration on the clinical-case-report skill — the safety guidance and example fixes are much stronger now. I found two remaining blocking consistency issues in the current skill package, plus one smaller example-data mismatch to clean up. 🏥

Generated by Looper 0.5.6 · runner=reviewer · agent=opencode

## P0 — Must Pass Before Emitting Artifact

- [ ] Chief complaint is clearly stated in the opening line
- [ ] HPI is written as a chronological prose narrative
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — make the P0 checklist format-aware

The new workflow now requires every P0 item in references/checklist.md to pass before emitting an artifact, but this P0 item requires a chronological HPI for every output. That conflicts with the changed format guide in references/case-formats.md, where the Brief Rounds format selected for "daily review", "ward round", "handover", "ICU", or "post-call" explicitly says not to include a full HPI or examination.

This matters because Brief Rounds is one of the skill’s supported main paths, but the current gates make it impossible to produce a compliant brief-rounds artifact: the agent must either add an HPI and violate the format, or omit it and fail Step 7’s P0 check. Please make the HPI/timeline checks conditional on SOAP/Conference outputs, and add Brief Rounds-specific P0 checks such as ID line, interval events/current status, active problems, and plan-by-problem.

</p>

<div class="risk-score">
<strong>Killip Class: III</strong> — Acute pulmonary oedema present.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — correct the Killip class for cardiogenic shock

This example’s assessment diagnoses "Inferior STEMI complicated by cardiogenic shock" and the surrounding changed content supports shock with SBP 88, tachycardia, elevated lactate, prolonged capillary refill, and vasopressor/CCU planning, but the displayed risk score still says Killip Class: III — Acute pulmonary oedema present. Killip III is pulmonary oedema; cardiogenic shock is Killip IV.

Because this is a shipped healthcare skill example, an incorrect risk classification can be copied into generated case reports and understate severity in the primary educational artifact. Please change this to Killip Class: IV — Cardiogenic shock (or remove the cardiogenic-shock diagnosis/findings if that was not intended) in both skills/clinical-case-report/example.html and skills/clinical-case-report/examples/example-stemi.html.


<p style="margin-top:14px"><strong>Social History:</strong>
Works in an office role. Lives with family and has good home supports.
Ex-smoker — 10 cigarettes/day, 30 pack-years.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-blocking — keep smoking status internally consistent

The HPI for this same example says the patient has a 30 pack-year smoking history with 10 cigarettes/day, ongoing, but this Social History line now says Ex-smoker — 10 cigarettes/day, 30 pack-years. Those two changed lines describe different smoking statuses.

This matters for the example’s clinical consistency and for future generated reports that use it as a pattern. Please pick one status and apply it consistently in both the HPI and Social History, and mirror the same fix in skills/clinical-case-report/examples/example-stemi.html.

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed head b6b4f35 and verified all three findings from mrcfps's 9th review are resolved:

Blocking fixes verified:

  1. P0 checklist now format-aware (references/checklist.md:7-8) — HPI requirement is now conditional:

    • SOAP/Conference: chronological HPI mandatory
    • Brief Rounds: HPI not required; ID line + interval events + active problems + plan-by-problem suffice
      This resolves the prior conflict where Brief Rounds format could not pass the P0 gate.
  2. Killip class corrected (example.html:512 + examples/example-stemi.html:512) — Changed from Killip III (pulmonary oedema) to Killip IV (Cardiogenic shock), aligning with the diagnosis and shock physiology (SBP 88, elevated lactate, vasopressor planning).

Non-blocking fix verified:

  1. Smoking status now internally consistent — Both HPI and Social History now say current smoker (10 cigarettes/day, 30 pack-years); prior mismatch (HPI: ongoing / Social History: Ex-smoker) is resolved.

All blocking issues from mrcfps's 9 iterations are now addressed. The skill's safety gates, reference workflow, and example consistency are solid. Deferring final approval to maintainer.

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @syedali254, thanks for the quick follow-up on mrcfps's 9th review! I verified all three fixes on head b6b4f35:

P0 checklist format-awareness — the checklist now makes HPI requirements conditional: "SOAP / Conference format only" branch keeps chronological HPI, "Brief Rounds format only" branch removes HPI requirement and adds Brief Rounds-specific P0 items (ID line, interval events, active problems, plan-by-problem). This resolves the conflicting requirements.

Killip class — changed from "Killip Class: III — Acute pulmonary oedema" to "Killip Class: IV — Cardiogenic shock (hypotension + end-organ hypoperfusion)" in both example files. Correct classification for this shocked case.

Smoking status — changed from "Ex-smoker" to "Current smoker — 10 cigarettes/day, 30 pack-years" in both example files' Social History, now consistent with HPI's "30 pack-year smoking history, 10 cigarettes/day, ongoing".

All 9 iterations of mrcfps's findings are now resolved. The skill package is clinically accurate, workflow-sound, and format-complete. 🏥

Copy link
Copy Markdown
Contributor

@mrcfps mrcfps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@syedali254 thanks for continuing to refine the clinical-case-report skill — the example and checklist fixes are much stronger now. I found one remaining workflow conflict in the skill instructions that still blocks one supported format. 🏥

Generated by Looper 0.5.6 · runner=reviewer · agent=opencode

> characterised by [quality, severity, radiation]. Associated symptoms
> include [list]. Pertinent negatives include [list]."

The HPI must be chronological. Include timeline markers
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking — make the main workflow conditional for Brief Rounds

The checklist was updated to skip HPI for Brief Rounds, and references/case-formats.md says Brief Ward Rounds must not include a full HPI or examination. However, the main skill workflow still unconditionally runs Step 2 and says The HPI must be chronological with timeline markers. Because Step 0 only tells the agent to read the format reference, this later required step can override the Brief Rounds format and force a full HPI into daily review, ward round, handover, ICU, or post-call outputs.

This matters because Brief Rounds is a supported trigger path in the changed skill, but the current instructions still make that path internally inconsistent: following Step 2 violates the format reference, while following the reference violates Step 2. Please make Step 2 format-aware (for example, For SOAP/Conference outputs, write a chronological HPI...; for Brief Rounds, skip full HPI/examination and use ID line + interval events/current status + active problems + plan-by-problem) and update the What you will produce section if needed so it does not require full HPI/exam for every format.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 7570a69. Step 2 is now format-conditional SOAP/Conference gets the full chronological HPI with timeline markers, Brief Rounds skips it and uses ID line + interval events/current status + active problems + plan-by-problem instead. Updated "What you will produce" to show both paths so the output expectations match the format selected in Step 0.

@lefarcen
Copy link
Copy Markdown
Contributor

lefarcen commented May 5, 2026

Hi @syedali254! 👋

mrcfps found one more workflow conflict on head b6b4f35:

The P0 checklist is now format-aware (✅ SOAP/Conference requires HPI, Brief Rounds skips it), but Step 2 in SKILL.md still unconditionally says "The HPI must be chronological" — that forces a full HPI into Brief Rounds outputs and violates the format reference.

Please make Step 2 format-conditional (e.g., "For SOAP/Conference: write chronological HPI...; for Brief Rounds: use ID line + interval events + active problems instead") so the workflow aligns with the checklist and format guide.

— open-design team

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified the workflow fix on head 7570a69:

Step 2 now format-conditional — SOAP/Conference outputs get the full chronological HPI with timeline markers ("The HPI must be chronological. Include timeline markers..."), while Brief Rounds outputs skip the full HPI/examination and use ID line + interval events/current status + active problems + plan-by-problem instead. The "What you will produce" section also reflects both paths.

This resolves the conflict between the P0 checklist (which was already format-aware) and the main workflow Step 2 (which was forcing HPI on all formats). Brief Rounds format can now pass the P0 check without violating the format reference.

All 10 iterations of mrcfps's findings are now resolved. The skill is workflow-sound and format-complete. 🏥

Copy link
Copy Markdown
Contributor

@lefarcen lefarcen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @syedali254! ✅ Verified the fix on head 7570a69.

Step 2 is now format-conditional:

  • SOAP/Conference → full chronological HPI with timeline markers ✅
  • Brief Rounds → skip full HPI/examination, use ID line + interval events + active problems + plan-by-problem ✅

"What you will produce" section also updated to show both paths explicitly ✅

This resolves mrcfps's 10th review finding — the skill can now correctly generate Brief Rounds outputs without forcing an HPI that violates the format. All 10 iterations of mrcfps's blocking findings are now addressed. The skill package is clinically accurate, workflow-sound, and format-complete. 🏥

Copy link
Copy Markdown
Contributor

@mrcfps mrcfps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@syedali254 thanks for continuing to refine the clinical-case-report skill. I reviewed the current head across the skill workflow, reference checklist and format guide, examples, and fallback i18n entries; the prior workflow/safety issues are addressed: Brief Rounds is now format-conditional, prescribing-safety gates are wired into the examples/checklist, and the STEMI sample is internally consistent after the medication, oxygen, Killip, and de-identification fixes. Nice work tightening this up 🏥

Generated by Looper 0.5.6 · runner=reviewer · agent=opencode

@syedali254 syedali254 requested a review from lefarcen May 6, 2026 06:32
@syedali254
Copy link
Copy Markdown
Author

@lefarcen, I've addressed all the safety and clinical feedback, and @mrcfps has approved the changes. Please let me know if there's anything else needed on the checklist or SKILL instructions for the final merge! 🏥"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature or enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants