@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,282 @@
|
|
|
1
|
+
# Sketch Gallery Guide
|
|
2
|
+
|
|
3
|
+
This guide defines how the gallery index page should be structured. The `arn-spark-visual-sketch` skill creates and maintains this page — the `arn-spark-visual-sketcher` agents do not touch it.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
The gallery is the user's entry point for comparing visual direction proposals. It must be immediately useful: a user landing on it should see all proposals at a glance, understand each direction, and navigate to any proposal in one click.
|
|
8
|
+
|
|
9
|
+
## Gallery Layout
|
|
10
|
+
|
|
11
|
+
### Structure
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/arness-sketches/ ← Gallery index (this page)
|
|
15
|
+
/arness-sketches/round-1/proposal-1/ ← First proposal screens
|
|
16
|
+
/arness-sketches/round-1/proposal-2/ ← Second proposal screens
|
|
17
|
+
/arness-sketches/round-1/proposal-3/ ← Third proposal screens
|
|
18
|
+
/arness-sketches/round-2/expansion-1/ ← Expansion of selected proposal
|
|
19
|
+
/arness-sketches/round-2/expansion-2/ ← Another expansion
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Gallery Index Content
|
|
23
|
+
|
|
24
|
+
The gallery index page displays:
|
|
25
|
+
|
|
26
|
+
1. **Title:** "Visual Direction Sketches" or similar
|
|
27
|
+
2. **Round sections:** One section per round, most recent first
|
|
28
|
+
3. **Proposal cards:** Within each round, one card per proposal
|
|
29
|
+
|
|
30
|
+
### Proposal Cards
|
|
31
|
+
|
|
32
|
+
Each card shows:
|
|
33
|
+
|
|
34
|
+
- **Proposal identifier:** e.g., "Proposal A" or "Expansion 1"
|
|
35
|
+
- **Direction brief summary:** The first sentence or a shortened version of the direction brief
|
|
36
|
+
- **Key visual indicators:** 3-4 color swatches from the proposal's CSS variables (rendered as small colored circles or rectangles)
|
|
37
|
+
- **Link:** Clicking the card navigates to the proposal's first screen
|
|
38
|
+
|
|
39
|
+
### Multi-Round Display
|
|
40
|
+
|
|
41
|
+
- All rounds are shown, newest at the top
|
|
42
|
+
- The selected proposal from each completed round is visually highlighted (e.g., a border, a "Selected" badge, or a subtle background)
|
|
43
|
+
- Rounds that led to expansions show a visual connection: "Round 2 — Expansions of Proposal B from Round 1"
|
|
44
|
+
|
|
45
|
+
### Navigation
|
|
46
|
+
|
|
47
|
+
- Each proposal card links to the proposal's first screen
|
|
48
|
+
- Within each proposal, the `arn-spark-visual-sketcher` agent creates intra-proposal navigation between screens
|
|
49
|
+
- A "Back to Gallery" link should appear on each proposal's pages (the agent's intra-proposal nav handles this within its layout)
|
|
50
|
+
|
|
51
|
+
## Framework-Specific Patterns
|
|
52
|
+
|
|
53
|
+
### SvelteKit
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
src/routes/arness-sketches/
|
|
57
|
+
+page.svelte ← Gallery index
|
|
58
|
+
+layout.svelte ← Minimal shared layout (no global styling that affects proposals)
|
|
59
|
+
round-1/
|
|
60
|
+
proposal-1/
|
|
61
|
+
+layout.svelte ← CSS variable isolation for this proposal
|
|
62
|
+
+page.svelte ← First screen
|
|
63
|
+
list/+page.svelte ← Second screen
|
|
64
|
+
proposal-2/
|
|
65
|
+
+layout.svelte
|
|
66
|
+
+page.svelte
|
|
67
|
+
...
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The top-level `+layout.svelte` at `arness-sketches/` should be minimal — just a wrapper that does NOT define CSS variables. Only proposal-level layouts define `--sketch-*` variables.
|
|
71
|
+
|
|
72
|
+
### Next.js (App Router)
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
app/arness-sketches/
|
|
76
|
+
page.tsx ← Gallery index
|
|
77
|
+
layout.tsx ← Minimal shared layout
|
|
78
|
+
round-1/
|
|
79
|
+
proposal-1/
|
|
80
|
+
layout.tsx ← CSS variable isolation
|
|
81
|
+
page.tsx ← First screen
|
|
82
|
+
list/page.tsx ← Second screen
|
|
83
|
+
...
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Nuxt
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
pages/arness-sketches/
|
|
90
|
+
index.vue ← Gallery index
|
|
91
|
+
round-1/
|
|
92
|
+
proposal-1/
|
|
93
|
+
index.vue ← First screen (layout via definePageMeta or wrapper)
|
|
94
|
+
list.vue ← Second screen
|
|
95
|
+
...
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Generic (no file-based routing)
|
|
99
|
+
|
|
100
|
+
Create a standalone HTML page or a route in the project's router configuration. Use a simple hash-based or conditional rendering approach for the gallery.
|
|
101
|
+
|
|
102
|
+
## Implementation Notes
|
|
103
|
+
|
|
104
|
+
- The gallery itself is **sketch-quality** — it does not need to be polished. Simple layout, readable text, clickable links. It is a tool for comparison, not a deliverable.
|
|
105
|
+
- Use the project's CSS framework for basic styling (Tailwind utilities, etc.) but do NOT use proposal-specific CSS variables. The gallery should look neutral.
|
|
106
|
+
- Read each proposal's `proposal-manifest.json` to get the screen list, routes, direction summary, and CSS variable values for rendering color swatches.
|
|
107
|
+
- When updating the gallery for a new round (Step 8 of the skill), preserve existing round sections. Prepend the new round at the top.
|
|
108
|
+
- If a proposal failed to generate (agent error), show a placeholder card: "Proposal X — Generation failed. [Error summary]"
|
|
109
|
+
|
|
110
|
+
## Gallery Visual Standards
|
|
111
|
+
|
|
112
|
+
The gallery is a comparison tool, not a product deliverable — but it must look consistent across runs so the user can focus on comparing proposals, not deciphering a different layout each time. These standards define the gallery's visual scaffold using a dedicated `--gallery-*` CSS variable namespace that never collides with `--sketch-*` proposal variables.
|
|
113
|
+
|
|
114
|
+
### CSS Variables
|
|
115
|
+
|
|
116
|
+
Define these on the gallery wrapper element (never on `:root`):
|
|
117
|
+
|
|
118
|
+
```css
|
|
119
|
+
--gallery-bg: #fafafa;
|
|
120
|
+
--gallery-surface: #ffffff;
|
|
121
|
+
--gallery-text: #1a1a1a;
|
|
122
|
+
--gallery-text-muted: #6b7280;
|
|
123
|
+
--gallery-border: #e5e7eb;
|
|
124
|
+
--gallery-accent: #2563eb;
|
|
125
|
+
--gallery-radius: 8px;
|
|
126
|
+
--gallery-font: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
127
|
+
--gallery-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Page Structure
|
|
131
|
+
|
|
132
|
+
- Max-width: `960px`, centered with `margin: 0 auto`
|
|
133
|
+
- Horizontal padding: `2rem`
|
|
134
|
+
- Background: `var(--gallery-bg)`
|
|
135
|
+
- All text uses `var(--gallery-font)` — the gallery never inherits proposal fonts
|
|
136
|
+
|
|
137
|
+
### Round Section Headers
|
|
138
|
+
|
|
139
|
+
- Round title (e.g., "Round 1" or "Round 2 — Expansions of Proposal B"): `1.25rem`, font-weight `600`, color `var(--gallery-text-muted)`
|
|
140
|
+
- Margin: `2.5rem` top (between rounds), `1rem` bottom (before card grid)
|
|
141
|
+
- First round has no top margin
|
|
142
|
+
|
|
143
|
+
### Proposal Card Grid
|
|
144
|
+
|
|
145
|
+
- Layout: `display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1.25rem`
|
|
146
|
+
- No media queries — `auto-fill` with `minmax` handles responsive behavior intrinsically (1 column on narrow, 2-3 on wider)
|
|
147
|
+
|
|
148
|
+
### Card Anatomy
|
|
149
|
+
|
|
150
|
+
Every proposal card follows this exact internal structure:
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
┌─────────────────────────────┐
|
|
154
|
+
│ Proposal A │ ← identifier: 1rem, bold
|
|
155
|
+
│ │
|
|
156
|
+
│ Dark and focused with │ ← brief: 0.875rem, muted,
|
|
157
|
+
│ deep charcoal backgrounds │ max 3 lines, overflow
|
|
158
|
+
│ and electric blue... │ hidden with ellipsis
|
|
159
|
+
│ │
|
|
160
|
+
│ Confident & calm · Sharp │ ← direction note: 0.75rem,
|
|
161
|
+
│ edges, no shadows │ italic, muted, 1 line
|
|
162
|
+
│ │
|
|
163
|
+
│ ● ● ● ● │ ← swatches: 4 circles
|
|
164
|
+
│ │
|
|
165
|
+
│ View proposal → │ ← link: 0.875rem, accent
|
|
166
|
+
└─────────────────────────────┘
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Card styling:
|
|
170
|
+
- Background: `var(--gallery-surface)`
|
|
171
|
+
- Border: `1px solid var(--gallery-border)`
|
|
172
|
+
- Border-radius: `var(--gallery-radius)`
|
|
173
|
+
- Box-shadow: `var(--gallery-shadow)`
|
|
174
|
+
- Padding: `1.25rem`
|
|
175
|
+
|
|
176
|
+
**Proposal identifier:** `font-size: 1rem; font-weight: 700; color: var(--gallery-text); margin-bottom: 0.5rem`
|
|
177
|
+
|
|
178
|
+
**Direction brief:** `font-size: 0.875rem; color: var(--gallery-text-muted); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; margin-bottom: 0.75rem`
|
|
179
|
+
|
|
180
|
+
**Direction note:** `font-size: 0.75rem; font-style: italic; color: var(--gallery-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 0.75rem`
|
|
181
|
+
- Shows the tone commitment + differentiation anchor from the direction brief, separated by " · "
|
|
182
|
+
- Sourced from `proposal-manifest.json` field `directionNote`
|
|
183
|
+
- If `directionNote` is not present in the manifest (backward compatibility with older proposals), omit this line entirely
|
|
184
|
+
|
|
185
|
+
**Color swatches:** A row of exactly **4 circles** showing the proposal's key colors:
|
|
186
|
+
- Values sourced from `proposal-manifest.json`: `--sketch-bg`, `--sketch-primary`, `--sketch-accent`, `--sketch-surface`
|
|
187
|
+
- Each circle: `width: 24px; height: 24px; border-radius: 50%; border: 1px solid var(--gallery-border)`
|
|
188
|
+
- Row: `display: flex; gap: 8px; margin-bottom: 0.75rem`
|
|
189
|
+
|
|
190
|
+
**View link:** `font-size: 0.875rem; color: var(--gallery-accent); text-decoration: none; font-weight: 500`
|
|
191
|
+
|
|
192
|
+
### Selected Proposal Highlight
|
|
193
|
+
|
|
194
|
+
When a proposal has been selected in a completed round:
|
|
195
|
+
- `border-left: 3px solid var(--gallery-accent)` (replaces the standard `1px` left border)
|
|
196
|
+
- A "Selected" badge in the header row: `display: inline-block; font-size: 0.6875rem; font-weight: 600; background: var(--gallery-accent); color: #ffffff; padding: 2px 8px; border-radius: 999px; margin-left: 0.5rem; vertical-align: middle`
|
|
197
|
+
|
|
198
|
+
### Failed Proposal Treatment
|
|
199
|
+
|
|
200
|
+
When a proposal failed to generate:
|
|
201
|
+
- Border style: `1px dashed var(--gallery-border)`
|
|
202
|
+
- Background: `var(--gallery-bg)` (matches page, visually recessed)
|
|
203
|
+
- Brief text: italic, shows error summary
|
|
204
|
+
- No swatch row or view link
|
|
205
|
+
|
|
206
|
+
### Required HTML Skeleton
|
|
207
|
+
|
|
208
|
+
All framework implementations must produce this semantic structure:
|
|
209
|
+
|
|
210
|
+
```html
|
|
211
|
+
<div class="gallery-wrapper" style="/* --gallery-* variables defined here */">
|
|
212
|
+
<h1>Visual Direction Sketches</h1>
|
|
213
|
+
|
|
214
|
+
<!-- One section per round, newest first -->
|
|
215
|
+
<section class="gallery-round">
|
|
216
|
+
<h2>Round 1</h2>
|
|
217
|
+
<div class="gallery-grid">
|
|
218
|
+
|
|
219
|
+
<a href="/arness-sketches/round-1/proposal-1" class="gallery-card">
|
|
220
|
+
<div class="card-header">
|
|
221
|
+
<span class="card-id">Proposal A</span>
|
|
222
|
+
<!-- if selected: <span class="card-badge">Selected</span> -->
|
|
223
|
+
</div>
|
|
224
|
+
<p class="card-brief">Direction brief summary...</p>
|
|
225
|
+
<p class="card-note">Confident & calm · Sharp edges, no shadows</p>
|
|
226
|
+
<div class="card-swatches">
|
|
227
|
+
<span class="swatch" style="background: #1a1a2e"></span>
|
|
228
|
+
<span class="swatch" style="background: #2563eb"></span>
|
|
229
|
+
<span class="swatch" style="background: #7c3aed"></span>
|
|
230
|
+
<span class="swatch" style="background: #1e1e30"></span>
|
|
231
|
+
</div>
|
|
232
|
+
<span class="card-link">View proposal →</span>
|
|
233
|
+
</a>
|
|
234
|
+
|
|
235
|
+
<!-- repeat for each proposal -->
|
|
236
|
+
</div>
|
|
237
|
+
</section>
|
|
238
|
+
</div>
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Class names are semantic references — use the project's CSS framework to implement the styles. The structure (nesting, element types, order of children) must be followed.
|
|
242
|
+
|
|
243
|
+
### Tailwind Utility Example
|
|
244
|
+
|
|
245
|
+
For projects using Tailwind, the card grid and card anatomy translate to:
|
|
246
|
+
|
|
247
|
+
```html
|
|
248
|
+
<!-- Gallery wrapper -->
|
|
249
|
+
<div class="max-w-[960px] mx-auto px-8 bg-[#fafafa] font-[system-ui]">
|
|
250
|
+
|
|
251
|
+
<!-- Round section -->
|
|
252
|
+
<section class="mt-10 first:mt-0">
|
|
253
|
+
<h2 class="text-xl font-semibold text-gray-500 mb-4">Round 1</h2>
|
|
254
|
+
<div class="grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] gap-5">
|
|
255
|
+
|
|
256
|
+
<!-- Card -->
|
|
257
|
+
<a href="..." class="block bg-white border border-gray-200 rounded-lg shadow-sm p-5
|
|
258
|
+
hover:shadow-md transition-shadow no-underline">
|
|
259
|
+
<div class="mb-2">
|
|
260
|
+
<span class="text-base font-bold text-gray-900">Proposal A</span>
|
|
261
|
+
</div>
|
|
262
|
+
<p class="text-sm text-gray-500 leading-relaxed line-clamp-3 mb-3">
|
|
263
|
+
Dark and focused with deep charcoal backgrounds...
|
|
264
|
+
</p>
|
|
265
|
+
<p class="text-xs italic text-gray-400 truncate mb-3">
|
|
266
|
+
Confident & calm · Sharp edges, no shadows
|
|
267
|
+
</p>
|
|
268
|
+
<div class="flex gap-2 mb-3">
|
|
269
|
+
<span class="w-6 h-6 rounded-full border border-gray-200" style="background:#1a1a2e"></span>
|
|
270
|
+
<span class="w-6 h-6 rounded-full border border-gray-200" style="background:#2563eb"></span>
|
|
271
|
+
<span class="w-6 h-6 rounded-full border border-gray-200" style="background:#7c3aed"></span>
|
|
272
|
+
<span class="w-6 h-6 rounded-full border border-gray-200" style="background:#1e1e30"></span>
|
|
273
|
+
</div>
|
|
274
|
+
<span class="text-sm font-medium text-blue-600">View proposal →</span>
|
|
275
|
+
</a>
|
|
276
|
+
|
|
277
|
+
</div>
|
|
278
|
+
</section>
|
|
279
|
+
</div>
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Adapt class names for the project's Tailwind version and configuration, but maintain the same visual proportions and structure.
|
package/plugins/arn-spark/skills/arn-spark-visual-sketch/references/visual-direction-template.md
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Visual Direction Template
|
|
2
|
+
|
|
3
|
+
This template defines the structure for visual direction documents written by the `arn-spark-visual-sketch` skill. The document is saved to the project's Vision directory as `visual-direction.md`.
|
|
4
|
+
|
|
5
|
+
A visual direction captures the selected visual approach from iterative sketch exploration. It provides enough detail for downstream skills (especially `arn-spark-style-explore`) to translate the direction into precise design tokens, CSS variables, and toolkit configuration. It is intentionally lighter than a style brief — approximate values and directional characteristics rather than exact token tables.
|
|
6
|
+
|
|
7
|
+
## Instructions for arn-spark-visual-sketch
|
|
8
|
+
|
|
9
|
+
When populating this template:
|
|
10
|
+
|
|
11
|
+
- Replace all bracketed placeholders with concrete values from the exploration
|
|
12
|
+
- Color values should be approximate hex values — exact tokens come from `arn-spark-style-explore`
|
|
13
|
+
- Include the full iteration history so downstream skills understand how the direction evolved
|
|
14
|
+
- Screenshot paths must reference files in the visual grounding `designs/` directory
|
|
15
|
+
- The CSS variables section should list what the selected sketch's layout component actually defined
|
|
16
|
+
- The direction brief should be the full text of the winning brief, not a summary
|
|
17
|
+
- The Tone & Creative Anchors section should extract the tone commitment and differentiation anchor from the winning direction brief, and the Design Thinking answers from the selected sketch's layout component HTML comment block
|
|
18
|
+
- The Animation & Motion section should describe motion intent from the selected sketch in platform-agnostic terms. If the sketch had working animations, read the proposal source and manifest to identify patterns, approach, and role. If the sketch was static, note it explicitly — do not leave animation unaddressed
|
|
19
|
+
- If screenshots were not captured (Playwright unavailable), note it in the Screenshots section
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Template
|
|
24
|
+
|
|
25
|
+
```markdown
|
|
26
|
+
# [Product Name] - Visual Direction
|
|
27
|
+
|
|
28
|
+
## Selected Direction
|
|
29
|
+
|
|
30
|
+
[2-3 sentences describing the chosen visual approach. Reference the product personality and target users. E.g., "A warm, inviting interface with generous whitespace that reflects a tool used between family members. Cream backgrounds and terracotta accents create a friendly atmosphere, while serif headings add a touch of personality without sacrificing readability."]
|
|
31
|
+
|
|
32
|
+
## Tone & Creative Anchors
|
|
33
|
+
|
|
34
|
+
| Anchor | Value |
|
|
35
|
+
|--------|-------|
|
|
36
|
+
| Tone Commitment | [The aesthetic posture from the direction brief, e.g., "archival/typographic", "luxury/refined", "industrial/utilitarian"] |
|
|
37
|
+
| Differentiation Anchor | [The one memorable design choice, e.g., "ruled-line ledger system structures all content", "oversized italic serif pull quotes as section dividers"] |
|
|
38
|
+
| Anti-Pattern Constraint | [The direction-specific thing to avoid, e.g., "No drop shadows — depth comes only from layered backgrounds"] |
|
|
39
|
+
|
|
40
|
+
### Design Thinking (from selected sketch proposal)
|
|
41
|
+
|
|
42
|
+
| Question | Answer |
|
|
43
|
+
|----------|--------|
|
|
44
|
+
| Purpose | [What problem does this interface solve? Who uses it? What do they need to feel?] |
|
|
45
|
+
| Tone | [Aesthetic posture committed to] |
|
|
46
|
+
| Differentiation | [The one thing someone will remember] |
|
|
47
|
+
| Execution | [How the commitment was applied — bold, restrained, layered, etc.] |
|
|
48
|
+
|
|
49
|
+
[These anchors were established during visual sketch exploration and should be preserved through style refinement. The tone commitment and differentiation anchor are the creative DNA of this direction — downstream skills should translate them into precise tokens, not dilute them into generic defaults.]
|
|
50
|
+
|
|
51
|
+
## Direction Characteristics
|
|
52
|
+
|
|
53
|
+
| Aspect | Value |
|
|
54
|
+
|--------|-------|
|
|
55
|
+
| Color Mood | [e.g., warm earthy tones, cool minimalist, dark with neon accents] |
|
|
56
|
+
| Typography Feel | [e.g., modern sans-serif, mixed serif headings / sans-serif body, playful rounded] |
|
|
57
|
+
| Layout Approach | [e.g., top navigation with card grid, sidebar with list content, split-panel] |
|
|
58
|
+
| Layout Density | [e.g., spacious, comfortable, compact] |
|
|
59
|
+
| Component Style | [e.g., rounded with subtle shadows, sharp with strong borders, pill-shaped minimal] |
|
|
60
|
+
| Overall Feel | [2-3 adjectives, e.g., warm, inviting, approachable] |
|
|
61
|
+
|
|
62
|
+
## Color Palette (Approximate)
|
|
63
|
+
|
|
64
|
+
| Role | Color | Hex |
|
|
65
|
+
|------|-------|-----|
|
|
66
|
+
| Background | [description] | [#hex] |
|
|
67
|
+
| Surface | [description] | [#hex] |
|
|
68
|
+
| Primary | [description] | [#hex] |
|
|
69
|
+
| Primary Foreground | [description] | [#hex] |
|
|
70
|
+
| Accent | [description] | [#hex] |
|
|
71
|
+
| Text Primary | [description] | [#hex] |
|
|
72
|
+
| Text Secondary | [description] | [#hex] |
|
|
73
|
+
| Border | [description] | [#hex] |
|
|
74
|
+
|
|
75
|
+
[These are the approximate values used in the sketch. Style-explore will refine them into a complete palette with semantic colors, hover states, and dark mode variants.]
|
|
76
|
+
|
|
77
|
+
## CSS Variables Used
|
|
78
|
+
|
|
79
|
+
The selected sketch's layout component defined these CSS custom properties:
|
|
80
|
+
|
|
81
|
+
```css
|
|
82
|
+
--sketch-bg: [value];
|
|
83
|
+
--sketch-surface: [value];
|
|
84
|
+
--sketch-primary: [value];
|
|
85
|
+
--sketch-primary-fg: [value];
|
|
86
|
+
--sketch-accent: [value];
|
|
87
|
+
--sketch-text: [value];
|
|
88
|
+
--sketch-text-muted: [value];
|
|
89
|
+
--sketch-border: [value];
|
|
90
|
+
--sketch-font-heading: [value];
|
|
91
|
+
--sketch-font-body: [value];
|
|
92
|
+
--sketch-font-size-base: [value];
|
|
93
|
+
--sketch-radius: [value];
|
|
94
|
+
--sketch-spacing: [value];
|
|
95
|
+
--sketch-shadow: [value];
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Animation and Motion
|
|
99
|
+
|
|
100
|
+
| Aspect | Value |
|
|
101
|
+
|--------|-------|
|
|
102
|
+
| Motion Philosophy | [minimal / moderate / expressive / scroll-driven narrative — overall approach] |
|
|
103
|
+
| Key Animation Patterns | [e.g., "scroll-triggered cascading reveals", "hero entrance sequence", "hover micro-interactions only"] |
|
|
104
|
+
| Animation Approach | [e.g., "GSAP with ScrollTrigger", "CSS transitions only", "Svelte transitions", "platform-native", "none"] |
|
|
105
|
+
| Animation Role | [integral to direction identity / decorative enhancement / none] |
|
|
106
|
+
|
|
107
|
+
[If the selected sketch had no animations: "Direction is static — no temporal effects. Motion philosophy to be determined during style exploration."]
|
|
108
|
+
|
|
109
|
+
[If animations were present: brief description of the motion experience in platform-agnostic terms. Describe intent and characteristics (timing, easing, stagger), not implementation details. E.g., "Content reveals as if being declassified — each section cascades in with a 0.15s stagger triggered by scroll position. The overall effect is archival — slow, deliberate, authoritative."]
|
|
110
|
+
|
|
111
|
+
## Screens Sketched
|
|
112
|
+
|
|
113
|
+
| Screen | What It Shows |
|
|
114
|
+
|--------|--------------|
|
|
115
|
+
| [name] | [description of what this screen displays and its primary purpose] |
|
|
116
|
+
|
|
117
|
+
## Screenshots
|
|
118
|
+
|
|
119
|
+
| Screen | Path | Description |
|
|
120
|
+
|--------|------|-------------|
|
|
121
|
+
| [Screen Name] | [visual-grounding/designs/visual-sketch-screen-name.png] | [Brief description of what the screenshot shows] |
|
|
122
|
+
|
|
123
|
+
[If no screenshots captured: "Screenshots not captured (Playwright unavailable). Style-explore will work from the direction description, characteristics, and CSS variables above."]
|
|
124
|
+
|
|
125
|
+
## Iteration History
|
|
126
|
+
|
|
127
|
+
| Round | Proposals | Selected | User Feedback |
|
|
128
|
+
|-------|-----------|----------|---------------|
|
|
129
|
+
| 1 | [N] proposals: [brief name for each] | Proposal [X] — [name] | [summary of user's choice rationale and feedback] |
|
|
130
|
+
| 2 | [N] expansions of Proposal [X] | Expansion [Y] — [name] | [summary] |
|
|
131
|
+
|
|
132
|
+
## Direction Brief (Selected)
|
|
133
|
+
|
|
134
|
+
[Full text of the selected direction brief — the paragraph that the winning arn-spark-visual-sketcher agent received as its creative constraint. Preserved verbatim for downstream reference.]
|
|
135
|
+
|
|
136
|
+
## Sketch Routes
|
|
137
|
+
|
|
138
|
+
| Screen | Route |
|
|
139
|
+
|--------|-------|
|
|
140
|
+
| [name] | [/arness-sketches/round-N/proposal-N/path] |
|
|
141
|
+
|
|
142
|
+
[If routes were removed during cleanup: "Sketch routes were removed from the project after direction capture. Screenshots above are the visual record."]
|
|
143
|
+
|
|
144
|
+
## Relationship to Style Brief
|
|
145
|
+
|
|
146
|
+
This document provides visual direction grounding for `/arn-spark-style-explore`. The style brief will translate these approximate values into:
|
|
147
|
+
|
|
148
|
+
- Precise design tokens with exact hex/HSL values for all color roles
|
|
149
|
+
- Complete typography table with font families, weights, sizes, and line heights
|
|
150
|
+
- Spacing and sizing token scale
|
|
151
|
+
- Component style specifications per component type
|
|
152
|
+
- Toolkit-specific configuration (CSS framework config, component library theme)
|
|
153
|
+
- Animation and motion philosophy
|
|
154
|
+
|
|
155
|
+
The visual direction establishes *what the product should feel like*. The style brief specifies *exactly how to implement that feel*.
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Section Guidance
|
|
161
|
+
|
|
162
|
+
| Section | Source | Depth |
|
|
163
|
+
|---------|--------|-------|
|
|
164
|
+
| Selected Direction | User's final selection + skill's iteration summary | 2-3 sentences capturing the feel |
|
|
165
|
+
| Tone & Creative Anchors | Tone commitment and differentiation anchor from the winning direction brief; Design Thinking from the selected sketch's layout component HTML comment block | Structured table with anchors + Design Thinking Q&A |
|
|
166
|
+
| Direction Characteristics | Extracted from the selected sketch's direction brief | One-line descriptions per aspect |
|
|
167
|
+
| Color Palette | From the selected sketch's CSS variables | Approximate hex values, major roles only |
|
|
168
|
+
| CSS Variables | From the selected sketch's layout component | All `--sketch-*` variables verbatim |
|
|
169
|
+
| Animation and Motion | From the selected sketch's animation code + proposal-manifest.json animation field | Motion philosophy, key patterns, library/approach, role (integral/decorative/none) |
|
|
170
|
+
| Screens Sketched | From the confirmed screen list (Step 2) | Name and description per screen |
|
|
171
|
+
| Screenshots | From `arn-spark-style-capture` output (Step 9) | Paths to files in visual grounding designs/ |
|
|
172
|
+
| Iteration History | Accumulated during the selection loop | One row per round with selection rationale |
|
|
173
|
+
| Direction Brief | The winning direction brief from Step 4 / Step 8 | Full paragraph, verbatim |
|
|
174
|
+
| Sketch Routes | From the proposal-manifest.json of the selected sketch | Route paths, or cleanup note |
|