agentleFS
analyticsengineeringanalyticsengineering/ae-toolkit/skills/data-profile/SKILL.md

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

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
  1. Distinctive:

    Use before modeling when source behavior is unknown.

    line 17
  2. Distinctive:

    Default silently to Work mode and optimize for decisions and reusable evidence.

    line 27
  3. Distinctive:

    If the script is missing, incompatible, or fails, report the exact blocker and command/error evidence.

    line 34
  4. Distinctive:

    Every quantitative claim includes:

    line 65
  5. Distinctive:

    Check sampling, parser warnings, truncation, and unsupported types.

    line 84
  6. Distinctive:

    Ensure no claim exceeds the computed scope.

    line 86
  7. Distinctive:

    Do not print secrets, tokens, direct identifiers, or unrestricted row samples.

    line 90
  8. Distinctive:

    Prefer aggregates, masked examples, and minimum necessary columns.

    line 91
  9. Distinctive:

    Do not upload data or connect to a service without explicit user instruction.

    line 92
  10. Distinctive:

    Do not assume inferred types are correct, blanks equal nulls, uniqueness implies a key, correlation implies causation, timestamps share a …

    line 97

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md
<!-- 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.md before 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

  1. Confirm the input and privacy/cost boundary. This skill is local-only and never calls MCP.
  2. Locate <skill-dir>/scripts/profile_dataset.py from the toolkit root. Inspect its --help or source only as needed to determine supported arguments; do not alter it.
  3. Compute first: invoke <skill-dir>/scripts/profile_dataset.py on the approved dataset before drawing conclusions. Prefer the narrowest supported bounded invocation that still answers the request.
  4. 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.
  5. 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-path and say which one you chose and why, rather than accepting whichever it found first. Report ignored_empty_arrays when present, because a named collection with no rows is itself a finding.
  6. Capture reproducibility details: input identity, size or row count, invocation, sampling/limits, parser settings, and profiler version or file revision when available. Report header_normalizations when 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. Report blank_rows_skipped when present, so the row count is reconcilable against the file's line count.
  7. 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, and missing_count as three different facts: an empty cell, a value such as N/A or unknown standing 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.
  8. When a column carries sentinels, report the observed block first and the sentinel-adjusted reading as a conditional. NA in 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 note sentinel_changes_key_candidacy when the two readings disagree about whether the column could be a key.
  9. 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.
  10. Compare related fields and declared expectations. Treat candidate keys, outliers, semantic types, and value-pattern PII warnings as hypotheses until field semantics support them.
  11. 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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.