skills/motherduck-build-cfa-app/SKILL.md
Design a MotherDuck-backed customer-facing analytics app. Use when building embedded or product analytics for external users and the decision depends on per-customer isolation, backend routing, service-account boundaries, read scaling, or Hypertenancy-style patterns.
npx skillsauth add motherduckdb/agent-skills motherduck-build-cfa-appInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when the user is embedding analytics into a product for external users and needs a concrete serving architecture, not just a dashboard.
This is a use-case skill. It orchestrates motherduck-connect, motherduck-explore, motherduck-model-data, motherduck-query, and motherduck-load-data.
Always determine this first.
Do not jump straight to an architecture diagram if live data discovery is available.
If no server is active, ask for a representative schema excerpt or table list and keep assumptions explicit.
When this skill produces a native DuckDB (md:) connection, watermark it with custom_user_agent=agent-skills/2.2.0(harness-<harness>;llm-<llm>). If metadata is missing, fall back to harness-unknown and llm-unknown.
The output of this skill should be:
If the caller explicitly asks for structured JSON, return raw JSON only with no Markdown fences or prose before/after it. This is mainly for automated tests, regression checks, or downstream tooling that needs a stable machine-readable shape. Normal human-facing use of the skill can stay in prose unless JSON is explicitly requested.
Use this exact top-level shape when JSON is requested:
{
"summary": {},
"assumptions": [],
"implementation_plan": [],
"validation_plan": [],
"risks": []
}
references/CFA_IMPLEMENTATION_GUIDE.md -- preserved detailed implementation content that used to live in this skillreferences/CFA_ARCHITECTURE.md -- architecture comparison, isolation model, and connection-path detailartifacts/customer_routing_example.py -- MotherDuck-backed Python example showing per-customer routing with separate database namespacesartifacts/customer_routing_example.ts -- TypeScript companion artifact with the same routing contract and output shapeRun it with:
uv run --with duckdb python skills/motherduck-build-cfa-app/artifacts/customer_routing_example.py
Run the same artifact against temporary MotherDuck databases:
MOTHERDUCK_ARTIFACT_USE_MOTHERDUCK=1 \
uv run --with duckdb python skills/motherduck-build-cfa-app/artifacts/customer_routing_example.py
Validate the TypeScript companion artifact:
uv run scripts/test_typescript_artifacts.py
motherduck-connect -- choose the correct PG endpoint or native DuckDB pathmotherduck-explore -- inspect the live database and schema before choosing an architecturemotherduck-model-data -- design analytics-ready per-customer tablesmotherduck-query -- validate serving queries and latency-sensitive aggregationsmotherduck-load-data -- build ingestion paths for customer-facing data refreshdevelopment
Connect to MotherDuck from any application. Use when setting up database connectivity via the Postgres endpoint (recommended), pg_duckdb, native DuckDB API, or JDBC. Covers connection strings, authentication, SSL, and environment variable configuration.
development
Connect to MotherDuck from any application. Use when setting up database connectivity via the Postgres endpoint (recommended), pg_duckdb, native DuckDB API, or JDBC. Covers connection strings, authentication, SSL, and environment variable configuration.
development
Connect to MotherDuck from any application. Use when setting up database connectivity via the Postgres endpoint (recommended), pg_duckdb, native DuckDB API, or JDBC. Covers connection strings, authentication, SSL, and environment variable configuration.
data-ai
Create and manage MotherDuck data shares for zero-copy data distribution. Use when sharing databases with team members, other organizations, or making data publicly available.