Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 40 additions & 50 deletions hermes/design/visualize/SKILL.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions hermes/design/visualize/reference/create.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Autonomous harnesses (Codex-class) have been observed jumping to file writes bef

Before composing, confirm:

1. **Context loaded.** Resolve artifact context, brand/context source, token source, and fallback behavior per SKILL.md before choosing a template or writing code. If fallback context is used because `DESIGN.md` / `PRODUCT.md` are absent, extract binding brand cues from project instructions: named fonts, palette roles, logo/mark rules, density/register, and anti-references. If those instructions cite token files, stylesheets, design guidelines, or logo components, read those files before composing. Do not treat those cues as optional mood. **Brand-source precedence when sources disagree:** persisted `DESIGN.md` and `tokens.css` win for visual tokens (colors, fonts, surfaces); `PRODUCT.md` wins for voice and audience; fallback project instructions fill gaps but do not override persisted brand tokens unless the user explicitly says so in the current request. Apply SKILL.md's Artifact themes contract before locking the visual context; approved artifact exceptions participate in that resolution.
1. **Context loaded.** Resolve context and tokens using SKILL.md's Brand profile and Artifact themes contracts, including fallback sources, their referenced assets, and approved exceptions, before choosing a template or writing code.
2. **Brand-fidelity lock.** From the artifact context resolved in step 1, record the applicable invariants across the categories below. These are enforceable, not aspirational. Do not invent invariants where the brand profile is silent — absence is a valid answer for any individual category.
- **Named fonts.** If the brand profile or fallback source names specific fonts, those fonts must lead the body / heading / code CSS stacks in the artifact. `system-ui`, `Inter`, `-apple-system`, or any other generic sans cannot lead the stack unless the brand explicitly names them.
- **Named palette / color system.** If the brand profile names palette roles or uses a specific color system (OKLCH, `color-mix`, `lab`, `lch`), `--background` / `--foreground` / `--primary` / borders / surfaces must derive from that palette and use that color system, not from fallback cream-paper, generic grays, or seed-generated hues.
Expand All @@ -25,7 +25,7 @@ Before composing, confirm:
- `deck` — slide or presentation sequence where each screen is consumed separately.

Mode describes consumption, not aesthetic register. A `document` can still use product-native, application-like, spatial, editorial, or technical-drawing grammar when that grammar expresses the source and brand. Do not let the conservative mode default choose the artifact's look for you.
5. **Template picked.** Select from `templates/*/template.md` using template name, description, Use when, and Do not use when. Templates are starting points, not fixed artifact shells: customize the chosen template to fit the reader job and source, then fall back to pattern recipes for recurring structures the template does not cover. Template names are weak evidence; required structure and reader job are strong evidence. Pick the most specific template only when its required structure fits the source without inventing missing fields. If a named template would force a time axis, live-status semantics, escalation path, operational checks, slide sequence, scoring model, or other content the source does not provide, choose the broader document template and borrow only bounded primitives. Bounded primitives are small structures inside the chosen mode — e.g. labeled time-window rows, status marks, compact scenario tables, one contained topology figure — not the named template's full chrome or layout system. State the choice with one-line rationale.
5. **Template picked.** Start candidate selection from the name, description, Use when, and Do not use when sections of `templates/*/template.md`. Read further candidate sections only when needed to resolve uncertainty about structural fit. Templates are starting points, not fixed artifact shells: customize the chosen template to fit the reader job and source, then fall back to pattern recipes for recurring structures the template does not cover. Template names are weak evidence; required structure and reader job are strong evidence. Pick the most specific template only when its required structure fits the source without inventing missing fields. If a named template would force a time axis, live-status semantics, escalation path, operational checks, slide sequence, scoring model, or other content the source does not provide, choose the broader document template and borrow only bounded primitives. Bounded primitives are small structures inside the chosen mode — e.g. labeled time-window rows, status marks, compact scenario tables, one contained topology figure — not the named template's full chrome or layout system. State the choice with one-line rationale.
6. **Composition reflex check.** Before sketching shape, name up to three artifact-class defaults you must NOT assume — at least one when an obvious reflex exists for the class. The defaults are moves that appear across every AI-generated version of this artifact class regardless of source or brand — the median answer to the class's prompt.

The reflex defaults for any artifact class tend to cluster around the dominant masthead pattern, the default section rhythm, the default verdict/answer placement, and the default secondary-navigation device (TOC, sidebar, sticky chrome). Identify the ones that apply to the class at hand (up to three).
Expand Down
4 changes: 2 additions & 2 deletions hermes/design/visualize/reference/polish.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Walk every applicable quality dimension and report findings against the reader's
Read in order:

