بنقرة واحدة
create-script-handler
Create a custom script handler for an unsupported scripting language
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Create a custom script handler for an unsupported scripting language
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Use whenever you need the Datagrok browser to actually execute JavaScript — adding viewers, filtering, modifying the view, or returning a result widget to the chat. Open this skill before calling the datagrok_exec tool.
Filter rows of a Datagrok DataFrame inside a datagrok-exec block through the Filters panel — by range, equals/contains/in-set, multi-value, boolean, free-text row expressions, or substructure (SMILES / SMARTS / molblock). Also covers clearing, inverting, the show-only-filtered vs destructive-drop split, and the filter event lifecycle (onRowsFiltering / onFilterChanged / onRowsFiltered). Use whenever the user says "filter", "show only", "hide rows where", "narrow to subset", "find rows that", "contains", "substructure search", "categorical filter", "range filter", "invert", "clear the filter", "clear filters", "drop rows", or asks for the filtered subset as a new table. Does NOT cover selection (separate skill) or generic DataFrame cloning (datagrok-df-and-columns).
Add a calculated, formula-based column to a dataframe inside a datagrok-exec block. Use whenever the user asks to compute, derive, add, or create a new column from existing columns — LipE, ratios, log/round, heavy atom count, any expression in the Datagrok formula DSL. Replaces hand-written addNewFloat/addNewInt + for-loop with a single formula-attached column that recomputes when source columns change.
Find, describe, add, remove, rename, clone, or set metadata on columns of a Datagrok DataFrame inside a datagrok-exec block. Use whenever the user asks to locate "the X column", summarize a column, add a typed/empty/values-filled/virtual column, set semantic type / units / format / friendly name, apply linear or categorical or conditional color coding, drop or rename columns, or copy a DataFrame. Covers everything in DataFrame.columns and Column.meta — but not row filtering/selection (datagrok-filtering, datagrok-selection) and not formula-only columns (datagrok-calc-column).
Sort, hide, show, reorder, resize, pin, format, and color-code columns in a Datagrok TableView grid from a datagrok-exec block. Use whenever the user asks to sort by a column (any direction), multi-sort, hide / show / reorder / pin / resize columns, freeze the first N columns, change number-format display, color-code cells (defaults and grid-only tint here; full per-type reference in datagrok-df-and-columns), set row height, or reset the grid back to defaults. Distinct from datagrok-df-and-columns (which owns column-level data metadata like semType, units, friendlyName, and is also where canonical color-coding lives) and from datagrok-viewers (which owns scatter plot / histogram / etc.). Does NOT cover filtering (`datagrok-filtering`), selection (`datagrok-selection`), custom cell renderer authoring (`create-cell-renderer`), saving / restoring layouts, or grid event handlers.
Add a viewer, configure a viewer, change viewer options, find viewer, close viewer, view a scatter plot, bar chart, histogram, line chart, box plot, pie chart, heat map, correlation plot, 3D scatter, trellis, density plot, statistics, on a Datagrok TableView inside a datagrok-exec block. Use whenever the user asks to plot, chart, visualize, show a graph, draw a distribution, color by a column, swap a viewer's axis, toggle a legend / regression line / log scale, replace one viewer with another, close every chart, reset the view to just the grid, or find an existing viewer by type. Plugin viewers like "Chem space", "sequence space", "activity cliffs" are NOT viewer types — they're registered functions — route those to `grok.functions.call`. Does NOT cover filtering (separate skill `datagrok-filtering`), selection (`datagrok-selection`), grid cell rendering (`datagrok-grid-customization`), layout save/restore, or custom-viewer authoring.
| name | create-script-handler |
| description | Create a custom script handler for an unsupported scripting language |
| when-to-use | When user asks to add support for a new scripting language or create a script handler |
| effort | medium |
Help the user register a custom script handler so Datagrok can run scripts in a language not natively supported.
/create-script-handler [language-name] [--package <package-name>]
Create a TypeScript function that accepts a DG.FuncCall and executes the script, setting output parameters on completion:
export async function myLanguageHandler(call: DG.FuncCall): Promise<void> {
// Read input parameters from call.inputs
// Execute the script (e.g., via WebAssembly or a Docker container)
// Set output parameters on call.outputs
}
The implementation can use any execution strategy: WebAssembly, a Docker container, a remote API, etc.
Place these multi-line comments above the function declaration:
//tags: scriptHandler
//meta.scriptHandler.language: clojure
//meta.scriptHandler.extensions: clj,cljs,cljr
//meta.scriptHandler.commentStart: ;
//input: funccall scriptCall
export async function clojureScriptHandler(call: DG.FuncCall): Promise<void> {
// implement handler
}
| Annotation | Description |
|---|---|
tags: scriptHandler | Marks the function as a script handler for registration |
meta.scriptHandler.language | Language name (shown in UI when creating scripts) |
meta.scriptHandler.extensions | Comma-separated file extensions (e.g., py, js, clj,cljs,cljr) |
input: funccall scriptCall | The handler must accept exactly one input of type funccall |
| Annotation | Description |
|---|---|
meta.scriptHandler.templateScript | Template code added to newly created scripts in this language |
meta.scriptHandler.codeEditorMode | CodeMirror editor mode for syntax highlighting (available modes) |
meta.icon | Path to icon inside package files, used in UI for all scripts of this language |
meta.scriptHandler.vectorizationFunction | Function in form <namespace>:<function name> for vectorizing DG.Script. Accepts DG.Script, returns string with vectorized code. |
meta.scriptHandler.commentStart | Comment character(s) for the language (e.g., ; for Clojure, # for Python) |
Build and publish the package:
webpack
grok publish dev
After publishing, the language appears in the script creation UI. The platform recognizes scripts with a matching language annotation and routes them to this handler.
import * as DG from 'datagrok-api/dg';
//tags: scriptHandler
//meta.scriptHandler.language: clojure
//meta.scriptHandler.extensions: clj,cljs,cljr
//meta.scriptHandler.commentStart: ;
//meta.scriptHandler.codeEditorMode: clojure
//meta.scriptHandler.templateScript: (println "Hello, World!")
//meta.icon: images/clojure-icon.png
//input: funccall scriptCall
export async function clojureScriptHandler(call: DG.FuncCall): Promise<void> {
const script = call.inputs['scriptCall'];
// Execute the Clojure code
// Set outputs: call.setParamValue('result', value);
}
/create-docker-container skill.funccall input parameter.