Agent skill
create-cell-renderer
Create a custom grid cell renderer for Datagrok
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/create-cell-renderer
SKILL.md
Create Cell Renderer
Create a custom cell renderer for the Datagrok grid/table viewer.
Usage
/create-cell-renderer [cell-type] [package-path]
Instructions
When this skill is invoked, help the user create a custom cell renderer that extends DG.GridCellRenderer.
Step 1: Create the renderer class
Create a new TypeScript file in the package's src/ directory (e.g., src/renderers/my-renderer.ts).
The class must extend DG.GridCellRenderer and implement:
get name()- unique renderer nameget cellType()- the cell type string (e.g.,'piechart','barchart')render(g, x, y, w, h, gridCell, cellStyle)- main drawing method using CanvasRenderingContext2DrenderSettings(gridColumn)(optional) - returns an HTMLElement for renderer settings UI
export class MyRenderer extends DG.GridCellRenderer {
get name() { return 'My Renderer'; }
get cellType() { return 'mytype'; }
render(g: CanvasRenderingContext2D, x: number, y: number, w: number, h: number,
gridCell: DG.GridCell, cellStyle: DG.GridCellStyle): void {
// Draw using Canvas 2D API within the bounds (x, y, w, h)
}
renderSettings(gridColumn: DG.GridColumn): HTMLElement | null {
// Optional: return UI element for settings
return null;
}
}
Step 2: Register the renderer
Use the decorator approach (preferred for datagrok-tools >= 4.12.x):
@grok.decorators.cellRenderer({
cellType: 'mytype',
virtual: true,
})
export class MyRenderer extends DG.GridCellRenderer {
/* ... */
}
The virtual: true flag is used for summary/calculated columns.
Or use the function annotation approach in package.ts:
//name: myRenderer
//tags: cellRenderer
//meta.cellType: mytype
//meta.virtual: true
//output: grid_cell_renderer result
export function myRendererFunc() {
return new MyRenderer();
}
Step 3: Build and publish
The decorator approach auto-generates a package.g.ts file via FuncGeneratorPlugin during build. This file must be committed.
npm run build
grok publish
Key points
- The
cellTypestring links the renderer to summary columns of that type - The
rendermethod receives a Canvas 2D context; draw within the bounding box (x, y, w, h) - For real examples, see the PowerGrid package:
public/packages/PowerGrid/src/sparklines/ - Both decorator and function annotation approaches are equivalent; prefer decorators
Behavior
- Ask the user what type of cell visualization they want if not specified
- Create the renderer class file with the appropriate drawing logic
- Register it using the decorator approach (or function annotation if the user prefers)
- Ensure the package imports are correct (
import * as DG from 'datagrok-api/dg',import * as grok from 'datagrok-api/grok') - Remind the user to build and publish the package
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?