[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-analyze-data-quality":3,"mdc-frermy-key":33,"related-org-openai-analyze-data-quality":554,"related-repo-openai-analyze-data-quality":761},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"analyze-data-quality","assess data quality for analysis","Assess whether structured data, query results, dashboards, or analytical evidence are trustworthy enough to use. Use when the task is to check data quality, reconcile conflicting sources or metric definitions, or decide whether evidence is safe to cite.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19],{"name":13,"slug":14,"type":15},"Data Quality","data-quality","tag",{"name":17,"slug":18,"type":15},"Data Engineering","data-engineering",{"name":20,"slug":21,"type":15},"Audit","audit",427,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Frole-specific-plugins","2026-07-01T07:55:01.146961",null,65,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"Role-specific Codex plugin templates","https:\u002F\u002Fgithub.com\u002Fopenai\u002Frole-specific-plugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fdata-analytics\u002Fskills\u002Fanalyze-data-quality","---\nname: analyze-data-quality\ndescription: \"Assess whether structured data, query results, dashboards, or analytical evidence are trustworthy enough to use. Use when the task is to check data quality, reconcile conflicting sources or metric definitions, or decide whether evidence is safe to cite.\"\n---\n\n## Related Skills\n\nUse $design-kpis when the work is to define or redesign a KPI framework, metric definition, guardrail, or target rather than checking whether existing data is trustworthy.\n\nUse $validate-data when the work is to QA an analysis, chart, report, or recommendation rather than investigate the underlying data.\n\n# Analyze Data Quality\n\nAssess whether a dataset is trustworthy enough for analysis, modeling,\ndashboards, experiments, or downstream pipelines. Start with the intended use and grain, run the highest-value checks for the data shape, and report concrete evidence, analytical risk, likely causes, and the smallest useful remediation or automated test.\n\n## Workflow\n\n1. Clarify the quality question and operating context.\n\n   Establish what the dataset represents, the intended unit of analysis, the downstream use, whether the user cares about raw ingestion quality,\n   transformed-model quality, or both, and the comparison baseline such as prior weeks, prior schema, or a trusted reference table. Identify expected grain,\n   primary keys or candidate keys, important date columns, timezone assumptions,\n   domain rules, allowed values, and business thresholds. If context is missing,\n   infer cautiously and label assumptions.\n\n2. Choose an inspectable analysis path.\n\n   When checks require SQL or Python, default to a companion notebook so the user can inspect the exact code behind the findings. Use $jupyter-notebooks when a dedicated notebook scaffold or refactor workflow would help. For queryable tables, use `~~structured_data` to confirm schema, grain, sample rows, and query rules through the relevant source connector before heavier checks. Use `~~operations_logs` for freshness and lineage when those checks matter.\n\n3. Build a compact profile.\n\n   Start with row count, column count, column names and types, candidate keys,\n   duplicate rates on likely identifiers, min\u002Fmax timestamps for relevant date columns, null rates, distinct counts for likely categorical columns, and basic numeric summaries for measure columns. Confirm grain before interpreting anomalies; many apparent quality problems are mixed-grain data,\n   partial backfills, late-arriving data, or duplicated joins.\n\n4. Run core quality checks.\n\n   Select checks that match the dataset and task. Default to the most relevant checks across completeness, uniqueness, validity, consistency, integrity,\n   timeliness, volume, and shape. Compare rates, not just counts, and segment by time, source, country, platform, model version, or other key dimensions when that helps distinguish real issues from expected variation.\n\n5. Run shape-specific checks.\n\n   Adapt the checks to the data shape:\n\n   - Event data: duplicate event IDs, future event timestamps, session or user\n     coverage gaps, and abrupt event-mix changes after releases.\n   - Dimension tables: non-unique business keys, orphan surrogate keys, status\n     changes without corresponding timestamps, and unexpected churn in reference\n     values.\n   - Fact tables: mixed grain, impossible measures such as negative revenue or\n     quantity, join blowups to dimensions, and late-arriving or partially loaded\n     partitions.\n   - ML feature or scoring tables: leakage from post-outcome fields, feature\n     sparsity spikes, range shifts after model or feature-store changes, and\n     class-label drift.\n   - Experiment data: duplicate assignments, variant imbalance beyond\n     expectation, exposure without assignment, and events before assignment\n     timestamp.\n\n6. Run temporal and distribution checks when history exists.\n\n   Prioritize temporal diagnostics when the user mentions \"after X date\",\n   \"suddenly\", \"recently\", or \"only started appearing\". Check first-seen dates,\n   last-seen dates, daily or weekly null-rate trends, duplicate-rate trends, row count trends, category-share shifts, distribution drift, and change points around launches, migrations, incidents, model changes, or backfills.\n\n7. Investigate analytical risks and likely causes.\n\n   Tie each issue to the downstream risk: broken trusted analysis, biased decisions, broken joins, stale dashboards, incorrect experiments, leakage,\n   unreliable model features, or misleading segments. When possible, identify whether the issue is isolated to a source, segment, partition, time window,\n   release, migration, backfill, or upstream pipeline change.\n\n8. Recommend fixes or automated tests.\n\n   Recommend the smallest set of follow-up fixes, monitoring, or automated tests that would materially reduce risk. Suggest automation only when the rule is stable and worth maintaining. Include or save the notebook\u002Fquery path when code produced the findings.\n\n## Standards\n\n### Core Checks\n\n- Completeness: null rate by column; null rate by partition, segment, and time bucket; unexpected empty strings or sentinel values; required-column population rate.\n- Uniqueness: exact duplicate rows, duplicate primary keys, duplicate composite keys, and proportion unique for semi-unique fields such as emails or device IDs.\n- Validity: type conformance after casting; format checks for IDs, emails, URLs,\n  enums, country codes, and timestamps; range checks for measures, percentages,\n  counts, and dates; allowed-values checks for controlled vocabularies.\n- Consistency: cross-field rule checks, units or currency consistency, status and timestamp alignment, and agreement between duplicated fields from different sources.\n- Integrity: parent-child key coverage, orphan records, unexpected many-to-many joins, and broken slowly changing dimension joins.\n- Timeliness: freshness lag from source event time to load time, freshness lag from load time to report time, missing recent partitions, and unexplained historical rewrites or backfills.\n- Volume and shape: row-count drift, distinct-count drift, distribution drift,\n  share-of-total drift for major categories, and new or disappeared categories.\n\n### Specific Check Guidance\n\n- Duplicates and keys: check exact duplicates, primary key duplicates, composite key duplicates at the intended grain, and near-duplicates caused by whitespace,\n  casing, formatting, or late updates. Report count, share of affected rows,\n  duplicated keys, and whether duplication is isolated to a time range, source,\n  or segment.\n- Missingness: distinguish acceptable sparsity from broken completeness. Check null rates over time, newly null columns after schema or pipeline changes, and sentinel values such as `''`, `'unknown'`, `'n\u002Fa'`, `0`, or `-1`.\n- Domain validity: check malformed identifiers, country codes, timestamps,\n  impossible values, values outside allowed sets, and cross-field contradictions such as `is_cancelled = false` with a non-null `cancelled_at`.\n- Join coverage: when multiple datasets are involved, check foreign keys that do not match a parent table, unexpected one-to-many expansion, coverage loss when joining to dimensions or experiments, and row counts before and after joins.\n- Freshness and schema drift: check row-count changes against recent history,\n  lag on important date columns, added\u002Fremoved\u002Fretyped columns, and shifts in sparsity or cardinality that suggest upstream changes.\n- Outliers and distribution shifts: use robust methods such as quantiles, MAD,\n  or IQR before defaulting to z-scores. Check sudden changes in mean, median,\n  variance, zero rate, category share, and long-tail behavior.\n- Leakage, backfill, and time travel: check features populated before they should exist, future-dated records, late-arriving data causing unstable recent partitions, and backfills that change historical counts without annotation.\n\n### Severity\n\n- Critical: breaks trusted analysis, core joins, production dashboards, or key decisions, such as duplicated grain, missing primary keys, or stale production data.\n- High: materially biases downstream decisions, such as large null spikes,\n  category drift in a core dimension, invalid business-rule values, leakage, or severe join coverage loss.\n- Medium: localized or explainable issues that still need documentation,\n  monitoring, or owner follow-up.\n- Low: cosmetic inconsistencies, expected sparsity, or known edge cases that do not materially affect current use.\n\nDo not dump raw profiling output without interpretation. Tie each finding to an analytical risk and likely impact.\n\n### Automated Test Guidance\n\n- Good candidates for automation: primary key uniqueness, not-null checks on required columns, accepted values for stable enums, referential integrity,\n  freshness thresholds, and seasonality-aware row-count or volume bounds.\n- Use caution with hard-coded distribution thresholds on volatile product metrics, strict uniqueness in messy entity-resolution use cases, and recent partitions when late-arriving data is normal.\n- Suggest automated tests only when the expected rule is stable, important, and maintainable.\n\n### Output Standards\n\nFor stakeholder-facing data-quality work, pass the completed findings to $build-report by default so the runtime produces an MCP app or HTML report. Do not stop at profiling output, a notebook, or chat-only findings unless the user explicitly requested a quick inline answer or another primary artifact. The structure below defines the report content.\n\nStructure the response with:\n\n1. dataset and grain summary\n2. checks performed\n3. findings\n4. temporal or trend anomalies\n5. likely causes and impacted use cases\n6. recommended fixes or automated tests\n7. assumptions and open questions\n\nFor each finding, include:\n\n- what failed\n- evidence: counts, rates, segments, and dates\n- why it matters\n- severity and confidence level\n- likely cause when known\n- suggested remediation or automated test\n\nWhen code was used, include or save a notebook containing the key SQL and Python checks and make the notebook path easy to find.\n\n### Defaults\n\n- Prefer small, high-signal tables over exhaustive dumps.\n- Compare rates, not just counts.\n- Break checks out by time and key segments whenever possible.\n- Normalize strings before judging duplicates or distinct-count spikes.\n- Treat recent partitions carefully when data arrives late.\n- Call out when an anomaly could be caused by a legitimate product launch,\n  experiment, migration, incident, model change, or backfill.\n- Preserve inspectable evidence: SQL, query links, notebook paths, source paths,\n  sample rows, chart outputs, and calculation notes.\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,47,53,58,64,69,75,207,213,220,258,264,355,361,384,389,395,413,419,424,429,467,472,505,510,516],{"type":39,"tag":40,"props":41,"children":43},"element","h2",{"id":42},"related-skills",[44],{"type":45,"value":46},"text","Related Skills",{"type":39,"tag":48,"props":49,"children":50},"p",{},[51],{"type":45,"value":52},"Use $design-kpis when the work is to define or redesign a KPI framework, metric definition, guardrail, or target rather than checking whether existing data is trustworthy.",{"type":39,"tag":48,"props":54,"children":55},{},[56],{"type":45,"value":57},"Use $validate-data when the work is to QA an analysis, chart, report, or recommendation rather than investigate the underlying data.",{"type":39,"tag":59,"props":60,"children":61},"h1",{"id":4},[62],{"type":45,"value":63},"Analyze Data Quality",{"type":39,"tag":48,"props":65,"children":66},{},[67],{"type":45,"value":68},"Assess whether a dataset is trustworthy enough for analysis, modeling,\ndashboards, experiments, or downstream pipelines. Start with the intended use and grain, run the highest-value checks for the data shape, and report concrete evidence, analytical risk, likely causes, and the smallest useful remediation or automated test.",{"type":39,"tag":40,"props":70,"children":72},{"id":71},"workflow",[73],{"type":45,"value":74},"Workflow",{"type":39,"tag":76,"props":77,"children":78},"ol",{},[79,91,118,128,138,177,187,197],{"type":39,"tag":80,"props":81,"children":82},"li",{},[83,85,89],{"type":45,"value":84},"Clarify the quality question and operating context.",{"type":39,"tag":86,"props":87,"children":88},"br",{},[],{"type":45,"value":90},"Establish what the dataset represents, the intended unit of analysis, the downstream use, whether the user cares about raw ingestion quality,\ntransformed-model quality, or both, and the comparison baseline such as prior weeks, prior schema, or a trusted reference table. Identify expected grain,\nprimary keys or candidate keys, important date columns, timezone assumptions,\ndomain rules, allowed values, and business thresholds. If context is missing,\ninfer cautiously and label assumptions.",{"type":39,"tag":80,"props":92,"children":93},{},[94,96,99,101,108,110,116],{"type":45,"value":95},"Choose an inspectable analysis path.",{"type":39,"tag":86,"props":97,"children":98},{},[],{"type":45,"value":100},"When checks require SQL or Python, default to a companion notebook so the user can inspect the exact code behind the findings. Use $jupyter-notebooks when a dedicated notebook scaffold or refactor workflow would help. For queryable tables, use ",{"type":39,"tag":102,"props":103,"children":105},"code",{"className":104},[],[106],{"type":45,"value":107},"~~structured_data",{"type":45,"value":109}," to confirm schema, grain, sample rows, and query rules through the relevant source connector before heavier checks. Use ",{"type":39,"tag":102,"props":111,"children":113},{"className":112},[],[114],{"type":45,"value":115},"~~operations_logs",{"type":45,"value":117}," for freshness and lineage when those checks matter.",{"type":39,"tag":80,"props":119,"children":120},{},[121,123,126],{"type":45,"value":122},"Build a compact profile.",{"type":39,"tag":86,"props":124,"children":125},{},[],{"type":45,"value":127},"Start with row count, column count, column names and types, candidate keys,\nduplicate rates on likely identifiers, min\u002Fmax timestamps for relevant date columns, null rates, distinct counts for likely categorical columns, and basic numeric summaries for measure columns. Confirm grain before interpreting anomalies; many apparent quality problems are mixed-grain data,\npartial backfills, late-arriving data, or duplicated joins.",{"type":39,"tag":80,"props":129,"children":130},{},[131,133,136],{"type":45,"value":132},"Run core quality checks.",{"type":39,"tag":86,"props":134,"children":135},{},[],{"type":45,"value":137},"Select checks that match the dataset and task. Default to the most relevant checks across completeness, uniqueness, validity, consistency, integrity,\ntimeliness, volume, and shape. Compare rates, not just counts, and segment by time, source, country, platform, model version, or other key dimensions when that helps distinguish real issues from expected variation.",{"type":39,"tag":80,"props":139,"children":140},{},[141,143,146,148],{"type":45,"value":142},"Run shape-specific checks.",{"type":39,"tag":86,"props":144,"children":145},{},[],{"type":45,"value":147},"Adapt the checks to the data shape:",{"type":39,"tag":149,"props":150,"children":151},"ul",{},[152,157,162,167,172],{"type":39,"tag":80,"props":153,"children":154},{},[155],{"type":45,"value":156},"Event data: duplicate event IDs, future event timestamps, session or user\ncoverage gaps, and abrupt event-mix changes after releases.",{"type":39,"tag":80,"props":158,"children":159},{},[160],{"type":45,"value":161},"Dimension tables: non-unique business keys, orphan surrogate keys, status\nchanges without corresponding timestamps, and unexpected churn in reference\nvalues.",{"type":39,"tag":80,"props":163,"children":164},{},[165],{"type":45,"value":166},"Fact tables: mixed grain, impossible measures such as negative revenue or\nquantity, join blowups to dimensions, and late-arriving or partially loaded\npartitions.",{"type":39,"tag":80,"props":168,"children":169},{},[170],{"type":45,"value":171},"ML feature or scoring tables: leakage from post-outcome fields, feature\nsparsity spikes, range shifts after model or feature-store changes, and\nclass-label drift.",{"type":39,"tag":80,"props":173,"children":174},{},[175],{"type":45,"value":176},"Experiment data: duplicate assignments, variant imbalance beyond\nexpectation, exposure without assignment, and events before assignment\ntimestamp.",{"type":39,"tag":80,"props":178,"children":179},{},[180,182,185],{"type":45,"value":181},"Run temporal and distribution checks when history exists.",{"type":39,"tag":86,"props":183,"children":184},{},[],{"type":45,"value":186},"Prioritize temporal diagnostics when the user mentions \"after X date\",\n\"suddenly\", \"recently\", or \"only started appearing\". Check first-seen dates,\nlast-seen dates, daily or weekly null-rate trends, duplicate-rate trends, row count trends, category-share shifts, distribution drift, and change points around launches, migrations, incidents, model changes, or backfills.",{"type":39,"tag":80,"props":188,"children":189},{},[190,192,195],{"type":45,"value":191},"Investigate analytical risks and likely causes.",{"type":39,"tag":86,"props":193,"children":194},{},[],{"type":45,"value":196},"Tie each issue to the downstream risk: broken trusted analysis, biased decisions, broken joins, stale dashboards, incorrect experiments, leakage,\nunreliable model features, or misleading segments. When possible, identify whether the issue is isolated to a source, segment, partition, time window,\nrelease, migration, backfill, or upstream pipeline change.",{"type":39,"tag":80,"props":198,"children":199},{},[200,202,205],{"type":45,"value":201},"Recommend fixes or automated tests.",{"type":39,"tag":86,"props":203,"children":204},{},[],{"type":45,"value":206},"Recommend the smallest set of follow-up fixes, monitoring, or automated tests that would materially reduce risk. Suggest automation only when the rule is stable and worth maintaining. Include or save the notebook\u002Fquery path when code produced the findings.",{"type":39,"tag":40,"props":208,"children":210},{"id":209},"standards",[211],{"type":45,"value":212},"Standards",{"type":39,"tag":214,"props":215,"children":217},"h3",{"id":216},"core-checks",[218],{"type":45,"value":219},"Core Checks",{"type":39,"tag":149,"props":221,"children":222},{},[223,228,233,238,243,248,253],{"type":39,"tag":80,"props":224,"children":225},{},[226],{"type":45,"value":227},"Completeness: null rate by column; null rate by partition, segment, and time bucket; unexpected empty strings or sentinel values; required-column population rate.",{"type":39,"tag":80,"props":229,"children":230},{},[231],{"type":45,"value":232},"Uniqueness: exact duplicate rows, duplicate primary keys, duplicate composite keys, and proportion unique for semi-unique fields such as emails or device IDs.",{"type":39,"tag":80,"props":234,"children":235},{},[236],{"type":45,"value":237},"Validity: type conformance after casting; format checks for IDs, emails, URLs,\nenums, country codes, and timestamps; range checks for measures, percentages,\ncounts, and dates; allowed-values checks for controlled vocabularies.",{"type":39,"tag":80,"props":239,"children":240},{},[241],{"type":45,"value":242},"Consistency: cross-field rule checks, units or currency consistency, status and timestamp alignment, and agreement between duplicated fields from different sources.",{"type":39,"tag":80,"props":244,"children":245},{},[246],{"type":45,"value":247},"Integrity: parent-child key coverage, orphan records, unexpected many-to-many joins, and broken slowly changing dimension joins.",{"type":39,"tag":80,"props":249,"children":250},{},[251],{"type":45,"value":252},"Timeliness: freshness lag from source event time to load time, freshness lag from load time to report time, missing recent partitions, and unexplained historical rewrites or backfills.",{"type":39,"tag":80,"props":254,"children":255},{},[256],{"type":45,"value":257},"Volume and shape: row-count drift, distinct-count drift, distribution drift,\nshare-of-total drift for major categories, and new or disappeared categories.",{"type":39,"tag":214,"props":259,"children":261},{"id":260},"specific-check-guidance",[262],{"type":45,"value":263},"Specific Check Guidance",{"type":39,"tag":149,"props":265,"children":266},{},[267,272,315,335,340,345,350],{"type":39,"tag":80,"props":268,"children":269},{},[270],{"type":45,"value":271},"Duplicates and keys: check exact duplicates, primary key duplicates, composite key duplicates at the intended grain, and near-duplicates caused by whitespace,\ncasing, formatting, or late updates. Report count, share of affected rows,\nduplicated keys, and whether duplication is isolated to a time range, source,\nor segment.",{"type":39,"tag":80,"props":273,"children":274},{},[275,277,283,285,291,292,298,299,305,307,313],{"type":45,"value":276},"Missingness: distinguish acceptable sparsity from broken completeness. Check null rates over time, newly null columns after schema or pipeline changes, and sentinel values such as ",{"type":39,"tag":102,"props":278,"children":280},{"className":279},[],[281],{"type":45,"value":282},"''",{"type":45,"value":284},", ",{"type":39,"tag":102,"props":286,"children":288},{"className":287},[],[289],{"type":45,"value":290},"'unknown'",{"type":45,"value":284},{"type":39,"tag":102,"props":293,"children":295},{"className":294},[],[296],{"type":45,"value":297},"'n\u002Fa'",{"type":45,"value":284},{"type":39,"tag":102,"props":300,"children":302},{"className":301},[],[303],{"type":45,"value":304},"0",{"type":45,"value":306},", or ",{"type":39,"tag":102,"props":308,"children":310},{"className":309},[],[311],{"type":45,"value":312},"-1",{"type":45,"value":314},".",{"type":39,"tag":80,"props":316,"children":317},{},[318,320,326,328,334],{"type":45,"value":319},"Domain validity: check malformed identifiers, country codes, timestamps,\nimpossible values, values outside allowed sets, and cross-field contradictions such as ",{"type":39,"tag":102,"props":321,"children":323},{"className":322},[],[324],{"type":45,"value":325},"is_cancelled = false",{"type":45,"value":327}," with a non-null ",{"type":39,"tag":102,"props":329,"children":331},{"className":330},[],[332],{"type":45,"value":333},"cancelled_at",{"type":45,"value":314},{"type":39,"tag":80,"props":336,"children":337},{},[338],{"type":45,"value":339},"Join coverage: when multiple datasets are involved, check foreign keys that do not match a parent table, unexpected one-to-many expansion, coverage loss when joining to dimensions or experiments, and row counts before and after joins.",{"type":39,"tag":80,"props":341,"children":342},{},[343],{"type":45,"value":344},"Freshness and schema drift: check row-count changes against recent history,\nlag on important date columns, added\u002Fremoved\u002Fretyped columns, and shifts in sparsity or cardinality that suggest upstream changes.",{"type":39,"tag":80,"props":346,"children":347},{},[348],{"type":45,"value":349},"Outliers and distribution shifts: use robust methods such as quantiles, MAD,\nor IQR before defaulting to z-scores. Check sudden changes in mean, median,\nvariance, zero rate, category share, and long-tail behavior.",{"type":39,"tag":80,"props":351,"children":352},{},[353],{"type":45,"value":354},"Leakage, backfill, and time travel: check features populated before they should exist, future-dated records, late-arriving data causing unstable recent partitions, and backfills that change historical counts without annotation.",{"type":39,"tag":214,"props":356,"children":358},{"id":357},"severity",[359],{"type":45,"value":360},"Severity",{"type":39,"tag":149,"props":362,"children":363},{},[364,369,374,379],{"type":39,"tag":80,"props":365,"children":366},{},[367],{"type":45,"value":368},"Critical: breaks trusted analysis, core joins, production dashboards, or key decisions, such as duplicated grain, missing primary keys, or stale production data.",{"type":39,"tag":80,"props":370,"children":371},{},[372],{"type":45,"value":373},"High: materially biases downstream decisions, such as large null spikes,\ncategory drift in a core dimension, invalid business-rule values, leakage, or severe join coverage loss.",{"type":39,"tag":80,"props":375,"children":376},{},[377],{"type":45,"value":378},"Medium: localized or explainable issues that still need documentation,\nmonitoring, or owner follow-up.",{"type":39,"tag":80,"props":380,"children":381},{},[382],{"type":45,"value":383},"Low: cosmetic inconsistencies, expected sparsity, or known edge cases that do not materially affect current use.",{"type":39,"tag":48,"props":385,"children":386},{},[387],{"type":45,"value":388},"Do not dump raw profiling output without interpretation. Tie each finding to an analytical risk and likely impact.",{"type":39,"tag":214,"props":390,"children":392},{"id":391},"automated-test-guidance",[393],{"type":45,"value":394},"Automated Test Guidance",{"type":39,"tag":149,"props":396,"children":397},{},[398,403,408],{"type":39,"tag":80,"props":399,"children":400},{},[401],{"type":45,"value":402},"Good candidates for automation: primary key uniqueness, not-null checks on required columns, accepted values for stable enums, referential integrity,\nfreshness thresholds, and seasonality-aware row-count or volume bounds.",{"type":39,"tag":80,"props":404,"children":405},{},[406],{"type":45,"value":407},"Use caution with hard-coded distribution thresholds on volatile product metrics, strict uniqueness in messy entity-resolution use cases, and recent partitions when late-arriving data is normal.",{"type":39,"tag":80,"props":409,"children":410},{},[411],{"type":45,"value":412},"Suggest automated tests only when the expected rule is stable, important, and maintainable.",{"type":39,"tag":214,"props":414,"children":416},{"id":415},"output-standards",[417],{"type":45,"value":418},"Output Standards",{"type":39,"tag":48,"props":420,"children":421},{},[422],{"type":45,"value":423},"For stakeholder-facing data-quality work, pass the completed findings to $build-report by default so the runtime produces an MCP app or HTML report. Do not stop at profiling output, a notebook, or chat-only findings unless the user explicitly requested a quick inline answer or another primary artifact. The structure below defines the report content.",{"type":39,"tag":48,"props":425,"children":426},{},[427],{"type":45,"value":428},"Structure the response with:",{"type":39,"tag":76,"props":430,"children":431},{},[432,437,442,447,452,457,462],{"type":39,"tag":80,"props":433,"children":434},{},[435],{"type":45,"value":436},"dataset and grain summary",{"type":39,"tag":80,"props":438,"children":439},{},[440],{"type":45,"value":441},"checks performed",{"type":39,"tag":80,"props":443,"children":444},{},[445],{"type":45,"value":446},"findings",{"type":39,"tag":80,"props":448,"children":449},{},[450],{"type":45,"value":451},"temporal or trend anomalies",{"type":39,"tag":80,"props":453,"children":454},{},[455],{"type":45,"value":456},"likely causes and impacted use cases",{"type":39,"tag":80,"props":458,"children":459},{},[460],{"type":45,"value":461},"recommended fixes or automated tests",{"type":39,"tag":80,"props":463,"children":464},{},[465],{"type":45,"value":466},"assumptions and open questions",{"type":39,"tag":48,"props":468,"children":469},{},[470],{"type":45,"value":471},"For each finding, include:",{"type":39,"tag":149,"props":473,"children":474},{},[475,480,485,490,495,500],{"type":39,"tag":80,"props":476,"children":477},{},[478],{"type":45,"value":479},"what failed",{"type":39,"tag":80,"props":481,"children":482},{},[483],{"type":45,"value":484},"evidence: counts, rates, segments, and dates",{"type":39,"tag":80,"props":486,"children":487},{},[488],{"type":45,"value":489},"why it matters",{"type":39,"tag":80,"props":491,"children":492},{},[493],{"type":45,"value":494},"severity and confidence level",{"type":39,"tag":80,"props":496,"children":497},{},[498],{"type":45,"value":499},"likely cause when known",{"type":39,"tag":80,"props":501,"children":502},{},[503],{"type":45,"value":504},"suggested remediation or automated test",{"type":39,"tag":48,"props":506,"children":507},{},[508],{"type":45,"value":509},"When code was used, include or save a notebook containing the key SQL and Python checks and make the notebook path easy to find.",{"type":39,"tag":214,"props":511,"children":513},{"id":512},"defaults",[514],{"type":45,"value":515},"Defaults",{"type":39,"tag":149,"props":517,"children":518},{},[519,524,529,534,539,544,549],{"type":39,"tag":80,"props":520,"children":521},{},[522],{"type":45,"value":523},"Prefer small, high-signal tables over exhaustive dumps.",{"type":39,"tag":80,"props":525,"children":526},{},[527],{"type":45,"value":528},"Compare rates, not just counts.",{"type":39,"tag":80,"props":530,"children":531},{},[532],{"type":45,"value":533},"Break checks out by time and key segments whenever possible.",{"type":39,"tag":80,"props":535,"children":536},{},[537],{"type":45,"value":538},"Normalize strings before judging duplicates or distinct-count spikes.",{"type":39,"tag":80,"props":540,"children":541},{},[542],{"type":45,"value":543},"Treat recent partitions carefully when data arrives late.",{"type":39,"tag":80,"props":545,"children":546},{},[547],{"type":45,"value":548},"Call out when an anomaly could be caused by a legitimate product launch,\nexperiment, migration, incident, model change, or backfill.",{"type":39,"tag":80,"props":550,"children":551},{},[552],{"type":45,"value":553},"Preserve inspectable evidence: SQL, query links, notebook paths, source paths,\nsample rows, chart outputs, and calculation notes.",{"items":555,"total":760},[556,577,600,617,633,652,671,687,703,717,729,744],{"slug":557,"name":557,"fn":558,"description":559,"org":560,"tags":561,"stars":574,"repoUrl":575,"updatedAt":576},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[562,565,568,571],{"name":563,"slug":564,"type":15},"Documents","documents",{"name":566,"slug":567,"type":15},"Healthcare","healthcare",{"name":569,"slug":570,"type":15},"Insurance","insurance",{"name":572,"slug":573,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":578,"name":578,"fn":579,"description":580,"org":581,"tags":582,"stars":597,"repoUrl":598,"updatedAt":599},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[583,586,588,591,594],{"name":584,"slug":585,"type":15},".NET","dotnet",{"name":587,"slug":578,"type":15},"ASP.NET Core",{"name":589,"slug":590,"type":15},"Blazor","blazor",{"name":592,"slug":593,"type":15},"C#","csharp",{"name":595,"slug":596,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":601,"name":601,"fn":602,"description":603,"org":604,"tags":605,"stars":597,"repoUrl":598,"updatedAt":616},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[606,609,612,615],{"name":607,"slug":608,"type":15},"Apps SDK","apps-sdk",{"name":610,"slug":611,"type":15},"ChatGPT","chatgpt",{"name":613,"slug":614,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":618,"name":618,"fn":619,"description":620,"org":621,"tags":622,"stars":597,"repoUrl":598,"updatedAt":632},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[623,626,629],{"name":624,"slug":625,"type":15},"API Development","api-development",{"name":627,"slug":628,"type":15},"CLI","cli",{"name":630,"slug":631,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":634,"name":634,"fn":635,"description":636,"org":637,"tags":638,"stars":597,"repoUrl":598,"updatedAt":651},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[639,642,645,648],{"name":640,"slug":641,"type":15},"Cloudflare","cloudflare",{"name":643,"slug":644,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":646,"slug":647,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":649,"slug":650,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":653,"name":653,"fn":654,"description":655,"org":656,"tags":657,"stars":597,"repoUrl":598,"updatedAt":670},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[658,661,664,667],{"name":659,"slug":660,"type":15},"Productivity","productivity",{"name":662,"slug":663,"type":15},"Project Management","project-management",{"name":665,"slug":666,"type":15},"Strategy","strategy",{"name":668,"slug":669,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":672,"name":672,"fn":673,"description":674,"org":675,"tags":676,"stars":597,"repoUrl":598,"updatedAt":686},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[677,680,682,685],{"name":678,"slug":679,"type":15},"Design","design",{"name":681,"slug":672,"type":15},"Figma",{"name":683,"slug":684,"type":15},"Frontend","frontend",{"name":613,"slug":614,"type":15},"2026-04-12T05:06:47.939943",{"slug":688,"name":688,"fn":689,"description":690,"org":691,"tags":692,"stars":597,"repoUrl":598,"updatedAt":702},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[693,694,697,698,699],{"name":678,"slug":679,"type":15},{"name":695,"slug":696,"type":15},"Design System","design-system",{"name":681,"slug":672,"type":15},{"name":683,"slug":684,"type":15},{"name":700,"slug":701,"type":15},"UI Components","ui-components","2026-05-10T05:59:52.971881",{"slug":704,"name":704,"fn":705,"description":706,"org":707,"tags":708,"stars":597,"repoUrl":598,"updatedAt":716},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[709,710,711,714,715],{"name":678,"slug":679,"type":15},{"name":695,"slug":696,"type":15},{"name":712,"slug":713,"type":15},"Documentation","documentation",{"name":681,"slug":672,"type":15},{"name":683,"slug":684,"type":15},"2026-05-16T06:07:47.821474",{"slug":718,"name":718,"fn":719,"description":720,"org":721,"tags":722,"stars":597,"repoUrl":598,"updatedAt":728},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[723,724,725,726,727],{"name":678,"slug":679,"type":15},{"name":681,"slug":672,"type":15},{"name":683,"slug":684,"type":15},{"name":700,"slug":701,"type":15},{"name":595,"slug":596,"type":15},"2026-05-16T06:07:40.583615",{"slug":730,"name":730,"fn":731,"description":732,"org":733,"tags":734,"stars":597,"repoUrl":598,"updatedAt":743},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[735,738,739,742],{"name":736,"slug":737,"type":15},"Animation","animation",{"name":630,"slug":631,"type":15},{"name":740,"slug":741,"type":15},"Creative","creative",{"name":678,"slug":679,"type":15},"2026-05-02T05:31:48.48485",{"slug":745,"name":745,"fn":746,"description":747,"org":748,"tags":749,"stars":597,"repoUrl":598,"updatedAt":759},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[750,751,752,755,758],{"name":740,"slug":741,"type":15},{"name":678,"slug":679,"type":15},{"name":753,"slug":754,"type":15},"Image Generation","image-generation",{"name":756,"slug":757,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675,{"items":762,"total":861},[763,782,788,799,815,829,846],{"slug":764,"name":764,"fn":765,"description":766,"org":767,"tags":768,"stars":22,"repoUrl":23,"updatedAt":781},"analyze-account-signals","analyze account signals for sales intelligence","Use when the user wants to know what changed with one account, monitor an owner portfolio or watchlist, or rank accounts needing attention from recent evidence. Produce an evidence-backed account brief or bounded watchlist summary with recommended actions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[769,772,775,778],{"name":770,"slug":771,"type":15},"Analytics","analytics",{"name":773,"slug":774,"type":15},"CRM","crm",{"name":776,"slug":777,"type":15},"Research","research",{"name":779,"slug":780,"type":15},"Sales","sales","2026-07-01T07:54:11.79288",{"slug":4,"name":4,"fn":5,"description":6,"org":783,"tags":784,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[785,786,787],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"slug":789,"name":789,"fn":790,"description":791,"org":792,"tags":793,"stars":22,"repoUrl":23,"updatedAt":798},"answers-ask-user-input","request missing context from users","Use when a small amount of missing context would materially improve the answer and tappable options plus a free-text answer can gather it efficiently.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[794,797],{"name":795,"slug":796,"type":15},"Communications","communications",{"name":659,"slug":660,"type":15},"2026-07-14T05:43:36.096323",{"slug":800,"name":800,"fn":801,"description":802,"org":803,"tags":804,"stars":22,"repoUrl":23,"updatedAt":814},"apollo","prospect and enrich leads with Apollo","Use only when a focused Sales workflow has selected a present and connected Apollo connector, or the user explicitly asks for Apollo prospecting, enrichment, Company Details, records, sequences, or outbound planning. Apply Apollo v2-specific behavior only after verifying app version 2.0.0 or later.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[805,807,810,813],{"name":806,"slug":800,"type":15},"Apollo",{"name":808,"slug":809,"type":15},"Lead Enrichment","lead-enrichment",{"name":811,"slug":812,"type":15},"Prospecting","prospecting",{"name":779,"slug":780,"type":15},"2026-07-14T05:43:34.800076",{"slug":21,"name":21,"fn":816,"description":817,"org":818,"tags":819,"stars":22,"repoUrl":23,"updatedAt":828},"audit product flows and user journeys","Audit or critique a product flow, journey, workflow, funnel, onboarding path, checkout path, settings path, screen, or multi-step product experience by capturing screenshots first, then reporting UX, design, and accessibility findings inline from that evidence. Use Figma only when the user explicitly asks for a board. Use when the user asks to audit, review, critique, inspect, assess, analyze, evaluate, or give feedback on a product experience.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[820,821,822,825],{"name":20,"slug":21,"type":15},{"name":678,"slug":679,"type":15},{"name":823,"slug":824,"type":15},"Product Management","product-management",{"name":826,"slug":827,"type":15},"UX Design","ux-design","2026-07-01T07:54:30.613428",{"slug":830,"name":830,"fn":831,"description":832,"org":833,"tags":834,"stars":22,"repoUrl":23,"updatedAt":845},"build-business-case","build customer-led business cases and ROI","Review commercial proposals and build customer-led business cases, ROI or value models, pricing or investment rationales, executive summaries, and customer-ready value stories tied to a customer, workflow, initiative, or decision.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[835,838,841,844],{"name":836,"slug":837,"type":15},"Content Creation","content-creation",{"name":839,"slug":840,"type":15},"Finance","finance",{"name":842,"slug":843,"type":15},"Financial Modeling","financial-modeling",{"name":779,"slug":780,"type":15},"2026-07-01T07:54:02.779003",{"slug":847,"name":847,"fn":848,"description":849,"org":850,"tags":851,"stars":22,"repoUrl":23,"updatedAt":860},"build-competitive-brief","build competitive briefs and battlecards","Use when the user wants a competitor or vendor comparison, market-landscape analysis, battlecard, objection package, positioning brief, or account-specific competitive view. Produce an evidence-backed comparison, guidance, and brief, using supplied materials, connected research, and public evidence when appropriate.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[852,855,858,859],{"name":853,"slug":854,"type":15},"Competitive Intelligence","competitive-intelligence",{"name":856,"slug":857,"type":15},"Marketing","marketing",{"name":776,"slug":777,"type":15},{"name":779,"slug":780,"type":15},"2026-07-01T07:54:13.073252",43]