[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EKV488QRASVGCBKF8YEWEF":3,"skill-same:01M6EKV488QRASVGCBKF8YEWEF":90},{"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":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":62,"commitSha":63,"skillDirectory":64,"forksCount":65,"repositoryHtmlUrl":66,"repositoryHomepageUrl":6,"ownerHtmlUrl":67,"ownerBlogUrl":68,"ownerDescription":69,"updatedAt":70,"install":71,"resources":84},"01M6EKV488QRASVGCBKF8YEWEF","hsls09-variable-registry",null,"Index to the bundled HSLS:09 variable registry YAML; explains schema, missing codes, and how to load it.","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\u002Fdataset\u002Fhsls09-variable-registry\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"hsls09 variable registry","registry","schema","it","codes","how to","missing","dataset","analyst","writer","outcomes","outcome","public","how","critic","yaml","index","2026-11-10 10:12:30",false,"---\nname: hsls09-variable-registry\nlayer: dataset\ndescription: Index to the bundled HSLS:09 variable registry YAML; explains schema, missing codes, and how to load it.\ntrigger_keywords:\n  - hsls\n  - hsls09\n  - registry\n  - variable\n  - variables\n  - outcome\n  - outcomes\n  - predictor\n  - predictors\napplicable_task_types: []\napplicable_datasets:\n  - hsls09_public\napplicable_stages:\n  - ProblemFormulator\n  - DataEngineer\n  - Analyst\n  - Critic\n  - Writer\npriority: 1\nreferences_skills: []\nresources:\n  - variable_registry.yaml\nversion: \"1.0\"\n---\n\n# HSLS:09 Variable Registry\n\nThe full HSLS:09 public-use variable registry is bundled alongside this\nSKILL.md as `variable_registry.yaml` (~1,800 lines, byte-identical copy\nof `data_registry\u002Fdatasets\u002Fhsls09_public.yaml`). This skill is a short\nindex that explains how to load it and what it contains; the YAML itself\nis the source of truth.\n\n## Loading the resource\n\n```python\nimport yaml\n\n# `skill` here is the Skill returned by SkillRegistry.get(...).\nregistry_path = next(\n    p for p in skill.resource_paths if p.name == \"variable_registry.yaml\"\n)\nregistry = yaml.safe_load(registry_path.read_text(encoding=\"utf-8\"))\n```\n\nIn agent code, the `RegistryLoader` class (`src\u002Fregistry.py`) wraps the\nsame YAML with helpers like `get_variable(name)`, `get_outcomes()`,\n`get_predictors(category)`, `validate_temporal_order(pred, out)`,\n`is_protected_attribute(name)`, and `is_excluded(name, category)`.\n\n## Top-level schema\n\nThe registry is a YAML mapping with these keys:\n\n| Key | Contents |\n|---|---|\n| `name`, `full_name`, `source`, `documentation_url`, `access` | Dataset metadata. |\n| `data_structure: multilevel` + `levels: {student: 23503, school: 944}` | Sample sizes; reminds you that SCH_ID is suppressed and clustering must be reconstructed. |\n| `multilevel_note` | Prose noting school IDs are suppressed and design-based variance estimation requires the restricted-use file. |\n| `waves` | Five waves: `base_year` (2009, X1), `first_follow_up` (2012, X2), `second_follow_up` (2013, X3), `update_panel` (2016, X4), `postsecondary_records` (2017, X5). Each wave has a `prefix`, `year`, `grade`, `label`. |\n| `temporal_order` | Ordered list `[base_year, first_follow_up, second_follow_up, update_panel, postsecondary_records]`. Drives every leakage check. |\n| `tier3_exclusion_rules` | Patterns that disqualify variables from being predictors (weights `^W[0-9]`, BRR\u002Freplicate, `_IM\u002F_FLG\u002FFLAG\u002F_I` suffixes, IDs like `STU_ID`, `SCH_ID`). |\n| `tier: 1` + `variables` | Curated outcomes and predictors with educational rationale. |\n| `tier2_config` | Pointer to auto-generated Tier 2 file with looser usage policy. |\n| `missingness` | Mechanism assumption + sentinel codes\u002Flabels + recommended methods + MNAR candidates. |\n| `common_pitfalls` | Named pitfalls (`temporal_leakage`, `same_wave_target_leakage`, `public_use_suppression`, `school_level_misinterpretation`, `protected_attribute_misuse`) each with severity. |\n| `canonical_research_questions` | Example prediction \u002F fairness \u002F policy questions to inspire research-spec generation. |\n\n## `variables` section\n\n```yaml\nvariables:\n  outcomes:        # list of outcome variables, e.g. X3TGPAMAT, X4EVRATNDCLG, dropout_derived\n    - name: ...\n      label: ...\n      type: continuous|binary|categorical\n      wave: ...\n      pct_missing: ...\n      range: [...] or categories: [...]\n      codebook_codes: {...}\n  predictors:      # mapping of category → list of variables\n    demographic: [...]\n    family: [...]\n    academic: [...]\n    math_attitudes: [...]\n    academic_followup: [...]\n    course_taking: [...]\n    school_level: [...]\n    teacher: [...]\n    behavioral: [...]\n    postsecondary: [...]\n    x5_records: [...]\n```\n\nEach predictor entry has at minimum `name`, `label`, `type`, `wave`,\n`pct_missing`, and either `range` (continuous) or `categories` +\n`codebook_codes` (categorical\u002Fbinary). Some entries also have\n`protected_attribute: true` (drives subgroup analysis), `note`,\n`temporal_warning` (later-wave warning), or `derived: true`.\n\n## NCES missing codes (treat all of these as missing)\n\nNumeric sentinels: `-1` (legitimate skip), `-4` (nonrespondent),\n`-5` (data suppressed), `-6` (component not applicable),\n`-7` (item legitimate skip \u002F NA), `-8` (unit non-response),\n`-9` (missing).\n\nText labels (the public-use CSV stores labels, not numeric codes — see\n`hsls09-csv-format-quirks`): `\"Missing\"`, `\"Unit non-response\"`,\n`\"Item legitimate skip\u002FNA\"`, `\"Data suppressed\"`,\n`\"Component not applicable\"`, `\"Don't know\"`.\n\nThe full sentinel list is in `registry[\"missingness\"][\"sentinel_codes_or_labels\"]`.\n\n## Related skills\n\n- `hsls09-csv-format-quirks` — public-use CSV stores text labels; do\n  not call `pd.to_numeric(errors='coerce')` on categorical columns.\n- `hsls09-temporal-ordering` — predictor wave must be strictly less\n  than outcome wave.\n- `hsls09-missing-codes` — operational use of the sentinel list.\n- `hsls09-tier3-exclusions` — automatically excluded variable patterns.\n- `hsls09-protected-attributes` (implicit in registry; see\n  `protected_attribute` flags on `X1SEX`, `X1RACE`, `X1SES`,\n  `X1SES_U`, `X1SESQ5`).\n- `hsls09-structural-mnar-outcomes` — postsecondary outcome retention\n  carve-out.\n- `hsls09-school-fingerprints` (+ methodology\n  `cluster-id-reconstruction-from-fingerprints`) — recover suppressed\n  SCH_ID via fingerprint variables.\n\n## Source provenance\n\nCanonical source: `data_registry\u002Fdatasets\u002Fhsls09_public.yaml`, bundled\nhere byte-identical as `variable_registry.yaml`. Phase 2c may delete\nthe original after agents are wired through this skill.\n","# HSLS:09 Variable Registry\n\nThe full HSLS:09 public-use variable registry is bundled alongside this\nSKILL.md as `variable_registry.yaml` (~1,800 lines, byte-identical copy\nof `data_registry\u002Fdatasets\u002Fhsls09_public.yaml`). This skill is a short\nindex that explains how to load it and what it contains; the YAML itself\nis the source of truth.\n\n## Loading the resource\n\n```python\nimport yaml\n\n# `skill` here is the Skill returned by SkillRegistry.get(...).\nregistry_path = next(\n    p for p in skill.resource_paths if p.name == \"variable_registry.yaml\"\n)\nregistry = yaml.safe_load(registry_path.read_text(encoding=\"utf-8\"))\n```\n\nIn agent code, the `RegistryLoader` class (`src\u002Fregistry.py`) wraps the\nsame YAML with helpers like `get_variable(name)`, `get_outcomes()`,\n`get_predictors(category)`, `validate_temporal_order(pred, out)`,\n`is_protected_attribute(name)`, and `is_excluded(name, category)`.\n\n## Top-level schema\n\nThe registry is a YAML mapping with these keys:\n\n| Key | Contents |\n|---|---|\n| `name`, `full_name`, `source`, `documentation_url`, `access` | Dataset metadata. |\n| `data_structure: multilevel` + `levels: {student: 23503, school: 944}` | Sample sizes; reminds you that SCH_ID is suppressed and clustering must be reconstructed. |\n| `multilevel_note` | Prose noting school IDs are suppressed and design-based variance estimation requires the restricted-use file. |\n| `waves` | Five waves: `base_year` (2009, X1), `first_follow_up` (2012, X2), `second_follow_up` (2013, X3), `update_panel` (2016, X4), `postsecondary_records` (2017, X5). Each wave has a `prefix`, `year`, `grade`, `label`. |\n| `temporal_order` | Ordered list `[base_year, first_follow_up, second_follow_up, update_panel, postsecondary_records]`. Drives every leakage check. |\n| `tier3_exclusion_rules` | Patterns that disqualify variables from being predictors (weights `^W[0-9]`, BRR\u002Freplicate, `_IM\u002F_FLG\u002FFLAG\u002F_I` suffixes, IDs like `STU_ID`, `SCH_ID`). |\n| `tier: 1` + `variables` | Curated outcomes and predictors with educational rationale. |\n| `tier2_config` | Pointer to auto-generated Tier 2 file with looser usage policy. |\n| `missingness` | Mechanism assumption + sentinel codes\u002Flabels + recommended methods + MNAR candidates. |\n| `common_pitfalls` | Named pitfalls (`temporal_leakage`, `same_wave_target_leakage`, `public_use_suppression`, `school_level_misinterpretation`, `protected_attribute_misuse`) each with severity. |\n| `canonical_research_questions` | Example prediction \u002F fairness \u002F policy questions to inspire research-spec generation. |\n\n## `variables` section\n\n```yaml\nvariables:\n  outcomes:        # list of outcome variables, e.g. X3TGPAMAT, X4EVRATNDCLG, dropout_derived\n    - name: ...\n      label: ...\n      type: continuous|binary|categorical\n      wave: ...\n      pct_missing: ...\n      range: [...] or categories: [...]\n      codebook_codes: {...}\n  predictors:      # mapping of category → list of variables\n    demographic: [...]\n    family: [...]\n    academic: [...]\n    math_attitudes: [...]\n    academic_followup: [...]\n    course_taking: [...]\n    school_level: [...]\n    teacher: [...]\n    behavioral: [...]\n    postsecondary: [...]\n    x5_records: [...]\n```\n\nEach predictor entry has at minimum `name`, `label`, `type`, `wave`,\n`pct_missing`, and either `range` (continuous) or `categories` +\n`codebook_codes` (categorical\u002Fbinary). Some entries also have\n`protected_attribute: true` (drives subgroup analysis), `note`,\n`temporal_warning` (later-wave warning), or `derived: true`.\n\n## NCES missing codes (treat all of these as missing)\n\nNumeric sentinels: `-1` (legitimate skip), `-4` (nonrespondent),\n`-5` (data suppressed), `-6` (component not applicable),\n`-7` (item legitimate skip \u002F NA), `-8` (unit non-response),\n`-9` (missing).\n\nText labels (the public-use CSV stores labels, not numeric codes — see\n`hsls09-csv-format-quirks`): `\"Missing\"`, `\"Unit non-response\"`,\n`\"Item legitimate skip\u002FNA\"`, `\"Data suppressed\"`,\n`\"Component not applicable\"`, `\"Don't know\"`.\n\nThe full sentinel list is in `registry[\"missingness\"][\"sentinel_codes_or_labels\"]`.\n\n## Related skills\n\n- `hsls09-csv-format-quirks` — public-use CSV stores text labels; do\n  not call `pd.to_numeric(errors='coerce')` on categorical columns.\n- `hsls09-temporal-ordering` — predictor wave must be strictly less\n  than outcome wave.\n- `hsls09-missing-codes` — operational use of the sentinel list.\n- `hsls09-tier3-exclusions` — automatically excluded variable patterns.\n- `hsls09-protected-attributes` (implicit in registry; see\n  `protected_attribute` flags on `X1SEX`, `X1RACE`, `X1SES`,\n  `X1SES_U`, `X1SESQ5`).\n- `hsls09-structural-mnar-outcomes` — postsecondary outcome retention\n  carve-out.\n- `hsls09-school-fingerprints` (+ methodology\n  `cluster-id-reconstruction-from-fingerprints`) — recover suppressed\n  SCH_ID via fingerprint variables.\n\n## Source provenance\n\nCanonical source: `data_registry\u002Fdatasets\u002Fhsls09_public.yaml`, bundled\nhere byte-identical as `variable_registry.yaml`. Phase 2c may delete\nthe original after agents are wired through this skill.\n",{"name":5,"layer":26,"version":41,"priority":42,"resources":43,"description":7,"trigger_keywords":45,"applicable_stages":52,"references_skills":58,"applicable_datasets":59,"applicable_task_types":61},"1.0",1,[44],"variable_registry.yaml",[46,47,20,48,49,30,29,50,51],"hsls","hsls09","variable","variables","predictor","predictors",[53,54,55,56,57],"ProblemFormulator","DataEngineer","Analyst","Critic","Writer",[],[60],"hsls09_public",[],"main","1aeaead66d2bf876109f3b101005d2eed54041d9","skills\u002Fdataset\u002Fhsls09-variable-registry",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":72,"prompt":82,"zipAvailable":83},[73,76,79],{"tool":74,"command":75},"npx","npx skills add cgpan\u002Fedm-ars-public --skill hsls09-variable-registry",{"tool":77,"command":78},"bunx","bunx skills add cgpan\u002Fedm-ars-public --skill hsls09-variable-registry",{"tool":80,"command":81},"pnpm","pnpm dlx skills add cgpan\u002Fedm-ars-public --skill hsls09-variable-registry","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Fskills\u002Fdataset\u002Fhsls09-variable-registry\u002FSKILL.md",true,[85],{"path":44,"resourceType":86,"resourceTypeDesc":87,"sizeBytes":88,"sourceHtmlUrl":89},"REFERENCE","参考文档",60508,"https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Fskills\u002Fdataset\u002Fhsls09-variable-registry\u002Fvariable_registry.yaml",[91,113,126,135,148,159],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":107,"publishedAt":36},"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",[97,102],{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[108,109,110,111,28,112],"acm fixture","fixture","writing","LaTeX","paper",{"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":119,"publishedAt":36},"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",[],[109,120,121,122,123,124,125,27],"prediction fixture","task","type","references","fixture skill","shap",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":36},"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",[],[109,133,122,121,134,124],"causal fixture","inference",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":36},"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",[],[142,109,125,143,144,145,146,147],"shap fixture","feature importance","methodology","analysis","explainer","feature",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":36},"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",[],[155,156,157,109,158,144],"recon","cluster recon fixture","cluster","ids",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":36},"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",[],[109,166,34,31,167,124,26,155,157,20],"hsls09 fixture","reference"]