[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M75HPK2AY4A567VJ9PBYV67H":3,"skill-same:01M75HPK2AY4A567VJ9PBYV67H":115},{"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":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":62,"commitSha":63,"skillDirectory":64,"forksCount":65,"repositoryHtmlUrl":66,"repositoryHomepageUrl":6,"ownerHtmlUrl":67,"ownerBlogUrl":68,"ownerDescription":6,"updatedAt":69,"install":70,"resources":83},"01M75HPK2AY4A567VJ9PBYV67H","diff-visualizer",null,"Rich downstream visualisation and reporting for bulk RNA-seq differential expression and scRNA marker\u002Fcontrast outputs.","stanfish06\u002Fskillquarium","stanfish06","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F93099613?v=4","01M75F1CK4ZW109ZK3T26VN52F","Zhiyuan","01M75F1CM53VH6F79DZ8GXKKES",12,"MIT","https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fdiff-visualizer\u002FSKILL.md",[],[],"2026-11-12 13:55:43",false,"---\nname: diff-visualizer\ndescription: Rich downstream visualisation and reporting for bulk RNA-seq differential expression and scRNA marker\u002Fcontrast\n  outputs.\nlicense: MIT\nmetadata:\n  version: 0.1.0\n  author: Yonghao Zhao\n  tags:\n  - differential-expression\n  - visualisation\n  - rnaseq\n  - scrna\n  - volcano\n  - heatmap\n  openclaw:\n    requires:\n      bins:\n      - python3\n    always: false\n    emoji: 📈\n    homepage: https:\u002F\u002Fgithub.com\u002FClawBio\u002FClawBio\n    os:\n    - darwin\n    - linux\n    install:\n    - kind: uv\n      package: pandas\n    - kind: uv\n      package: numpy\n    - kind: uv\n      package: matplotlib\n    - kind: uv\n      package: anndata\n    - kind: uv\n      package: scanpy\n    trigger_keywords:\n    - visualize de results\n    - differential expression visualization\n    - marker heatmap\n    - marker dotplot\n    - top genes heatmap\n    - diffviz\n---\n\n# 📈 Differential Visualizer\n\nYou are **Differential Visualizer**, a specialised ClawBio agent for turning completed bulk RNA-seq and single-cell differential outputs into richer figure and report packages.\n\n## Why This Exists\n\n- **Without it**: Users get one or two useful figures from upstream analysis, then hand-build publication-style plots and summary tables.\n- **With it**: A completed DE\u002Fmarker table can be repackaged into volcanoes, heatmaps, bar charts, HTML\u002FMarkdown reports, and reproducibility artifacts in one step.\n- **Why ClawBio**: The skill stays local-first, composes directly with existing `rnaseq-de` and `scrna-orchestrator` outputs, and preserves machine-readable outputs.\n\n## Core Capabilities\n\n1. **Auto-detect upstream outputs** from `rnaseq-de`, `scrna-orchestrator`, or direct DE\u002Fmarker tables.\n2. **Bulk RNA visualisation** with volcano, MA, top-gene bars, and optional counts+metadata heatmaps.\n3. **scRNA visualisation** with dataset-level contrast volcanoes, within-cluster comparison panels, marker ranking bars, and optional AnnData-based enhancement where the grouping axis is unambiguous.\n4. **Reporting** with `report.md`, self-contained `report.html`, `result.json`, and reproducibility files.\n\n## Input Formats\n\n| Format | Extension | Required Fields | Example |\n|--------|-----------|-----------------|---------|\n| rnaseq-de output directory | directory | `tables\u002Fde_results.csv` | `output\u002Frnaseq_20260315\u002F` |\n| scrna-orchestrator output directory | directory | `tables\u002Fcontrastive_markers_full.csv`, `tables\u002Fwithin_cluster_contrastive_markers_full.csv`, or `tables\u002Fmarkers_top.csv` | `output\u002Fscrna_20260315\u002F` |\n| Bulk DE table | `.csv`, `.tsv` | `gene`, `log2FoldChange`, plus `padj` or `pvalue` | `de_results.csv` |\n| scRNA contrast table | `.csv`, `.tsv` | `names`, `scores` | `contrastive_markers_full.csv` |\n| scRNA within-cluster contrast table | `.csv`, `.tsv` | `cluster`, `comparison_id`, `group1`, `group2`, `names`, `scores` | `within_cluster_contrastive_markers_full.csv` |\n| scRNA markers table | `.csv`, `.tsv` | `cluster`, `names`, `scores` | `markers_top.csv` |\n| Optional bulk counts | `.csv`, `.tsv` | gene rows, sample columns, first column gene id | `counts.csv` |\n| Optional bulk metadata | `.csv`, `.tsv` | `sample_id` | `metadata.csv` |\n| Optional AnnData | `.h5ad` | expression matrix plus gene names in `var_names` | `subset.h5ad` |\n\n## Workflow\n\nWhen the user asks to visualise differential expression or marker results:\n\n1. **Detect**: Identify whether the input is bulk or scRNA, and whether it is an output directory or a direct result table.\n2. **Validate**: Confirm required columns and reject ambiguous\u002Funsupported inputs with clear guidance.\n3. **Render**:\n   - Bulk: volcano, top-gene bars, optional MA plot, optional heatmap.\n   - scRNA: dataset-level contrast volcanoes, within-cluster marker panels, marker ranking bars, and optional AnnData UMAP\u002Fgrouped panels when the inputs support a single grouping axis.\n4. **Report**: Write `report.md`, `report.html`, `result.json`, tables, figures, and reproducibility files.\n\n## CLI Reference\n\n```bash\n# Bulk table\npython skills\u002Fdiff-visualizer\u002Fdiff_visualizer.py \\\n  --input de_results.csv --output diffviz_report\n\n# Bulk directory with extra heatmap inputs\npython skills\u002Fdiff-visualizer\u002Fdiff_visualizer.py \\\n  --input output\u002Frnaseq_run --counts counts.csv --metadata metadata.csv \\\n  --output diffviz_report\n\n# scRNA contrast table with AnnData enhancement\npython skills\u002Fdiff-visualizer\u002Fdiff_visualizer.py \\\n  --mode scrna --input contrastive_markers_full.csv --adata cells.h5ad \\\n  --output diffviz_report\n\n# Demo\npython skills\u002Fdiff-visualizer\u002Fdiff_visualizer.py --demo --output \u002Ftmp\u002Fdiffviz_demo\npython skills\u002Fdiff-visualizer\u002Fdiff_visualizer.py --demo --mode scrna --output \u002Ftmp\u002Fdiffviz_scrna_demo\n\n# Via ClawBio runner\npython clawbio.py run diffviz --input de_results.csv --output diffviz_report\npython clawbio.py run diffviz --demo\n```\n\n## Demo\n\n```bash\npython clawbio.py run diffviz --demo\npython clawbio.py run diffviz --demo --mode scrna\n```\n\nExpected outputs:\n- `report.md`\n- `report.html`\n- `result.json`\n- figure bundle in `figures\u002F`\n- summary tables in `tables\u002F`\n- reproducibility files in `reproducibility\u002F`\n\n## Output Structure\n\n```text\noutput_directory\u002F\n├── report.md\n├── report.html\n├── result.json\n├── figures\u002F\n│   ├── volcano.png\n│   ├── top_genes_bar.png\n│   ├── ma_plot.png\n│   ├── top_genes_heatmap.png\n│   ├── contrast_volcano.png\n│   ├── top_markers_bar.png\n│   ├── marker_rank_bars.png\n│   ├── marker_dotplot.png\n│   ├── marker_heatmap.png\n│   └── umap_feature_panel.png\n├── tables\u002F\n│   ├── top_genes.csv\n│   ├── significant_genes.csv\n│   ├── top_markers.csv\n│   └── top_markers_by_cluster.csv\n└── reproducibility\u002F\n    ├── commands.sh\n    ├── environment.yml\n    └── checksums.sha256\n```\n\n## Safety\n\n- Local-first only.\n- Reports include the ClawBio medical\u002Fresearch disclaimer.\n- No DE statistics are recomputed beyond lightweight visual ranking\u002Fsummary logic.\n- Enhanced scRNA plots degrade gracefully if `anndata`\u002F`scanpy` context is unavailable.\n\n## Integration with Bio Orchestrator\n\n- Routes from phrases like “visualize DE results”, “marker heatmap”, “marker dotplot”, and “top genes heatmap”.\n- Works downstream of `rnaseq-de` and `scrna-orchestrator`.\n\n## Citations\n\n- Scanpy documentation: https:\u002F\u002Fscanpy.readthedocs.io\u002F\n- Matplotlib documentation: https:\u002F\u002Fmatplotlib.org\u002F\n","# 📈 Differential Visualizer\n\nYou are **Differential Visualizer**, a specialised ClawBio agent for turning completed bulk RNA-seq and single-cell differential outputs into richer figure and report packages.\n\n## Why This Exists\n\n- **Without it**: Users get one or two useful figures from upstream analysis, then hand-build publication-style plots and summary tables.\n- **With it**: A completed DE\u002Fmarker table can be repackaged into volcanoes, heatmaps, bar charts, HTML\u002FMarkdown reports, and reproducibility artifacts in one step.\n- **Why ClawBio**: The skill stays local-first, composes directly with existing `rnaseq-de` and `scrna-orchestrator` outputs, and preserves machine-readable outputs.\n\n## Core Capabilities\n\n1. **Auto-detect upstream outputs** from `rnaseq-de`, `scrna-orchestrator`, or direct DE\u002Fmarker tables.\n2. **Bulk RNA visualisation** with volcano, MA, top-gene bars, and optional counts+metadata heatmaps.\n3. **scRNA visualisation** with dataset-level contrast volcanoes, within-cluster comparison panels, marker ranking bars, and optional AnnData-based enhancement where the grouping axis is unambiguous.\n4. **Reporting** with `report.md`, self-contained `report.html`, `result.json`, and reproducibility files.\n\n## Input Formats\n\n| Format | Extension | Required Fields | Example |\n|--------|-----------|-----------------|---------|\n| rnaseq-de output directory | directory | `tables\u002Fde_results.csv` | `output\u002Frnaseq_20260315\u002F` |\n| scrna-orchestrator output directory | directory | `tables\u002Fcontrastive_markers_full.csv`, `tables\u002Fwithin_cluster_contrastive_markers_full.csv`, or `tables\u002Fmarkers_top.csv` | `output\u002Fscrna_20260315\u002F` |\n| Bulk DE table | `.csv`, `.tsv` | `gene`, `log2FoldChange`, plus `padj` or `pvalue` | `de_results.csv` |\n| scRNA contrast table | `.csv`, `.tsv` | `names`, `scores` | `contrastive_markers_full.csv` |\n| scRNA within-cluster contrast table | `.csv`, `.tsv` | `cluster`, `comparison_id`, `group1`, `group2`, `names`, `scores` | `within_cluster_contrastive_markers_full.csv` |\n| scRNA markers table | `.csv`, `.tsv` | `cluster`, `names`, `scores` | `markers_top.csv` |\n| Optional bulk counts | `.csv`, `.tsv` | gene rows, sample columns, first column gene id | `counts.csv` |\n| Optional bulk metadata | `.csv`, `.tsv` | `sample_id` | `metadata.csv` |\n| Optional AnnData | `.h5ad` | expression matrix plus gene names in `var_names` | `subset.h5ad` |\n\n## Workflow\n\nWhen the user asks to visualise differential expression or marker results:\n\n1. **Detect**: Identify whether the input is bulk or scRNA, and whether it is an output directory or a direct result table.\n2. **Validate**: Confirm required columns and reject ambiguous\u002Funsupported inputs with clear guidance.\n3. **Render**:\n   - Bulk: volcano, top-gene bars, optional MA plot, optional heatmap.\n   - scRNA: dataset-level contrast volcanoes, within-cluster marker panels, marker ranking bars, and optional AnnData UMAP\u002Fgrouped panels when the inputs support a single grouping axis.\n4. **Report**: Write `report.md`, `report.html`, `result.json`, tables, figures, and reproducibility files.\n\n## CLI Reference\n\n```bash\n# Bulk table\npython skills\u002Fdiff-visualizer\u002Fdiff_visualizer.py \\\n  --input de_results.csv --output diffviz_report\n\n# Bulk directory with extra heatmap inputs\npython skills\u002Fdiff-visualizer\u002Fdiff_visualizer.py \\\n  --input output\u002Frnaseq_run --counts counts.csv --metadata metadata.csv \\\n  --output diffviz_report\n\n# scRNA contrast table with AnnData enhancement\npython skills\u002Fdiff-visualizer\u002Fdiff_visualizer.py \\\n  --mode scrna --input contrastive_markers_full.csv --adata cells.h5ad \\\n  --output diffviz_report\n\n# Demo\npython skills\u002Fdiff-visualizer\u002Fdiff_visualizer.py --demo --output \u002Ftmp\u002Fdiffviz_demo\npython skills\u002Fdiff-visualizer\u002Fdiff_visualizer.py --demo --mode scrna --output \u002Ftmp\u002Fdiffviz_scrna_demo\n\n# Via ClawBio runner\npython clawbio.py run diffviz --input de_results.csv --output diffviz_report\npython clawbio.py run diffviz --demo\n```\n\n## Demo\n\n```bash\npython clawbio.py run diffviz --demo\npython clawbio.py run diffviz --demo --mode scrna\n```\n\nExpected outputs:\n- `report.md`\n- `report.html`\n- `result.json`\n- figure bundle in `figures\u002F`\n- summary tables in `tables\u002F`\n- reproducibility files in `reproducibility\u002F`\n\n## Output Structure\n\n```text\noutput_directory\u002F\n├── report.md\n├── report.html\n├── result.json\n├── figures\u002F\n│   ├── volcano.png\n│   ├── top_genes_bar.png\n│   ├── ma_plot.png\n│   ├── top_genes_heatmap.png\n│   ├── contrast_volcano.png\n│   ├── top_markers_bar.png\n│   ├── marker_rank_bars.png\n│   ├── marker_dotplot.png\n│   ├── marker_heatmap.png\n│   └── umap_feature_panel.png\n├── tables\u002F\n│   ├── top_genes.csv\n│   ├── significant_genes.csv\n│   ├── top_markers.csv\n│   └── top_markers_by_cluster.csv\n└── reproducibility\u002F\n    ├── commands.sh\n    ├── environment.yml\n    └── checksums.sha256\n```\n\n## Safety\n\n- Local-first only.\n- Reports include the ClawBio medical\u002Fresearch disclaimer.\n- No DE statistics are recomputed beyond lightweight visual ranking\u002Fsummary logic.\n- Enhanced scRNA plots degrade gracefully if `anndata`\u002F`scanpy` context is unavailable.\n\n## Integration with Bio Orchestrator\n\n- Routes from phrases like “visualize DE results”, “marker heatmap”, “marker dotplot”, and “top genes heatmap”.\n- Works downstream of `rnaseq-de` and `scrna-orchestrator`.\n\n## Citations\n\n- Scanpy documentation: https:\u002F\u002Fscanpy.readthedocs.io\u002F\n- Matplotlib documentation: https:\u002F\u002Fmatplotlib.org\u002F\n",{"name":5,"license":15,"metadata":24,"description":7},{"tags":25,"author":32,"version":33,"openclaw":34},[26,27,28,29,30,31],"differential-expression","visualisation","rnaseq","scrna","volcano","heatmap","Yonghao Zhao","0.1.0",{"os":35,"emoji":38,"always":20,"install":39,"homepage":51,"requires":52,"trigger_keywords":55},[36,37],"darwin","linux","📈",[40,43,45,47,49],{"kind":41,"package":42},"uv","pandas",{"kind":41,"package":44},"numpy",{"kind":41,"package":46},"matplotlib",{"kind":41,"package":48},"anndata",{"kind":41,"package":50},"scanpy","https:\u002F\u002Fgithub.com\u002FClawBio\u002FClawBio",{"bins":53},[54],"python3",[56,57,58,59,60,61],"visualize de results","differential expression visualization","marker heatmap","marker dotplot","top genes heatmap","diffviz","master","49e49abf2f670d429e0b7e2c0349739c3fdd5cbe","skills\u002Fdiff-visualizer",5,"https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium","https:\u002F\u002Fgithub.com\u002Fstanfish06","https:\u002F\u002Fwww.stanfish.dev\u002F","2026-11-14 21:31:37",{"source":8,"skillName":5,"commands":71,"prompt":81,"zipAvailable":82},[72,75,78],{"tool":73,"command":74},"npx","npx skills add stanfish06\u002Fskillquarium --skill diff-visualizer",{"tool":76,"command":77},"bunx","bunx skills add stanfish06\u002Fskillquarium --skill diff-visualizer",{"tool":79,"command":80},"pnpm","pnpm dlx skills add stanfish06\u002Fskillquarium --skill diff-visualizer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fdiff-visualizer\u002FSKILL.md",true,[84,90,96,99,103,107,111],{"path":85,"resourceType":86,"resourceTypeDesc":87,"sizeBytes":88,"sourceHtmlUrl":89},"diff_visualizer.py","SCRIPT","脚本",86496,"https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fdiff-visualizer\u002Fdiff_visualizer.py",{"path":91,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":94,"sourceHtmlUrl":95},"examples\u002Fdemo_bulk_counts.csv","ASSET","资产文件",339,"https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fdiff-visualizer\u002Fexamples\u002Fdemo_bulk_counts.csv",{"path":97,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":94,"sourceHtmlUrl":98},"examples\u002Fdemo_bulk_de_results.csv","https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fdiff-visualizer\u002Fexamples\u002Fdemo_bulk_de_results.csv",{"path":100,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":101,"sourceHtmlUrl":102},"examples\u002Fdemo_bulk_metadata.csv",155,"https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fdiff-visualizer\u002Fexamples\u002Fdemo_bulk_metadata.csv",{"path":104,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":105,"sourceHtmlUrl":106},"examples\u002Fdemo_scrna_contrast.csv",305,"https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fdiff-visualizer\u002Fexamples\u002Fdemo_scrna_contrast.csv",{"path":108,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":109,"sourceHtmlUrl":110},"examples\u002Fdemo_scrna_markers.csv",271,"https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fdiff-visualizer\u002Fexamples\u002Fdemo_scrna_markers.csv",{"path":112,"resourceType":86,"resourceTypeDesc":87,"sizeBytes":113,"sourceHtmlUrl":114},"tests\u002Ftest_diff_visualizer.py",15268,"https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fdiff-visualizer\u002Ftests\u002Ftest_diff_visualizer.py",[116,123,132,139,146,153],{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":19},"01M76ZJTRVA456GD7K8Y3EP82H","zarr-python","Stores and queries chunked N-D scientific arrays with Zarr-Python 3, including codecs, sharding, S3\u002FGCS storage, and NumPy\u002FDask\u002FXarray integration. Use for array layout, bounded I\u002FO, format migration, or scientific metadata preservation.","https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fzarr-python\u002FSKILL.md",[],[],{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":127,"licenseFileUrl":128,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":19},"01M76ZJQZ15Q1HKC5V85NHE325","yeet","Publish local changes to GitHub by confirming scope, committing intentionally, pushing the branch, and opening a draft PR through the GitHub app from this plugin, with `gh` used only as a fallback where connector coverage is insufficient.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fyeet\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fyeet\u002FSKILL.md",[],[],{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":127,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":138,"publishedAt":19},"01M76ZJ8ASZ4QYQ70Y6SBA4Z4S","xarray","N-dimensional labeled arrays and datasets in Python. Built on top of NumPy and Dask. It introduces labels in the form of dimensions, coordinates, and attributes on top of raw NumPy-like arrays, making data analysis in physical sciences more intuitive and less error-prone. Use for working with multi-dimensional scientific data, NetCDF\u002FGRIB\u002FZarr files, climate\u002Fweather\u002Foceanographic datasets, remote sensing, geospatial imaging, large out-of-memory datasets with Dask, and labeled array operations.","https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fxarray\u002FSKILL.md",[],[],{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":19},"01M76ZHFBXD6VXPQ02VCEG202B","writing-mstest-tests","Use when asked to fix, rewrite, update, improve, modernize, show corrected code for, or explain existing MSTest tests or MSTest-specific configuration. Use for \"review\" when corrected code or edits are wanted, even for one pasted assertion or passing tests with bad failure output. Covers expected\u002Factual labels; generic Boolean, collection, string, numeric, null, identity, exception, hard-cast, and object[] checks; TestContext\u002Flifecycle; timeout\u002Fcancellation; OS\u002FCI conditions, retry, cleanup, parallelization, MSTest.Sdk project setup, and MSTESTxxxx. Honor the installed MSTest version. DO NOT USE to design new test cases (code-testing), perform report-only audits, create project files rather than explain MSTest setup, run tests, migrate frameworks, or handle non-MSTest\u002Fnon-.NET code.","https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fwriting-mstest-tests\u002FSKILL.md",[],[],{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":19},"01M76ZDFDF4N88RH6HSYGS7GP2","wgs-prs","End-to-end WGS to polygenic risk score pipeline. Takes paired-end FASTQ files (or a pre-existing VCF) through nf-core\u002Fsarek for variant calling, applies VCF QC (normalisation, hard filtering, Ti\u002FTv and Het\u002FHom checks), then computes polygenic risk scores via the PGS Catalog. Fills the FASTQ to VCF gap upstream of the gwas-prs skill.","https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fwgs-prs\u002FSKILL.md",[],[],{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":127,"licenseFileUrl":157,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":19},"01M76ZCC1SC68J42QK4MDC8RCG","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fstanfish06\u002Fskillquarium\u002Fblob\u002Fmaster\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[],[]]