.md

The dcupl skill

The dcupl plugin installs one skill, dcupl: a SKILL.md plus reference files for querying, model authoring, workflows, scripts and cloud sync. Claude loads it when you work with *.dcupl.json, dcupl.lc.json, API or workflow templates, or ask a dcupl-shaped question. It encodes how dcupl actually works: the right entry point for each task, the command patterns that compose well, and the non-obvious traps that cause silent failures.

What it teaches

The skill covers six domains, each mapped to a CLI entry point.

Data querying & analysis

Create a daemon, ingest CSV/JSON/NDJSON, run fn facets / aggregate / groupBy and query execute; reuse one daemon across follow-up questions; sanity-check numeric results.

dcupl app

Model authoring & data binding

Define models, references, and composite keys; infer models from data with dcupl generate model --from; validate with dcupl validate.

*.dcupl.json · dcupl.lc.json

Workflow build/test/deploy

Author node-graph workflows that respect the runtime budgets (defaults: 10s total / 5s request / 500ms script), then validate → test → deploy.

*.workflow-v3.json

Scripts & scripted endpoints

Write custom operators, sort and endpoint scripts with the right per-mode parameters, register them as type: script resources, and declare scripted endpoints on a REST API template (api/*.api.json).

dcupl generate script · generate api

Cloud sync

3-way diff between local, server, and baseline; push/pull with conflict detection.

dcupl files

Project setup & scaffolding

Scaffold projects, generate artifacts, and serve locally with the right structure from the start.

dcupl init · generate · serve

Traps the skill avoids

Most dcupl mistakes are silent — the command succeeds, but the result is wrong or empty. The skill teaches the agent to recognize and route around these traps.

  • Watch out

    Mis-typed CSV columns

    dcupl infers numbers and dates from CSV text. dcupl generate model --from scans every row; --auto-generate-properties alone types columns from the first row and checks only number columns against the rest, so a column that starts with a date or a word keeps that type. Zero-padded codes like 00123 stay string, but a numeric code such as a month 01 to 12 you want as int is a judgement call no inference makes. The skill samples rows when inferring and declares explicit types where inference can't be trusted, before numeric aggregation in particular.

  • Watch out

    Typos that still return empty

    The CLI rejects a misspelled flag (UNKNOWN_OPTION, usually with a "Did you mean" hint, or PARSE_ERROR when the typo hides a required flag), model (MODEL_NOT_FOUND) or attribute in query execute, fn facets, fn aggregate and fn groupBy (ATTRIBUTE_NOT_FOUND, usually with a "Did you mean" hint). A wrong value, such as a different casing, still returns an empty result, and fn metadata --query and fn pivot do not check attribute names. The skill checks names and values against fn metadata and facets instead of trusting a guess.

  • Watch out

    Workspace / CLI version mismatches

    Subtle, hard-to-diagnose failures. The skill checks dcupl version and reconciles before debugging downstream.

  • Watch out

    Guessing field names

    Instead of inventing field names, the skill uses dcupl schemas get <Name> --example to see the real shape before authoring against it.