@fredcallagan/arn-spark 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +9 -0
- package/.opencode/plugins/arn-spark.js +272 -0
- package/package.json +17 -0
- package/plugins/arn-spark/.claude-plugin/plugin.json +9 -0
- package/plugins/arn-spark/LICENSE +21 -0
- package/plugins/arn-spark/README.md +25 -0
- package/plugins/arn-spark/agents/arn-spark-brand-strategist.md +299 -0
- package/plugins/arn-spark/agents/arn-spark-dev-env-builder.md +228 -0
- package/plugins/arn-spark/agents/arn-spark-doctor.md +92 -0
- package/plugins/arn-spark/agents/arn-spark-forensic-investigator.md +181 -0
- package/plugins/arn-spark/agents/arn-spark-market-researcher.md +232 -0
- package/plugins/arn-spark/agents/arn-spark-marketing-pm.md +225 -0
- package/plugins/arn-spark/agents/arn-spark-persona-architect.md +259 -0
- package/plugins/arn-spark/agents/arn-spark-persona-impersonator.md +183 -0
- package/plugins/arn-spark/agents/arn-spark-product-strategist.md +191 -0
- package/plugins/arn-spark/agents/arn-spark-prototype-builder.md +497 -0
- package/plugins/arn-spark/agents/arn-spark-scaffolder.md +228 -0
- package/plugins/arn-spark/agents/arn-spark-spike-runner.md +209 -0
- package/plugins/arn-spark/agents/arn-spark-style-capture.md +196 -0
- package/plugins/arn-spark/agents/arn-spark-tech-evaluator.md +229 -0
- package/plugins/arn-spark/agents/arn-spark-ui-interactor.md +235 -0
- package/plugins/arn-spark/agents/arn-spark-use-case-writer.md +280 -0
- package/plugins/arn-spark/agents/arn-spark-ux-judge.md +215 -0
- package/plugins/arn-spark/agents/arn-spark-ux-specialist.md +200 -0
- package/plugins/arn-spark/agents/arn-spark-visual-sketcher.md +285 -0
- package/plugins/arn-spark/agents/arn-spark-visual-test-engineer.md +224 -0
- package/plugins/arn-spark/references/copilot-tools.md +62 -0
- package/plugins/arn-spark/skills/arn-brainstorming/SKILL.md +520 -0
- package/plugins/arn-spark/skills/arn-brainstorming/references/add-feature-flow.md +155 -0
- package/plugins/arn-spark/skills/arn-spark-arch-vision/SKILL.md +226 -0
- package/plugins/arn-spark/skills/arn-spark-arch-vision/references/architecture-vision-template.md +153 -0
- package/plugins/arn-spark/skills/arn-spark-arch-vision/references/technology-evaluation-guide.md +86 -0
- package/plugins/arn-spark/skills/arn-spark-clickable-prototype/SKILL.md +471 -0
- package/plugins/arn-spark/skills/arn-spark-clickable-prototype/references/clickable-prototype-criteria.md +65 -0
- package/plugins/arn-spark/skills/arn-spark-clickable-prototype/references/journey-template.md +62 -0
- package/plugins/arn-spark/skills/arn-spark-clickable-prototype/references/review-report-template.md +75 -0
- package/plugins/arn-spark/skills/arn-spark-clickable-prototype/references/showcase-capture-guide.md +213 -0
- package/plugins/arn-spark/skills/arn-spark-clickable-prototype-teams/SKILL.md +642 -0
- package/plugins/arn-spark/skills/arn-spark-clickable-prototype-teams/references/debate-protocol.md +242 -0
- package/plugins/arn-spark/skills/arn-spark-clickable-prototype-teams/references/debate-review-report-template.md +161 -0
- package/plugins/arn-spark/skills/arn-spark-clickable-prototype-teams/references/expert-interaction-review-template.md +152 -0
- package/plugins/arn-spark/skills/arn-spark-concept-review/SKILL.md +350 -0
- package/plugins/arn-spark/skills/arn-spark-concept-review/references/conflict-resolution-protocol.md +145 -0
- package/plugins/arn-spark/skills/arn-spark-concept-review/references/review-report-template.md +185 -0
- package/plugins/arn-spark/skills/arn-spark-dev-setup/SKILL.md +366 -0
- package/plugins/arn-spark/skills/arn-spark-dev-setup/references/dev-setup-checklist.md +84 -0
- package/plugins/arn-spark/skills/arn-spark-dev-setup/references/dev-setup-template.md +205 -0
- package/plugins/arn-spark/skills/arn-spark-discover/SKILL.md +303 -0
- package/plugins/arn-spark/skills/arn-spark-discover/references/competitive-landscape-template.md +87 -0
- package/plugins/arn-spark/skills/arn-spark-discover/references/discovery-questions.md +120 -0
- package/plugins/arn-spark/skills/arn-spark-discover/references/persona-profile-template.md +97 -0
- package/plugins/arn-spark/skills/arn-spark-discover/references/product-concept-template.md +253 -0
- package/plugins/arn-spark/skills/arn-spark-ensure-config/SKILL.md +23 -0
- package/plugins/arn-spark/skills/arn-spark-ensure-config/references/ensure-config.md +388 -0
- package/plugins/arn-spark/skills/arn-spark-ensure-config/references/step-0-fast-path.md +25 -0
- package/plugins/arn-spark/skills/arn-spark-ensure-config/scripts/cache-check.sh +127 -0
- package/plugins/arn-spark/skills/arn-spark-feature-extract/SKILL.md +483 -0
- package/plugins/arn-spark/skills/arn-spark-feature-extract/references/feature-backlog-template.md +176 -0
- package/plugins/arn-spark/skills/arn-spark-feature-extract/references/feature-entry-template.md +209 -0
- package/plugins/arn-spark/skills/arn-spark-help/SKILL.md +149 -0
- package/plugins/arn-spark/skills/arn-spark-help/references/pipeline-map.md +211 -0
- package/plugins/arn-spark/skills/arn-spark-init/SKILL.md +312 -0
- package/plugins/arn-spark/skills/arn-spark-init/references/agent-models-presets/all-opus.md +23 -0
- package/plugins/arn-spark/skills/arn-spark-init/references/agent-models-presets/balanced.md +23 -0
- package/plugins/arn-spark/skills/arn-spark-init/references/bkt-setup.md +55 -0
- package/plugins/arn-spark/skills/arn-spark-init/references/jira-mcp-setup.md +61 -0
- package/plugins/arn-spark/skills/arn-spark-init/references/platform-labels.md +97 -0
- package/plugins/arn-spark/skills/arn-spark-naming/SKILL.md +275 -0
- package/plugins/arn-spark/skills/arn-spark-naming/references/creative-brief-template.md +146 -0
- package/plugins/arn-spark/skills/arn-spark-naming/references/naming-methodology.md +237 -0
- package/plugins/arn-spark/skills/arn-spark-naming/references/naming-report-template.md +122 -0
- package/plugins/arn-spark/skills/arn-spark-naming/references/trademark-databases.md +88 -0
- package/plugins/arn-spark/skills/arn-spark-naming/references/whois-server-map.md +164 -0
- package/plugins/arn-spark/skills/arn-spark-naming/scripts/whois-check.js +502 -0
- package/plugins/arn-spark/skills/arn-spark-naming/scripts/whois-check.py +533 -0
- package/plugins/arn-spark/skills/arn-spark-prototype-lock/SKILL.md +260 -0
- package/plugins/arn-spark/skills/arn-spark-prototype-lock/references/lock-report-template.md +68 -0
- package/plugins/arn-spark/skills/arn-spark-prototype-lock/references/pretooluse-hook-template.json +35 -0
- package/plugins/arn-spark/skills/arn-spark-prototype-lock/references/prototype-guardrail-rules.md +38 -0
- package/plugins/arn-spark/skills/arn-spark-report/SKILL.md +144 -0
- package/plugins/arn-spark/skills/arn-spark-report/references/issue-template.md +81 -0
- package/plugins/arn-spark/skills/arn-spark-report/references/spark-knowledge-base.md +293 -0
- package/plugins/arn-spark/skills/arn-spark-scaffold/SKILL.md +239 -0
- package/plugins/arn-spark/skills/arn-spark-scaffold/references/scaffold-checklist.md +79 -0
- package/plugins/arn-spark/skills/arn-spark-scaffold/references/scaffold-summary-template.md +74 -0
- package/plugins/arn-spark/skills/arn-spark-spike/SKILL.md +209 -0
- package/plugins/arn-spark/skills/arn-spark-spike/references/spike-report-template.md +123 -0
- package/plugins/arn-spark/skills/arn-spark-static-prototype/SKILL.md +362 -0
- package/plugins/arn-spark/skills/arn-spark-static-prototype/references/review-report-template.md +65 -0
- package/plugins/arn-spark/skills/arn-spark-static-prototype/references/showcase-capture-guide.md +153 -0
- package/plugins/arn-spark/skills/arn-spark-static-prototype/references/static-prototype-criteria.md +54 -0
- package/plugins/arn-spark/skills/arn-spark-static-prototype-teams/SKILL.md +518 -0
- package/plugins/arn-spark/skills/arn-spark-static-prototype-teams/references/debate-protocol.md +230 -0
- package/plugins/arn-spark/skills/arn-spark-static-prototype-teams/references/debate-review-report-template.md +148 -0
- package/plugins/arn-spark/skills/arn-spark-static-prototype-teams/references/expert-visual-review-template.md +130 -0
- package/plugins/arn-spark/skills/arn-spark-stress-competitive/SKILL.md +166 -0
- package/plugins/arn-spark/skills/arn-spark-stress-competitive/references/competitive-report-template.md +139 -0
- package/plugins/arn-spark/skills/arn-spark-stress-competitive/references/gap-analysis-framework.md +111 -0
- package/plugins/arn-spark/skills/arn-spark-stress-interview/SKILL.md +257 -0
- package/plugins/arn-spark/skills/arn-spark-stress-interview/references/interview-protocol.md +140 -0
- package/plugins/arn-spark/skills/arn-spark-stress-interview/references/interview-report-template.md +165 -0
- package/plugins/arn-spark/skills/arn-spark-stress-interview/references/persona-casting-spec.md +138 -0
- package/plugins/arn-spark/skills/arn-spark-stress-premortem/SKILL.md +181 -0
- package/plugins/arn-spark/skills/arn-spark-stress-premortem/references/premortem-protocol.md +112 -0
- package/plugins/arn-spark/skills/arn-spark-stress-premortem/references/premortem-report-template.md +158 -0
- package/plugins/arn-spark/skills/arn-spark-stress-prfaq/SKILL.md +206 -0
- package/plugins/arn-spark/skills/arn-spark-stress-prfaq/references/prfaq-report-template.md +139 -0
- package/plugins/arn-spark/skills/arn-spark-stress-prfaq/references/prfaq-workflow.md +118 -0
- package/plugins/arn-spark/skills/arn-spark-style-explore/SKILL.md +281 -0
- package/plugins/arn-spark/skills/arn-spark-style-explore/references/style-brief-template.md +198 -0
- package/plugins/arn-spark/skills/arn-spark-use-cases/SKILL.md +359 -0
- package/plugins/arn-spark/skills/arn-spark-use-cases/references/expert-review-template.md +94 -0
- package/plugins/arn-spark/skills/arn-spark-use-cases/references/review-protocol.md +150 -0
- package/plugins/arn-spark/skills/arn-spark-use-cases/references/use-case-index-template.md +108 -0
- package/plugins/arn-spark/skills/arn-spark-use-cases/references/use-case-template.md +125 -0
- package/plugins/arn-spark/skills/arn-spark-use-cases-teams/SKILL.md +306 -0
- package/plugins/arn-spark/skills/arn-spark-use-cases-teams/references/debate-protocol.md +272 -0
- package/plugins/arn-spark/skills/arn-spark-use-cases-teams/references/review-report-template.md +112 -0
- package/plugins/arn-spark/skills/arn-spark-visual-readiness/SKILL.md +293 -0
- package/plugins/arn-spark/skills/arn-spark-visual-readiness/references/readiness-checklist.md +196 -0
- package/plugins/arn-spark/skills/arn-spark-visual-sketch/SKILL.md +376 -0
- package/plugins/arn-spark/skills/arn-spark-visual-sketch/references/aesthetic-philosophy.md +210 -0
- package/plugins/arn-spark/skills/arn-spark-visual-sketch/references/sketch-gallery-guide.md +282 -0
- package/plugins/arn-spark/skills/arn-spark-visual-sketch/references/visual-direction-template.md +174 -0
- package/plugins/arn-spark/skills/arn-spark-visual-strategy/SKILL.md +447 -0
- package/plugins/arn-spark/skills/arn-spark-visual-strategy/references/baseline-capture-script-template.js +89 -0
- package/plugins/arn-spark/skills/arn-spark-visual-strategy/references/journey-schema.md +375 -0
- package/plugins/arn-spark/skills/arn-spark-visual-strategy/references/spike-checklist.md +122 -0
- package/plugins/arn-spark/skills/arn-spark-visual-strategy/references/strategy-layers-guide.md +132 -0
- package/plugins/arn-spark/skills/arn-spark-visual-strategy/references/visual-strategy-template.md +141 -0
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: arn-spark-visual-sketch
|
|
3
|
+
description: >-
|
|
4
|
+
This skill should be used when the user says "visual sketch", "arn visual sketch",
|
|
5
|
+
"sketch directions", "explore visuals", "visual proposals", "try different looks",
|
|
6
|
+
"design directions", "sketch the UI", "visual exploration", "compare styles",
|
|
7
|
+
"show me options", "what could this look like", or wants to generate multiple
|
|
8
|
+
visual direction proposals as real HTML/CSS running on the scaffolded project's
|
|
9
|
+
dev server, iteratively selecting and refining until a final visual direction
|
|
10
|
+
is chosen.
|
|
11
|
+
version: 1.0.0
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Arness Spark Visual Sketch
|
|
15
|
+
|
|
16
|
+
Generate visual direction proposals as real HTML/CSS in the scaffolded project, compare them side by side in the browser, and iteratively refine until a direction is selected. This is a conversational skill that runs in normal conversation (NOT plan mode). The primary artifacts are a **visual-direction.md** document in the Vision directory and **screenshot captures** of the selected direction in the visual grounding directory.
|
|
17
|
+
|
|
18
|
+
This skill sits between `/arn-spark-scaffold` and `/arn-spark-style-explore` in the greenfield pipeline. It produces a visual-direction.md that style-explore uses as primary input for detailed design token specification. The user sees what the product could look like before committing to a full design system.
|
|
19
|
+
|
|
20
|
+
The iterative process works in rounds:
|
|
21
|
+
1. **Round 1:** N proposals with distinct visual directions (default 3)
|
|
22
|
+
2. **Round 2+:** N expansions of the selected proposal with user-guided refinements
|
|
23
|
+
3. **Final:** The selected direction is captured and documented
|
|
24
|
+
|
|
25
|
+
Each proposal runs on the scaffold's actual dev server using the project's real CSS framework and component library.
|
|
26
|
+
|
|
27
|
+
## Prerequisites
|
|
28
|
+
|
|
29
|
+
The following artifacts inform the sketch generation. Check in order:
|
|
30
|
+
|
|
31
|
+
Determine the output directories:
|
|
32
|
+
1. Read the project's `arness.md` and check for a `## Arness` section
|
|
33
|
+
2. If found, extract the configured Vision directory path and Visual grounding directory path
|
|
34
|
+
3. If no `## Arness` section exists or Arness Spark fields are missing, inform the user: "Arness Spark is not configured for this project yet. Run `/arn-brainstorming` to get started — it will set everything up automatically." Do not proceed without it.
|
|
35
|
+
4. Create directories if they do not exist
|
|
36
|
+
|
|
37
|
+
> All references to "Vision directory" and "visual grounding directory" in this skill refer to the configured directories determined above.
|
|
38
|
+
|
|
39
|
+
**Scaffold (required):**
|
|
40
|
+
1. Check the Vision directory for `scaffold-summary.md`
|
|
41
|
+
2. If no `## Arness` section found, check `.arness/vision/scaffold-summary.md` at the project root
|
|
42
|
+
3. Also check for `package.json` at the project root
|
|
43
|
+
|
|
44
|
+
**If a scaffold-summary is found:** Read it to extract the full technology stack — UI framework, CSS framework, component library, icon library, dev server command, build command.
|
|
45
|
+
|
|
46
|
+
**If no scaffold-summary is found:** Inform the user: "The project must be scaffolded before visual sketching. The sketch needs a real CSS framework and component library to generate proposals. Run `/arn-spark-scaffold` first." Do not proceed.
|
|
47
|
+
|
|
48
|
+
**Architecture vision (required for fallback context):**
|
|
49
|
+
1. Check the Vision directory for `architecture-vision.md`
|
|
50
|
+
2. If no `## Arness` section found, check `.arness/vision/architecture-vision.md`
|
|
51
|
+
|
|
52
|
+
**If found:** Read it for UI framework and platform context. The scaffold-summary is the primary source, but the architecture vision provides additional context (platform type, product category).
|
|
53
|
+
|
|
54
|
+
**If not found:** Proceed if scaffold-summary exists — the scaffold-summary contains enough technical context.
|
|
55
|
+
|
|
56
|
+
**Product concept (recommended):**
|
|
57
|
+
1. Check the Vision directory for `product-concept.md`
|
|
58
|
+
2. If no `## Arness` section found, check `.arness/vision/product-concept.md`
|
|
59
|
+
|
|
60
|
+
**If found:** Read it to identify screens, understand target users, and derive realistic content for sketches.
|
|
61
|
+
|
|
62
|
+
**If not found:** Ask the user to describe the product briefly. Screen identification and content will be based on the user's description. Note the limitation.
|
|
63
|
+
|
|
64
|
+
**Dev server verification:**
|
|
65
|
+
1. Extract the dev server command from scaffold-summary.md (the "How to Run" section)
|
|
66
|
+
2. Verify the project builds without errors by running the build command
|
|
67
|
+
|
|
68
|
+
If the build fails, do not proceed with sketch generation. Report the error and suggest the user fix the scaffold first.
|
|
69
|
+
|
|
70
|
+
## Workflow
|
|
71
|
+
|
|
72
|
+
### Step 1: Load Context
|
|
73
|
+
|
|
74
|
+
Read available documents and present a summary:
|
|
75
|
+
|
|
76
|
+
1. Read `product-concept.md` → extract target users, core experience, product pillars
|
|
77
|
+
2. Read `architecture-vision.md` → extract UI framework, platform type
|
|
78
|
+
3. Read `scaffold-summary.md` → extract CSS framework, component library, icon library, dev commands
|
|
79
|
+
4. Detect framework routing conventions by examining the project source directory:
|
|
80
|
+
- Look for `src/routes/` (SvelteKit)
|
|
81
|
+
- Look for `app/` with `layout.tsx`/`page.tsx` (Next.js app router)
|
|
82
|
+
- Look for `pages/` with `index.tsx` (Next.js pages router) or `index.vue` (Nuxt)
|
|
83
|
+
- Fall back to generic approach if none match
|
|
84
|
+
|
|
85
|
+
Present the context:
|
|
86
|
+
|
|
87
|
+
"Your project uses **[UI framework]** with **[CSS framework]** and **[component library]** on **[platform]**. The product targets [target users] and focuses on [core experience].
|
|
88
|
+
|
|
89
|
+
I will create visual direction proposals as real pages in your project, running on your dev server. Each proposal applies a distinct visual approach to the same set of product screens.
|
|
90
|
+
|
|
91
|
+
Let's start by identifying which screens to sketch."
|
|
92
|
+
|
|
93
|
+
### Step 2: Identify Screens to Sketch
|
|
94
|
+
|
|
95
|
+
From the product concept (or user description), propose 2-4 key screens that represent the core experience:
|
|
96
|
+
|
|
97
|
+
"Based on your product concept, I suggest sketching these screens:
|
|
98
|
+
|
|
99
|
+
1. **[Screen Name]** — [What it shows, e.g., 'Main dashboard with device status grid and connection indicators']
|
|
100
|
+
2. **[Screen Name]** — [What it shows, e.g., 'List view with filterable items and status badges']
|
|
101
|
+
3. **[Screen Name]** — [What it shows, e.g., 'Settings panel with grouped configuration options']
|
|
102
|
+
|
|
103
|
+
These screens cover the main user interactions and will show how each visual direction handles different content types (data grids, lists, forms).
|
|
104
|
+
|
|
105
|
+
Adjust the screen list, add screens, or confirm to proceed."
|
|
106
|
+
|
|
107
|
+
**Screen selection criteria:**
|
|
108
|
+
- Choose screens that represent distinct content types (dashboard, list, detail, form)
|
|
109
|
+
- Prefer screens the user will see most frequently
|
|
110
|
+
- Include at least one data-heavy screen and one navigation-heavy screen
|
|
111
|
+
- Keep the total to 2-4 screens — enough to show the direction, not so many that generation takes too long
|
|
112
|
+
|
|
113
|
+
Wait for user confirmation before proceeding.
|
|
114
|
+
|
|
115
|
+
### Step 3: Define Exploration Dimensions
|
|
116
|
+
|
|
117
|
+
Propose which design aspects should vary between proposals:
|
|
118
|
+
|
|
119
|
+
"Which aspects of the design should differ between proposals? I suggest exploring:
|
|
120
|
+
|
|
121
|
+
1. **Layout structure** — sidebar vs. top navigation, card grids vs. lists, split-panel vs. full-width
|
|
122
|
+
2. **Color mood** — dark vs. light, warm vs. cool, neutral vs. vibrant
|
|
123
|
+
3. **Typography feel** — serif vs. sans-serif headings, compact vs. airy line-height, heavy vs. light weight
|
|
124
|
+
4. **Density** — spacious with generous padding vs. compact with dense information
|
|
125
|
+
5. **Component style** — rounded with shadows vs. sharp with borders vs. pill-shaped minimal
|
|
126
|
+
6. **Animation approach** — static vs. subtle transitions vs. expressive motion vs. scroll-driven narrative
|
|
127
|
+
|
|
128
|
+
All of these, or focus on specific ones?"
|
|
129
|
+
|
|
130
|
+
The user's choices guide how the direction briefs (Step 4) differ from each other. If the user wants all dimensions to vary, each proposal will be maximally distinct. If they focus on 1-2 dimensions, proposals share a base but diverge on those aspects.
|
|
131
|
+
|
|
132
|
+
### Step 4: Compose Direction Briefs
|
|
133
|
+
|
|
134
|
+
Read the aesthetic philosophy reference for tone palette and design vocabulary:
|
|
135
|
+
> Read `${CLAUDE_PLUGIN_ROOT}/skills/arn-spark-visual-sketch/references/aesthetic-philosophy.md`
|
|
136
|
+
|
|
137
|
+
Use the tone palette (Section 1), anti-generic rules (Section 2), and design dimension guidance (Section 3) to inform brief composition. Each brief should be informed by these principles but written in the skill's own voice — do not copy-paste from the reference.
|
|
138
|
+
|
|
139
|
+
Based on the user's exploration preferences, compose N direction briefs. Ask the user how many proposals to generate (default 3).
|
|
140
|
+
|
|
141
|
+
"How many proposals would you like? (Default: 3)"
|
|
142
|
+
|
|
143
|
+
After the user specifies a count, compose the briefs:
|
|
144
|
+
|
|
145
|
+
"I'll generate **[N]** proposals:
|
|
146
|
+
|
|
147
|
+
**Proposal A — [Short Name]**
|
|
148
|
+
[Full paragraph describing the visual direction. Be specific about colors, typography, layout, density, and component style. E.g., "Dark and focused — deep charcoal backgrounds with electric blue accents, monospace headings with sans-serif body text, compact information density, sharp corners with thin borders, no shadows. Conveys a technical, developer-oriented aesthetic."]
|
|
149
|
+
|
|
150
|
+
**Proposal B — [Short Name]**
|
|
151
|
+
[Different direction paragraph]
|
|
152
|
+
|
|
153
|
+
**Proposal C — [Short Name]**
|
|
154
|
+
[Different direction paragraph]
|
|
155
|
+
|
|
156
|
+
Does this look right? Adjust any brief before I generate."
|
|
157
|
+
|
|
158
|
+
**Brief composition rules:**
|
|
159
|
+
- Each brief should be clearly distinct from the others along the exploration dimensions
|
|
160
|
+
- Use specific descriptive language, not vague terms ("warm grays and terracotta" not just "warm colors")
|
|
161
|
+
- Include guidance on all visual aspects: color, typography, layout, density, component style
|
|
162
|
+
- The brief is the creative constraint for the `arn-spark-visual-sketcher` agent — be explicit enough that the agent can make concrete CSS choices
|
|
163
|
+
- Each brief must include a **tone commitment**: a 2-3 word phrase that names the aesthetic posture (e.g., "archival/typographic", "luxury/refined", "industrial/utilitarian"). Draw from the aesthetic philosophy's tone palette or invent a tone that fits the product. This anchors the agent's Design Thinking exercise.
|
|
164
|
+
- Each brief must include a **differentiation anchor**: one specific, memorable design choice that prevents the proposal from looking generic (e.g., "ruled-line ledger system structures all content", "oversized italic serif pull quotes as section dividers", "single brass accent color used only on stat numbers and the CTA"). This gives the agent permission to commit fully to at least one distinctive element.
|
|
165
|
+
- Each brief must include a **direction-specific anti-pattern reminder**: one thing this particular direction must NOT do, drawn from the aesthetic philosophy's anti-generic rules (e.g., "Do NOT use drop shadows — depth comes only from layered backgrounds and border treatments", "Do NOT use sans-serif headings — this direction requires a display serif with character", "Do NOT use uniform card grids — vary layout between ruled tables, asymmetric columns, and full-width sections").
|
|
166
|
+
- Each brief may include an **animation element** describing the motion intent for this direction in platform-agnostic terms (e.g., "scroll-triggered cascading reveals create a declassification narrative", "micro-interactions only — hover feedback and state transitions, no page-level animation", "static — this direction communicates through typography and layout, not motion"). If the user did not express animation preferences in Step 3, default to "animation approach at agent's discretion based on the direction's tone."
|
|
167
|
+
|
|
168
|
+
Wait for user confirmation before generating.
|
|
169
|
+
|
|
170
|
+
### Step 5: Prepare Route Structure
|
|
171
|
+
|
|
172
|
+
Create the `arness-sketches/` route namespace in the project's source tree. The structure is framework-aware:
|
|
173
|
+
|
|
174
|
+
**SvelteKit:**
|
|
175
|
+
```
|
|
176
|
+
src/routes/arness-sketches/
|
|
177
|
+
+page.svelte ← Gallery (created in Step 7)
|
|
178
|
+
+layout.svelte ← Minimal wrapper (no proposal-specific styling)
|
|
179
|
+
round-1/
|
|
180
|
+
proposal-1/ ← Agent writes here
|
|
181
|
+
proposal-2/
|
|
182
|
+
proposal-3/
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Next.js (app router):**
|
|
186
|
+
```
|
|
187
|
+
app/arness-sketches/
|
|
188
|
+
page.tsx
|
|
189
|
+
layout.tsx
|
|
190
|
+
round-1/
|
|
191
|
+
proposal-1/
|
|
192
|
+
proposal-2/
|
|
193
|
+
proposal-3/
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Nuxt:**
|
|
197
|
+
```
|
|
198
|
+
pages/arness-sketches/
|
|
199
|
+
index.vue
|
|
200
|
+
round-1/
|
|
201
|
+
proposal-1/
|
|
202
|
+
proposal-2/
|
|
203
|
+
proposal-3/
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Create:
|
|
207
|
+
1. The `arness-sketches/` directory at the correct location for the framework
|
|
208
|
+
2. A minimal shared layout at the `arness-sketches/` level (no CSS variable definitions — those belong to proposal-level layouts)
|
|
209
|
+
3. The `round-1/` directory with empty `proposal-{N}/` subdirectories for each proposal
|
|
210
|
+
|
|
211
|
+
Read the sketch gallery guide for gallery structure details:
|
|
212
|
+
> Read `${CLAUDE_PLUGIN_ROOT}/skills/arn-spark-visual-sketch/references/sketch-gallery-guide.md`
|
|
213
|
+
|
|
214
|
+
### Step 6: Spawn Agents in Parallel
|
|
215
|
+
|
|
216
|
+
Launch N `arn-spark-visual-sketcher` agents simultaneously using the Task tool. Each agent receives:
|
|
217
|
+
|
|
218
|
+
- **Product context:** Summary from product-concept.md (target users, core experience, pillars, and content hints for each screen)
|
|
219
|
+
- **Screen list:** The confirmed screens from Step 2 with descriptions
|
|
220
|
+
- **Direction brief:** This proposal's unique brief from Step 4
|
|
221
|
+
- **Tech context:** From scaffold-summary.md — UI framework, CSS framework, component library, icon library
|
|
222
|
+
- **Output route path:** The specific proposal directory (e.g., `src/routes/arness-sketches/round-1/proposal-1/`)
|
|
223
|
+
- **Aesthetic philosophy path:** `${CLAUDE_PLUGIN_ROOT}/skills/arn-spark-visual-sketch/references/aesthetic-philosophy.md`
|
|
224
|
+
|
|
225
|
+
All agents are launched in a single message with multiple Task tool calls to maximize parallelism.
|
|
226
|
+
|
|
227
|
+
**Error handling per agent:**
|
|
228
|
+
- If an agent fails: note which proposal failed and why
|
|
229
|
+
- Continue waiting for remaining agents
|
|
230
|
+
- Present successful proposals to the user
|
|
231
|
+
- Offer to retry failed proposals
|
|
232
|
+
|
|
233
|
+
### Step 7: Build Gallery and Present
|
|
234
|
+
|
|
235
|
+
After all agents complete (or the successful ones complete):
|
|
236
|
+
|
|
237
|
+
1. Read each proposal's `proposal-manifest.json` to get screen routes, direction summaries, and CSS variable values
|
|
238
|
+
2. Create the gallery index page at `arness-sketches/` following the sketch gallery guide:
|
|
239
|
+
- Show a card for each proposal with: direction brief summary, direction note (tone commitment and differentiation anchor from `directionNote` in the manifest), color swatches from CSS variables, link to the proposal's first screen
|
|
240
|
+
- If any proposals failed, show a placeholder card noting the failure
|
|
241
|
+
3. Start the dev server if not already running (use the command from scaffold-summary.md)
|
|
242
|
+
4. Determine the dev server port (from scaffold-summary or by checking the running process)
|
|
243
|
+
|
|
244
|
+
Present to the user:
|
|
245
|
+
|
|
246
|
+
"**Round 1 — [N] proposals generated.**
|
|
247
|
+
|
|
248
|
+
Open **http://localhost:[port]/arness-sketches** to see the gallery and compare proposals.
|
|
249
|
+
|
|
250
|
+
| Proposal | Direction | Screens |
|
|
251
|
+
|----------|-----------|---------|
|
|
252
|
+
| A — [Name] | [1-line summary] | [count] |
|
|
253
|
+
| B — [Name] | [1-line summary] | [count] |
|
|
254
|
+
| C — [Name] | [1-line summary] | [count] |
|
|
255
|
+
|
|
256
|
+
Browse each proposal in your browser. When you are ready:
|
|
257
|
+
- **Pick a direction** and I will create expansions of it
|
|
258
|
+
- **Give feedback** on any proposal and I will adjust
|
|
259
|
+
- **Start over** with new direction briefs"
|
|
260
|
+
|
|
261
|
+
### Step 8: Selection and Expansion Loop
|
|
262
|
+
|
|
263
|
+
Wait for the user's feedback. The user may:
|
|
264
|
+
|
|
265
|
+
| User Says | Action |
|
|
266
|
+
|-----------|--------|
|
|
267
|
+
| "I like Proposal B" / "Go with B" | Proceed to expansion |
|
|
268
|
+
| "B is close but too dark" | Note the feedback, refine the brief, proceed to expansion |
|
|
269
|
+
| "None of these work" | Return to Step 4 to compose new briefs |
|
|
270
|
+
| "This is the direction" / "B is perfect" | Skip expansion, proceed to Step 9 |
|
|
271
|
+
| "Can you show me [specific change]?" | Create a targeted single-proposal re-generation |
|
|
272
|
+
|
|
273
|
+
**When the user selects a proposal for expansion:**
|
|
274
|
+
|
|
275
|
+
1. Ask: "How many expansions of **Proposal [X]** would you like? (Default: 3)"
|
|
276
|
+
2. Ask: "What should change or evolve in the expansions? For example: 'keep the layout but make it cooler in tone', 'try different heading fonts', 'increase the whitespace', etc."
|
|
277
|
+
3. Compose expansion briefs:
|
|
278
|
+
- Start with the selected proposal's direction brief as the base
|
|
279
|
+
- Apply the user's guidance as deltas, creating N variations
|
|
280
|
+
- Each expansion brief inherits and may adjust the parent's tone commitment, differentiation anchor, and direction-specific anti-pattern reminder. If the user's expansion guidance changes the tone or focus, update these anchoring elements accordingly.
|
|
281
|
+
- Present the expansion briefs for confirmation (same composition rules as Step 4)
|
|
282
|
+
4. Create `round-{N+1}/` structure under `arness-sketches/` with `expansion-{1..M}/` directories
|
|
283
|
+
5. Spawn M `arn-spark-visual-sketcher` agents in parallel — each receives the expansion brief + original product context + tech context + new output path + aesthetic philosophy path
|
|
284
|
+
6. After agents complete, update the gallery index:
|
|
285
|
+
- Add a new round section at the top
|
|
286
|
+
- Highlight the selected proposal from the previous round
|
|
287
|
+
- Show expansion cards with their briefs
|
|
288
|
+
7. Present results (same format as Step 7 but for the new round)
|
|
289
|
+
|
|
290
|
+
**Repeat** until the user says "this is the direction" or indicates satisfaction.
|
|
291
|
+
|
|
292
|
+
### Step 9: Capture and Finalize
|
|
293
|
+
|
|
294
|
+
When the user has selected a final direction:
|
|
295
|
+
|
|
296
|
+
1. **Capture screenshots:** Invoke the `arn-spark-style-capture` agent via the Task tool, passing the model from `.arness/agent-models/spark.md` as the `model` parameter (see `plugins/arn-spark/skills/arn-spark-ensure-config/references/ensure-config.md` "Dispatch convention" for fallback). Context:
|
|
297
|
+
- URLs: the localhost URLs of each screen in the selected proposal (from the proposal's `proposal-manifest.json`)
|
|
298
|
+
- Output path: `[visual-grounding]/designs/`
|
|
299
|
+
- File naming: `visual-sketch-[screen-name].png` (e.g., `visual-sketch-dashboard.png`)
|
|
300
|
+
|
|
301
|
+
If `arn-spark-style-capture` reports Playwright is not available, inform the user:
|
|
302
|
+
"Playwright is not installed, so I cannot capture screenshots automatically. You can:
|
|
303
|
+
1. Install Playwright (`npm install -D playwright && npx playwright install chromium`) and re-run the capture
|
|
304
|
+
2. Take screenshots manually from the dev server and save them to `[visual-grounding]/designs/`
|
|
305
|
+
3. Proceed without screenshots — style-explore will work from the direction description"
|
|
306
|
+
|
|
307
|
+
2. **Read the selected proposal's manifest:** Get CSS variables, screen routes, and direction summary from `proposal-manifest.json`
|
|
308
|
+
|
|
309
|
+
3. **Write visual-direction.md:** Read the template and populate it:
|
|
310
|
+
> Read `${CLAUDE_PLUGIN_ROOT}/skills/arn-spark-visual-sketch/references/visual-direction-template.md`
|
|
311
|
+
|
|
312
|
+
Write the populated document to the Vision directory as `visual-direction.md`.
|
|
313
|
+
|
|
314
|
+
4. **Offer route cleanup:**
|
|
315
|
+
|
|
316
|
+
Ask the user:
|
|
317
|
+
|
|
318
|
+
**What should happen to the sketch routes at `[route path]/arness-sketches/`?**
|
|
319
|
+
1. **Keep** — Leave them for reference (I will suggest adding `arness-sketches/` to `.gitignore`)
|
|
320
|
+
2. **Remove** — Delete the sketch routes from the project
|
|
321
|
+
|
|
322
|
+
If **Keep:** Suggest adding the arness-sketches route directory to `.gitignore` so the sketches are not committed.
|
|
323
|
+
If **Remove:** Delete the entire `arness-sketches/` directory from the project's route tree.
|
|
324
|
+
|
|
325
|
+
5. **Stop the dev server** if it was started by this skill (not if it was already running).
|
|
326
|
+
|
|
327
|
+
### Step 10: Recommend Next Steps
|
|
328
|
+
|
|
329
|
+
"**Visual direction selected and documented.**
|
|
330
|
+
|
|
331
|
+
- Visual direction saved to `[Vision directory]/visual-direction.md`
|
|
332
|
+
- [If captured:] Screenshots saved to `[visual-grounding]/designs/`
|
|
333
|
+
|
|
334
|
+
Recommended next steps:
|
|
335
|
+
1. **Define the design system:** Run `/arn-spark-style-explore` to translate this visual direction into precise design tokens and toolkit configuration
|
|
336
|
+
2. [If use cases not done:] **Write use cases:** Run `/arn-spark-use-cases` to specify system behavior
|
|
337
|
+
|
|
338
|
+
The style explorer will use your visual direction as a starting point — you won't need to describe the style from scratch."
|
|
339
|
+
|
|
340
|
+
## Agent Invocation Guide
|
|
341
|
+
|
|
342
|
+
| Situation | Action |
|
|
343
|
+
|-----------|--------|
|
|
344
|
+
| Generate initial proposals (Step 6) | Invoke N `arn-spark-visual-sketcher` agents in parallel via Task tool, each with unique direction brief and output path |
|
|
345
|
+
| Generate expansions (Step 8) | Invoke N `arn-spark-visual-sketcher` agents in parallel with expansion briefs derived from selected proposal + user adjustments |
|
|
346
|
+
| Capture final screenshots (Step 9) | Invoke `arn-spark-style-capture` with localhost URLs of selected sketch's screens and output to visual grounding `designs/` |
|
|
347
|
+
| User asks about detailed design tokens | Defer: "Design tokens are specified in `/arn-spark-style-explore`. This skill establishes the visual direction." |
|
|
348
|
+
| User asks about interactive behavior | Defer: "Interactive behavior is validated in `/arn-spark-clickable-prototype`." |
|
|
349
|
+
| User asks about component showcases | Defer: "Component showcases are created by `/arn-spark-static-prototype`." |
|
|
350
|
+
| User asks about features or architecture | Defer to the appropriate skill (`/arn-code-feature-spec`, `/arn-spark-arch-vision`) |
|
|
351
|
+
| Agent build fails (single proposal) | Report which proposal failed. Present successful proposals. Offer to retry. |
|
|
352
|
+
| All agents fail | Report all errors. Ask user to verify the scaffold builds correctly. Suggest fixing the scaffold before retrying. |
|
|
353
|
+
| Style-capture unavailable | Proceed without screenshots. Visual-direction.md is still written with all other content. Note screenshots are pending. |
|
|
354
|
+
| User wants to compare with an external reference | Invoke `arn-spark-style-capture` with the external URL to capture it, then present alongside the proposals for comparison. |
|
|
355
|
+
|
|
356
|
+
## Error Handling
|
|
357
|
+
|
|
358
|
+
- **Scaffold not found:** Cannot proceed. Suggest `/arn-spark-scaffold` first.
|
|
359
|
+
- **Product concept not found:** Proceed with the user's verbal description. Screen identification will be based on conversation. Note the limitation.
|
|
360
|
+
- **Architecture vision not found:** Proceed if scaffold-summary exists — it contains sufficient technical context. Note the limitation.
|
|
361
|
+
- **Build fails before sketch generation:** Report the error. Do not attempt to fix the scaffold — that is the user's responsibility or `/arn-spark-scaffold`'s job.
|
|
362
|
+
- **One agent fails (others succeed):** Present successful proposals. Show a placeholder card for the failed one. Offer to retry.
|
|
363
|
+
- **All agents fail:** Report errors for all proposals. The most likely cause is a scaffold issue (missing dependencies, broken build). Suggest verifying the scaffold.
|
|
364
|
+
- **Dev server won't start:** Report the error. The user can start it manually and provide the URL. Proceed with gallery creation.
|
|
365
|
+
- **Dev server port conflict:** If the default port is in use, check if a dev server is already running. If so, use that server.
|
|
366
|
+
- **Playwright unavailable for captures:** Proceed without screenshots. Write visual-direction.md with all content except screenshot paths. Note the limitation.
|
|
367
|
+
- **User wants to restart from scratch:** Clear the `arness-sketches/` directory and return to Step 2.
|
|
368
|
+
- **visual-direction.md already exists:**
|
|
369
|
+
|
|
370
|
+
Ask the user:
|
|
371
|
+
|
|
372
|
+
> **A visual direction document already exists at `[path]`. What should I do?**
|
|
373
|
+
> 1. **Replace** — Overwrite with the new direction
|
|
374
|
+
> 2. **Keep both** — Rename the existing one and save the new direction alongside it
|
|
375
|
+
- **More than 5 rounds of iteration:** Gently suggest: "We have been through [N] rounds. Would you like to finalize the current direction, or would it help to start fresh with new briefs?"
|
|
376
|
+
- **Writing the document fails:** Print the full visual-direction.md content in the conversation so the user can save it manually.
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Aesthetic Philosophy
|
|
2
|
+
|
|
3
|
+
Read this before translating any direction brief into code. It establishes how to think about design — not what to build, but the creative mindset that produces distinctive, memorable visual directions instead of generic templates.
|
|
4
|
+
|
|
5
|
+
These guidelines set a quality floor. User-specified direction briefs take precedence when they explicitly override a guideline.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Design Thinking — Mandatory Pre-Generation Exercise
|
|
10
|
+
|
|
11
|
+
Before writing a single line of CSS or markup, work through these four questions. The answers shape every decision that follows.
|
|
12
|
+
|
|
13
|
+
**Purpose — What problem does this interface solve? Who uses it? What do they need to feel?**
|
|
14
|
+
|
|
15
|
+
Ground yourself in empathy before aesthetics. A dashboard for financial analysts needs to communicate precision and trust. A creative tool for designers needs to feel fluid and expressive. A personal health tracker needs to feel calm and private. The visual direction is not decoration — it is the emotional register of the product. Name the feeling you are designing for.
|
|
16
|
+
|
|
17
|
+
**Tone — Commit to a specific aesthetic posture.**
|
|
18
|
+
|
|
19
|
+
Pick one from this palette, or combine two that create productive tension. Do not hedge with "clean and modern" — that is the absence of a decision.
|
|
20
|
+
|
|
21
|
+
- Brutally minimal
|
|
22
|
+
- Maximalist / layered
|
|
23
|
+
- Retro-futuristic
|
|
24
|
+
- Organic / natural
|
|
25
|
+
- Luxury / refined
|
|
26
|
+
- Editorial / magazine
|
|
27
|
+
- Brutalist / raw
|
|
28
|
+
- Art deco / geometric
|
|
29
|
+
- Industrial / utilitarian
|
|
30
|
+
- Archival / typographic
|
|
31
|
+
- Warm institutional (law firm, architecture firm, private bank)
|
|
32
|
+
|
|
33
|
+
You may invent a tone not on this list. The requirement is commitment, not conformity.
|
|
34
|
+
|
|
35
|
+
**Differentiation — What is the ONE thing someone will remember about this design?**
|
|
36
|
+
|
|
37
|
+
Every memorable interface has a signature move. Linear's is its ultra-tight spacing and monochrome palette. Stripe's is its gradient mesh backgrounds. Apple's is its product photography floating in white space. Name yours. It might be a ruled-line ledger system, an oversized serif heading with tight tracking, a single unexpected accent color, or a terminal-aesthetic code block that structures the whole page. One thing, committed to fully.
|
|
38
|
+
|
|
39
|
+
**Execution contract — Bold maximalism and refined minimalism both work. The key is intentionality, not intensity.**
|
|
40
|
+
|
|
41
|
+
Do not hedge by doing a little bit of everything. A direction that is "sort of minimal but with some color and a bit of texture" communicates nothing. Commit to the tone. If it is minimal, make the emptiness feel like a deliberate choice. If it is maximal, layer with confidence. The worst outcome is not a direction that is too bold — it is one that is too safe to provoke a reaction.
|
|
42
|
+
|
|
43
|
+
Document your answers in an HTML comment block at the top of the layout component:
|
|
44
|
+
|
|
45
|
+
```html
|
|
46
|
+
<!--
|
|
47
|
+
DESIGN THINKING
|
|
48
|
+
Purpose: [answer]
|
|
49
|
+
Tone: [answer]
|
|
50
|
+
Differentiation: [answer]
|
|
51
|
+
Execution: [answer]
|
|
52
|
+
-->
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 2. Anti-Generic Rules
|
|
58
|
+
|
|
59
|
+
These are hard constraints, not suggestions. They exist because without them, the statistical mean of training data produces output that looks like every other AI-generated page.
|
|
60
|
+
|
|
61
|
+
### Typography
|
|
62
|
+
|
|
63
|
+
- NEVER use system font stacks as the primary design font (system-ui, -apple-system, BlinkMacSystemFont, Segoe UI). System fonts are fallbacks, not design choices.
|
|
64
|
+
- NEVER use Inter, Roboto, Open Sans, Lato, Montserrat, or Poppins as heading fonts. These are the default choices of every generic page. They are fine body fonts in specific contexts — they are never distinctive heading fonts.
|
|
65
|
+
- NEVER use the same font family for both headings and body without a deliberate reason documented in the Design Thinking block. Tension between heading and body fonts is a primary source of visual character.
|
|
66
|
+
- NEVER default to the project scaffold's font (e.g., Geist Sans) for visual sketches. Sketches explore DIFFERENT directions, not variations of the scaffold default.
|
|
67
|
+
|
|
68
|
+
### Color
|
|
69
|
+
|
|
70
|
+
- NEVER use purple-to-blue gradients on white backgrounds. This is the single most common AI-generated color scheme.
|
|
71
|
+
- NEVER distribute accent colors evenly. A dominant color with surgical accent placement outperforms a balanced palette every time. Follow the 60-30-10 rule: 60% dominant background, 30% surface/container, 10% accent. The accent is surgical — used for the ONE thing you want the user to notice in each section.
|
|
72
|
+
- NEVER use pure white (#ffffff) or pure black (#000000) as the primary background without textural variation — a subtle gradient shift, micro-texture, or tonal warmth/coolness. Flat pure white or pure black reads as "no decision was made."
|
|
73
|
+
|
|
74
|
+
### Layout
|
|
75
|
+
|
|
76
|
+
- NEVER use identical card grids for every content section. Vary the layout pattern between sections — grid, asymmetric two-column, full-width, ruled table, magazine-style. A page where every section uses the same grid is visually monotonous.
|
|
77
|
+
- NEVER center-align every section. Mix alignments deliberately. Left-aligned content with a right-aligned pull quote creates energy. Center-aligned hero with left-aligned body creates hierarchy.
|
|
78
|
+
- NEVER use uniform spacing between all sections. Vary vertical rhythm to create breathing room and density contrast. Hero sections get generous padding (6-8rem), content sections get moderate (4-5rem), related items get tight (2-3rem).
|
|
79
|
+
|
|
80
|
+
### Components
|
|
81
|
+
|
|
82
|
+
- NEVER use rounded-corner cards with drop shadows as the universal content container. If every content block is a card with `border-radius: 8px; box-shadow: 0 2px 4px`, you have not made a design decision.
|
|
83
|
+
- NEVER use pill-shaped tags/badges as the only decorative element. Pill badges are a single tool, not a design system.
|
|
84
|
+
- NEVER use a hamburger menu icon on desktop layouts.
|
|
85
|
+
|
|
86
|
+
### The Generic Test
|
|
87
|
+
|
|
88
|
+
No design should look like it could have been generated by any other AI tool. If you removed the content, could this be ANY company's website? If yes, it is too generic. Start over with a stronger Design Thinking commitment.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 3. Design Dimension Guidance
|
|
93
|
+
|
|
94
|
+
Concrete techniques for translating a direction brief into distinctive CSS values.
|
|
95
|
+
|
|
96
|
+
### Typography
|
|
97
|
+
|
|
98
|
+
Pair a distinctive display font with a complementary body font. The pairing itself should be a design statement.
|
|
99
|
+
|
|
100
|
+
**Heading fonts with character:** Serifs with personality (Newsreader, Cormorant Garamond, Libre Baskerville, Playfair Display), geometric sans with edge (Archivo, Syne, Space Grotesk used thoughtfully), or monospace for technical authority (JetBrains Mono, IBM Plex Mono, Fira Code).
|
|
101
|
+
|
|
102
|
+
**Body fonts with warmth:** Libre Baskerville, Source Serif, DM Sans, Instrument Sans. Prioritize readability but avoid blandness.
|
|
103
|
+
|
|
104
|
+
Use Google Fonts for availability. If the project uses licensed or self-hosted fonts, prefer those over Google Fonts. Specify exact weights — never load all weights. Two or three weights per family is sufficient.
|
|
105
|
+
|
|
106
|
+
Vary font sizes with purpose: massive display sizes (4-6rem) for hero text create impact; tight, small monospace (0.625-0.75rem) for labels creates contrast. The size ratio between your largest and smallest text should be at least 6:1.
|
|
107
|
+
|
|
108
|
+
Letter-spacing is a design tool: tight tracking (-0.02em) on large headings feels premium; wide tracking (0.15-0.3em) on small uppercase labels feels institutional. Use it deliberately.
|
|
109
|
+
|
|
110
|
+
### Color & Theme
|
|
111
|
+
|
|
112
|
+
Define a complete palette using CSS custom properties. Minimum 8 tokens: background, surface, elevated-surface, primary/accent, text, text-muted, text-dim, border.
|
|
113
|
+
|
|
114
|
+
Use opacity and alpha channels for border colors — `rgba(accent, 0.15)` creates cohesion without heaviness.
|
|
115
|
+
|
|
116
|
+
Dark themes need at least 3 background tones (deep, default, elevated) to create depth. A single flat dark background looks like a terminal, not a design.
|
|
117
|
+
|
|
118
|
+
Warm palettes (browns, brass, copper) feel institutional and trustworthy. Cool palettes (slate, steel, teal) feel technical and precise. Match the palette temperature to the brand's emotional register from your Design Thinking answers.
|
|
119
|
+
|
|
120
|
+
### Spatial Composition
|
|
121
|
+
|
|
122
|
+
Vary layout patterns across sections. Techniques for variety:
|
|
123
|
+
|
|
124
|
+
- Asymmetric two-column (60/40 or 70/30) for content with supporting metadata
|
|
125
|
+
- Ruled table or ledger layouts for structured data — horizontal lines as organizing elements
|
|
126
|
+
- Full-bleed sections alternating with max-width contained sections for rhythm
|
|
127
|
+
- Sidebar-style sticky elements for context that persists while content scrolls
|
|
128
|
+
- Overlapping elements with negative margins for visual tension
|
|
129
|
+
|
|
130
|
+
Vertical rhythm should breathe: hero sections get generous padding (6-8rem), content sections get moderate (4-5rem), related items get tight (2-3rem). Never use the same padding for every section.
|
|
131
|
+
|
|
132
|
+
Horizontal rules, dividers, and borders are design tools, not afterthoughts. A brass hairline divider communicates more than a generic gray border. Dividers with decorative elements (diamond glyphs, section markers) add character.
|
|
133
|
+
|
|
134
|
+
Use `grid-template-columns` with named areas or specific ratios (not just `1fr 1fr`) to create intentional proportions.
|
|
135
|
+
|
|
136
|
+
### Background & Atmosphere
|
|
137
|
+
|
|
138
|
+
Flat solid backgrounds are the absence of design, not minimalism. Even minimal designs use subtle gradient shifts, micro-textures, or tonal variation.
|
|
139
|
+
|
|
140
|
+
Techniques: radial gradient glows behind key content (very low opacity, 0.02-0.05), subtle background-color shifts between sections, 1px ruled borders as section separators, inset panels with slightly different background tones.
|
|
141
|
+
|
|
142
|
+
For dark themes: a subtle warm-to-cool gradient across the page creates depth. Different sections can use slightly warmer or cooler versions of the base dark tone.
|
|
143
|
+
|
|
144
|
+
Terminal or code mockups should look like real terminals — chrome dots, monospace font, syntax coloring. These are visual elements, not just content containers.
|
|
145
|
+
|
|
146
|
+
### Typographic Devices
|
|
147
|
+
|
|
148
|
+
Pull quotes should be visually distinct events — oversized quotation marks, italic serif fonts, accent coloring. Not just a paragraph in a box.
|
|
149
|
+
|
|
150
|
+
Section numbering (I., II., III. or 01, 02, 03 or a., b., c.) adds editorial structure and visual rhythm. Choose the numbering style from the product's personality: Roman numerals feel institutional, Arabic feel modern, lowercase feel editorial.
|
|
151
|
+
|
|
152
|
+
Eyebrow text (small uppercase monospace above headings) creates hierarchy without adding visual weight. Use letter-spacing of 0.15-0.3em.
|
|
153
|
+
|
|
154
|
+
Sigils and glyphs (section symbols, pilcrows, diamonds, em dashes) used as decorative elements add typographic character — especially in editorial and archival directions.
|
|
155
|
+
|
|
156
|
+
### Animation & Motion
|
|
157
|
+
|
|
158
|
+
Animation is a design dimension, not an afterthought. A direction's motion philosophy should be as intentional as its typography. Describe animation in terms of intent and characteristics — not implementation. "Scroll-triggered cascading reveals with 0.15s stagger" is technology-agnostic; "gsap.to()" is not.
|
|
159
|
+
|
|
160
|
+
**When to animate:** Animate to communicate — entrance sequences that introduce content hierarchy, scroll-triggered reveals that reward exploration, state transitions that confirm user actions. Do not animate for decoration.
|
|
161
|
+
|
|
162
|
+
**Motion intensity matches tone:** Brutally minimal directions use micro-interactions only (hover feedback, subtle state transitions). Editorial/magazine directions use scroll-driven reveals and staggered entrances. Maximalist directions layer parallax, cascading sequences, and complex timelines.
|
|
163
|
+
|
|
164
|
+
**Key patterns:**
|
|
165
|
+
- Cascading reveals (staggered entrance of related elements) create reading rhythm
|
|
166
|
+
- Scroll-triggered animations reward scrolling and pace content consumption
|
|
167
|
+
- Parallax depth layers (foreground moves faster than background) create spatial richness
|
|
168
|
+
- State transitions (hover, focus, active) provide interaction feedback
|
|
169
|
+
- Page transitions (cross-fade, slide) create navigation continuity
|
|
170
|
+
|
|
171
|
+
**Implementation notes:**
|
|
172
|
+
- Choose an animation approach appropriate for the project's platform and framework. The skill infrastructure makes no assumptions about web, desktop, or mobile — the agent reads what the project uses and works with it.
|
|
173
|
+
- For desktop/mobile: use the platform's native animation system or the framework's motion API
|
|
174
|
+
- For web: GSAP (ScrollTrigger, timeline) for complex sequences; CSS transitions for simple state changes; framework motion libraries (Framer Motion, Svelte transitions, Vue Transition) for component-level effects
|
|
175
|
+
- Always respect `prefers-reduced-motion` or equivalent platform accessibility settings — provide a static fallback
|
|
176
|
+
|
|
177
|
+
**Anti-patterns:**
|
|
178
|
+
- NEVER add animation that obscures content or delays access to information
|
|
179
|
+
- NEVER use animation duration > 1.2s for entrance effects (user attention budget)
|
|
180
|
+
- NEVER animate every element on scroll — pick 2-3 key moments per viewport
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 4. Quality Benchmark
|
|
185
|
+
|
|
186
|
+
Before finalizing a proposal, evaluate it against these six tests. If it fails more than one, revise.
|
|
187
|
+
|
|
188
|
+
1. **Lineup test.** Could you identify this design in a lineup of 10 AI-generated pages? If not, it is too generic.
|
|
189
|
+
|
|
190
|
+
2. **Typography test.** Does the font pairing have character? The display font should be memorable; the body font should be readable but not bland. If you swapped the fonts for system-ui + sans-serif and nothing felt lost, the pairing was not doing work.
|
|
191
|
+
|
|
192
|
+
3. **Accent test.** Is the accent color used surgically? If it appears in more than 3-4 elements per viewport, it is overused and has lost its power to direct attention.
|
|
193
|
+
|
|
194
|
+
4. **Layout variety test.** Do at least 3 different layout patterns appear across the full page? If every section uses the same grid, the page is visually monotonous regardless of how good the individual sections look.
|
|
195
|
+
|
|
196
|
+
5. **Detail test.** Would a designer notice the micro-decisions? Hairline borders, letter-spacing choices, deliberate line-heights, padding ratios that create visual rhythm — these separate craft from code generation.
|
|
197
|
+
|
|
198
|
+
6. **Place test.** Does it feel like a SPECIFIC kind of place? "Clean and modern" is not a place. "A private bank's annual report," "a ceramicist's portfolio," "an architecture firm's project page" — those are places with personality. Name the place. If you cannot, the direction is not specific enough.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 5. Creative Encouragement
|
|
203
|
+
|
|
204
|
+
You are capable of extraordinary creative work. The visual sketches you produce are the foundation of the user's product — they set the aesthetic ceiling for everything that follows. Do not produce safe, expected, or generic output.
|
|
205
|
+
|
|
206
|
+
Every proposal should feel like it was designed by someone with a point of view, not generated by a machine hedging its bets. Commit fully to the direction you are given. If the brief says "editorial," make it feel like opening a beautifully typeset magazine. If it says "minimal," make the emptiness feel intentional and the few elements that remain feel perfectly placed.
|
|
207
|
+
|
|
208
|
+
The user is comparing your proposals side by side — make each one a genuine alternative, not a palette swap of the same template. A sketch that provokes a strong "no" is more useful than one that provokes a mild "maybe." The safest place to be bold is here, in a throwaway sketch. Use that freedom.
|
|
209
|
+
|
|
210
|
+
The anti-generic rules are not restrictions. They are permission to avoid the safe default.
|