1. **The artifact.** Open the file, scroll it end-to-end in your head. Notice what the eye lands on first, what feels off, what reads as "agent eyeballed it."
2. **The detector.** Run `node $SKILL_DIR/scripts/detect.mjs --json <path>` for the mechanical floor. Detector output is **defect-evidence**, never **done-evidence** — a clean result is not proof the artifact is strong. The detector catches what regex can identify; polish covers everything else.
2. **The detector.** Run `node $SKILL_DIR/scripts/detect.mjs --json <path>` for the mechanical floor; apply SKILL.md's Universal law 7 when interpreting the result.

## Discovery: name the root cause, not just the symptom

Expand Down Expand Up @@ -170,7 +170,7 @@ Skipped verification accumulates as "polish reports clean but the artifact is br

If the artifact needs broad rework, polish has misfired. The escape:

- **Artifact carries ≥3 Absolute bans** → refuse and route to `/visualize simplify` first. Simplify's job is removing ban patterns; polish assumes a clean baseline. (SKILL.md's "Refine verbs on artifacts that carry ≥3 Absolute bans" rule applies.)
- **Ban-heavy artifact** → apply SKILL.md's "Refine verbs on artifacts that carry ≥3 Absolute bans" refusal and routing contract.
- **Artifact needs broad rework beyond polish** → stop refinement and apply SKILL.md's Hand-off output shape and Design judgment to recommend the next action.
- **Do not hand off to another Refine verb expecting it to come back.** The Refine verbs (`simplify` / `bolder` / `quieter` / `animate`) hand off to polish, but polish doesn't hand off to them — that creates a cycle. When polish refuses, recommend the next action to the user; do not start another command.

Expand Down
5 changes: 2 additions & 3 deletions hermes/design/visualize/reference/review.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,7 @@ Things detect.mjs deliberately doesn't try to catch: register-dependence, vocab-

- **Mock identity** beyond the obvious: fictitious customer quotes ("Sarah Johnson, VP Marketing"), placeholder phone / address / company / brand names that aren't in the obvious set (Acme, Globex, Anytown, TBD, XXX-XXX-XXXX).
- **Slop openers**: "leverage / streamline / empower / unlock / elevate / unleash / robust / holistic / seamless / cutting-edge / next-gen / In conclusion / TL;DR:" packed into the opening paragraphs.
- **Sycophant footers**: "I hope you find this useful", "Happy to clarify", "Hopefully this addresses your needs", "Best, Claude", anything signed by an AI.
- **Imperative tricolon** ("Ship faster. Build smarter. Scale forever."): three commands ending in periods, regardless of content. Can't be redeemed.
- **Sycophant footers and imperative tricolons**: inspect against SKILL.md BAN 7 and BAN 6.

**Brand- and register-dependent slop** (mechanical detector would false-positive). These judgment calls exclude SKILL.md's Absolute bans, which resolved context cannot redeem. When deciding the remaining calls, consult [color.md](color.md) / [typography.md](typography.md) / [spatial.md](spatial.md) / [copy.md](copy.md) for the deeper material:

Expand Down Expand Up @@ -161,7 +160,7 @@ Context-suppressed detector results are audit evidence rather than actionable fi
- **≥4 `slop/center-everything` declarations in a non-Bauhaus / non-academic register = pattern.** Single centered hero is fine.

When unsure, default to surfacing it as info + naming the aggregate count.
- **Universal law 6**: the reader is the judge. Does each finding make the reader's job harder, or just satisfy a rule?
- Apply SKILL.md's Universal law 6 to every finding.

## Output format (mandatory shape)

Expand Down
10 changes: 5 additions & 5 deletions hermes/design/visualize/templates/comparison/template.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
---
name: Comparison
description: A decision-support artifact for comparing options, tradeoffs, and recommendations.
description: A qualitative options matrix with yes/no/partial/varies cell states, supporting values, and tradeoffs.
---

# Comparison

## Use when

Use this template when the reader needs decision-support artifact for comparing options, tradeoffs, and recommendations. Pick it when the artifact has enough substance to benefit from the named structure, not just because the topic contains similar words.
Use for one option-by-criterion matrix. Every cell carries both a state (`yes` / `no` / `partial` / `varies`) and a supporting value; explanations carry nuance.

## Do not use when

Do not use this when a simpler memo, plain prose answer, or a more specific template would make the reader faster. Do not force the template when the ask lacks the evidence or structure it requires.
For numeric observations without an option-by-criterion evaluation, use Report with an ordinary table. Split multiple comparison matrices into separate artifacts or use Report with embedded comparison figures.

