Inference Latency Profiler
jeremylongshore/tons-of-skills-marketplace
Profile inference latency profiler operations. An agent skill from jeremylongshore/tons-of-skills-marketplace.
Define a dataset's metadata profile — infer a Frictionless Table Schema from its data, add Data Package metadata (license, sources, keywords), and write it into datasets.json so the showcase renders…
$ npx skills add datopian/portaljs --skill portaljs-define-schema -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install datopian/portaljs portaljs-define-schema --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-define-schema .claude/skills/portaljs-define-schema && 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-define-schema" agent skill from https://github.com/datopian/portaljs/tree/main/skills/portaljs-define-schema into .claude/skills/portaljs-define-schema/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "portaljs-define-schema", 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-define-schemaType 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-define-schema -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install datopian/portaljs portaljs-define-schema --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-define-schema .agents/skills/portaljs-define-schema && 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-define-schema" agent skill from https://github.com/datopian/portaljs/tree/main/skills/portaljs-define-schema into .agents/skills/portaljs-define-schema/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "portaljs-define-schema", 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-define-schema -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install datopian/portaljs portaljs-define-schema --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-define-schema .cursor/skills/portaljs-define-schema && 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-define-schema" agent skill from https://github.com/datopian/portaljs/tree/main/skills/portaljs-define-schema into .cursor/skills/portaljs-define-schema/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "portaljs-define-schema", 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-define-schema--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-define-schema -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install datopian/portaljs portaljs-define-schema --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-define-schema .gemini/skills/portaljs-define-schema && 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-define-schema" agent skill from https://github.com/datopian/portaljs/tree/main/skills/portaljs-define-schema into .gemini/skills/portaljs-define-schema/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "portaljs-define-schema", 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-define-schemaInstalls 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-define-schema -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-define-schema .github/skills/portaljs-define-schema && 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-define-schema" agent skill from https://github.com/datopian/portaljs/tree/main/skills/portaljs-define-schema into .github/skills/portaljs-define-schema/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "portaljs-define-schema", 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-define-schema -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-define-schema --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-define-schema .opencode/skills/portaljs-define-schema && 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-define-schema" agent skill from https://github.com/datopian/portaljs/tree/main/skills/portaljs-define-schema into .opencode/skills/portaljs-define-schema/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "portaljs-define-schema", 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-define-schemaDefine a dataset's metadata profile — infer a Frictionless Table Schema from its data, add Data Package metadata (license, sources, keywords), and write it into datasets.json so the showcase renders…
Portaljs Define Schema is an agent skill from datopian/portaljs. Define a dataset's metadata profile — infer a Frictionless Table Schema from its data, add Data Package metadata (license, sources, keywords), and write it into datasets.json so the showcase renders a typed field table. Extend or customize via the L0-L3 profile ladder. Use when a registered dataset needs field types, constraints, or catalog metadata before publishing.
Its SKILL.md is about 1.7k 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…
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.
9 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:
ReadWriteEditBash(npx:*)Bash(node:*)Bash(head:*)From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
datapackage.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 Define Schema loads about 1.7k tokens when it runs, and up to ~2.6k if it reads all its reference files. Until then it costs about 98 tokens; SKILL.md has 679 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). 679 words, ~1,672 tokens.
.claude/skills/portaljs-define-schema/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Define a dataset's metadata profile — the authoring skill for the metadata-profile
contract (lib/metadata). Where portaljs-add-dataset registers that a dataset exists,
this skill describes what its data means: infer a Frictionless Table Schema (fields,
types, constraints) from sampled data, add the Data Package fields a catalog surfaces
(title, licenses, sources, keywords), and write them onto the dataset's entry in
datasets.json. The showcase at /@<namespace>/<slug> then renders a typed field table
instead of a bare preview. The model is Frictionless-native; DCAT is a serialization layer
built on top later, not authored here.
The skill runs on a profile ladder — reach for higher levels only when needed:
| Level | What it is | When |
|---|---|---|
| L0 | Default frictionless-tabular profile; declare schema + metadata. | Default. Standard tabular CSV/TSV. |
| L1 | L0 plus extra descriptive package fields. | Extra metadata, standard validation is fine. |
| L2 | Fully custom profile (own schema template + validate()). | A dataset type needing custom validation rules. |
| L3 | Multiple registered profiles, resolved per dataset. | A portal mixing dataset types. |
The skill is interactive and never dead-ends: if input is thin it interviews in short rounds, infers defaults from the data, echoes the schema for confirmation, and accepts "use defaults" to proceed with the inferred schema as-is.
lib/metadata/types.ts,
pages/[owner]/[slug].tsx); see portaljs-new-portal.datasets.json (see portaljs-add-dataset).PORTAL_DIR/public/data/. JSON/GeoJSON datasets get package metadata only — no fields.tsx optional, used for the schema-validation check.The canonical, full step-by-step workflow is
.claude/commands/portaljs-define-schema.md —
the single source of truth. Read and follow it when executing. Summary:
PORTAL_DIR, DATASET (slug or namespace/slug), and LEVEL (default L0)
from input; if DATASET is missing, list the portal's slugs and ask.datasets.json, lib/metadata/types.ts,
the showcase route); proceed anyway if lib/metadata/ predates the contract.public/data/<file> and infer
each field's type, constraints (required, unique, pattern), and a primary key.datasets.json in place,
preserving all other fields; for L2/L3, scaffold and register a custom profile module.validate().npx next build; fix malformed JSON or an invalid FieldType before
reporting success.datasets.json (target entry gains profile, schema, licenses,
sources, keywords, version — unset fields omitted).lib/metadata/<profile-id>.ts; lib/metadata/registry.ts
updated with a registerProfile(...) call.npx next build succeeds./@<namespace>/<slug> renders a typed field table in place of a bare preview.| Symptom | Cause | Fix |
|---|---|---|
Dataset not found in datasets.json | Wrong slug or missing namespace/ prefix | List available slugs and re-prompt. |
lib/metadata/ missing | Portal predates the metadata-profile contract | Proceed anyway — schema fields are optional and ignored by older showcases. |
No fields schema produced | Dataset is JSON/GeoJSON, not tabular | Expected — capture Data Package metadata only. |
| Validation reports type errors | Sampled values don't coerce to the inferred type | Relax the type or drop the offending required/pattern constraint. |
next build fails on datasets.json | Stray comma or a type outside FieldType | Fix the JSON/type and rebuild before reporting success. |
/portaljs-define-schema population-2022Infers fields (e.g. country: string, population: integer), drafts titles, asks for a
license and source, and writes the schema under the default frictionless-tabular profile.
/portaljs-define-schema neighborhoods-geoGeoJSON has no tabular fields; the skill captures license, sources, and keywords onto the
entry and skips schema inference.
/portaljs-define-schema co2-emissions level=L2Scaffolds lib/metadata/co2-emissions-profile.ts with a custom validate(), registers it
in lib/metadata/registry.ts, and sets "profile": "co2-emissions-profile" on the entry.
.claude/commands/portaljs-define-schema.mdreferences/reference.mdportaljs-add-dataset, portaljs-add-dcat, portaljs-check-data-quality© 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-define-schema 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 Define Schema 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 Define Schema this skilldatopian/portaljs | 2.4k | 1 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Inference Latency Profilerjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~584 | Automated safety check: Pass | MIT | |
| Ito Inferenceaffaan-m/ECC | 275k | 1 repos | ~1.5k | Automated safety check: Pass | MIT | |
| Profileccusage/ccusage | 19k | — | ~430 | Automated safety check: Pass | Custom licence | |
| Table Headersthedaviddias/Front-End-Checklist | 74k | — | ~460 | Automated safety check: Pass | MIT | |
| Dataset Profileroxbshw/LLM-Agents-Ecosystem-Handbook | 552 | — | ~492 | Automated safety check: Pass | MIT |
jeremylongshore/tons-of-skills-marketplace
Profile inference latency profiler operations. An agent skill from jeremylongshore/tons-of-skills-marketplace.
affaan-m/ECC
Inspect the availability of model serving on a completed Itô compute booking and, when the canonical backend becomes available, hand off an explicitly confirmed serving manifest.
ccusage/ccusage
Profiles ccusage performance. An agent skill from ccusage/ccusage.
thedaviddias/Front-End-Checklist
A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Define proper table headers.
oxbshw/LLM-Agents-Ecosystem-Handbook
A skill your agent uses when first encountering a new dataset — produces a structured profile (schema, missingness, distributions, outliers, gotchas) before any analysis.
astronomer/agents
Deep-dive data profiling for a specific table. An agent skill from astronomer/agents.
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.
Define a dataset's metadata profile — infer a Frictionless Table Schema from its data, add Data Package metadata (license, sources, keywords), and write it into datasets.json so the showcase renders…. Portaljs Define Schema is an agent skill from datopian/portaljs.json so the showcase renders a typed field table.
Portaljs Define Schema fits situations like: A registered dataset needs field types; catalog metadata before publishing.
Run `npx skills add datopian/portaljs --skill portaljs-define-schema -a claude-code`. Or copy the skill folder (skills/portaljs-define-schema in datopian/portaljs) into .claude/skills/portaljs-define-schema in your project. Claude Code loads it when a task matches its description.
Run `npx skills add datopian/portaljs --skill portaljs-define-schema -a codex`. Or copy the skill folder (skills/portaljs-define-schema in datopian/portaljs) into .agents/skills/portaljs-define-schema 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-define-schema -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-define-schema, .gemini/skills/portaljs-define-schema, .github/skills/portaljs-define-schema and .opencode/skills/portaljs-define-schema in your project.
Going by SKILL.md and its folder, Portaljs Define Schema needs the command-line tools its instructions call (npx). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(npx:*), Bash(node:*), Bash(head:*). 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: datapackage.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 Define Schema 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.7k tokens (SKILL.md is roughly 6.7k 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 923 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Portaljs Define Schema: Inference Latency Profiler (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Ito Inference (affaan-m/ECC, 275k stars), Profile (ccusage/ccusage, 19k stars) and Table Headers (thedaviddias/Front-End-Checklist, 74k 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 September 7, 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.