From bino-report
Map raw source columns onto IBCS scenario slots (ac/pp/fc/pl), derive variances (d_/dr_), choose the grain, and write disciplined typed DataSet SQL for a bino report. Use when the bino-data autopilot phase models a source into datasets, or when co-authoring a DataSet. Owns the honest "the data can't satisfy this" — populate unmet[] rather than fabricate a column.
How this skill is triggered — by the user, by Claude, or both
Slash command
/bino:bino-data-modelingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn raw, probed source columns into the IBCS data model the report needs — and be honest when the
Turn raw, probed source columns into the IBCS data model the report needs — and be honest when the
data can't answer the brief. Apply bino-ibcs for the scenario/variance meanings.
From the brief's scenario_setup, decide which raw column carries each scenario slot:
ac1 (a second actuals measure → ac2, …).pp1 (alias py).pl1 (alias bu).fc1.Name the DataSet's output measure columns with these codes so bino applies IBCS notation
automatically. If a raw column's scenario is ambiguous, that is an open_question for the
human — don't pick silently.
Only the variances the primary message needs (d_ absolute, dr_ relative), with the favorable
direction the brief specified:
{type}{base}_{delta}_{direction} e.g. dac1_pl1_pos drac1_pp1_neg
Compute them in SQL or let the component derive them — follow the schema (describe_kind) for how the
chosen component expects variances.
get_columns("$<source>") to get the real raw column names before writing any SQL.validate_draft(yaml) before writing the manifest; fix every diagnostic.validate_project(execute_queries:true) pass
for the run (this executes the SQL — see the safety rules in bino-orchestration). Read its
data-validation warnings: a null scenario fill or a missing column is a blocker, not a nuance.If the brief asks for a measure or comparison the source cannot provide (no plan column, no prior year, wrong grain), do not invent it. Record it:
{ "question_or_measure": "plan vs actual by month", "reason": "source has no plan/budget column" }
in the DATA PLAN's unmet[], and stop rather than guess. An aspirational brief that the data can't
satisfy is a human decision (reduce scope / find more data), never a fabricated column.
Pick the grain from the brief's granularity. Aggregate to it in SQL; don't emit a finer grain than
the report uses (it inflates rows and risks the row-count limit).
Cite, don't copy:
bn-template-engine/doc/data-model.md,src/utils/ibcsRuleSet.ts.
npx claudepluginhub bino-bi/bino-cli --plugin binoProvides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.