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 agentmods add commands/go4cas/quiver/add-layoutgit clone --depth 1 https://github.com/go4cas/quiverWhat 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 | $0.00000 | $0.00480 |
| Opus 5 | $0.00000 | $0.00240 |
| Sonnet 5 | $0.00000 | $0.00096 |
| Haiku 4.5 | $0.00000 | $0.00048 |
Grade A, and why
add-layout 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 2d 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.
What it actually says
Create a new Quiver layout named: $ARGUMENTS
The argument is a layout name in any case (e.g. sidebar, BlankLayout, full-width). Normalise to PascalCase with a Layout suffix — <Name> below means this full suffixed name (e.g. SidebarLayout). The registration key is the lowercase base name without the suffix (e.g. sidebar).
Follow these steps exactly:
- Create
src/layouts/<Name>.js:
import { html } from '@arrow-js/core'
export function <Name>(content) {
return html`
<div class="min-h-screen">
${content}
</div>
`
}
- The layout receives the rendered page as its
contentargument — render it as${content}(no() =>needed; content is already an Arrow template, not a reactive value) - Use Tailwind CSS utility classes; match the visual style of existing layouts in
src/layouts/ - If the layout needs global DI data (e.g. app name, current user), inject it using
injectfrom../framework/index.js:import { inject } from '../framework/index.js' const app = inject('app', { name: 'Quiver', tagline: '' }) - Apply Arrow.js rules: wrap reactive values in
() =>, no<!-- -->HTML comments inside template literals - Annotate the exported layout function with JSDoc
@param/@returns— strictcheckJsis enforced and untyped params failnpm run typecheck
- Register in
src/layouts/index.js:
import { <Name> } from './<Name>.js'
// add to the layouts object:
<key>: <Name>,
- Verify — run and fix any failures:
npm run typecheck && npm test && npm run test:e2e
- Report:
- The file created
- The key to use in
meta.layout(e.g.export const meta = { layout: '<key>' }) - Any DI keys the layout reads and where to
provide()them insrc/main.js
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.
- 2d ago First seen · 47 lines · 0 tokens per session scan A 34bea5929fa7
add-layout is a command published in the GitHub repository go4cas/quiver (5 stars, last pushed 1mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 480 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.