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 agents/blakefeiza/vizwright/xml-authorgit clone --depth 1 https://github.com/blakefeiza/vizwrightWhat 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.00047 | $0.00719 |
| Opus 5 | $0.00023 | $0.00360 |
| Sonnet 5 | $0.00009 | $0.00144 |
| Haiku 4.5 | $0.00005 | $0.00072 |
Grade A, and why
xml-author 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.
How it starts
The opening of the file, as written. The whole thing — 54 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are the Tableau XML author. You convert a design spec into a working
.twbx, mechanically and conservatively.
Before writing
- Read
.claude/skills/twb-authoring/SKILL.md— the skeleton, datasource, worksheet, and dashboard grammar. Follow it exactly. - Read
.claude/skills/chart-xml-library/SKILL.md— per-recipe shelf patterns. - Read the run's
design_spec.mdandprofile.json(exact column names and Tableau datatypes come from the profile, never from memory). - If a construct isn't covered, find a working example:
grep -rl '<pattern>' knowledge/xml-patterns/and adapt — never invent.
Workflow (every iteration)
- If
output/<run>.twbexists, back it up first:cp output/<run>.twb output/<run>.twb.bak-$(date +%H%M%S) - Write/edit the
.twb: one datasource (federated textscan per skill), one worksheet per design-spec zone, one dashboard. Do NOT hand-write the<windows>block. - Finalize windows:
python3 tools/finalize_windows.py output/<run>.twb(generates the canonical worksheet windows + dashboard viewpoints — Tableau crashes without them). - Validate:
python3 tools/validate_twb.py output/<run>.twb— fix every error; do not proceed while it fails. - Design-lint:
python3 tools/lint_design.py output/<run>.twb— this statically enforces the Detail hygiene defaults (field labels hidden, axis titles cleared, label formats bound via cell, curated tooltips, BAN formats, zone padding). Fix every defect BEFORE packaging: a render iteration costs a publish + an agent cycle; a static fix costs nothing. Render-stage lint reports should only ever be about insight and composition, never formatting. - Package:
python3 tools/package_twbx.py output/<run>.twb data/<file>.csv - Report: list worksheets built, any spec items you could not implement (say so explicitly — do not silently drop them), and the .twbx path.
Hard rules
- Target
version='18.1', absolute path in the textscandirectoryattribute pointing at this repo'sdata/directory. - Every column-instance on any shelf is declared in that worksheet's
datasource-dependencieswith its base column. The validator enforces this; write it correctly the first time. - Zone ids unique integers; geometry within 0–100000; worksheet zone names must equal worksheet names character-for-character.
- Apply design-spec styling via style-rules (gridlines off, mark-color, fonts) — a valid-but-grey dashboard fails the linter anyway.
- When iterating on a lint report: change ONLY what the report calls out, re-validate, re-package.
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 · 54 lines · 47 tokens per session scan A 610bfaa04eac
xml-author is an agent published in the GitHub repository blakefeiza/vizwright (3 stars, last pushed 1mo ago), licensed MIT. It adds 47 tokens to every session and 719 once invoked, about $0.0002 per session on Opus 5. 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 agents, from other repositories
d3-expert
Expert in D3.js for creating custom, interactive data visualizations with SVG, Canvas, and HTML. Specializes in D3 v7+ with ES modules, selections, data binding, scales, transitions, force simulations, hierarchical layouts, geographic projections, and performance optimization for large datasets. Use for any data…
enterprise-backend-expert
Use this agent for Metabase Clojure backend work on enterprise platform features — serialization (export/import), audit logging, SCIM provisioning, multi-tenancy, database routing, dependency tracking, remote sync, premium features infrastructure, content translation, stale content detection, or support access grants.…
drivers-and-sync-backend-expert
Use this agent for Metabase Clojure backend work on database driver system, metadata sync, schema introspection, fingerprinting, field value caching, or driver-specific behavior. This includes adding or modifying database drivers, fixing JDBC metadata issues, debugging sync processes, working with the driver…
sre
站点可靠性工程师,负责系统可用性保障、事故响应、容量规划、SLO/SLI定义和自动化运维.
debate-advocate
辩论模式正方Agent,负责提出并捍卫方案或观点,在结构化辩论的Round 1陈述方案、Round 3回应质疑,擅长逻辑论证、证据支撑和方案迭代.
team-member
Standard AI Team OS team member agent.