Tabular Data Explorer
Overview
Use this skill to turn one tabular dataset into a grounded exploratory report with deterministic artifacts and an adaptive Codex-written narrative.
The report should feel like an analyst-built HTML notebook, not a rigid template dump. Keep the page structure stable, but let the narrative and which charts appear depend on the data.
Bias the interpretation toward explainable exploratory work for health and life-science teams. That means paying extra attention to:
- missingness blocks that may come from questionnaire gating or assay availability,
- multicollinearity and redundancy that can destabilize interpretable models,
- follow-up or censoring variables that may behave like leakage in prediction settings,
- target imbalance and target availability when the outcome is only observed for a subset.
Inputs
Resolve these inputs before execution.
input path (required)
- Meaning: dataset file to analyze.
- Supported formats:
csv, tsv, txt, xlsx, xls, parquet.
sheet name (optional)
- Meaning: Excel worksheet name or index.
- Use only for Excel files.
primary columns (optional)
- Meaning: columns the user especially cares about.
- Use them to prioritize charts and narrative coverage.
target columns (optional)
- Meaning: columns to treat as targets for target-aware exploration.
- If target columns are given, assume the remaining non-ignored columns are candidate features.
ignore columns (optional)
- Meaning: columns to exclude from profiling and target-aware ranking.
- Common examples: row IDs, free-text notes, leakage columns, or audit timestamps the user does not want analyzed.
report title (optional)
- Meaning: human-facing title for the final HTML report.
- Default: derived from the dataset filename.
Input Explanation (Must Explain Before Asking)
Before asking the user for any of the optional fields, explain them in plain language with one short concrete example.
input path
- Plain-language explanation: the file you want analyzed.
- Example:
/Users/me/data/patients.csv
target columns
- Plain-language explanation: the outcome or result you want the report to compare other variables against.
- Example: if you want to know which columns relate to death status,
mortstat is a target.
primary columns
- Plain-language explanation: columns you especially care about and want the report to spend more attention on.
- Example:
age, bmi, sleep_duration
ignore columns
- Plain-language explanation: columns you want the analysis to skip.
- Example:
patient_id, free_text_notes
sheet name
- Plain-language explanation: which worksheet to read inside an Excel file.
- Example:
Sheet1 or 0
- Rule: do not ask for this when the file is
csv, tsv, txt, or parquet.
report title
- Plain-language explanation: the display title shown at the top of the HTML report.
- Example:
NHANES mortality exploration
Suggested User-Facing Prompting Style
Use a short explanation like this before collecting values:
"I can analyze this dataset and generate an interactive HTML report. I need the file path and, optionally, a target column if you want target-aware analysis. If the file is Excel, I may also need the sheet name. If there are columns you especially care about, tell me those as primary columns; otherwise I can choose them automatically."
Mandatory Question Gate
Do not run workflow.py prepare until the following is complete.
- Explain the optional inputs in plain language before asking:
- what a
target column means,
- what
primary columns mean,
- what
ignore columns mean,
- what
sheet name means when relevant,
- what
report title means.
- Resolve what you can from the user request:
- input path
- sheet name
- primary columns
- target columns
- ignore columns
- report title
- Ask only the fields that are still relevant:
- do not ask for
sheet name on non-Excel files,
- do not ask for
primary columns if the user is happy with auto-selection,
- do not ask for
report title unless a custom title would help.
- Restate the planned run in one short block using plain-language labels:
- dataset file
- target column, if any
- priority columns, if any
- ignored columns, if any
- Excel sheet, if relevant
- report title
Ask for explicit confirmation before execution.
Only continue after the user confirms.
Workflow
Follow this order.
1. Prepare the deterministic analysis artifacts
Run:
python scripts/workflow.py prepare \
--input-path "<dataset_path>" \
--report-title "<report_title>"
Add optional flags only when needed:
--sheet-name "<sheet_name>" \
--primary-column "<primary_col_a>" \
--primary-column "<primary_col_b>" \
--target-column "<target_col_a>" \
--ignore-column "<ignore_col_a>"
prepare creates a run directory inside:
<dataset_parent>/.tabular-data-explorer/runs/<timestamp>/
It writes:
run_manifest.json
profile_overview.json
column_profiles.json
missingness.json
associations.json
target_analysis.json
chart_manifest.json
analysis_brief.md
analysis.md
2. Read the artifacts before writing any narrative
Read:
references/report_sections.md
references/chart_rules.md
references/narrative_grounding.md
<run_dir>/analysis_brief.md
<run_dir>/profile_overview.json
<run_dir>/column_profiles.json
<run_dir>/missingness.json
<run_dir>/associations.json
<run_dir>/target_analysis.json
<run_dir>/chart_manifest.json
3. Write or revise analysis.md
Use analysis.md as a grounded narrative layer on top of the deterministic artifacts.
Requirements:
- Base every claim on computed artifacts or rendered charts.
- Prefer project-specific observations over generic EDA filler.
- Mention exact column names and numeric evidence when possible.
- Explain why a pattern matters before suggesting a next step.
- Skip empty sections instead of padding the report.
- Do not force a rigid template when the data does not support it.
- If targets exist, distinguish target-aware signals from general descriptive findings.
- If a chart is visually striking but analytically weak, say so explicitly.
- In health-oriented datasets, call out multicollinearity, follow-up variables, subset-defined targets, and module-based missingness when they matter.
4. Finalize the interactive HTML report
Run:
python scripts/workflow.py finalize --run-dir "<run_dir>"
This step reads the artifacts plus analysis.md and writes:
5. Verify outputs
Confirm these exist:
<run_dir>/run_manifest.json
<run_dir>/profile_overview.json
<run_dir>/column_profiles.json
<run_dir>/missingness.json
<run_dir>/associations.json
<run_dir>/target_analysis.json
<run_dir>/chart_manifest.json
<run_dir>/analysis_brief.md
<run_dir>/analysis.md
<run_dir>/report.html
Chart Rules
- Favor stable embedded plots inside HTML over JS-heavy interactivity when layout reliability is at risk.
- Prefer bar charts and histograms over pie charts unless there is a clear analytical reason to do otherwise.
- Auto-exclude obvious index or identifier columns from relationship and target-aware analysis.
- When many strong feature-feature correlations exist, add a compact 2D correlation map to help multicollinearity review.
- Every chart must include:
- why this chart was selected,
- how to read it,
- what caveats apply.
- If a chart uses technical terminology, add one subtle plain-language note explaining the term.
- Do not overload the page with every possible plot. Show the most decision-relevant ones.
- Prefer top-N summaries over unreadable full-cardinality visuals.
- Avoid decorative charts with no analytical purpose.
Narrative Rules
- Treat the HTML shell as stable and the insights as adaptive.
- Let the data decide which findings deserve emphasis.
- Use
analysis_brief.md as scaffolding, not as the final voice.
- If the user asks for stronger business framing, sharpen the narrative without inventing unsupported claims.
Resources
scripts/workflow.py: entry point for prepare and finalize.
scripts/load_data.py: load mixed-format tabular files and infer lightweight schema hints.
scripts/profile_data.py: compute overview, per-column stats, missingness, associations, and target-aware rankings.
scripts/build_chart_manifest.py: choose explainable chart candidates from the profiling artifacts.
scripts/render_html_report.py: render the final interactive HTML report.
references/report_sections.md: guidance for report composition without forcing a rigid template.
references/chart_rules.md: visual and explanatory standards for chart selection.
references/narrative_grounding.md: rules for grounded, non-generic insight writing.
1---2name: tabular-data-explorer3description: Explore CSV, Excel, Parquet, TSV, and similar tabular datasets with type-aware profiling, descriptive statistics, missingness review, correlation and association analysis, optional target-aware feature exploration, and polished interactive HTML reporting. Use when users want to inspect an unfamiliar dataset, profile data quality, compare features against one or more target columns, or generate explainable charts plus grounded narrative from mixed-format tabular data. Especially useful for health, epidemiology, biostatistics, biology, and life-science workflows where users need interpretable views of missingness, multicollinearity, follow-up variables, and target-feature relationships before choosing explainable methods.4---56# Tabular Data Explorer78## Overview910Use this skill to turn one tabular dataset into a grounded exploratory report with deterministic artifacts and an adaptive Codex-written narrative.1112The report should feel like an analyst-built HTML notebook, not a rigid template dump. Keep the page structure stable, but let the narrative and which charts appear depend on the data.1314Bias the interpretation toward explainable exploratory work for health and life-science teams. That means paying extra attention to:1516- missingness blocks that may come from questionnaire gating or assay availability,17- multicollinearity and redundancy that can destabilize interpretable models,18- follow-up or censoring variables that may behave like leakage in prediction settings,19- target imbalance and target availability when the outcome is only observed for a subset.2021## Inputs2223Resolve these inputs before execution.24251. `input path` (required)26- Meaning: dataset file to analyze.27- Supported formats: `csv`, `tsv`, `txt`, `xlsx`, `xls`, `parquet`.28292. `sheet name` (optional)30- Meaning: Excel worksheet name or index.31- Use only for Excel files.32333. `primary columns` (optional)34- Meaning: columns the user especially cares about.35- Use them to prioritize charts and narrative coverage.36374. `target columns` (optional)38- Meaning: columns to treat as targets for target-aware exploration.39- If target columns are given, assume the remaining non-ignored columns are candidate features.40415. `ignore columns` (optional)42- Meaning: columns to exclude from profiling and target-aware ranking.43- Common examples: row IDs, free-text notes, leakage columns, or audit timestamps the user does not want analyzed.44456. `report title` (optional)46- Meaning: human-facing title for the final HTML report.47- Default: derived from the dataset filename.4849## Input Explanation (Must Explain Before Asking)5051Before asking the user for any of the optional fields, explain them in plain language with one short concrete example.52531. `input path`54- Plain-language explanation: the file you want analyzed.55- Example: `/Users/me/data/patients.csv`56572. `target columns`58- Plain-language explanation: the outcome or result you want the report to compare other variables against.59- Example: if you want to know which columns relate to death status, `mortstat` is a target.60613. `primary columns`62- Plain-language explanation: columns you especially care about and want the report to spend more attention on.63- Example: `age`, `bmi`, `sleep_duration`64654. `ignore columns`66- Plain-language explanation: columns you want the analysis to skip.67- Example: `patient_id`, `free_text_notes`68695. `sheet name`70- Plain-language explanation: which worksheet to read inside an Excel file.71- Example: `Sheet1` or `0`72- Rule: do not ask for this when the file is `csv`, `tsv`, `txt`, or `parquet`.73746. `report title`75- Plain-language explanation: the display title shown at the top of the HTML report.76- Example: `NHANES mortality exploration`7778## Suggested User-Facing Prompting Style7980Use a short explanation like this before collecting values:8182"I can analyze this dataset and generate an interactive HTML report. I need the file path and, optionally, a target column if you want target-aware analysis. If the file is Excel, I may also need the sheet name. If there are columns you especially care about, tell me those as primary columns; otherwise I can choose them automatically."8384## Mandatory Question Gate8586Do not run `workflow.py prepare` until the following is complete.87881. Explain the optional inputs in plain language before asking:89- what a `target column` means,90- what `primary columns` mean,91- what `ignore columns` mean,92- what `sheet name` means when relevant,93- what `report title` means.94952. Resolve what you can from the user request:96- input path97- sheet name98- primary columns99- target columns100- ignore columns101- report title1021033. Ask only the fields that are still relevant:104- do not ask for `sheet name` on non-Excel files,105- do not ask for `primary columns` if the user is happy with auto-selection,106- do not ask for `report title` unless a custom title would help.1071084. Restate the planned run in one short block using plain-language labels:109- dataset file110- target column, if any111- priority columns, if any112- ignored columns, if any113- Excel sheet, if relevant114- report title1151165. Ask for explicit confirmation before execution.1171186. Only continue after the user confirms.119120## Workflow121122Follow this order.123124### 1. Prepare the deterministic analysis artifacts125126Run:127128```bash129python scripts/workflow.py prepare \130 --input-path "<dataset_path>" \131 --report-title "<report_title>"132```133134Add optional flags only when needed:135136```bash137 --sheet-name "<sheet_name>" \138 --primary-column "<primary_col_a>" \139 --primary-column "<primary_col_b>" \140 --target-column "<target_col_a>" \141 --ignore-column "<ignore_col_a>"142```143144`prepare` creates a run directory inside:145146- `<dataset_parent>/.tabular-data-explorer/runs/<timestamp>/`147148It writes:149150- `run_manifest.json`151- `profile_overview.json`152- `column_profiles.json`153- `missingness.json`154- `associations.json`155- `target_analysis.json`156- `chart_manifest.json`157- `analysis_brief.md`158- `analysis.md`159160### 2. Read the artifacts before writing any narrative161162Read:163164- `references/report_sections.md`165- `references/chart_rules.md`166- `references/narrative_grounding.md`167- `<run_dir>/analysis_brief.md`168- `<run_dir>/profile_overview.json`169- `<run_dir>/column_profiles.json`170- `<run_dir>/missingness.json`171- `<run_dir>/associations.json`172- `<run_dir>/target_analysis.json`173- `<run_dir>/chart_manifest.json`174175### 3. Write or revise `analysis.md`176177Use `analysis.md` as a grounded narrative layer on top of the deterministic artifacts.178179Requirements:180181- Base every claim on computed artifacts or rendered charts.182- Prefer project-specific observations over generic EDA filler.183- Mention exact column names and numeric evidence when possible.184- Explain why a pattern matters before suggesting a next step.185- Skip empty sections instead of padding the report.186- Do not force a rigid template when the data does not support it.187- If targets exist, distinguish target-aware signals from general descriptive findings.188- If a chart is visually striking but analytically weak, say so explicitly.189- In health-oriented datasets, call out multicollinearity, follow-up variables, subset-defined targets, and module-based missingness when they matter.190191### 4. Finalize the interactive HTML report192193Run:194195```bash196python scripts/workflow.py finalize --run-dir "<run_dir>"197```198199This step reads the artifacts plus `analysis.md` and writes:200201- `<run_dir>/report.html`202203### 5. Verify outputs204205Confirm these exist:206207- `<run_dir>/run_manifest.json`208- `<run_dir>/profile_overview.json`209- `<run_dir>/column_profiles.json`210- `<run_dir>/missingness.json`211- `<run_dir>/associations.json`212- `<run_dir>/target_analysis.json`213- `<run_dir>/chart_manifest.json`214- `<run_dir>/analysis_brief.md`215- `<run_dir>/analysis.md`216- `<run_dir>/report.html`217218## Chart Rules219220- Favor stable embedded plots inside HTML over JS-heavy interactivity when layout reliability is at risk.221- Prefer bar charts and histograms over pie charts unless there is a clear analytical reason to do otherwise.222- Auto-exclude obvious index or identifier columns from relationship and target-aware analysis.223- When many strong feature-feature correlations exist, add a compact 2D correlation map to help multicollinearity review.224- Every chart must include:225 - why this chart was selected,226 - how to read it,227 - what caveats apply.228- If a chart uses technical terminology, add one subtle plain-language note explaining the term.229- Do not overload the page with every possible plot. Show the most decision-relevant ones.230- Prefer top-N summaries over unreadable full-cardinality visuals.231- Avoid decorative charts with no analytical purpose.232233## Narrative Rules234235- Treat the HTML shell as stable and the insights as adaptive.236- Let the data decide which findings deserve emphasis.237- Use `analysis_brief.md` as scaffolding, not as the final voice.238- If the user asks for stronger business framing, sharpen the narrative without inventing unsupported claims.239240## Resources241242- `scripts/workflow.py`: entry point for `prepare` and `finalize`.243- `scripts/load_data.py`: load mixed-format tabular files and infer lightweight schema hints.244- `scripts/profile_data.py`: compute overview, per-column stats, missingness, associations, and target-aware rankings.245- `scripts/build_chart_manifest.py`: choose explainable chart candidates from the profiling artifacts.246- `scripts/render_html_report.py`: render the final interactive HTML report.247- `references/report_sections.md`: guidance for report composition without forcing a rigid template.248- `references/chart_rules.md`: visual and explanatory standards for chart selection.249- `references/narrative_grounding.md`: rules for grounded, non-generic insight writing.