skill_namelisted
Install: claude install-skill jordanl17/visill
# <<SKILL_TITLE>>
A visill-powered hello-world skill. Given a `name`, the widget renders "Hello, <name>!" inline and confirms the visill toolchain is wired end to end - SDK runtime, build assembly, and render-time payload validation.
Use this skill as a starting point for your own visill widget. Replace the schema, the mustache slot in `widget-src/widget.html`, and the rendering logic in `widget-src/widget.ts` with the shape your skill needs. The data flow below stays the same.
## Schema
The render-time payload must satisfy this JSON Schema. `render.py` validates the incoming JSON against it before chevron-rendering the widget bundle:
{{SCHEMA}}
The `{{SCHEMA}}` slot above is replaced at skill build time with the inlined schema, so the published `SKILL.md` ships a single self-contained document.
## Data flow
Four layers move data from skill invocation to rendered DOM. Every visill skill follows this flow; only the field names and widget rendering change.
1. **Schema input.** Claude builds a JSON payload matching `assets/schema.json`. For this skill, that means `{"name": "world"}`.
2. **render.py (Python, canonical).** Reads stdin, validates against the schema, derives `<key>_json` mustache variants (JSON-encoded strings) for every top-level key, then chevron-renders `widget-src/widget.html`.
3. **Data island.** The rendered bundle carries an inline `<script id="root-data" type="application/json">` whose body is `{"name": <name_json>}`. JSON encoding survives HTML esc