@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.
Files changed (130) hide show
  1. package/.claude-plugin/plugin.json +9 -0
  2. package/.opencode/plugins/arn-spark.js +272 -0
  3. package/package.json +17 -0
  4. package/plugins/arn-spark/.claude-plugin/plugin.json +9 -0
  5. package/plugins/arn-spark/LICENSE +21 -0
  6. package/plugins/arn-spark/README.md +25 -0
  7. package/plugins/arn-spark/agents/arn-spark-brand-strategist.md +299 -0
  8. package/plugins/arn-spark/agents/arn-spark-dev-env-builder.md +228 -0
  9. package/plugins/arn-spark/agents/arn-spark-doctor.md +92 -0
  10. package/plugins/arn-spark/agents/arn-spark-forensic-investigator.md +181 -0
  11. package/plugins/arn-spark/agents/arn-spark-market-researcher.md +232 -0
  12. package/plugins/arn-spark/agents/arn-spark-marketing-pm.md +225 -0
  13. package/plugins/arn-spark/agents/arn-spark-persona-architect.md +259 -0
  14. package/plugins/arn-spark/agents/arn-spark-persona-impersonator.md +183 -0
  15. package/plugins/arn-spark/agents/arn-spark-product-strategist.md +191 -0
  16. package/plugins/arn-spark/agents/arn-spark-prototype-builder.md +497 -0
  17. package/plugins/arn-spark/agents/arn-spark-scaffolder.md +228 -0
  18. package/plugins/arn-spark/agents/arn-spark-spike-runner.md +209 -0
  19. package/plugins/arn-spark/agents/arn-spark-style-capture.md +196 -0
  20. package/plugins/arn-spark/agents/arn-spark-tech-evaluator.md +229 -0
  21. package/plugins/arn-spark/agents/arn-spark-ui-interactor.md +235 -0
  22. package/plugins/arn-spark/agents/arn-spark-use-case-writer.md +280 -0
  23. package/plugins/arn-spark/agents/arn-spark-ux-judge.md +215 -0
  24. package/plugins/arn-spark/agents/arn-spark-ux-specialist.md +200 -0
  25. package/plugins/arn-spark/agents/arn-spark-visual-sketcher.md +285 -0
  26. package/plugins/arn-spark/agents/arn-spark-visual-test-engineer.md +224 -0
  27. package/plugins/arn-spark/references/copilot-tools.md +62 -0
  28. package/plugins/arn-spark/skills/arn-brainstorming/SKILL.md +520 -0
  29. package/plugins/arn-spark/skills/arn-brainstorming/references/add-feature-flow.md +155 -0
  30. package/plugins/arn-spark/skills/arn-spark-arch-vision/SKILL.md +226 -0
  31. package/plugins/arn-spark/skills/arn-spark-arch-vision/references/architecture-vision-template.md +153 -0
  32. package/plugins/arn-spark/skills/arn-spark-arch-vision/references/technology-evaluation-guide.md +86 -0
  33. package/plugins/arn-spark/skills/arn-spark-clickable-prototype/SKILL.md +471 -0
  34. package/plugins/arn-spark/skills/arn-spark-clickable-prototype/references/clickable-prototype-criteria.md +65 -0
  35. package/plugins/arn-spark/skills/arn-spark-clickable-prototype/references/journey-template.md +62 -0
  36. package/plugins/arn-spark/skills/arn-spark-clickable-prototype/references/review-report-template.md +75 -0
  37. package/plugins/arn-spark/skills/arn-spark-clickable-prototype/references/showcase-capture-guide.md +213 -0
  38. package/plugins/arn-spark/skills/arn-spark-clickable-prototype-teams/SKILL.md +642 -0
  39. package/plugins/arn-spark/skills/arn-spark-clickable-prototype-teams/references/debate-protocol.md +242 -0
  40. package/plugins/arn-spark/skills/arn-spark-clickable-prototype-teams/references/debate-review-report-template.md +161 -0
  41. package/plugins/arn-spark/skills/arn-spark-clickable-prototype-teams/references/expert-interaction-review-template.md +152 -0
  42. package/plugins/arn-spark/skills/arn-spark-concept-review/SKILL.md +350 -0
  43. package/plugins/arn-spark/skills/arn-spark-concept-review/references/conflict-resolution-protocol.md +145 -0
  44. package/plugins/arn-spark/skills/arn-spark-concept-review/references/review-report-template.md +185 -0
  45. package/plugins/arn-spark/skills/arn-spark-dev-setup/SKILL.md +366 -0
  46. package/plugins/arn-spark/skills/arn-spark-dev-setup/references/dev-setup-checklist.md +84 -0
  47. package/plugins/arn-spark/skills/arn-spark-dev-setup/references/dev-setup-template.md +205 -0
  48. package/plugins/arn-spark/skills/arn-spark-discover/SKILL.md +303 -0
  49. package/plugins/arn-spark/skills/arn-spark-discover/references/competitive-landscape-template.md +87 -0
  50. package/plugins/arn-spark/skills/arn-spark-discover/references/discovery-questions.md +120 -0
  51. package/plugins/arn-spark/skills/arn-spark-discover/references/persona-profile-template.md +97 -0
  52. package/plugins/arn-spark/skills/arn-spark-discover/references/product-concept-template.md +253 -0
  53. package/plugins/arn-spark/skills/arn-spark-ensure-config/SKILL.md +23 -0
  54. package/plugins/arn-spark/skills/arn-spark-ensure-config/references/ensure-config.md +388 -0
  55. package/plugins/arn-spark/skills/arn-spark-ensure-config/references/step-0-fast-path.md +25 -0
  56. package/plugins/arn-spark/skills/arn-spark-ensure-config/scripts/cache-check.sh +127 -0
  57. package/plugins/arn-spark/skills/arn-spark-feature-extract/SKILL.md +483 -0
  58. package/plugins/arn-spark/skills/arn-spark-feature-extract/references/feature-backlog-template.md +176 -0
  59. package/plugins/arn-spark/skills/arn-spark-feature-extract/references/feature-entry-template.md +209 -0
  60. package/plugins/arn-spark/skills/arn-spark-help/SKILL.md +149 -0
  61. package/plugins/arn-spark/skills/arn-spark-help/references/pipeline-map.md +211 -0
  62. package/plugins/arn-spark/skills/arn-spark-init/SKILL.md +312 -0
  63. package/plugins/arn-spark/skills/arn-spark-init/references/agent-models-presets/all-opus.md +23 -0
  64. package/plugins/arn-spark/skills/arn-spark-init/references/agent-models-presets/balanced.md +23 -0
  65. package/plugins/arn-spark/skills/arn-spark-init/references/bkt-setup.md +55 -0
  66. package/plugins/arn-spark/skills/arn-spark-init/references/jira-mcp-setup.md +61 -0
  67. package/plugins/arn-spark/skills/arn-spark-init/references/platform-labels.md +97 -0
  68. package/plugins/arn-spark/skills/arn-spark-naming/SKILL.md +275 -0
  69. package/plugins/arn-spark/skills/arn-spark-naming/references/creative-brief-template.md +146 -0
  70. package/plugins/arn-spark/skills/arn-spark-naming/references/naming-methodology.md +237 -0
  71. package/plugins/arn-spark/skills/arn-spark-naming/references/naming-report-template.md +122 -0
  72. package/plugins/arn-spark/skills/arn-spark-naming/references/trademark-databases.md +88 -0
  73. package/plugins/arn-spark/skills/arn-spark-naming/references/whois-server-map.md +164 -0
  74. package/plugins/arn-spark/skills/arn-spark-naming/scripts/whois-check.js +502 -0
  75. package/plugins/arn-spark/skills/arn-spark-naming/scripts/whois-check.py +533 -0
  76. package/plugins/arn-spark/skills/arn-spark-prototype-lock/SKILL.md +260 -0
  77. package/plugins/arn-spark/skills/arn-spark-prototype-lock/references/lock-report-template.md +68 -0
  78. package/plugins/arn-spark/skills/arn-spark-prototype-lock/references/pretooluse-hook-template.json +35 -0
  79. package/plugins/arn-spark/skills/arn-spark-prototype-lock/references/prototype-guardrail-rules.md +38 -0
  80. package/plugins/arn-spark/skills/arn-spark-report/SKILL.md +144 -0
  81. package/plugins/arn-spark/skills/arn-spark-report/references/issue-template.md +81 -0
  82. package/plugins/arn-spark/skills/arn-spark-report/references/spark-knowledge-base.md +293 -0
  83. package/plugins/arn-spark/skills/arn-spark-scaffold/SKILL.md +239 -0
  84. package/plugins/arn-spark/skills/arn-spark-scaffold/references/scaffold-checklist.md +79 -0
  85. package/plugins/arn-spark/skills/arn-spark-scaffold/references/scaffold-summary-template.md +74 -0
  86. package/plugins/arn-spark/skills/arn-spark-spike/SKILL.md +209 -0
  87. package/plugins/arn-spark/skills/arn-spark-spike/references/spike-report-template.md +123 -0
  88. package/plugins/arn-spark/skills/arn-spark-static-prototype/SKILL.md +362 -0
  89. package/plugins/arn-spark/skills/arn-spark-static-prototype/references/review-report-template.md +65 -0
  90. package/plugins/arn-spark/skills/arn-spark-static-prototype/references/showcase-capture-guide.md +153 -0
  91. package/plugins/arn-spark/skills/arn-spark-static-prototype/references/static-prototype-criteria.md +54 -0
  92. package/plugins/arn-spark/skills/arn-spark-static-prototype-teams/SKILL.md +518 -0
  93. package/plugins/arn-spark/skills/arn-spark-static-prototype-teams/references/debate-protocol.md +230 -0
  94. package/plugins/arn-spark/skills/arn-spark-static-prototype-teams/references/debate-review-report-template.md +148 -0
  95. package/plugins/arn-spark/skills/arn-spark-static-prototype-teams/references/expert-visual-review-template.md +130 -0
  96. package/plugins/arn-spark/skills/arn-spark-stress-competitive/SKILL.md +166 -0
  97. package/plugins/arn-spark/skills/arn-spark-stress-competitive/references/competitive-report-template.md +139 -0
  98. package/plugins/arn-spark/skills/arn-spark-stress-competitive/references/gap-analysis-framework.md +111 -0
  99. package/plugins/arn-spark/skills/arn-spark-stress-interview/SKILL.md +257 -0
  100. package/plugins/arn-spark/skills/arn-spark-stress-interview/references/interview-protocol.md +140 -0
  101. package/plugins/arn-spark/skills/arn-spark-stress-interview/references/interview-report-template.md +165 -0
  102. package/plugins/arn-spark/skills/arn-spark-stress-interview/references/persona-casting-spec.md +138 -0
  103. package/plugins/arn-spark/skills/arn-spark-stress-premortem/SKILL.md +181 -0
  104. package/plugins/arn-spark/skills/arn-spark-stress-premortem/references/premortem-protocol.md +112 -0
  105. package/plugins/arn-spark/skills/arn-spark-stress-premortem/references/premortem-report-template.md +158 -0
  106. package/plugins/arn-spark/skills/arn-spark-stress-prfaq/SKILL.md +206 -0
  107. package/plugins/arn-spark/skills/arn-spark-stress-prfaq/references/prfaq-report-template.md +139 -0
  108. package/plugins/arn-spark/skills/arn-spark-stress-prfaq/references/prfaq-workflow.md +118 -0
  109. package/plugins/arn-spark/skills/arn-spark-style-explore/SKILL.md +281 -0
  110. package/plugins/arn-spark/skills/arn-spark-style-explore/references/style-brief-template.md +198 -0
  111. package/plugins/arn-spark/skills/arn-spark-use-cases/SKILL.md +359 -0
  112. package/plugins/arn-spark/skills/arn-spark-use-cases/references/expert-review-template.md +94 -0
  113. package/plugins/arn-spark/skills/arn-spark-use-cases/references/review-protocol.md +150 -0
  114. package/plugins/arn-spark/skills/arn-spark-use-cases/references/use-case-index-template.md +108 -0
  115. package/plugins/arn-spark/skills/arn-spark-use-cases/references/use-case-template.md +125 -0
  116. package/plugins/arn-spark/skills/arn-spark-use-cases-teams/SKILL.md +306 -0
  117. package/plugins/arn-spark/skills/arn-spark-use-cases-teams/references/debate-protocol.md +272 -0
  118. package/plugins/arn-spark/skills/arn-spark-use-cases-teams/references/review-report-template.md +112 -0
  119. package/plugins/arn-spark/skills/arn-spark-visual-readiness/SKILL.md +293 -0
  120. package/plugins/arn-spark/skills/arn-spark-visual-readiness/references/readiness-checklist.md +196 -0
  121. package/plugins/arn-spark/skills/arn-spark-visual-sketch/SKILL.md +376 -0
  122. package/plugins/arn-spark/skills/arn-spark-visual-sketch/references/aesthetic-philosophy.md +210 -0
  123. package/plugins/arn-spark/skills/arn-spark-visual-sketch/references/sketch-gallery-guide.md +282 -0
  124. package/plugins/arn-spark/skills/arn-spark-visual-sketch/references/visual-direction-template.md +174 -0
  125. package/plugins/arn-spark/skills/arn-spark-visual-strategy/SKILL.md +447 -0
  126. package/plugins/arn-spark/skills/arn-spark-visual-strategy/references/baseline-capture-script-template.js +89 -0
  127. package/plugins/arn-spark/skills/arn-spark-visual-strategy/references/journey-schema.md +375 -0
  128. package/plugins/arn-spark/skills/arn-spark-visual-strategy/references/spike-checklist.md +122 -0
  129. package/plugins/arn-spark/skills/arn-spark-visual-strategy/references/strategy-layers-guide.md +132 -0
  130. package/plugins/arn-spark/skills/arn-spark-visual-strategy/references/visual-strategy-template.md +141 -0
