deeleeramone/pywry/component-reference

Claude Code and agent skill by deeleeramone/pywry

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Install

npx vskill@latest install deeleeramone/pywry/component-reference

SKILL.md

PyWry Component Reference - MANDATORY SYNTAX

STOP. THIS IS THE AUTHORITATIVE REFERENCE FOR ALL COMPONENTS.
YOU MUST USE THE EXACT EVENT SIGNATURES DOCUMENTED HERE.
THERE ARE NO EXCEPTIONS. NO WORKAROUNDS. NO DEVIATIONS.

CRITICAL: System Events for Widget Updates

These are the ONLY events that work for updating widgets. Use send_event tool with these event types:

AG Grid Data Updates
Event TypePayloadDescription
grid:update-data{"data": [...rows...], "strategy": "set"}Replace all rows
grid:update-data{"data": [...rows...], "strategy": "append"}Append rows
grid:update-data{"data": [...rows...], "strategy": "update"}Update existing rows
grid:update-columns{"columnDefs": [...]}Update column definitions
grid:update-cell{"rowId": "row-1", "colId": "price", "value": 99.50}Update single cell
AG Grid State Persistence
Event TypePayloadDescription
grid:request-state{}Request current grid state
grid:request-state{"gridId": "my-grid"}Request specific grid's state
grid:restore-state{"state": {...savedState...}}Restore saved grid state
grid:reset-state{"hard": false}Soft reset (keeps column order)
grid:reset-state{"hard": true}Hard reset (full reset)

Response Event: grid:state-response with {"gridId": "...", "state": {...}}

State Object Contents:

  • Column state (width, order, visibility, pinned, sort)
  • Filter state (active filters per column)
  • Sort state (sorted columns and direction)
Plotly Chart Updates
Event TypePayloadDescription
plotly:update-figure{"data": [...], "layout": {...}}Full figure update
plotly:update-layout{"layout": {...}}Layout only update
plotly:reset-zoom{}Reset chart zoom to original
Plotly State Persistence
Event TypePayloadDescription
plotly:request-state{}Request current chart state
plotly:request-state{"chartId": "my-chart"}Request specific chart's state

Response Event: plotly:state-response with {"chartId": "...", "data": [...], "layout": {...}}

Plotly Data Export
Event TypePayloadDescription
plotly:export-data{}Export chart data
plotly:export-data{"chartId": "my-chart"}Export specific chart's data

Response Event: plotly:export-response with {"data": [{"traceIndex": 0, "name": "...", "x": [...], "y": [...], "type": "..."}]}

DOM Content Updates
Event TypePayloadDescription
pywry:set-content{"id": "elementId", "text": "..."}Set text content
pywry:set-content{"id": "elementId", "html": "..."}Set HTML content
pywry:set-style{"id": "elementId", "styles": {"color": "red"}}Update CSS styles
Theme Updates
Event TypePayloadDescription
pywry:update-theme{"theme": "dark"}Switch theme (dark/light/system)
pywry:update-theme{"theme": "ag-theme-alpine-dark"}AG Grid theme
pywry:update-theme{"theme": "plotly_dark"}Plotly template
Toast Notifications

Use show_toast tool instead, or:

Event TypePayloadDescription
pywry:alert{"message": "...", "type": "info"}info, success, warning, error
Toolbar Component State (Get/Set Values)
Event TypePayloadDescription
toolbar:set-value{"componentId": "my-select", "value": "option2"}Set single component value
toolbar:set-values{"values": {"select-1": "A", "toggle-1": true}}Set multiple values at once
toolbar:request-state{"componentId": "my-input"}Request single component value
toolbar:request-state{"toolbarId": "top-toolbar"}Request all values in toolbar
toolbar:request-state{}Request all toolbar values

Response Event: toolbar:state-response with {"componentId": "...", "value": ...} or {"values": {...}}

Supported Components for set-value:

  • select: {"componentId": "id", "value": "option-value"}
  • multiselect: {"componentId": "id", "value": ["a", "b"]}
  • toggle: {"componentId": "id", "value": true}
  • checkbox: {"componentId": "id", "value": true}
  • text/textarea/search: {"componentId": "id", "value": "text"}
  • number: {"componentId": "id", "value": 42}
  • slider: {"componentId": "id", "value": 50}
  • range: {"componentId": "id", "value": {"start": 10, "end": 90}}
  • tabs/radio: {"componentId": "id", "value": "tab-value"}

Note: secret inputs cannot be set via toolbar:set-value for security.


Table of Contents

  1. Button
  2. Select
  3. MultiSelect
  4. Toggle
  5. Checkbox
  6. RadioGroup
  7. TabGroup
  8. TextInput
  9. TextArea
  10. SearchInput
  11. NumberInput
  12. DateInput
  13. SliderInput
  14. RangeInput
  15. SecretInput
  16. Div
  17. Marquee
  18. TickerItem

