[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69BP5DNFHRWFVSDEQ8CVZFS":3,"skill-same:01M69BP5DNFHRWFVSDEQ8CVZFS":61},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":6,"ownerHtmlUrl":37,"ownerBlogUrl":38,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M69BP5DNFHRWFVSDEQ8CVZFS","summarize-eval",null,"Summarize a CXR eval result directory (or compare two) as a Markdown table with metrics as columns and confidence bins as rows. Invoke when the user points at one or two result-dirs and asks for a summary, calibration analysis, or comparison.","microsoft\u002Fsiim-workshop-2026","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69BP2QSG1ZYW8ZV65FMSVJN",6,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsiim-workshop-2026\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fsummarize-eval\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[24,25,26],"summarize","summarize eval","directory","2026-11-10 10:12:30",false,"---\nname: summarize-eval\ndescription: Summarize a CXR eval result directory (or compare two) as a Markdown table with metrics as columns and confidence bins as rows. Invoke when the user points at one or two result-dirs and asks for a summary, calibration analysis, or comparison.\n---\n\n# summarize-eval\n\n## Single result-dir\n\n```bash\nuv run python .github\u002Fskills\u002Fsummarize-eval\u002Feval_summary.py --result-dir \u003Cresult-dir>\n```\n\n**Required output, in this order:**\n\n1. The script's stdout, copied verbatim (the Markdown tables — do not edit, re-format, drop, or re-render them).\n2. The analysis bullets below.\n\n**Analysis.** One bold headline sentence, then 2–5 free-form bullets. Classification leads when present.\n\n- **Headline (bold, 1 sentence).** What's true about this run? Lead with the\n  classification verdict (or cxr_metric verdict if classification is absent).\n  Cite the macro-F1 \u002F sensitivity \u002F specificity numbers (or the strongest\n  cxr_metric movement) that support it. No hedging in the headline.\n- **Bullets.** Cover, in whatever order makes the story clearest:\n  - Calibration — high vs medium (and low if n ≥ 10) on macro-F1 and\n    sensitivity. Well-calibrated, flat, or inverted? Cite the gap.\n  - Agreement — do cxr_metric numbers point the same direction as the\n    classification verdict? Name the metric that agrees most, or call out a\n    disagreement explicitly.\n  - Caveats — any bucket with n \u003C 10, or suspicious values\n    (specificity == sensitivity, RadCliQ-v1 negative, SEMB near zero).\n- Write bullets as direct observations, not labeled headers (\"SEMB dropped\n  -0.076…\" not \"**SEMB:** dropped …\"). Skip any bullet that has nothing to\n  say. Don't write a \"summary\" or \"overall\" bullet — the headline does that.\n  Don't re-hedge magnitudes already in the headline.\n\n## Two result-dirs (comparison)\n\n```bash\nuv run python .github\u002Fskills\u002Fsummarize-eval\u002Feval_summary.py \\\n    --baseline \u003Cbaseline-dir> --candidate \u003Ccandidate-dir>\n```\n\n**Required output, in this order:**\n\n1. The script's stdout, copied verbatim (per-dir tables + delta table — do not edit, re-format, drop, or re-render them).\n2. The analysis bullets below.\n\n**Analysis.** One bold headline sentence, then 2–5 free-form bullets. Classification leads when present.\n\n- **Headline (bold, 1 sentence).** Did candidate beat baseline? Cite the\n  macro-F1 \u002F sensitivity \u002F specificity deltas (or the strongest cxr_metric\n  delta if classification is absent). No hedging in the headline.\n- **Bullets.** Cover, in whatever order makes the story clearest:\n  - Calibration — did the high-vs-medium gap on macro-F1 \u002F sensitivity widen,\n    narrow, or invert? Often the real story; cite both gaps.\n  - Agreement — do classification deltas and cxr_metric deltas point the\n    same direction? Name the metric that agrees most, or call out a\n    disagreement explicitly (\"text similarity dropped while classification\n    improved — surface form changed, findings didn't\").\n  - Caveats — any bucket with n \u003C 10. Classification deltas under ~0.02 and\n    cxr_metric deltas under 0.05 (0.2 for RadCliQ) on small N are noise; say\n    so once.\n- Write bullets as direct observations, not labeled headers. Skip any bullet\n  that has nothing to say. Don't write a \"summary\" or \"overall\" bullet.\n\n## Rules\n\n- Higher is better for BLEU \u002F BERTScore \u002F SEMB \u002F RadGraph.\n  **Lower is better for RadCliQ-v0 ↓ and RadCliQ-v1 ↓.**\n- Higher is better for every classification metric (accuracy, F1, sensitivity,\n  specificity, bal-acc).\n- All numbers come from the script's output. Don't recompute.\n- Always include the script's stdout tables before the analysis. Never reply with bullets only.\n- Markdown only. Tables + bullets. No padding, no clinical disclaimers, no recap\n  of what the metrics measure.\n","# summarize-eval\n\n## Single result-dir\n\n```bash\nuv run python .github\u002Fskills\u002Fsummarize-eval\u002Feval_summary.py --result-dir \u003Cresult-dir>\n```\n\n**Required output, in this order:**\n\n1. The script's stdout, copied verbatim (the Markdown tables — do not edit, re-format, drop, or re-render them).\n2. The analysis bullets below.\n\n**Analysis.** One bold headline sentence, then 2–5 free-form bullets. Classification leads when present.\n\n- **Headline (bold, 1 sentence).** What's true about this run? Lead with the\n  classification verdict (or cxr_metric verdict if classification is absent).\n  Cite the macro-F1 \u002F sensitivity \u002F specificity numbers (or the strongest\n  cxr_metric movement) that support it. No hedging in the headline.\n- **Bullets.** Cover, in whatever order makes the story clearest:\n  - Calibration — high vs medium (and low if n ≥ 10) on macro-F1 and\n    sensitivity. Well-calibrated, flat, or inverted? Cite the gap.\n  - Agreement — do cxr_metric numbers point the same direction as the\n    classification verdict? Name the metric that agrees most, or call out a\n    disagreement explicitly.\n  - Caveats — any bucket with n \u003C 10, or suspicious values\n    (specificity == sensitivity, RadCliQ-v1 negative, SEMB near zero).\n- Write bullets as direct observations, not labeled headers (\"SEMB dropped\n  -0.076…\" not \"**SEMB:** dropped …\"). Skip any bullet that has nothing to\n  say. Don't write a \"summary\" or \"overall\" bullet — the headline does that.\n  Don't re-hedge magnitudes already in the headline.\n\n## Two result-dirs (comparison)\n\n```bash\nuv run python .github\u002Fskills\u002Fsummarize-eval\u002Feval_summary.py \\\n    --baseline \u003Cbaseline-dir> --candidate \u003Ccandidate-dir>\n```\n\n**Required output, in this order:**\n\n1. The script's stdout, copied verbatim (per-dir tables + delta table — do not edit, re-format, drop, or re-render them).\n2. The analysis bullets below.\n\n**Analysis.** One bold headline sentence, then 2–5 free-form bullets. Classification leads when present.\n\n- **Headline (bold, 1 sentence).** Did candidate beat baseline? Cite the\n  macro-F1 \u002F sensitivity \u002F specificity deltas (or the strongest cxr_metric\n  delta if classification is absent). No hedging in the headline.\n- **Bullets.** Cover, in whatever order makes the story clearest:\n  - Calibration — did the high-vs-medium gap on macro-F1 \u002F sensitivity widen,\n    narrow, or invert? Often the real story; cite both gaps.\n  - Agreement — do classification deltas and cxr_metric deltas point the\n    same direction? Name the metric that agrees most, or call out a\n    disagreement explicitly (\"text similarity dropped while classification\n    improved — surface form changed, findings didn't\").\n  - Caveats — any bucket with n \u003C 10. Classification deltas under ~0.02 and\n    cxr_metric deltas under 0.05 (0.2 for RadCliQ) on small N are noise; say\n    so once.\n- Write bullets as direct observations, not labeled headers. Skip any bullet\n  that has nothing to say. Don't write a \"summary\" or \"overall\" bullet.\n\n## Rules\n\n- Higher is better for BLEU \u002F BERTScore \u002F SEMB \u002F RadGraph.\n  **Lower is better for RadCliQ-v0 ↓ and RadCliQ-v1 ↓.**\n- Higher is better for every classification metric (accuracy, F1, sensitivity,\n  specificity, bal-acc).\n- All numbers come from the script's output. Don't recompute.\n- Always include the script's stdout tables before the analysis. Never reply with bullets only.\n- Markdown only. Tables + bullets. No padding, no clinical disclaimers, no recap\n  of what the metrics measure.\n",{"name":5,"description":7},"main","a5e67c5253aeb4d3186860e989a54781bd3f859c",".github\u002Fskills\u002Fsummarize-eval",0,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsiim-workshop-2026","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-09-02 06:32:37",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add microsoft\u002Fsiim-workshop-2026 --skill summarize-eval",{"tool":47,"command":48},"bunx","bunx skills add microsoft\u002Fsiim-workshop-2026 --skill summarize-eval",{"tool":50,"command":51},"pnpm","pnpm dlx skills add microsoft\u002Fsiim-workshop-2026 --skill summarize-eval","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsiim-workshop-2026\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fsummarize-eval\u002FSKILL.md",true,[55],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"eval_summary.py","SCRIPT","脚本",7186,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsiim-workshop-2026\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fsummarize-eval\u002Feval_summary.py",[62,79,87,96,105,111],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":73,"publishedAt":27},"01M69BPJH4BVCT0N87CG351ZKV","write-report-with-ehr","Write a context-aware chest X-ray report grounded in the trained MedImageInsight (MI2) adapter AND the patient's EHR record. Adds a COMPARISON section and uses the most recent prior report to call out interval change.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsiim-workshop-2026\u002Fblob\u002Fmain\u002Fchapters\u002Fchapter3-knowledge-sources\u002Fanswer-key\u002F.github\u002Fskills\u002Fwrite-report-with-ehr\u002FSKILL.md",[68],{"categoryNo":69,"categoryName":70,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[74,75,76,77,78],"report","write report","write report with ehr","image","change",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":27},"01M69BPGKNN9HZ3T9R0HYWEKAP","lookup-patient-history","Load a synthetic patient EHR record (demographics, HPI, problems, meds, devices, prior imaging studies and reports) for a given chest X-ray. Invoke as the first step of any context-aware reporting flow that needs patient history. No model calls.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsiim-workshop-2026\u002Fblob\u002Fmain\u002Fchapters\u002Fchapter3-knowledge-sources\u002Fanswer-key\u002F.github\u002Fskills\u002Flookup-patient-history\u002FSKILL.md",[],[86,77],"lookup patient history",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":27},"01M69BPF16NS8ERJATDKHVVPNN","write-report-zeroshot","Write a chest X-ray report grounded in MedImageInsight (MI2) zero-shot classifier scores. Invoke whenever drafting a CXR report when MI2 is available — get vision-grounded per-finding probabilities, then delegate the prose to `write-report-simple`.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsiim-workshop-2026\u002Fblob\u002Fmain\u002Fchapters\u002Fchapter2-foundation-models\u002Fstarter\u002F.github\u002Fskills\u002Fwrite-report-zeroshot\u002FSKILL.md",[93],{"categoryNo":69,"categoryName":70,"taxonomyType":71,"taxonomyTypeDesc":72},[95,74,75,77],"write report zeroshot",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":103,"publishedAt":27},"01M69BPDHYW62JH7VAT6JSP9R7","write-report-adapter","Write a chest X-ray report grounded in the trained MedImageInsight (MI2) adapter. Invoke whenever drafting a CXR report when the adapter is available — get vision-grounded per-finding positive\u002Fpossible\u002Fnegative calls, then delegate the prose to `write-report-simple`.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsiim-workshop-2026\u002Fblob\u002Fmain\u002Fchapters\u002Fchapter2-foundation-models\u002Fstarter\u002F.github\u002Fskills\u002Fwrite-report-adapter\u002FSKILL.md",[102],{"categoryNo":69,"categoryName":70,"taxonomyType":71,"taxonomyTypeDesc":72},[104,74,75,77],"write report adapter",{"skillNo":106,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":110,"publishedAt":27},"01M69BPBMS89S03WSRCJP5XDYN","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsiim-workshop-2026\u002Fblob\u002Fmain\u002Fchapters\u002Fchapter2-foundation-models\u002Fanswer-key\u002F.github\u002Fskills\u002Fwrite-report-zeroshot\u002FSKILL.md",[109],{"categoryNo":69,"categoryName":70,"taxonomyType":71,"taxonomyTypeDesc":72},[95,74,75,77],{"skillNo":112,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":116,"publishedAt":27},"01M69BP9Z718J2D8SA7ARERMYS","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsiim-workshop-2026\u002Fblob\u002Fmain\u002Fchapters\u002Fchapter2-foundation-models\u002Fanswer-key\u002F.github\u002Fskills\u002Fwrite-report-adapter\u002FSKILL.md",[115],{"categoryNo":69,"categoryName":70,"taxonomyType":71,"taxonomyTypeDesc":72},[104,74,75,77]]