dt-ai-toolkit
A CLI that gets a whole data team working with coding agents the same way.
If your team uses Claude Code for data work, every
teammate ends up solving the same problems by hand: how to lay out a project so an agent
can work in it, which skills to give the agent, how to run repeatable agent workflows, and
how to turn analysis into a polished PDF. dt-ai-toolkit packages those answers into one
installable tool — run dat setup in a fresh directory and a teammate gets the same
agent-ready project, curated skills, and report pipeline as everyone else.
What it does
- Scaffolds agent-ready data projects — standard folders (
data/,reports/,sandbox/), a managed.gitignore, and tool installs, customizable per team via a TOML profile. - Keeps reusable AGENTS.md templates — house rules stored once in the toolkit
database with
{placeholder}gaps, rendered into a project asAGENTS.mdplus a generatedCLAUDE.mdthat imports it, so there is one source of truth instead of two copies that drift (dat agent-markdown). - Installs curated Agent Skills — a bundled set focused on data honesty (profiling datasets before trusting them, critiquing charts and talking points), plus install from any local folder or git repo, with provenance tracking.
- Runs agent workflows — repeatable flows via the Claude Agent SDK, defined as plain markdown files with YAML frontmatter. Bundled flows included; write your own in minutes.
- Generates real reports — scaffolds a React TSX → HTML → PDF pipeline so agent output can ship as a formatted document, not a wall of markdown.
- Evaluates skills & agents in a gym — run curated tasks against a skill or agent in
an isolated sandbox, score the transcript with an LLM judge, or A/B two targets
head-to-head (
dat gym run/dat gym ab/dat gym manage). Makes real API calls. - Chat-edits everything with the agent of your choice — every record in the workshop
can be built or edited in an interactive coding-agent chat (multi-line block paste,
split-screen live preview,
/copyto clipboard), backed by Claude (pick model + effort per session, up tofable) or any CLI coding agent you register (dat providers). - Puts it all in one terminal app —
dat workshopis a single Textual UI over every record, with ten workspaces on a grouped rail: docs, then setup / agent-markdown / skills / agents / tools / providers / harnesses, then the gym and benchmarks.alt+1…alt+9andalt+0jump,ctrl+kfinds any record by name, and?shows every key the current screen answers to. Everydat <group> managecommand is a deep link into it. - Keeps everyone unblocked —
dat doctorchecks the whole environment (uv, git, claude CLI, auth, bun, playwright) anddat docsis a built-in interactive docs browser.
Agents, skills, and setup profiles live in a local SQLite database, so teams can inspect,
edit, back up, and share their configuration (dat db info, dat agent backup /
restore, and the same for skills and profiles).
Install
# no install needed — run it straight from PyPI
uvx dt-ai-toolkit --help
# or install it once and get the short `dat` command
uv tool install dt-ai-toolkit
# prefer not to install? alias `dat` to uvx in your shell config instead
uvx dt-ai-toolkit alias
Requires Python 3.11+ and uv. Every dat ... command below
also works as uvx dt-ai-toolkit ....
Quickstart
dat db setup # one-time: create the toolkit database, seed bundled content
mkdir my-project && cd my-project
dat setup # folders + gitignore + installs Claude Code & omnigent
dat doctor # verify the environment
dat workshop # the interactive app over everything (opens on the docs)
Commands
| command | what it does |
|---|---|
workshop |
The interactive app over every record: ten workspaces on a grouped rail (docs · setup/agent-markdown/skills/agents/tools/providers/harnesses · gym/benchmarks). dat workshop [workspace] [--select NAME]; every manage command deep-links into it. |
setup |
Scaffold a data project (data/, reports/, sandbox/, managed .gitignore block) and install tooling. Customizable via a dt-setup.toml profile (setup config init). |
agent-markdown |
Reusable AGENTS.md templates as database records; publish fills {placeholder} values in a Textual form, optionally refines the final files through agent chat, then writes AGENTS.md plus a generated CLAUDE.md pointer. Also supports repeatable --set values for CI. list / publish / restore / backup / manage (alias: agentmd). |
skills |
Install Agent Skills for Claude, Codex, and OpenCode from the curated set, a local folder, or a git repo (skills install --for ...). list / install / update with provenance tracking. |
agent |
Run agent flows via the Claude Agent SDK: bundled sourcing-report and project-review, or your own frontmatter-markdown agent files. agent help <name> shows an agent's docs; run --directory picks the working directory. |
report |
Scaffold the React TSX → HTML/PDF report pipeline (report new <name>). |
tools |
Register plain-Python tools as harness-specific wrappers — an MCP server for Claude, a CLI + skill for pi (tools register <name> --for claude|pi). |
gym |
Evaluate, run, and A/B test skills & agents against curated tasks with an LLM judge (gym run / gym ab / gym manage). |
benchmark |
Run a saved gauntlet across harness/model combos and compare them in a task × combo matrix (benchmark run / results, benchmark harness add). |
db |
Manage the toolkit database — the source of truth for agents, skills, and setup profiles. setup / info / path / upgrade-backup. |
providers |
Configure which agents back the interactive chats: claude built in, plus any coding-agent CLI (opencode, pi, ...) via providers.toml — list / init / manage. |
doctor |
Check the environment: uv, git, claude CLI, omnigent, auth, bun, playwright. |
alias |
Write a dat alias into your shell config (bash, zsh, fish, PowerShell) so dat works without a tool install. |
docs |
Browse documentation — an interactive TUI, or --plain / show <topic> / export for non-interactive use. |
Singular and plural are interchangeable: setup/setups, skill/skills,
agent/agents, and gym/gyms all resolve to the same command.
Bundled skills
The curated skills lean toward data honesty — making sure what an agent (or you) produces can survive scrutiny:
- interrogate-data — structured protocol for profiling and stress-testing a dataset before trusting it
- critique-talking-points — adversarial claim-by-claim review of narratives before they ship
- critique-visualization — chart-honesty review, including re-deriving plotted values from source data
- tsx-report-generator — walks Claude through the full TSX → HTML/PDF report pipeline
- dt-setup-config — helps Claude build a custom
dt-setup.tomlfor your team - dt-ai-toolkit — meta skill teaching Claude how to call this CLI itself (
uvx dt-ai-toolkit ...) - grill-me — Socratic quiz rounds that test your understanding of a dataset, pipeline, or report before someone else does
dat skills list # the toolkit-db catalog (what you install from)
dat skills install # install every db skill (idempotent sync)
dat skills install interrogate-data # a single db skill by name
dat skills installed # what's installed in this project
dat skills install https://github.com/your-org/team-skills.git --all
Custom agent flows
Agents are markdown files with YAML frontmatter — config on top, prompt below,
{placeholders} filled from the command line. A one-line description and a
longer help doc (what it does and when to use it, shown by dat agent help)
are both required:
---
name: data-audit
description: Audit a dataset for quality issues
help: |
Profiles a dataset and reports quality issues — nulls, outliers, type
mismatches — with the query behind every finding. Point --arg data_path at
the file to audit.
allowed_tools: [Read, Glob, Grep, Bash]
args:
data_path: {required: true}
---
Audit the dataset at {data_path}. Cite the query behind every finding.
dat agent help data-audit.md # read its docs first
dat agent run data-audit.md --arg data_path=data/sales.csv
dat agent run sourcing-report --arg topic="Q3 readmissions" --dry-run
dat agent run data-audit.md --arg data_path=data/sales.csv --directory ../warehouse
Development
uv sync
uv run pytest
uv run dat --help
See CLAUDE.md for architecture conventions.
Metadata
Release files for dt-ai-toolkit 0.3.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dt_ai_toolkit-0.3.5.tar.gz | 638.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dt_ai_toolkit-0.3.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.2 MB
Release files / dt_ai_toolkit-0.3.5.tar.gz
| Download URL | dt_ai_toolkit-0.3.5.tar.gz |
|---|---|
| Size | 638.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a9bf90b1e1a80fee6efe22b963844152d9360a2d1ae103e990dff67fd0d22ecb
|
|
BLAKE2b-256 checksum How to use checksums |
0c71c206b6aa24e5c2fad418eaffdb2aa617a5beb5de5ee26ead5588871a7959
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / dt_ai_toolkit-0.3.5-py3-none-any.whl
| Download URL | dt_ai_toolkit-0.3.5-py3-none-any.whl |
|---|---|
| Size | 547.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
667e1c87caac9dda724eb32e1f457b03818224d16198e755bdb8c476bcd8f28a
|
|
BLAKE2b-256 checksum How to use checksums |
804230dae78c8c5f693156e494b0b60244907c251c834f8909b5f31c8e3c5062
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|