AgentStack
SKILL verified Apache-2.0 Self-run

Interactive Buttons

skill-deeleeramone-pywry-interactive-buttons · by deeleeramone

A Claude skill from deeleeramone/PyWry.

No reviews yet
0 installs
9 views
0.0% view→install

Install

$ agentstack add skill-deeleeramone-pywry-interactive-buttons

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Interactive Buttons? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Interactive Buttons - MANDATORY PATTERN

> STOP. READ THIS ENTIRE FILE BEFORE CREATING ANY WIDGET.

The ONLY Correct Way to Create Buttons

Copy this EXACTLY. Do not deviate.

{
  "html": "0",
  "title": "Counter",
  "height": 400,
  "toolbars": [{
    "position": "top",
    "items": [
      {"type": "button", "label": "+1", "event": "counter:increment", "variant": "primary"},
      {"type": "button", "label": "-1", "event": "counter:decrement", "variant": "neutral"},
      {"type": "button", "label": "Reset", "event": "counter:reset", "variant": "danger"}
    ]
  }]
}

THAT'S IT. No callbacks needed. Buttons work automatically.

How It Works

The event name counter:increment is parsed as:

  • counter → the HTML element id to update
  • increment → the action to perform

When you click "+1", PyWry:

  1. Finds the element with id="counter"
  2. Parses its current text as a number
  3. Adds 1 to it
  4. Updates the display

Supported Actions

| Event Pattern | What It Does | |--------------|--------------| | myId:increment | Adds 1 to element's text | | myId:decrement | Subtracts 1 from element's text | | myId:reset | Sets element's text to 0 | | myId:toggle | Toggles between true/false |

More Examples

Status Toggle

create_widget(
    html='false',
    toolbars=[{
        "position": "top",
        "items": [
            {"type": "button", "label": "Toggle Status", "event": "status:toggle"}
        ]
    }]
)

Score Tracker

create_widget(
    html='''
        
            Home: 0
            Away: 0
        
    ''',
    toolbars=[{
        "position": "top",
        "items": [
            {"type": "button", "label": "Home +1", "event": "home:increment"},
            {"type": "button", "label": "Away +1", "event": "away:increment"},
            {"type": "button", "label": "Reset All", "event": "home:reset"},
        ]
    }]
)

Rules

  1. Element id must exist - The HTML must have an element with the matching id
  2. Event format is id:action - Colon separates the target from the action
  3. Actions are lowercase - increment, decrement, reset, toggle
  4. Initial value matters - For increment/decrement, start with a number like "0"

Common Mistakes

❌ Wrong: event: "increment" (no target id) ❌ Wrong: event: "counter-increment" (hyphen instead of colon) ❌ Wrong: HTML has id="Counter" but event is counter:increment (case mismatch)

✅ Correct: event: "counter:increment" with id="counter" in HTML

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.