data-profile
Skill3 starsChanged 32 days agoMITView on GitHub
Profiles tabular datasets with compute-first evidence about schema, distributions, nulls, uniqueness, and anomalies. Use when the user asks to inspect, summarize, validate, or understand a dataset or extract.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- chrisselig/claude-code-toolkittheir own version, first seen Oct 9, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- chrisselig/claude-code-toolkit★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository24 other files it gives its agents.
- analytics-requirementsSkill
- api-pipelineSkill
- bi-modelSkill
- build-modelSkill
- data-model-reviewSkill
- data-quality-investigationSkill
- dbt-healthSkill
- explain-data-codeSkill
- freshness-investigationSkill
- incremental-modelSkill
- metric-definitionSkill
- migration-planSkill
- model-documentationSkill
- model-testsSkill
- project-profileSkill
- pr-reviewSkill
- refactor-modelSkill
- rename-modelSkill
- semantic-layerSkill
- source-setupSkill
- sql-reviewSkill
- trace-lineageSkill
- validate-dbtSkill
- yaml-maintenanceSkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 10 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 17
Use before modeling when source behavior is unknown.
- Distinctive: line 27
Default silently to Work mode and optimize for decisions and reusable evidence.
- Distinctive: line 34
If the script is missing, incompatible, or fails, report the exact blocker and command/error evidence.
- Distinctive: line 65
Every quantitative claim includes:
- Distinctive: line 84
Check sampling, parser warnings, truncation, and unsupported types.
- Distinctive: line 86
Ensure no claim exceeds the computed scope.
- Distinctive: line 90
Do not print secrets, tokens, direct identifiers, or unrestricted row samples.
- Distinctive: line 91
Prefer aggregates, masked examples, and minimum necessary columns.
- Distinctive: line 92
Do not upload data or connect to a service without explicit user instruction.
- Distinctive: line 97
Do not assume inferred types are correct, blanks equal nulls, uniqueness implies a key, correlation implies causation, timestamps share a …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!-- Generated by scripts/build_targets.py from src/skills. Edit the source and rebuild; changes made here are overwritten. -->Self-contained install.
<skill-dir>is the directory holding this file: substitute its absolute path in the commands below and run them from the repository root. Read<skill-dir>/references/operating-rules.mdbefore acting; it holds the toolkit's always-on rules, which this install cannot load on its own. This install has no safety hooks, so the approvals those rules describe rest on you and the agent rather than on an enforced gate.
Data Profile
Profile from computed results, not visual guesses. The canonical profiler is <skill-dir>/scripts/profile_dataset.py relative to the analytics-engineering toolkit root.
When to use
- Profile CSV, JSON, or JSONL. Parquet is planned, not supported in V1.
- Establish dataset shape, field behavior, candidate keys, quality risks, and next checks.
- Use before modeling when source behavior is unknown.
Required context
Obtain:
- Local dataset path.
- File format, delimiter/encoding when relevant, and expected grain if known.
- Business purpose, sensitive-field constraints, and whether full-file computation is acceptable.
Default silently to Work mode and optimize for decisions and reusable evidence. In Learn mode, explain each statistic and its limits. In Assessment mode, evaluate the learner's submitted interpretation without constructing the answer.
Inspection procedure
- Confirm the input and privacy/cost boundary. This skill is local-only and never calls MCP.
- Locate
<skill-dir>/scripts/profile_dataset.pyfrom the toolkit root. Inspect its--helpor source only as needed to determine supported arguments; do not alter it. - Compute first: invoke
<skill-dir>/scripts/profile_dataset.pyon the approved dataset before drawing conclusions. Prefer the narrowest supported bounded invocation that still answers the request. - If the script is missing, incompatible, or fails, report the exact blocker and command/error evidence. Do not silently replace it with ad hoc profiling. Offer a fallback and wait for approval.
- For JSON, verify the record-bearing array or object path before interpreting row count. Never treat an API envelope as the analytical record grain merely because it parsed successfully. When the profiler reports more than one plausible record array, or reports that every array is empty, choose with
--record-pathand say which one you chose and why, rather than accepting whichever it found first. Reportignored_empty_arrayswhen present, because a named collection with no rows is itself a finding. - Capture reproducibility details: input identity, size or row count, invocation, sampling/limits, parser settings, and profiler version or file revision when available. Report
header_normalizationswhen present: a duplicate or blank column heading was renamed to profile the file at all, and the reader's column list will not match the file's. Reportblank_rows_skippedwhen present, so the row count is reconcilable against the file's line count. - Interpret shape and schema; null counts/rates; distinct counts; candidate uniqueness; numeric and temporal ranges; categorical variants; duplicate rows; constants; outliers; PII warnings; and parse/type anomalies. Read
null_count,sentinel_null_count, andmissing_countas three different facts: an empty cell, a value such asN/Aorunknownstanding in for one, and the two together. A column that is complete on the first measure and half sentinel on the second is a data-quality finding, not a clean column. - When a column carries sentinels, report the
observedblock first and the sentinel-adjusted reading as a conditional.NAin a country column may be Namibia; only the file's owner knows. Say what the file contains, then what changes if the sentinel means missing, and notesentinel_changes_key_candidacywhen the two readings disagree about whether the column could be a key. - On a column the profiler marked
potential_pii, extrema, ranges, and outlier bounds are withheld deliberately. Do not reconstruct them from the raw file to fill the section. Report the distributional facts that do not identify anyone, and say the range was suppressed. - Compare related fields and declared expectations. Treat candidate keys, outliers, semantic types, and value-pattern PII warnings as hypotheses until field semantics support them.
- Prioritize material anomalies and propose targeted next tests.
Decision framework
Classify each observation:
- Confirmed property — directly computed over the declared scope.
- Quality risk — computed pattern conflicts with a stated requirement or likely use.
- Hypothesis — plausible semantic interpretation needing domain validation.
- Coverage gap — profiler or input scope cannot answer it.
Prioritize by business impact, prevalence, downstream propagation, and reversibility. A rare value is not automatically bad; a unique column is not automatically a key.
Failure modes
- Describing a dataset before running the canonical profiler.
- Treating a sample statistic as a full-dataset fact.
- Inferring semantic meaning from names or types alone.
- Reporting outliers without units, domain bounds, or population context.
- Loading an unbounded remote table or leaking raw sensitive values.
- Quietly switching tools when the canonical script fails.
Evidence required
Every quantitative claim includes:
- Metric, numerator/denominator where applicable, and evaluated scope.
- Script invocation and whether results are full-file, sampled, or limited.
- Column(s), observed value/range/pattern, and relevant expectation.
- For an anomaly, at least one reproducible statistic; include example values only when privacy-safe.
Label computed facts, domain assumptions, and proposed tests separately.
Output contract
Return # Dataset Profile with: Dataset shape; Potential grain; Potential keys; Quality findings; Null patterns; Duplicate findings; Type issues; Suspicious values; Potential PII warning; Recommended next checks; Cleaning recommendations. Do not dump raw sensitive values.
Keep reproducibility metadata to one compact scope line unless the user requests an audit trail; omit hashes, byte counts, and scanner implementation details when they do not change a decision. Put each recommendation in one section rather than repeating it under findings, next checks, and cleaning. Default to the five highest-value checks or cleaning actions per dataset.
Verification
- Confirm the script exited successfully and the output corresponds to the intended input.
- Reconcile counts and percentages; denominators must be explicit. Separate figures the profiler computed from figures you derived by hand, and recheck each derived figure against the profiler output or the file before it appears in the report.
- Check sampling, parser warnings, truncation, and unsupported types.
- Re-run only focused, approved checks for surprising results.
- Ensure no claim exceeds the computed scope.
Safety/privacy
- Do not print secrets, tokens, direct identifiers, or unrestricted row samples.
- Prefer aggregates, masked examples, and minimum necessary columns.
- Do not upload data or connect to a service without explicit user instruction.
- Warn before operations likely to scan large files or incur warehouse cost.
What not to assume
Do not assume inferred types are correct, blanks equal nulls, uniqueness implies a key, correlation implies causation, timestamps share a zone, missingness is random, a sample represents the population, or an unusual value is invalid.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