Button

A clickable button that emits an event.

Properties
PropertyTypeRequiredDefaultDescription
type"button"✅ YES-Component type identifier
labelstring✅ YES-Button text
eventstring✅ YES-Event name (format: namespace:action)
variantstring❌"primary"Style: primary, secondary, neutral, ghost, outline, danger, warning, icon
sizestring❌nullSize: xs, sm, lg, xl
dataobject❌{}Extra data payload sent with event
disabledboolean❌falseDisable the button
descriptionstring❌""Tooltip on hover
Event Emitted
javascript
{
componentId: "button-abc123", // Auto-generated component ID
...data // Your custom data object spread in
}
Auto-Wired Actions

When event follows elementId:action pattern, these actions work automatically:

Event PatternBehavior
myId:incrementFinds id="myId", parses as number, adds 1
myId:decrementFinds id="myId", parses as number, subtracts 1
myId:resetFinds id="myId", sets to 0
myId:toggleFinds id="myId", toggles true/false
Example
json
{
"type": "button",
"label": "Submit",
"event": "form:submit",
"variant": "primary",
"data": {"formId": "contact"}
}

Select

A single-select dropdown.

Properties
PropertyTypeRequiredDefaultDescription
type"select"✅ YES-Component type identifier
eventstring✅ YES-Event name (format: namespace:action)
optionsarray✅ YES-Array of {label, value} objects
selectedstring❌""Initially selected value
labelstring❌""Label text
searchableboolean❌falseEnable search filtering
disabledboolean❌falseDisable the dropdown
Event Emitted
javascript
{
value: "selected_value", // The selected option's value
componentId: "select-abc123"
}
Example
json
{
"type": "select",
"label": "Theme:",
"event": "theme:change",
"options": [
{"label": "Dark", "value": "dark"},
{"label": "Light", "value": "light"},
{"label": "System", "value": "system"}
],
"selected": "dark"
}

MultiSelect

A multi-select dropdown with checkboxes.

Properties
PropertyTypeRequiredDefaultDescription
type"multiselect"✅ YES-Component type identifier
eventstring✅ YES-Event name
optionsarray✅ YES-Array of {label, value} objects
selectedarray❌[]Initially selected values
labelstring❌""Label text
disabledboolean❌falseDisable the dropdown
Event Emitted
javascript
{
values: ["value1", "value2"], // Array of selected values
componentId: "multiselect-abc123"
}
Example
json
{
"type": "multiselect",
"label": "Columns:",
"event": "columns:filter",
"options": [
{"label": "Name", "value": "name"},
{"label": "Age", "value": "age"},
{"label": "City", "value": "city"}
],
"selected": ["name", "age"]
}

Toggle

A toggle switch for boolean values.

Properties
PropertyTypeRequiredDefaultDescription
type"toggle"✅ YES-Component type identifier
eventstring✅ YES-Event name
valueboolean❌falseInitial state
labelstring❌""Label text
disabledboolean❌falseDisable the toggle
Event Emitted
javascript
{
value: true, // Boolean: true or false
componentId: "toggle-abc123"
}
Example
json
{
"type": "toggle",
"label": "Dark Mode:",
"event": "theme:toggle",
"value": true
}

Checkbox

A single checkbox for boolean values.

Properties
PropertyTypeRequiredDefaultDescription
type"checkbox"✅ YES-Component type identifier
eventstring✅ YES-Event name
valueboolean❌falseInitial checked state
labelstring✅ YES-Label text (displayed next to checkbox)
disabledboolean❌falseDisable the checkbox
Event Emitted
javascript
{
value: true, // Boolean: true or false
componentId: "checkbox-abc123"
}
Example
json
{
"type": "checkbox",
"label": "Enable notifications",
"event": "settings:notify",
"value": true
}

RadioGroup

A group of radio buttons for single selection.

Properties
PropertyTypeRequiredDefaultDescription
type"radio"✅ YES-Component type identifier
eventstring✅ YES-Event name
optionsarray✅ YES-Array of {label, value} objects
selectedstring❌""Initially selected value
labelstring❌""Group label
directionstring❌"horizontal"Layout: horizontal or vertical
disabledboolean❌falseDisable all radios
Event Emitted
javascript
{
value: "selected_value", // The selected option's value
componentId: "radio-abc123"
}
Example
json
{
"type": "radio",
"label": "View:",
"event": "view:change",
"options": [
{"label": "List", "value": "list"},
{"label": "Grid", "value": "grid"},
{"label": "Card", "value": "card"}
],
"selected": "list",
"direction": "horizontal"
}

TabGroup

Tab-style buttons for single selection (visually different from RadioGroup).

Properties

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
89
Repository forks
7
7-day trend score
22

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/deeleeramone/pywry/component-reference/badge)](https://verified-skill.com/skills/deeleeramone/pywry/component-reference)

Something wrong with this skill or its page? Tell us.