[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EKVJC396QCFAPPCDZD0T8M":3,"skill-same:01M6EKVJC396QCFAPPCDZD0T8M":112},{"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":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":63,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6EKVJC396QCFAPPCDZD0T8M","causal-dag-identification",null,"Every causal study under selection-on-observables must begin with an explicit DAG that names identifying assumptions and surfaces every observable confounder, mediator, and collider in the analytic sample.","cgpan\u002Fedm-ars-public","cgpan","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F118746117?v=4","01M6EKT5TG36Q3GH340QN8RH08","Chenguang Pan","01M6EKT5YTQVRARGJF0VPA1SY7",5,"MIT","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Fskills\u002Fmethodology\u002Fcausal-dag-identification\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30],"dag","identification","causal dag identification","methodology","SET","critic","surfaces","selection","back","study","analyst","sample","2026-11-10 10:12:30",false,"---\nname: causal-dag-identification\nlayer: methodology\ndescription: Every causal study under selection-on-observables must begin with an explicit DAG that names identifying assumptions and surfaces every observable confounder, mediator, and collider in the analytic sample.\ntrigger_keywords:\n  - causal\n  - dag\n  - identification\n  - confounder\n  - confounding\n  - mediator\n  - collider\n  - back-door\n  - backdoor\n  - adjustment-set\napplicable_task_types:\n  - causal_soo\n  - causal_itr\napplicable_datasets: []\napplicable_stages:\n  - ProblemFormulator\n  - Analyst\n  - Critic\npriority: 1\nreferences_skills: []\nresources: []\nversion: \"1.0\"\n---\n\n# Causal DAG and Identification\n\nEvery causal study in `task_type=causal_soo` (selection-on-observables)\nbegins with an explicit DAG. The DAG is the contract between the\nresearch question and the estimator — it names which variables play\nwhich roles (treatment, outcome, confounder, mediator, collider,\ninstrument, pre-treatment correlate) and which back-door paths the\nadjustment set must close. Any method skill (M1–M5) composes this\nskill so the DAG check happens before any estimator runs.\n\n## Selection-on-observables identification\n\nThe selection-on-observables strategy assumes:\n\n> **No-unmeasured-confounding (NUC):** conditional on the adjustment set\n> `C`, treatment assignment `T` is independent of the potential outcomes\n> `(Y(0), Y(1))`. That is, every back-door path between `T` and `Y` is\n> blocked by `C`, and `C` contains no descendants of `T`.\n\nNUC is a **checkable claim about the DAG**, not a boilerplate\nassumption. Every causal study must state the claim, name the\ncovariates that make it plausible, and acknowledge — by name — any\nconfounder it *cannot* observe.\n\n## DAG drawing instructions\n\nFor every causal research question, construct a DAG with:\n\n- Nodes = treatment `T`, outcome `Y`, and every covariate `C` in the\n  candidate adjustment set.\n- Edges = directed; an edge `A → B` asserts that `A` causally\n  influences `B`.\n- Serialization = the DAG MUST be saved in `research_spec.dag` as a\n  DOT-string (round-trippable with NetworkX `nx.DiGraph`). DOT is\n  preferred over pickled NetworkX so the DAG survives JSON\n  round-trip with the rest of `research_spec.json`.\n\n## Adjustment-set selection — the back-door criterion (operational)\n\nFor an adjustment set `C` to identify the causal effect of `T` on `Y`:\n\n1. **Close every back-door path** from `T` to `Y`. A back-door path is\n   any path beginning with an edge **into** `T` (i.e., `T ← ...`).\n   Conditioning on `C` blocks the path iff `C` contains a non-collider\n   node on the path.\n2. **Include no descendants of `T`** — conditioning on a post-treatment\n   variable bars identification by absorbing part of the causal effect\n   (post-treatment \u002F mediator-as-confounder bias).\n3. **Include no colliders** on the back-door paths unless the path\n   requires conditioning on one of the collider's ancestors (the\n   ancestor-of-collider rule).\n\nIf the DAG implies an un-block-able back-door path — i.e., the\nadjustment set requires a confounder that is **not observed** in the\ndata — identification fails under selection-on-observables.\n\n## Mandatory pre-estimation checklist\n\nBefore any estimator runs, the Analyst must produce a covariate\ntemporal-and-role table. For each candidate covariate `C` in\n`research_spec.adjustment_set`, declare:\n\n| Field | Allowed values |\n|---|---|\n| `temporal_status` | `pre` \u002F `post` \u002F `contemporaneous` (relative to `T`) |\n| `dag_role` | `confounder` \u002F `mediator` \u002F `collider` \u002F `instrument` \u002F `pre-treatment correlate` |\n\nSave the table to `research_spec.covariate_temporal_table` and\n`data_report.causal_identification.covariate_role_table`. Any covariate\nwith `temporal_status: post` is forbidden in the adjustment set per\nrule 2 of the back-door criterion above.\n\n## Identification-failure escalation\n\nIf `dowhy.CausalModel.identify_effect` returns `None`, OR if the DAG\ncontains an un-block-able back-door path because a required confounder\nis unobserved:\n\n- **Analyst** MUST stop. Do NOT silently proceed with \"best available\"\n  adjustment.\n- **Critic** MUST issue REVISE.\n- The Writer must NOT report a causal estimate.\n\nWrite the failure into `data_report.causal_identification`:\n\n```json\n{\n  \"adjustment_set\": [\"...\"],\n  \"identified\": false,\n  \"identification_method\": \"backdoor.linear_regression\",\n  \"unmeasured_confounders_named\": [\"prior teacher quality\", \"...\"]\n}\n```\n\n`validation_passed: false` follows automatically.\n\n## Composition note\n\nEvery method skill (M1–M5) lists this skill in its `references_skills`\nso the DAG check + identification step always runs before any\nestimator. G2 (estimand definition) also composes this skill — the\nestimand is meaningful only against a DAG that identifies it.\n\n## Python implementation guidance\n\n**Primary library:** `dowhy` (PyWhy). `dowhy.CausalModel` constructs\nthe DAG from a DOT string (or NetworkX `DiGraph`); `identify_effect`\nderives the back-door \u002F front-door \u002F IV identification recipe;\n`refute_estimate` runs placebo \u002F random-common-cause \u002F\nunobserved-common-cause sensitivity checks.\n\n**Pin:** `dowhy>=0.11,\u003C0.13`. The `dowhy` API has historically had\nchurn between minor versions — pinning the upper bound prevents\nsilent breakage when an upstream rename lands.\n\n**Fallback:** if `dowhy` becomes unmaintained, the `CausalModel`\nskeleton can be replaced with a thin custom wrapper around NetworkX\n+ a back-door criterion implementation (~80 LOC: enumerate paths\nbetween `T` and `Y`, classify each edge, check whether the proposed\nadjustment set blocks every back-door path).\n\n**Key functions \u002F classes:**\n\n- `dowhy.CausalModel(data, treatment, outcome, graph=DOT_string)`\n- `model.identify_effect(method_name=\"default\")` → returns\n  `dowhy.causal_identifier.IdentifiedEstimand` or `None`\n- `model.refute_estimate(estimate, method_name=\"random_common_cause\" | \"placebo_treatment_refuter\" | ...)`\n- helpers in `dowhy.causal_identifier`\n\n**Function signatures the Analyst should produce:**\n\n```python\ndef build_causal_model(\n    df: pd.DataFrame,\n    treatment: str,\n    outcome: str,\n    dag_dot: str,\n) -> dowhy.CausalModel: ...\n\ndef identify_estimand(model: dowhy.CausalModel) -> dowhy.causal_identifier.IdentifiedEstimand: ...\n\ndef assert_no_post_treatment_in_adjustment(\n    adjustment_set: list[str],\n    treatment_var: str,\n    var_temporal_table: dict[str, str],  # var -> 'pre' | 'post' | 'contemporaneous'\n) -> None: ...\n```\n\n**Library pitfalls:**\n\n- `dowhy` has had API churn; pin `dowhy>=0.11,\u003C0.13`.\n- The `graph` argument accepts DOT or NetworkX `nx.DiGraph`; prefer DOT\n  for round-trip with `research_spec.json`.\n- `identify_effect` will silently return `None` for unidentifiable\n  estimands — the Analyst code must check and fail loudly.\n- `refute_estimate` is best-effort, not proof of identification.\n\n## Validation criteria\n\nThe SKILL contract requires that:\n\n1. The back-door criterion is operationally stated (the three rules\n   above).\n2. The pre\u002Fpost\u002Fcontemporaneous temporal-status mandate is enforced\n   for every covariate.\n3. The un-block-able-back-door escalation rule is honored\n   (`validation_passed: false`).\n4. The `dowhy.CausalModel` code skeleton is followed (no ad-hoc\n   adjustment-set picking).\n5. `references_skills` is empty (this skill is the root) and every\n   method skill (M1–M5) composes this one.\n\nA Writer using this skill must be able to produce a §Methods \u002F\nIdentification subsection that names the no-unmeasured-confounding\nassumption and lists every conditioning covariate with its DAG role.\n\nAn Analyst code artifact using this skill must produce:\n\n- `research_spec.dag` as a DOT string,\n- `data_report.causal_identification` with\n  `{adjustment_set, identified, identification_method, unmeasured_confounders_named}`,\n- explicit `validation_passed: false` when `identified == False`.\n\n## Source provenance\n\nCanonical source: the v3.0 causal-methods specification (internal) §3.1\n(G1 per-skill specification, including back-door criterion, DoWhy\nimplementation skeleton, dowhy version pin, and NetworkX fallback).\n","# Causal DAG and Identification\n\nEvery causal study in `task_type=causal_soo` (selection-on-observables)\nbegins with an explicit DAG. The DAG is the contract between the\nresearch question and the estimator — it names which variables play\nwhich roles (treatment, outcome, confounder, mediator, collider,\ninstrument, pre-treatment correlate) and which back-door paths the\nadjustment set must close. Any method skill (M1–M5) composes this\nskill so the DAG check happens before any estimator runs.\n\n## Selection-on-observables identification\n\nThe selection-on-observables strategy assumes:\n\n> **No-unmeasured-confounding (NUC):** conditional on the adjustment set\n> `C`, treatment assignment `T` is independent of the potential outcomes\n> `(Y(0), Y(1))`. That is, every back-door path between `T` and `Y` is\n> blocked by `C`, and `C` contains no descendants of `T`.\n\nNUC is a **checkable claim about the DAG**, not a boilerplate\nassumption. Every causal study must state the claim, name the\ncovariates that make it plausible, and acknowledge — by name — any\nconfounder it *cannot* observe.\n\n## DAG drawing instructions\n\nFor every causal research question, construct a DAG with:\n\n- Nodes = treatment `T`, outcome `Y`, and every covariate `C` in the\n  candidate adjustment set.\n- Edges = directed; an edge `A → B` asserts that `A` causally\n  influences `B`.\n- Serialization = the DAG MUST be saved in `research_spec.dag` as a\n  DOT-string (round-trippable with NetworkX `nx.DiGraph`). DOT is\n  preferred over pickled NetworkX so the DAG survives JSON\n  round-trip with the rest of `research_spec.json`.\n\n## Adjustment-set selection — the back-door criterion (operational)\n\nFor an adjustment set `C` to identify the causal effect of `T` on `Y`:\n\n1. **Close every back-door path** from `T` to `Y`. A back-door path is\n   any path beginning with an edge **into** `T` (i.e., `T ← ...`).\n   Conditioning on `C` blocks the path iff `C` contains a non-collider\n   node on the path.\n2. **Include no descendants of `T`** — conditioning on a post-treatment\n   variable bars identification by absorbing part of the causal effect\n   (post-treatment \u002F mediator-as-confounder bias).\n3. **Include no colliders** on the back-door paths unless the path\n   requires conditioning on one of the collider's ancestors (the\n   ancestor-of-collider rule).\n\nIf the DAG implies an un-block-able back-door path — i.e., the\nadjustment set requires a confounder that is **not observed** in the\ndata — identification fails under selection-on-observables.\n\n## Mandatory pre-estimation checklist\n\nBefore any estimator runs, the Analyst must produce a covariate\ntemporal-and-role table. For each candidate covariate `C` in\n`research_spec.adjustment_set`, declare:\n\n| Field | Allowed values |\n|---|---|\n| `temporal_status` | `pre` \u002F `post` \u002F `contemporaneous` (relative to `T`) |\n| `dag_role` | `confounder` \u002F `mediator` \u002F `collider` \u002F `instrument` \u002F `pre-treatment correlate` |\n\nSave the table to `research_spec.covariate_temporal_table` and\n`data_report.causal_identification.covariate_role_table`. Any covariate\nwith `temporal_status: post` is forbidden in the adjustment set per\nrule 2 of the back-door criterion above.\n\n## Identification-failure escalation\n\nIf `dowhy.CausalModel.identify_effect` returns `None`, OR if the DAG\ncontains an un-block-able back-door path because a required confounder\nis unobserved:\n\n- **Analyst** MUST stop. Do NOT silently proceed with \"best available\"\n  adjustment.\n- **Critic** MUST issue REVISE.\n- The Writer must NOT report a causal estimate.\n\nWrite the failure into `data_report.causal_identification`:\n\n```json\n{\n  \"adjustment_set\": [\"...\"],\n  \"identified\": false,\n  \"identification_method\": \"backdoor.linear_regression\",\n  \"unmeasured_confounders_named\": [\"prior teacher quality\", \"...\"]\n}\n```\n\n`validation_passed: false` follows automatically.\n\n## Composition note\n\nEvery method skill (M1–M5) lists this skill in its `references_skills`\nso the DAG check + identification step always runs before any\nestimator. G2 (estimand definition) also composes this skill — the\nestimand is meaningful only against a DAG that identifies it.\n\n## Python implementation guidance\n\n**Primary library:** `dowhy` (PyWhy). `dowhy.CausalModel` constructs\nthe DAG from a DOT string (or NetworkX `DiGraph`); `identify_effect`\nderives the back-door \u002F front-door \u002F IV identification recipe;\n`refute_estimate` runs placebo \u002F random-common-cause \u002F\nunobserved-common-cause sensitivity checks.\n\n**Pin:** `dowhy>=0.11,\u003C0.13`. The `dowhy` API has historically had\nchurn between minor versions — pinning the upper bound prevents\nsilent breakage when an upstream rename lands.\n\n**Fallback:** if `dowhy` becomes unmaintained, the `CausalModel`\nskeleton can be replaced with a thin custom wrapper around NetworkX\n+ a back-door criterion implementation (~80 LOC: enumerate paths\nbetween `T` and `Y`, classify each edge, check whether the proposed\nadjustment set blocks every back-door path).\n\n**Key functions \u002F classes:**\n\n- `dowhy.CausalModel(data, treatment, outcome, graph=DOT_string)`\n- `model.identify_effect(method_name=\"default\")` → returns\n  `dowhy.causal_identifier.IdentifiedEstimand` or `None`\n- `model.refute_estimate(estimate, method_name=\"random_common_cause\" | \"placebo_treatment_refuter\" | ...)`\n- helpers in `dowhy.causal_identifier`\n\n**Function signatures the Analyst should produce:**\n\n```python\ndef build_causal_model(\n    df: pd.DataFrame,\n    treatment: str,\n    outcome: str,\n    dag_dot: str,\n) -> dowhy.CausalModel: ...\n\ndef identify_estimand(model: dowhy.CausalModel) -> dowhy.causal_identifier.IdentifiedEstimand: ...\n\ndef assert_no_post_treatment_in_adjustment(\n    adjustment_set: list[str],\n    treatment_var: str,\n    var_temporal_table: dict[str, str],  # var -> 'pre' | 'post' | 'contemporaneous'\n) -> None: ...\n```\n\n**Library pitfalls:**\n\n- `dowhy` has had API churn; pin `dowhy>=0.11,\u003C0.13`.\n- The `graph` argument accepts DOT or NetworkX `nx.DiGraph`; prefer DOT\n  for round-trip with `research_spec.json`.\n- `identify_effect` will silently return `None` for unidentifiable\n  estimands — the Analyst code must check and fail loudly.\n- `refute_estimate` is best-effort, not proof of identification.\n\n## Validation criteria\n\nThe SKILL contract requires that:\n\n1. The back-door criterion is operationally stated (the three rules\n   above).\n2. The pre\u002Fpost\u002Fcontemporaneous temporal-status mandate is enforced\n   for every covariate.\n3. The un-block-able-back-door escalation rule is honored\n   (`validation_passed: false`).\n4. The `dowhy.CausalModel` code skeleton is followed (no ad-hoc\n   adjustment-set picking).\n5. `references_skills` is empty (this skill is the root) and every\n   method skill (M1–M5) composes this one.\n\nA Writer using this skill must be able to produce a §Methods \u002F\nIdentification subsection that names the no-unmeasured-confounding\nassumption and lists every conditioning covariate with its DAG role.\n\nAn Analyst code artifact using this skill must produce:\n\n- `research_spec.dag` as a DOT string,\n- `data_report.causal_identification` with\n  `{adjustment_set, identified, identification_method, unmeasured_confounders_named}`,\n- explicit `validation_passed: false` when `identified == False`.\n\n## Source provenance\n\nCanonical source: the v3.0 causal-methods specification (internal) §3.1\n(G1 per-skill specification, including back-door criterion, DoWhy\nimplementation skeleton, dowhy version pin, and NetworkX fallback).\n",{"name":5,"layer":22,"version":36,"priority":37,"resources":38,"description":7,"trigger_keywords":39,"applicable_stages":48,"references_skills":52,"applicable_datasets":53,"applicable_task_types":54},"1.0",1,[],[40,19,20,41,42,43,44,45,46,47],"causal","confounder","confounding","mediator","collider","back-door","backdoor","adjustment-set",[49,50,51],"ProblemFormulator","Analyst","Critic",[],[],[55,56],"causal_soo","causal_itr","main","1aeaead66d2bf876109f3b101005d2eed54041d9","skills\u002Fmethodology\u002Fcausal-dag-identification",0,"https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public","https:\u002F\u002Fgithub.com\u002Fcgpan","https:\u002F\u002Fcpan.ai","Ph.D. candidate in Measurement, Evaluation, and Statistics.","2026-09-28 20:39:06",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add cgpan\u002Fedm-ars-public --skill causal-dag-identification",{"tool":72,"command":73},"bunx","bunx skills add cgpan\u002Fedm-ars-public --skill causal-dag-identification",{"tool":75,"command":76},"pnpm","pnpm dlx skills add cgpan\u002Fedm-ars-public --skill causal-dag-identification","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Fskills\u002Fmethodology\u002Fcausal-dag-identification\u002FSKILL.md",true,[80,86,90,94,98,102,106],{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fcurrent-platform-state.md","REFERENCE","参考文档",2798,"https:\u002F\u002Fgithub.com\u002Famolsurjuse\u002Fagentic-workflow-orchestrator\u002Fblob\u002Fmain\u002Fskills\u002Freferences\u002Fcurrent-platform-state.md",{"path":87,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Felectrahub-service-catalog.md",8020,"https:\u002F\u002Fgithub.com\u002Famolsurjuse\u002Fagentic-workflow-orchestrator\u002Fblob\u002Fmain\u002Fskills\u002Freferences\u002Felectrahub-service-catalog.md",{"path":91,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Flogging-standard.md",3453,"https:\u002F\u002Fgithub.com\u002Famolsurjuse\u002Fagentic-workflow-orchestrator\u002Fblob\u002Fmain\u002Fskills\u002Freferences\u002Flogging-standard.md",{"path":95,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Fobservability-playbook.md",2844,"https:\u002F\u002Fgithub.com\u002Famolsurjuse\u002Fagentic-workflow-orchestrator\u002Fblob\u002Fmain\u002Fskills\u002Freferences\u002Fobservability-playbook.md",{"path":99,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Fregression-playbook.md",2916,"https:\u002F\u002Fgithub.com\u002Famolsurjuse\u002Fagentic-workflow-orchestrator\u002Fblob\u002Fmain\u002Fskills\u002Freferences\u002Fregression-playbook.md",{"path":103,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Fworkflow-menu.md",649,"https:\u002F\u002Fgithub.com\u002Famolsurjuse\u002Fagentic-workflow-orchestrator\u002Fblob\u002Fmain\u002Fskills\u002Freferences\u002Fworkflow-menu.md",{"path":107,"resourceType":108,"resourceTypeDesc":109,"sizeBytes":110,"sourceHtmlUrl":111},"scripts\u002Fsummarize-splunk-export.ps1","SCRIPT","脚本",4427,"https:\u002F\u002Fgithub.com\u002Famolsurjuse\u002Fagentic-workflow-orchestrator\u002Fblob\u002Fmain\u002Fskills\u002Fscripts\u002Fsummarize-splunk-export.ps1",[113,136,149,158,170,181],{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":129,"publishedAt":31},"01M6EM1ZTQZVAP90DZTVBHCCFB","acm-fixture","Fixture writing skill for ACM acmart sigconf paper output.","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fwriting\u002Facm-fixture\u002FSKILL.md",[119,124],{"categoryNo":120,"categoryName":121,"taxonomyType":122,"taxonomyTypeDesc":123},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":125,"categoryName":126,"taxonomyType":127,"taxonomyTypeDesc":128},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[130,131,132,133,134,135],"acm fixture","fixture","writing","LaTeX","writer","paper",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":31},"01M6EM1XNFETAZFGPHQPAXKBYN","prediction-fixture","Fixture skill for the prediction task type; references shap-fixture.","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Ftask-type\u002Fprediction-fixture\u002FSKILL.md",[],[131,143,144,145,146,147,148,29],"prediction fixture","task","type","references","fixture skill","shap",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":31},"01M6EM1V4MQXYGQ7K2ZDJRAPSM","causal-fixture","Fixture skill for the causal_inference task type.","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Ftask-type\u002Fcausal-fixture\u002FSKILL.md",[],[131,156,145,144,157,147],"causal fixture","inference",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":31},"01M6EM1SCWFZZ2ACSAP65GNWK9","shap-fixture","Fixture methodology for SHAP feature importance analysis.","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fmethodology\u002Fshap-fixture\u002FSKILL.md",[],[165,131,148,166,22,167,168,169],"shap fixture","feature importance","analysis","explainer","feature",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":31},"01M6EM1PZC1MK1G0D1YFVYAQ9W","cluster-recon-fixture","Fixture methodology for reconstructing cluster IDs from fingerprint variables.","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fmethodology\u002Fcluster-recon-fixture\u002FSKILL.md",[],[177,178,179,131,180,22],"recon","cluster recon fixture","cluster","ids",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":31},"01M6EM1MZVKMSWEXZ7TJ45DS04","hsls09-fixture","Fixture skill for HSLS:09 with a bundled YAML resource and one cross-reference.","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fdataset\u002Fhsls09-fixture\u002FSKILL.md",[],[131,188,189,190,191,147,192,177,179,193],"hsls09 fixture","yaml","public","reference","dataset","registry"]