Skip to content
Back to skills

Write Demo Script

ASecurity

Create a DemoScript with steps and registration for the Datagrok demo application

  • 74 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 12, 2026
documentationtypescriptgoshell

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 12, 2026

npx -y skills add datagrok-ai/public --skill write-demo-script --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Write Demo Script?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Write Demo Script
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/datagrok-ai-write-demo-script/badge)](https://www.skillsdirectory.com/skills/datagrok-ai-write-demo-script)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: write-demo-script
description: Create a DemoScript with steps and registration for the Datagrok demo application
when-to-use: When user asks to create a demo, demo script, walkthrough, or guided demonstration
effort: medium
---

# Write Demo Script

Help the user create a demo script that demonstrates step-by-step functionality in the Datagrok demo application.

## Usage
```
/write-demo-script [script-name] [--package <package-name>]
```

## Instructions

### 1. Install the tutorials library

The package must depend on `@datagrok-libraries/tutorials`:

```shell
npm install @datagrok-libraries/tutorials
```

### 2. Create the DemoScript class

Create a TypeScript file (e.g., `src/demo-app/demo-script.ts`) with a function that initializes and runs the demo:

```typescript
import {DemoScript} from '@datagrok-libraries/tutorials';

export function demo() {
  const demoScript = new DemoScript(
    'Script Name',        // name (required)
    'Script description', // description (required)
    true,                 // isAutomatic: true = auto-advance, false = manual
    {
      autoStartFirstStep: true,  // optional: auto-start first step in manual mode
      path: 'Category/Demo'      // optional: breadcrumb path in the view
    }
  );

  demoScript
    .step('Step 1', async () => {
      grok.shell.addTableView(grok.data.demo.demog());
    }, {description: 'Opens the demographics dataset.', delay: 2000})
    .step('Step 2', async () => {
      grok.shell.addTableView(grok.data.testData('biosensor'));
    }, {description: 'Opens the biosensor dataset.', delay: 2000})
    .step('Final step', async () => console.log('Finished'));

  return demoScript.start();
}
```

#### Step parameters

Each `.step()` call takes:
- `name` (string, required): step display name
- `func` (async function, required): the action to perform
- Options object (optional):
  - `description` (string): text shown to the user during this step
  - `delay` (number): milliseconds to wait before advancing (for automatic scripts)

### 3. Register the demo script in package.ts

Add a function with the required metadata annotations to `package.ts`:

```typescript
import {demo} from './demo-app/demo-script';

//name: Demo script
//description: Illustrates the work of the demo script
//meta.demoPath: Category | Subcategory | Script Name
//meta.isDemoScript: True
export function demoScript() {
  return new demo();
}
```

#### Required annotations

| Annotation         | Description                                                  |
|--------------------|--------------------------------------------------------------|
| `meta.demoPath`    | Path in the demo app, separated by ` \| `. Without this, the script will NOT appear in the demo application. |
| `meta.isDemoScript`| Must be `True`. Without this, the script won't render as a demo script with a dedicated view. |

#### Optional annotations

| Annotation    | Description                                          |
|---------------|------------------------------------------------------|
| `description` | Tooltip text shown in the demo application UI        |

### 4. Build and publish

```shell
webpack
grok publish dev
```

## Behavior

- Ask the user for the demo script name, description, and which package it belongs to.
- Ask what steps the demo should include and whether it should be automatic or manual.
- Generate the DemoScript file with properly structured steps.
- Add the registration function to `package.ts` with the correct `meta.demoPath` and `meta.isDemoScript` annotations.
- Use the pipe separator ` | ` in `meta.demoPath` (e.g., `Viewers | Charts | My Demo`).
- Ensure the `@datagrok-libraries/tutorials` dependency is present in `package.json`.
- Follow project coding conventions: no excessive comments, no curly brackets for one-line if/for, catch/else if on new lines.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.