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 appModel 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.jsonWorkflow 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.jsonScripts & 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 apiCloud sync
3-way diff between local, server, and baseline; push/pull with conflict detection.
dcupl filesProject setup & scaffolding
Scaffold projects, generate artifacts, and serve locally with the right structure from the start.
dcupl init · generate · serveTraps 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.