Cre8 app factory
The cre8-data plugin

The UI is half the job. cre8-data is the other half.

A dashboard is only as good as the query behind it. cre8-data gives the same agent the analyst half of the work — writing SQL that holds up, profiling a dataset before trusting it, and validating a result before it reaches a stakeholder.

Skills

Nine skills, query through presentation

sql-queries

Writing and optimizing SQL, including where dialects actually diverge rather than where they are merely spelled differently.

data-exploration

Profiling, quality assessment, and pattern discovery — what the data is, before anything is concluded from it.

statistical-analysis

Descriptive statistics, trend analysis, outlier detection, and hypothesis testing that names its assumptions.

data-visualization

Choosing the chart the data calls for, and the code to render it — form following the question being asked.

interactive-dashboard-builder

Dashboards with real filters and interaction, built to be handed to someone else rather than screenshotted.

data-validation

Pre-delivery QA and sanity checks — the pass that catches the join that silently doubled your row count.

api-data-contracts

Typed contracts generated from an OpenAPI spec so a UI agent can build against the shape of your data without ever seeing the data.

data-context-extractor

Packages your domain’s quirks — the table that lies, the column that means something else — into a reusable skill.

auth-gated-data-sources

Getting an agent through the front door of a credentialed source with Clerk machine auth — M2M tokens, API keys, or OAuth, chosen by whose data is being read.

Connected sources

Four MCP servers, configured on install

Snowflake

Query the warehouse directly with your own role and warehouse — schemas, metadata, and live results without copy-paste.

Amplitude

Product analytics alongside warehouse data, so behavioural questions and revenue questions get answered in one place.

Atlassian

Jira context for the analysis — what shipped, when, and what it was supposed to change.

Clerk

Clerk's own MCP server, for writing machine-auth code correctly against current SDK patterns.

One thing we’re explicit about. Adding the Clerk connector does not authenticate your agent to anything — it serves SDK snippets, and both of its tools are read-only. Reaching a gated source is separate code you write, using Clerk machine auth in the service being called. The auth-gated-data-sources skill leads with that distinction, because believing otherwise costs you an afternoon debugging a 401 that was never going to resolve.

Snowflake, Amplitude, and Atlassian each run their own OAuth. If one of those returns 401, the fix is in that connector’s own login — no amount of Clerk configuration changes it.

Usage

Getting an agent through the front door

Which strategy you want is decided by whose data is being read. An M2M token carries the machine’s identity and no user’s, so a user-scoped endpoint can’t scope the query from it.

mint — the calling service
import { createClerkClient } from '@clerk/backend'

const clerk = createClerkClient({ secretKey: process.env.CLERK_SECRET_KEY })

const m2mToken = await clerk.m2m.createToken({
  machineSecretKey: process.env.CLERK_MACHINE_SECRET_KEY,
  secondsUntilExpiration: 300,   // defaults to null — never expires
  minRemainingTtlSeconds: 60,   // reuse; opaque tokens only
})
send — bearer on the request
await fetch(dataSourceUrl, {
  headers: { Authorization: `Bearer ${m2mToken.secret}` },
})
verify — the receiving service
const verified = await clerkClient.m2m.verify({ token })

Set an expiry on every agent token — secondsUntilExpiration defaults to null, which means it never expires. Prefer opaque tokens when revocation matters: a revoked JWT stays valid until it expires.

See it run

Question to dashboard

Claude Code · analysis
Recording slot

A capture of an exploration session: profile, query, validate, then present.

From a question to a validated queryProfiling the dataset, writing the query, and running the validation pass before any result is presented.
Claude Code · dashboard
Recording slot

A capture of the dashboard builder producing a filterable surface from query results.

An interactive dashboard, builtResults composed into a dashboard with real filters, using the design system’s components.
Install

Nine skills, four sources

Claude Code
claude plugin install cre8-data@tmorrow_ai
Codex CLI
codex plugin add cre8-data@tmorrow_ai
Gemini CLI
// Clone the marketplace, install the extension root
gemini extensions install ./tmorrow_ai/cre8-data