Eval results
Haiku built all 30 eval prompts#
- Haiku valid builds
- 30 of 30
- 14 dashboard, 8 diagram and 8 explainer runs
- make-explainer tests
- 593
- Measured on the branch head with node --test
- Skills shipped
- 4
- make-dashboard v2, make-diagram, make-explainer and make-motion
- CI checks passing
- 5 of 5
- Measured on PR #38
Request flow
A request passes validate and build#
Getting started
Install once, then ask in plain words#
-
Install the skills
Run one of the install commands in the next section. The skills are added to your agent.
-
Ask for a page
Describe what to explain in plain words, or call the skill directly with a slash command.
-
Validate the JSON
The skill runs validate.mjs. Each problem prints a JSON path, the problem and the fix. The agent reruns it until the output says valid.
-
Build the page
The skill runs build.mjs, which writes one offline HTML page and prints its path. Open that file in any browser.
-
Check the page (optional)
Run check.mjs on the page. It looks for console errors and sideways scrolling at desktop and phone width.
Install
Two install routes cover Claude Code and others#
/plugin marketplace add abhijitbansal/claude-skills
/plugin install portable-artifacts@claude-skills
npx skills add abhijitbansal/claude-skills --skill make-explainer make-diagram make-dashboard
git clone https://github.com/abhijitbansal/claude-skills
node claude-skills/plugins/portable-artifacts/bin/install.mjs codex
Commands
Four slash commands each produce a different page#
| Request | What it produces |
|---|---|
| /make-explainer recap of this branch with a test checklist | One offline page that recaps the branch and lists the manual tests. |
| /make-diagram architecture of the checkout service with its database and queue | One offline diagram of the services, with icons and zoom. |
| /make-dashboard revenue by region and monthly trend from data/sales.csv | One offline dashboard built from the CSV file, with sortable tables and export. |
| /make-motion a 6 second title card that counts up to 18 | One short MP4 video with a title card that counts up to 18. |
Eval pass rates
Haiku and Sonnet pass 30; gemma4 passes 15#
Data table (3 rows)
| model | builds |
|---|---|
| Claude Haiku | 30 |
| Claude Sonnet | 30 |
| gemma4 (local) | 15 |
Rendered clip
A make-motion video renders from JSON#
Narrated clip
A narrated 15 second clip: prompt to dashboard#
Launch clip
10 second launch clip: up to 3x faster#
SQL guard clip
12 second clip explains the make-dashboard SQL guard#
Square clip
A square 1080x1080 clip shows quarterly highlights#
Versus hand-written
Spec-driven pages cost less and stay consistent#
Hand-written AI pages
Caution- The model writes the HTML, CSS and script for every page, which costs more output.
- Each run can produce a different look, and it often has the generic look of an AI page.
- A small change can disturb the rest of the page.
Spec-driven pages
Good- The model writes only JSON, so the cheapest model passes the eval gates.
- The same spec always gives the same page, and a change is one edited field.
- Validation names the JSON path and the fix, so most errors are repaired in one or two runs.
Verdict. A spec keeps the cost low and the output the same from run to run.
Known limits
Five known limits each have a clear workaround#
| Severity | Risk | Mitigation |
|---|---|---|
| Low | An interactive chart needs a make-dashboard spec. Inline rows give a static chart only. | Use a make-dashboard spec when the reader needs the interactive views. |
| Medium | Explainer charts refuse Postgres and MySQL sources, so builds never reach the network. | Export the data to CSV or Parquet first. |
| Low | In a slide deck, browser find (Ctrl-F) searches only the current slide. | Use page mode when the reader needs to search the whole text. |
| Low | Each static chart ships four drawings, which adds weight to long pages. | Keep long pages to a few charts. |
| Medium | make-motion was not re-evaluated on this branch, so it is not pinned to a model. | Check each video by hand before sharing it. |