## Structure

Expand All @@ -37,9 +37,9 @@ The first two phone screens must deliver title, thesis, and essential context wi

## Failure modes

**Single-table rule.** Exactly one `<table class="cmp-table">` per artifact. A second `cmp-table` block trips the detector — multi-table comparisons fragment the read; split them into multiple Comparison artifacts or fold into a Report with embedded comparison figures.
**Single-table rule.** Render the matrix as `<table class="cmp-table">`. A second `cmp-table` block trips the detector because multi-table comparisons fragment the read.

**Cell-state vocabulary is closed.** States are drawn from `yes` / `no` / `partial` / `varies` — full stop. Inventing new states (`coming-soon`, `beta`, `enterprise-only`) trips the detector because they erode the scan-at-a-glance property the closed vocabulary buys. Encode nuance in the cell's `detail` text, not in a new state. Every cell carries both a `state` and a `value`; a blank cell is a content gap, not a styling choice.
**Invalid cell states.** Inventing states (`coming-soon`, `beta`, `enterprise-only`) outside the selection vocabulary trips the detector because they erode the scan-at-a-glance property the closed vocabulary buys. Encode nuance in the cell's `detail` text, not in a new state. A blank cell is a content gap, not a styling choice.

**Us-column singularity.** Exactly one column may carry `isUs: true` (zero is valid for a neutral comparison; two or more is positioning incoherence — "us" is a singular concept). The emphasis is a quiet `--us-band-bg` + foreground-derived border, never a brand-primary fill — a brand-coloured us-column opts out of the restraint that makes the comparison read as honest.

Expand Down
6 changes: 3 additions & 3 deletions hermes/design/visualize/templates/report/template.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
---
name: Report
description: A structured long-form artifact for explaining findings, context, implications, and next steps.
description: A prose-led document explaining findings, evidence, implications, and next actions, with supporting tables or figures.
---

# Report

## Use when

Use this template when the reader needs structured long-form artifact for explaining findings, context, implications, and next steps. Pick it when the artifact has enough substance to benefit from the named structure, not just because the topic contains similar words.
Use when the main job is explaining findings and next steps, with prose, ordinary numeric tables, or supporting figures. Fits short decision briefs as well as longer reports.

## Do not use when

Do not use this when a simpler memo, plain prose answer, or a more specific template would make the reader faster. Do not force the template when the ask lacks the evidence or structure it requires.
Use Comparison for a qualitative option-by-criterion matrix, Research brief for research-source synthesis or study documentation, and a plain answer when the material needs no document structure.

## Structure

Expand Down
8 changes: 4 additions & 4 deletions hermes/design/visualize/templates/research-brief/template.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
---
name: Research brief
description: A concise evidence synthesis for a research question, market, user, or competitor.
description: A research-source synthesis or study write-up, with source provenance and study-specific disclosures when applicable.
---

# Research brief

## Use when

Use this template when the reader needs concise evidence synthesis for a research question, market, user, or competitor. Pick it when the artifact has enough substance to benefit from the named structure, not just because the topic contains similar words.
Use to answer a research question from market, competitor, desk-research, or primary user-research sources. Interview studies use the methodology and citation contracts below; secondary-source or desk-research briefs still need source trails and claim-level provenance, but not interview-specific sections.

## Do not use when

Do not use this when a simpler memo, plain prose answer, or a more specific template would make the reader faster. Do not force the template when the ask lacks the evidence or structure it requires.
Use Report for operational findings and next steps that need no research-source synthesis or study documentation. Use a plain answer when the question needs no structured evidence synthesis.

## Structure

Expand All @@ -27,7 +27,7 @@ Read pattern recipes only when the content calls for them: `metadata` for docume

Prior visual variants are no longer live authoring files. If the ask needs a distinct register or rendering route, express that choice in the artifact-local composition and document the reason in visible copy only when it helps the reader.

Default to `document` mode for source synthesis, market scans, competitor reads, user research summaries, and other prose-led evidence briefs. Interview studies use the methodology and citation contracts below; secondary-source or desk-research briefs still need source trails and claim-level provenance, but not interview-specific sections. Use canvas/dashboard primitives only when relationships or metrics are the main read and the source material supplies the model.
Default to `document` mode for source synthesis, market scans, competitor reads, user research summaries, and other prose-led evidence briefs. Use canvas/dashboard primitives only when relationships or metrics are the main read and the source material supplies the model.

## Hierarchy contract

Expand Down
Loading
Loading