Dataset Quality Audit
zebbern/claude-code-guide
Run comprehensive quality checks on tabular data (CSV/Excel/TSV/JSON), detecting missing values, duplicates, outliers, format issues, and type inconsistencies to produce an overall score, grade, and…
Audit a local or remote tabular file (CSV/TSV) for common data quality issues — schema, nulls, types, duplicates.
$ npx skills add datopian/portaljs --skill portaljs-check-data-quality -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install datopian/portaljs portaljs-check-data-quality --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/datopian/portaljs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/portaljs-check-data-quality .claude/skills/portaljs-check-data-quality && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "portaljs-check-data-quality" agent skill from https://github.com/datopian/portaljs/tree/main/skills/portaljs-check-data-quality into .claude/skills/portaljs-check-data-quality/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "portaljs-check-data-quality", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/datopian/portaljs/tree/main/skills/portaljs-check-data-qualityType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add datopian/portaljs --skill portaljs-check-data-quality -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install datopian/portaljs portaljs-check-data-quality --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/datopian/portaljs.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/portaljs-check-data-quality .agents/skills/portaljs-check-data-quality && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "portaljs-check-data-quality" agent skill from https://github.com/datopian/portaljs/tree/main/skills/portaljs-check-data-quality into .agents/skills/portaljs-check-data-quality/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "portaljs-check-data-quality", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add datopian/portaljs --skill portaljs-check-data-quality -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install datopian/portaljs portaljs-check-data-quality --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/datopian/portaljs.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/portaljs-check-data-quality .cursor/skills/portaljs-check-data-quality && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "portaljs-check-data-quality" agent skill from https://github.com/datopian/portaljs/tree/main/skills/portaljs-check-data-quality into .cursor/skills/portaljs-check-data-quality/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "portaljs-check-data-quality", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/datopian/portaljs.git --path skills/portaljs-check-data-quality--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add datopian/portaljs --skill portaljs-check-data-quality -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install datopian/portaljs portaljs-check-data-quality --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/datopian/portaljs.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/portaljs-check-data-quality .gemini/skills/portaljs-check-data-quality && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "portaljs-check-data-quality" agent skill from https://github.com/datopian/portaljs/tree/main/skills/portaljs-check-data-quality into .gemini/skills/portaljs-check-data-quality/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "portaljs-check-data-quality", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install datopian/portaljs portaljs-check-data-qualityInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add datopian/portaljs --skill portaljs-check-data-quality -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/datopian/portaljs.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/portaljs-check-data-quality .github/skills/portaljs-check-data-quality && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "portaljs-check-data-quality" agent skill from https://github.com/datopian/portaljs/tree/main/skills/portaljs-check-data-quality into .github/skills/portaljs-check-data-quality/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "portaljs-check-data-quality", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add datopian/portaljs --skill portaljs-check-data-quality -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install datopian/portaljs portaljs-check-data-quality --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/datopian/portaljs.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/portaljs-check-data-quality .opencode/skills/portaljs-check-data-quality && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "portaljs-check-data-quality" agent skill from https://github.com/datopian/portaljs/tree/main/skills/portaljs-check-data-quality into .opencode/skills/portaljs-check-data-quality/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "portaljs-check-data-quality", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
portaljs-check-data-qualityAudit a local or remote tabular file (CSV/TSV) for common data quality issues — schema, nulls, types, duplicates.
Portaljs Check Data Quality is an agent skill from datopian/portaljs. Audit a local or remote tabular file (CSV/TSV) for common data quality issues — schema, nulls, types, duplicates. Read-only. Use when a dataset needs a quality check before publishing, or a showcase renders wrong (blank cells, garbled numbers, an unsortable date column) and the cause needs isolating.
Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/reference.md`). Compatibility notes: Claude Code with PortalJS portals (Next.js 14, React 18, Node 18+). Runs from any project via the plugin, a personal ~/.claude/commands install, or a portaljs…
It sits in Data & Analytics, covering CSV and tabular files and Data cleaning. The repository describes itself as: 🌀 AI-native framework for building data portals. Scaffold a full portal from a brief and load datasets in minutes with agentic skills — any backend (CKAN, GitHub, Frictionless). The licence is MIT.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit d5c096a. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(curl:*)Bash(awk:*)Bash(sort:*)Bash(head:*)Bash(wc:*)From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bashFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.python.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Claude Code with PortalJS portals (Next.js 14, React 18, Node 18+). Runs from any project via the plugin, a personal ~/.claude/commands install, or a portaljs clone.
From compatibility in the SKILL.md frontmatter.
Portaljs Check Data Quality loads about 1.5k tokens when it runs, and up to ~2.6k if it reads all its reference files. Until then it costs about 82 tokens; SKILL.md has 628 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from datopian/portaljs at commit d5c096a, republished under its MIT licence (© datopian). 628 words, ~1,484 tokens.
.claude/skills/portaljs-check-data-quality/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Run a read-only quality audit of one CSV or TSV file, local or remote, and return a
structured JSON report. The audit profiles every column — null/blank counts, inferred
value types, numeric ranges, likely year/date fields — and flags duplicate rows,
duplicate values in identifier-like columns, ambiguous overlapping year columns (e.g.
calendar year vs fiscal year), and mixed-type columns. It never edits the source
file, datasets.json, or any other project file; it only reads the target file (a
remote URL is downloaded to a temp file that is deleted before the run ends) and
prints a report. Use it before publishing a dataset with portaljs-add-dataset, or to
diagnose why a showcase renders wrong.
python3 on PATH — the audit logic runs as an embedded Python script; nothing is
installed.http/https URL. Only one file
per run.The canonical, full step-by-step workflow is
.claude/commands/portaljs-check-data-quality.md —
the single source of truth. Read and follow it when executing. Summary:
http/https URL, download it to a temp file first;
otherwise use the local path as given..csv or .tsv. If not, or the file is missing, or the
header row is empty, stop and surface the error JSON as-is — do not guess a fix.critical, warning, or info.status, file metadata, findings, recommendations,
column_profiles), print it, and clean up the temp file if one was created.datasets.json,
or any other project file based on the findings — that's a separate, explicit step.A single JSON object printed to stdout:
status — ok, warning, or critical.file, file_name, source_type (local or url), row_count, column_count.findings — structured issues, most severe first.recommendations — de-duplicated suggested next steps.column_profiles — per-column summary (nulls, blanks, distinct count, sample
values, inferred types, numeric/year ranges).No files are created or modified. A remote URL's temp download is removed on exit, success or failure alike.
| Symptom | Cause | Fix |
|---|---|---|
"File ... is not available." | Local path is wrong, or the URL download failed | Verify the path or URL is reachable and retry. |
"Only CSV and TSV files are supported right now." | File extension isn't .csv/.tsv | Convert the file, or point to its tabular source instead. |
"... does not contain tabular headers." | File is empty or the header row is malformed | Open the file and confirm it has a valid, non-empty header line. |
| Command hangs on a URL | Remote host is slow or blocks non-browser requests | Download the file manually and audit the local copy instead. |
python3: command not found | Python 3 isn't installed or not on PATH | Install Python 3, or run the audit where it's available. |
| Report looks truncated in the terminal | Large report wrapped/paginated by the shell | Redirect to a file (> report.json) and open it separately. |
/portaljs-check-data-quality ./public/data/trash.csv/portaljs-check-data-quality https://example.com/trash.csvbash scripts/check-data-quality.sh ./data/emissions.tsv > /tmp/emissions-quality.jsoncritical status report{
"status": "critical",
"findings": [
{ "severity": "critical", "check": "duplicate_rows", "message": "42 duplicate rows found." }
],
"recommendations": ["Review and deduplicate repeated rows if they are not intentional."]
}Fix the flagged rows/columns, then re-run the audit before publishing.
.claude/commands/portaljs-check-data-quality.mdreferences/reference.mdportaljs-add-dataset, portaljs-define-schemacsv module (parsing behavior this audit relies on): https://docs.python.org/3/library/csv.html© datopian, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/portaljs-check-data-quality of datopian/portaljs.
Open the folder on GitHubat commit d5c096a
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in datopian/portaljs, which our catalogue first saw on October 7, 2026.
Portaljs Check Data Quality next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Portaljs Check Data Quality this skilldatopian/portaljs | 2.4k | 1 repos | ~1.5k | Automated safety check: Pass | MIT | |
| Dataset Quality Auditzebbern/claude-code-guide | 4.7k | — | ~996 | Automated safety check: Pass | MIT | |
| Education Cloud Course Catalog Migrateforcedotcom/sf-skills | 1.1k | — | ~5.4k | Automated safety check: Pass | Apache-2.0 | |
| CSV Processingbenchflow-ai/skillsbench | 1.8k | — | ~455 | Automated safety check: Pass | Apache-2.0 | |
| Visual Skillsnpc-live/clawfirm | 156 | — | ~7.4k | Automated safety check: Pass | None | |
| XLSX Spreadsheet ToolkitXiaomiMiMo/MiMo-Code | 14k | — | ~2.9k | Automated safety check: Pass | Apache-2.0 |
zebbern/claude-code-guide
Run comprehensive quality checks on tabular data (CSV/Excel/TSV/JSON), detecting missing values, duplicates, outliers, format issues, and type inconsistencies to produce an overall score, grade, and…
forcedotcom/sf-skills
A skill your agent uses to migrate course catalog data from external sources (CSV, PDF, website) and bulk-create Learning and LearningCourse records in Education Cloud.
benchflow-ai/skillsbench
A skill your agent uses when reading sensor data from CSV files, writing simulation results to CSV, processing time-series data with pandas, or handling missing values in datasets.
npc-live/clawfirm
A skill your agent uses whenever the user provides data (CSV, JSON, table, pasted numbers, or any structured dataset) and expects a visual output — even if they don't say 'chart' or 'visualize'.
XiaomiMiMo/MiMo-Code
Builds, edits, cleans, recalculates and reads Excel workbooks and CSV files with openpyxl and pandas, plus LibreOffice for recalculation and PDF export.
pipeshub-ai/pipeshub-ai
Loads, cleans, aggregates and joins tabular data with pandas under a verification rule: every number reported must be one that the code actually printed.
datopian/portaljs
Migrate a whole ArcGIS Hub site into a PortalJS Arc portal end-to-end.
datopian/portaljs
Add a chart (line, bar, area, pie, or scatter) to a dataset's showcase in a PortalJS portal.
datopian/portaljs
Add a dataset (CSV, TSV, JSON, or GeoJSON) to an existing PortalJS portal.
datopian/portaljs
Make a PortalJS portal harvestable by national/EU/US open-data portals — emit standards-compliant DCAT catalog feeds (DCAT 2/3, DCAT-AP, DCAT-US, national profiles) in JSON-LD, Turtle, and RDF/XML…
datopian/portaljs
Auto-ingest a geospatial file (GeoJSON, Shapefile, GeoPackage, KML/KMZ, FlatGeobuf, CSV-with-geometry) into a PortalJS portal on the user's own machine, with no server.
datopian/portaljs
Render a GeoJSON dataset on an interactive Leaflet map in the Views section of a dataset's showcase.
Categories
Audit a local or remote tabular file (CSV/TSV) for common data quality issues — schema, nulls, types, duplicates. Portaljs Check Data Quality is an agent skill from datopian/portaljs. Audit a local or remote tabular file (CSV/TSV) for common data quality issues — schema, nulls, types, duplicates.
Portaljs Check Data Quality fits situations like: A dataset needs a quality check before publishing; A showcase renders wrong (blank cells; garbled numbers; an unsortable date column) and the cause needs isolating.
Run `npx skills add datopian/portaljs --skill portaljs-check-data-quality -a claude-code`. Or copy the skill folder (skills/portaljs-check-data-quality in datopian/portaljs) into .claude/skills/portaljs-check-data-quality in your project. Claude Code loads it when a task matches its description.
Run `npx skills add datopian/portaljs --skill portaljs-check-data-quality -a codex`. Or copy the skill folder (skills/portaljs-check-data-quality in datopian/portaljs) into .agents/skills/portaljs-check-data-quality in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add datopian/portaljs --skill portaljs-check-data-quality -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/portaljs-check-data-quality, .gemini/skills/portaljs-check-data-quality, .github/skills/portaljs-check-data-quality and .opencode/skills/portaljs-check-data-quality in your project.
Going by SKILL.md and its folder, Portaljs Check Data Quality needs the command-line tools its instructions call (bash). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Bash(curl:*), Bash(awk:*), Bash(sort:*), Bash(head:*), Bash(wc:*). Compatibility (from SKILL.md): Claude Code with PortalJS portals (Next.js 14, React 18, Node 18+). Runs from any project via the plugin, a personal ~/.claude/commands install, or a portaljs clone..
SKILL.md names 1 domain. As links in the text: docs.python.org. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Portaljs Check Data Quality is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.5k tokens (SKILL.md is roughly 5.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Portaljs Check Data Quality: Dataset Quality Audit (zebbern/claude-code-guide, 4.7k stars), Education Cloud Course Catalog Migrate (forcedotcom/sf-skills, 1.1k stars), CSV Processing (benchflow-ai/skillsbench, 1.8k stars) and Visual Skills (npc-live/clawfirm, 156 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
datopian (a GitHub organization) maintains it in datopian/portaljs, which has 2,358 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 8, 2026.
Source: datopian/portaljs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.