@@ -0,0 +1,362 @@
1
+ ---
2
+ name: arn-spark-static-prototype
3
+ description: >-
4
+ This skill should be used when the user says "static prototype", "arn static
5
+ prototype", "visual validation", "pixel perfect", "component showcase",
6
+ "static screens", "build a static prototype", "create a component showcase",
7
+ "visual review", "validate the visuals", "check the design",
8
+ "validate components", "review the design visuals", or wants to create a static component showcase and
9
+ validate it through iterative expert review cycles with per-criterion scoring,
10
+ an independent judge verdict, and versioned output.
11
+ version: 1.0.0
12
+ ---
13
+
14
+ # Arness Static Prototype
15
+
16
+ Create a static component showcase and validate it through iterative build-review cycles, aided by the `arn-spark-prototype-builder` agent (in showcase mode) for rendering, the `arn-spark-style-capture` agent for screenshots, `arn-spark-product-strategist` and `arn-spark-ux-specialist` (greenfield agents in this plugin) for expert review, and the `arn-spark-ux-judge` agent for an independent final verdict. This is a conversational skill that runs in normal conversation (NOT plan mode).
17
+
18
+ The primary artifacts are **versioned showcase pages** with component renders, **review reports** with per-criterion scores, and a **final report** documenting the complete validation history. All output is versioned so the user can compare evolution across cycles.
19
+
20
+ This skill covers visual fidelity validation: do the components look correct according to the style brief? It does not cover interactive behavior -- that is `/arn-spark-clickable-prototype`'s job.
21
+
22
+ ## Prerequisites
23
+
24
+ The following artifacts inform the validation. Check in order:
25
+
26
+ Determine the prototypes output directory:
27
+ 1. Read the project's `arness.md` and check for a `## Arness` section
28
+ 2. If found, extract the configured Prototypes directory path — this is the source of truth
29
+ 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.
30
+ 4. If the directory does not exist, create it
31
+
32
+ > All references to `prototypes/` in this skill refer to the configured prototypes directory determined above.
33
+
34
+ **Style brief (strongly recommended):**
35
+ 1. Read the project's `arness.md` for a `## Arness` section. If found, check the configured Vision directory for `style-brief.md`
36
+ 2. If no `## Arness` section found, check `.arness/vision/style-brief.md` at the project root
37
+
38
+ **Product concept (recommended):**
39
+ 1. Check the configured Vision directory for `product-concept.md`
40
+ 2. If no `## Arness` section found, check `.arness/vision/product-concept.md` at the project root
41
+
42
+ **Architecture vision (for framework context):**
43
+ 1. Check the configured Vision directory for `architecture-vision.md`
44
+ 2. If no `## Arness` section found, check `.arness/vision/architecture-vision.md` at the project root
45
+
46
+ **Visual grounding assets (recommended):**
47
+ 1. Read the `## Arness` section for the Visual grounding directory path
48
+ 2. Check for assets in `[visual-grounding]/references/`, `[visual-grounding]/designs/`, `[visual-grounding]/brand/`
49
+ 3. Also check the style brief's Visual Grounding section for asset paths and categories
50
+
51
+ If found: visual grounding assets will be provided to expert reviewers and the judge alongside showcase screenshots for comparison.
52
+
53
+ **Fresh design assets (optional):**
54
+ 1. Read the `## Arness` section for `Figma` and `Canva` fields
55
+ 2. If either is `yes` AND the visual grounding directory already has assets in `designs/` or `brand/`:
56
+ Ask the user:
57
+
58
+ > **Design assets exist from style exploration. Would you like to pull fresh versions from [Figma/Canva] before starting validation?**
59
+ > 1. **Yes** — Pull fresh design assets
60
+ > 2. **No** — Use existing assets on disk
61
+
62
+ - If **Yes**: ask the user to specify which assets to fetch (Figma file URL, page, or frame names / Canva design URL). Use the corresponding MCP to fetch and save to `[visual-grounding]/designs/` or `[visual-grounding]/brand/`. Show a summary of what was downloaded or replaced.
63
+ - If no: proceed with existing assets on disk.
64
+ 3. If either is `yes` but NO existing design assets found in `designs/` or `brand/`:
65
+ Ask the user:
66
+
67
+ > **No design mockups found yet. Would you like to pull design assets from [Figma/Canva]?**
68
+ > 1. **Yes** — Pull design assets now
69
+ > 2. **No** — Proceed without design mockups
70
+
71
+ - If **Yes**: same flow as above.
72
+ - If **No**: proceed without design mockups.
73
+ 4. If neither flag is `yes` or flags are missing: skip silently.
74
+
75
+ **If a style brief is found:** Use it for visual validation criteria.
76
+
77
+ **If no style brief is found:** Inform the user: "No style brief found. I can create a component showcase with default styling, but visual validation is more meaningful with a style brief. Consider running `/arn-spark-style-explore` first." Proceed if the user wants to continue -- criteria will focus on component quality and layout rather than style fidelity.
78
+
79
+ **Project scaffold:** The project must be scaffolded with the UI framework and component library installed. Check the project's dependency configuration. If not scaffolded, inform the user: "The project needs to be scaffolded before building a component showcase. Run `/arn-spark-scaffold` first."
80
+
81
+ ## Workflow
82
+
83
+ ### Step 1: Detect Resume or Fresh Start
84
+
85
+ Check for existing versioned output:
86
+
87
+ 1. Look for `prototypes/static/v*/` directories at the project root
88
+ 2. If versions exist, find the highest version number
89
+
90
+ **If existing versions found:**
91
+
92
+ Ask the user:
93
+
94
+ **"I found existing static prototype versions up to v[N]. Which would you prefer?"**
95
+
96
+ Options:
97
+ 1. **Continue from v[N]** — I will read the latest review report and continue with new cycles
98
+ 2. **Fresh start** — I will begin from v1 (existing versions are preserved)
99
+
100
+ If continuing: read `prototypes/static/v[N]/review-report.md` to understand the current state and what was flagged. Ask the user for the new cycle budget and any focus refinements.
101
+
102
+ **If no existing versions:** Proceed to Step 2.
103
+
104
+ ### Step 2: Configure Validation Parameters
105
+
106
+ Present defaults and ask the user to confirm or adjust:
107
+
108
+ "Let me set up the validation parameters:
109
+
110
+ **Scoring:**
111
+ - **Scale:** 1-5 (1 = unmet, 5 = exemplary)
112
+ - **Minimum threshold:** 4 (every criterion must score at least 4)
113
+ - **Max cycles:** 3 (build-review iterations before judge review)
114
+
115
+ **Criteria:** Based on your style brief and product concept, here are the proposed criteria:
116
+
117
+ | # | Criterion | Description |
118
+ |---|-----------|-------------|
119
+ | 1 | [criterion] | [description] |
120
+ | ... | ... | ... |
121
+
122
+ Adjust any parameter or criterion, or confirm to proceed."
123
+
124
+ To propose criteria:
125
+ 1. Read the default criteria template:
126
+ > Read `${CLAUDE_PLUGIN_ROOT}/skills/arn-spark-static-prototype/references/static-prototype-criteria.md`
127
+ 2. Adapt based on available artifacts (remove dark mode criterion if not applicable, add reference image criterion if images exist, etc.)
128
+ 3. Present the adapted list
129
+
130
+ When the user confirms, write the agreed criteria to `prototypes/criteria.md` (create `prototypes/` directory if needed).
131
+
132
+ ### Step 3: Create Task List
133
+
134
+ Create the task structure for the validation run. For max_cycles=N:
135
+
136
+ - Task pairs: Build v[X] + Validate v[X] for each cycle (2 tasks per cycle)
137
+ - Judge review task
138
+ - User review task
139
+
140
+ Example for max_cycles=3 (starting from v1):
141
+ ```
142
+ Task 1: Build v1
143
+ Task 2: Validate v1
144
+ Task 3: Build v2
145
+ Task 4: Validate v2
146
+ Task 5: Build v3
147
+ Task 6: Validate v3
148
+ Task 7: Judge review
149
+ Task 8: User review
150
+ ```
151
+
152
+ If resuming from v[N], number versions sequentially from v[N+1].
153
+
154
+ Present the task list to the user and proceed.
155
+
156
+ ### Step 4: Build-Review Cycle (Iterative)
157
+
158
+ For each cycle:
159
+
160
+ #### 4a: Build
161
+
162
+ Invoke the `arn-spark-prototype-builder` 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:
163
+ - **Showcase mode:** true
164
+ - **Style brief:** toolkit configuration section
165
+ - **Component list:** components from the criteria + style brief
166
+ - **UI framework and component library:** from architecture vision or the project's dependency configuration
167
+ - **Project root path**
168
+ - **Output path:** `prototypes/static/v[N]/`
169
+ - **Reference images (if available):** captured screenshots or user-provided images
170
+ - **Previous review feedback (if not first cycle):** failing criteria details and improvement suggestions from the previous cycle's review report
171
+ - **Showcase expectations:** The builder should produce numbered sections showing each component with all variants, all states, contextual usage (components in realistic surroundings, not just isolation), working interactive elements (toggles that toggle, inputs that accept text), and a simulated environment background appropriate to the application type. If the style brief includes dark mode, the showcase should have an inline dark/light toggle.
172
+
173
+ Mark the Build task as in_progress before invoking, completed after.
174
+
175
+ #### 4b: Capture Screenshots
176
+
177
+ 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:
178
+ - **URL:** the URL serving the showcase (from the running prototype)
179
+ - **Output path:** `prototypes/static/v[N]/screenshots/`
180
+
181
+ If Playwright is unavailable, ask the user to provide screenshots of the showcase manually, or attempt to serve the showcase and capture screenshots through an alternative method. Note the limitation in the review report.
182
+
183
+ #### 4c: Expert Review
184
+
185
+ Invoke `arn-spark-product-strategist` and `arn-spark-ux-specialist` in parallel. Both agents receive the same inputs:
186
+
187
+ - Screenshots, criteria list, scoring scale, threshold, style brief, product concept
188
+ - If visual grounding assets are available, include them with category context:
189
+ - **References:** "These are inspirational references. Assess whether the overall direction aligns."
190
+ - **Designs:** "These are design mockups (specification). Assess fidelity — how closely does the showcase match these designs?"
191
+ - **Brand:** "These are brand constraints. Verify brand elements (logos, colors, typefaces) are correctly applied."
192
+ - Request per-criterion scores and feedback from each agent.
193
+
194
+ After both agents complete:
195
+
196
+ For each criterion, use the LOWER of the two expert scores as the combined score. If only one expert is available (e.g., `arn-spark-ux-specialist` is not accessible), use that single expert's scores as the combined scores and note the limitation in the review report.
197
+
198
+ #### 4d: Evaluate and Record
199
+
200
+ 1. Check all combined scores against the minimum threshold
201
+ 2. Read the review report template:
202
+ > Read `${CLAUDE_PLUGIN_ROOT}/skills/arn-spark-static-prototype/references/review-report-template.md`
203
+ 3. Write the review report to `prototypes/static/v[N]/review-report.md`
204
+ 4. Write version notes to `prototypes/static/v[N]/version-notes.md` (what changed from previous version, or "Initial version" for v1)
205
+
206
+ **If ALL criteria pass:** Mark the Validate task as completed. Skip remaining cycles and proceed to Step 5 (Judge Review).
207
+
208
+ **If ANY criterion fails:**
209
+ - Mark the Validate task as completed
210
+ - Present the failing criteria to the user with a brief summary
211
+ - Feed the failing criteria details and improvement suggestions to the next cycle's Build step
212
+ - Proceed to the next cycle (or Step 5 if this was the last cycle)
213
+
214
+ ### Step 5: Judge Review
215
+
216
+ Invoke the `arn-spark-ux-judge` 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:
217
+ - **Review mode:** `static` -- the judge reviews screenshots and files (there is nothing interactive to navigate in a static showcase)
218
+ - **Prototype artifacts:** paths to the latest version's showcase files and screenshots
219
+ - **Criteria list:** from `prototypes/criteria.md`
220
+ - **Scoring scale and minimum threshold**
221
+ - **Style brief and product concept**
222
+ - **Visual grounding assets (if available):** provide all three categories with context so the judge can compare the showcase against reference images, design mockups, and brand assets directly
223
+ - **Version number**
224
+ - **Previous review reports:** the latest version's review-report.md
225
+
226
+ Write the judge's report to `prototypes/static/v[N]/judge-report.md`.
227
+
228
+ **If Judge returns PASS:** Proceed to Step 6.
229
+
230
+ **If Judge returns FAIL and cycle budget remains:**
231
+ - Present the judge's failing criteria to the user
232
+ - Calculate remaining budget (original max_cycles minus cycles used)
233
+ Ask the user:
234
+
235
+ > **The judge flagged [N] criteria below threshold. You have [M] cycles remaining. Run more fix cycles?**
236
+ > 1. **Yes** — Run [M] more fix cycles
237
+ > 2. **No** — Proceed with current results
238
+
239
+ - If **Yes**: create new Build+Validate task pairs for the remaining cycles, return to Step 4
240
+ - If **No**: proceed to Step 6 with the judge's report
241
+
242
+ **If Judge returns FAIL and no budget remains:** Proceed to Step 5b with the judge's report.
243
+
244
+ ### Step 5b: Generate Visual Showcase
245
+
246
+ After the judge review completes (whether PASS or FAIL with no budget), generate structured screenshot images so the user can review the final visual state without running a dev server. This is the user's primary visual deliverable.
247
+
248
+ 1. Read the showcase capture guide:
249
+ > Read `${CLAUDE_PLUGIN_ROOT}/skills/arn-spark-static-prototype/references/showcase-capture-guide.md`
250
+
251
+ 2. Read the section manifest from `prototypes/static/v[N]/showcase-manifest.json` (written by the prototype builder). If the manifest does not exist, note the limitation and capture a single full-page screenshot only.
252
+
253
+ 3. Start the prototype dev server (same procedure as Step 4b).
254
+
255
+ 4. Generate a Playwright capture script appropriate to the project's stack. The script captures:
256
+ - A full-page scrolling screenshot (`showcase-full.png`)
257
+ - A per-section screenshot for each entry in the manifest (e.g., `01-typography.png`, `04-buttons.png`)
258
+ - Dark mode variants of all captures if the showcase has a dark/light toggle
259
+
260
+ Write the script to `prototypes/static/v[N]/showcase/capture-script.js` so the user can re-run it.
261
+
262
+ 5. Run the capture script. If individual section captures fail, skip them and note the gaps.
263
+
264
+ 6. Stop the prototype dev server.
265
+
266
+ 7. Write `prototypes/static/v[N]/showcase/showcase-index.md` — a self-contained markdown document embedding all captured images with:
267
+ - Version number, judge verdict, and generation date
268
+ - Final criterion scores summary
269
+ - Each section's screenshot with its title as a heading
270
+ - Full-page overview
271
+ - Dark mode section (if applicable)
272
+
273
+ If Playwright is unavailable, skip this step entirely and inform the user: "Playwright is not available. The showcase can be viewed by running the dev server. Automated visual export was skipped."
274
+
275
+ ### Step 6: User Review
276
+
277
+ Present the complete validation history:
278
+
279
+ "**Static prototype validation complete.**
280
+
281
+ **Latest version:** v[N]
282
+ **Judge verdict:** [PASS / FAIL]
283
+
284
+ **Version history:**
285
+ | Version | Criteria Passing | Criteria Failing | Notable Changes |
286
+ |---------|-----------------|------------------|----------------|
287
+ | v1 | [X]/[M] | [Y] | Initial build |
288
+ | v2 | [X]/[M] | [Y] | [summary of fixes] |
289
+ | ... | ... | ... | ... |
290
+
291
+ **Final scores (v[N]):**
292
+ | # | Criterion | Expert Score | Judge Score | Status |
293
+ |---|-----------|-------------|-------------|--------|
294
+ | 1 | [name] | [score] | [score] | PASS/FAIL |
295
+ | ... | ... | ... | ... | ... |
296
+
297
+ The showcase is at `prototypes/static/v[N]/`.
298
+ [If showcase images were generated:] Visual showcase images are at `prototypes/static/v[N]/showcase/showcase-index.md` — open this file to see all components at a glance without running the dev server.
299
+
300
+ Ask the user:
301
+
302
+ > **Are you satisfied with this result?**
303
+ > 1. **Yes, finalize** — Write the final report
304
+ > 2. **Run additional cycles** — Return to Step 2 with new parameters"
305
+
306
+ If the user chooses **Run additional cycles**, return to Step 2 with new parameters (the user can adjust criteria, threshold, or cycle count).
307
+
308
+ ### Step 7: Write Final Report
309
+
310
+ Write `prototypes/static/final-report.md` with:
311
+ - Complete version history and all scores
312
+ - Judge verdict and report (from `prototypes/static/v[N]/judge-report.md`)
313
+ - User decision
314
+ - Criteria used
315
+ - Links to all version directories
316
+ - Link to the visual showcase (`prototypes/static/v[N]/showcase/showcase-index.md`) if generated
317
+
318
+ ### Step 8: Recommend Next Steps
319
+
320
+ "Static prototype validation complete. Results saved to `prototypes/static/`.
321
+
322
+ Recommended next steps:
323
+ 1. **Build clickable prototype:** Run `/arn-spark-clickable-prototype` to add interaction and validate user journeys
324
+ 2. **Lock the prototype:** After clickable validation, run `/arn-spark-prototype-lock` to freeze a snapshot before development modifies shared source files
325
+ 3. **Extract features:** Run `/arn-spark-feature-extract` to create a prioritized feature backlog
326
+
327
+ The clickable prototype will build on the validated visual direction from this static prototype."
328
+
329
+ ## Agent Invocation Guide
330
+
331
+ | Situation | Action |
332
+ |-----------|--------|
333
+ | Build showcase (Step 4a) | Invoke `arn-spark-prototype-builder` in showcase mode with style brief, components, output path, and previous review feedback |
334
+ | Capture screenshots (Step 4b) | Invoke `arn-spark-style-capture` with the showcase URL and output path. If unavailable, ask the user for manual screenshots. |
335
+ | Expert review (Step 4c) | Invoke `arn-spark-product-strategist` and `arn-spark-ux-specialist` in parallel with screenshots, criteria, scoring parameters, and visual grounding assets (with category context). After both complete, take the LOWER score per criterion. |
336
+ | Judge review (Step 5) | Invoke `arn-spark-ux-judge` in `static` mode with latest screenshots, criteria, scoring parameters, review reports, and visual grounding assets for direct comparison |
337
+ | Generate visual showcase (Step 5b) | Read the showcase capture guide, start the prototype, generate and run a Playwright capture script per the section manifest, write `showcase-index.md`. Skip if Playwright unavailable. |
338
+ | User asks about interactive behavior | Defer: "Interactive behavior is validated in `/arn-spark-clickable-prototype`. This skill focuses on visual fidelity." |
339
+ | User asks to change the style | Defer to `/arn-spark-style-explore` for style brief updates, then re-run static prototype validation |
340
+ | User asks about features | Defer: "Feature work starts after `/arn-spark-feature-extract`. If Arness Code is installed, continue with `/arn-code-feature-spec` for detailed specifications." |
341
+ | Builder fails | Retry up to 3 times. If still failing, present the error for manual investigation. |
342
+ | Expert returns unhelpful scores | Re-invoke with more specific prompt referencing the exact criteria and screenshots. |
343
+
344
+ ## Error Handling
345
+
346
+ - **No style brief found:** Proceed with component quality and layout criteria only. Note that visual fidelity criteria are deferred until a style brief exists.
347
+ - **Project not scaffolded:** Cannot build showcase. Suggest `/arn-spark-scaffold` first.
348
+ - **Builder fails (3 times):** Present the error. The user can investigate manually or adjust the approach.
349
+ - **Capture fails (Playwright unavailable):** Fall back to asking the user for manual screenshots. Note the limitation. The visual showcase (Step 5b) is also skipped.
350
+ - **Showcase manifest missing:** The builder did not write `showcase-manifest.json`. Capture a full-page screenshot only. Note: "Section manifest not found. Re-build the showcase to generate per-section captures."
351
+ - **Expert returns unhelpful scores (vague, all maximum, etc.):** Re-invoke with a more specific prompt asking for scores on each criterion individually with evidence.
352
+ - **arn-spark-ux-specialist unavailable:** Proceed with `arn-spark-product-strategist` as the sole expert reviewer. Use its scores directly as the combined scores. Note the limitation in the review report.
353
+ - **Judge unavailable:** The user becomes the judge. Present all expert review reports and ask the user to make the pass/fail decision.
354
+ - **Resume from interrupted cycle:** Detect the latest version directory. If it has a review-report.md, the cycle completed -- continue from the next cycle. If it has showcase files but no review-report.md, the build completed but review did not -- run review on the existing build.
355
+ - **Criteria file already exists:**
356
+
357
+ Ask the user:
358
+
359
+ > **Existing criteria found at `prototypes/criteria.md`. What would you like to do?**
360
+ > 1. **Use existing** — Keep the current criteria
361
+ > 2. **Define new** — Create fresh criteria for this validation
362
+ - **Writing the document fails:** Print the full content in the conversation so the user can copy it.
@@ -0,0 +1,65 @@
1
+ # Review Report Template -- Static Prototype
2
+
3
+ Use this template for each version's expert review report during the static prototype validation cycle.
4
+
5
+ ```markdown
6
+ # Review Report: Version [N]
7
+
8
+ ## Reviewers
9
+ - **Product strategist:** arn-spark-product-strategist
10
+ - **UX specialist:** arn-spark-ux-specialist
11
+
12
+ ## Scoring
13
+ - **Scale:** [1-N]
14
+ - **Minimum threshold:** [T]
15
+
16
+ ## Criterion Scores
17
+
18
+ | # | Criterion | Product Strategist | UX Specialist | Combined | Status |
19
+ |---|-----------|-------------------|---------------|----------|--------|
20
+ | 1 | [name] | [score] | [score] | [lower] | PASS/FAIL |
21
+ | 2 | [name] | [score] | [score] | [lower] | PASS/FAIL |
22
+ | ... | ... | ... | ... | ... | ... |
23
+
24
+ ## Visual Grounding Comparison
25
+
26
+ **Assets provided to reviewers:**
27
+ | Category | Count | Source |
28
+ |----------|-------|--------|
29
+ | References | [N] | [URL captures, user screenshots] |
30
+ | Designs | [N] | [Figma exports, Canva exports, manual mockups] |
31
+ | Brand | [N] | [logos, guidelines] |
32
+
33
+ **Comparison notes:**
34
+ - **Reference alignment:** [How well the showcase matches the inspirational direction]
35
+ - **Design fidelity:** [How closely components match the design mockups — only if designs exist]
36
+ - **Brand compliance:** [Whether brand elements are correctly applied — only if brand assets exist]
37
+
38
+ [If no visual grounding assets were available: "No visual grounding assets provided. Review based on style brief text only."]
39
+
40
+ ## Failing Criteria
41
+
42
+ ### [Criterion Name] -- Combined [X]/[scale]
43
+ - **Product strategist feedback:** [specific observation and suggestion]
44
+ - **UX specialist feedback:** [specific observation and suggestion]
45
+ - **Priority:** [Critical / Important]
46
+
47
+ [Repeat for each failing criterion]
48
+
49
+ ## Passing Criteria Highlights
50
+ [Brief notes on particularly strong aspects, if any]
51
+
52
+ ## Summary
53
+ - **Passing:** [N] of [M] criteria meet threshold
54
+ - **Failing:** [N] criteria below threshold
55
+ - **Verdict:** PROCEED TO NEXT CYCLE / ALL CRITERIA PASS -- PROCEED TO JUDGE
56
+
57
+ ## Recommended Focus for Next Cycle
58
+ [If failing: ordered list of what to fix, most critical first]
59
+ ```
60
+
61
+ ## Usage Notes
62
+
63
+ - The combined score uses the LOWER of the two expert scores for each criterion. This ensures both perspectives are satisfied.
64
+ - If only one expert is available (e.g., arn-spark-product-strategist only), use that single score as the combined score.
65
+ - The skill writes this report to `prototypes/static/vN/review-report.md` after each validation cycle.
@@ -0,0 +1,153 @@
1
+ # Showcase Capture Guide
2
+
3
+ This document defines how the `arn-spark-static-prototype` skill generates structured visual showcase images after the judge review passes. The output is a set of per-section screenshots and an index document that the user can glance at without running a dev server.
4
+
5
+ ## When This Runs
6
+
7
+ After the judge returns PASS (or after the final cycle if the judge fails but the user proceeds). This is the last automated step before presenting results to the user. The showcase images are the user's primary visual deliverable from the static prototype process.
8
+
9
+ ## Prerequisites
10
+
11
+ - The showcase is built and can be served (dev server starts successfully)
12
+ - The `showcase-manifest.json` exists in the version directory (written by `arn-spark-prototype-builder`)
13
+ - Playwright is available for screenshot capture
14
+
15
+ If Playwright is not available, skip automated capture and inform the user: "Playwright is not available. The showcase can be viewed by running the dev server. Automated visual export was skipped." The skill continues to the user review step without showcase images.
16
+
17
+ ## Capture Process
18
+
19
+ ### 1. Read the section manifest
20
+
21
+ Read `prototypes/static/v[N]/showcase-manifest.json` to get the list of sections with their IDs and titles. If the manifest does not exist (e.g., an older prototype build), fall back to capturing a single full-page screenshot only.
22
+
23
+ ### 2. Start the prototype
24
+
25
+ Start the dev server using the same procedure as Step 4b of the main skill. Record the URL and process ID.
26
+
27
+ ### 3. Generate a capture script
28
+
29
+ Generate a Playwright script tailored to the project's stack. The script must:
30
+
31
+ 1. **Navigate** to the showcase URL
32
+ 2. **Wait** for the page to be fully loaded (network idle, no pending animations)
33
+ 3. **Set dark mode to OFF** (if a dark/light toggle exists) for the primary captures
34
+ 4. **Capture full page:** Take a full-page scrolling screenshot → `showcase-full.png`
35
+ 5. **Capture each section:** For each entry in the manifest:
36
+ - Scroll the element with `id="showcase-section-NN"` into view
37
+ - Wait for any lazy-loaded content or animations to settle
38
+ - Capture the element's bounding box → `NN-title.png` (e.g., `01-typography.png`, `04-buttons.png`)
39
+ 6. **Dark mode captures (if applicable):** If the showcase has dark mode:
40
+ - Toggle dark mode ON
41
+ - Capture full page → `showcase-full-dark.png`
42
+ - Capture each section → `NN-title-dark.png`
43
+
44
+ **Script generation approach by stack:**
45
+
46
+ | Stack | Capture method |
47
+ |-------|---------------|
48
+ | Web app (any framework) | Playwright script targeting `localhost` URL |
49
+ | Desktop app with web view (Tauri, Electron) | Playwright script targeting the web view URL (Tauri: `localhost` dev server; Electron: dev server or `chrome-devtools://` if needed) |
50
+ | Native mobile app | Start simulator/emulator, use platform screenshot tools (`xcrun simctl io` for iOS, `adb exec-out screencap` for Android). Per-section capture requires scrolling automation via the platform's UI testing framework. If not feasible, capture full-page only and note the limitation. |
51
+ | Terminal/CLI app | Not applicable for visual showcase. Skip this step and note: "Terminal applications do not produce visual showcases." |
52
+
53
+ For the vast majority of greenfield projects (web, Tauri, Electron), the Playwright approach works directly because the prototype builder creates web-based showcases served via a dev server.
54
+
55
+ **Script location:** Write the generated script to `prototypes/static/v[N]/showcase/capture-script.js` (or `.ts`, `.py` — match the project's ecosystem). This allows the user to re-run the capture manually if needed.
56
+
57
+ ### 4. Run the capture script
58
+
59
+ Execute the script via Bash. If a section capture fails (element not found, timeout), skip that section and note it in the showcase index. Do not fail the entire capture for one missing section.
60
+
61
+ ### 5. Stop the prototype
62
+
63
+ Kill the dev server process.
64
+
65
+ ## Output Structure
66
+
67
+ ```
68
+ prototypes/static/v[N]/showcase/
69
+ ├── capture-script.js ← Generated Playwright script (re-runnable)
70
+ ├── showcase-full.png ← Full-page scrolling capture (light mode)
71
+ ├── showcase-full-dark.png ← Full-page scrolling capture (dark mode, if applicable)
72
+ ├── 01-typography.png ← Per-section captures (light mode)
73
+ ├── 02-colors.png
74
+ ├── 03-containers.png
75
+ ├── 04-buttons.png
76
+ ├── 05-forms.png
77
+ ├── ...
78
+ ├── 01-typography-dark.png ← Per-section captures (dark mode, if applicable)
79
+ ├── 02-colors-dark.png
80
+ ├── ...
81
+ └── showcase-index.md ← Visual summary document
82
+ ```
83
+
84
+ ### File naming convention
85
+
86
+ - Section files: `NN-title.png` where `NN` is the zero-padded section number and `title` is the section title in kebab-case (e.g., `04-buttons-and-controls.png`)
87
+ - Dark mode variants: append `-dark` before the extension (e.g., `04-buttons-and-controls-dark.png`)
88
+ - Full page: `showcase-full.png` / `showcase-full-dark.png`
89
+
90
+ ## Showcase Index Template
91
+
92
+ The `showcase-index.md` is a self-contained markdown document that the user can open to see all showcase images with context. It embeds the images using relative markdown image links.
93
+
94
+ ```markdown
95
+ # Component Showcase — v[N]
96
+
97
+ **Version:** [N]
98
+ **Judge verdict:** [PASS / FAIL]
99
+ **Date:** [YYYY-MM-DD]
100
+ **Style brief:** [product-name] style brief
101
+
102
+ ## Scores Summary
103
+
104
+ | # | Criterion | Score | Status |
105
+ |---|-----------|-------|--------|
106
+ | 1 | [name] | [combined] | PASS/FAIL |
107
+ | ... | ... | ... | ... |
108
+
109
+ ---
110
+
111
+ ## Component Sections
112
+
113
+ ### 1. Typography
114
+ ![Typography](./01-typography.png)
115
+
116
+ ### 2. Colors
117
+ ![Colors](./02-colors.png)
118
+
119
+ ### 3. Containers
120
+ ![Containers](./03-containers.png)
121
+
122
+ [... one section per captured image ...]
123
+
124
+ ## Full Page View
125
+ ![Full showcase](./showcase-full.png)
126
+
127
+ [If dark mode exists:]
128
+
129
+ ---
130
+
131
+ ## Dark Mode
132
+
133
+ ### 1. Typography (Dark)
134
+ ![Typography Dark](./01-typography-dark.png)
135
+
136
+ [... repeat for all sections ...]
137
+
138
+ ### Full Page View (Dark)
139
+ ![Full showcase dark](./showcase-full-dark.png)
140
+
141
+ ---
142
+
143
+ *Generated by Arness Static Prototype v[N] — [date]*
144
+ ```
145
+
146
+ ## Error Handling
147
+
148
+ - **Playwright unavailable:** Skip the entire capture. Inform the user the showcase can be viewed by running the dev server.
149
+ - **Manifest missing:** Capture full-page only. Note: "Section manifest not found. Only full-page capture produced. Re-build the showcase to generate per-section captures."
150
+ - **Section element not found:** Skip that section's capture. List skipped sections in the showcase index.
151
+ - **Dev server fails to start:** Skip the capture. Print the showcase index template (without images) so the user knows what sections exist.
152
+ - **Dark mode toggle not found:** Capture light mode only. Note in the index: "Dark mode toggle not detected. Only light mode captured."
153
+ - **Native mobile (no Playwright):** Attempt platform-specific capture. If not feasible, note the limitation and suggest the user capture screenshots manually from the simulator.
@@ -0,0 +1,54 @@
1
+ # Static Prototype Default Criteria
2
+
3
+ This template provides the default criteria for visual validation of static component showcases. The `arn-spark-static-prototype` skill proposes these criteria based on available project artifacts (style brief, product concept). The user confirms or adjusts before validation begins.
4
+
5
+ ## Default Criteria
6
+
7
+ ### Visual Fidelity
8
+
9
+ | # | Criterion | Description |
10
+ |---|-----------|-------------|
11
+ | 1 | Color palette accuracy | All color roles (primary, secondary, accent, background, text, border) match the style brief hex values |
12
+ | 2 | Typography conformance | Font families, weights, and sizes match the style brief specifications |
13
+ | 3 | Spacing consistency | Spacing tokens (padding, margins, gaps) are applied consistently and match the style brief |
14
+ | 4 | Border radius conformance | Component corner radii match the style brief specifications |
15
+ | 5 | Shadow and elevation | Box shadows and elevation effects match the style brief (or absent if not specified) |
16
+
17
+ ### Component Quality
18
+
19
+ | # | Criterion | Description |
20
+ |---|-----------|-------------|
21
+ | 6 | Component variant coverage | All specified component variants (sizes, states) are rendered |
22
+ | 7 | State representation | Interactive states (default, hover, active, disabled, error) are visually distinct |
23
+ | 8 | Component library usage | Components use the project's actual component library, not custom implementations |
24
+ | 9 | Theme integration | Component library theme configuration is applied globally, not per-component overrides |
25
+
26
+ ### Layout and Composition
27
+
28
+ | # | Criterion | Description |
29
+ |---|-----------|-------------|
30
+ | 10 | Visual hierarchy | Heading, body, and caption text establish clear hierarchy |
31
+ | 11 | Alignment and grid | Components align to a consistent grid or layout system |
32
+ | 12 | Content density | Spacing between elements matches the intended density (compact, moderate, spacious) |
33
+
34
+ ### Overall Impression
35
+
36
+ | # | Criterion | Description |
37
+ |---|-----------|-------------|
38
+ | 13 | Style brief adherence | Overall visual impression matches the style brief's described feel and direction |
39
+ | 14 | Dark mode consistency | If dark mode is specified: all components render correctly in dark mode with appropriate contrast |
40
+
41
+ ## Adapting Criteria
42
+
43
+ - **If no style brief exists:** Remove criteria 1-5 and 13-14. Focus on component quality and layout.
44
+ - **If no dark mode:** Remove criterion 14.
45
+ - **If reference images exist** (in visual grounding `references/`): Add criterion:
46
+ "Reference alignment — overall visual direction aligns with provided reference images"
47
+ - **If design mockups exist** (in visual grounding `designs/`): Add criterion:
48
+ "Design fidelity — component rendering matches the provided design mockups in layout, spacing, and proportions"
49
+ - **If brand assets exist** (in visual grounding `brand/`): Add criterion:
50
+ "Brand compliance — brand elements (logos, colors, typefaces) are correctly incorporated"
51
+ - **If specific components were discussed:** Add per-component criteria as needed.
52
+ - **If style brief specifies animations:** Add criterion: "Animation readiness — Elements that will be animated have correct initial states (e.g., opacity: 0 for fade-in elements), data attributes for animation targeting, and appropriate class names or identifiers. The animation approach's imports are present. Animations may not be fully wired to triggers in the static prototype."
53
+
54
+ The user may add, remove, or modify any criterion before validation begins.