Skip to content

Commit d6b3bdd

Browse files
committed
feat: add simple artifact exploration
1 parent 5768b28 commit d6b3bdd

24 files changed

Lines changed: 422 additions & 27 deletions

File tree

‎.codex-plugin/plugin.json‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "visualize",
3-
"version": "0.3.0",
4-
"description": "Generate beautiful, on-brand HTML artifacts — reports, diagrams, diff reviews, slide decks, plans, recaps, dashboards.",
3+
"version": "0.4.0",
4+
"description": "Generate, explore, and refine beautiful on-brand HTML artifacts — reports, diagrams, diff reviews, slide decks, plans, recaps, dashboards.",
55
"author": { "name": "display.dev", "url": "https://display.dev" },
66
"homepage": "https://display.dev/docs/visualize",
77
"repository": "https://github.com/display-dev/visualize",
@@ -10,7 +10,7 @@
1010
"interface": {
1111
"displayName": "visualize",
1212
"shortDescription": "Generate beautiful, on-brand HTML artifacts.",
13-
"longDescription": "visualize lets agents generate self-contained HTML artifacts — reports, diagrams, diff reviews, slide decks, plans, recaps, dashboards — that read as your brand. Captures brand from your codebase, asking, or live site, then applies it consistently across 35 templates and 103 reference design systems. Iteration verbs (polish, review, simplify, bolder, quieter, animate) keep the loop tight. See https://display.dev/docs/visualize for the full feature set.",
13+
"longDescription": "visualize lets agents generate self-contained HTML artifacts — reports, diagrams, diff reviews, slide decks, plans, recaps, dashboards — that read as your brand. Artifact Explore compares responsive document structures while the current visual system and content stay fixed. Brand capture and focused refine verbs work across 35 templates and 103 reference design systems. See https://display.dev/docs/visualize for the full feature set.",
1414
"developerName": "display.dev",
1515
"category": "Design",
1616
"websiteURL": "https://display.dev/docs/visualize",

‎.cursor-plugin/plugin.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "visualize",
3-
"description": "Generate beautiful, on-brand HTML artifacts — reports, diagrams, diff reviews, slide decks, plans, recaps, dashboards. Captures brand from your codebase, asking, or live site, then applies it consistently across 35 templates and 103 reference design systems.",
4-
"version": "0.3.0",
3+
"description": "Generate, explore, and refine beautiful on-brand HTML artifacts. Artifact Explore compares responsive structures while the current visual system and content stay fixed.",
4+
"version": "0.4.0",
55
"author": { "name": "display.dev", "url": "https://display.dev" },
66
"homepage": "https://display.dev/docs/visualize",
77
"repository": "https://github.com/display-dev/visualize",

‎HARNESSES.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,7 @@ This table records observed host/route evidence, not operating instructions. The
5050
| `openai-api` | verified with configured OpenAI API on 2026-08-24 | `gpt-image-2` through the Images API; one no-reference generation produced a visually inspected 1024×1024 PNG (1,465,663 bytes), and one single-reference edit produced a visually inspected 1536×1024 JPEG (149,859 bytes); `api-key` billing diagnostic; provider bytes and dimensions preserved; one request in each successful run, with no retry or fallback |
5151

5252
Distribution evidence is credential-free: `skills@1.5.20` resolved exactly one local candidate skill and exactly one current public skill in isolated workspaces; Pi's pinned Git package exposed exactly one skill under `pi/agent/skills`; Codex/Cursor manifests parse; and all three committed mirrors match the canonical mount.
53+
54+
## Artifact Explore evidence
55+
56+
Fresh-context acceptance on 2026-08-26 assigned Briefing rail, Evidence ledger, and Decision sequence to three independent subagents with one shared Relay Press brief. The coordinator assembled their scoped fragments into one 38 KB HTML file. Browser checks passed all six direction/viewport states: three same-DOM directions, 1180 px wide and 390 px phone frames, natural heights from 1,195 to 1,925 px, no iframe, no nested scroller, no crop, no horizontal overflow, fixed-content parity, restored URL/selection state, and no console or page errors. Full-page screenshots were visually inspected; the evidence remains disposable under `temp/artifact-explore-single-file-acceptance-2026-08-26/`. The maintained workflow lives in [`visualize/reference/explore-artifact.md`](visualize/reference/explore-artifact.md).

‎README.md‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@ Works across Claude Code, Cursor, Codex, OpenCode, Hermes, and Pi.
1616

1717
## Why visualize?
1818

19-
Three problems with how agents publish HTML today:
19+
Four problems with how agents publish HTML today:
2020

2121
**1. Every artifact looks the same.** Every coding agent was trained on the same SaaS templates: Inter for everything, purple-to-blue gradients, rounded-square icon tile above every heading, six metric cards in a row, "Get started for free" CTA. Skip the brand guidance and every Report reads as the same Report. A Report from your company should look like your company's Report; today it looks like a generic shadcn demo regardless of who shipped it.
2222

2323
**2. No brand context.** Pasting brand colors into every prompt isn't sustainable, and the agent forgets between sessions. visualize captures voice + visual identity once via `teach`, then every render reads the brand profile and produces a Report that visibly belongs to your company.
2424

25-
**3. Iteration verbs with real contracts.** visualize has five Refine verbs (`simplify`, `bolder`, `quieter`, `animate`, `polish`) plus one Evaluate verb (`review`). Each does one specific thing — `bolder` amplifies visual punch, `simplify` strips decoration, `quieter` tones intensity, `animate` covers motion, `polish` is the terminal quality pass the other Refine verbs hand off to. `review` reports findings without modifying the file.
25+
**3. Compare real directions before choosing.** `explore artifact` holds the current visual system, content, facts, assets, and actions fixed while it builds materially different responsive document structures in one self-contained HTML review. Switch between wide and 390 px states, scroll each full document normally, and choose before the target changes.
26+
27+
**4. Iteration verbs with real contracts.** visualize has five Refine verbs (`simplify`, `bolder`, `quieter`, `animate`, `polish`) plus one Evaluate verb (`review`). Each does one specific thing — `bolder` amplifies visual punch, `simplify` strips decoration, `quieter` tones intensity, `animate` covers motion, `polish` is the terminal quality pass the other Refine verbs hand off to. `review` reports findings without modifying the file.
2628

2729
## What's inside
2830

@@ -111,6 +113,7 @@ See [`visualize/reference/image-generation.md`](visualize/reference/image-genera
111113
|---|---|
112114
| `/visualize <topic-or-path>` | Pick template from intent; compose against brand tokens; write self-contained HTML |
113115
| `/visualize teach` | Bootstrap (or refresh) the brand profile |
116+
| `/visualize explore artifact <topic-or-path>` | Compare responsive document structures inside the current visual system |
114117
| `/visualize polish <path>` | Iteration: alignment, spacing, consistency |
115118
| `/visualize review <path>` | Iteration: detector findings + LLM judgment |
116119
| `/visualize simplify <path>` | Iteration: strip decoration |

‎hermes/design/visualize/AUTHORING.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ The composition reflex check runs in preflight, before shape sketching. Its outp
1818

1919
`design-systems/catalog-index.json` and the per-system `DESIGN.md` files are reference packages `teach` reads when *deriving* a brand profile. At creation time the model uses the brand profile it has — browsing the catalog as a substitute for the resolved brand is drift, not fidelity. No per-artifact creation pass browses the catalog.
2020

21+
Artifact Explore is also catalog-blind. It explores document structure inside an already resolved visual world; catalog access would silently reopen the identity decision. The future System Explore scope may use catalog entries only as calibration evidence under its own contract.
22+
2123
### 4. Required shape-gate fields are source-conditional
2224

2325
Unconditional gate fields — pre-committed visible ingredients, primitive budgets, mandatory signature moves — induce format-induced collapse (Findings-EMNLP 2025: SFT 20.8% → DPO 10.8% diversity drop under structured-output requirements). Primitives follow sections that need them. Signature moves exist only when the source motivates one. Ingredients are derived from sections + primitives, not separately listed.
@@ -59,6 +61,8 @@ Recipes live at `patterns/<slug>.md`. They are creation guidance for recurring r
5961

6062
Shells live at `shells/<slug>/` and exist only for behavior-heavy mechanics: slide navigation, keyboard control, hash sync, scaling, print, or similar. A shell README documents content slots, behaviors, accessibility invariants, print/export expectations, and what an agent may customize. Runtime files are read only when the artifact needs to inline or modify mechanics.
6163

64+
Artifact Explore follows the same single-file harness shape as a prototype exploration: review controls sit outside same-DOM candidate roots, each direction scopes its CSS to its own root, and width controls never impose a fixed document height. Temporary candidate drafts and screenshots are construction evidence, not fixtures or a publishable package.
65+
6266
## Fixtures
6367

6468
Fixtures live under `fixtures/` and are tooling assets. They are not authoring inputs and templates do not reference them. If `fixtures/manifest.json` lists a file, validators must be able to resolve it. Keep fixtures targeted to detector coverage, contrast checks, mobile overflow checks, shell smoke, or human visual inspection.

‎hermes/design/visualize/SKILL.md‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
---
22
name: visualize
3-
version: 0.3.0
3+
version: 0.4.0
44
license: MIT
55
user-invocable: true
6-
argument-hint: "[teach | simplify | bolder | quieter | animate | polish | review | publish] [<topic-or-path>]"
6+
argument-hint: "[teach | explore | simplify | bolder | quieter | animate | polish | review | publish] [<topic-or-path>]"
77
allowed-tools:
88
- Bash(node $SKILL_DIR/scripts/detect.mjs*)
99
- Bash(node $SKILL_DIR/scripts/browser-contrast.mjs*)
@@ -31,7 +31,8 @@ description: >
3131
intents ("create a plan", "make me an implementation plan",
3232
"generate a diagram", "build a slide deck", "draft a recap",
3333
"visualize this", "render this as HTML", "make me a status update")
34-
and iteration intents ("make this beautiful", "polish this report",
34+
and exploration intents ("show me three layouts", "explore document
35+
shapes", "compare page directions") and iteration intents ("make this beautiful", "polish this report",
3536
"make this less generic", "design this", "theme this", "use my
3637
brand", "iterate on this design", "review this artifact", "make
3738
this bolder", "make this quieter", "simplify this design",
@@ -63,6 +64,7 @@ Visual conviction can come from composition, typography, density, spatial rhythm
6364
| Category | Command | Argument | What it does | Reference |
6465
|---|---|---|---|---|
6566
| **Build** | `teach` | none | Bootstrap (or refresh) the brand profile. Writes `DESIGN.md` + `PRODUCT.md` at the project root. | `reference/teach.md` |
67+
| **Build** | `explore` | `artifact <topic-or-path>` | Compare responsive document structures inside the current visual system; waits for selection before changing the target. | `reference/explore.md` |
6668
| **Refine** | `simplify` | `<path>` | Strip decoration that isn't earning its pixel. Hands off to `polish`. | `reference/simplify.md` |
6769
| **Refine** | `bolder` | `<path>` | Amplify visual punch on safe / generic artifacts. Hands off to `polish`. | `reference/bolder.md` |
6870
| **Refine** | `quieter` | `<path>` | Tone down over-decoration without going generic. Hands off to `polish`. | `reference/quieter.md` |
@@ -71,7 +73,7 @@ Visual conviction can come from composition, typography, density, spatial rhythm
7173
| **Evaluate** | `review` | `<path>` | Deterministic detector findings + LLM judgment. Reports; doesn't modify the file. | `reference/review.md` |
7274
| **Publish** | `publish` | `<path>` | Push the artifact to display.dev via MCP / CLI / HTTP cascade. | `reference/publish.md` |
7375

74-
Invocation forms: `/visualize teach`, `/visualize polish ./report.html`, `/visualize publish ./diagram.html`. On hosts without a slash-command form, the skill loads on intent-match from the description above; natural-language is the primary entry there.
76+
Invocation forms: `/visualize teach`, `/visualize explore artifact ./report.html`, `/visualize polish ./report.html`, `/visualize publish ./diagram.html`. On hosts without a slash-command form, the skill loads on intent-match from the description above; natural-language is the primary entry there.
7577

7678
## Routing rules
7779

@@ -80,6 +82,7 @@ Invocation forms: `/visualize teach`, `/visualize polish ./report.html`, `/visua
8082
3. **First word doesn't match a command**: treat the whole argument as the topic for the default creation flow. Load `reference/create.md`.
8183
4. **Relationship-diagram route during creation**: when preflight first identifies a likely relationship diagram, load `reference/diagram.md` and the one tentative non-spatial type reference needed for that figure before presenting the shape gate. For multi-figure artifacts, load one reference for each distinct tentative family: `reference/diagram-flow.md`, `reference/diagram-system.md`, `reference/diagram-sequence.md`, `reference/diagram-state.md`, or `reference/diagram-hierarchy.md`. Spatial figures use `reference/diagram.md` alone. If approval changes a figure's type, load the replacement reference before authoring; do not load unrelated families.
8284
5. **Generated-image route during creation**: when the approved shape requires generated bitmap imagery, load `reference/image-generation.md` before selecting or invoking a route. Use only the active callable inventory or an explicitly selected API adapter. Never infer a route from a key, executable, mount, or model claim, and never retry or fall back after an ambiguous attempt.
85+
6. **Explore scope**: `explore` always loads `reference/explore.md`, which dispatches the named scope. Artifact Explore has no missing-brand fallback: it stops for `teach` when an incumbent is uncaptured and stops truthfully when no visual authority exists. It never reads the design-system catalog.
8386

8487
## Hand-off output shape
8588

0 commit comments

Comments
 (0)