no-em-dashes
A Claude Code skill that makes Claude write prose with no em dashes, using sentence structures that avoid them in the first place. Useful for drafts, emails, reports, and posts that should not read as machine-written.
Dex is an analytics engineering toolkit for Claude Code that explores your warehouse or DuckDB file, authors and maintains dbt projects and semantic models, and flags what to fix when the schema drifts. Built for analytics and data engineers.
Claude Code
$ npx -y skills add exmergo/dex --agent claude-code
Codex
$ npx skills add exmergo/dex -a codex
Cursor
$ npx skills add exmergo/dex -a cursor
Gemini CLI
$ npx skills add exmergo/dex -a gemini-cli
GitHub Copilot
$ npx skills add exmergo/dex -a github-copilot
OpenCode
$ npx skills add exmergo/dex -a opencode
Windsurf
$ npx skills add exmergo/dex -a windsurf

Most deadly errors arise from obsolete assumptions.
Frank Herbert, Children of Dune
Dex lets your agent build your analytics.
Explore your data, build models and semantic layers, and keep them in sync as schemas change.
Works with databases, data warehouses, lakehouses, and SQL engine endpoints through supported connectors.
Built by Exmergo
Any agent (run in your terminal):
npx skills add exmergo/dex
Claude Code (run these inside Claude Code, one at a time):
/plugin marketplace add exmergo/exmergo-agent-plugins
/plugin install dex@exmergo
Codex:
npx skills add exmergo/dex --agent codex
Your source data stays read-only. Builds run on a dev target, query costs are quoted before spend, and every project change is a diff you review. Works in Claude Code, Codex, or any agent that loads Agent Skills.
Important Dex needs
uvon yourPATH. No agent installs it for you. Runbrew install uvorpipx install uv, or see the uv installation docs for other platforms.uvsupplies Python and the engine. Use uv 0.13.4 or later (uv self update): earlier releases still trust the emSign CA roots withdrawn after their keys were compromised.
In Claude Code the skills appear as /dex:explore, /dex:transform, and
/dex:maintain and trigger on matching intent. Update later with
/plugin marketplace update exmergo. Codex also gets a native plugin, with no MCP
server needed. Any other agent can be pointed at AGENTS.md.
Run Dex from your project directory, so it finds your .dex/config.yml and keeps
its cache next to your project. Dex needs an agent with a local shell, so it does
not run in claude.ai chat.
Tip Skip the first-run wait. The first command installs the engine, which takes tens of seconds on a cold
uvcache. Ask your agent to warm Dex once after installing, or run the command below in a CI or container build step. Add--connector snowflake(or any connector) to warm one before a project exists.
uv run --no-project --script skills/<skill>/scripts/run.py --warm
Writing SQL is one part of analytics engineering. Your agent also needs to:
Dex gives the agent a repeatable explore, transform, maintain loop, with guardrails enforced in the engine.
No existing database, no credentials, no cloud account, and no network once the package is installed.
pip install "exmergo-dex-core[duckdb]"
dex demo
dex explore map
dex demo writes a small e-commerce DuckDB database (dex_demo.duckdb, 7 tables,
29,512 rows) and a .dex/config.yml into the current directory, so every command
after it runs with no flags. It refuses rather than overwrite anything. The data
comes from a pinned seed, so what you see is what is written here.
explore map maps all 7 tables, infers 5 joins, flags 6 columns as personal data,
and reports 6 data-quality findings. Every command answers with one JSON envelope.
An excerpt, for one table:
{
"identifier": "dex_demo.main.order_items",
"row_count": 14000,
"grain": null,
"data_quality": [
"order_item_id is not unique: 13000 distinct over 14000 rows (1000 rows would have to be removed for it to be unique, so it is unique for 92.9% of rows); joins on it will fan out"
]
}
A first run that reports a clean bill of health teaches you nothing, so the demo ships with real defects. Dig into them:
dex explore profile order_items products
dex explore relationships --verify
dex explore query "select email from customers"
order_item_id is unique for only 92.9% of rows. Dex reports the duplicates and leaves the grain unknown rather than guessing a key.sku is 90% numeric, 10% 32-character hexadecimal (md5-shaped). Cast it to a number and you silently drop 10% of products.web_events.customer_id shares a name with the CRM's key, but verification finds 100% of its values have no match.customers.email into context. select count(distinct email) from customers runs, because a statistic is not a value.There is also a table an interrupted load left empty, two columns whose declared
type contradicts their content, and two designed PII false positives. See the
dex demo reference.
Note DuckDB is free and local, so nothing here asks you to confirm a spend. On a metered connector the same commands return an estimate first and run only once you agree to it.
flowchart LR
Agent[Coding agent] --> Skills[Dex skills]
Skills --> Engine[exmergo-dex-core engine]
Engine -->|SELECT-only SQL, cost-capped| Database[(Your database, data warehouse, or SQL endpoint)]
Engine -->|dbt builds, dev target only| Database
Engine -->|one sanitized JSON envelope| Agent
Engine -->|plans as diffs| Repo[Your repository: dbt project + semantic layer]
Engine <--> Cache[.dex/ cache and snapshot]
The skills connect your agent to the exmergo-dex-core engine, which holds the
logic and guardrails behind a small command contract.
Your dbt project and semantic-layer definitions live in your repository as
reviewable files. The .dex/ directory holds Dex's cache and snapshots.
Find the tables that matter, profile their columns, and verify joins before writing SQL. Answer ad-hoc questions through a query firewall that checks for personal data, read and query the semantic layer, and map relationships as a Mermaid ER diagram. Exploration is read-only and needs no dbt project. Skill · methodology · commands
Build and refactor dbt models from staging to marts, with tests, docs, and declared grain and population. Define semantic models and metrics over them, or work with a native semantic layer without a dbt project. Review each stored plan before applying it, then build and verify on a dev target. Skill · what Dex writes · commands
Compare database schemas and profiles, the dbt project, and the semantic layer
with the last snapshot. See which models and metrics a change affects and review
the proposed edits. maintain verify also checks a project as it stands, with no
baseline needed.
Skill · commands
Tip Give every agent in your repository the same procedure.
dex procedure --blockprints the procedure every Dex skill follows, ready to paste into yourCLAUDE.mdorAGENTS.md, so an agent follows it even before it loads a skill. Dex never writes the file;dex procedure --check CLAUDE.mdtells you when an upgrade has made your copy stale. Seedex procedure.
| Connector | Type | Self-hostable | Extra / --connector | Cost guardrail | Connection details |
|---|---|---|---|---|---|
Snowflake | Cloud warehouse | ❌ | snowflake | Warehouse-seconds, with credits | connections.toml, SNOWFLAKE_* env, or a dbt profile |
BigQuery | Cloud warehouse | ❌ | bigquery | Bytes scanned | Application Default Credentials |
Databricks | Lakehouse via SQL endpoint | ❌ | databricks | Warehouse-seconds, with DBUs | databricks auth login, DATABRICKS_* env, or a dbt profile |
Amazon Redshift | Cloud warehouse, Serverless-first | ❌ | redshift | Compute-seconds, with RPU-hours | The AWS credential chain or REDSHIFT_* env |
Postgres | Operational database | ✅ | postgres | Database-seconds | pg_service.conf, DATABASE_URL, PG* env, or a dbt profileAlso works with Supabase, Neon, and more managed Postgres platforms |
A Claude Code skill that makes Claude write prose with no em dashes, using sentence structures that avoid them in the first place. Useful for drafts, emails, reports, and posts that should not read as machine-written.
Reads text from scanned pages, photos and PDFs and returns it as structured Markdown or JSON, so you can pull tables, formulas and headers out of a document without retyping them. Covers many languages and works as input for AI tools.
Gives your AI assistant a memory that persists across sessions, so it remembers your preferences and earlier work in this repository instead of starting fresh. Search, forget, pause and resume memories with simple commands.
Gives AI agents a library of ready-made skills for scientific work such as metabolic flux analysis, protein experiment design, time series modeling, and analytical method validation, so research tasks need less hand-built code. It works with any agent that supports the open Agent Skills standard.
Gives Claude Code skills, agents, and commands for PostHog analytics, session replay, feature flags, error tracking, and LLM observability. Includes MCP server setup and project access checks.
Dex is an analytics engineering toolkit for Claude Code that explores your warehouse or DuckDB file, authors and maintains dbt projects and semantic models, and flags what to fix when the schema drifts. Built for analytics and data engineers. Install it with the command on its page. It includes explore, maintain, transform. Its skills do not fire on their own yet. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it