Backfill Event Data
rubyevents/rubyevents
Add or backfill RubyEvents conference data for an event from its website — involvements (organizers/MCs), sponsors, venue + hotels, schedule, talk running order, and speaker GitHub/Twitter handles.
Build UIs with HLive, the server-side virtual-DOM framework for Go (github.com/SamHennessy/hlive).
$ npx skills add SamHennessy/hlive --skill hlive-core -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install SamHennessy/hlive hlive-core --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/SamHennessy/hlive.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugin/skills/hlive-core .claude/skills/hlive-core && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "hlive-core" agent skill from https://github.com/SamHennessy/hlive/tree/main/plugin/skills/hlive-core into .claude/skills/hlive-core/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hlive-core", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/SamHennessy/hlive/tree/main/plugin/skills/hlive-coreType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add SamHennessy/hlive --skill hlive-core -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install SamHennessy/hlive hlive-core --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SamHennessy/hlive.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugin/skills/hlive-core .agents/skills/hlive-core && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "hlive-core" agent skill from https://github.com/SamHennessy/hlive/tree/main/plugin/skills/hlive-core into .agents/skills/hlive-core/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hlive-core", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add SamHennessy/hlive --skill hlive-core -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install SamHennessy/hlive hlive-core --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SamHennessy/hlive.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugin/skills/hlive-core .cursor/skills/hlive-core && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "hlive-core" agent skill from https://github.com/SamHennessy/hlive/tree/main/plugin/skills/hlive-core into .cursor/skills/hlive-core/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hlive-core", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/SamHennessy/hlive.git --path plugin/skills/hlive-core--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add SamHennessy/hlive --skill hlive-core -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install SamHennessy/hlive hlive-core --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SamHennessy/hlive.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugin/skills/hlive-core .gemini/skills/hlive-core && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "hlive-core" agent skill from https://github.com/SamHennessy/hlive/tree/main/plugin/skills/hlive-core into .gemini/skills/hlive-core/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hlive-core", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install SamHennessy/hlive hlive-coreInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add SamHennessy/hlive --skill hlive-core -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/SamHennessy/hlive.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugin/skills/hlive-core .github/skills/hlive-core && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "hlive-core" agent skill from https://github.com/SamHennessy/hlive/tree/main/plugin/skills/hlive-core into .github/skills/hlive-core/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hlive-core", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add SamHennessy/hlive --skill hlive-core -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install SamHennessy/hlive hlive-core --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SamHennessy/hlive.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugin/skills/hlive-core .opencode/skills/hlive-core && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "hlive-core" agent skill from https://github.com/SamHennessy/hlive/tree/main/plugin/skills/hlive-core into .opencode/skills/hlive-core/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hlive-core", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
hlive-coreBuild UIs with HLive, the server-side virtual-DOM framework for Go (github.com/SamHennessy/hlive).
Hlive Core is an agent skill from SamHennessy/hlive. Build UIs with HLive, the server-side virtual-DOM framework for Go (github.com/SamHennessy/hlive). Use when working with HLive code — the l "github.com/SamHennessy/hlive" import, builders like l.T / l.C / l.CM, NewPage / NewPageServer, On(...) event bindings, l.Box reactive values, or questions about HLive components, rendering, the SSR-vs-WebSocket lifecycle, and tree-diff gotchas.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs, covering Realtime and WebSockets and Backend development. It works with GitHub. The repository describes itself as: HLive is a server-side WebSocket based dynamic template-less view layer for Go. The licence is MIT.
Read from SKILL.md and the folder at commit bc5f920. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are go).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Hlive Core loads about 2.2k tokens when it runs. Until then it costs about 100 tokens; SKILL.md has 869 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from SamHennessy/hlive at commit bc5f920, republished under its MIT licence (© SamHennessy). 869 words, ~2,242 tokens.
.claude/skills/hlive-core/SKILL.md (or your agent's skills folder).HLive is a server-side virtual-DOM framework for Go — think Phoenix LiveView for Go. You build the UI as a tree of Go values; HLive renders the initial HTML, then keeps a WebSocket open and pushes DOM diffs whenever your state changes. All logic (DB, business rules, API calls) stays in Go — you write no JavaScript.
The conventional import alias is l:
import l "github.com/SamHennessy/hlive"For everyday page markup, prefer the hhtml builders (Div(...),
Button(...), Class("...")) — they're typed and autocompleting. See the
hlive-hhtml skill. The functions below are the underlying primitives that
hhtml wraps; use them directly for dynamic tag names, or when you haven't
imported hhtml.
| Func | Returns | Use for |
|---|---|---|
l.T(name, ...elements) | *Tag | A static HTML tag (no events). e.g. l.T("div", ...). Void tags like hr/img have no children. |
l.C(name, ...elements) | *Component | An event-aware tag — anything the user interacts with (button, input). |
l.W(tag, ...elements) | *Component | Wrap an existing *Tag as a Component to attach events. |
l.CM(name, ...elements) | *ComponentMountable | A Component with lifecycle hooks (Mount/Unmount). Use when the component needs to fetch data when it appears. |
l.G(...nodes) | *NodeGroup | Group sibling nodes without a wrapper element. |
l.E(...elements) | *ElementGroup | Group a mix of nodes + attributes + bindings. |
With hhtml you rarely choose T vs C by hand — a builder like Button(...)
becomes a Component automatically when it contains an event binding. With the raw
primitives, pick T until the element needs to respond to a browser event, then
C; reach for CM only when you need Mount/Unmount.
There are exactly two event-binding constructors: l.On and l.OnOnce.
There are no per-event helpers like OnClick/OnKeyUp — pass the DOM event name
as a string.
Button(
l.On("click", func(ctx context.Context, e l.Event) {
// handlers ARE where you fetch from a DB / API — they run on the server
}),
"Save",
)
Input(
Type("text"),
l.On("keyup", func(ctx context.Context, e l.Event) {
message = e.Value
}),
)(Button/Input/Type are hhtml builders; the binding makes them Components
automatically. The equivalent with raw primitives is l.C("button", l.On(...)).)
l.OnOnce("focus", ...) binds a handler that fires once then removes itself.
The l.Event struct carries (only the fields relevant to the event type are set):
Value string / Values []string — input value(s)Selected bool — checkbox/radio checked, or select option selectedKey, CharCode, KeyCode, ShiftKey, AltKey, CtrlKey — keyboard eventsFile *l.File — file inputs/uploadsIsInitial bool — true when a browser re-sent pre-filled field data after a
page reload (see Initial sync below)l.Box(v) wraps a value in a thread-safe container that is also a renderable
node — drop it into the tree and it renders its current value. Read/write it
safely with Get, Set, and Lock:
count := l.Box(0)
Button(
l.On("click", func(_ context.Context, _ l.Event) {
count.Lock(func(v int) int { return v + 1 }) // read+write under one lock
}),
count, // renders the current value
)For a plain variable you can also pass it by reference so renders pick up the
latest value: P("Hello, ", &message). Box is preferred when more than one
goroutine (e.g. PubSub) can touch the value.
l.Attrs{"type": "text", "placeholder": "name"} // plain attributes
l.Class("btn btn-primary") // ordered class list
l.ClassBool{"active": isActive, "disabled": !ok} // toggle classes on/off
l.ClassList{"a", "b", "c"} // add a slice of classes
l.Style{"color": "red", "display": nil} // nil removes a ruleOrdering note: within a single ClassBool/Style the order is not preserved;
add separate elements when order matters. Re-adding the same class key updates the
existing one.
With hhtml, set plain attributes with the typed funcs (Type("text"),
Placeholder("name"), Class("btn")) instead of l.Attrs; keep the core
l.ClassBool/l.ClassList/l.ClassOff/l.Style types for toggling classes
and styles on/off.
import (
l "github.com/SamHennessy/hlive"
. "github.com/SamHennessy/hlive/hhtml"
)
func home() *l.Page {
page := l.NewPage()
page.DOM().Title().Add("My App")
page.DOM().Head().Add(Link(Rel("stylesheet"), Href("/assets/main.css")))
page.DOM().Body().Add( /* your tree, built with hhtml */ )
return page
}
func main() {
http.Handle("/", l.NewPageServer(home)) // PageServer is an http.Handler
http.ListenAndServe(":3000", nil)
}page.DOM() is a method that returns the document; .Title(), .Head(),
.Body(), and .HTML() are methods on it. (Some older README snippets show
page.DOM.Body as a field — that's stale; always call page.DOM().Body().)
hlive.Render(ctx) (re-renders the whole page).hlive.RenderComponent(ctx, comp). This is powerful but easy to get subtly
wrong — only reach for it when whole-page renders are a measured problem.The ctx passed to your handler is what Render/RenderComponent need.
cm := l.CM("table", /* children */)
cm.SetMount(func(ctx context.Context) {
// runs after the component mounts (WebSocket phase) — fetch data here
})
cm.SetUnmount(func(ctx context.Context) { /* cleanup before removal */ })Mount is the place to load per-session data — including values stashed in
ctx by middleware.
Mount is not called) and then a WebSocket connection (where
Mount runs and live diffing begins). The WS connects to the same URL with
?hlive=1. One Page instance = one connected user.GetNodes must be deterministic. A Tag's children are read many times,
not only at render. Do no I/O and make no state changes when building
children — fetch data in event handlers or Mount, not while constructing the
tree.<tbody>, merging
adjacent text nodes). HLive locates elements by path, so these surprises can
make updates land in the wrong place. Keep markup valid and well-formed.e.IsInitial.import (
"context"
l "github.com/SamHennessy/hlive"
. "github.com/SamHennessy/hlive/hhtml"
)
func home() *l.Page {
count := l.Box(0)
page := l.NewPage()
page.DOM().Title().Add("Click")
page.DOM().Body().Add(
P("Clicks: ",
Button(
l.On("click", func(_ context.Context, _ l.Event) {
count.Lock(func(v int) int { return v + 1 })
}),
count,
),
),
)
return page
}Source of truth for current API is the runnable examples and core source, not prose docs:
_example/click/click.go, _example/todo/todo.go, _example/url_params/url_params.gocomponent.go, componentMountable.go, tag.go, page.go, dom.go, event.go, hlive.goFor building markup with the typed hhtml builders, see the hlive-hhtml skill. For laying out a multi-page app, see the hlive-project skill. For dynamic lists, focus, real-time updates, and diff-apply callbacks, see the hlivekit skill. For browser tests, see the hlive-testing skill.
© SamHennessy, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugin/skills/hlive-core of SamHennessy/hlive.
Open the folder on GitHubat commit bc5f920
Hlive Core next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Hlive Core this skillSamHennessy/hlive | 101 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Backfill Event Datarubyevents/rubyevents | 569 | — | ~2.8k | Automated safety check: Pass | None | |
| Andrej Karpathy Perspectivenazarli-shabnam/clevis | 170 | 2 repos | ~3.8k | Automated safety check: Pass | MIT | |
| Starlettesimonw/research | 783 | — | ~8.6k | Automated safety check: Notes | None | |
| Readme Generator Probeizhi23/README-Generator-Pro | 113 | — | ~472 | Automated safety check: Notes | None | |
| Gh Release Jar Libexception-coder/npe_get_jobs | 176 | — | ~902 | Automated safety check: Pass | Custom licence |
rubyevents/rubyevents
Add or backfill RubyEvents conference data for an event from its website — involvements (organizers/MCs), sponsors, venue + hotels, schedule, talk running order, and speaker GitHub/Twitter handles.
nazarli-shabnam/clevis
Andrej Karpathy的思维框架与表达方式。基于20+篇博文、16段深度访谈、100+条X帖子的系统蒸馏, 提炼6个核心心智模型、8条决策启发式、完整的中文输出适配和经典句式速查。
simonw/research
Build async web applications and APIs with Starlette 1.0, the lightweight ASGI framework for Python.
beizhi23/README-Generator-Pro
Generate, modify, and render professional README.md files and project introduction HTML pages using the bundled README Generator Pro FastAPI application.
exception-coder/npe_get_jobs
将 Maven/Spring Boot 构建产物(可执行 JAR、target/lib 依赖目录、可选 JRE)归档到 GitHub Releases。在用户需要发布版本、上传 JAR/lib/JRE 到 GitHub Release 或“归档到 Releases”时使用。
antfu/skills
Reference for Nitro v3, the server toolkit behind Nuxt: file routing, route rules, caching, storage, tasks, websockets and deployment presets.
SamHennessy/hlive
Build HLive page markup with the hhtml package (github.com/SamHennessy/hlive/hhtml) — typed, autocompleting Go builders for HTML5 tags and attributes (Div, Button, A, Input, Class, Href, ...).
SamHennessy/hlive
Structure a real multi-page HLive application in Go — the main.go entry point and net/http routing, a page/ package of page factories, reusable component functions, static asset serving, and…
SamHennessy/hlive
Write browser tests for HLive pages using the hlivetest package (github.com/SamHennessy/hlive/hlivetest) and Playwright.
SamHennessy/hlive
Use the hlivekit toolkit (github.com/SamHennessy/hlive/hlivekit) for common HLive needs — dynamic lists of components (ComponentList / hlivekit.List), giving an input focus, running server logic…
Works with
Categories
Build UIs with HLive, the server-side virtual-DOM framework for Go (github.com/SamHennessy/hlive). Hlive Core is an agent skill from SamHennessy/hlive.com/SamHennessy/hlive).
Hlive Core fits situations like: working with HLive code — the l github.com/SamHennessy/hlive import; builders like l.T / l.C / l.CM; newPage / NewPageServer; on(...) event bindings.
Run `npx skills add SamHennessy/hlive --skill hlive-core -a claude-code`. Or copy the skill folder (plugin/skills/hlive-core in SamHennessy/hlive) into .claude/skills/hlive-core in your project. Claude Code loads it when a task matches its description.
Run `npx skills add SamHennessy/hlive --skill hlive-core -a codex`. Or copy the skill folder (plugin/skills/hlive-core in SamHennessy/hlive) into .agents/skills/hlive-core in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add SamHennessy/hlive --skill hlive-core -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hlive-core, .gemini/skills/hlive-core, .github/skills/hlive-core and .opencode/skills/hlive-core in your project.
SKILL.md names no scripts, command-line tools or credentials: Hlive Core is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Hlive Core is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Hlive Core: Backfill Event Data (rubyevents/rubyevents, 569 stars), Andrej Karpathy Perspective (nazarli-shabnam/clevis, 170 stars), Starlette (simonw/research, 783 stars) and Readme Generator Pro (beizhi23/README-Generator-Pro, 113 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
SamHennessy (a GitHub user) maintains it in SamHennessy/hlive, which has 101 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on July 2, 2026.
Source: SamHennessy/hlive on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.