Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add jkaninda/okapi-skills --skill templatinggit clone --depth 1 https://github.com/jkaninda/okapi-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/jkaninda/okapi-skills/templating)<a href="https://agentmods.dev/skills/jkaninda/okapi-skills/templating"><img src="https://agentmods.dev/badge/skills/jkaninda/okapi-skills/templating.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.01038 |
| Opus 5 | $0.00000 | $0.00519 |
| Sonnet 5 | $0.00000 | $0.00208 |
| Haiku 4.5 | $0.00000 | $0.00104 |
Grade A, and why
templating scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 124 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Okapi Templating & Rendering
Okapi renders HTML through a Renderer. The built-in Template type wraps html/template and loads from a directory, a glob pattern, an embedded FS, or a config struct.
Renderer Interface
type Renderer interface {
Render(w io.Writer, name string, data interface{}, c *Context) error
}
type RendererFunc func(io.Writer, string, interface{}, *Context) error // adapter
Loading Templates
// 1. Directory scan (with extension filter)
tmpl, err := okapi.NewTemplateFromDirectory("public/views", ".html", ".tmpl")
o.WithRenderer(tmpl)
// 2. Glob pattern
tmpl, err := okapi.NewTemplateFromFiles("public/views/*.html")
o.WithRenderer(tmpl)
// 3. Embedded FS (recommended for production)
//go:embed views/*
var views embed.FS
tmpl, err := okapi.NewTemplate(views, "views/*.html")
o.WithRenderer(tmpl)
// 4. Config struct (custom funcs, custom FS)
tmpl, err := okapi.NewTemplateWithConfig(okapi.TemplateConfig{
FS: os.DirFS("templates"),
Pattern: "**/*.html",
BaseDir: "templates",
Funcs: template.FuncMap{"upper": strings.ToUpper},
})
o.WithRenderer(tmpl)
Shortcuts on *Okapi
Each avoids constructing the *Template yourself:
o.WithDefaultRenderer("public/views/*.html") // from a file pattern
o.WithRendererFromDirectory("public/views", ".html") // from a directory
o.WithRendererFromFS(views, "views/*.html") // from an fs.FS
o.WithRendererConfig(okapi.TemplateConfig{...}) // from a config struct
o.WithRenderer(customRenderer) // any Renderer implementation
All are also available as OptionFunc where noted (okapi.WithRenderer(...)).
TemplateConfig
| Field | Type | Description |
|---|---|---|
Pattern |
string |
File pattern (e.g. views/*.html) |
FS |
fs.FS |
Embedded or custom filesystem |
Funcs |
template.FuncMap |
Custom template functions |
BaseDir |
string |
Base directory for templates |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 124 lines · 0 tokens per session scan A 98ad58f4a70d
templating is a skill published in the GitHub repository jkaninda/okapi-skills (3 stars, last pushed 22d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,038 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
gentleman-bubbletea
Bubbletea TUI patterns for Gentleman.Dots installer. Trigger: When editing Go files in installer/internal/tui/, working on TUI screens, or adding new UI features.
af-xdp
AFXDP skill for high-performance XDP sockets. Use when creating AFXDP sockets, configuring UMEM and XSK rings, XDPREDIRECT programs, copy vs zero-copy mode, or comparing with DPDK. Activates on queries about AFXDP, xskumem, XDPREDIRECT, libbpf xsk, or zero-copy XDP.
wasm-emscripten
WebAssembly with Emscripten skill for C/C++ to WASM compilation. Use when compiling C/C++ to WebAssembly with emcc, configuring EXPORTEDFUNCTIONS, understanding the WASM memory model, using Asyncify for async C code, debugging .wasm with browser devtools or wasm-opt, or targeting WASI vs browser environments.…
building-glamorous-tuis
Build terminal UIs with Charmbracelet (Bubble Tea, Lip Gloss, Gum). Use when: Go TUI, shell prompts/spinners, "make CLI prettier", adaptive layouts, async rendering, focus state machines, sparklines, heatmaps, kanban boards, SSH apps.
go-tui
Build, review, or debug Go terminal UIs with the Charm stack — Bubble Tea, Lip Gloss, Bubbles, ntcharts. Use for any Go TUI, dashboard, or full-screen CLI, including colour-accurate screenshots.
wings-component
Write a WINGS component (custom element in Go→WASM) — module file trio, wings.Register, the PranaMod lifecycle (InitData/Render), template binding syntax ({{expr}}, ?cond, arr/arr, &attr, @event), and parent-child events. Use when creating or editing a WINGS module, template, custom element, PranaMod, or any template…