con un clic
write-tutorial
Create a Tutorial class with interactive steps and track registration
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Create a Tutorial class with interactive steps and track registration
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional 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 | write-tutorial |
| description | Create a Tutorial class with interactive steps and track registration |
| when-to-use | When user asks to create a tutorial, interactive guide, or learning material |
| effort | medium |
Help the user create an interactive tutorial that educates users about Datagrok platform features.
/write-tutorial [tutorial-name] [--package <package-name>] [--track <track-name>]
The package must depend on @datagrok-libraries/tutorials:
npm install @datagrok-libraries/tutorials
Create a TypeScript file (e.g., src/tutorials/custom-tutorial.ts) with a class extending Tutorial:
import {Tutorial} from '@datagrok-libraries/tutorials';
export class CustomTutorial extends Tutorial {
get name(): string { return 'Custom Tutorial'; }
get description(): string { return 'Teaches users about a feature'; }
protected async _run(): Promise<void> {
// Define steps using this.action() and helper methods
// Steps are event-based and can include interactive hints
}
}
Key points:
name and description getters._run method with a sequence of steps.action method or helper methods that call it internally.Add a registration function with metadata annotations:
import {CustomTutorial} from './tutorials/custom-tutorial';
//tags: tutorial
//meta.icon: images/custom-tutorial.png
//meta.name: Custom Tutorial
//meta.track: Test Track
//description: This tutorial illustrates a new feature
//output: object
export function registerTutorial() {
return new CustomTutorial();
}
| Annotation | Description |
|---|---|
tags | Must include tutorial |
meta.name | Display name of the tutorial |
output | Must be object (returns a Tutorial instance) |
| Annotation | Description |
|---|---|
meta.track | Track name this tutorial belongs to. If omitted, a new track is created for the package. If an existing track name is used, the tutorial is added to that track (even from another package). |
meta.icon | Path to icon relative to package root. Default icon used if absent. |
description | Displayed in the tutorial UI. Empty description if absent. |
To define a custom track that groups tutorials:
import {Track} from '@datagrok-libraries/tutorials';
//tags: track
//help-url: https://datagrok.ai/help
//output: object
//meta.name: Test Track
export function registerTrack() {
return new Track('Test Track', [], 'https://datagrok.ai/help');
}
Track registration annotations:
tags: track (required)meta.name (required): track display namehelp-url (required): link to documentationoutput: object (required)The Tutorials package provides default tracks (e.g., Exploratory Data Analysis, Data Access). Their visibility can be controlled at the user group level via package settings.
webpack
grok publish dev
_run implementation.package.ts with correct annotations.@datagrok-libraries/tutorials dependency is present in package.json.meta.track, tutorials get their own package-specific track.